• R
    PM / Domains: Preliminary support for devices with power.irq_safe set · 0aa2a221
    Rafael J. Wysocki 提交于
    The generic PM domains framework currently doesn't work with devices
    whose power.irq_safe flag is set, because runtime PM callbacks for
    such devices are run with interrupts disabled and the callbacks
    provided by the generic PM domains framework use domain mutexes
    and may sleep.  However, such devices very well may belong to
    power domains on some systems, so the generic PM domains framework
    should take them into account.
    
    For this reason, modify the generic PM domains framework so that the
    domain .power_off() and .power_on() callbacks are never executed for
    a domain containing devices with power.irq_safe set, although the
    .stop_device() and .start_device() callbacks are still run for them.
    
    Additionally, introduce a flag allowing the creator of a
    struct generic_pm_domain object to indicate that its .stop_device()
    and .start_device() callbacks may be run in interrupt context
    (might_sleep_if() triggers if that flag is not set and one of those
    callbacks is run in interrupt context).
    Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
    0aa2a221
domain.c 32.8 KB