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 ?
>
>
prev parent 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®