[PATCH] cpufreq: create cooling device based on ACPI

wangyouwan@126.com posted 1 patch 2 years, 9 months ago
drivers/cpufreq/cpufreq.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
[PATCH] cpufreq: create cooling device based on ACPI
Posted by wangyouwan@126.com 2 years, 9 months ago
From: youwan Wang <wangyouwan@126.com>

When using the "scpi_cpufreq" driver, an error
occurs:cpufreq_cooling: OF node not available for cpu*.
The current computer motherboard is using ACPI firmware.
Go to see that the error is caused by calling the
"of_cpufreq_cooling_register" interface.
comment:create cpufreq cooling device based on DT.

Signed-off-by: youwan Wang <wangyouwan@126.com>
---
 drivers/cpufreq/cpufreq.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 6b52ebe5a890..3418c68959d5 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1528,8 +1528,13 @@ static int cpufreq_online(unsigned int cpu)
 	if (cpufreq_driver->ready)
 		cpufreq_driver->ready(policy);
 
-	if (cpufreq_thermal_control_enabled(cpufreq_driver))
+	if (cpufreq_thermal_control_enabled(cpufreq_driver)) {
+#ifdef CONFIG_ACPI
+		policy->cdev = cpufreq_cooling_register(policy);
+#else
 		policy->cdev = of_cpufreq_cooling_register(policy);
+#endif
+	}
 
 	pr_debug("initialization complete\n");
 
-- 
2.25.1
Re: [PATCH] cpufreq: create cooling device based on ACPI
Posted by Dhruva Gole 2 years, 9 months ago
Hi,

On 28/04/23 12:33, wangyouwan@126.com wrote:
> From: youwan Wang <wangyouwan@126.com>
> 
> When using the "scpi_cpufreq" driver, an error

Pardon, do you mean drivers/cpufreq/acpi-cpufreq.c ?

> occurs:cpufreq_cooling: OF node not available for cpu*.


If this is fixing some errors/ bugs, maybe add an appropriate fixes
tag?

> The current computer motherboard is using ACPI firmware.
> Go to see that the error is caused by calling the
> "of_cpufreq_cooling_register" interface.
> comment:create cpufreq cooling device based on DT.
> 
> Signed-off-by: youwan Wang <wangyouwan@126.com>
> ---
>   drivers/cpufreq/cpufreq.c | 7 ++++++-
>   1 file changed, 6 insertions(+), 1 deletion(-)
[...]
>   

-- 
Thanks and Regards,
Dhruva Gole
Re:Re: [PATCH] cpufreq: create cooling device based on ACPI
Posted by wangyouwan 2 years, 9 months ago

I'm sorry, but I'm using the 5.4 kernel, and the "scpi-cpufreq" function is used in the scpi_clocks_probe_acpi function.



At 2023-04-28 17:56:07, "Dhruva Gole" <d-gole@ti.com> wrote:
>Hi,
>
>On 28/04/23 12:33, wangyouwan@126.com wrote:
>> From: youwan Wang <wangyouwan@126.com>
>> 
>> When using the "scpi_cpufreq" driver, an error
>
>Pardon, do you mean drivers/cpufreq/acpi-cpufreq.c ?
>
>> occurs:cpufreq_cooling: OF node not available for cpu*.
>
>
>If this is fixing some errors/ bugs, maybe add an appropriate fixes
>tag?
>
>> The current computer motherboard is using ACPI firmware.
>> Go to see that the error is caused by calling the
>> "of_cpufreq_cooling_register" interface.
>> comment:create cpufreq cooling device based on DT.
>> 
>> Signed-off-by: youwan Wang <wangyouwan@126.com>
>> ---
>>   drivers/cpufreq/cpufreq.c | 7 ++++++-
>>   1 file changed, 6 insertions(+), 1 deletion(-)
>[...]
>>   
>
>-- 
>Thanks and Regards,
>Dhruva Gole
Re: [PATCH] cpufreq: create cooling device based on ACPI
Posted by Rafael J. Wysocki 2 years, 9 months ago
On Fri, Apr 28, 2023 at 9:19 AM <wangyouwan@126.com> wrote:
>
> From: youwan Wang <wangyouwan@126.com>
>
> When using the "scpi_cpufreq" driver, an error
> occurs:cpufreq_cooling: OF node not available for cpu*.
> The current computer motherboard is using ACPI firmware.
> Go to see that the error is caused by calling the
> "of_cpufreq_cooling_register" interface.
> comment:create cpufreq cooling device based on DT.
>
> Signed-off-by: youwan Wang <wangyouwan@126.com>
> ---
>  drivers/cpufreq/cpufreq.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> index 6b52ebe5a890..3418c68959d5 100644
> --- a/drivers/cpufreq/cpufreq.c
> +++ b/drivers/cpufreq/cpufreq.c
> @@ -1528,8 +1528,13 @@ static int cpufreq_online(unsigned int cpu)
>         if (cpufreq_driver->ready)
>                 cpufreq_driver->ready(policy);
>
> -       if (cpufreq_thermal_control_enabled(cpufreq_driver))
> +       if (cpufreq_thermal_control_enabled(cpufreq_driver)) {
> +#ifdef CONFIG_ACPI
> +               policy->cdev = cpufreq_cooling_register(policy);
> +#else
>                 policy->cdev = of_cpufreq_cooling_register(policy);
> +#endif

Please avoid adding #ifdefs like this in random places.

Moreover, what if the kernel supports ACPI and the platform is DT-based?

> +       }
>
>         pr_debug("initialization complete\n");
>
> --
Re:Re: [PATCH] cpufreq: create cooling device based on ACPI
Posted by wangyouwan 2 years, 9 months ago
Okay, thank you for the reminder! 
If I make this change, I'm not sure if it will work. If it does, I'll submit a new patch.

