• Rafael J. Wysocki's avatar
    PM / Domains: Do not measure start time for "irq safe" devices · e2e3e4e5
    Rafael J. Wysocki authored
    The genpd_start_dev() routine used by pm_genpd_runtime_resume()
    to put "irq safe" devices into the full power state measures the
    time necessary to "start" the device and updates its PM QoS timing
    data if necessary.  This may lead to a deadlock if the given device
    is a clock source and genpd_start_dev() is invoked from within the
    clock source's .enable() routine, which will happen if that routine
    uses pm_runtime_get_sync(), for example, to ensure that the device
    is operational.
    
    For this reason, introduce a special routine analogous to
    genpd_start_dev(), called genpd_start_dev_no_timing(), that doesn't
    carry out the time measurement, and make pm_genpd_runtime_resume()
    use it instead of genpd_start_dev() to power up "irq safe" devices.
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    e2e3e4e5
domain.c 52.3 KB