drm_atomic_helper_suspend(9)
π drm_atomic_helper_suspend β the subsystem-level suspend helper (yes it's from the Kernel API Manual, we stan)
okay so bestie, settle in, because this one is genuinely iconic for anyone writing DRM drivers π
πΈ SYNOPSIS πΈ
struct drm_atomic_commit * drm_atomic_helper_suspend (struct drm_device *dev );
β¨ ARGUMENTS β¨
devβ your DRM device. that's it, that's the whole argument π«Ά
π DESCRIPTION π
So here's the vibe: this helper duplicates the current atomic state, disables all active outputs, and then hands a pointer to the original atomic state right back to you. the way it works is β drivers can pass that pointer to the drm_atomic_helper_resume helper when they wake back up, and boom, the output configuration that was live at the moment the system went into suspend gets restored. slay π
β οΈ heads up, and I mean this fr fr: it is potentially unsafe to use this. the atomic state object returned by this function is assumed to be persistent, and drivers must ensure that this holds true. also, before calling this function, drivers must make sure to suspend fbdev emulation so that nothing can be using the device. like, nothing. nobody. no cap. π
See also: drm_atomic_helper_duplicate_state, drm_atomic_helper_disable_all, drm_atomic_helper_resume, drm_atomic_helper_commit_duplicated_state
π₯ RETURN π₯
A pointer to a copy of the state from before suspend on success, or an ERR_PTR-encoded error code on failure. drivers should store the returned atomic state object and pass it to the drm_atomic_helper_resume helper upon resume. lowkey the whole point π§
π SEE ALSO π
the full friend group, in order, no skipping:
- Kernel file
./drivers/gpu/drm/drm_atomic_helper.c overview(9)drm_atomic_helper_check_modeset(9)drm_atomic_helper_check_wb_connector_state(9)drm_atomic_helper_check_plane_state(9)drm_atomic_helper_check_crtc_primary_plane(9)drm_atomic_helper_check_planes(9)drm_atomic_helper_check(9)drm_atomic_helper_commit_encoder_bridge_disable(9)drm_atomic_helper_commit_crtc_disable(9)drm_atomic_helper_commit_encoder_bridge_post_disable(9)drm_atomic_helper_update_legacy_modeset_state(9)drm_atomic_helper_calc_timestamping_constants(9)drm_atomic_helper_commit_crtc_set_mode(9)drm_atomic_helper_commit_modeset_disables(9)drm_atomic_helper_commit_writebacks(9)drm_atomic_helper_commit_encoder_bridge_pre_enable(9)drm_atomic_helper_commit_crtc_enable(9)drm_atomic_helper_commit_encoder_bridge_enable(9)drm_atomic_helper_commit_modeset_enables(9)drm_atomic_helper_wait_for_fences(9)drm_atomic_helper_wait_for_vblanks(9)drm_atomic_helper_wait_for_flip_done(9)drm_atomic_helper_commit_tail(9)drm_atomic_helper_commit_tail_rpm(9)drm_atomic_helper_async_check(9)drm_atomic_helper_async_commit(9)drm_atomic_helper_commit(9)implementing nonblocking commit(9)drm_atomic_helper_setup_commit(9)drm_atomic_helper_wait_for_dependencies(9)drm_atomic_helper_fake_vblank(9)drm_atomic_helper_commit_hw_done(9)drm_atomic_helper_commit_cleanup_done(9)drm_atomic_helper_prepare_planes(9)drm_atomic_helper_unprepare_planes(9)drm_atomic_helper_commit_planes(9)drm_atomic_helper_commit_planes_on_crtc(9)drm_atomic_helper_disable_planes_on_crtc(9)drm_atomic_helper_cleanup_planes(9)drm_atomic_helper_swap_state(9)drm_atomic_helper_update_plane(9)drm_atomic_helper_disable_plane(9)drm_atomic_helper_set_config(9)drm_atomic_helper_disable_all(9)drm_atomic_helper_reset_crtc(9)drm_atomic_helper_shutdown(9)drm_atomic_helper_duplicate_state(9)drm_atomic_helper_commit_duplicated_state(9)drm_atomic_helper_resume(9)drm_atomic_helper_page_flip(9)drm_atomic_helper_page_flip_target(9)drm_atomic_helper_bridge_propagate_bus_fmt(9)drm_atomic_helper_bridge_get_hdmi_output_bus_fmts(9)
π¦ mwah, that's the whole page. it lives over in ./drivers/gpu/drm and this particular glow-up is dated October 2026 β take care of her, she's iconic πβ¨
π¦ 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