Re: [PATCH v3] PM / core: conditionally skip system pm in device/driver model

From: Rafael J. Wysocki
Date: Tue Feb 27 2024 - 06:29:00 EST


On Mon, Feb 26, 2024 at 10:45 AM Guan-Yu Lin <guanyulin@xxxxxxxxxx> wrote:
>
> On Sat, Feb 24, 2024 at 1:44 AM Rafael J. Wysocki <rafael@xxxxxxxxxx> wrote:
> >
> > On Fri, Feb 23, 2024 at 3:38 PM Guan-Yu Lin <guanyulin@xxxxxxxxxx> wrote:
> > >
> > > In systems with a main processor and a co-processor, asynchronous
> > > controller management can lead to conflicts. One example is the main
> > > processor attempting to suspend a device while the co-processor is
> > > actively using it. To address this, we introduce a new sysfs entry
> > > called "conditional_skip". This entry allows the system to selectively
> > > skip certain device power management state transitions. To use this
> > > feature, set the value in "conditional_skip" to indicate the type of
> > > state transition you want to avoid. Please review /Documentation/ABI/
> > > testing/sysfs-devices-power for more detailed information.
> > >
> > > Signed-off-by: Guan-Yu Lin <guanyulin@xxxxxxxxxx>
> >
> > Please explain how this is intended to work. That is, what exactly
> > you expect to happen when the new attribute is set.
>
> The sysfs entry 'conditional_skip' for a device indicates which power
> transitions (e.g. PM_EVENT_SUSPEND) are omitted within the system
> power management flow. During the processing of an identified power
> transition, the device's power.entry will not be added to the
> dpm_prepared_list, preventing the device from undergoing that
> transition. As 'conditional_skip' is modifiable at runtime, a device's
> participation in system power management can be dynamically enabled or
> disabled.

So this idea is completely misguided AFAICS.

First off, why would a device be skipped in system-wide suspend and
not in hibernation? Or the other way around? Or why would it be
skipped in one phase of hibernation and not in the other?

Second, but not less important, why is skipping a device in
system-wide transitions a good idea at all? What about dependencies
between that device and the other devices in the system?

Generally speaking, system-wide PM is designed to cover the entire
system and there are good reasons for that. If you don't want it to
cover the entire system, you cannot use it at all.