Subject: [PATCH v2 0/3] gov_power_allocator: Allow binding before cooling devices

Recent changes in IPA made it fail probing if the TZ has no cooling
devices attached on probe or no trip points defined.

This series restores prior behavior to:

- allow IPA to probe before cooling devices have attached;
- allow IPA to probe when the TZ has no passive/active trip points.

I've noticed that all thermal zones fail probing with -EINVAL on my
sc7180 based Acer Aspire 1 since 6.8. This series allows me to bring
them back.

Additionally there is a commit that supresses the "sustainable_power
will be estimated" warning on TZ that have no trip points (and thus IPA
will not be able to do anything for them anyway). This allowed me to
notice that some of the TZ with cooling_devices on my platform actually
lack the sustainable_power value.

Signed-off-by: Nikita Travkin <[email protected]>
---
Changes in v2:
- Split to two changes (Lukasz)
- Return 0 in allocate_actors_buffer() instead of suppressing -EINVAL
(Lukasz)
- Add a change to supress "sustainable_power will be estimated" warning
on "empty" TZ
- Link to v1: https://lore.kernel.org/r/[email protected]

---
Nikita Travkin (3):
thermal: gov_power_allocator: Allow binding without cooling devices
thermal: gov_power_allocator: Allow binding without trip points
thermal: gov_power_allocator: Suppress sustainable_power warning without trip_points

drivers/thermal/gov_power_allocator.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
---
base-commit: 727900b675b749c40ba1f6669c7ae5eb7eb8e837
change-id: 20240321-gpa-no-cooling-devs-c79ee3288325

Best regards,
--
Nikita Travkin <[email protected]>




Subject: [PATCH v2 2/3] thermal: gov_power_allocator: Allow binding without trip points

From: Nikita Travkin <[email protected]>

IPA probe function was recently refactored to perform extra error checks
and make sure the thermal zone has trip points necessary for the IPA
operation. With this change, if a thermal zone is probed such that it
has no trip points that IPA can use, IPA will fail and the TZ won't be
created. This is the case if a platform defines a TZ without cooling
devices and only with "hot"/"critical" trip points, often found on some
Qualcomm devices [1].

Documentation across IPA code (notably get_governor_trips() kerneldoc)
suggests that IPA is supposed to handle such TZ even if it won't
actually do anything.

This commit partially reverts the previous change to allow IPA to bind
to such "empty" thermal zones.

[1] arch/arm64/boot/dts/qcom/sc7180.dtsi#n4776

Fixes: e83747c2f8e3 ("thermal: gov_power_allocator: Set up trip points earlier")
Signed-off-by: Nikita Travkin <[email protected]>
---
drivers/thermal/gov_power_allocator.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c
index ec637071ef1f..e25e48d76aa7 100644
--- a/drivers/thermal/gov_power_allocator.c
+++ b/drivers/thermal/gov_power_allocator.c
@@ -679,11 +679,6 @@ static int power_allocator_bind(struct thermal_zone_device *tz)
return -ENOMEM;

get_governor_trips(tz, params);
- if (!params->trip_max) {
- dev_warn(&tz->device, "power_allocator: missing trip_max\n");
- kfree(params);
- return -EINVAL;
- }

