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

Javi Merino javi.merino at arm.com
Mon Jun 2 03:20:48 PDT 2014


On Mon, Jun 02, 2014 at 10:21:48AM +0100, Amit Kachhap wrote:
> Hi Javi,
> 
> On 5/29/14, Javi Merino <javi.merino at arm.com> wrote:
> > Hi Amit,
> >
> > On Thu, May 29, 2014 at 09:15:34AM +0100, Amit Daniel Kachhap wrote:
> >> 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 <amit.daniel at samsung.com>
> >> ---
> >>  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




More information about the linux-arm-kernel mailing list