Re: [PATCH v2] drm/amd/display: invalidate DP CEC state on s3 suspend

From: Mario Limonciello

Date: Tue Sep 15 2026 - 11:54:32 EST




On 9/14/26 21:27, Dan Himebauch wrote:
Amended and added issue link, thanks!

From 2916fc883b80cf106ba2b06d8dadbdae45eff7db Mon Sep 17 00:00:00 2001
From: Daniel Kurt Himebauch <danielhimebauch@xxxxxxxxx>
Date: Fri, 11 Sep 2026 21:11:10 -0400
Subject: [PATCH v2] drm/amd/display: invalidate DP CEC state on s3 suspend

Some Linux HTPCs with discrete GPUs use active DisplayPort-to-HDMI
adapters to carry CEC over DP AUX. This provides a CEC path on systems
where the GPU does not expose native HDMI CEC.

During S3 suspend, amdgpu invalidates native HDMI CEC state but leaves
the DP AUX CEC physical address valid. The adapter can retain stale CEC
state across suspend, causing transmissions during resume to fail before
the adapter is reconfigured.

For AUX-mode connectors, invalidate the DP AUX CEC physical address
during suspend. Normal connector detection on resume then reattaches the
adapter using the EDID-derived physical address.

Tested on a Radeon RX 9070 XT HTPC running SteamOS with a UGREEN
DP-to-HDMI adapter on amd-staging-drm-next at commit d8ab7636160e
("drm/amd/amdgpu: remove duplicated code in gfx_v11 and gfx_v12").
The unmodified tree reproduced resume NACKs. With this change, multiple
cycles showed Image View On and Active Source transmissions.

Link: https://gitlab.steamos.cloud/holo/linux-cec/-/issues/5
Assisted-by: Codex:GPT-5.6-Luna
Signed-off-by: Daniel Kurt Himebauch <danielhimebauch@xxxxxxxxx>

---
.../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
index 0b446133edd8..919394778a25 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
@@ -372,10 +372,13 @@ void amdgpu_dm_s3_handle_hdmi_cec(struct
drm_device *ddev, bool suspend)
continue;

aconnector = to_amdgpu_dm_connector(connector);
- if (suspend)
+ if (suspend) {
hdmi_cec_unset_edid(aconnector);
- else
+ if (aconnector->dc_link && aconnector->dc_link->aux_mode)
+ drm_dp_cec_unset_edid(&aconnector->dm_dp_aux.aux);
+ } else {
amdgpu_dm_hdmi_cec_set_edid(aconnector);
+ }
}
drm_connector_list_iter_end(&conn_iter);
}

Something is wrong with your whitespace. Can you send using git send-email perhaps?

╰─❯ b4 shazam https://lore.kernel.org/amd-gfx/CAJxfpZJDvFuz40a-euL0jRkPBR82M8Y5NxBrpABeP+EZScFxGw@xxxxxxxxxxxxxx/
Looking up https://lore.kernel.org/all/CAJxfpZJDvFuz40a-euL0jRkPBR82M8Y5NxBrpABeP%2BEZScFxGw@xxxxxxxxxxxxxx/
Grabbing thread from lore.kernel.org/all/CAJxfpZJDvFuz40a-euL0jRkPBR82M8Y5NxBrpABeP%2BEZScFxGw@xxxxxxxxxxxxxx/t.mbox.gz
Checking for newer revisions
Grabbing search results from lore.kernel.org
Analyzing 3 messages in the thread
Looking for additional code-review trailers on lore.kernel.org
Analyzing 0 code-review messages
Will use the latest revision: v2
You can pick other revisions using the -vN flag
Checking attestation on all messages, may take a moment...
---
✓ [PATCH v2] drm/amd/display: invalidate DP CEC state on s3 suspend
---
✓ Signed: DKIM/gmail.com
---
Total patches: 1
---
Applying: drm/amd/display: invalidate DP CEC state on s3 suspend
Patch failed at 0001 drm/amd/display: invalidate DP CEC state on s3 suspend
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
error: git diff header lacks filename information when removing 1 leading pathname component (line 6)
hint: Use 'git am --show-current-patch=diff' to see the failed patch

╰─❯ git am --show-current-patch=diff > patch
╰─❯ patch -p1 < patch
patching file drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
patch: **** malformed patch at line 11: drm_device *ddev, bool suspend)