Flickering on an external monitor connected via DisplayPort to a laptop if the refresh rate is set above 120 Hz

I have a laptop ‘Lenovo Legion 5 15APH9’ and an LG 27GP850-B monitor with preferred mode 2560x1440@165hz connected together with a good cable. It works well on Windows, but with Linux (Arch with all last updates + nvidia 555.58.02 proprietary drivers + KDE Plasma 6 Wayland) I can’t get stable image with refresh rate 144 or 165hz.

I’ve tried:

  • nvidia.NVreg_DynamicPowerManagement=0/1/2
  • nvidia.NVreg_EnableGpuFirmware=0/1
  • nvidia-drm.modeset=0/1
  • nvidia-drm.fbdev=0/1

And various combinations of above, then:

  • Using nvidia-open and nvidia-beta (560)
  • Set in bios integrated graphics + discrete or only discrete
  • Live CD with Linux Mint. External monitor were recognized but I found no usable configuration at all (not even 2560x1440@120 or 60).
  • Live CD with Pop_OS NVIDIA both with Comsic and Gnome. None gave different result.
  • Then I’ve tried to use another DP cable and it worked, but refresh rate was varying between 165 and 48hz depending on if the image changes. Switching to this “power-saving” mode is fast, but switching from 48 Hz to 165 Hz takes about 1-2 seconds, so my experience with this setup was pretty bad. Then I’ve tried to use nvidia.NVreg_DynamicPowerManagemen=0 kernel parameter and got stable 165hz, but after about 10 seconds of stable work flickers and artifacts came back.

In bug report generated by nvidia-bug-report.log I found messages about problems with EDID of external monitor and sbios were mentioned there. My laptop have last version of bios and here is EDID from /sys/class/drm/card0-DP-6/edid and parsed EDID by edid-decode (I have changed serial number info):
LG_edid_parsed.txt (8.3 KB)

Here is the bug report log:
nvidia-bug-report.log.gz (1.2 MB)

journalctl -b -2: I tried to use only discrete graphics + nvidia-drm.modeset=0 +nvidia-drm.fbdev=0
journalctl -b -1: nvidia-open package were used there for nvidia drivers
journalctl -b -0: nvidia proprietary package were used there for nvidia drivers

The nvidia-modeset complaining about EDID for DP-4 message:

Aug 20 23:10:56 evgen-9 kernel: nvidia-modeset: WARNING: GPU:0: Unable to read EDID for display device DP-4

appears despite the fact that an external monitor is connected via the DP-2 port, not DP-4, and it appears even if no monitor is connected at all.
I’ve probably started digging in wrong direction by thinking that this issue is somehow related to my monitor and gave some unnecessary extra information in the first message. In my research I also tried to embed the the EDID information using the drm.edid_firmware kernel option in various ways, but it didn’t give results.
I can only assume that DP-4 is somehow used internally by the nvidia driver and/or hardware implementation of this laptop.

Also this message:

Aug 20 23:30:07 evgen-9 kernel: [drm] [nvidia-drm] [GPU ID 0x00000100] Framebuffer memory not appropriate for scanout

appears every time I try to set 144 or 165hz and therefore trigger flickers, and it doesn’t appear on subsequent reproductions.

UPD: I managed to suppress this two messages by combining various configurations, like disabling integrated graphics, acpi_osi, managing EDID of monitors with drm.edid_firmware, disabling amdgpu (in my case), DynamicPowerManagement=0,EnableGpuFirmware=0.

I changed the USB-C to DP adapter I used earlier, and that fixed the problem. I thought this was a driver issue, because along with this problem, I had a problem with another monitor that I’ve connected via HDMI, and the monitor had similar symptoms. This has also been solved, but by setting “nvidia-modeset.hdmi_deepcolor=0

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.