dm_test_irq_...d_registered(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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