On this page
Suspend and Resume
Coverage: suspend-to-RAM (S3) → suspend-to-disk (S4/hibernate) → freeze (suspend-to-idle) → runtime PM → ACPI S-states → driver PM callbacks → debugging Kernel versions: 2.6 ~ 6.x
System Suspend States
suspend-to-idle (freeze / s2idle):
Freeze user processes + devices enter low-power state + CPU idle
→ Power consumption: medium, Resume: fastest (~100ms)
→ Dependency: all devices and CPUs have good runtime PM support
suspend-to-RAM (S3 / deep):
RAM self-refresh, CPU and most devices powered off
→ Power consumption: low (~1W), Resume: ~1-2 seconds
→ BIOS/UEFI ACPI S3 support
suspend-to-disk (S4 / hibernate):
All RAM contents written to swap or file, full system power off
→ Power consumption: 0W, Resume: ~10-30 seconds (depends on RAM size and disk speed)
→ Kernel resume: read swap image back to RAM → resume execution
Suspend-to-RAM Detailed Flow
Hibernate (Suspend-to-Disk)
Runtime PM: Device-level Power Management
// drivers/base/power/runtime.c
// Each device can be independently suspended/resumed (does not affect other devices and processes)
// Automatic suspend conditions:
// - Device idle for more than autosuspend_delay_ms
// - No references (pm_runtime_get/put)
// - Driver supports runtime_suspend/runtime_resume
// PCIe: runtime D3hot (powered off but PCIe link maintained)
// USB: selective suspend (suspend individual USB devices)
Debugging
# Supported suspend states
# Suspend/resume tracing
|
# Which device is blocking suspend
|
# Analyze suspend/resume latency
References
- Source code:
kernel/power/suspend.c,kernel/power/hibernate.c,drivers/base/power/,drivers/acpi/sleep.c - Kernel documentation:
Documentation/admin-guide/pm/sleep-states.rst,Documentation/power/runtime_pm.rst
Keywords: suspend, hibernate, freeze, s2idle, S3, S4, runtime PM, pm_wakeup, ACPI