--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1494,8 +1494,13 @@ static int cpufreq_online(unsigned int cpu)
        if (cpufreq_driver->ready)
                cpufreq_driver->ready(policy);
 
-       if (cpufreq_thermal_control_enabled(cpufreq_driver))
-               policy->cdev = of_cpufreq_cooling_register(policy);
+       if (cpufreq_thermal_control_enabled(cpufreq_driver)) {
+               struct device_node *np = of_get_cpu_node(policy->cpu, NULL);
+               if (np)
+                       policy->cdev = of_cpufreq_cooling_register(policy);
+               else
+                       policy->cdev = cpufreq_cooling_register(policy);

+       }













At 2023-04-28 19:37:26, "Rafael J. Wysocki" <rafael@kernel.org> wrote:
>On Fri, Apr 28, 2023 at 9:19 AM <wangyouwan@126.com> wrote:
>>
>> From: youwan Wang <wangyouwan@126.com>
>>
>> When using the "scpi_cpufreq" driver, an error
>> occurs:cpufreq_cooling: OF node not available for cpu*.
>> The current computer motherboard is using ACPI firmware.
>> Go to see that the error is caused by calling the
>> "of_cpufreq_cooling_register" interface.
>> comment:create cpufreq cooling device based on DT.
>>
>> Signed-off-by: youwan Wang <wangyouwan@126.com>
>> ---
>>  drivers/cpufreq/cpufreq.c | 7 ++++++-
>>  1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
>> index 6b52ebe5a890..3418c68959d5 100644
>> --- a/drivers/cpufreq/cpufreq.c
>> +++ b/drivers/cpufreq/cpufreq.c
>> @@ -1528,8 +1528,13 @@ static int cpufreq_online(unsigned int cpu)
>>         if (cpufreq_driver->ready)
>>                 cpufreq_driver->ready(policy);
>>
>> -       if (cpufreq_thermal_control_enabled(cpufreq_driver))
>> +       if (cpufreq_thermal_control_enabled(cpufreq_driver)) {
>> +#ifdef CONFIG_ACPI
>> +               policy->cdev = cpufreq_cooling_register(policy);
>> +#else
>>                 policy->cdev = of_cpufreq_cooling_register(policy);
>> +#endif
>
>Please avoid adding #ifdefs like this in random places.
>
>Moreover, what if the kernel supports ACPI and the platform is DT-based?
>
>> +       }
>>
>>         pr_debug("initialization complete\n");
>>
>> --
回复: [PATCH] cpufreq: create cooling device based on ACPI
Posted by Xinglong Yang 2 years, 9 months ago
Does this patch need to be packaged with other patches?
Whether the function cpufreq_cooling_register is declared in cpufreq.c?

-----邮件原件-----
发件人: wangyouwan@126.com <wangyouwan@126.com>
发送时间: 2023年4月28日 15:03
收件人: rafael@kernel.org; viresh.kumar@linaro.org
抄送: linux-pm@vger.kernel.org; linux-kernel@vger.kernel.org; youwan Wang <wangyouwan@126.com>
主题: [PATCH] cpufreq: create cooling device based on ACPI

EXTERNAL EMAIL

From: youwan Wang <wangyouwan@126.com>

When using the "scpi_cpufreq" driver, an error
occurs:cpufreq_cooling: OF node not available for cpu*.
The current computer motherboard is using ACPI firmware.
Go to see that the error is caused by calling the "of_cpufreq_cooling_register" interface.
comment:create cpufreq cooling device based on DT.

Signed-off-by: youwan Wang <wangyouwan@126.com>
---
 drivers/cpufreq/cpufreq.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 6b52ebe5a890..3418c68959d5 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1528,8 +1528,13 @@ static int cpufreq_online(unsigned int cpu)
        if (cpufreq_driver->ready)
                cpufreq_driver->ready(policy);

-       if (cpufreq_thermal_control_enabled(cpufreq_driver))
+       if (cpufreq_thermal_control_enabled(cpufreq_driver)) { #ifdef
+CONFIG_ACPI
+               policy->cdev = cpufreq_cooling_register(policy); #else
                policy->cdev = of_cpufreq_cooling_register(policy);
+#endif
+       }

        pr_debug("initialization complete\n");

--
2.25.1



This email (including its attachments) is intended only for the person or entity to which it is addressed and may contain information that is privileged, confidential or otherwise protected from disclosure. Unauthorized use, dissemination, distribution or copying of this email or the information herein or taking any action in reliance on the contents of this email or the information herein, by anyone other than the intended recipient, or an employee or agent responsible for delivering the message to the intended recipient, is strictly prohibited. If you are not the intended recipient, please do not read, copy, use or disclose any part of this e-mail to others. Please notify the sender immediately and permanently delete this e-mail and any attachments if you received it in error. Internet communications cannot be guaranteed to be timely, secure, error-free or virus-free. The sender does not accept liability for any errors or omissions.