mbox series

[v3,0/9] Add callback for cooling list update to speed-up IPA

Message ID 20231220231753.1824364-1-lukasz.luba@arm.com
Headers show
Series Add callback for cooling list update to speed-up IPA | expand

Message

Lukasz Luba Dec. 20, 2023, 11:17 p.m. UTC
Hi all,

The patch set adds a new callback for thermal governors and implementation for
Intelligent Power Allocator.

The goal is to move some heavy operations like the memory allocations and heavy
computations (multiplications) out of throttle() callback hot path.

The new callback is generic enough to handle other important update events.
It re-uses existing thermal_notify_event definitions.

In addition there are some small clean-ups for IPA code.

The patch set is based on current pm/bleeding-edge branch (20 Dec).

changes:
v3:
- changed helper name to thermal_governor_update_tz() with also
  "reason" argument (Rafael)
- added thermal_governor_update_tz() to thermal_core.h for use from sysfs
  functions 
- changed names of the events (THERMAL_TZ_BIND_CDEV) (Rafael)
- patch 2/9 changed header and comment for function (Rafael)
- patch 3/9: used unsigned types for num_actors, buffer_size (Rafael)
- changed trace functions and added new patch 4/9 to be prepare tracing for
  different internal IPA array; it also drops dynamic array inside trace event
- used new structure power_actor and changed the code in patch 5/9 (Rafael)
- keept the local num_actors variable (Rafael)
- patch 6/9 skipped redundant parens and changed the header desc. (Rafael)
- patch 7/9 changed header and used instance->tz->lock (Rafael)
- patch 8/9 removed handle_weight_update() and renamed new event to
  THERMAL_INSTANCE_WEIGHT_CHANGE (Rafael)
- patch 9/9 aliged to use THERMAL_INSTANCE_WEIGHT_CHANGE is switch (Rafael)
  
v2 can be found here [1]

Regards,
Lukasz

[1] https://lore.kernel.org/lkml/20231212134844.1213381-1-lukasz.luba@arm.com/

Lukasz Luba (9):
  thermal: core: Add governor callback for thermal zone change
  thermal: gov_power_allocator: Refactor check_power_actors()
  thermal: gov_power_allocator: Refactor checks in divvy_up_power()
  thermal: gov_power_allocator: Change trace functions
  thermal: gov_power_allocator: Move memory allocation out of throttle()
  thermal: gov_power_allocator: Simplify checks for valid power actor
  thermal/sysfs: Update instance->weight under tz lock
  thermal/sysfs: Update governors when the 'weight' has changed
  thermal: gov_power_allocator: Support new update callback of weights

 drivers/thermal/gov_power_allocator.c | 269 ++++++++++++++++----------
 drivers/thermal/thermal_core.c        |  14 ++
 drivers/thermal/thermal_core.h        |   2 +
 drivers/thermal/thermal_sysfs.c       |   7 +
 drivers/thermal/thermal_trace_ipa.h   |  50 +++--
 include/linux/thermal.h               |   7 +
 6 files changed, 226 insertions(+), 123 deletions(-)

Comments

Rafael J. Wysocki Dec. 29, 2023, 5:15 p.m. UTC | #1
On Thu, Dec 21, 2023 at 12:16 AM Lukasz Luba <lukasz.luba@arm.com> wrote:
>
> Hi all,
>
> The patch set adds a new callback for thermal governors and implementation for
> Intelligent Power Allocator.
>
> The goal is to move some heavy operations like the memory allocations and heavy
> computations (multiplications) out of throttle() callback hot path.
>
> The new callback is generic enough to handle other important update events.
> It re-uses existing thermal_notify_event definitions.
>
> In addition there are some small clean-ups for IPA code.
>
> The patch set is based on current pm/bleeding-edge branch (20 Dec).
>
> changes:
> v3:
> - changed helper name to thermal_governor_update_tz() with also
>   "reason" argument (Rafael)
> - added thermal_governor_update_tz() to thermal_core.h for use from sysfs
>   functions
> - changed names of the events (THERMAL_TZ_BIND_CDEV) (Rafael)
> - patch 2/9 changed header and comment for function (Rafael)
> - patch 3/9: used unsigned types for num_actors, buffer_size (Rafael)
> - changed trace functions and added new patch 4/9 to be prepare tracing for
>   different internal IPA array; it also drops dynamic array inside trace event
> - used new structure power_actor and changed the code in patch 5/9 (Rafael)
> - keept the local num_actors variable (Rafael)
> - patch 6/9 skipped redundant parens and changed the header desc. (Rafael)
> - patch 7/9 changed header and used instance->tz->lock (Rafael)
> - patch 8/9 removed handle_weight_update() and renamed new event to
>   THERMAL_INSTANCE_WEIGHT_CHANGE (Rafael)
> - patch 9/9 aliged to use THERMAL_INSTANCE_WEIGHT_CHANGE is switch (Rafael)
>
> v2 can be found here [1]
>
> Regards,
> Lukasz
>
> [1] https://lore.kernel.org/lkml/20231212134844.1213381-1-lukasz.luba@arm.com/
>
> Lukasz Luba (9):
>   thermal: core: Add governor callback for thermal zone change
>   thermal: gov_power_allocator: Refactor check_power_actors()
>   thermal: gov_power_allocator: Refactor checks in divvy_up_power()
>   thermal: gov_power_allocator: Change trace functions
>   thermal: gov_power_allocator: Move memory allocation out of throttle()
>   thermal: gov_power_allocator: Simplify checks for valid power actor
>   thermal/sysfs: Update instance->weight under tz lock
>   thermal/sysfs: Update governors when the 'weight' has changed
>   thermal: gov_power_allocator: Support new update callback of weights
>
>  drivers/thermal/gov_power_allocator.c | 269 ++++++++++++++++----------
>  drivers/thermal/thermal_core.c        |  14 ++
>  drivers/thermal/thermal_core.h        |   2 +
>  drivers/thermal/thermal_sysfs.c       |   7 +
>  drivers/thermal/thermal_trace_ipa.h   |  50 +++--
>  include/linux/thermal.h               |   7 +
>  6 files changed, 226 insertions(+), 123 deletions(-)
>
> --

All patches in the series applied as 6.8 material, with minor white
space adjustment in patch [8/9].

Thanks!