2023-04-28 07:35:20

by wangyouwan

[permalink] [raw]
Subject: [PATCH] cpufreq: create cooling device based on ACPI

From: youwan Wang <[email protected]>

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 <[email protected]>
---
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


2023-04-28 11:44:43

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] cpufreq: create cooling device based on ACPI

On Fri, Apr 28, 2023 at 9:19 AM <[email protected]> wrote:
>
> From: youwan Wang <[email protected]>
>
> 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 <[email protected]>
> ---
> 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");
>
> --

2023-04-28 11:46:12

by Dhruva Gole

[permalink] [raw]
Subject: Re: [PATCH] cpufreq: create cooling device based on ACPI

Hi,

On 28/04/23 12:33, [email protected] wrote:
> From: youwan Wang <[email protected]>
>
> 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 <[email protected]>
> ---
> drivers/cpufreq/cpufreq.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
[...]
>

--
Thanks and Regards,
Dhruva Gole

2023-05-08 07:32:16

by Xinglong Yang

[permalink] [raw]
Subject: 回复: [PATCH] cpufreq: create cooling device based on ACPI

Does this patch need to be packaged with other patches?
Whether the function cpufreq_cooling_register is declared in cpufreq.c?

-----?ʼ?ԭ??-----
??????: [email protected] <[email protected]>
????ʱ??: 2023??4??28?? 15:03
?ռ???: [email protected]; [email protected]
????: [email protected]; [email protected]; youwan Wang <[email protected]>
????: [PATCH] cpufreq: create cooling device based on ACPI

EXTERNAL EMAIL

From: youwan Wang <[email protected]>

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 <[email protected]>
---
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.

2023-05-10 09:15:13

by wangyouwan

[permalink] [raw]
Subject: Re:Re: [PATCH] cpufreq: create cooling device based on ACPI



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" <[email protected]> wrote:
>Hi,
>
>On 28/04/23 12:33, [email protected] wrote:
>> From: youwan Wang <[email protected]>
>>
>> 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 <[email protected]>
>> ---
>> drivers/cpufreq/cpufreq.c | 7 ++++++-
>> 1 file changed, 6 insertions(+), 1 deletion(-)
>[...]
>>
>
>--
>Thanks and Regards,
>Dhruva Gole

2023-05-10 09:21:33

by wangyouwan

[permalink] [raw]
Subject: Re:Re: [PATCH] cpufreq: create cooling device based on ACPI


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" <[email protected]> wrote:
>On Fri, Apr 28, 2023 at 9:19 AM <[email protected]> wrote:
>>
>> From: youwan Wang <[email protected]>
>>
>> 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 <[email protected]>
>> ---
>> 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");
>>
>> --