[PATCH v1] ACPI: processor: Remove freq Qos request for all CPUs

Riwen Lu posted 1 patch 3 years, 7 months ago
drivers/acpi/processor_thermal.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH v1] ACPI: processor: Remove freq Qos request for all CPUs
Posted by Riwen Lu 3 years, 7 months ago
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
Re: [PATCH v1] ACPI: processor: Remove freq Qos request for all CPUs
Posted by Jeremy Linton 3 years, 7 months ago
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,
Re: [PATCH v1] ACPI: processor: Remove freq Qos request for all CPUs
Posted by Rafael J. Wysocki 3 years, 7 months ago
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.