cpufreq: qcom-hw: Set CPU affinity of dcvsh interrupts
authorVladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Thu, 11 Nov 2021 15:48:08 +0000 (17:48 +0200)
committerViresh Kumar <viresh.kumar@linaro.org>
Thu, 25 Nov 2021 06:49:38 +0000 (12:19 +0530)
In runtime CPU cluster specific dcvsh interrupts may be handled on
unrelated CPU cores, it leads to an issue of too excessive number of
received and handled interrupts, but this is not observed, if CPU
affinity of the interrupt handler is set in accordance to CPU clusters.

The change reduces a number of received interrupts in about 10-100 times.

Signed-off-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
Reviewed-by: Matthias Kaehlcke <mka@chromium.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/qcom-cpufreq-hw.c

index 5b609e205435fda7f60b0c138812707ad141267e..5b0acf5448c36f06e54c66a36c3d21e5b8c23b12 100644 (file)
@@ -392,6 +392,11 @@ static int qcom_cpufreq_hw_lmh_init(struct cpufreq_policy *policy, int index)
                return 0;
        }
 
+       ret = irq_set_affinity_hint(data->throttle_irq, policy->cpus);
+       if (ret)
+               dev_err(&pdev->dev, "Failed to set CPU affinity of %s[%d]\n",
+                       data->irq_name, data->throttle_irq);
+
        return 0;
 }