public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
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.


  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