From: Dmitry Osipenko <dmitry.osipenko@collabora.com>
To: Antheas Kapenekakis <lkml@antheas.dev>
Cc: bob.beckett@collabora.com, bookeldor@gmail.com,
hadess@hadess.net, jaap@haitsma.org, kernel@collabora.com,
lennart@poettering.net, linux-acpi@vger.kernel.org,
linux-kernel@vger.kernel.org, mccann@jhu.edu, rafael@kernel.org,
richard@hughsie.com, sebastian.reichel@collabora.com,
superm1@kernel.org, systemd-devel@lists.freedesktop.org,
xaver.hugl@gmail.com, John Schoenick <johns@valvesoftware.com>
Subject: Re: [RFC v1 0/8] acpi/x86: s2idle: Introduce and implement runtime standby ABI for ACPI s0ix platforms
Date: Wed, 22 Apr 2026 03:56:11 +0300 [thread overview]
Message-ID: <d3598ba5-2de7-42f7-963f-a500597c8a88@collabora.com> (raw)
In-Reply-To: <9603d545-9def-498d-bf05-c15b855b3d3b@collabora.com>
Hi, Antheas
On 3/17/26 14:04, Dmitry Osipenko wrote:
> On 3/16/26 22:36, Antheas Kapenekakis wrote:
>> On Mon, 16 Mar 2026 at 20:33, Antheas Kapenekakis <lkml@antheas.dev> wrote:
>>>
>>> On Mon, 16 Mar 2026 at 20:03, Dmitry Osipenko
>>> <dmitry.osipenko@collabora.com> wrote:
>>>>
>>>> Hi Antheas,
>>>>
>>>> On 1/15/26 10:49, Antheas Kapenekakis wrote:
>>>>> On Thu, 15 Jan 2026 at 01:07, Dmitry Osipenko
>>>>> <dmitry.osipenko@collabora.com> wrote:
>>>>>>
>>>>>> On 1/13/26 13:11, Antheas Kapenekakis wrote:
>>>>>>> <snip>
>>>>>
>>>>> Hi Dmitry,
>>>>> let me go inline.
>>>>>
>>>>>> The primary goal is to support screen-off DSM for a power-efficient
>>>>>> background games downloading [1] and further resume-to-dark on Steam
>>>>>> Deck and other handhelds. There is no strict timeline, usual "sooner the
>>>>>> better". Downstreams will use customized WIP solution till upstream will
>>>>>> get necessary generic interfaces.
>>>>>>
>>>>>> [1] https://store.steampowered.com/news/app/1675200/view/771930569635267984
>>>>>
>>>>> Ok, this makes things clearer. I had done some testing to see the
>>>>> viability of such approach.
>>>>>
>>>>> One big problem [1] had was that the compression algorithm that Steam
>>>>> used was very CPU intensive. However, it was announced that that
>>>>> changed, which makes low power downloads more viable.
>>>>>
>>>>> However, even so, I do not think the sleep DSM is designed for
>>>>> prolonged background use and certain devices might overheat.
>>>>> Specifically, I think the Go S disables its fan while in that DSM.
>>>>> Looking back to what Windows does, it only uses the Sleep state to do
>>>>> periodic polling, and if there are updates it transitions to display
>>>>> off.
>>>>>
>>>>> This is a fair approach for [1]. For example, device wakes up every
>>>>> two hours while connected to a charger, stays on sleep state, checks
>>>>> for updates, and if there are any and conditions are met, transitions
>>>>> to display off and starts downloading.
>>>>>
>>>>> However, this means you do not get a smaller tdp limit. Given you
>>>>> control the unfrozen userspace in that state though, such a limit does
>>>>> not help either. The device will use what it needs to for downloads.
>>>>> This makes the SD 5W low power mode puzzling, as it means downloads
>>>>> will potentially take longer and I would be punished as a user for
>>>>> using that mode. Instead, Steam should be optimized to use less than
>>>>> 5W or perhaps 10W when downloading from gigabit in some way.
>>>>>
>>>>> Two more considerations in this case are that a lot of devices will
>>>>> turn off their controllers when entering display off. And the rest
>>>>> when entering sleep. This is good because when you are in dark resume,
>>>>> the RGB of the device has turned off. But for [1] it is problematic
>>>>> because it assumes the controller works and is what is used to wake
>>>>> the device so the mode is broken. For Legion, Sleep is used to turn
>>>>> off the controller, and for other devices Sleep Entry/Exit. New in ROG
>>>>> Xbox Ally devices is that the controller no longer turns off, but it
>>>>> is muted.
>>>>>
>>>>> The other consideration is that three additional patches are needed
>>>>> for ROG Ally devices to work correctly with this series, 2 cleanup
>>>>> commits and 1 small delay. But after that it should be drop in. I
>>>>> cannot comment on the new hid drivers for Asus and Legion that are
>>>>> currently being developed. Particularly, hid-legion-go(?) has a
>>>>> reset_resume() cb where it should have used resume? Or not anything?
>>>>> The legion controllers save os mode until they disconnect, which they
>>>>> do with this series, so the driver would always re-initialize on
>>>>> wake-up.
>>>>
>>>> My rough understanding that a firmware/BIOS update may be needed for
>>>> some devices to leverage DSM in regards to power consumption
>>>> improvement. Could be true that practically it may not improve much,
>>>> will see. Even if not all current devices will benefit from the
>>>> screen-off DSM, it may differ for a later generations.
>>>
>>> Hi Dmitry,
>>> sorry, I have been busy the past few days. I read through Rafael's
>>> comments, I will respond to them in the next 2-3 days.
>>>
>>> Your understanding is correct. You will see 0 performance difference
>>> with the screen off DSM. It is not supposed to affect the thermal
>>> envelope. Turning off the screens of your laptop due to inactivity is
>>> not supposed to affect the thermal envelope.
>>>
>>> For devices that use the DSM to turn off their controller (~60%),
>>> there might be a marginal <.5W improvement. The rest use the sleep
>>> DSMs for that. Those do affect the thermal envelope. However, they are
>>> not designed for prolonged CPU intensive tasks such as a SteamOS
>>> download mode. This is the bigger concern. From my experience, I
>>> expect the Go S to overheat.
>>>
>>> The improvement because of turning off the controllers / RGB is
>>> something that is needed for download mode in any case. And as my
>>> previous comment suggests, lowering the thermal limit may not be
>>> required / advantageous.
>>
>> Here, the sleep dsms are also important, because of their broad
>> effects to power light / thermal envelope. As they can be used for
>> brief wake / update checks. For battery powered devices, perhaps these
>> are not important (excl. hibernation checks), but for desktop consoles
>> it is expected functionality.
>>
>>>>>> A common approach for upstreaming is to divide problem into smaller
>>>>>> manageable parts. That's what I'm planning to focus on now to see if we
>>>>>> can start easy with a minimal changes.
>>>>>
>>>>> Sure. One potential approach for this is this series, where the first
>>>>> part does the plumbing and the second part the exposing. They can be
>>>>> merged independently.
>>>>>
>>>>> I also made sure to address Rafael's comments, so the ABI of this
>>>>> series is completely independent of ACPI, S0ix or whether the device
>>>>> has a display. I also removed all references to Intel, AMD specific
>>>>> power envelope terminology. Moreover, most of the logic now resides in
>>>>> suspend.c and the hooks are in platform_ calls, so it can be
>>>>> implemented for other platforms easily.
>>>>>
>>>>> However, the first part of this series does some refactorings which
>>>>> assume a favorable outcome. If we do not want to assume that, a
>>>>> simpler initial series would just move the MS/display on/off DSMs to
>>>>> .begin() in s2idle.c. If you think that would be easier to merge, you
>>>>> are welcome to start with that. Then this series would be refactored
>>>>> on top and merged as a single unit. Keep in mind the ROG Ally conflict
>>>>> would also arise in this case as well.
>>>>>
>>>>>> Please don't worry about the credit. You did a significant ground work
>>>>>> that is well recognized by now. Thanks a lot for your efforts and help.
>>>>>> Starting from scratch of course won't be a good approach with all the
>>>>>> broad testing you've done.
>>>>>
>>>>> Great. Sounds good to me.
>>>>
>>>> I'm taking latest version of your patches and will update them in
>>>> accordance to the review from Rafael.
>>>
>>> Rafael raised some good questions I need to respond to. Specifically,
>>> the ABI is not yet decided, so the comments are not ready to address
>>> yet.
>>>
>>> Nonetheless, this series is ready to test with the current ABI.
>>>
>>> Moreover, Rafael suggests for upstreaming to follow essentially what I
>>> outlined. An initial series should move the DSMs to the beginning of
>>> the suspend sequence, and the follow-up would implement the ABI.
>>>
>>> I was planning to work on the first sub-series as a non-RFC after
>>> responding to Rafael's comments. Let me know how you plan to proceed.
>
> Please go on and make a v2. This version works well with my testing. Thanks!
Do you have updates on v2? For now I don't have good suggestion on where
to put and how to define standby knobs in sysfs in a more generic
manner. Pick what feels better or keep current /sys/power variant with
the rest of review comments addressed.
Please let me know if help needed,
--
Best regards,
Dmitry
next prev parent reply other threads:[~2026-04-22 0:56 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-26 10:26 [RFC v1 0/8] acpi/x86: s2idle: Introduce and implement runtime standby ABI for ACPI s0ix platforms Antheas Kapenekakis
2025-12-26 10:26 ` [RFC v1 1/8] Documentation: PM: Add documentation for Runtime Standby States Antheas Kapenekakis
2026-03-13 20:07 ` Rafael J. Wysocki
2026-03-16 19:54 ` Antheas Kapenekakis
2025-12-26 10:26 ` [RFC v1 2/8] acpi/x86: s2idle: Rename LPS0 constants so they mirror their function Antheas Kapenekakis
2026-03-13 20:12 ` Rafael J. Wysocki
2026-03-16 20:01 ` Antheas Kapenekakis
2025-12-26 10:26 ` [RFC v1 3/8] acpi/x86: s2idle: add runtime standby transition function Antheas Kapenekakis
2026-03-13 20:29 ` Rafael J. Wysocki
2026-03-16 20:06 ` Antheas Kapenekakis
2025-12-26 10:26 ` [RFC v1 4/8] acpi/x86: s2idle: add support for querying runtime standby state support Antheas Kapenekakis
2025-12-26 10:26 ` [RFC v1 5/8] acpi/x86: s2idle: move DSM notifications to do_notification callback Antheas Kapenekakis
2025-12-26 10:26 ` [RFC v1 6/8] acpi/x86: s2idle: implement turn on display DSM as resume notification Antheas Kapenekakis
2025-12-26 10:26 ` [RFC v1 7/8] PM: hibernate: Enter s2idle sleep state before hibernation Antheas Kapenekakis
2026-03-13 20:33 ` Rafael J. Wysocki
2026-03-16 20:09 ` Antheas Kapenekakis
2025-12-26 10:26 ` [RFC v1 8/8] PM: standby: Add sysfs attribute for runtime standby transitions Antheas Kapenekakis
2026-01-12 20:33 ` [RFC v1 0/8] acpi/x86: s2idle: Introduce and implement runtime standby ABI for ACPI s0ix platforms Antheas Kapenekakis
2026-01-13 9:48 ` Dmitry Osipenko
2026-01-13 10:11 ` Antheas Kapenekakis
2026-01-14 23:07 ` Dmitry Osipenko
2026-01-15 7:49 ` Antheas Kapenekakis
2026-03-16 19:02 ` Dmitry Osipenko
2026-03-16 19:33 ` Antheas Kapenekakis
2026-03-16 19:36 ` Antheas Kapenekakis
2026-03-17 11:04 ` Dmitry Osipenko
2026-04-22 0:56 ` Dmitry Osipenko [this message]
2026-04-22 8:51 ` Antheas Kapenekakis
2026-04-22 8:58 ` Antheas Kapenekakis
2026-04-24 1:35 ` Dmitry Osipenko
2026-04-24 13:48 ` Mario Limonciello
2026-04-24 16:13 ` Antheas Kapenekakis
2026-02-27 14:59 ` Antheas Kapenekakis
2026-02-27 18:42 ` Rafael J. Wysocki
2026-03-13 19:36 ` Rafael J. Wysocki
2026-03-16 19:52 ` Antheas Kapenekakis
2026-03-17 11:56 ` Dmitry Osipenko
2026-03-17 12:09 ` Rafael J. Wysocki
2026-03-17 15:13 ` Mario Limonciello
2026-03-19 12:35 ` Antheas Kapenekakis
2026-03-20 20:41 ` Mario Limonciello (AMD) (kernel.org)
2026-03-21 13:46 ` Antheas Kapenekakis
2026-03-21 13:52 ` Antheas Kapenekakis
2026-03-21 18:43 ` Mario Limonciello
2026-03-21 22:33 ` Antheas Kapenekakis
2026-03-23 4:36 ` Mario Limonciello
2026-03-23 9:26 ` Antheas Kapenekakis
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=d3598ba5-2de7-42f7-963f-a500597c8a88@collabora.com \
--to=dmitry.osipenko@collabora.com \
--cc=bob.beckett@collabora.com \
--cc=bookeldor@gmail.com \
--cc=hadess@hadess.net \
--cc=jaap@haitsma.org \
--cc=johns@valvesoftware.com \
--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=superm1@kernel.org \
--cc=systemd-devel@lists.freedesktop.org \
--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