You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Please confirm this issue does not happen with the proprietary driver (of the same version). This issue tracker is only for bugs specific to the open kernel driver.
I confirm that this does not happen with the proprietary driver package.
After ~20 hours idle at the GNOME lock screen with an external display connected to the dGPU, the nvidia-modeset/ kernel thread entered a permanent busy-spin inside the DIFR prefetch path:
DifrPrefetchEventDeferredWork
-> nvDIFRPrefetchSurfaces
-> PrefetchHelperSurfaceEvo
-> nvWriteGpEntry <- spins here forever (state R, 100% of one core)
The thread remains runnable (state R) and never exits nvWriteGpEntry — successive hung-task reports over 20+ minutes show the same thread at nvWriteGpEntry+0xf7/+0x100, i.e. it is looping (presumably waiting for GPFIFO space that never becomes available), not making progress. There is no timeout or bail-out in this loop.
Because that kthread holds the nvkms lock (semaphore), the "KMS thread" blocks forever in nvkms_ioctl_from_kapi_try_pmlock and every subsequent modeset/flip/cursor operation queues behind it. The session is unrecoverable: displays cannot be lit (lid-open produced nothing), and only a hard power-off recovers the machine. The rest of the kernel stays alive.
To Reproduce
ot deterministic — it is a race that needs many DIFR engage/disengage cycles:
Hybrid laptop, external monitor on the dGPU, GNOME Wayland session.
Lock the session and leave it idle for many hours (AC power, no suspend).
In this state the lock-screen clock repaints the dGPU-driven output once per minute; each repaint wakes the GPU from runtime D3, and each subsequent idle period re-engages DIFR. In my incident the machine went through ~1,250 such cycles (one per minute from 20:12 to 16:47 the next day) before one prefetch livelocked.
This machine has hit what appears to be the same deadlock at least once before (an older note in my modprobe config references a previous KMS-thread deadlock and attempts options nvidia-modeset NvModesetEnableDIFR=0 — which is not a valid parameter; as far as I can tell there is no user-accessible way to disable DIFR on the open driver).
Kernel log
First hung-task report (16:49:56; the blocked task and the spinning lock holder):
The reports repeat with the same two stacks at 245s, 368s, ... 1228s blocked; the nvidia-modeset/ thread is still at nvWriteGpEntry+0x100 in the final report (17:08:22), 21 minutes into the spin. The hang began at 16:47 — the compositor logged Cursor update failed: drmModeAtomicCommit: Invalid argument at 16:47:18, immediately after the last runtime-D3 wake at 16:47:00.
Possibly relevant context
Every runtime-D3 wake during the idle period logged the known GSP: PFM_REQ_HNDLR_STATE_SYNC_CALLBACK missing from _kgspProcessRpcEvent bootup whitelist #1145 pair: NVRM: _kgspProcessRpcEvent: Attempted to process RPC event from GPU0: 0x101a (PFM_REQ_HNDLR_STATE_SYNC_CALLBACK) during bootup without API lock — ~2,190 of these accumulated before the hang, so the livelocked prefetch fired in close proximity to a D3 wake cycle.
This platform's Dynamic Boost SBIOS interface is broken (boot-time PlatformRequestHandler failed to get target temp from SBIOS @ platform_request_handler_ctrl.c:2171), in case the PFM/LPWR interaction is relevant.
nvidia-modeset: WARNING: GPU:0: Unable to read EDID for display device DP-0 is logged at boot (monitor connected through a dock).
Requests
A bound/timeout or error path in the nvWriteGpEntry wait used by nvDIFRPrefetchSurfaces, so a stalled prefetch fails (NV2080_CTRL_LPWR_DIFR_PREFETCH_FAIL_CE_HW_ERROR) instead of livelocking the display stack.
Failing that, a supported way to disable DIFR (module parameter or regkey) as a workaround — currently there appears to be none reachable from the OS.
prev-boot-kernel.log.gz
NVIDIA Open GPU Kernel Modules Version
595.71.05 (Ubuntu package
nvidia-driver-595-open595.71.05-0ubuntu0.26.04.1)Please confirm this issue does not happen with the proprietary driver (of the same version). This issue tracker is only for bugs specific to the open kernel driver.
Operating System and Version
Ubuntu 26.04 LTS
Kernel Release
7.0.0-27-generic #27-Ubuntu (Ubuntu 26.04)
Please confirm you are running a stable release kernel (e.g. not a -rc). We do not accept bug reports for unreleased kernels.
Hardware: GPU
GPU 0: NVIDIA GeForce RTX 4080 Laptop GPU (UUID: GPU-2d959b1c-d3e9-a43f-a88d-1cab500438dc)
Describe the bug
After ~20 hours idle at the GNOME lock screen with an external display connected to the dGPU, the
nvidia-modeset/kernel thread entered a permanent busy-spin inside the DIFR prefetch path:The thread remains runnable (state
R) and never exitsnvWriteGpEntry— successive hung-task reports over 20+ minutes show the same thread atnvWriteGpEntry+0xf7/+0x100, i.e. it is looping (presumably waiting for GPFIFO space that never becomes available), not making progress. There is no timeout or bail-out in this loop.Because that kthread holds the nvkms lock (semaphore), the "KMS thread" blocks forever in
nvkms_ioctl_from_kapi_try_pmlockand every subsequent modeset/flip/cursor operation queues behind it. The session is unrecoverable: displays cannot be lit (lid-open produced nothing), and only a hard power-off recovers the machine. The rest of the kernel stays alive.To Reproduce
ot deterministic — it is a race that needs many DIFR engage/disengage cycles:
This machine has hit what appears to be the same deadlock at least once before (an older note in my modprobe config references a previous KMS-thread deadlock and attempts
options nvidia-modeset NvModesetEnableDIFR=0— which is not a valid parameter; as far as I can tell there is no user-accessible way to disable DIFR on the open driver).Kernel log
First hung-task report (16:49:56; the blocked task and the spinning lock holder):
The reports repeat with the same two stacks at 245s, 368s, ... 1228s blocked; the
nvidia-modeset/thread is still atnvWriteGpEntry+0x100in the final report (17:08:22), 21 minutes into the spin. The hang began at 16:47 — the compositor loggedCursor update failed: drmModeAtomicCommit: Invalid argumentat 16:47:18, immediately after the last runtime-D3 wake at 16:47:00.Possibly relevant context
NVRM: _kgspProcessRpcEvent: Attempted to process RPC event from GPU0: 0x101a (PFM_REQ_HNDLR_STATE_SYNC_CALLBACK) during bootup without API lock— ~2,190 of these accumulated before the hang, so the livelocked prefetch fired in close proximity to a D3 wake cycle.PlatformRequestHandler failed to get target temp from SBIOS @ platform_request_handler_ctrl.c:2171), in case the PFM/LPWR interaction is relevant.nvidia-modeset: WARNING: GPU:0: Unable to read EDID for display device DP-0is logged at boot (monitor connected through a dock).Requests
nvWriteGpEntrywait used bynvDIFRPrefetchSurfaces, so a stalled prefetch fails (NV2080_CTRL_LPWR_DIFR_PREFETCH_FAIL_CE_HW_ERROR) instead of livelocking the display stack.Bug Incidence
Once
nvidia-bug-report.log.gz
nvidia-bug-report.log.gz
More Info
No response