From 3cfcc75e725ee165e92a2e3d28955dbe359fb1d7 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 25 Feb 2026 06:25:28 -0800 Subject: [PATCH] 6.18-stable patches added patches: drm-amd-display-add-an-hdmi_hpd_debounce_delay_ms-module.patch --- ...an-hdmi_hpd_debounce_delay_ms-module.patch | 107 ++++++++++++++++++ queue-6.18/series | 1 + 2 files changed, 108 insertions(+) create mode 100644 queue-6.18/drm-amd-display-add-an-hdmi_hpd_debounce_delay_ms-module.patch diff --git a/queue-6.18/drm-amd-display-add-an-hdmi_hpd_debounce_delay_ms-module.patch b/queue-6.18/drm-amd-display-add-an-hdmi_hpd_debounce_delay_ms-module.patch new file mode 100644 index 0000000000..2dc6d8c3dd --- /dev/null +++ b/queue-6.18/drm-amd-display-add-an-hdmi_hpd_debounce_delay_ms-module.patch @@ -0,0 +1,107 @@ +From 6a681cd9034587fe3550868bacfbd639d1c6891f Mon Sep 17 00:00:00 2001 +From: Ivan Lipski +Date: Tue, 13 Jan 2026 17:29:59 -0500 +Subject: drm/amd/display: Add an hdmi_hpd_debounce_delay_ms module + +From: Ivan Lipski + +commit 6a681cd9034587fe3550868bacfbd639d1c6891f upstream. + +[Why&How] +Right now, the HDMI HPD filter is enabled by default at 1500ms. + +We want to disable it by default, as most modern displays with HDMI do +not require it for DPMS mode. + +The HPD can instead be enabled as a driver parameter with a custom delay +value in ms (up to 5000ms). + +Fixes: c918e75e1ed9 ("drm/amd/display: Add an HPD filter for HDMI") +Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4859 +Signed-off-by: Ivan Lipski +Reviewed-by: Mario Limonciello (AMD) +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 ++ + drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 11 +++++++++++ + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 15 ++++++++++++--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h | 5 ++++- + 4 files changed, 29 insertions(+), 4 deletions(-) + +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h +@@ -274,6 +274,8 @@ extern int amdgpu_rebar; + extern int amdgpu_wbrf; + extern int amdgpu_user_queue; + ++extern uint amdgpu_hdmi_hpd_debounce_delay_ms; ++ + #define AMDGPU_VM_MAX_NUM_CTX 4096 + #define AMDGPU_SG_THRESHOLD (256*1024*1024) + #define AMDGPU_WAIT_IDLE_TIMEOUT_IN_MS 3000 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +@@ -246,6 +246,7 @@ int amdgpu_damage_clips = -1; /* auto */ + int amdgpu_umsch_mm_fwlog; + int amdgpu_rebar = -1; /* auto */ + int amdgpu_user_queue = -1; ++uint amdgpu_hdmi_hpd_debounce_delay_ms; + + DECLARE_DYNDBG_CLASSMAP(drm_debug_classes, DD_CLASS_TYPE_DISJOINT_BITS, 0, + "DRM_UT_CORE", +@@ -1128,6 +1129,16 @@ module_param_named(rebar, amdgpu_rebar, + MODULE_PARM_DESC(user_queue, "Enable user queues (-1 = auto (default), 0 = disable, 1 = enable, 2 = enable UQs and disable KQs)"); + module_param_named(user_queue, amdgpu_user_queue, int, 0444); + ++/* ++ * DOC: hdmi_hpd_debounce_delay_ms (uint) ++ * HDMI HPD disconnect debounce delay in milliseconds. ++ * ++ * Used to filter short disconnect->reconnect HPD toggles some HDMI sinks ++ * generate while entering/leaving power save. Set to 0 to disable by default. ++ */ ++MODULE_PARM_DESC(hdmi_hpd_debounce_delay_ms, "HDMI HPD disconnect debounce delay in milliseconds (0 to disable (by default), 1500 is common)"); ++module_param_named(hdmi_hpd_debounce_delay_ms, amdgpu_hdmi_hpd_debounce_delay_ms, uint, 0644); ++ + /* These devices are not supported by amdgpu. + * They are supported by the mach64, r128, radeon drivers + */ +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -8717,9 +8717,18 @@ void amdgpu_dm_connector_init_helper(str + mutex_init(&aconnector->hpd_lock); + mutex_init(&aconnector->handle_mst_msg_ready); + +- aconnector->hdmi_hpd_debounce_delay_ms = AMDGPU_DM_HDMI_HPD_DEBOUNCE_MS; +- INIT_DELAYED_WORK(&aconnector->hdmi_hpd_debounce_work, hdmi_hpd_debounce_work); +- aconnector->hdmi_prev_sink = NULL; ++ /* ++ * If HDMI HPD debounce delay is set, use the minimum between selected ++ * value and AMDGPU_DM_MAX_HDMI_HPD_DEBOUNCE_MS ++ */ ++ if (amdgpu_hdmi_hpd_debounce_delay_ms) { ++ aconnector->hdmi_hpd_debounce_delay_ms = min(amdgpu_hdmi_hpd_debounce_delay_ms, ++ AMDGPU_DM_MAX_HDMI_HPD_DEBOUNCE_MS); ++ INIT_DELAYED_WORK(&aconnector->hdmi_hpd_debounce_work, hdmi_hpd_debounce_work); ++ aconnector->hdmi_prev_sink = NULL; ++ } else { ++ aconnector->hdmi_hpd_debounce_delay_ms = 0; ++ } + + /* + * configure support HPD hot plug connector_>polled default value is 0 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.h +@@ -59,7 +59,10 @@ + + #define AMDGPU_HDR_MULT_DEFAULT (0x100000000LL) + +-#define AMDGPU_DM_HDMI_HPD_DEBOUNCE_MS 1500 ++/* ++ * Maximum HDMI HPD debounce delay in milliseconds ++ */ ++#define AMDGPU_DM_MAX_HDMI_HPD_DEBOUNCE_MS 5000 + /* + #include "include/amdgpu_dal_power_if.h" + #include "amdgpu_dm_irq.h" diff --git a/queue-6.18/series b/queue-6.18/series index aafe84a195..893d9ea88e 100644 --- a/queue-6.18/series +++ b/queue-6.18/series @@ -639,3 +639,4 @@ io_uring-rsrc-clean-up-buffer-cloning-arg-validation.patch selftests-bpf-test-bpf_skb_check_mtu-bpf_mtu_chk_segs-when-transport_header-is-not-set.patch drm-amd-display-clear-hdmi-hpd-pending-work-only-if-it-is-enabled.patch net-stmmac-dwmac-loongson-set-clk_csr_i-to-100-150mhz.patch +drm-amd-display-add-an-hdmi_hpd_debounce_delay_ms-module.patch -- 2.47.3