While running a GPU-heavy OpenGL workload, the dGPU emitted repeated BAR1 mapping
VA-space allocation failures, then lost the PCIe bus (Xid 79). The driver’s recovery
attempt failed (Xid 154, PF FLR). Approximately 50 minutes later a s2idle suspend was
requested; because the GPU was already gone, the suspend never completed. nvidia-modeset
logged Error while waiting for GPU progress every ~5 seconds for over six minutes until
the machine was forcibly rebooted.
Timeline (boot −1, all times local)
Time
Event
00:15:01
GPU-heavy OpenGL workload begins on the dGPU (Minecraft via HMCL launcher)
00:20:16–00:21:01
16× NVRM: dmaAllocMapping_GM107: can't alloc VA space for mapping + 10× NV_ERR_NO_MEMORY assertion (mapping_reuse.c:273, kern_bus_gm107.c:3184)
00:22:16
NVRM: Xid (PCI:0000:01:00): 79, pid=380, name=nv_queue, GPU has fallen off the bus.
00:22:16
_kgspLogRpcSanityCheckFailure: sanity check failed 0xf waiting for RPC response from GSP; GSP RPC buffer contains function 78 (DUMP_PROTOBUF_COMPONENT); NV_ERR_GPU_IS_LOST storm
00:22:16
NVRM: Xid (PCI:0000:01:00): 154, GPU recovery action changed from 0x0 (None) to 0x1 (PF FLR)
00:22:17
Rendering process dies SIGABRT (1.3 GB core)
00:22:50
WARNING: nvidia/nv.c:5515 at nvidia_dev_put+0xbd/0xd0 [nvidia], CPU#12: G1 Service/130983 (repeated)
01:12:58
PM: suspend entry (s2idle)
01:13:03 → 01:19:14
75× nvidia-modeset: ERROR: GPU:0: Error while waiting for GPU progress: 0x0000c67d:0 2:0:4048:4040 (~5 s cadence)
~01:19
Forced reboot; no PM: suspend exit was ever logged for this cycle
Key log lines (verbatim)
NVRM: dmaAllocMapping_GM107: can't alloc VA space for mapping.
NVRM: Xid (PCI:0000:01:00): 79, pid=380, name=nv_queue, GPU has fallen off the bus.
NVRM: GPU0 _kgspLogRpcSanityCheckFailure: GPU0 sanity check failed 0xf waiting for RPC response from GSP. Expected function 76 (GSP_RM_CONTROL) sequence 91269 (0x2080a7d7 0x2).
NVRM: Xid (PCI:0000:01:00): 154, GPU recovery action changed from 0x0 (None) to 0x1 (PF FLR)
WARNING: nvidia/nv.c:5515 at nvidia_dev_put+0xbd/0xd0 [nvidia], CPU#12: G1 Service/130983
nvidia-modeset: ERROR: GPU:0: Error while waiting for GPU progress: 0x0000c67d:0 2:0:4048:4040
Expected vs. actual
Expected: On GPU loss the driver should either recover the device (FLR) or fail
gracefully, and a subsequent suspend should either succeed or abort promptly with a
clear error and a live system.
Actual: The GPU is lost permanently, and a later s2idle request hangs indefinitely
in nvidia-modeset — the system neither suspends nor resumes, and requires a hard power
cycle. Reported loop continued for 6+ minutes with no timeout or recovery.
Notes / observations
Suspend is not intrinsically broken here. The same boot completed 4 successful s2idle suspend/resume cycles before the GPU loss (5 PM: suspend entry vs. 4 PM: suspend exit). The failure only follows an already-lost GPU.
The bug is intermittent: 1 failure in 5 suspend cycles that day; 0 in the two preceding
boots.
Inference (not proven): the dmaAllocMapping_GM107 VA-space exhaustion precedes the
bus loss by ~2 minutes and may be the trigger. Note BAR1 reports 8192 MiB (> 6144 MiB
VRAM), i.e. ReBAR appears enabled, so this appears to be the driver’s mapping-reuse VA
space rather than the raw aperture size.
The GSP sanity-check failure appears after Xid 79 in the log, so GSP looks like a
casualty rather than the cause.
The nv.c:5515nvidia_dev_put WARNING after device loss suggests a driver-side
refcount problem on the teardown path.