pm_runtime_put_autosuspend(9)
π pm_runtime_put_autosuspend(9) π
okay bestie, welcome to the Kernel API Manual β¨ this one's a function page, it lives at pm_runtime_put_autosuspend(9), and it's honestly so iconic β let's get into it π
β¨ NAME β¨
pm_runtime_put_autosuspend β updates the last access time of a device, drops its usage counter, and queues up an autosuspend if that usage counter hits 0. that's the whole vibe π
πΈ SYNOPSIS πΈ
int pm_runtime_put_autosuspend (struct device *dev );
π¦ ARGUMENTS π¦
devβ the target device, aka the main character of this whole operation π«Ά
π DESCRIPTION π
so here's what happens, no cap: it updates the last access time of dev, then decrements the runtime PM usage counter of dev. and if that counter turns out to be equal to 0, it queues up a work item for dev β same energy as what happens in pm_request_autosuspend. periodt π
β¨
π RETURN π
like, what does it give you back? so many options, let's go:
1β Success! the usage counter dropped to zero, but the device was already suspended (slay, she was ahead of you π).0β Success β¨ plain and simple.-EINVALβ Runtime PM error π.-EACCESβ Runtime PM is disabled π«.-EAGAINβ Runtime PM usage counter became non-zero, or a Runtime PM status change is ongoing π.-EBUSYβ Runtime PMchild_countis non-zero, the children are not letting her leave π.-EPERMβ Device PM QoS resume latency 0 π.-EINPROGRESSβ a suspend is already in progress, give her a minute π.-ENOSYSβCONFIG_PMis not enabled π§.
π₯ SEE ALSO π₯
okay this is the friend group, all of them, listed, no skips, iykyk:
Kernel file ./include/linux/pm_runtime.h π
pm_suspend_ignore_children(9), pm_runtime_get_noresume(9), pm_runtime_put_noidle(9), pm_runtime_suspended(9), pm_runtime_active(9), pm_runtime_status_suspended(9), pm_runtime_enabled(9), pm_runtime_blocked(9), pm_runtime_has_no_callbacks(9), pm_runtime_mark_last_busy(9), pm_runtime_is_irq_safe(9), pm_runtime_idle(9), pm_runtime_suspend(9), pm_runtime_autosuspend(9), pm_runtime_resume(9), pm_request_idle(9), pm_request_resume(9), pm_request_autosuspend(9), pm_runtime_get(9), pm_runtime_get_sync(9), pm_runtime_resume_and_get(9), pm_runtime_put(9), __pm_runtime_put_autosuspend(9), pm_runtime_put_sync(9), pm_runtime_put_sync_suspend(9), pm_runtime_put_sync_autosuspend(9), pm_runtime_set_active(9), pm_runtime_set_suspended(9), pm_runtime_disable(9), pm_runtime_use_autosuspend(9), pm_runtime_dont_use_autosuspend(9) π
and that's the page!! π«Ά mwah, go forth and manage your runtime PM responsibly. this lil gem comes from ./include/linux and it's dated October 2026 β bookmark pm_runtime_put_autosuspend(9) and come back whenever, bestie ππβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms