[PATCH v4 0/3] Improve IPA mechanisms in low temperature state

From: Lukasz Luba
Date: Thu Apr 22 2021 - 07:43:18 EST


Hi all,

This v4 patch set aims to address the issues present in IPA when the
temperature is below the first trip point and cooling devices are not
throttled.
The last patch 1/3 is co-developed by Daniel, who presented the code
during v2 review. I have created a helper function based on his idea,
which can now be used inside IPA governor lock protected code.
The patch 2/3 adds a basic check of cooling devices power to keep the
internal statistics fresh. This allows to avoid issue when the statistics
cover very long period, because they were not maintained.
The patch 3/3 addresses an issue described in bugzilla [1], which is:
unnecessary updating cooling devices when their state has not changed
because they are not throttled. This update triggers sending an event,
which should be avoided. Thus, patch 2/3 adds a tracking mechanism if
the update was triggered and makes sure it will be done only once when
the temperature continue to stay below first trip point.

changelog:
v4:
- reordered the patches, patch 3/3 from v3 is now 1/3
v3:
- new patch 3/3 co-developed with Daniel
v2:
- patch 2/2 uses now simple 'update' bool flag and information from
'tz->last_temperature'
- patch 1/2 has small change in the comment
- re-based on top of today's thermal/next branch

Regards,
Lukasz Luba

[1] https://bugzilla.kernel.org/show_bug.cgi?id=212501

Lukasz Luba (3):
thermal: create a helper __thermal_cdev_update() without a lock
thermal: power_allocator: maintain the device statistics from going
stale
thermal: power_allocator: update once cooling devices when temp is low

drivers/thermal/gov_power_allocator.c | 21 +++++++++++++++++----
drivers/thermal/thermal_core.h | 1 +
drivers/thermal/thermal_helpers.c | 27 +++++++++++++++++----------
3 files changed, 35 insertions(+), 14 deletions(-)

--
2.17.1