dm_test_crtc...q_vrr_pre_ai(9)
π dm_test_crtc_high_irq_vrr_pre_ai β from the Kernel API Manual, bestie
okay so this is a page out of the Kernel API Manual and it's about one (1) very specific KUnit test. yes it's niche. no we're not skipping it. let's go π
β¨ NAME β¨
dm_test_crtc_high_irq_vrr_pre_ai β the test that checks the CRTC high IRQ VRR path on pre-AI ASIC. that's literally it, that's the whole vibe. π«
πΈ SYNOPSIS πΈ
void dm_test_crtc_high_irq_vrr_pre_ai (struct kunit *test );
(it's void, it takes one arg, and yes that space before the closing paren is canon, don't touch it π«Ά)
π¦ ARGUMENTS π¦
testβ the KUnit test context. that's the whole parameter list. one (1) bestie. iconic behavior honestly.
π DESCRIPTION π
so here's the setup: give this thing a matching CRTC, no writeback, and VRR active β which, and this matters, means the !vrr_active vblank handler gets skipped entirely, no cap β and then throw in a pre-AI family. with all of that in place, the handler runs straight through the CRC handling and then dips out and returns before it ever reaches the freesync section. πββοΈπ¨
like, it literally never gets to freesync. that's the test. that's the point. slay.
π₯ SEE ALSO π₯
the kernel file this lives in, for the curious:
./drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_irq_test.c
and now the full squad of sibling tests β every single one, we're not leaving anyone out, this is a group chat and everyone's in it π:
dm_test_hpd_to_dal_irq_source_hpd1(9)dm_test_hpd_to_dal_irq_source_hpd2(9)dm_test_hpd_to_dal_irq_source_hpd3(9)dm_test_hpd_to_dal_irq_source_hpd4(9)dm_test_hpd_to_dal_irq_source_hpd5(9)dm_test_hpd_to_dal_irq_source_hpd6(9)dm_test_hpd_to_dal_irq_source_invalid(9)dm_test_hpd_to_dal_irq_source_out_of_range(9)dm_test_are_sinks_equal_both_null(9)dm_test_are_sinks_equal_first_null(9)dm_test_are_sinks_equal_second_null(9)dm_test_are_sinks_equal_different_signal(9)dm_test_are_sinks_equal_different_edid_length(9)dm_test_are_sinks_equal_different_edid_data(9)dm_test_are_sinks_equal_identical(9)dm_test_are_sinks_equal_zero_length(9)dm_test_are_sinks_equal_full_edid_identical(9)dm_test_are_sinks_equal_full_edid_last_byte_differs(9)dm_test_notification_str_no_data(9)dm_test_notification_str_aux_reply(9)dm_test_notification_str_hpd(9)dm_test_notification_str_hpd_irq(9)dm_test_notification_str_set_config(9)dm_test_notification_str_dpia(9)dm_test_notification_str_hpd_sense(9)dm_test_notification_str_fused_io(9)dm_test_notification_str_unknown(9)dm_test_irq_init_initializes_lists(9)dm_test_irq_register_rejects_null_params(9)dm_test_irq_register_rejects_invalid_context(9)dm_test_irq_register_rejects_invalid_source(9)dm_test_irq_register_adds_low_context_handler(9)dm_test_irq_register_adds_high_context_handler(9)dm_test_irq_register_multiple_handlers(9)dm_test_irq_register_separate_contexts(9)dm_test_irq_unregister_rejects_invalid_source(9)dm_test_irq_unregister_rejects_null_handler(9)dm_test_irq_unregister_handler_not_found(9)dm_test_irq_fini_removes_registered_handlers(9)dm_test_irq_fini_on_empty_tables(9)dm_test_get_crtc_by_otg_inst_returns_match(9)dm_test_get_crtc_by_otg_inst_returns_null(9)dm_test_get_crtc_by_otg_inst_empty_list(9)dm_test_set_irq_funcs(9)dm_test_irq_suspend_empty(9)dm_test_irq_resume_early_empty(9)dm_test_irq_resume_late_empty(9)dm_test_irq_suspend_registered(9)dm_test_irq_suspend_disables_polling(9)dm_test_irq_resume_early_registered(9)dm_test_irq_resume_late_registered(9)dm_test_irq_resume_late_enables_polling(9)dm_test_hpd_rx_irq_create_workqueue(9)dm_test_hpd_rx_irq_work_suspend_null(9)dm_test_hpd_rx_irq_work_suspend_flushes(9)dm_test_set_crtc_irq_state_no_crtc(9)dm_test_set_pflip_irq_state_no_crtc(9)dm_test_set_vline0_irq_state_no_crtc(9)dm_test_set_vupdate_irq_state_no_crtc(9)dm_test_set_crtc_irq_state_otg_disabled(9)dm_test_set_crtc_irq_state_enable(9)dm_test_set_pflip_irq_state_disable(9)dm_test_set_vline0_irq_state_enable(9)dm_test_set_vupdate_irq_state_enable(9)dm_test_set_crtc_irq_state_allows_idle(9)dm_test_irq_immediate_work_empty(9)dm_test_irq_immediate_work_invokes_handler(9)dm_test_irq_immediate_work_invokes_all(9)dm_test_irq_schedule_work_empty(9)dm_test_irq_schedule_work_queues_handler(9)dm_test_irq_schedule_work_requeue_fallback(9)dm_test_set_hpd_irq_state_null_dc(9)dm_test_set_dmub_outbox_irq_state_null_dc(9)dm_test_set_dmub_trace_irq_state_null_dc(9)dm_test_outbox_init_null_dc(9)dm_test_hpd_init_empty_connectors(9)dm_test_hpd_fini_empty_connectors(9)dm_test_hpd_init_fini_with_connectors(9)dm_test_hpd_init_fini_analog_connector(9)dm_test_hpd_init_fini_irq_ref(9)dm_test_hpd_rx_offload_work_no_connector(9)dm_test_hpd_rx_offload_work_no_connection(9)dm_test_hpd_rx_offload_work_automated_test(9)dm_test_hpd_rx_offload_work_link_loss(9)dm_test_hdmi_hpd_debounce_detect_false(9)dm_test_hdmi_hpd_debounce_reallow_idle(9)dm_test_handle_hpd_irq_disabled(9)dm_test_handle_hpd_irq_helper_debounce_schedule(9)dm_test_handle_hpd_irq_helper_debounce_release_prev(9)dm_test_handle_hpd_irq_helper_detect_false(9)dm_test_handle_hpd_rx_irq_disabled(9)dm_test_schedule_hpd_rx_offload_work(9)dm_test_handle_hpd_rx_irq_no_left_work(9)dm_test_handle_hpd_rx_irq_automated_test(9)dm_test_handle_hpd_rx_irq_msg_rdy(9)dm_test_handle_hpd_rx_irq_link_loss(9)dm_test_dmub_hpd_callback_null_inputs(9)dm_test_dmub_hpd_callback_invalid_index(9)dm_test_dmub_hpd_callback_empty_connectors(9)dm_test_dmub_hpd_callback_unknown_type_match(9)dm_test_dmub_hpd_callback_hpd_type(9)dm_test_dmub_hpd_callback_hpd_irq_type(9)dm_test_register_hpd_handlers_empty(9)dm_test_register_hpd_handlers_valid(9)dm_test_register_hpd_handlers_invalid_hpd(9)dm_test_register_hpd_handlers_invalid_hpd_rx(9)dm_test_register_hpd_handlers_dmub_outbox(9)dm_test_pflip_high_irq_no_crtc(9)dm_test_pflip_high_irq_not_submitted(9)dm_test_vupdate_high_irq_no_crtc(9)dm_test_crtc_high_irq_no_crtc(9)dm_test_crtc_high_irq_vrr_ai_no_stream(9)dm_test_handle_hpd_work_out_of_range(9)dm_test_dmub_outbox1_low_irq_empty(9)dm_test_dmub_outbox1_low_irq_no_handler(9)dm_test_dmub_outbox1_low_irq_direct_callback(9)dm_test_dmub_outbox1_low_irq_offload(9)dm_test_dce110_register_irq_handlers_rejects_uninitialized_sources(9)dm_test_dce110_register_irq_handlers_one_crtc(9)dm_test_dcn10_register_irq_handlers_zero_crtc(9)dm_test_dcn10_register_irq_handlers_one_crtc(9)dm_test_register_outbox_irq_handlers_without_dmub(9)dm_test_register_outbox_irq_handlers_with_dmub(9)dm_test_irq_handler_dispatches_work(9)dm_test_handle_vmin_vmax_update(9)
π§ sign-off π§
and that's the whole page, bestie. π it shipped out of the source tree at ./drivers/gpu/drm/amd/display/... and the date on this one is October 2026 β so yeah, we're reading from the future, and it's lowkey giving time traveler energy. β see you in the next one! πβ¨
π¦ 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