Thread (17 messages) 17 messages, 4 authors, 2014-06-02

[PATCH v1 6/6] ACPI: thermal: processor: Use the generic cpufreq infrastructure

From: Javi Merino <hidden>
Date: 2014-06-02 10:20:54
Also in: linux-acpi, linux-pm, lkml

On Mon, Jun 02, 2014 at 10:21:48AM +0100, Amit Kachhap wrote:
Hi Javi,

On 5/29/14, Javi Merino [off-list ref] wrote:
quoted
Hi Amit,

On Thu, May 29, 2014 at 09:15:34AM +0100, Amit Daniel Kachhap wrote:
quoted
This patch upgrades the ACPI cpufreq cooling portions to use the generic
cpufreq cooling infrastructure. There should not be any functionality
related changes as the same behaviour is provided by the generic
cpufreq APIs with the notifier mechanism.

Signed-off-by: Amit Daniel Kachhap <redacted>
---
 drivers/acpi/processor_driver.c  |    6 +-
 drivers/acpi/processor_thermal.c |  235
++++++++++++++++++--------------------
 include/acpi/processor.h         |    3 +-
 3 files changed, 115 insertions(+), 129 deletions(-)
diff --git a/drivers/acpi/processor_driver.c
b/drivers/acpi/processor_driver.c
index 7f70f31..10aba4a 100644
--- a/drivers/acpi/processor_driver.c
+++ b/drivers/acpi/processor_driver.c
@@ -36,6 +36,7 @@
 #include <linux/cpuidle.h>
 #include <linux/slab.h>
 #include <linux/acpi.h>
+#include <linux/cpu_cooling.h>

 #include <acpi/processor.h>
@@ -178,8 +179,7 @@ static int __acpi_processor_start(struct acpi_device
*device)
        if (!cpuidle_get_driver() || cpuidle_get_driver() ==
&acpi_idle_driver)
                acpi_processor_power_init(pr);

-       pr->cdev = thermal_cooling_device_register("Processor", device,
-
&processor_cooling_ops);
+       pr->cdev = acpi_processor_cooling_register(device);
With this you have removed the only cooling device whose type was
"Processor".  There's special code for dealing with this cooling
device in drivers/thermal/thermal_core.c:passive_store():

		list_for_each_entry(cdev, &thermal_cdev_list, node) {
			if (!strncmp("Processor", cdev->type,
				     sizeof("Processor")))
				thermal_zone_bind_cooling_device(tz,
						THERMAL_TRIPS_NONE, cdev,
						THERMAL_NO_LIMIT,
						THERMAL_NO_LIMIT);
		}
		mutex_unlock(&thermal_list_lock);
		if (!tz->passive_delay)

With your change, that code is now "dead" as it can't do anything.  No
I don't know what should you do with it, either remove it or make it
match the cpufreq cooling device.  But this patch should deal with
that code as well.
nice catch. I somehow missed modifying this section.
I think the following changes should fix this,
-                       if (!strncmp("Processor", cdev->type,
-                                    sizeof("Processor")))
+                       if (!strncmp("thermal-cpufreq", cdev->type,
+                                    sizeof("thermal-cpufreq")))
                                thermal_zone_bind_cooling_device(tz,
That should do it.  I don't really understand why this code is
specifically looking for ACPI processor cooling devices but I guess
that's the least disrupting change you can make.

Cheers,
Javi
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help