On ubuntu 21, and even on the latest dev branch of 22.04, I switched early in hope the issue would be resolved without luck.
Update:
I managed to get 60hz all the time by completely unplugging the monitor, letting it boot, and then plugging it in. Apparently it does not like the handshake when linux is starting, for some reason.
I don't seem to be able to find the root cause for this one. Here is xrandr when it works at 60hz:
Screen 0: minimum 8 x 8, current 3840 x 2160, maximum 16384 x 16384
DVI-I-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-1-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
3840x2160 60.00*+ 60.00 50.00 59.94 30.00 25.00 24.00 29.97 23.98
2560x1440 59.95
1920x1200 59.88
1920x1080 60.00 50.00 59.94 30.00 25.00 24.00 29.97 23.98
1680x1050 59.95
1600x900 60.00
1280x1024 60.02
1440x900 59.89
1366x768 60.00
1280x800 74.93 59.81
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
720x400 70.08
HDMI-1-1 disconnected (normal left inverted right x axis y axis)
DP-1-2 disconnected (normal left inverted right x axis y axis)
HDMI-1-2 disconnected (normal left inverted right x axis y axis)
DP-1-3 disconnected (normal left inverted right x axis y axis)
HDMI-1-3 disconnected (normal left inverted right x axis y axis)
And here is after a reboot picking 30hz (which is 90% of the time)
Screen 0: minimum 320 x 200, current 3840 x 2160, maximum 16384 x 16384
DP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
3840x2160 30.00* 25.00 24.00 29.97 23.98
2560x1440 59.95
1920x1200 59.88
1920x1080 60.00 50.00 59.94 30.00 25.00 24.00 29.97 23.98
1680x1050 59.95
1600x900 60.00
1280x1024 60.02
1440x900 59.89
1366x768 60.00
1280x800 74.93 59.81
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
720x400 70.08
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
HDMI-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
HDMI-3 disconnected (normal left inverted right x axis y axis)
DVI-I-1-0 disconnected (normal left inverted right x axis y axis)
DVI-I-1-1 disconnected (normal left inverted right x axis y axis)
DP-1-0 disconnected (normal left inverted right x axis y axis)
DP-1-1 disconnected (normal left inverted right x axis y axis)
The machine is an Dell Poweredge t40. I flashed a Dell Precision 3630 bios to be able to use the nvme port, and the problem persists. It randomly works at the expected 60hz. I also tried changing the display port cable, and the display port port.
The only way it works at 60hz in a reliable way is when I use an external card, so it must be a problem with the onboard intel gpu, which is the one I want to use for this monitor.
I also tried to add the resolution manually by generating the xrandr configuration using the crt tool, but it doesn't work either.
I found an error and VERY different initialization logs when it DOESN'T work. Here is the log for when it works, and later is the log diff where it doesn't work. Check the memory values and MEMATTR too
Working dmesg diff:
...
[ 0.000000] efi: ACPI 2.0=0x79b2d000 ACPI=0x79b2d000 SMBIOS=0xf05e0 SMBIOS 3.0=0xf0600 TPMFinalLog=0x79d0b000 ESRT=0x7a52d698 MEMATTR=0x7390c018 MOKvar=0x7702c000 RNG=0x7a585f98 TPMEventLog=0x655c3018
...
[ 0.094955] Memory: 24325840K/24989276K available (16393K kernel code, 4384K rwdata, 10752K rodata, 2956K init, 4796K bss, 663176K reserved, 0K cma-reserved)
...
[ 0.281764] pci 0000:01:00.0: vgaarb: setting as boot VGA device
[ 0.281764] pci 0000:01:00.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[ 0.281764] pci 0000:01:00.0: vgaarb: bridge control possible
...
[ 2.857665] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
...
[ 3.159097] i915 0000:00:02.0: [drm] failed to retrieve link info, disabling eDP
[ 3.159357] i915 0000:00:02.0: [drm] [ENCODER:94:DDI B/PHY B] is disabled/in DSI mode with an ungated DDI clock, gate it
[ 3.159359] i915 0000:00:02.0: [drm] [ENCODER:111:DDI C/PHY C] is disabled/in DSI mode with an ungated DDI clock, gate it
[ 3.159361] i915 0000:00:02.0: [drm] [ENCODER:121:DDI D/PHY D] is disabled/in DSI mode with an ungated DDI clock, gate it
...
[ 4.698100] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
non-working dmesg diff:
...
[ 0.000000] efi: ACPI 2.0=0x79b2d000 ACPI=0x79b2d000 SMBIOS=0xf05e0 SMBIOS 3.0=0xf0600 TPMFinalLog=0x79d0b000 ESRT=0x7a52d698 MEMATTR=0x726bc098 MOKvar=0x726bd000 RNG=0x7a585f98 TPMEventLog=0x655c3018
...
Reserving Intel graphics memory at [mem 0x7d800000-0x7f7fffff]
[ 0.102166] Memory: 24250648K/24989276K available (16393K kernel code, 4384K rwdata, 10752K rodata, 2956K init, 4796K bss, 738368K reserved, 0K cma-reserved)
...
[ 0.289644] pci 0000:00:02.0: vgaarb: setting as boot VGA device
[ 0.289644] pci 0000:00:02.0: vgaarb: VGA device added: decodes=io+mem,owns=io+mem,locks=none
[ 0.289644] pci 0000:01:00.0: vgaarb: VGA device added: decodes=io+mem,owns=none,locks=none
[ 0.289644] pci 0000:00:02.0: vgaarb: no bridge control possible
[ 0.289644] pci 0000:01:00.0: vgaarb: bridge control possible
...
[ 3.057229] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
...
[ 3.064548] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.064556] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.065520] nvidia 0000:01:00.0: enabling device (0100 -> 0103)
[ 3.065594] nvidia 0000:01:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[ 3.081168] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.081176] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.081179] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.097823] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.097828] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.097831] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.114499] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.114505] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.114509] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.131168] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.131173] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.131176] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.147826] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.147830] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.147833] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.164604] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.164611] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.164613] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.181275] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.181280] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.181283] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.197838] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.197842] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.197845] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.214497] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.214501] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.214503] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.231173] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.231176] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.231178] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.247943] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.247948] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.264497] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.264501] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.264503] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.281166] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.281169] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.281171] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.297834] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.297837] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.297839] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.314509] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.314512] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.314515] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.330645] i915 0000:00:02.0: [drm] failed to retrieve link info, disabling eDP
[ 3.331278] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.331283] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.331288] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.347964] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
[ 3.347968] i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
...
[ 4.752284] fbcon: i915drmfb (fb0) is primary device
[ 4.780782] i915 0000:00:02.0: [drm] Reducing the compressed framebuffer size. This may lead to less power savings than a non-reduced-size. Try to increase stolen memory size if available in BIOS.
These logs are cherry picked from what I think is most relevant to the issue. I saved the output of dmesg and manually reviewed the differences to better understand the issue.