Message ID | 20220420091300.179753-1-francesco.dolcini@toradex.com |
---|---|
State | New |
Headers | show |
Series | [v1] thermal: imx: Update critical temp threshold | expand |
Hi Francesco, On 20/04/2022 11:13, Francesco Dolcini wrote: > Increase the critical temperature threshold to the datasheet defined > value according to the temperature grade of the SoC, increasing the > actual critical temperature value of 5 degrees. > > Without this change the emergency shutdown will trigger earlier then > required affecting applications that are expected to be working on this > close to the limit, but yet valid, temperature range. > > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> > --- > > Not sure if there is an alternative to this patch, the critical threshold seems > to be read-only and it is not possible to just change it from user space that > would be my preferred solution. > > According to the original discussion [1] the reasoning was the following: > > On Tue, Jul 28, 2015 at 4:50 PM, Tim Harvey <tharvey@gateworks.com> wrote: >> Yes - the purpose of lowering the critical threshold from the hardware >> default is to allow Linux to shutdown more cleanly. > > But I do not understand it. Shawn, Sascha ? any comment ? > [1] https://lore.kernel.org/all/CAJ+vNU1PQZa9KoCU9o_ws6jAAjhGVJby-1P583SVejT5TrAFTQ@mail.gmail.com/ > > --- > drivers/thermal/imx_thermal.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c > index 16663373b682..75a631a23e61 100644 > --- a/drivers/thermal/imx_thermal.c > +++ b/drivers/thermal/imx_thermal.c > @@ -504,10 +504,10 @@ static void imx_init_temp_grade(struct platform_device *pdev, u32 ocotp_mem0) > } > > /* > - * Set the critical trip point at 5 °C under max > + * Set the critical trip point at max > * Set the passive trip point at 10 °C under max (changeable via sysfs) > */ > - data->temp_critical = data->temp_max - (1000 * 5); > + data->temp_critical = data->temp_max; > data->temp_passive = data->temp_max - (1000 * 10); > } >
Am Donnerstag, dem 12.05.2022 um 09:36 +0200 schrieb Francesco Dolcini: > Hello Daniel, Sasha, Shawn and all > > On Mon, May 09, 2022 at 11:55:20AM +0200, Daniel Lezcano wrote: > > On 20/04/2022 11:13, Francesco Dolcini wrote: > > > Increase the critical temperature threshold to the datasheet defined > > > value according to the temperature grade of the SoC, increasing the > > > actual critical temperature value of 5 degrees. > > > > > > Without this change the emergency shutdown will trigger earlier then > > > required affecting applications that are expected to be working on this > > > close to the limit, but yet valid, temperature range. > > > > > > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> > > > --- > > > > > > Not sure if there is an alternative to this patch, the critical threshold seems > > > to be read-only and it is not possible to just change it from user space that > > > would be my preferred solution. > > > > > > According to the original discussion [1] the reasoning was the following: > > > > > > On Tue, Jul 28, 2015 at 4:50 PM, Tim Harvey <tharvey@gateworks.com> wrote: > > > > Yes - the purpose of lowering the critical threshold from the hardware > > > > default is to allow Linux to shutdown more cleanly. > > > > > > But I do not understand it. > > > > Shawn, Sascha ? any comment ? > > Just one small addition, we (Toradex) are using this modified critical > threshold since quite some time, on multiple i.MX[67]* SOC, and we > regularly run stress tests on commercial/IT part on the whole > temperature working range (ambient temperature up to 85 degrees for IT > modules) in climate chambers and I'm not aware of any issue reported > because of that (indeed, it is the other way around, without this change > we had issues). That is really an overall system design issue. Most chips will probably work fine when going over the critical temperature, as this is mostly set due to device lifetime constraints, not because the chip fails at this temperature. However the chip is only guaranteed to work at up to the critical temperature, so one could argue that starting a orderly shutdown when the critical temperature is reached is already too late, as the temperature may rise further during the time taken to shut down the system. Also device leakage increases a lot at those critical temperatures, so the system may fail not because the chip is malfunctioning, but the board power supply may not be able to supply the increased current required. Really I think there is no right or wrong here. I believe that this needs to be up to the system integrator, so the critical temperature should be writable by userspace in the constraints set by the fuses. Regards, Lucas
On Thu, May 12, 2022 at 12:52:46PM +0200, Daniel Lezcano wrote: > On 12/05/2022 12:24, Francesco Dolcini wrote: > > Hello Lucas, > > > > On Thu, May 12, 2022 at 12:08:08PM +0200, Lucas Stach wrote: > > > Am Donnerstag, dem 12.05.2022 um 09:36 +0200 schrieb Francesco Dolcini: > > [ ... ] > > > Anyway, would it be fine to have a patch that make the critical > > threshold write-able (in my initial message I mentioned this as my > > preferred solution also)? If anybody has a pointer on how > > to do it, it would be great, I'm not familiar with that code. > > What about a module param ? I would be happy to just be able to write to the `critical` trip_point_temp file in sysfs, however the thermal framework seems to enforce the critical threshold being read only (only `get_trip_temp` callback available). Is there any way to change this? # cat /sys/class/thermal/thermal_zone0/trip_point_1_type critical # ls -l /sys/class/thermal/thermal_zone0/trip_point_1_temp -r--r--r-- 1 root root 4096 May 6 14:33 /sys/class/thermal/thermal_zone0/trip_point_1_temp Francesco
On 12/05/2022 15:56, Francesco Dolcini wrote: > On Thu, May 12, 2022 at 12:52:46PM +0200, Daniel Lezcano wrote: >> On 12/05/2022 12:24, Francesco Dolcini wrote: >>> Hello Lucas, >>> >>> On Thu, May 12, 2022 at 12:08:08PM +0200, Lucas Stach wrote: >>>> Am Donnerstag, dem 12.05.2022 um 09:36 +0200 schrieb Francesco Dolcini: >> >> [ ... ] >> >>> Anyway, would it be fine to have a patch that make the critical >>> threshold write-able (in my initial message I mentioned this as my >>> preferred solution also)? If anybody has a pointer on how >>> to do it, it would be great, I'm not familiar with that code. >> >> What about a module param ? > > I would be happy to just be able to write to the `critical` > trip_point_temp file in sysfs, however the thermal > framework seems to enforce the critical threshold being read only (only > `get_trip_temp` callback available). Is there any way to change this? No, critical trip point is not a system setting but a hardware setting. It should be set via the DT or a module parameter. > # cat /sys/class/thermal/thermal_zone0/trip_point_1_type > critical > # ls -l /sys/class/thermal/thermal_zone0/trip_point_1_temp > -r--r--r-- 1 root root 4096 May 6 14:33 /sys/class/thermal/thermal_zone0/trip_point_1_temp
diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c index 16663373b682..75a631a23e61 100644 --- a/drivers/thermal/imx_thermal.c +++ b/drivers/thermal/imx_thermal.c @@ -504,10 +504,10 @@ static void imx_init_temp_grade(struct platform_device *pdev, u32 ocotp_mem0) } /* - * Set the critical trip point at 5 °C under max + * Set the critical trip point at max * Set the passive trip point at 10 °C under max (changeable via sysfs) */ - data->temp_critical = data->temp_max - (1000 * 5); + data->temp_critical = data->temp_max; data->temp_passive = data->temp_max - (1000 * 10); }