Bug 210429

Summary: AMDGPU - DRM connector force-probe after DPMS causes monitor to reconnect
Product: Drivers Reporter: jordanleppert
Component: Video(DRI - non Intel)Assignee: drivers_video-dri
Status: RESOLVED ANSWERED    
Severity: normal CC: alexdeucher, chb, harry.wentland
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 5.4.80 Subsystem:
Regression: No Bisected commit-id:

Description jordanleppert 2020-11-30 17:50:28 UTC
This is with a Vega64 card, connected to two monitors via DisplayPort 1.2.

When the connector is force-probed with a call to drmModeGetConnector, this is causing the connection to the monitor to disconnect, and reconnect.

I'm seeing this issue using Wayland, specifically a wlroots based compositor. This patch to wlroots (which unfortunately needs to be reverted) stopped the problem happening: https://github.com/swaywm/wlroots/pull/2482/files
Comment 1 jordanleppert 2020-11-30 18:56:05 UTC
This is also a problem when using xorg-server, after monitors wake up from DPMS they reconnect (causing issues in whatever DE I'm using, such as all windows 
moving to one monitor).

If I can recreate the issue with a BASH command I'll post it, I've tried the below command but for some reason it doesn't reproduce the problem:

echo detect | sudo tee /sys/class/drm/card0-DP-1/status | sudo tee /sys/class/drm/card0-DP-2/status
Comment 2 jordanleppert 2020-12-22 17:16:42 UTC
Here are logs using Wayfire (a wlroots compositor), note the disconnect immediately after modesetting. The DPMS sleep happened at 15:46:45, and the wakeup at 15:46:54.

DD 22-12-20 15:46:45.685 - [backend/drm/drm.c:1075] Reallocating CRTCs
DD 22-12-20 15:46:45.686 - [backend/drm/drm.c:1086] State before reallocation:
DD 22-12-20 15:46:45.686 - [backend/drm/drm.c:1092]   'DP-1' crtc=0 state=3 desired_enabled=0
DD 22-12-20 15:46:45.686 - [backend/drm/drm.c:1092]   'DP-2' crtc=1 state=3 desired_enabled=1
DD 22-12-20 15:46:45.686 - [backend/drm/drm.c:1092]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:45.686 - [backend/drm/drm.c:1092]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:45.686 - [backend/drm/drm.c:1143] State after reallocation:
DD 22-12-20 15:46:45.686 - [backend/drm/drm.c:1150]   'DP-1' crtc=0 state=3 desired_enabled=0
DD 22-12-20 15:46:45.686 - [backend/drm/drm.c:1150]   'DP-2' crtc=1 state=3 desired_enabled=1
DD 22-12-20 15:46:45.686 - [backend/drm/drm.c:1150]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:45.686 - [backend/drm/drm.c:1150]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:45.719 - [backend/drm/drm.c:1075] Reallocating CRTCs
DD 22-12-20 15:46:45.719 - [backend/drm/drm.c:1086] State before reallocation:
DD 22-12-20 15:46:45.719 - [backend/drm/drm.c:1092]   'DP-1' crtc=0 state=3 desired_enabled=0
DD 22-12-20 15:46:45.719 - [backend/drm/drm.c:1092]   'DP-2' crtc=1 state=3 desired_enabled=0
DD 22-12-20 15:46:45.719 - [backend/drm/drm.c:1092]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:45.719 - [backend/drm/drm.c:1092]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:45.719 - [backend/drm/drm.c:1143] State after reallocation:
DD 22-12-20 15:46:45.719 - [backend/drm/drm.c:1150]   'DP-1' crtc=0 state=3 desired_enabled=0
DD 22-12-20 15:46:45.719 - [backend/drm/drm.c:1150]   'DP-2' crtc=1 state=3 desired_enabled=0
DD 22-12-20 15:46:45.719 - [backend/drm/drm.c:1150]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:45.719 - [backend/drm/drm.c:1150]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
II 22-12-20 15:46:54.467 - [backend/drm/drm.c:793] connector DP-1: Modesetting with '3840x2160@59997mHz'
DD 22-12-20 15:46:54.467 - [backend/drm/drm.c:679] connector DP-1: Initializing renderer
II 22-12-20 15:46:54.483 - [backend/drm/drm.c:793] connector DP-2: Modesetting with '3840x2160@59997mHz'
DD 22-12-20 15:46:54.483 - [backend/drm/drm.c:679] connector DP-2: Initializing renderer
II 22-12-20 15:46:56.808 - [backend/drm/drm.c:1219] Scanning DRM connectors on /dev/dri/card0
II 22-12-20 15:46:56.810 - [backend/drm/drm.c:1388] 'DP-2' disconnected
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1075] Reallocating CRTCs
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1086] State before reallocation:
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1092]   'DP-1' crtc=0 state=3 desired_enabled=1
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1092]   'DP-2' crtc=1 state=3 desired_enabled=0
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1092]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1092]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1143] State after reallocation:
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1150]   'DP-1' crtc=0 state=3 desired_enabled=1
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1150]   'DP-2' crtc=1 state=3 desired_enabled=0
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1150]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1150]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:56.907 - [backend/drm/drm.c:1049] connector DP-2: De-allocating CRTC 1
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1075] Reallocating CRTCs
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1086] State before reallocation:
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1092]   'DP-1' crtc=0 state=3 desired_enabled=1
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1092]   'DP-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1092]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1092]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1143] State after reallocation:
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1150]   'DP-1' crtc=0 state=3 desired_enabled=1
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1150]   'DP-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1150]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1150]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:56.908 - [backend/drm/drm.c:1442] No connector for CRTC 49
II 22-12-20 15:46:57.102 - [backend/drm/drm.c:1219] Scanning DRM connectors on /dev/dri/card0
II 22-12-20 15:46:57.102 - [backend/drm/drm.c:1388] 'DP-1' disconnected
DD 22-12-20 15:46:57.173 - [backend/drm/drm.c:1075] Reallocating CRTCs
DD 22-12-20 15:46:57.173 - [backend/drm/drm.c:1086] State before reallocation:
DD 22-12-20 15:46:57.173 - [backend/drm/drm.c:1092]   'DP-1' crtc=0 state=3 desired_enabled=0
DD 22-12-20 15:46:57.173 - [backend/drm/drm.c:1092]   'DP-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.173 - [backend/drm/drm.c:1092]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.173 - [backend/drm/drm.c:1092]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1143] State after reallocation:
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1150]   'DP-1' crtc=0 state=3 desired_enabled=0
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1150]   'DP-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1150]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1150]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1049] connector DP-1: De-allocating CRTC 0
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1075] Reallocating CRTCs
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1086] State before reallocation:
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1092]   'DP-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1092]   'DP-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1092]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.174 - [backend/drm/drm.c:1092]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.175 - [backend/drm/drm.c:1143] State after reallocation:
DD 22-12-20 15:46:57.175 - [backend/drm/drm.c:1150]   'DP-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.175 - [backend/drm/drm.c:1150]   'DP-2' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.175 - [backend/drm/drm.c:1150]   'HDMI-A-1' crtc=-1 state=0 desired_enabled=0
DD 22-12-20 15:46:57.175 - [backend/drm/drm.c:1150]   'HDMI-A-2' crtc=-1 state=0 desired_enabled=0
Comment 3 Artem S. Tashkinov 2023-09-27 12:57:32 UTC
Is this reproducible with 6.5.5 or 6.1.55?

If it is, please report here: https://gitlab.freedesktop.org/drm/amd/-/issues