Bug 107333

Summary: Display Not Detected If Powered Off When amdgpu.dc=1
Product: DRI Reporter: Benjamin Hodgetts <ben>
Component: DRM/AMDgpuAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED MOVED QA Contact:
Severity: normal    
Priority: medium CC: dark_sylinc, nicholas.kazlauskas
Version: XOrg git   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:

Description Benjamin Hodgetts 2018-07-23 12:22:08 UTC
Versions: Kernel 4.17.8, LLVM 6.0.1, Mesa 18.1.4, XOrg 1.20.0.
Distro: Arch.

Connected display devices should be detected even if they are powered off, as long as they're still physically connected obviously.

This works fine when using amdgpu.dc=0 but if the kernel is booted with amdgpu.dc=1 then the display device simply isn't seen (at all) if it's powered off. It does get detected immediately when powered on, but power it back off again and it completely disappears as though it's not even connected anymore.


Kernel DRM output with dc=1 (default):
	[drm] amdgpu kernel modesetting enabled.
	fb: switching to amdgpudrmfb from EFI VGA
	[drm] initializing kernel modesetting (POLARIS10 0x1002:0x67DF 0x1DA2:0xE366 0xE7).
	[drm] register mmio base: 0xDC200000
	[drm] register mmio size: 262144
	[drm] probing gen 2 caps for device 8086:1901 = 261ad03/e
	[drm] probing mlw for device 8086:1901 = 261ad03
	[drm] add ip block number 0 <vi_common>
	[drm] add ip block number 1 <gmc_v8_0>
	[drm] add ip block number 2 <tonga_ih>
	[drm] add ip block number 3 <powerplay>
	[drm] add ip block number 4 <dm>
	[drm] add ip block number 5 <gfx_v8_0>
	[drm] add ip block number 6 <sdma_v3_0>
	[drm] add ip block number 7 <uvd_v6_0>
	[drm] add ip block number 8 <vce_v3_0>
	[drm] UVD is enabled in VM mode
	[drm] UVD ENC is enabled in VM mode
	[drm] VCE enabled in VM mode
	[drm] vm size is 64 GB, 2 levels, block size is 10-bit, fragment size is 9-bit
	[drm] Detected VRAM RAM=8192M, BAR=8192M
	[drm] RAM width 256bits GDDR5
	[drm] amdgpu: 8192M of VRAM memory ready
	[drm] amdgpu: 8192M of GTT memory ready.
	[drm] GART: num cpu pages 65536, num gpu pages 65536
	[drm] PCIE GART of 256M enabled (table at 0x000000F400040000).
	[drm] Chained IB support enabled!
	[drm] Found UVD firmware Version: 1.130 Family ID: 16
	[drm] Found VCE firmware Version: 53.26 Binary ID: 3
	[drm] DM_PPLIB: values for Engine clock
	[drm] DM_PPLIB:	 30000
	[drm] DM_PPLIB:	 75100
	[drm] DM_PPLIB:	 104800
	[drm] DM_PPLIB:	 115800
	[drm] DM_PPLIB:	 124000
	[drm] DM_PPLIB:	 130900
	[drm] DM_PPLIB:	 136400
	[drm] DM_PPLIB:	 143000
	[drm] DM_PPLIB: Validation clocks:
	[drm] DM_PPLIB:    engine_max_clock: 143000
	[drm] DM_PPLIB:    memory_max_clock: 210000
	[drm] DM_PPLIB:    level           : 0
	[drm] DM_PPLIB: values for Memory clock
	[drm] DM_PPLIB:	 30000
	[drm] DM_PPLIB:	 100000
	[drm] DM_PPLIB:	 210000
	[drm] DM_PPLIB: Validation clocks:
	[drm] DM_PPLIB:    engine_max_clock: 143000
	[drm] DM_PPLIB:    memory_max_clock: 210000
	[drm] DM_PPLIB:    level           : 0
	[drm] Display Core initialized with v3.1.38!
	[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
	[drm] Driver supports precise vblank timestamp query.
	[drm] UVD and UVD ENC initialized successfully.
	[drm] VCE initialized successfully.
	[drm] Unsupported device. GVT-g is disabled
	[drm] Replacing VGA console driver
	[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
	[drm] Driver supports precise vblank timestamp query.
	[drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
	[drm] Cannot find any crtc or sizes
	[drm] Initialized amdgpu 3.25.0 20150101 for 0000:01:00.0 on minor 0
	[drm] Initialized i915 1.6.0 20180308 for 0000:00:02.0 on minor 1
	[drm] Cannot find any crtc or sizes
	[drm] Cannot find any crtc or sizes
	[drm] Cannot find any crtc or sizes


Kernel DRM output with dc=0:
	[drm] amdgpu kernel modesetting enabled.
	fb: switching to amdgpudrmfb from EFI VGA
	[drm] initializing kernel modesetting (POLARIS10 0x1002:0x67DF 0x1DA2:0xE366 0xE7).
	[drm] register mmio base: 0xDC200000
	[drm] register mmio size: 262144
	[drm] probing gen 2 caps for device 8086:1901 = 261ad03/e
	[drm] probing mlw for device 8086:1901 = 261ad03
	[drm] add ip block number 0 <vi_common>
	[drm] add ip block number 1 <gmc_v8_0>
	[drm] add ip block number 2 <tonga_ih>
	[drm] add ip block number 3 <powerplay>
	[drm] add ip block number 4 <dce_v11_0>
	[drm] add ip block number 5 <gfx_v8_0>
	[drm] add ip block number 6 <sdma_v3_0>
	[drm] add ip block number 7 <uvd_v6_0>
	[drm] add ip block number 8 <vce_v3_0>
	[drm] UVD is enabled in VM mode
	[drm] UVD ENC is enabled in VM mode
	[drm] VCE enabled in VM mode
	[drm] vm size is 64 GB, 2 levels, block size is 10-bit, fragment size is 9-bit
	[drm] Detected VRAM RAM=8192M, BAR=8192M
	[drm] RAM width 256bits GDDR5
	[drm] amdgpu: 8192M of VRAM memory ready
	[drm] amdgpu: 8192M of GTT memory ready.
	[drm] GART: num cpu pages 65536, num gpu pages 65536
	[drm] PCIE GART of 256M enabled (table at 0x000000F400040000).
	[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
	[drm] Driver supports precise vblank timestamp query.
	[drm] AMDGPU Display Connectors
	[drm] Connector 0:
	[drm]   DP-1
	[drm]   HPD6
	[drm]   DDC: 0x4868 0x4868 0x4869 0x4869 0x486a 0x486a 0x486b 0x486b
	[drm]   Encoders:
	[drm]     DFP1: INTERNAL_UNIPHY2
	[drm] Connector 1:
	[drm]   DP-2
	[drm]   HPD4
	[drm]   DDC: 0x4870 0x4870 0x4871 0x4871 0x4872 0x4872 0x4873 0x4873
	[drm]   Encoders:
	[drm]     DFP2: INTERNAL_UNIPHY2
	[drm] Connector 2:
	[drm]   HDMI-A-1
	[drm]   HPD1
	[drm]   DDC: 0x486c 0x486c 0x486d 0x486d 0x486e 0x486e 0x486f 0x486f
	[drm]   Encoders:
	[drm]     DFP3: INTERNAL_UNIPHY1
	[drm] Connector 3:
	[drm]   HDMI-A-2
	[drm]   HPD5
	[drm]   DDC: 0x4874 0x4874 0x4875 0x4875 0x4876 0x4876 0x4877 0x4877
	[drm]   Encoders:
	[drm]     DFP4: INTERNAL_UNIPHY1
	[drm] Connector 4:
	[drm]   DVI-D-1
	[drm]   HPD3
	[drm]   DDC: 0x487c 0x487c 0x487d 0x487d 0x487e 0x487e 0x487f 0x487f
	[drm]   Encoders:
	[drm]     DFP5: INTERNAL_UNIPHY
	[drm] Chained IB support enabled!
	[drm] Found UVD firmware Version: 1.130 Family ID: 16
	[drm] Found VCE firmware Version: 53.26 Binary ID: 3
	[drm] UVD and UVD ENC initialized successfully.
	[drm] VCE initialized successfully.
	[drm] Replacing VGA console driver
	[drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
	[drm] Driver supports precise vblank timestamp query.
	[drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
	[drm] fb mappable at 0x2000568000
	[drm] vram apper at 0x2000000000
	[drm] size 8294400
	[drm] fb depth is 24
	[drm]    pitch is 7680
	fbcon: amdgpudrmfb (fb0) is primary device
	amdgpu 0000:01:00.0: fb0: amdgpudrmfb frame buffer device
	[drm] Initialized amdgpu 3.25.0 20150101 for 0000:01:00.0 on minor 0
	[drm] Initialized i915 1.6.0 20180308 for 0000:00:02.0 on minor 1
	[drm] Cannot find any crtc or sizes
	[drm] Cannot find any crtc or sizes
	[drm] Cannot find any crtc or sizes


And the resulting xrandr outputs:

dc=1 (default)
	Screen 0: minimum 320 x 200, current 1024 x 768, maximum 16384 x 16384
	DisplayPort-0 disconnected primary (normal left inverted right x axis y axis)
	DisplayPort-1 disconnected (normal left inverted right x axis y axis)
	HDMI-A-0 disconnected (normal left inverted right x axis y axis)
	HDMI-A-1 disconnected (normal left inverted right x axis y axis)
	DVI-D-0 disconnected (normal left inverted right x axis y axis)

dc=0 (forced)
	HDMI-A-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
	   1920x1080     60.00*+  50.00    59.94    30.00    25.00    24.00    29.97    23.98  
	   1920x1080i    60.00    50.00    59.94  
	   1600x1200     60.00  
	   1280x1024     75.02    60.02  
	   1440x900      59.90  
	   1280x800     119.91    59.91  
	   1152x864      75.00  
	   1280x720      60.00    50.00    59.94  
	   1024x768     119.99    75.03    70.07    60.00  
	   832x624       74.55  
	   800x600       72.19    75.00    60.32  
	   720x576       50.00  
	   720x576i      50.00  
	   720x480       60.00    59.94  
	   720x480i      60.00    59.94  
	   640x480       75.00    72.81    66.67    60.00    59.94  
	   720x400       70.08 


Let me know if there's anything else you need here.
Comment 1 Alex Deucher 2018-07-23 15:23:34 UTC
(In reply to Benjamin Hodgetts from comment #0)
> dc=0 (forced)
> 	HDMI-A-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis)
> 0mm x 0mm
> 	   1920x1080     60.00*+  50.00    59.94    30.00    25.00    24.00   
> 29.97    23.98  

When you say "forced" what does that mean?  Do you have to specify an EDID override on the kernel command line?  Or are you saying everything is detected properly with dc=0 even when the display is turned off?
Comment 2 Benjamin Hodgetts 2018-07-23 15:36:05 UTC
By "forced" I mean I specified amdgpu.dc=0 on the kernel command line to force DC off (as it's on by default).

Yes to the second part of your question. Using dc=0 allows the display to be properly detected, even if it's turned off.
Comment 3 Matias N. Goldberg 2018-09-26 21:46:23 UTC
I think I'm having the same problem.

I'll first describe my symptoms (all of them happening with DC=1):

Case 1:
1. Boot System
2. Monitors must be off by the time GRUB inits the kernel.
3. Wait until everything's up
4. Turn on monitor(s)
5. Monitor(s) will go to sleep because they're not receiving any signal

Workaround:
Ctrl+Alt+F1 to go into terminal, monitor now goes on. Type: sudo service lightdm restart

Case 2:
1. Suspend the system
2. Turn off the monitors
3. Resume the system
4. Turn on monitor(s)
5. Monitor(s) will go to sleep
6. Trying Ctrl+Alt+F1 then Ctrl+Alt+F7 will show the dreaded "Session is Locked You'll be redirected to the unlock dialog in a few seconds" but after a few seconds the monitors go to sleep again and lightdm never unlocks.

Workaround:
Ctrl+Alt+F1 to go into terminal, monitor now goes on. Type: sudo loginctl unlock-sessions

Case 3:
1. Login to XFCE
2. Set "Extend Displays"
3. Turn off the secondary monitors (I have 2). All is OK. The extended desktop still works even though I cannot see it (expected behavior)
4. Turn off the main monitor too.
5. After turning on main monitor, now xfce will be set to "Mirror Displays" instead

Workaround:
Super Key + P then select "Extend to the right" again.

Except for case 3 in which a secondary monitor is needed, it doesn't seem like having 2 monitors affects the symptoms.

It's as if the kernel changes something that makes xfce & lightdm go nuts when all monitors go off.

My environment:
Xubuntu 18.04
XFCE 4.12
Kernel 4.18.9
libdrm-2.4.94
Device: Radeon RX 560 Series (POLARIS11, DRM 3.26.0, 4.18.9, LLVM 7.0.0) (0x67ff)
Version: 18.2.0

Radeon RX 560 2GB Gigabyte
Main LG FLATRON E2342 Monitor connected via HDMI
Secondary LG FLATRON E2341 Monitor connected via DVI

Booting with amdgpu.dc=0 fixes these issues.

This is the output of xrandr when both monitors are off and amdgpu.dc=0
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-A-0 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 290mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1400x1050     59.95  
   1600x900      60.00  
   1280x1024     60.02  
   1440x900      59.90  
   1280x800      59.91  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      60.00  
   800x600       60.32  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       60.00    59.94  
DVI-D-0 connected (normal left inverted right x axis y axis)
   1920x1080     60.00 +
   1680x1050     59.88  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1152x864      75.00  
   1024x768      75.03    60.00  
   832x624       74.55  
   800x600       75.00    60.32    56.25  
   640x480       75.00    59.94  


This is the output of xrandr when both monitors are off and amdgpu.dc=1

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 16384 x 16384
DisplayPort-0 disconnected (normal left inverted right x axis y axis)
HDMI-A-0 disconnected primary (normal left inverted right x axis y axis)
DVI-D-0 connected (normal left inverted right x axis y axis)
   1920x1080     60.00 +
   1680x1050     59.88  
   1280x1024     75.02    60.02  
   1440x900      60.00  
   1280x960      60.00  
   1280x800      60.00  
   1152x864      75.00  
   1280x720      60.00  
   1024x768      75.03    60.00  
   832x624       74.55  
   800x600       75.00    60.32    56.25  
   640x480       75.00    59.94  
   720x400       70.08 


Notice the HDMI monitor is now listed as disconnected.

Perhaps this is a case of "not our bug" and software should accommodate for "hotpluggable monitors".
However if that's the case, this is still a problem when the new behavior breaks basic desktop system software on boot and resume-from-suspend; and I'd suggest either DRM should report a state of connected-but-off (if it's not already there, then this is a driver bug), or there should be an extra kernel param to not list powered-off monitors as disconnected, without having to disable amdgpu.dc.

Cheers
Comment 4 Benjamin Hodgetts 2018-10-25 12:25:58 UTC
To anyone checking, this is still an issue with versions:
Kernel 4.18.16, LLVM 8.0.0, Mesa 18.3.0-devel, XOrg 1.20.2.


Monitor is connected, but powered off:

Screen 0: minimum 320 x 200, current 1024 x 768, maximum 16384 x 16384
DisplayPort-0 disconnected primary (normal left inverted right x axis y axis)
DisplayPort-1 disconnected (normal left inverted right x axis y axis)
HDMI-A-0 disconnected (normal left inverted right x axis y axis)
HDMI-A-1 disconnected (normal left inverted right x axis y axis)
DVI-D-0 disconnected (normal left inverted right x axis y axis)
Comment 5 Martin Peres 2019-11-19 08:45:09 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/drm/amd/issues/461.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.