dm_test_idl...ed_runs_body(9)
π
dm_test_idle_worker_enabled_runs_body β like, the whole enable-body path, tested
okay so bestie, welcome to the Kernel API Manual π β yes, that's the manual name, and yes, we're doing this. today's main character is dm_test_idle_worker_enabled_runs_body(9), and she's here to test one very specific thing. let's get into it β¨
πΈ NAME πΈ
dm_test_idle_worker_enabled_runs_body β literally tests the enable-body path. that's it, that's the job. π
π¦ SYNOPSIS π¦
void dm_test_idle_worker_enabled_runs_body (struct kunit *test );
β¨ ARGUMENTS β¨
testβ the KUnit test context π«Ά (she's the one holding the vibes, aka the test state)
π₯ DESCRIPTION π₯
okay so picture this: we've got a headless device, right? and because it's headless, that makes the second branch false β which means the worker goes ahead and runs the enable-body, no cap. and what even is the enable-body? it's dc_post_update_surfaces_to_stream + re-enable, together, as a little duo. π
then there's an injected hwss.apply_idle_power_optimizations callback β this is our little stage-manager π§ β and what it does is let dc_allow_idle_optimizations clear idle_optimizations_allowed on the disable half. so when the next loop iteration comes around, it breaks at the first branch and the worker just... stops. π iconic behaviour, honestly.
π SEE ALSO π
first up, the kernel file herself β she lives at:
./drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_crtc_test.c
and now the whole friend group, all of them, in order, fr fr:
dm_test_crtc_modeset_required_active_mode_changed(9)dm_test_crtc_modeset_required_active_active_changed(9)dm_test_crtc_modeset_required_active_connectors_changed(9)dm_test_crtc_modeset_required_inactive(9)dm_test_crtc_modeset_required_no_changes(9)dm_test_crtc_vrr_active_irq_variable(9)dm_test_crtc_vrr_active_irq_fixed(9)dm_test_crtc_vrr_active_irq_inactive(9)dm_test_crtc_vrr_active_irq_disabled(9)dm_test_crtc_vrr_active_irq_unsupported(9)dm_test_crtc_vrr_active_variable(9)dm_test_crtc_vrr_active_fixed(9)dm_test_crtc_vrr_active_inactive(9)dm_test_crtc_vrr_active_disabled(9)dm_test_crtc_vrr_active_unsupported(9)dm_test_crtc_is_headless_null_adev(9)dm_test_crtc_is_headless_no_connectors(9)dm_test_crtc_is_headless_writeback_only(9)dm_test_crtc_is_headless_disconnected_display(9)dm_test_crtc_is_headless_connected_display(9)dm_test_crtc_is_headless_mixed_connectors(9)dm_test_crtc_helper_mode_fixup_returns_true(9)dm_test_crtc_set_vupdate_irq_no_otg(9)dm_test_crtc_set_vupdate_irq_dc_busy(9)dm_test_crtc_set_vupdate_irq_enable(9)dm_test_idle_create_workqueue(9)dm_test_idle_worker_disabled_clears_running(9)dm_test_idle_worker_enabled_breaks_when_idle_disallowed(9)dm_test_idle_worker_enabled_breaks_when_not_headless(9)dm_test_crtc_set_static_screen_optimze_no_sr_entry(9)dm_test_crtc_set_static_screen_optimze_sr_entry_psr(9)dm_test_crtc_set_static_screen_optimze_psr_su_skips(9)dm_test_crtc_enable_vblank_rejects_unconfigured(9)dm_test_crtc_enable_vblank_full_path(9)dm_test_crtc_enable_vblank_vupdate_busy(9)dm_test_crtc_enable_vblank_crtc_irq_error(9)dm_test_crtc_enable_vblank_in_reset(9)dm_test_crtc_enable_vblank_queues_work(9)dm_test_crtc_enable_vblank_ips_restore(9)dm_test_crtc_enable_vblank_ips_restore_replay(9)dm_test_crtc_update_active_planes_no_stream(9)dm_test_count_crtc_active_planes_none(9)dm_test_count_crtc_active_planes_mixed(9)dm_test_crtc_duplicate_state_copies_fields(9)dm_test_crtc_reset_state_allocates_state(9)dm_test_crtc_destroy_state_no_stream(9)dm_test_crtc_destroy_state_releases_stream(9)dm_test_crtc_handle_vblank_no_event(9)dm_test_crtc_handle_vblank_skips_when_flip_submitted(9)dm_test_crtc_handle_vblank_completes_cursor_only(9)dm_test_vblank_control_worker_setup(9)dm_test_vblank_control_worker_enable_increments(9)dm_test_vblank_control_worker_disable_decrements(9)dm_test_vblank_control_worker_disable_clamps_zero(9)dm_test_crtc_disable_vblank_no_irq_installed(9)dm_test_crtc_disable_vblank_vrr(9)dm_test_crtc_disable_vblank_queues_work(9)
π reminder bestie: none of these are optional reading, they're all in the original SEE ALSO and they're all staying. iykyk.
and that's the page!! πΈπ¦ sign-off time: this lil cutie ships out of ./drivers/gpu/drm/amd/display/... and she's dated October 2026 β β love that for her. mwah, go read the kernel source, ily, bye π«Άπ
π¦ 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