]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
cpufreq: tegra186: Set target frequency for all cpus in policy
authorAaron Kling <webgeek1234@gmail.com>
Fri, 29 Aug 2025 02:48:12 +0000 (21:48 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 19 Oct 2025 14:23:07 +0000 (16:23 +0200)
[ Upstream commit 0b1bb980fd7cae126ee3d59f817068a13e321b07 ]

The original commit set all cores in a cluster to a shared policy, but
did not update set_target to apply a frequency change to all cores for
the policy. This caused most cores to remain stuck at their boot
frequency.

Fixes: be4ae8c19492 ("cpufreq: tegra186: Share policy per cluster")
Signed-off-by: Aaron Kling <webgeek1234@gmail.com>
Reviewed-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/cpufreq/tegra186-cpufreq.c

index 6c88827f4e6254568eee2b37cc006973d7986f1e..ee57676bbee141d09ff1eadbb1c74eed594e8dc7 100644 (file)
@@ -86,10 +86,14 @@ static int tegra186_cpufreq_set_target(struct cpufreq_policy *policy,
 {
        struct tegra186_cpufreq_data *data = cpufreq_get_driver_data();
        struct cpufreq_frequency_table *tbl = policy->freq_table + index;
-       unsigned int edvd_offset = data->cpus[policy->cpu].edvd_offset;
+       unsigned int edvd_offset;
        u32 edvd_val = tbl->driver_data;
+       u32 cpu;
 
-       writel(edvd_val, data->regs + edvd_offset);
+       for_each_cpu(cpu, policy->cpus) {
+               edvd_offset = data->cpus[cpu].edvd_offset;
+               writel(edvd_val, data->regs + edvd_offset);
+       }
 
        return 0;
 }