KDE and GNOME wayland sessions high CPU usage with external displays
NVIDIA Open GPU Kernel Modules Version
525.78.01
Does this happen with the proprietary driver (of the same version) as well?
Yes
Operating System and Version
Arch Linux
Kernel Release
6.1.4
Hardware: GPU
NVIDIA GeForce GTX 1660 Ti (UUID: GPU-1039f844-290a-8383-6bb3-75f30db7d7c5)
Describe the bug
When using a laptop and an external display both KDE and GNOME Wayland sessions have high CPU usage when doing anything/refreshing the external display.
dmesg spams NVRM osCreateOsDescriptorFromDmaBufPtr: osCreateOsDescriptorFromDmaBufPtr(): Error (86) while trying to import dma_buf!
I have built the driver with an os_dump_stacktrace() before the call to osCreateOsDescriptorFromDmaBufPtr, there's an attachment so the path that the driver takes to get there is visible
To Reproduce
- Connect external display
- See high CPU usage
Bug Incidence
Always
nvidia-bug-report.log.gz
More Info
No response
Not just KDE and gnome, just wayland in general... Sway, hyprland, wayfire, you name it!
Yes, DMABUF not implemented for Wayland :(
Surprisingly it seems the issue was resolved (for me at least) by switching to the Nvidia 530.30.02 driver, along with a bunch of different issues (like suspend, screen tearing, etc.) I guess Nvidia has stepped up their game between 525 and 530 (this is the proprietary btw)
This issue is still present in 530. Kwin and Mutter still have to fallback to CPU copy as the nvidia driver fails to import the dma buffer.
I am having the same issue since updating to the nvidia drivers 545.29.02 for my GeForce 3080Ti (Laptop). Happens here when starting CS2 which ran fine before.
I am running NixOS on Kernel Version 6.6.0. When killing the process this is the output from dmesg.
[12740.753015] NVRM unixCallVideoBIOS: int10h(4f02, 0000) vesa call failed! (4f02, 0000) [12740.753421] NVRM nvCheckOkFailedNoLog: Check failed: Failure: Generic Error [NV_ERR_GENERIC] (0x0000FFFF) returned from pRmApi->Control(pRmApi, nv->rmapi.hClient, nv->rmapi.hSubDevice, NV2080_CTRL_CMD_INTERNAL_DISPLAY_POST_RESTORE, &restoreParams, sizeof(restoreParams)) @ unix_console.c:197 [12740.899571] NVRM nvAssertFailedNoLog: Assertion failed: !nvp->pGpu || !rmDeviceGpuLockIsOwner(nvp->pGpu->gpuInstance) @ dynamic-power.c:150 [12740.987953] NVRM unixCallVideoBIOS: int10h(4f02, 0000) vesa call failed! (4f02, 0000) [12740.988331] NVRM nvCheckOkFailedNoLog: Check failed: Failure: Generic Error [NV_ERR_GENERIC] (0x0000FFFF) returned from pRmApi->Control(pRmApi, nv->rmapi.hClient, nv->rmapi.hSubDevice, NV2080_CTRL_CMD_INTERNAL_DISPLAY_POST_RESTORE, &restoreParams, sizeof(restoreParams)) @ unix_console.c:197
After the process kill I am thrown back to the login screen
This could be related to https://github.com/obsproject/obs-studio/issues/9895 as well.