dm_test_vbl..._clamps_zero(9)
π dm_test_vblank_control_worker_disable_clamps_zero(9) π
okay so this little icon is from the Kernel API Manual, and it's here to explain one very specific vblank test: dm_test_vblank_control_worker_disable_clamps_zero. It's the "test disable clamps at zero" test, and yes, the name is a whole mouthful. slay. π
πΈ NAME πΈ
dm_test_vblank_control_worker_disable_clamps_zero β literally the test for disabling when the active vblank IRQ count is already zero, making sure it clamps at zero. No cap, that's the whole vibe. β¨
β¨ SYNOPSIS β¨
void dm_test_vblank_control_worker_disable_clamps_zero (struct kunit *test );
π ARGUMENTS π
testβ the KUnit test context. That's it, bestie; that's the whole argument. π«Ά
π DESCRIPTION π
okay so picture this: the active vblank IRQ count is already at zero, and then the disable path happens. This test is here to make sure disabling does not underflow. The count has to clamp at zero. It must not dip below zero. periodt. π
π SEE ALSO π
the kernel file is right here: ./drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_crtc_test.c
and bestie, the whole test family is in the group chat:
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_idle_worker_enabled_runs_body(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_crtc_disable_vblank_no_irq_installed(9)dm_test_crtc_disable_vblank_vrr(9)dm_test_crtc_disable_vblank_queues_work(9)
ngl, the tiny detail that matters: the active vblank IRQ count is already zero here, and disable has to clamp at zero instead of underflowing. that's the whole test. π¦
mwah π β cute little footer tea: source/version ./drivers/gpu/drm/amd/display/..., dated October 2026, and yes, this is dm_test_vbl..._clamps_zero(9) all day. π
π¦ 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