XE POWER MANAGEMENT(9)
π Xe Power Management π
okay so bestie, this is Xe Power Management, section 9 of the Kernel API Manual, and it's literally the page for how Xe does power management. Xe PM implements the main routines for both system level suspend states and for the opportunistic runtime suspend states. no cap. β¨
System Level Suspend (S-States) β in general this is OS-initiated suspend driven by ACPI for achieving S0ix (a.k.a. S2idle, freeze), S3 (suspend to ram), and S4 (disk). The main functions here are xe_pm_suspend and xe_pm_resume; they are the main point for the suspend to and resume from these states. π€
PCI Device Suspend (D-States) β this is the opportunistic PCIe device low power state D3, controlled by the PCI subsystem and ACPI with the help from the runtime_pm infrastructure. PCI D3 is special and can mean D3hot, where Vcc power is on for keeping memory alive and quicker low latency resume, or D3Cold where Vcc power is off for better power savings. The Vcc control of PCI hierarchy can only be controlled at the PCI root port level, while the device driver can be behind multiple bridges/switches and paired with other devices. For this reason, the PCI subsystem cannot perform the transition towards D3Cold. The lowest runtime PM possible from the PCI subsystem is D3hot. Then, if all these paired devices in the same root port are in D3hot, ACPI will assist here and run its own methods (_PR3 and _OFF) to perform the transition from D3hot to D3cold. Xe may disallow this transition by calling pci_d3cold_disable(root_pdev) before going to runtime suspend. It will be based on runtime conditions such as VRAM usage for a quick and low latency resume for instance. ππ
Runtime PM β this infrastructure provided by the Linux kernel allows the device drivers to indicate when they can be runtime suspended, so the device could be put at D3 (if supported), or allow deeper package sleep states (PC-states), and/or other low level power states. The Xe PM component provides xe_pm_runtime_suspend and xe_pm_runtime_resume functions that the PCI subsystem will call before transition to/from runtime suspend. β‘οΈ
Also, Xe PM provides get and put functions that the Xe driver will use to indicate activity. In order to avoid locking complications with the memory management, whenever possible, these get and put functions need to be called from the higher/outer levels. The main cases that need to be protected from the outer levels are: IOCTL, sysfs, debugfs, dma-buf sharing, and GPU execution. π
This component is not responsible for GT idleness (RC6) nor GT frequency management (RPS). not me checking the wrong thing for that π
π SEE ALSO π
Kernel file: ./drivers/gpu/drm/xe/xe_pm.c β yes, the source is right there, bestie. π
Then all the references, in their exact glory:
xe_pm_might_block_on_suspend(9), xe_pm_block_on_suspend(9), xe_rpm_reclaim_safe(9), xe_pm_suspend(9), xe_pm_resume(9), xe_pm_init_early(9), xe_pm_probe(9), xe_pm_init(9), xe_pm_fini(9), xe_pm_runtime_suspended(9), xe_pm_runtime_suspend(9), xe_pm_runtime_resume(9), xe_pm_runtime_get(9), xe_pm_runtime_put(9), xe_pm_runtime_get_ioctl(9), xe_pm_runtime_get_if_active(9), xe_pm_runtime_get_if_in_use(9), xe_pm_runtime_get_noresume(9), xe_pm_runtime_resume_and_get(9), xe_pm_assert_unbounded_bridge(9), xe_pm_set_vram_threshold(9), xe_pm_d3cold_allowed_toggle(9), xe_pm_module_init(9).
made with π from the source/version ./drivers/gpu/drm/xe and the page Xe Power Management(9), dated October 2026 β byeee, periodt. ππ¦
π¦ 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