mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Werner Sembach <wse@tuxedocomputers.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>,
	"linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"Rafael J . Wysocki" <rafael@kernel.org>
Cc: rui.zhang@intel.com, "Hans de Goede" <hdegoede@redhat.com>,
	"Armin Wolf" <W_Armin@gmx.de>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	platform-driver-x86@vger.kernel.org
Subject: Re: Thermal driver with safeguards
Date: Thu, 16 Jan 2025 12:00:19 +0100	[thread overview]
Message-ID: <3b526ad3-2db6-40c3-9017-91f63d43f97d@tuxedocomputers.com> (raw)
In-Reply-To: <286f5efc-cd15-4e0b-bec2-2e9bbb93dd37@linaro.org>


Am 10.01.25 um 18:43 schrieb Daniel Lezcano:
> On 10/01/2025 17:56, Werner Sembach wrote:
>> Hi Daniel,
>>
>> Am 09.01.25 um 22:36 schrieb Daniel Lezcano:
>>> On 02/12/2024 15:52, Werner Sembach wrote:
>>>> Hi,
>>>>
>>>> given a pair of a temperature sensor and a fan, I want to implement a 
>>>> driver. that allows userspace to directly control the fan if it wants to. 
>>>> But have a minimum fan speed when certain high temperatures are reached to 
>>>> avoid crashes or hardware damage.
>>>
>>> From the userspace, use directly the thermal-engine which is currently under 
>>> development [1]. You can add your platform specific code in a plugin while 
>>> the thermal engine will catch all the thermal events and pass them to it [2].
>>>
>>> The thermal engine has a configuration file which will setup the thermal 
>>> framework to be woken up at different temperatures.
>> That still requires to trust userspace/the user to not write dangerous values 
>> directly to sysfs?
>
> No, it is not a trip point but temperature thresholds. So if the firmware 
> defines trip points, the userspace can not change them.
>
> Userspace thresholds are new : https://lwn.net/Articles/986009/
>
>>> The thermal engine will be proposed for a distro package, so the platform 
>>> support will be automatically supported.
>>>
>>> Beside the trip points can be setup in the device to act on higher temperature.
>> As far as i can tell these trip points only notify userspace but you can't 
>> attach code executed in kernel to it.
>
> [ ... ]
>
>>> What is unclear is how the fan is managed. I suggest to have a look at 
>>> pwm-fan.c in drivers/hwmon
>>
>> I already looked at hwmon, but that basically just writes trough values from 
>> and to userspace and has no kernel side management of temperatures and fan 
>> speeds whatsoever.
>
> IIUC, you request was about having the userspace to deal with a fan and the 
> kernel to be a safe guard, so taking over the thermal management when the 
> temperature is too high.
Not completely taking over, just enforcing a min speed.
>
> Obviously the monitored temperature must be for a device with a "slow" 
> temperature motion, userspace temperature management is not suitable for fast 
> temperature transitions.
>
> The thermal engine can for example configure different temperatures, let's 
> say: 43°C, 44°C, 46°C, 49°C and 54°C.
>
> Then the DT describes additional trip points for mitigation, one trip point 
> for mitigation could be enough (eg 80°C). One for "hot" to send to the thermal 
> engine a notification about getting really high so it can do some userspace 
> action like killing an application, and finally a "critical" trip point to 
> shutdown the system.
I guess with DT you mean device table. I deal with a driver for x86 notebooks so 
there is not DT.
>
> The fan would be a cooling device with 0-100 values representing the speed in 
> percentage. The trip point at 80°C would be associated with the fan with the 
> <0, 100> cooling states.
>
> The dynamic of the thermal management could be the following:
>
> The temperature is changing and stays in the [35°C - 60°C] boundaries. The 
> thermal engine receives the events at the different aforementioned 
> temperatures and manage to act on the pwm fan via hwmon.
>
> For any reason the temperature goes above 80°C, at this moment the kernel 
> takes over the management and will increase/decrease the fan speed between the 
> 0% - 100% limits until the temperature goes below the 80°C.
>
> If it continues to increase and reaches the "hot" trip point, then an events 
> is sent to the userspace which should take an action to reduce the temperature 
> (kill the application, reduce the battery charge, drop the frame rates, etc ...).
>
> If it continues to increase and reaches the "critical" trip point, then the 
> system shuts down.
>
> If the temperature decreases and goes below 80°C, then it returns to the 
> normal state and the thermal engine can continue its work.
>
> Does it make sense ?
>
>

      reply	other threads:[~2025-01-16 11:00 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-02 14:52 Werner Sembach
2025-01-09 20:10 ` Werner Sembach
2025-01-13 22:17   ` Pavel Machek
2025-01-14 10:14     ` Werner Sembach
2025-01-09 21:36 ` Daniel Lezcano
2025-01-10 16:56   ` Werner Sembach
2025-01-10 17:43     ` Daniel Lezcano
2025-01-16 11:00       ` Werner Sembach [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3b526ad3-2db6-40c3-9017-91f63d43f97d@tuxedocomputers.com \
    --to=wse@tuxedocomputers.com \
    --cc=W_Armin@gmx.de \
    --cc=daniel.lezcano@linaro.org \
    --cc=hdegoede@redhat.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=rui.zhang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®