drivers/acpi/processor_thermal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
From: Riwen Lu <luriwen@kylinos.cn>
The freq Qos request would be removed repeatedly if the cpufreq policy
relates to more than one CPU. Then, it would cause the "called for unknown
object" warning.
Remove the freq Qos request for each CPU relates to the cpufreq policy,
instead of removing repeatedly for the last CPU of it.
Fixes: a1bb46c36ce3 ("ACPI: processor: Add QoS requests for all CPUs")
Reported-by: Jeremy Linton <Jeremy.Linton@arm.com>
Signed-off-by: Riwen Lu <luriwen@kylinos.cn>
---
drivers/acpi/processor_thermal.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c
index db6ac540e924..e534fd49a67e 100644
--- a/drivers/acpi/processor_thermal.c
+++ b/drivers/acpi/processor_thermal.c
@@ -151,7 +151,7 @@ void acpi_thermal_cpufreq_exit(struct cpufreq_policy *policy)
unsigned int cpu;
for_each_cpu(cpu, policy->related_cpus) {
- struct acpi_processor *pr = per_cpu(processors, policy->cpu);
+ struct acpi_processor *pr = per_cpu(processors, cpu);
if (pr)
freq_qos_remove_request(&pr->thermal_req);
--
2.25.1
Hi,
On 8/23/22 02:43, Riwen Lu wrote:
> From: Riwen Lu <luriwen@kylinos.cn>
>
> The freq Qos request would be removed repeatedly if the cpufreq policy
> relates to more than one CPU. Then, it would cause the "called for unknown
> object" warning.
>
> Remove the freq Qos request for each CPU relates to the cpufreq policy,
> instead of removing repeatedly for the last CPU of it.
>
> Fixes: a1bb46c36ce3 ("ACPI: processor: Add QoS requests for all CPUs")
> Reported-by: Jeremy Linton <Jeremy.Linton@arm.com>
> Signed-off-by: Riwen Lu <luriwen@kylinos.cn>
> ---
> drivers/acpi/processor_thermal.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c
> index db6ac540e924..e534fd49a67e 100644
> --- a/drivers/acpi/processor_thermal.c
> +++ b/drivers/acpi/processor_thermal.c
> @@ -151,7 +151,7 @@ void acpi_thermal_cpufreq_exit(struct cpufreq_policy *policy)
> unsigned int cpu;
>
> for_each_cpu(cpu, policy->related_cpus) {
> - struct acpi_processor *pr = per_cpu(processors, policy->cpu);
> + struct acpi_processor *pr = per_cpu(processors, cpu);
>
> if (pr)
> freq_qos_remove_request(&pr->thermal_req);
This appears to have fixed the module unloading problem. I haven't seen
any newer issues either so:
Tested-by: Jeremy Linton <jeremy.linton@arm.com>
Thanks,
On Tue, Aug 23, 2022 at 9:44 AM Riwen Lu <luriwen@hotmail.com> wrote:
>
> From: Riwen Lu <luriwen@kylinos.cn>
>
> The freq Qos request would be removed repeatedly if the cpufreq policy
> relates to more than one CPU. Then, it would cause the "called for unknown
> object" warning.
>
> Remove the freq Qos request for each CPU relates to the cpufreq policy,
> instead of removing repeatedly for the last CPU of it.
>
> Fixes: a1bb46c36ce3 ("ACPI: processor: Add QoS requests for all CPUs")
> Reported-by: Jeremy Linton <Jeremy.Linton@arm.com>
> Signed-off-by: Riwen Lu <luriwen@kylinos.cn>
> ---
> drivers/acpi/processor_thermal.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/processor_thermal.c b/drivers/acpi/processor_thermal.c
> index db6ac540e924..e534fd49a67e 100644
> --- a/drivers/acpi/processor_thermal.c
> +++ b/drivers/acpi/processor_thermal.c
> @@ -151,7 +151,7 @@ void acpi_thermal_cpufreq_exit(struct cpufreq_policy *policy)
> unsigned int cpu;
>
> for_each_cpu(cpu, policy->related_cpus) {
> - struct acpi_processor *pr = per_cpu(processors, policy->cpu);
> + struct acpi_processor *pr = per_cpu(processors, cpu);
>
> if (pr)
> freq_qos_remove_request(&pr->thermal_req);
> --
Thanks for fixing my mistake!
I've applied this one instead of the revert of commit 7fdc74da940d, as
6.0-rc material.
© 2016 - 2026 Red Hat, Inc.