From: Mario Limonciello <superm1@kernel.org>
To: Antheas Kapenekakis <lkml@antheas.dev>,
Dmitry Osipenko <dmitry.osipenko@collabora.com>
Cc: Lennart Poettering <lennart@poettering.net>,
Daniel Stone <daniels@collabora.com>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Robert Beckett <bob.beckett@collabora.com>,
linux-acpi@vger.kernel.org, kernel@collabora.com,
linux-kernel@vger.kernel.org,
Sebastian Reichel <sebastian.reichel@collabora.com>,
Xaver Hugl <xaver.hugl@gmail.com>,
Richard Hughes <richard@hughsie.com>,
William Jon McCann <mccann@jhu.edu>,
"Jaap A . Haitsma" <jaap@haitsma.org>,
Benjamin Canou <bookeldor@gmail.com>,
Bastien Nocera <hadess@hadess.net>
Subject: Re: [RFC PATCH v1 1/1] ACPI: PM: s2idle: Add lps0_screen_off sysfs interface
Date: Wed, 3 Dec 2025 08:34:47 -0600 [thread overview]
Message-ID: <2d4040dd-87e0-4cc4-9cce-3560e7b026c9@kernel.org> (raw)
In-Reply-To: <CAGwozwEDJbFoZJsqyOycHbv-LwGqOC-MG3K_duVEEqfKfXMUhA@mail.gmail.com>
On 12/3/25 4:12 AM, Antheas Kapenekakis wrote:
> On Wed, 3 Dec 2025 at 07:47, Dmitry Osipenko
> <dmitry.osipenko@collabora.com> wrote:
>>
>> On 12/3/25 05:12, Mario Limonciello (AMD) (kernel.org) wrote:
>>>
>>>
>>> On 12/2/2025 4:35 PM, Dmitry Osipenko wrote:
>>>> On 12/3/25 00:25, Mario Limonciello (AMD) (kernel.org) wrote:
>>>>>> An inhibitor process in logind can handle this gracefully very simply.
>>>>>> Involving the DRM subsystem just adds a lot of complexity and it is
>>>>>> not clear what the benefit would be. There are no known devices that
>>>>>> hook DRM components into that DSM.
>>>>>>
>>>>>>> By doing it this way userspace still has control, but it's not
>>>>>>> mandatory for userspace to be changed.
>>>>>>
>>>>>> On that note, the screen off calls/userspace implementations are
>>>>>> optional under both patch series. If userspace is not aware of them,
>>>>>> they are still called by the kernel when suspending.
>>>>>
>>>>> With the proposal I mentioned you can get the LPS0 _DSM called on a
>>>>> handheld when the screen gets called without changing userspace.
>>>>>
>>>>>>
>>>>>> Current userland also duplicates the functionality of the screen off
>>>>>> call, which is primarily turning off the keyboard backlight. So along
>>>>>> implementing this call, userspace software like powerdevil/upower
>>>>>> needs to be tweaked to avoid doing that if the screen off state is
>>>>>> available.
>>>>>
>>>>> Sure Any hooking for turning off LEDs manually based off the screen off
>>>>> _DSM is totally feasible.
>>>>
>>>> It's not that trivial to add screen on/off hooks to DRM, there is no one
>>>> central place for that from what I can tell. I'm seeing variant with DRM
>>>> hooks as unnecessary complexity that doesn't solve any practical problem.
>>>
>>> Is it really that hard? I figured that any time
>>> connector->dpms != mode from drm_atomic_connector_commit_dpms() could
>>> walk through all the connectors and make a judgement call whether to
>>> notify the potentially exported symbol.
>>
>> - drm_atomic_connector_commit_dpms() is used only for atomic ioctl path
>> - there is another legacy kms path
>> - AFAICT, DRM takes a different path when display is enabled initially
>> by kernel
>>
>> Here we have 3 places where to plug the hook. Gives a strong feeling of
>> a red flag, IMO.
It could easily be a symbol that all 3 places call which enumerates
connectors and decides whether to call the LPS0 symbol.
But yeah; you might be right it's too complex.
>>
>>>> A week ago in a private conversation, Daniel Stone gave an example of
>>>> laptop's lid-close handling that is done purely in userspace.
>>>> Technically, kernel could have DRM hooks for that too, but it doesn't.
>>>
>>> All the way into hardware sleep? There are certain requirements needed
>>> for hardware sleep that kernel drivers are normally used to put devices
>>> into the right state. I guess PCIe devices you can hack around with
>>> userspace PCI config space writes but you're going to confuse the kernel
>>> pretty badly.
>>
>> - Userspace gets notification for a changed lid state
>> - Userspace takes action of turning display on/off
>> - Kernel DRM doesn't know and doesn't care about lid state,
>> force-disabling display on machine suspension
>>
>> Don't see how this is different for the case of the LPS0 notifications.
>> Maybe I'm not getting your point well, in that case please clarify more.
I thought you were talking about total sleep handling, but you're just
talking about other userspace events related to a lid. This is much
different.
>>
>>>> Userspace would need to be taught about new power modes in any case.
>>>> Addition of DRM hooks should require a well-defined justification, which
>>>> is currently absent.
>>>>
>>>
>>> Why does userspace need to know about them? Besides the inhibitor can't
>>> this be invisible to userspace? I thought this mostly is for the
>>> firmware to flash some LEDs and maybe change some power limits.
>>
>> What I was saying is that LPS0 inhibitors would represent the power mode
>> controls by themselves. Userspace would have to know how to drive them.
>>
>> Userspace power managers are already driving displays DPMS. Combining
>> this with knowledge about the LPS0 inhibitors gives userspace ability to
>> support the new device power states. Hence, there is no practical need
>> to bother kernel DRM with the LPS0 burden.
>
> _Technically_ DPMS is driven by the compositor, not by any power manager.
>
> However, I think for Gnome and KDE they link to logind's inactivity
> hook so practically you are correct for inactivity.
>
> Moreover, traditionally, compositors do not fire DPMS for suspend, the
> kernel does. I think KDE fixed that recently though. This is why the
> display used to wake up twice during hibernation, and why you get a
> frozen display when suspending/resuming. This also complicates
> suspend-then-hibernate checks because the display wakes up. i.e., they
> should fire DPMS for suspend but a lot for them don't
>
> With compositors such as gamescope that do not have a dbus API it gets
> more hairy. And it also means that the power manager/kernel cannot
> control DPMS without the compositor's consent. If they do that, the
> compositor will crash due to rejected commits. We have a suspend hook
> for gamescope on Bazzite though, it improves suspend appearance.
It's OT and tangential to this thread; but Gamescope should probably
grow native DPMS control for this particular case.
>
> Just throwing in this for context, although it builds more of a case
> of not involving DRM.
>
I don't feel it's appropriate to build new API in the kernel to work
around shortcomings of an individual compositor.
next prev parent reply other threads:[~2025-12-03 14:34 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-02 4:34 [RFC PATCH v1 0/1] ACPI: s2idle: Add /sys/power/lps0_screen_off Dmitry Osipenko
2025-12-02 4:34 ` [RFC PATCH v1 1/1] ACPI: PM: s2idle: Add lps0_screen_off sysfs interface Dmitry Osipenko
2025-12-02 4:43 ` Mario Limonciello (AMD) (kernel.org)
2025-12-02 5:26 ` Dmitry Osipenko
2025-12-02 9:32 ` Antheas Kapenekakis
2025-12-02 14:23 ` Mario Limonciello
2025-12-02 15:17 ` Antheas Kapenekakis
2025-12-02 21:25 ` Mario Limonciello (AMD) (kernel.org)
2025-12-02 22:35 ` Dmitry Osipenko
2025-12-03 2:12 ` Mario Limonciello (AMD) (kernel.org)
2025-12-03 6:46 ` Dmitry Osipenko
2025-12-03 10:12 ` Antheas Kapenekakis
2025-12-03 14:34 ` Mario Limonciello [this message]
2025-12-03 14:46 ` Antheas Kapenekakis
2025-12-02 21:59 ` Dmitry Osipenko
2025-12-03 14:58 ` Rafael J. Wysocki
2025-12-04 15:03 ` Dmitry Osipenko
2025-12-04 16:41 ` Rafael J. Wysocki
2025-12-04 18:31 ` Antheas Kapenekakis
2025-12-05 16:32 ` Rafael J. Wysocki
2025-12-05 16:46 ` Mario Limonciello (AMD) (kernel.org)
2025-12-05 17:22 ` Rafael J. Wysocki
2025-12-05 18:07 ` Mario Limonciello
2025-12-05 19:37 ` Rafael J. Wysocki
2025-12-05 19:42 ` Mario Limonciello
2025-12-05 20:06 ` Rafael J. Wysocki
2025-12-05 21:52 ` Antheas Kapenekakis
2025-12-06 14:34 ` Rafael J. Wysocki
2025-12-06 20:50 ` Mario Limonciello
2025-12-06 23:35 ` Antheas Kapenekakis
2025-12-07 0:31 ` Mario Limonciello
2025-12-07 10:34 ` Antheas Kapenekakis
2025-12-05 22:51 ` Antheas Kapenekakis
2025-12-07 11:06 ` Rafael J. Wysocki
2025-12-07 11:19 ` Rafael J. Wysocki
2025-12-07 11:50 ` Antheas Kapenekakis
2025-12-09 22:13 ` Dmitry Osipenko
2025-12-09 22:22 ` Antheas Kapenekakis
2025-12-09 22:23 ` Rafael J. Wysocki
2025-12-07 11:42 ` Antheas Kapenekakis
2025-12-05 13:34 ` [RFC PATCH v1 0/1] ACPI: s2idle: Add /sys/power/lps0_screen_off Pavel Machek
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=2d4040dd-87e0-4cc4-9cce-3560e7b026c9@kernel.org \
--to=superm1@kernel.org \
--cc=bob.beckett@collabora.com \
--cc=bookeldor@gmail.com \
--cc=daniels@collabora.com \
--cc=dmitry.osipenko@collabora.com \
--cc=hadess@hadess.net \
--cc=jaap@haitsma.org \
--cc=kernel@collabora.com \
--cc=lennart@poettering.net \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkml@antheas.dev \
--cc=mccann@jhu.edu \
--cc=rafael@kernel.org \
--cc=richard@hughsie.com \
--cc=sebastian.reichel@collabora.com \
--cc=xaver.hugl@gmail.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