]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Feb 2026 14:25:28 +0000 (06:25 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 25 Feb 2026 14:25:28 +0000 (06:25 -0800)
added patches:
drm-amd-display-add-an-hdmi_hpd_debounce_delay_ms-module.patch

queue-6.18/drm-amd-display-add-an-hdmi_hpd_debounce_delay_ms-module.patch [new file with mode: 0644]
queue-6.18/series

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 (file)
index 0000000..2dc6d8c
--- /dev/null
@@ -0,0 +1,107 @@
+From 6a681cd9034587fe3550868bacfbd639d1c6891f Mon Sep 17 00:00:00 2001
+From: Ivan Lipski <ivan.lipski@amd.com>
+Date: Tue, 13 Jan 2026 17:29:59 -0500
+Subject: drm/amd/display: Add an hdmi_hpd_debounce_delay_ms module
+
+From: Ivan Lipski <ivan.lipski@amd.com>
+
+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 <ivan.lipski@amd.com>
+Reviewed-by: Mario Limonciello (AMD) <superm1@kernel.org>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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"
index aafe84a1956e164bc94979ba49774c2ce5aea4b5..893d9ea88ec8549d27a14f23cf5383b49f964e53 100644 (file)
@@ -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