ret = check_power_actors(tz, params);
if (ret < 0) {
@@ -714,9 +709,10 @@ static int power_allocator_bind(struct thermal_zone_device *tz)
else
params->sustainable_power = tz->tzp->sustainable_power;

- estimate_pid_constants(tz, tz->tzp->sustainable_power,
- params->trip_switch_on,
- params->trip_max->temperature);
+ if (params->trip_max)
+ estimate_pid_constants(tz, tz->tzp->sustainable_power,
+ params->trip_switch_on,
+ params->trip_max->temperature);

reset_pid_controller(params);


--
2.44.0



2024-04-03 12:48:53

by Lukasz Luba

[permalink] [raw]
Subject: Re: [PATCH v2 2/3] thermal: gov_power_allocator: Allow binding without trip points



On 4/3/24 12:31, Nikita Travkin via B4 Relay wrote:
> From: Nikita Travkin <[email protected]>
>
> IPA probe function was recently refactored to perform extra error checks
> and make sure the thermal zone has trip points necessary for the IPA
> operation. With this change, if a thermal zone is probed such that it
> has no trip points that IPA can use, IPA will fail and the TZ won't be
> created. This is the case if a platform defines a TZ without cooling
> devices and only with "hot"/"critical" trip points, often found on some
> Qualcomm devices [1].
>
> Documentation across IPA code (notably get_governor_trips() kerneldoc)
> suggests that IPA is supposed to handle such TZ even if it won't
> actually do anything.
>
> This commit partially reverts the previous change to allow IPA to bind
> to such "empty" thermal zones.
>
> [1] arch/arm64/boot/dts/qcom/sc7180.dtsi#n4776
>
> Fixes: e83747c2f8e3 ("thermal: gov_power_allocator: Set up trip points earlier")
> Signed-off-by: Nikita Travkin <[email protected]>
> ---
> drivers/thermal/gov_power_allocator.c | 12 ++++--------
> 1 file changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/thermal/gov_power_allocator.c b/drivers/thermal/gov_power_allocator.c
> index ec637071ef1f..e25e48d76aa7 100644
> --- a/drivers/thermal/gov_power_allocator.c
> +++ b/drivers/thermal/gov_power_allocator.c
> @@ -679,11 +679,6 @@ static int power_allocator_bind(struct thermal_zone_device *tz)
> return -ENOMEM;
>
> get_governor_trips(tz, params);
> - if (!params->trip_max) {
> - dev_warn(&tz->device, "power_allocator: missing trip_max\n");
> - kfree(params);
> - return -EINVAL;
> - }
>
> ret = check_power_actors(tz, params);
> if (ret < 0) {
> @@ -714,9 +709,10 @@ static int power_allocator_bind(struct thermal_zone_device *tz)
> else
> params->sustainable_power = tz->tzp->sustainable_power;
>
> - estimate_pid_constants(tz, tz->tzp->sustainable_power,
> - params->trip_switch_on,
> - params->trip_max->temperature);
> + if (params->trip_max)
> + estimate_pid_constants(tz, tz->tzp->sustainable_power,
> + params->trip_switch_on,
> + params->trip_max->temperature);
>
> reset_pid_controller(params);
>
>

LGTM

Reviewed-by: Lukasz Luba <[email protected]>

2024-04-09 14:44:32

by Leonard Lausen

[permalink] [raw]
Subject: Re: [PATCH v2 0/3] gov_power_allocator: Allow binding before cooling devices

Hi Nikita, Hi Łukasz,

thank you for fixing the e83747c2f8e3 ("thermal: gov_power_allocator: Set up trip points earlier") and 912e97c67cc3 ("thermal: gov_power_allocator: Move memory allocation out of throttle()") regressions as part of v6.9-rc3. As the regression was introduced in v6.8, would it be possible to include the fix in a v6.8 patch release?

Thank you
Leonard

(Resending with [email protected] in CC)

#regzbot introduced: 912e97c67cc3f333c4c5df8f51498c651792e658
#regzbot fixed-by: 1057c4c36ef8b236a2e28edef301da0801338c5f


#regzbot introduced: e83747c2f8e3cc5e284e37a8921099f1901d79d8
#regzbot fixed-by: da781936e7c301e6197eb6513775748e79fb2575

On 4/3/24 07:31, Nikita Travkin via B4 Relay wrote:
> Recent changes in IPA made it fail probing if the TZ has no cooling
> devices attached on probe or no trip points defined.
>
> This series restores prior behavior to:
>
> - allow IPA to probe before cooling devices have attached;
> - allow IPA to probe when the TZ has no passive/active trip points.
>
> I've noticed that all thermal zones fail probing with -EINVAL on my
> sc7180 based Acer Aspire 1 since 6.8. This series allows me to bring
> them back.
>
> Additionally there is a commit that supresses the "sustainable_power
> will be estimated" warning on TZ that have no trip points (and thus IPA
> will not be able to do anything for them anyway). This allowed me to
> notice that some of the TZ with cooling_devices on my platform actually
> lack the sustainable_power value.
>
> Signed-off-by: Nikita Travkin <[email protected]>
> ---
> Changes in v2:
> - Split to two changes (Lukasz)
> - Return 0 in allocate_actors_buffer() instead of suppressing -EINVAL
> (Lukasz)
> - Add a change to supress "sustainable_power will be estimated" warning
> on "empty" TZ
> - Link to v1: https://lore.kernel.org/r/[email protected]
>
> ---
> Nikita Travkin (3):
> thermal: gov_power_allocator: Allow binding without cooling devices
> thermal: gov_power_allocator: Allow binding without trip points
> thermal: gov_power_allocator: Suppress sustainable_power warning without trip_points
>
> drivers/thermal/gov_power_allocator.c | 16 ++++++----------
> 1 file changed, 6 insertions(+), 10 deletions(-)
> ---
> base-commit: 727900b675b749c40ba1f6669c7ae5eb7eb8e837
> change-id: 20240321-gpa-no-cooling-devs-c79ee3288325
>
> Best regards,

2024-04-09 14:47:21

by Nikita Travkin

[permalink] [raw]
Subject: Re: [PATCH v2 0/3] gov_power_allocator: Allow binding before cooling devices

вт, 9 апр. 2024 г. в 19:42, Leonard Lausen <[email protected]>:
>
> Hi Nikita, Hi Łukasz,
>
> thank you for fixing the e83747c2f8e3 ("thermal: gov_power_allocator: Set up trip points earlier") and 912e97c67cc3 ("thermal: gov_power_allocator: Move memory allocation out of throttle()") regressions as part of v6.9-rc3. As the regression was introduced in v6.8, would it be possible to include the fix in a v6.8 patch release?
>

Hi! I think these both have already been picked for stable:

https://lore.kernel.org/r/[email protected]
https://lore.kernel.org/r/[email protected]/

Nikita

> Thank you
> Leonard
>
> (Resending with [email protected] in CC)
>
> #regzbot introduced: 912e97c67cc3f333c4c5df8f51498c651792e658
> #regzbot fixed-by: 1057c4c36ef8b236a2e28edef301da0801338c5f
>
>
> #regzbot introduced: e83747c2f8e3cc5e284e37a8921099f1901d79d8
> #regzbot fixed-by: da781936e7c301e6197eb6513775748e79fb2575
>
> On 4/3/24 07:31, Nikita Travkin via B4 Relay wrote:
> > Recent changes in IPA made it fail probing if the TZ has no cooling
> > devices attached on probe or no trip points defined.
> >
> > This series restores prior behavior to:
> >
> > - allow IPA to probe before cooling devices have attached;
> > - allow IPA to probe when the TZ has no passive/active trip points.
> >
> > I've noticed that all thermal zones fail probing with -EINVAL on my
> > sc7180 based Acer Aspire 1 since 6.8. This series allows me to bring
> > them back.
> >
> > Additionally there is a commit that supresses the "sustainable_power
> > will be estimated" warning on TZ that have no trip points (and thus IPA
> > will not be able to do anything for them anyway). This allowed me to
> > notice that some of the TZ with cooling_devices on my platform actually
> > lack the sustainable_power value.
> >
> > Signed-off-by: Nikita Travkin <[email protected]>
> > ---
> > Changes in v2:
> > - Split to two changes (Lukasz)
> > - Return 0 in allocate_actors_buffer() instead of suppressing -EINVAL
> > (Lukasz)
> > - Add a change to supress "sustainable_power will be estimated" warning
> > on "empty" TZ
> > - Link to v1: https://lore.kernel.org/r/[email protected]
> >
> > ---
> > Nikita Travkin (3):
> > thermal: gov_power_allocator: Allow binding without cooling devices
> > thermal: gov_power_allocator: Allow binding without trip points
> > thermal: gov_power_allocator: Suppress sustainable_power warning without trip_points
> >
> > drivers/thermal/gov_power_allocator.c | 16 ++++++----------
> > 1 file changed, 6 insertions(+), 10 deletions(-)
> > ---
> > base-commit: 727900b675b749c40ba1f6669c7ae5eb7eb8e837
> > change-id: 20240321-gpa-no-cooling-devs-c79ee3288325
> >
> > Best regards,

