• Colin Cross's avatar
    PM / Runtime: Add might_sleep() to runtime PM functions · 311aab73
    Colin Cross authored
    Some of the entry points to pm runtime are not safe to
    call in atomic context unless pm_runtime_irq_safe() has
    been called.  Inspecting the code, it is not immediately
    obvious that the functions sleep at all, as they run
    inside a spin_lock_irqsave, but under some conditions
    they can drop the lock and turn on irqs.
    
    If a driver incorrectly calls the pm_runtime apis, it can
    cause sleeping and irq processing when it expects to stay
    in atomic context.
    
    Add might_sleep_if to the majority of the __pm_runtime_* entry points
    to enforce correct usage.
    
    Add pm_runtime_put_sync_autosuspend to the list of
    functions that can be called in atomic context.
    Signed-off-by: default avatarColin Cross <ccross@android.com>
    Reviewed-by: default avatarKevin Hilman <khilman@ti.com>
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    311aab73
runtime.c 34.3 KB