2024-03-25 12:51:39

by Stephen Horvath

[permalink] [raw]
Subject: [PATCH] ACPI: thermal_lib: Continue registering thermal zones even if trip points fail validation

Some laptops where the thermal control is handled by the EC may
provide trip points that fail the kernels new validation, but still have
working temperature sensors. An example of this is the Framework 13 AMD.

This patch allows the thermal zone to still be registered without trip
points if the trip points fail validation, allowing the temperature
sensor to be viewed and used by the user.

Signed-off-by: Stephen Horvath <[email protected]>
---
drivers/acpi/thermal.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 302dce0b2b50..fd59e41037ec 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -903,8 +903,8 @@ static int acpi_thermal_add(struct acpi_device *device)

if (trip == trip_table) {
pr_warn(FW_BUG "No valid trip points!\n");
- result = -ENODEV;
- goto free_memory;
+ /* Effectively disable polling since it is not needed */
+ tz->polling_frequency = 0;
}

result = acpi_thermal_register_thermal_zone(tz, trip_table,
--
2.43.0



2024-03-27 15:41:31

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] ACPI: thermal_lib: Continue registering thermal zones even if trip points fail validation

On Mon, Mar 25, 2024 at 5:44 AM Stephen Horvath
<[email protected]> wrote:
>
> Some laptops where the thermal control is handled by the EC may
> provide trip points that fail the kernels new validation, but still have
> working temperature sensors. An example of this is the Framework 13 AMD.

I believe that this is a regression introduced recently, so would it
be possible to provide a pointer to the commit that introduced it?

> This patch allows the thermal zone to still be registered without trip
> points if the trip points fail validation, allowing the temperature
> sensor to be viewed and used by the user.
>
> Signed-off-by: Stephen Horvath <[email protected]>
> ---
> drivers/acpi/thermal.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
> index 302dce0b2b50..fd59e41037ec 100644
> --- a/drivers/acpi/thermal.c
> +++ b/drivers/acpi/thermal.c
> @@ -903,8 +903,8 @@ static int acpi_thermal_add(struct acpi_device *device)
>
> if (trip == trip_table) {
> pr_warn(FW_BUG "No valid trip points!\n");
> - result = -ENODEV;
> - goto free_memory;
> + /* Effectively disable polling since it is not needed */
> + tz->polling_frequency = 0;

Because the thermal zone becomes effectively tripless, it should be
registered with thermal_tripless_zone_device_register().

> }
>
> result = acpi_thermal_register_thermal_zone(tz, trip_table,
> --

2024-03-27 23:05:10

by Stephen Horvath

[permalink] [raw]
Subject: Re: [PATCH] ACPI: thermal_lib: Continue registering thermal zones even if trip points fail validation

On 28/3/24 01:34, Rafael J. Wysocki wrote:
> I believe that this is a regression introduced recently, so would it
> be possible to provide a pointer to the commit that introduced it?

Yeah sorry, here's the commit id: 9c8647224e9fabb765019193aa43c054a638f808

I've also created a bug report with slightly more info here:
https://bugzilla.kernel.org/show_bug.cgi?id=218586

> Because the thermal zone becomes effectively tripless, it should be
> registered with thermal_tripless_zone_device_register().

Cool I'll do that for v2.

Thanks a lot for your feedback!
Steve