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: Colin Cross <ccross@android.com> Reviewed-by: Kevin Hilman <khilman@ti.com> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> |
||
---|---|---|
.. | ||
regulator | ||
00-INDEX | ||
apm-acpi.txt | ||
basic-pm-debugging.txt | ||
devices.txt | ||
drivers-testing.txt | ||
freezing-of-tasks.txt | ||
interface.txt | ||
notifiers.txt | ||
opp.txt | ||
pci.txt | ||
pm_qos_interface.txt | ||
power_supply_class.txt | ||
runtime_pm.txt | ||
s2ram.txt | ||
states.txt | ||
swsusp-and-swap-files.txt | ||
swsusp-dmcrypt.txt | ||
swsusp.txt | ||
tricks.txt | ||
userland-swsusp.txt | ||
video_extension.txt | ||
video.txt |