Hi Rafael, On Thu, 2023-01-26 at 14:13 +0100, Rafael J. Wysocki wrote: > On Thursday, January 26, 2023 1:02:59 AM CET srinivas pandruvada > wrote: > > Hi Rafael, > > > > > [...] > I've added the appended patch to the thermal-intel-test branch. Can > you please > check if it makes that difference in behavior go away? I synced the tree again and your patch in thermal-intel-test fixes the issue. Thanks, Srinivas > > --- > From: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > Subject: [PATCH] thermal: ACPI: Initialize trips if temperature is > out of range > > In some cases it is still useful to register a trip point if the > temperature returned by the corresponding ACPI thermal object (for > example, _HOT) is invalid to start with, because the same ACPI > thermal object may start to return a valid temperature after a > system configuration change (for example, from an AC power source > to battery an vice versa). > > For this reason, if the ACPI thermal object evaluated by > thermal_acpi_trip_init() successfully returns a temperature value > that > is out of the range of values taken into account, initialize the trip > point using THERMAL_TEMP_INVALID as the temperature value instead of > returning an error to allow the user of the trip point to decide what > to do with it. > > Also update pch_wpt_add_acpi_psv_trip() to reject trip points with > invalid temperature values. > > Fixes: 7a0e39748861 ("thermal: ACPI: Add ACPI trip point routines") > Reported-by: Srinivas Pandruvada > <srinivas.pandruvada@xxxxxxxxxxxxxxx> > Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > --- > drivers/thermal/intel/intel_pch_thermal.c | 2 +- > drivers/thermal/thermal_acpi.c | 7 ++++--- > 2 files changed, 5 insertions(+), 4 deletions(-) > > Index: linux-pm/drivers/thermal/thermal_acpi.c > =================================================================== > --- linux-pm.orig/drivers/thermal/thermal_acpi.c > +++ linux-pm/drivers/thermal/thermal_acpi.c > @@ -64,13 +64,14 @@ static int thermal_acpi_trip_init(struct > return -ENODATA; > } > > - if (temp < TEMP_MIN_DECIK || temp >= TEMP_MAX_DECIK) { > + if (temp >= TEMP_MIN_DECIK && temp <= TEMP_MAX_DECIK) { > + trip->temperature = > deci_kelvin_to_millicelsius(temp); > + } else { > acpi_handle_debug(adev->handle, "%s result %llu out > of range\n", > obj_name, temp); > - return -ENODATA; > + trip->temperature = THERMAL_TEMP_INVALID; > } > > - trip->temperature = deci_kelvin_to_millicelsius(temp); > trip->hysteresis = 0; > trip->type = type; > > Index: linux-pm/drivers/thermal/intel/intel_pch_thermal.c > =================================================================== > --- linux-pm.orig/drivers/thermal/intel/intel_pch_thermal.c > +++ linux-pm/drivers/thermal/intel/intel_pch_thermal.c > @@ -107,7 +107,7 @@ static void pch_wpt_add_acpi_psv_trip(st > return; > > ret = thermal_acpi_trip_passive(adev, &ptd- > >trips[*nr_trips]); > - if (ret) > + if (ret || ptd->trips[*nr_trips].temperature <= 0) > return; > > ++(*nr_trips); > > >