dm_test_hdmi...detect_false(9)
π dm_test_hdmi...detect_false β the Kernel API Manual page, but make it make sense π
okay so bestie, this is a page straight out of the Kernel API Manual, and it's about one very specific little KUnit test. it's giving "tiny test, huge friend group" because the SEE ALSO section is honestly iconic levels of long. let's get into it π«Ά
β¨ NAME β¨
dm_test_hdmi_hpd_debounce_detect_false β the test that checks the debounce false detect path. that's it, that's the whole job, and it does it slayfully π
π¦ SYNOPSIS π¦
void dm_test_hdmi_hpd_debounce_detect_false (struct kunit *test );
so it returns void (no return value, no takebacks) and it takes exactly one thing. periodt.
πΈ ARGUMENTS πΈ
testβ the KUnit test context. that's the vibe check container for the test, literally the only thing this function wants from you π
π SEE ALSO π
first up, the literal source of truth β the Kernel file:
./drivers/gpu/drm/amd/display/amdgpu_dm/tests/amdgpu_dm_irq_test.c
and now, the moment you've all been waiting for: the entire extended cinematic universe of sibling tests. every single one of them, no cuts, no skips, we don't do that here ππ₯
the hpd β dal irq source girlies:
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)
are the sinks equal? a saga in ten parts:
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)
notification string lore:
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)
irq init / register / unregister / fini β the whole lifecycle bestie:
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)
crtc lookup + irq funcs + suspend/resume:
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)
hpd rx irq workqueue moment:
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)
set_*_irq_state (the no_crtc era + the enabled era):
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)
immediate work + schedule work:
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)
the null_dc checks (we love a defensive test):
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)
hpd init/fini + rx offload work:
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)
debounce + hpd irq helpers (our girl's direct neighbours π ):
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)
handle_hpd_rx_irq crew:
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)
dmub hpd callback (null inputs, invalid index, the whole mood):
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)
register_hpd_handlers:
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)
the high irq girlies:
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)
hpd work + dmub outbox1 low irq:
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)
register irq handlers per block (dce110 + dcn10, both iconic):
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)
and the final two, closing out the list like a season finale:
ngl bestie, if you read that whole list you're a real one. that's the entire test suite's friend group and you now know all their names π«Ά
and that's the page!! this little icon came from the Kernel API Manual β the source/version line points at ./drivers/gpu/drm/amd/display/... and it's dated October 2026. so yes, we're reading docs from the future, and honestly? that's very main character energy of us βπ
bye bestie, go run some KUnit tests π β¨
π¦ 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