diff options
author | Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> | 2023-05-04 12:43:21 +0200 |
---|---|---|
committer | Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> | 2023-05-04 12:43:21 +0200 |
commit | 6ba2adb72539254becfcbe680872c7a8c69b9165 (patch) | |
tree | beb2e833ceec097f1d82185c82ff4873a1fa6a5c | |
parent | fc927c36cb0aa5bd9ada0627a4c44f1152b40d78 (diff) | |
parent | d75b809d8b996499654e2eba99c98c6e3441e99a (diff) |
Merge branch 'z-linaro/tracking-qcomlt-rt-drivers' into z-linaro/tracking-qcomlt-rt
-rw-r--r-- | drivers/cpufreq/qcom-cpufreq-hw.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/cpufreq/qcom-cpufreq-hw.c b/drivers/cpufreq/qcom-cpufreq-hw.c index b2d2907200a9..f76c171124d2 100644 --- a/drivers/cpufreq/qcom-cpufreq-hw.c +++ b/drivers/cpufreq/qcom-cpufreq-hw.c @@ -389,7 +389,16 @@ static irqreturn_t qcom_lmh_dcvs_handle_irq(int irq, void *data) /* Disable interrupt and enable polling */ disable_irq_nosync(c_data->throttle_irq); - schedule_delayed_work(&c_data->throttle_work, 0); + + /* + * Workqueue prefers local CPUs and since interrupts have set affinity, + * the work might execute on a CPU dedicated to realtime tasks. + */ + if (IS_ENABLED(CONFIG_PREEMPT_RT)) + queue_delayed_work_on(WORK_CPU_UNBOUND, system_unbound_wq, + &c_data->throttle_work, 0); + else + schedule_delayed_work(&c_data->throttle_work, 0); if (qcom_cpufreq.soc_data->reg_intr_clr) writel_relaxed(GT_IRQ_STATUS, |