Message ID | 1597174997-22505-1-git-send-email-sumitg@nvidia.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 93d0c1ab23281fda96490f23cd6f2a1966fdc030 |
Headers | show |
Series | cpufreq: replace cpu_logical_map with read_cpuid_mpir | expand |
On 12-08-20, 01:13, Sumit Gupta wrote: > Commit eaecca9e7710 ("arm64: Fix __cpu_logical_map undefined issue") > fixes the issue with building tegra194 cpufreq driver as module. But > the fix might cause problem while supporting physical cpu hotplug[1]. > > This patch fixes the original problem by avoiding use of cpu_logical_map(). > Instead calling read_cpuid_mpidr() to get MPIDR on target cpu. > > [1] https://lore.kernel.org/linux-arm-kernel/20200724131059.GB6521@bogus/ > > Reviewed-by: Sudeep Holla <sudeep.holla@arm.com> > Signed-off-by: Sumit Gupta <sumitg@nvidia.com> > --- > drivers/cpufreq/tegra194-cpufreq.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) Applied. Thanks.
On Thu, Aug 20, 2020 at 11:09:45AM +0530, Viresh Kumar wrote: > On 12-08-20, 01:13, Sumit Gupta wrote: > > Commit eaecca9e7710 ("arm64: Fix __cpu_logical_map undefined issue") > > fixes the issue with building tegra194 cpufreq driver as module. But > > the fix might cause problem while supporting physical cpu hotplug[1]. > > > > This patch fixes the original problem by avoiding use of cpu_logical_map(). > > Instead calling read_cpuid_mpidr() to get MPIDR on target cpu. > > > > [1] https://lore.kernel.org/linux-arm-kernel/20200724131059.GB6521@bogus/ > > > > Reviewed-by: Sudeep Holla <sudeep.holla@arm.com> > > Signed-off-by: Sumit Gupta <sumitg@nvidia.com> > > --- > > drivers/cpufreq/tegra194-cpufreq.c | 10 +++++++--- > > 1 file changed, 7 insertions(+), 3 deletions(-) > > Applied. Thanks. Just to confirm, is this going as a fix ? We want to drop exporting cpu_logical_map in v5.9 so this needs to go as fix. I missed it earlier, actually, Fixes: df320f89359c ("cpufreq: Add Tegra194 cpufreq driver") is appropriate here so that we can drop export symbol which was part of Commit eaecca9e7710 ("arm64: Fix __cpu_logical_map undefined issue") as a workaround to fix the build.
On 20-08-20, 13:37, Sudeep Holla wrote: > On Thu, Aug 20, 2020 at 11:09:45AM +0530, Viresh Kumar wrote: > > On 12-08-20, 01:13, Sumit Gupta wrote: > > > Commit eaecca9e7710 ("arm64: Fix __cpu_logical_map undefined issue") > > > fixes the issue with building tegra194 cpufreq driver as module. But > > > the fix might cause problem while supporting physical cpu hotplug[1]. > > > > > > This patch fixes the original problem by avoiding use of cpu_logical_map(). > > > Instead calling read_cpuid_mpidr() to get MPIDR on target cpu. > > > > > > [1] https://lore.kernel.org/linux-arm-kernel/20200724131059.GB6521@bogus/ > > > > > > Reviewed-by: Sudeep Holla <sudeep.holla@arm.com> > > > Signed-off-by: Sumit Gupta <sumitg@nvidia.com> > > > --- > > > drivers/cpufreq/tegra194-cpufreq.c | 10 +++++++--- > > > 1 file changed, 7 insertions(+), 3 deletions(-) > > > > Applied. Thanks. > > Just to confirm, is this going as a fix ? We want to drop exporting > cpu_logical_map in v5.9 so this needs to go as fix. I missed it earlier, > actually, > > Fixes: df320f89359c ("cpufreq: Add Tegra194 cpufreq driver") > is appropriate here so that we can drop export symbol which was part of > Commit eaecca9e7710 ("arm64: Fix __cpu_logical_map undefined issue") > as a workaround to fix the build. Okay. Rafael: Please pick this patch directly for next rc with Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
On Fri, Aug 21, 2020 at 7:22 AM Viresh Kumar <viresh.kumar@linaro.org> wrote: > > On 20-08-20, 13:37, Sudeep Holla wrote: > > On Thu, Aug 20, 2020 at 11:09:45AM +0530, Viresh Kumar wrote: > > > On 12-08-20, 01:13, Sumit Gupta wrote: > > > > Commit eaecca9e7710 ("arm64: Fix __cpu_logical_map undefined issue") > > > > fixes the issue with building tegra194 cpufreq driver as module. But > > > > the fix might cause problem while supporting physical cpu hotplug[1]. > > > > > > > > This patch fixes the original problem by avoiding use of cpu_logical_map(). > > > > Instead calling read_cpuid_mpidr() to get MPIDR on target cpu. > > > > > > > > [1] https://lore.kernel.org/linux-arm-kernel/20200724131059.GB6521@bogus/ > > > > > > > > Reviewed-by: Sudeep Holla <sudeep.holla@arm.com> > > > > Signed-off-by: Sumit Gupta <sumitg@nvidia.com> > > > > --- > > > > drivers/cpufreq/tegra194-cpufreq.c | 10 +++++++--- > > > > 1 file changed, 7 insertions(+), 3 deletions(-) > > > > > > Applied. Thanks. > > > > Just to confirm, is this going as a fix ? We want to drop exporting > > cpu_logical_map in v5.9 so this needs to go as fix. I missed it earlier, > > actually, > > > > Fixes: df320f89359c ("cpufreq: Add Tegra194 cpufreq driver") > > is appropriate here so that we can drop export symbol which was part of > > Commit eaecca9e7710 ("arm64: Fix __cpu_logical_map undefined issue") > > as a workaround to fix the build. > > Okay. > > Rafael: Please pick this patch directly for next rc with > > Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Applied as 5.9-rc3 material with a couple of minor edits in the subject and changelog, thanks!
diff --git a/drivers/cpufreq/tegra194-cpufreq.c b/drivers/cpufreq/tegra194-cpufreq.c index bae527e..e1d931c 100644 --- a/drivers/cpufreq/tegra194-cpufreq.c +++ b/drivers/cpufreq/tegra194-cpufreq.c @@ -56,9 +56,11 @@ struct read_counters_work { static struct workqueue_struct *read_counters_wq; -static enum cluster get_cpu_cluster(u8 cpu) +static void get_cpu_cluster(void *cluster) { - return MPIDR_AFFINITY_LEVEL(cpu_logical_map(cpu), 1); + u64 mpidr = read_cpuid_mpidr() & MPIDR_HWID_BITMASK; + + *((uint32_t *)cluster) = MPIDR_AFFINITY_LEVEL(mpidr, 1); } /* @@ -186,8 +188,10 @@ static unsigned int tegra194_get_speed(u32 cpu) static int tegra194_cpufreq_init(struct cpufreq_policy *policy) { struct tegra194_cpufreq_data *data = cpufreq_get_driver_data(); - int cl = get_cpu_cluster(policy->cpu); u32 cpu; + u32 cl; + + smp_call_function_single(policy->cpu, get_cpu_cluster, &cl, true); if (cl >= data->num_clusters) return -EINVAL;