Re: [PATCH v3 0/5] Subject: The power allocator thermal governor

From: Eduardo Valentin
Date: Mon Mar 02 2015 - 12:29:03 EST


On Mon, Mar 02, 2015 at 05:17:18PM +0000, Javi Merino wrote:
> *** BLURB HERE ***
>
> Hi linux-pm,
>
> Introduce the power allocator governor, a thermal governor that
> allocates device power to control temperature. This series is based
> on branch "linus" of Eduardo's linux-soc-thermal tree:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/evalenti/linux-soc-thermal.git
>
> Changes since v2:
> - Address Eduardo's review
> + Turn variable-size array in divvy_up_power() into a
> devm_kcalloc() as suggested by Eduardo
> + Remove #ifdeffery from thermal_core.c as suggested by Eduardo
> - Bring back cpufreq's CPUFREQ_UPDATE_POLICY_CPU notifier in order
> to update the cpu device in cpu_cooling.c when cpufreq changes
> the policy cpu.


Can you please elaborate a bit more on the issue you saw to decide to
bring this functionality back?

Can we keep the cpufreq changes as a separated thread? To me if the
issue happens to power allocator, it also happens to the other
governors. I don't want to block power allocator due to the cpufreq
chanes.

Besides, cpufreq changes should go via the proper cpufreq tree, not the
thermal tree.

>
> Changes since v1:
> - Removed a memory leak pointed out by Steve Rostedt
> - Relax the constraint of the trip points to be the first and last
> passive trip point as Lina Iyer suggested.
> - Update how the governor treats weights to mimic the behavior of
> fair share in v3 of the weight fixes series.
> - Don't cache the cpufreq_cooling_device and scan for it whenever
> we need it.
> - Consider the rate of changes in the derivative term of the PID
> controller
>
> Changes since RFC v6:
> - Addressed Eduardo's review
> + Pass the interval to the static power function as suggested by
> Eduardo
> + Make the cooling device ops return 0 or -E* and put the
> calculation in a parameter, like the rest of the cooling device
> ops
> + Documentation improvements
> - Use thermal_cdev_update() to change cooling device states
> - Add a patch to export the power allocator governor's tzp
> parameters to sysfs
>
> Changes since RFC v5:
> - Addressed Stephen's review of the trace patches.
> - Removed power actors and extended the cooling device interface
> instead.
> - Let platforms override the power allocator governor parameters in
> their thermal zone parameters
>
> Changes since RFC v4:
> - Add more tracing
> - Document some of the limitations of the power allocator governor
> - Export the power_actor API and move power_actor.h to include/linux
>
> Changes since RFC v3:
> - Use tz->passive to poll faster when the first trip point is hit.
> - Don't make a special directory for power_actors
> - Add a DT property for sustainable-power
> - Simplify the static power interface and pass the current thermal
> zone in every power_actor_ops to remove the controversial
> enum power_actor_types
> - Use locks with the actor_list list
> - Use cpufreq_get() to get the frequency of the cpu instead of
> using the notifiers.
> - Remove the prompt for THERMAL_POWER_ACTOR_CPU when configuring
> the kernel
>
> Changes since RFC v2:
> - Changed the PI controller into a PID controller
> - Added static power to the cpu power model
> - tz parameter max_dissipatable_power renamed to sustainable_power
> - Register the cpufreq cooling device as part of the
> power_cpu_actor registration.
>
> Changes since RFC v1:
> - Fixed finding cpufreq cooling devices in cpufreq_frequency_change()
> - Replaced the cooling device interface with a separate power actor
> API
> - Addressed most of Eduardo's comments
> - Incorporated ftrace support for bitmask to trace cpumasks
>
> Cheers,
> Javi & Punit
>
> Javi Merino (4):
> thermal: introduce the Power Allocator governor
> thermal: add trace events to the power allocator governor
> thermal: export thermal_zone_parameters to sysfs
> Revert "cpufreq: remove CPUFREQ_UPDATE_POLICY_CPU notifications"
>
> Kapileshwar Singh (1):
> thermal: cpu_cooling: update the cpu device when cpufreq updates the
> policy cpu
>
> Documentation/thermal/power_allocator.txt | 247 ++++++++++++
> Documentation/thermal/sysfs-api.txt | 52 +++
> drivers/cpufreq/cpufreq.c | 3 +
> drivers/thermal/Kconfig | 15 +
> drivers/thermal/Makefile | 1 +
> drivers/thermal/cpu_cooling.c | 34 +-
> drivers/thermal/power_allocator.c | 538 +++++++++++++++++++++++++
> drivers/thermal/thermal_core.c | 110 ++++-
> drivers/thermal/thermal_core.h | 8 +
> include/linux/cpufreq.h | 5 +-
> include/linux/thermal.h | 37 +-
> include/trace/events/thermal.h | 58 +++
> include/trace/events/thermal_power_allocator.h | 87 ++++
> 13 files changed, 1184 insertions(+), 11 deletions(-)
> create mode 100644 Documentation/thermal/power_allocator.txt
> create mode 100644 drivers/thermal/power_allocator.c
> create mode 100644 include/trace/events/thermal_power_allocator.h
>
> --
> 1.9.1
>

Attachment: signature.asc
Description: Digital signature