Re: [RFC v1 0/8] acpi/x86: s2idle: Introduce and implement runtime standby ABI for ACPI s0ix platforms
From: Antheas Kapenekakis
Date: Sat Mar 21 2026 - 10:00:52 EST
On Sat, 21 Mar 2026 at 14:46, Antheas Kapenekakis <lkml@xxxxxxxxxxx> wrote:
>
> On Fri, 20 Mar 2026 at 21:41, Mario Limonciello (AMD) (kernel.org)
> <superm1@xxxxxxxxxx> wrote:
> >
> >
> >
> > On 3/19/2026 7:35 AM, Antheas Kapenekakis wrote:
> > > On Tue, 17 Mar 2026 at 16:13, Mario Limonciello
> > > <mario.limonciello@xxxxxxx> wrote:
> > >>
> > >>
> > >>
> > >> On 3/17/26 07:09, Rafael J. Wysocki wrote:
> > >>> On Tue, Mar 17, 2026 at 12:57 PM Dmitry Osipenko
> > >>> <dmitry.osipenko@xxxxxxxxxxxxx> wrote:
> > >>>>
> > >>>> On 3/16/26 22:52, Antheas Kapenekakis wrote:
> > >>>>>> So in accordance with the above, /sys/power/standby is not a very
> > >>>>>> fortunate choice of the name of this interface and I'm totally
> > >>>>>> unconvinced that it belongs to sys/power because its role is not
> > >>>>>> really power management (and it is ACPI-only for the time being).
> > >>>>> Hm, most of the changes / implementation resides in the pm subsystem
> > >>>>> and it is related to the s2idle suspend flow.
> > >>>>>
> > >>>>> I assume that when it stops being ACPI only provided we reach a design
> > >>>>> that allows for that, the related callbacks would also nest in pm ops.
> > >>>>>
> > >>>>> Where could a more appropriate directory in sysfs be? I would still
> > >>>>> tend towards /sys/power
> > >>>>
> > >>>> Question is whether anyone outside of ACPI will ever need the generic
> > >>>> interface. Making it generic based on guesswork could be a wasted effort
> > >>>> that Rafael and others will have to maintain. The mode file could go
> > >>>> under /sys/firmware/acpi if interface is made ACPI-specific.
> > >>>
> > >>> Well, experience shows that it may end up the other way around.
> > >>>
> > >>> People once thought that the platform profile interface would be
> > >>> ACPI-specific and we ended up having to extend it via
> > >>> platform_profile_class.
> > >>>
> > >>> I'm thinking that something similar may take place in this case.
> > >>> Platforms that don't use ACPI may also want to define platform
> > >>> triggers to somehow adjust platform settings and those may be
> > >>> different from "inactive" or "snooze".
> > >>>
> > >>
> > >> At which point you would almost wonder if this should be super general
> > >> like "foreground_workload_type".
> > >>
> > >> Then this could be expanded for other uses later such as full screen
> > >> video playback or full screen gaming.
> > >
> > > Mmm. This reminds me of AMD drm pp_power_profile_mode {BOOTUP_DEFAULT,
> > > 3D_FULL_SCREEN, POWER_SAVING, VIDEO, VR, COMPUTE, CUSTOM, WINDOW_3D,
> > > CAPPED, UNCAPPED}. I'm not sure anyone used it. I'd rather avoid the
> > > complexity.
> >
> > There are certainly people using it, but it's more common in embedded
> > applications than traditional desktop distros.
> >
> > It is not a perfect match to this concept, but definitely some parallels
> > can be drawn.
> >
> > There are general things that might make sense if you know what the
> > foreground workload is or the display is off.
>
> Hm, yeah I guess so. I could see this ABI being also useful for
> embedded devices to control their appearance. There's precedent with
> e.g., charging_behaviour having dozens of device specific values,
> where standard and longevity are the only ones used in laptops.
>
> > >
> > >> There could be hooks for scheduler too in the future from this hint too
> > >> then.
> > >
> > > Wouldn't it be better to defer to userspace? I'm not sure this would
> > > have a meaningful difference in any case.
> >
> > I don't know one way or the other. It would need to be prototyped to
> > see what it actually looked like. In the line of thinking Rafael
> > mentioned that platform profile was ACPI and grew to a class I would
> > generally just keep the design from pigeon holing too much on display
> > off. That's why I thought maybe foreground workload could potentially
> > work well.
>
> To go back to Rafael's suggestion of not using transitions for the
> ABI, it would be possible to push the transition logic down to the
> s2idle code and introduce a generic handler for it. SInce arbitrary
> transitions are possible under this spec, the top-level ABI
> implementation need not consider it.
>
> Since it is very similar to platform_profiles, it could also be
> potentially added there as activity_hint to the current
> platform_profiles implementation and mirror its conventions. This
> would avoid introducing new scaffolding.
>
> Then s2idle would register a platform profile handler without
> profiles, and instead only implement activity hint. Existing x86
> platform drivers could also trivially implement support for it as
> well. Although for WMI, the existing hooks for s2idle for Windows
> would handle most current drivers.
>
> An implementation for this would consist of two stages. First, the
> callbacks would be moved to the beginning so they can be tested
> independently. Then, platform_profile would be extended to support
> activity_hint with states {snooze, resuming, inactive, active}, and
> finally, s2idle would implement the handler with transition logic to
> make sure the callbacks get called correctly always, including when
> userspace ignores the file, where the full transition would occur in
> begin() and end().
>
> The legacy /sys/firmware/acpi/{activity_hint, activity_hint_choices}
> would mirror the current conventions, perhaps with a custom value as
> well.
>
> How does this approach sound?
Perhaps re-using platform_profiles is not wise, after all the
boilerplate would be small and bolting on new hooks would be around
the same amount of code. New implementation would be better. How would
that approach sound like.
> Antheas