4k @ 60 hz on rx580 works on Windows, not Linux

I tried adding the mode with xrandr to no avail. “xrandr: Configure crtc 0 failed” is the error.

dmesg: http://ix.io/1Vc7

Xorg logs: http://ix.io/1Vc8

I looked around a bit and it might be a DRM issue? If so, any of the kernel patches I found are terribly outdated. Any ideas?

I have nothing useful to add other than 4K60 on Kubuntu 19.04 (5.0.0-25) works fine for me out of the box on an RX 570. I’m connected over DP. Are there any 4k monitors out there that can only do 30hz over HDMI and 60 over DP?

4k @ 60 w/ the same cord/same computer/same gpu works on Windows, not on Linux.

Some more info on my system:

OS: Arch Linux x86_64
Kernel: 5.3.0-rc8-mainline
Uptime: 27 mins
Packages: 1336 (pacman)
Shell: bash 5.0.11
Resolution: 3840x2160
DE: Xfce
Theme: Adwaita-dark [GTK2], Adwaita [GTK3]
Icons: Adwaita [GTK2/3]
Terminal: xterm
Terminal Font: Liberation Mono
CPU: AMD Ryzen 7 2700X (16) @ 3.700GHz
GPU: NVIDIA GeForce GTX 980 Ti
GPU: AMD ATI Radeon RX 470/480/570/570X/580/580X/590
Memory: 3042MiB / 32104MiB

Update: I’ve been able to decode the EDID from the display link here: http://ix.io/1VcO . It appears that what’s happening is that in Linux it is stuck in RGB mode, and I need YCbCr 4:2:0 in order to get 60hz @ 4k. It’s there in the EDID so I’m not quite sure why the kernel isn’t seeing it

Extended tag: YCbCr 4:2:0 video data block
VIC 97 3840x2160@60Hz 16:9 HorFreq: 135000 Hz Clock: 297.000 MHz
VIC 102 4096x2160@60Hz 256:135 HorFreq: 135000 Hz Clock: 297.000 MHz

You might just need a better cable, you don’t want to be converting the output to anything other than full RGB if you can avoid it. Assuming this card supports HDMI 2.0

Pretty sure the most the display handles is that 297 Mhz…Windows handles it just fine. There has got to be a way to tell the kernel I’ve got a YCbCr 4:2:0 mode here. I’ve already tried multiple cables.

Resolved, sort of. I found another modeline not generated by cvt or gtf from someone’s git that used 594 pixel clock instead of 714.

xrandr --newmode "3840x2160_60" 594.00 3840 4016 4104 4400 2160 2168 2178 2250 +hsync +vsync
xrandr --addmode HDMI-A-0 3840x2160_60
xrandr --output HDMI-A-0 --mode 3840x2160_60