After upgrading to Linux 4.19-rc3 (from 4.18.x), I can't switch to tty anymore, the monitor connected over DisplayPort goes into sleep mode.
I see this in dmesg when it happens:
[37342.777399] [drm:generic_reg_wait [amdgpu]] *ERROR* REG_WAIT timeout 10us * 3000 tries - dce110_stream_encoder_dp_blank line:922
[37342.777477] WARNING: CPU: 4 PID: 14403 at drivers/gpu/drm/amd/amdgpu/../display/dc/dc_helper.c:254 generic_reg_wait+0xe7/0x160 [amdgpu]
[37342.777478] Modules linked in: uas usb_storage rfcomm ebtable_filter ebtables devlink ip6table_filter ip6_tables iptable_filter cmac bnep arc4 nls_ascii nls_cp437 vfat amdkfd fat snd_hda_codec_realtek snd_hda_codec_generic edac_mce_amd btusb btrtl amdgpu btbcm snd_hda_codec_hdmi btintel iwlmvm snd_usb_audio snd_hda_intel bluetooth kvm_amd snd_hda_codec snd_usbmidi_lib wmi_bmof mxm_wmi mac80211 snd_hda_core kvm uvcvideo videobuf2_vmalloc snd_hwdep videobuf2_memops snd_rawmidi jitterentropy_rng videobuf2_v4l2 videobuf2_common snd_seq_device chash iwlwifi irqbypass gpu_sched videodev snd_pcm crct10dif_pclmul ttm crc32_pclmul media drbg snd_timer evdev drm_kms_helper cfg80211 ansi_cprng ghash_clmulni_intel efi_pstore pcspkr drm snd k10temp ecdh_generic soundcore efivars rfkill crc16 sp5100_tco sg ccp
[37342.777514] rng_core wmi pcc_cpufreq button acpi_cpufreq nct6775 hwmon_vid parport_pc ppdev lp parport efivarfs ip_tables x_tables autofs4 xfs btrfs xor zstd_decompress zstd_compress xxhash raid6_pq libcrc32c crc32c_generic hid_generic usbhid hid sd_mod crc32c_intel ahci xhci_pci libahci aesni_intel xhci_hcd aes_x86_64 crypto_simd libata igb cryptd glue_helper nvme usbcore scsi_mod i2c_piix4 i2c_algo_bit nvme_core dca usb_common gpio_amdpt gpio_generic
[37342.777542] CPU: 4 PID: 14403 Comm: kworker/4:1 Tainted: G W 4.19.0-rc3-amd64 #1 Debian 4.19~rc3-1~exp1
[37342.777542] Hardware name: To Be Filled By O.E.M. To Be Filled By O.E.M./X370 Taichi, BIOS L4.64 04/03/2018
[37342.777558] Workqueue: events drm_mode_rmfb_work_fn [drm]
[37342.777615] RIP: 0010:generic_reg_wait+0xe7/0x160 [amdgpu]
[37342.777617] Code: 44 24 58 8b 54 24 48 89 de 44 89 4c 24 08 48 8b 4c 24 50 48 c7 c7 20 9d b5 c1 e8 64 e6 f0 fe 83 7d 18 01 44 8b 4c 24 08 74 02 <0f> 0b 48 83 c4 10 44 89 c8 5b 5d 41 5c 41 5d 41 5e 41 5f c3 41 0f
[37342.777618] RSP: 0018:ffffa2ae81b9ba20 EFLAGS: 00010297
[37342.777620] RAX: 0000000000000000 RBX: 000000000000000a RCX: 0000000000000000
[37342.777621] RDX: 0000000000000000 RSI: ffff93d74eb166a8 RDI: ffff93d74eb166a8
[37342.777622] RBP: ffff93d746439180 R08: 0000000000000000 R09: 0000000000010200
[37342.777623] R10: 0720072007200720 R11: 0720073207320739 R12: 0000000000000bb9
[37342.777624] R13: 00000000000051e2 R14: 0000000000010000 R15: 0000000000000000
[37342.777625] FS: 0000000000000000(0000) GS:ffff93d74eb00000(0000) knlGS:0000000000000000
[37342.777626] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[37342.777627] CR2: 0000558f62bfa9d0 CR3: 00000003f2c38000 CR4: 00000000003406e0
[37342.777628] Call Trace:
[37342.777695] dce110_stream_encoder_dp_blank+0x12c/0x1a0 [amdgpu]
[37342.777754] core_link_disable_stream+0x54/0x220 [amdgpu]
[37342.777813] dce110_reset_hw_ctx_wrap+0xc1/0x1e0 [amdgpu]
[37342.777872] dce110_apply_ctx_to_hw+0x45/0x650 [amdgpu]
[37342.777928] ? dc_remove_plane_from_context+0x1fc/0x240 [amdgpu]
[37342.777985] dc_commit_state+0x2c6/0x520 [amdgpu]
[37342.778047] amdgpu_dm_atomic_commit_tail+0x37a/0xd80 [amdgpu]
[37342.778052] ? __wake_up_common_lock+0x89/0xc0
[37342.778054] ? _cond_resched+0x15/0x30
[37342.778056] ? wait_for_completion_timeout+0x3b/0x1a0
[37342.778117] ? amdgpu_dm_atomic_commit_tail+0xd80/0xd80 [amdgpu]
[37342.778126] commit_tail+0x3d/0x70 [drm_kms_helper]
[37342.778133] drm_atomic_helper_commit+0xb4/0x120 [drm_kms_helper]
[37342.778148] drm_framebuffer_remove+0x361/0x410 [drm]
[37342.778164] drm_mode_rmfb_work_fn+0x4f/0x60 [drm]
[37342.778171] ? pwq_unbound_release_workfn+0xd0/0xd0
[37342.778175] ? kthread_bind+0x30/0x30
[37342.778179] ---[ end trace 3d987dd66a59ffb4 ]---
OS: Debian testing, kernel 4.19~rc3-1~exp1
GPU: Sapphire Pulse Vega 56.
amdgpu firmware: 20180825+dfsg-1
Same thing happens with kernel 4.19-rc4.
Still broken with 4.19.0-rc6-amd64.
Is this issue Debian specific or anyone observed it in other distros? Because if it's something wrong with Debian's kernel build I should probably file a Debian bug about it.
I have same problem on Fedora F28 with 4.18 kernel. I have since switched back to DVI interface which does not exhibit this bug.
My card doesn't have DVI, and HDMI produces horrible colors, so DisplayPort is the only sane option and it's broken :(
I haven't observed this behavior occurring under Ubuntu 18.04 or Arch on 4.18 or 4.19 kernels with a Vega 56.
Do you mind posting a full dmesg log with drm.debug=4 and an xorg log? It would also help to know what desktop environment you're using.
I'm using KDE Plasma 5.13.5, current Debian testing x86_64. Can you try it with Debian? Ubuntu stack is not that close anymore.
I also noticed one detail. When screen mode is chaning (like before sddm comes up), the monitor goes to sleep briefly and then wakes up. That wasn't happening before and it's not a correct behavior. In 4.18 it wasn't waking up at all, and it was fixed in 4.19. Similar thing is happening during switch to tty (screen mode is changing indicated by the DP monitor icon appearing), except the monitor isn't waking up anymore.
Created attachment 141960 [details]
dmesg with drm.debug=4 and Xorg.0.log
By the way, I tested it with this kernel:
Which is built from AMD's tree. This issue is also present in it.
I just found something. My monitor - Dell U2413 has a setting for toggling DisplayPort 1.2. It was enabled until now. When I disable that setting, tty starts working!
My cable is supposed to support DP 1.2 and be Vesa compliant. It's Accel UltraAV DP 1.2 cable.
I hope this can help narrow down the problem.
(In reply to Shmerl from comment #10)
> I just found something. My monitor - Dell U2413 has a setting for toggling
> DisplayPort 1.2. It was enabled until now. When I disable that setting, tty
> starts working!
> My cable is supposed to support DP 1.2 and be Vesa compliant. It's Accel
> UltraAV DP 1.2 cable.
> I hope this can help narrow down the problem.
Interesting, I have the exact same monitor, Dell U2413, I'll give this a try!
@Nicholas Kazlauskas: does it help to identify the source of the problem?
(In reply to Shmerl from comment #12)
> @Nicholas Kazlauskas: does it help to identify the source of the problem?
If I had to guess I would say this is an issue specific to that monitor - DP 1.2 should generally work without issue.
This does help narrow down the problem, thanks.
(In reply to Nicholas Kazlauskas from comment #13)
> If I had to guess I would say this is an issue specific to that monitor - DP
> 1.2 should generally work without issue.
It did work fine before in DP 1.2 mode (like with kernel 4.17.x), so there must have been some regression which caused this behavior.
I own a DELL U2414H and a U2913WM, and are daisy chained via DisplayPort. I'm currently running into this issue.
A quick bisect gave this result:
# first bad commit: [0d99889109892396a8164bf6dd178e36d3fe3166] drm/fb-helper: Eliminate the .best_encoder() usage
I own a Dell U3415W also connected via DisplayPort and I have the same issue.
Worked like a charm in the past.
(In reply to Nicholas Kazlauskas from comment #13)
> This does help narrow down the problem, thanks.
Is there any chance of fixing this in 4.20?
Same problem for me.
Using 2 identical DELL U2415 and a Radeon RX 580.
On Arch with 4.18.x Daisychainig both monitors worked like a charm.
After upgrading to 4.19 the monitors only work when I`m disableing DP1.2. But then I obviously can't Daisychain.
Is there any way I can help troubleshoot this?
This seem to commonly affect Dell monitors. Do they not follow DisplayPort 1.2 spec, or amdgpu is doing something incorrectly after all?
The fix is showing up since 4.20-rc5. Please give a try.
(In reply to Jerry Zuo from comment #20)
> The fix is showing up since 4.20-rc5. Please give a try.
4.20-rc5 solves the problem for me!
Great news! Debian didn't get 4.20 rc kernels yet, but I can try building one from source to test.
Switching to tty now works for me , I still get the [drm:generic_reg_wait [amdgpu]] *ERROR* REG_WAIT timeout 10us * 3000 tries - dce110_stream_encoder_dp_blank line:944 message though
Does KWin Wayland session work for you now? It was crashing also because of this.
Just built 4.20-rc5+. This is indeed fixed, and KWin Wayland session is finally working with DisplayPort 1.2 enabled!
And I don't see ERROR* REG_WAIT anymore. I'm using latest Vega firmware.
The dce110_stream_encoder_dp_blank timeout is something I am working on. It doesn't break anything, but pretty annoying.