dm_test_irq_...d_registered(9)
π dm_test_irq_suspend_registered(9) β from the Kernel API Manual π
okay so bestie, welcome to the Kernel API Manual, and today's main character is dm_test_irq_suspend_registered β¨ (the header up top is a little abbreviated as dm_test_irq_...d_registered(9), don't let that jump-scare you π«Ά).
πΈ NAME πΈ
dm_test_irq_suspend_registered β the test that literally checks suspend actually reaches the irq set path. no cap, that's the whole vibe check π₯
β¨ SYNOPSIS β¨
void dm_test_irq_suspend_registered (struct kunit *test );
π ARGUMENTS π
testβ the KUnit test context π that's it, that's the whole input, she's low maintenance.
π¦ DESCRIPTION π¦
okay so here's what she does: she registers a low-context HPD handler so that the handler list is non-empty β like, we are NOT letting that list sit there empty and unproblematic π. That's the setup, and the payoff is that it forces amdgpu_dm_irq_suspend to actually call amdgpu_dm_irq_set (which is NULL-safe with no DC, thank u for that π«Ά) and then flush_work on the registered handler.
so basically: register a handler β‘οΈ non-empty list β‘οΈ suspend has to do the real work β‘οΈ amdgpu_dm_irq_set gets called β‘οΈ flush_work flushes the handler. iconic behavior, honestly π
it's giving "i made sure the boring path actually runs" energy and we respect it π
π SEE ALSO π
Kernel file π
./drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_irq_test.c
and now the extended universe β brace yourself bestie, this is a long one π:
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_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_pre_ai(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)
like, yes, that's a LOT of siblings, but they're all family π
π real talk bestie: amdgpu_dm_irq_set only stays NULL-safe with no DC, so don't go assuming anything beyond what's written here, mwah π
okay and finally, the cute little sign-off π: this page lives under ./drivers/gpu/drm/amd/display/..., dated October 2026, and it's the dm_test_irq_...d_registered(9) page of the Kernel API Manual. that's a wrap, slay, go read the kernel source π
β¨π§
π¦ 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