2024-04-09 14:51:47

by Leonard Lausen

[permalink] [raw]
Subject: Re: [PATCH v2 0/3] gov_power_allocator: Allow binding before cooling devices

Hi Nikita, Hi Łukasz,

thank you for fixing the e83747c2f8e3 ("thermal: gov_power_allocator: Set up trip points earlier") and 912e97c67cc3 ("thermal: gov_power_allocator: Move memory allocation out of throttle()") regressions as part of v6.9-rc3. As the regression was introduced in v6.8, would it be possible to include the fix in a v6.8 patch release?

Thank you
Leonard

#regzbot introduced: 912e97c67cc3f333c4c5df8f51498c651792e658
#regzbot fixed-by: 1057c4c36ef8b236a2e28edef301da0801338c5f


#regzbot introduced: e83747c2f8e3cc5e284e37a8921099f1901d79d8
#regzbot fixed-by: da781936e7c301e6197eb6513775748e79fb2575

On 4/3/24 07:31, Nikita Travkin via B4 Relay wrote:
> Recent changes in IPA made it fail probing if the TZ has no cooling
> devices attached on probe or no trip points defined.
>
> This series restores prior behavior to:
>
> - allow IPA to probe before cooling devices have attached;
> - allow IPA to probe when the TZ has no passive/active trip points.
>
> I've noticed that all thermal zones fail probing with -EINVAL on my
> sc7180 based Acer Aspire 1 since 6.8. This series allows me to bring
> them back.
>
> Additionally there is a commit that supresses the "sustainable_power
> will be estimated" warning on TZ that have no trip points (and thus IPA
> will not be able to do anything for them anyway). This allowed me to
> notice that some of the TZ with cooling_devices on my platform actually
> lack the sustainable_power value.
>
> Signed-off-by: Nikita Travkin <[email protected]>
> ---
> Changes in v2:
> - Split to two changes (Lukasz)
> - Return 0 in allocate_actors_buffer() instead of suppressing -EINVAL
> (Lukasz)
> - Add a change to supress "sustainable_power will be estimated" warning
> on "empty" TZ
> - Link to v1: https://lore.kernel.org/r/[email protected]
>
> ---
> Nikita Travkin (3):
> thermal: gov_power_allocator: Allow binding without cooling devices
> thermal: gov_power_allocator: Allow binding without trip points
> thermal: gov_power_allocator: Suppress sustainable_power warning without trip_points
>
> drivers/thermal/gov_power_allocator.c | 16 ++++++----------
> 1 file changed, 6 insertions(+), 10 deletions(-)
> ---
> base-commit: 727900b675b749c40ba1f6669c7ae5eb7eb8e837
> change-id: 20240321-gpa-no-cooling-devs-c79ee3288325
>
> Best regards,

2024-04-11 06:49:08

by Lukasz Luba

[permalink] [raw]
Subject: Re: [PATCH v2 0/3] gov_power_allocator: Allow binding before cooling devices



On 4/9/24 15:46, Nikita Travkin wrote:
> вт, 9 апр. 2024 г. в 19:42, Leonard Lausen <[email protected]>:
>>
>> Hi Nikita, Hi Łukasz,
>>
>> thank you for fixing the e83747c2f8e3 ("thermal: gov_power_allocator: Set up trip points earlier") and 912e97c67cc3 ("thermal: gov_power_allocator: Move memory allocation out of throttle()") regressions as part of v6.9-rc3. As the regression was introduced in v6.8, would it be possible to include the fix in a v6.8 patch release?
>>
>
> Hi! I think these both have already been picked for stable:
>
> https://lore.kernel.org/r/[email protected]
> https://lore.kernel.org/r/[email protected]/
>

Correct