RTX 5090 (GB202) + Ryzen 9 9950X3D: Xid 79 at idle, reproduced across 2 driver branches, ASPM confirmed disabled at register level, zero AER errors

Adding my data to this thread since my hardware matches closely (same CPU) and I’ve been able to rule out a large number of variables through controlled testing. Posting the full picture in case it’s useful for narrowing down the root cause.

System Information

Component Detail
GPU NVIDIA GeForce RTX 5090 32GB (Palit GameRock), PCI 0000:01:00.0
Motherboard Gigabyte X870M AORUS ELITE WIFI7, BIOS F10a (AGESA ComboAm5PI 1.3.0.1b, unlisted/beta)
CPU AMD Ryzen 9 9950X3D
RAM 64GB (2x32) DDR5, EXPO Profile 1 (6000MT/s)
PSU FSP 1000W, 80+ Gold
OS Ubuntu 26.04 LTS
Kernel 7.0.0-27-generic
Drivers tested nvidia-driver-595-open (595.71.05) and nvidia-driver-580-server-open (580.159.03) — identical crash on both

Symptom

nvidia-smi fails with “Unable to determine the device handle for GPU0… Unknown Error / No devices were found.” Kernel log shows the standard signature:

NVRM: Xid (PCI:0000:01:00): 79, GPU has fallen off the bus.
NVRM: Xid (PCI:0000:01:00): 154, GPU recovery action changed from 0x0 (None) to 0x1 (GPU Reset Required)

followed by a long stream of _issueRpcAndWait: rpcSendMessage failed with status 0x0000000f and GspRmFree failed entries as the driver tries and fails to communicate with the GSP.

Key characteristics:

  • Occurs at true idle — 0% utilization, 3W power draw, zero processes attached to the GPU at time of crash (confirmed via nvidia-smi/ps aux immediately before each crash)
  • Time-to-crash after boot has ranged from ~4 minutes to ~15 minutes in every test, never longer
  • Once crashed, the GPU is unrecoverable via software — sudo reboot/poweroff hangs indefinitely (kernel stuck waiting on the wedged device; confirmed via ps aux showing an unkillable D/R-state process even under SIGKILL). Only a full cold power cycle recovers it.
  • No AER (PCIe Advanced Error Reporting) errors logged at any point, on any crash — checked via dmesg | grep -i AER and journalctl -k -b -1 | grep -i AER every time. No link-level error precedes the Xid 79; the GPU goes from fully healthy to unresponsive with no warning.

Variables tested and ruled out (each with a clean, isolated test):

  1. PCIe ASPM — Disabled via pcie_aspm=off kernel boot parameter, confirmed active in /proc/cmdline before testing. Crash still occurred (~14 min after boot). Also confirmed via lspci -vvv: LnkCtl: ASPM Disabled at the hardware register level — ASPM was genuinely off, not just requested off. No effect either way.
  2. Driver version — Tested both nvidia-driver-595-open (595.71.05) and nvidia-driver-580-server-open (580.159.03, the version reported as stable in other threads). Identical Xid 79/154 signature on both, similar idle time-to-crash.
  3. Local services/workload — Systematically confirmed no vLLM processes, no local model-serving backend, and a FastAPI app service (which itself has no working local GPU backend currently) all stopped/disabled. Crash still occurred with the GPU completely idle and zero GPU-touching processes running.
  4. Persistence mode / systemd services — Checked nvidia-persistenced (running normally, standard service). No unusual auto-starting services found via full systemctl audit.
  5. Sysfs-level ASPM override (/sys/bus/pci/devices/.../link/l1_aspm) — Not writable on this device/kernel (likely because ASPM is already fully disabled at the hardware level per #1).

Not yet conclusively tested:

  • BIOS downgrade from F10a (AGESA 1.3.0.1b) to F8 (AGESA 1.2.8.0) — in progress, will report back
  • Testing on Windows (dual-boot present but Windows bootloader currently broken after Ubuntu install; repair pending)
  • Swapping to a different PSU/GPU/system to isolate hardware vs. firmware

PCIe link state observation (may or may not be relevant): On a fresh boot with GPU at idle, lspci -vvv shows:

LnkSta: Speed 2.5GT/s (downgraded), Width x16
LnkCtl2: Target Link Speed: 32GT/s

Not sure yet if this is simply normal NVIDIA idle power-saving link downclocking (recovers under load) or related to the underlying issue — haven’t been able to test recovery under load yet before the next crash occurred.

Summary

This looks consistent with the GSP firmware heartbeat timeout pattern reported elsewhere in this thread and in the related AGESA-focused report (Xid 79 GSP Firmware Crash Under Sustained CUDA Load, Gigabyte board). In my case specifically: ASPM is conclusively not the cause (ruled out at both kernel-parameter and hardware-register level), and the driver version doesn’t matter (595 and 580 both affected identically). Crashes occur reliably within minutes of boot at complete idle, with no preceding AER/link error, suggesting an internal GSP/firmware fault rather than a PCIe signaling or platform power-delivery issue — though I can’t fully rule out AGESA/platform firmware interaction until the F8 downgrade test completes.

Happy to provide full dmesg/journalctl logs or run additional diagnostics if useful to anyone looking into this.

RTX 5090 (GB202) + Ryzen 9 9950X3D: “GPU fallen off the bus” / TDR under load and at idle (Windows)

I encountered similar issues on a similar system; maybe additional data helps.

System Information

Component Detail
GPU NVIDIA RTX 5090 32GB (ZOTAC SOLID)
Motherboard Gigabyte X870E AORUS ELITE WIFI7, BIOS F11 (F5 also affected)
CPU AMD Ryzen 9 9950X3D
RAM 64GB (2×32) DDR5 @ 4800 MT/s
PSU Seasonic PRIME TX-1600 Noctua Edition, native 12V-2x6 cable
OS Windows 11 (Build 26200)

Symptom

The failure presents in two ways:

Variant A — GPU drops off the bus, system stays up:

  • Monitors lose signal
  • GPU fans ramp up aggressively
  • GPU output never recovers
  • GPU is no longer visible to the system (only the motherboard HDMI output works)
  • Requires a reboot to restore GPU functionality

Variant B — black screen + automatic reboot.

In both cases the only reliable recovery is a full reboot / cold power cycle.

When it occurs

  • Crashes happened during gaming (low GPU load, e.g. FPS locked CS2 and HOMM:OE).
  • Crashes have also occurred after the system has idled for a long time.

Crash Signature

Every occurrence logs a driver timeout/watchdog event, similar to:

Problem Event Name : LiveKernelEvent
Code               : 141
Parameter 1        : ffffb801ae578010
Parameter 2        : fffff80e76997e60
Parameter 3        : 0
Parameter 4        : ffffb801ecf2c080

Associated events that appear sporadically around the crash:

Event ID Source Details
153 nvlddmkm \Device\Video3 — GpuRcReset TDR occurred on GPUID:100
14 nvlddmkm \Device\000000de CMDre 00000026 0000fffc ffffffff 0000000f ffffffff
10 Realtek Realtek PCIe 2.5GbE Family Controller is reset by ESD timer
15 HAL IOMMU error (details below)

IOMMU error detail:

The IOMMU has detected an error.

Device:            0x7900
Fault Information: 0xFEF341100
FaultReason:       0x6
ExtendedData:      0x0

Bugcheck (captured occurrence)

One of the automatic-reboot occurrences produced a 0x116 VIDEO_TDR_FAILURE bugcheck. Minidump: C:\Windows\Minidump\070226-22828-01.dmp.

VIDEO_TDR_FAILURE (116)
Attempt to reset the display driver and recover from timeout failed.
Arg1: ffffd50a3b9dc010  (pointer to TDR_RECOVERY_CONTEXT)
Arg2: fffff8043d2054c0  (responsible device driver module — nvlddmkm)
Arg3: ffffffffc000009a  (NTSTATUS of last failed operation — 0xC000009A = STATUS_INSUFFICIENT_RESOURCES)
Arg4: 0000000000000004

FAILURE_BUCKET_ID: 0x116_IMAGE_nvlddmkm.sys
MODULE_NAME:       nvlddmkm
IMAGE_NAME:        nvlddmkm.sys

Stack (TDR reset path):

nt!KeBugCheckEx
dxgkrnl!TdrBugcheckOnTimeout+0x101
dxgkrnl!ADAPTER_RENDER::Reset+0x220
dxgkrnl!DXGADAPTER::Reset+0x58a
dxgkrnl!TdrResetFromTimeout+0x15
dxgkrnl!TdrResetFromTimeoutWorkItem+0x22
nt!ExpWorkerThread+0x4bb
nt!PspSystemThreadStartup+0x5a
nt!KiStartSystemThread+0x34

Variables Tested

Variable Result
GPU / CPU / chipset driver updates No change
BIOS updates (F5 → F11) No change
PCIe ASPM disabled No change
PCIe forced to Gen4 No change
Disabling CPU C-states ~4 weeks without issues, then the issue returned

Notes

  • Not reliably reproducible on demand.
  • GPU issues noticed since May 2026.

UPDATE: Detailed Log Captures and Failed Isolation Steps

I have captured the exact forensic log signatures immediately after the crash occurred and ruled out a few more variables.

System Environment Context:

  • OS: Ubuntu (Kernel 7.0.0-27-generic)

  • GPU: NVIDIA RTX 5090 (32GB) running Open Kernel Modules

  • Platform: AMD Ryzen AM5 / Gigabyte Motherboard

1. Additional Variables Tested (No Change)

  • Driver Isolation: Upgraded driver from 580.150.x to 580.172.x. The GPU still drops offline under the exact same conditions.

  • Motherboard BIOS Isolation: Flashed between the F10a beta BIOS and the F8 stable release. The issue persists across both versions, ruling out a specific motherboard firmware version bug.

  • Persistence Mode: Verified that keeping persistence mode active does not prevent the drop. The system survived for roughly 12.5 hours before dropping from the bus while completely idle.

2. Exact Dmesg / Kernel Crash Signature

The system remains running, but nvidia-smi throws: Unable to determine the device handle for GPU0: 0000:01:00.0: Unknown Error.

Right when the card vanished from the bus during an idle period, dmesg recorded a barrage of failing RPC synchronization calls to the GSP firmware, followed by an execution journal panic:

Plaintext

[Tue Jul  7 23:04:57 2026] NVRM: nvCheckOkFailedNoLog: Check failed: GPU lost from the bus [NV_ERR_GPU_IS_LOST] (0x0000000F) returned from nvdEngineDumpCallbackHelper(pGpu, pPrbEnc, pNvDumpState, pEngineCallback) @ nv_debug_dump.c:273
[Tue Jul  7 23:04:57 2026] NVRM: _issueRpcAndWait: rpcSendMessage failed with status 0x0000000f for fn 78 sequence 1954!
[Tue Jul  7 23:04:57 2026] NVRM: nvCheckOkFailedNoLog: Check failed: GPU lost from the bus [NV_ERR_GPU_IS_LOST] (0x0000000F) returned from nvdEngineDumpCallbackHelper(pGpu, pPrbEnc, pNvDumpState, pEngineCallback) @ nv_debug_dump.c:273
[Tue Jul  7 23:04:57 2026] NVRM: _issueRpcAndWait: rpcSendMessage failed with status 0x0000000f for fn 78 sequence 1955!
...
[Tue Jul  7 23:04:57 2026] NVRM: nvCheckOkFailedNoLog: Check failed: GPU lost from the bus [NV_ERR_GPU_IS_LOST] (0x0000000F) returned from nvdEngineDumpCallbackHelper(pGpu, pPrbEnc, pNvDumpState, pEngineCallback) @ nv_debug_dump.c:273
[Tue Jul  7 23:04:57 2026] NVRM: nvAssertFailedNoLog: Assertion failed: status == NV_OK @ journal.c:2270

The error status 0x0000000F points directly to NV_ERR_GPU_IS_LOST. The driver is losing communication registers across the physical PCIe highway entirely while the system sits idle.

3. Current Working Hypothesis & Next Steps

Based on cross-platform telemetry from similar AM5/X870E configurations paired with Blackwell architectures, this appears to be a severe platform interconnect / power-state synchronization breakdown rather than defective GPU silicon.

When the system goes into deep idle, the AMD CPU’s internal fabric power management (C-states) or motherboard PCIe ASPM drops voltages/clocks. When a monitoring daemon or background script pings the card, the latency to retrain the link causes the GSP firmware to miss its heartbeat window, instantly triggering a safety disconnect.

I am currently deploying the following kernel and hardware-level workarounds to force the CPU interconnect and PCIe bus to remain locked at full power:

  1. GRUB Kernel Parameters: Adding pcie_aspm=off nvidia.NVreg_EnableRuntimePM=0 amd_iommu=pt processor.max_cstate=1 to bypass IOMMU page allocation bottlenecks and stop CPU core/driver power scaling.

  2. Hardware/BIOS Changes: Manually forcing the primary PCIe slot link speed down from Gen 5 to Gen 4 to maximize signal integrity margins, and explicitly setting Global C-State Control to Disabled.

I have attached my full nvidia-bug-report.log.gz taken right after this failure loop. If any NVIDIA engineers recognize this specific GSP firmware RPC sequence (fn 78) or have advice on platform-specific IOMMU bugs with 32GB VRAM allocation windows under Linux, please let me know. I will update the thread with the uptime results of the Gen 4 + C-state bypass.

nvidia-bug-report.log.gz (480.3 KB)

Posting what Claude and I could find after a couple of crashes that seem related to this topic. I hope it helps. I don’t know enough about GPU technicalities to contribute with ideas beyond what Claude can dig out.

System Information

Component Detail
GPU NVIDIA GeForce RTX 5090 (GB202), PCI 0000:01:00.0, power limit 600 W
Motherboard ASUS TUF GAMING B850-PLUS WIFI, BIOS 1644 (2026-03-10)
CPU AMD Ryzen 7 9850X3D (integrated Radeon Graphics present but disabled in BIOS — confirmed absent from Modules linked in)
OS Ubuntu 26.04 LTS
Kernel 7.0.0-28-generic
Driver nvidia-driver-595-open, tested on both 595.71.05-0ubuntu0.26.04.1 and 595.84-0ubuntu0.26.04.1 — Xid 79 on both
Session GNOME on Wayland (inferred from mutter-x11-frames process; XWayland in use)

Symptom summary

Four crashes over three days, all requiring a reboot to recover. Two distinct underlying signatures — possibly two separate issues, or two expressions of the same instability.

Time-to-crash after boot is highly variable: 47 min, 36 min, 23h 17min, 3min 47s. This wide spread matters for anyone attempting to validate a fix here — a single crash-free day is not evidence of resolution.


Crash 1 (Jul 27, 09:16–09:20) — console_lock / command-queue hang, no Xid logged

Uptime at crash: ~47 min. Screen went black during light desktop use. Kernel log shows repeated:

[drm:nv_drm_atomic_commit [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Flip event timeout on head 0
nvidia-modeset: ERROR: GPU:0: Error while waiting for GPU progress: 0x0000ca7e:6 2:0:4048:4040

for ~3 minutes, preceded 60s earlier by a single Failed to allocate NVKMS memory for GEM object. Then a hung-task chain: a console_callback workqueue thread stuck in nvEvoMakeRoom/nvkms_yield, holding the kernel console_lock, cascading into systemd-logind, gdm-session-worker, and cached_setup_font (all blocked opening a tty).

The full stack of the holding thread is notable:

console_callback -> change_console -> complete_change_console -> redraw_screen
  -> fbcon_switch -> fb_pan_display -> drm_fb_helper_pan_display
  -> drm_client_modeset_commit_locked -> drm_atomic_commit
  -> nv_drm_atomic_commit -> ApplyModeSetConfig -> nvFlipEvo -> nvEvoMakeRoom -> nvkms_yield

i.e. a VT/console switch driving an fbcon modeset through nvidia-drm’s atomic commit path, which then blocked indefinitely in nvEvoMakeRoom (no timeout on that wait) while holding console_lock. Since the 595 series enables nvidia-drm.ko modeset=1 by default, fbcon is now routed through this path where it previously was not — potentially relevant to whether this signature is new in 595.


Crash 2 (Jul 28, 08:40:38) — Xid 79, GSP RPC failure

Uptime at crash: ~36 min. Occurred at idle (text editor only, fans not spinning, ~10 W draw with brief spikes to ~65 W).

NVRM: Xid (PCI:0000:01:00): 79, GPU has fallen off the bus.
NVRM: Xid (PCI:0000:01:00): 154, GPU recovery action changed from 0x0 (None) to 0x1 (GPU Reset Required)

followed 20 s later by a burst of ~50+ _issueRpcAndWait: rpcSendMessage failed with status 0x0000000f for fn 10 / GspRmFree failed / GPU lost from the bus [NV_ERR_GPU_IS_LOST], then a kernel WARNING at nvidia_dev_put+0xcc (nv.c:5384) via nvidia_close as mutter-x11-frames was killed, then Flip event timeout on head 0.

A prior sustained compute workload at ~400 W ran without issue on this system. All four crashes occurred at idle or light/bursty load; none under sustained heavy load.


Crash 3 (Jul 29, 08:44:46) — Xid 79, with PCIe link telemetry

Uptime at crash: 23h 17min (on 595.84). Occurred while browsing Google Maps (light, intermittent rendering).

NVRM: Xid (PCI:0000:01:00): 79, pid=120583, name=nvidia-smi, GPU has fallen off the bus.
NVRM: Xid (PCI:0000:01:00): 154, GPU recovery action changed from 0x0 (None) to 0x1 (GPU Reset Required)

I had a monitoring loop running (nvidia-smi --query-gpu=temperature.gpu,power.draw,power.limit,pcie.link.gen.current,pcie.link.width.current, every 5s), hence nvidia-smi as the attached process — see crash 4 for why I don’t think that is causal. Telemetry for the 5 minutes preceding:

pcie.link.gen.current (58 samples, 5s interval): Gen1 x9, Gen2 x29, Gen5 x19
pcie.link.width.current: constant x16 throughout — no lane narrowing at any point
temperature.gpu: 37-43 C throughout
power.draw: ~10-89W, loosely correlated with the Gen5 samples
last successful sample (5s before crash): 43 C, 59.88W, Gen5, x16

The link was cycling between Gen1/Gen2 and Gen5 on nearly every sample under this bursty light load. Constant x16 width and normal temperatures argue against mechanical seating issues and thermal causes respectively.

Driver 595.84 was installed specifically to test the “suspend and resume failure with RTD3 runtime power management” fix in that release’s changelog. It did not resolve the issue — though note this boot was also the longest crash-free run recorded (23 h), so I cannot conclude 595.84 had no effect either way.


Crash 4 (Jul 29, 08:50:51) — Xid 79, 3min 47s after a warm reboot

NVRM: Xid (PCI:0000:01:00): 79, pid=1935, name=nvidia-modeset/, GPU has fallen off the bus.
NVRM: Xid (PCI:0000:01:00): 154, GPU recovery action changed from 0x0 (None) to 0x1 (GPU Reset Required)

No monitoring script was running this time, and the attached process was the kernel’s own nvidia-modeset/ worker. This weakens the idea that my polling loop was a trigger in crash 3 — the pid/name field appears to just reflect whichever client last touched the resource manager.

Caveat: this followed a warm reboot after crash 3. Given Xid 154 explicitly reports “GPU Reset Required”, and other reports in this forum state only a full cold power cycle recovers the card, crash 4 may not be an independent data point — the GPU may never have been properly reset. I’m treating warm-reboot-after-Xid-79 as contaminated going forward.


Variables ruled out

  • Integrated AMD graphics — disabled in BIOS; amdgpu confirmed absent from the module list at crash time; crashes continued.
  • Display output path — multiple DisplayPort outputs tested from both GPU and (before disabling) motherboard; same result on all.
  • Driver version — 595.71.05 and 595.84 both affected.
  • Thermal — 37-43 C at crash.
  • PCIe lane width degradation — constant x16.
  • Sustained high load — ~400 W compute workload ran clean; crashes occur at idle/light load only.

Not yet tested

  • Screen blanking / DPMS disabled (all four crashes fell in an 08:40-09:20 window, and crash 1’s stack shows a VT/console switch driving the failing modeset — a display power-state transition seems worth ruling out)
  • X11 session instead of Wayland
  • nvidia-drm.fbdev=0 (targets crash 1’s fbcon path specifically)
  • BIOS/AGESA version change (BIOS 1644 currently; other threads here report AGESA version as decisive in both directions)
  • pcie_aspm=off
  • CPU C-state limiting (processor.max_cstate=1 / BIOS Global C-State Control)
  • nvidia.NVreg_EnableRuntimePM=0

Working hypothesis (tentative)

Crashes 2-4 are consistent with the link-retraining / GSP-heartbeat-miss pattern discussed elsewhere in this forum: frequent PCIe link power-state transitions during light or idle workloads opening a window where the GSP misses its heartbeat and the driver declares the device lost. Crash 3’s telemetry supports this; crash 4 shows no external polling client is required, so the trigger may be internal to the driver/GSP’s own periodic activity.

Crash 1 is mechanistically different — a console_lock deadlock via the fbcon/nvEvoMakeRoom path with no Xid at all — and may be a separate bug, possibly newly exposed by modeset=1 becoming default in the 595 series. Note also that nvEvoMakeRoom appears to wait without a timeout; whatever the root cause of the GPU becoming unresponsive, taking console_lock into an unbounded wait is what escalated a display fault into a whole-system hang (SSH was also unreachable).

Happy to attach full nvidia-bug-report.sh output (if Claude helps me retrieve it…).

Claude (Opus) update after new crashes (I = Claude below):

System Information

Component Detail
GPU NVIDIA GeForce RTX 5090 (GB202), PCI 0000:01:00.0, power limit 600 W
Motherboard ASUS TUF GAMING B850-PLUS WIFI, BIOS 1644 (2026-03-10)
CPU AMD Ryzen 7 9850X3D (integrated Radeon Graphics present but disabled in BIOS — confirmed absent from Modules linked in)
OS Ubuntu 26.04 LTS
Kernel 7.0.0-28-generic
Driver nvidia-driver-595-open, tested on both 595.71.05-0ubuntu0.26.04.1 and 595.84-0ubuntu0.26.04.1 — Xid 79 on both
Session GNOME on Wayland (GNOME Shell / mutter 50.1) with XWayland; /dev/dri/card1 (nvidia-drm) via atomic mode setting

Symptom summary

Six crashes over eight days, all requiring a reboot to recover. Three distinct underlying signatures (console_lock hang / Xid 79 bus loss / total silence) — possibly separate issues, possibly one instability expressing itself differently depending on what the GPU was doing.

Time-to-crash after boot is highly variable: 47 min, 36 min, 23h 17min, 3min 47s, ~19 min, 7h 4min. No structure at all. This wide spread matters for anyone attempting to validate a fix here — a single crash-free day is not evidence of resolution.


Crash 1 (Jul 27, 09:16–09:20) — console_lock / command-queue hang, no Xid logged

Uptime at crash: ~47 min. Screen went black during light desktop use. Kernel log shows repeated:

[drm:nv_drm_atomic_commit [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000100] Flip event timeout on head 0
nvidia-modeset: ERROR: GPU:0: Error while waiting for GPU progress: 0x0000ca7e:6 2:0:4048:4040

for ~3 minutes, preceded 60 s earlier by a single Failed to allocate NVKMS memory for GEM object. Then a hung-task chain: a console_callback workqueue thread stuck in nvEvoMakeRoom/nvkms_yield, holding the kernel console_lock, cascading into systemd-logind, gdm-session-worker, and cached_setup_font (all blocked opening a tty).

The full stack of the holding thread is notable:

console_callback -> change_console -> complete_change_console -> redraw_screen
  -> fbcon_switch -> fb_pan_display -> drm_fb_helper_pan_display
  -> drm_client_modeset_commit_locked -> drm_atomic_commit
  -> nv_drm_atomic_commit -> ApplyModeSetConfig -> nvFlipEvo -> nvEvoMakeRoom -> nvkms_yield

i.e. a VT/console switch driving an fbcon modeset through nvidia-drm’s atomic commit path, which then blocked indefinitely in nvEvoMakeRoom (no timeout on that wait) while holding console_lock. Since the 595 series enables nvidia-drm.ko modeset=1 by default, fbcon is now routed through this path where it previously was not — potentially relevant to whether this signature is new in 595.


Crash 2 (Jul 28, 08:40:38) — Xid 79, GSP RPC failure

Uptime at crash: ~36 min. Occurred at idle (text editor only, fans not spinning, ~10 W draw with brief spikes to ~65 W).

NVRM: Xid (PCI:0000:01:00): 79, GPU has fallen off the bus.
NVRM: Xid (PCI:0000:01:00): 154, GPU recovery action changed from 0x0 (None) to 0x1 (GPU Reset Required)

followed 20 s later by a burst of ~50+ _issueRpcAndWait: rpcSendMessage failed with status 0x0000000f for fn 10 / GspRmFree failed / GPU lost from the bus [NV_ERR_GPU_IS_LOST], then a kernel WARNING at nvidia_dev_put+0xcc (nv.c:5384) via nvidia_close as mutter-x11-frames was killed, then Flip event timeout on head 0.

A prior sustained compute workload at ~400 W ran without issue on this system. All four crashes occurred at idle or light/bursty load; none under sustained heavy load.


Crash 3 (Jul 29, 08:44:46) — Xid 79, with PCIe link telemetry

Uptime at crash: 23h 17min (on 595.84). Occurred while browsing Google Maps (light, intermittent rendering).

NVRM: Xid (PCI:0000:01:00): 79, pid=120583, name=nvidia-smi, GPU has fallen off the bus.
NVRM: Xid (PCI:0000:01:00): 154, GPU recovery action changed from 0x0 (None) to 0x1 (GPU Reset Required)

I had a monitoring loop running (nvidia-smi --query-gpu=temperature.gpu,power.draw,power.limit,pcie.link.gen.current,pcie.link.width.current, every 5 s), hence nvidia-smi as the attached process — see crash 4 for why I don’t think that is causal. Telemetry for the 5 minutes preceding:

pcie.link.gen.current (58 samples, 5s interval): Gen1 x9, Gen2 x29, Gen5 x19
pcie.link.width.current: constant x16 throughout — no lane narrowing at any point
temperature.gpu: 37-43 C throughout
power.draw: ~10-89W, loosely correlated with the Gen5 samples
last successful sample (5s before crash): 43 C, 59.88W, Gen5, x16

The link was cycling between Gen1/Gen2 and Gen5 on nearly every sample under this bursty light load. Constant x16 width and normal temperatures argue against mechanical seating issues and thermal causes respectively.

Driver 595.84 was installed specifically to test the “suspend and resume failure with RTD3 runtime power management” fix in that release’s changelog. It did not resolve the issue — though note this boot was also the longest crash-free run recorded (23 h), so I cannot conclude 595.84 had no effect either way.


Crash 4 (Jul 29, 08:50:51) — Xid 79, 3min 47s after a warm reboot

NVRM: Xid (PCI:0000:01:00): 79, pid=1935, name=nvidia-modeset/, GPU has fallen off the bus.
NVRM: Xid (PCI:0000:01:00): 154, GPU recovery action changed from 0x0 (None) to 0x1 (GPU Reset Required)

No monitoring script was running this time, and the attached process was the kernel’s own nvidia-modeset/ worker. This weakens the idea that my polling loop was a trigger in crash 3 — the pid/name field appears to just reflect whichever client last touched the resource manager.

Caveat: this followed a warm reboot after crash 3. Given Xid 154 explicitly reports “GPU Reset Required”, and other reports in this forum state only a full cold power cycle recovers the card, crash 4 may not be an independent data point — the GPU may never have been properly reset. I’m treating warm-reboot-after-Xid-79 as contaminated going forward.



Userspace signature: identical NULL dereference in libnvidia-glcore across two driver versions

Two OpenGL client segfaults are logged since Jul 24, and both coincide with GPU crashes:

Jul 27 09:17:11 kernel: ptyxis[11941]: segfault at f0 ip 000076604a62c60e sp 00007ffdb4b46080 error 4 in libnvidia-glcore.so.595.71.05[e2c60e,766049c00000+c00000] likely on CPU 0
Jul 29 08:50:56 kernel: ptyxis[8396]:  segfault at f0 ip 00007f20de02c94e sp 00007ffe85172c60 error 4 in libnvidia-glcore.so.595.84[e2c94e,7f20dd600000+c00000] likely on CPU 1

Both are error 4 (userspace read of a non-present page) at fault address 0xf0 — i.e. a NULL pointer dereference reading a field at offset 240. The reported file offsets are 0xE2C60E (595.71.05) and 0xE2C94E (595.84) — 832 bytes apart across two separate builds of the library, so this is the same code path in both cases, not two unrelated faults.

Ordering differs between the two occurrences:

  • Jul 27: the segfault at 09:17:11 came after the Failed to allocate NVKMS memory for GEM object at 09:16:10, but before the first Flip event timeout at 09:17:18. (update-notifier-crash.service failing at 09:17:14-15 is apport handling this very segfault.)
  • Jul 29: the segfault at 08:50:56 came 5s after Xid 79 at 08:50:51 — clearly a consequence there.

So the segfault is a consequence in both cases, but on Jul 27 a consequence of an allocation failure rather than of a bus disconnect. Either way, libnvidia-glcore appears to NULL-deref rather than returning an error when GPU resources become unavailable — that looks like an independently fixable defect regardless of the root cause of the GPU going away.

Core dump analysis of the Jul 29 ptyxis crash (gdb /usr/bin/ptyxis CoreDump) confirms the mechanism:

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f20de02c94e in ??? () at /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.595.84
#1  0x00007f20ddf2b3ad in ??? () at /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.595.84
#2-#15                  in ??? () at /usr/lib/x86_64-linux-gnu/libgtk-4.so.1     (GSK renderer internals)
#16 0x00007f21201df5ab in gsk_renderer_render () at /usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#17-#19                 in ??? () at /usr/lib/x86_64-linux-gnu/libgtk-4.so.1
#20-#26                 g_signal_emit / g_signal_emit_valist (libgobject-2.0)
#27-#31                 g_main_context_iteration (libglib-2.0)
#32 g_application_run (libgio-2.0)
#34-#36 __libc_start_main / main

rdi            0x0                 0
rsi            0x1                 1

Two points from this:

  1. rdi = 0x0 — the first argument register is NULL at the fault. Combined with segfault at f0, the function was called with a NULL pointer and dereferenced a field 240 bytes into the structure it should have pointed to. (Caveat: registers reflect frame 0’s state and could in principle have been reused, but with fault address 0xf0 the inference seems sound.)

  2. Frames 0 and 1 are both inside libnvidia-glcore. The NULL was passed down from another function within the driver library itself, not supplied by GTK. This looks like an unchecked NULL return propagating internally after the GL context was lost — not API misuse by the client.

The crash occurred inside gsk_renderer_render() from the ordinary GTK main loop, i.e. during routine frame rendering, ~5 s after the GPU went away — not during teardown or initialization.

Second userspace signature: libnvidia-eglcore calls abort() — identical code path in two different processes, five days apart

Two separate compositor-side processes have aborted from inside libnvidia-eglcore after the GPU went away. Both produced usable backtraces.

Xwayland, Jul 29 (crash 3) — from Xwayland’s own backtrace printer, SIGABRT:

(EE) 2-5:   libc.so.6  (pthread_kill / gsignal / abort)
(EE) 6:     libnvidia-eglcore.so.595.84 (0x77218a200000+0x2bd20e)   <-- caller of abort()
(EE) 7-18:  libnvidia-eglcore.so.595.84 (+0xaf7def, +0xaf8389, +0xa5cb42, +0xa5d750, ...)
(EE) 19-20: libEGL_nvidia.so.0 (+0xaa198, +0xa8c28)
(EE) 23-30: /usr/bin/Xwayland  (startup path from main -> EGL init)
Fatal server error: (EE) Caught signal 6 (Aborted). Server aborting

gnome-shell, Aug 3 (crash 6) — from the apport core dump, SignalName: SIGABRT:

#10 __GI___abort ()
#11 ??? () at libnvidia-eglcore.so.595.84        (0x71cbbdcbd20e)
#12-#23 ??? () at libnvidia-eglcore.so.595.84
#24-#25 ??? () at libmutter-cogl-18.so.0
#26 cogl_texture_allocate () at libmutter-cogl-18.so.0
#27 ??? () at libmutter-18.so.0
#31-#33 wl_event_loop_dispatch () at libwayland-server.so.0
#34-#37 g_main_loop_run () at libglib-2.0.so.0
#38 meta_context_run_main_loop () at libmutter-18.so.0

Resolving the gnome-shell frames against an inferred library base of 0x71cbbda00000 gives four consecutive frames identical to the Xwayland abort:

Frame Xwayland (Jul 29) gnome-shell (Aug 3)
caller of abort() +0x2bd20e +0x2bd20e
next +0xaf7def +0xaf7def
next +0xaf8389 +0xaf8389
next +0xa5cb42 +0xa5cb42
next +0xa5d750 +0xa5d89b

(The base address is inferred by subtraction, but four exact matches make the inference safe. The fifth frame differs by 331 bytes — probably two call sites within the same function.)

The two reached that path from very different places: Xwayland during EGL initialization at session restart, gnome-shell during routine texture allocation in the main loop, servicing a Wayland client buffer commit via cogl_texture_allocate(). So the abort is not confined to an init-time corner case.

Note that gnome-shell is the Wayland compositor here. abort() called from inside a library terminates the process with no opportunity for error handling, which takes down the whole graphical session — this is the direct cause of the black screen, not a downstream casualty. A GTK application can at least be steered away from the GL path (GSK_RENDERER=cairo); a compositor has no such option.

Together with the glcore segfault, the two NVIDIA userspace libraries fail in two different ways and neither returns an error to the caller:

Library API Behaviour when the GPU disappears
libnvidia-glcore OpenGL NULL pointer dereference → SIGSEGV
libnvidia-eglcore EGL explicit abort() → SIGABRT

Sequence at crash 3 (Jul 29):

08:44:46  Xid 79 (GPU has fallen off the bus) + nv_drm_semsurf_wait_fence_work_cb error
08:44:47  gnome-shell (pid 6478) crashes with signal 6
          -> GDM restarts the session
08:44:53  new Xwayland (pid 9074) aborts inside libnvidia-eglcore during EGL init
08:44:57  Flip event timeout on head 0 (repeats)
08:44:58  systemd SIGKILLs mutter-x11-frames
08:45:03  WARNING nvidia/nv.c:5384 at nvidia_dev_put+0xcc/0xd0, repeated on CPUs 2/9/10/11
          for both mutter-x11-frames and Xwayland
08:45:03  gsd-xsettings: XIO fatal IO error 4 on X server

The repeated nvidia_dev_put warnings across many CPUs and many processes look like a refcount imbalance in the kernel module when clients release GPU handles for a device that no longer exists — a third defect in the same family. At crash 6 these fired for at least a dozen distinct processes (code, qgis, signal-desktop, ibus-x11, Xwayland, mutter-x11-frames, gmain, several Vulkan worker threads) across CPUs 0-12.


Crash 6 (Aug 3, 13:42:44) — Xid 79 with SysRq diagnostics: the kernel stays fully alive

Uptime at crash: 7h 4min (boot 06:38:10). Light desktop use. First kernel evidence is the Xid itself, with a kernel-side stack showing where the loss was detected:

NVRM: Xid (PCI:0000:01:00): 79, GPU has fallen off the bus.
NVRM: Xid (PCI:0000:01:00): 154, GPU recovery action changed from 0x0 (None) to 0x1 (GPU Reset Required)

  os_dump_stack -> _kgspRpcRecvPoll -> _issueRpcAndWait -> rpcRmApiControl_GSP
    -> RmGssLegacyRpcCmd -> _nv04ControlWithSecInfo -> RmIoctl -> rm_ioctl
    -> nvidia_unlocked_ioctl

i.e. detected while polling for a GSP RPC reply that never arrived, on a userspace ioctl path.

With full SysRq enabled, all three commands executed successfully ~30 s later:

13:43:15  sysrq: Show Blocked State
13:43:22  sysrq: Emergency Sync
13:43:22  Emergency Sync complete
13:43:27  sysrq: Emergency Remount R/O
13:43:27  EXT4-fs (nvme0n1p5): re-mounted ... ro

Filesystem sync completed and remount succeeded, and SysRq+B then rebooted cleanly (journalctl --list-boots shows this boot ending 13:43:27, the next starting 13:43:52). This is not a hard lockup — the kernel was scheduling, running filesystem code and writing to disk the whole time the screen was black. The failure is confined to the graphics stack. /sys/fs/pstore/ is empty, consistent with no panic.

The Show Blocked State output listed only two tasks:

task:nvidia-modeset/ state:D  pid:2036
  __down -> down -> nvkms_kthread_q_callback [nvidia_modeset] -> _main_loop

task:kworker/1:2     state:D  pid:43997   Workqueue: events console_callback
  __down -> down -> console_lock -> console_callback

This is important for interpreting crash 1. Crash 6 exhibits both signatures at once: Xid 79 at 13:42:44, and a console_callback worker blocked on console_lock at 13:43:15. I had been treating the crash-1 console_lock hang as possibly a separate bug from the Xid 79 bus-loss crashes; this strongly suggests they are the same cascade caught at different stages. Crash 1 most likely also began with a bus loss that was never logged before the machine froze — supported by Failed to allocate NVKMS memory for GEM object appearing in both.

The blocked-task list here is much shorter than crash 1’s (which had five tasks including systemd-logind and gdm-session-worker) simply because SysRq+W was pressed 31s after the Xid, whereas crash 1’s hung-task warnings only fired at the kernel’s 122s threshold, by which point the chain had spread.

Note that neither blocked task shows the holder of console_lock — it is presumably runnable rather than in D state, so it does not appear in a W dump. SysRq+L (backtrace all active CPUs) would be needed to identify it.

_usr_bin_Xwayland.1000.crash (10MB, Jul 29 08:44 = crash 3) and _usr_bin_ptyxis.1000.crash (13MB, Jul 29 08:50 = crash 4). That apport successfully wrote 10-13MB to disk means the kernel survived crashes 3 and 4 — only the GPU and the session died. Contrast with crash 1 (SSH unreachable) and crash 5 (zero-byte crash file, journal truncated mid-stream): there appear to be at least three distinct severity levels here.


Crash 5 (Jul 31, ~08:07) — total silence, no Xid, no error messages at all

Uptime at crash: ~19 min (boot 07:47:47). Occurred during ordinary desktop use; screen went black. Disabling GNOME screen blanking and display power management beforehand did not prevent it.

Both journalctl -b -1 -k and the full journalctl -b -1 end at 08:04:17 on an unrelated audit line, with no NVIDIA errors, no Xid, no flip timeouts, no hung-task warnings of any kind. A zero-byte /var/crash/_usr_bin_gnome-shell.1000.crash timestamped 08:07 suggests gnome-shell crashed and apport began a report that was never written — placing the freeze at ~08:07 and implying the system stopped hard enough that neither apport nor journald could flush to disk.

/sys/fs/pstore/ is empty, so no kernel panic was recorded. kdump is loaded but would not fire without a panic. I have since enabled full SysRq to distinguish “kernel alive, GPU dead” from a true hard lockup on the next occurrence.

Variables ruled out

  • Integrated AMD graphics — disabled in BIOS; amdgpu confirmed absent from the module list at crash time; crashes continued.
  • Display output path — multiple DisplayPort outputs tested from both GPU and (before disabling) motherboard; same result on all.
  • Driver version — 595.71.05 and 595.84 both affected.
  • Thermal — 37-43 C at crash.
  • Screen blanking / display power management — disabled in GNOME; crash 5 occurred anyway.
  • PCIe lane width degradation — constant x16.
  • Sustained high load — ~400 W compute workload ran clean; crashes occur at idle/light load only.

Not yet tested

  • X11 session instead of Wayland
  • nvidia-drm.fbdev=0 (targets crash 1’s fbcon path specifically)
  • BIOS/AGESA version change (BIOS 1644 currently; other threads here report AGESA version as decisive in both directions)
  • pcie_aspm=off
  • CPU C-state limiting (processor.max_cstate=1 / BIOS Global C-State Control)
  • nvidia.NVreg_EnableRuntimePM=0

Working hypothesis — and one hypothesis now falsified

I previously suspected frequent PCIe link power-state transitions were opening a window for a GSP heartbeat miss, based on crash 3’s telemetry. Crash 6 falsifies this. Comparing the same telemetry window:

Gen1 Gen2 Gen5
60 samples before crash 3 (Jul 29) 9 32 19
100 samples before crash 6 (Aug 3) 98 2 0

Crash 3 was preceded by the link switching on nearly every sample; crash 6 by half an hour of a completely static Gen1 link. Same outcome, opposite conditions. Frequent link retraining cannot be the common factor.

Also worth recording: a ~367W compute workload ran earlier the same day without incident, and the crash came at ~16W. Load is not the trigger either. And crash 6 at 13:42 breaks the 08:40-09:20 clustering I had noted across the first five crashes — that was an artifact of too few data points.

What remains consistent across all six: the GPU stops responding on the GSP RPC channel while idle or lightly loaded, at wildly varying uptimes, with no PCIe AER errors, normal temperatures and no lane-width degradation beforehand.

Separately from the root cause, the driver’s failure handling looks independently fixable: nvEvoMakeRoom waits without a timeout while console_lock is held (escalating a display fault into a system-wide hang — SSH was unreachable at crash 1), libnvidia-glcore NULL-derefs, libnvidia-eglcore calls abort(), and nvidia_dev_put warns on every client that closes a handle afterwards.

Follow-up: the GPU resets its own PCI config space, and it happens before Xid 79

Seven more crashes since my last post (thirteen total). Two corrections first, then the substantive finding.

Corrections to my earlier post

  • I wrote that crashes only occur at idle or light load. That is wrong. One crash occurred at 414 W under sustained CUDA work, with the link at Gen5 and temperature rising normally (46 → 51 → 55 °C over the preceding 40 s). Both extremes are represented; load is not a factor in either direction.
  • The PCIe link-retraining hypothesis is also dead. One crash was preceded by the link switching speed on nearly every 5 s sample; another by half an hour of a completely static Gen1 link. Same outcome, opposite conditions.

Live inspection during a failure (SSH stayed up)

The link is healthy while the driver reports the device lost:

LnkSta:  Speed 32GT/s, Width x16
DevSta (upstream bridge 00:01.1):  CorrErr- NonFatalErr- FatalErr- UnsupReq-

But the endpoint’s own configuration is back at power-on defaults:

Reads correctly (read-only) Reads as zero (writable)
Vendor 0x10DE, device 0x2B85 Control: I/O- Mem- BusMaster-
Subsystem 0x1043:0x89E3 BAR0/1/3/5 base addresses (type bits intact)
Revision a1, class 0x030000 MSI: Address 0000000000000000 Data: 0000

Every register the driver programmed at init reads its post-reset value; every hardwired register reads correctly. This is not pci_disable_device — that clears Command bits but leaves BARs and the MSI address alone.

The endpoint does log UnsupReq+ with HeaderOF+, but the header log decodes as a host-originated 64-byte memory write (Fmt 3 / Type 0, requester ID 0000) to address 0xF8_120BBC00, which is inside this device’s own BAR3 range. That is the driver writing to a BAR with decoding disabled — a consequence, not a cause.

The GSP heartbeat timeout is a derived symptom

NVRM: tmrGetTimeEx_GH100: NVRM-RC: Consistently Bad TimeLo value ffffffff
NVRM: _kgspIsHeartbeatTimedOut: Heartbeat timed out, currentTimeMs 0 heartbeat 4294967295 ... timeout 5200
NVRM: _kgspRpcRecvPoll: GSP RM heartbeat timed out

4294967295 is 0xFFFFFFFF, and the GPU timer register reads ffffffff as well — the all-ones response from a device that is not decoding memory accesses. The driver is not reading a stale heartbeat; it is reading nothing and computing a timeout from garbage. On this evidence, “GSP heartbeat timeout” is not the primary fault.

Also NVRM: RmLogGpuCrash: failed to save GPU crash data — GSP-side crash data cannot be retrieved for the same reason, which may be why nobody in these threads has been able to show what the firmware was actually doing.

Direct measurement of the ordering

To settle cause versus consequence I ran a systemd service polling /sys/bus/pci/devices/0000:01:00.0/config once per second, logging kernel-monotonic timestamps and dumping dmesg on the first change:

Event Monotonic
Previous poll — config intact (cmd=0x0407 bar0=0xd8000000) 2898.28
Config read as wiped (cmd=0x0000 bar0=0x00000000) 2899.28
NVRM: Xid 79, GPU has fallen off the bus 2899.466
Flip event timeout on head 0 2911.370

More conclusive than the timestamps: the dmesg snapshot taken at the moment of detection contains no NVIDIA lines at all. The most recent kernel message was an unrelated AppArmor audit entry thirteen minutes earlier. At the instant the config space was already zeroed, the driver had logged nothing.

Subsequent polls logged cmd=0x0000 bar0=0x00000000 once a minute for seven minutes until reboot. Nothing — neither the kernel PCI layer nor the driver — ever attempts to reprogram the device, which is why the state persists until a reboot.

Revised causal chain

  1. Unknown trigger → GPU PCI configuration returns to power-on defaults
  2. Memory decoding off → all MMIO reads return 0xFFFFFFFF
  3. Driver’s GPU-attached sanity check fails → Xid 79
  4. Heartbeat computed from garbage → “heartbeat timed out” (derived)
  5. Continued MMIO writes → UnsupReq logged by the endpoint
  6. If a modeset is in flight → nvEvoMakeRoom spins holding console_lock → system-wide hang
  7. Compositor EGL call → abort() → session dies

Steps 6 and 7 are conditional. Three crashes produced no fallout at all: zero blocked tasks, no nvidia_dev_put warnings, no crash dumps, compositor still alive after 33 minutes. The screen goes black in every case — that is unavoidable once the device stops decoding — but the hang and the session death only fire on timing.

The open question is now narrower: what causes a GB202 to reset its own PCI configuration space, at any load, at arbitrary uptimes, while the link stays up at 32 GT/s x16 with no bridge-side errors?

Happy to share the polling service if anyone wants to reproduce the measurement; it is a few lines of shell and costs nothing.

Just adding to the chorus here, I’m also experiencing this issue on Fedora 44.

I also ran into some kind of POWER_DRIVER_STATE BSOD in Windows.

I can collect dumps and logs if that’s helpful, but it’s the same as what others have already posted. Just trying to raise signal here.

Hi, I’ve been experiencing a similar issue to yours were the GPU would fall of the bus, but for me this only happen when under load.

My setup:
RTX 5070 Ti (GB203), Zotac,
Fedora 44, drivers 610.43.03 and 610.57.04

same Xid 79 + Xid 154 (OS Reboot required) signature.
**
Reproduction:** Consistent under gaming load

  • Palworld and Doom: The Dark Ages crash almost immediately after entering gameplay;
  • Terra Nil can run a long time before hitting it.

So in my case there does seem to be a load correlation, in contrast to your finding that load isn’t a factor. Maybe just a difference in what’s triggering it underneath.

I Ruled out motherboard/platform: reproduced identically on two different motherboards (a Gen3-only board, then a Gen4-capable replacement after an unrelated
hardware failure forced a swap); same crash on both, so whatever this is, it’s not board-specific in my case either. That’s consistent with your point that this
isn’t a simple PCIe/ASPM issue.

Config space on my end also goes unreadable while the device is wedged (lspci reports Unknown header type 7f on both GPU functions), consistent with your “config
space reset to power-on defaults” finding rather than a normal driver-level fault.

I have two nvidia-bug-report.sh logs from separate crashes if useful for comparison.

nvidia-bug-report.log (1).gz (415.5 KB)

nvidia-bug-report.log.old.gz (689.2 KB)

Hi,

Adding another RTX 5090 / GB202 data point — four Xid 79/154 in ~32 hours, including one reproduction that rules out the slot/topology on my system, and a live capture of the dead-GPU state that corroborates the config-space-reset measurement earlier in this thread.

System

  • RTX 5090 32 GB Founders Edition (GB202)
  • Ryzen 9 9900X, Gigabyte X870 EAGLE WIFI7, BIOS F7
  • Ubuntu 26.04, kernel 7.0.0-29-generic, GNOME/Wayland
  • nvidia-driver-595-open 595.84 (Ubuntu-packaged)
  • 1200 W PSU (native 12V-2x6), UPS-backed; stock clocks, default power limit, persistence mode off, no custom kernel parameters

Incidents (2026-08-09/10)

  1. 03:06 — Xid 79 → 154 under sustained video-diffusion inference. GPU was then in a chipset-connected Gen4 x1 slot.
  2. 15:51 — same; this one alone also logged tmrGetTimeEx_GH100: Consistently Bad TimeLo value ffffffff, GSP-RM/LibOS heartbeat timeouts, and a failed crash-data save.
  3. 19:20 — same, no TimeLo/heartbeat precursor. I captured a live safe-mode bug report while the GPU was still dead (details below).
  4. Next day 11:24 — same failure ~26 h after moving the card to the CPU-attached slot, verified Gen5 x16 with all lanes negotiated beforehand. So on this system the failure is independent of chipset-vs-CPU path, slot, and seating.

Live post-mortem state (incident 3)

  • Endpoint config space read all-Fs for both functions (lspci: Unknown header type 7f).
  • The downstream port feeding the GPU had latched DevSta: CorrErr+ FatalErr+ UnsupReq+ and CESta: BadTLP+ AdvNonFatalErr+, but the link was still trained, at 2.5 GT/s (power-on speed; port caps 16 GT/s). Upstream of that switch everything was clean at full speed.
  • No kernel AER/DPC event was delivered for any of the four incidents; cumulative sysfs AER counters on healthy boots are zero.

That looks consistent with the direct measurement earlier in this thread: config space back at power-on defaults while the link stays up, rather than a physical surprise-down.

Other observations

  • All four deaths came 60–80 s into sustained near-peak load, but the same workload class also completes normally (a comparable run finished in 233 s one hour before incident 4) — load-correlated, not deterministic. Individual workload variables (custom nodes, sampler, resolution, duration) were falsified across the incidents.
  • In incident 4 the driver logged A GPU crash dump has been created… run nvidia-bug-report.sh as root… before the NVIDIA kernel module is unloaded — first time the dump save succeeded — but it was lost at the required reboot. If anyone knows a supported way to persist that dump automatically, that seems like the highest-value artifact this failure produces.
  • Powered-down inspection after incident 4: 12V-2x6 clean at both ends (no discoloration/melt), edge connector cleaned and reseated — and the failure had already reproduced before and after reseating, in two different slots.
  • No ASPM/C-state/runtime-PM parameter bundles applied, for the reasons discussed above in the thread.
  • I now log per-second power/clocks/thermals/PCIe-link/AER to disk (fsynced) and have a forced-command path that captures a root safe-mode report within minutes of failure, so I can provide a full pre-mortem + post-mortem trace for the next occurrence. Full unredacted reports have been sent to linux-bugs@nvidia.com; happy to share specifics here on request.

Update on my 2026-08-10 post (RTX 5090 FE, Ryzen 9 9900X / X870, Ubuntu 26.04, 595.84): a fifth Xid 79/154, and this one is fully instrumented — I now run a per-second telemetry logger (power/clocks/temps/link/AER, fsynced) plus a watchdog that auto-captures a root safe-mode bug report on the Xid 79 kernel line. The report ran 10 seconds after the failure.

What the capture shows:

1. Trigger is model-agnostic. This crash came ~35 s into an LTX-2.3 video generation — a completely different model family and code path from the MiniMax jobs in my first four incidents (a smaller LTX job succeeded two minutes earlier). Across five incidents, time-to-failure from job start spans ~35–80 s; the only invariant is sustained near-575 W load.

2. No electrical distress before death. Final 1 Hz samples before the loss: steady 530–575 W, 100 % util, ~2.4–2.6 GHz, temps 81→86 °C, fans to 100 %, throttle mask = normal SW power cap only. No droop, no link change, no AER movement, up to the last sample.

3. The config-space-reset signature, on a CPU-direct link, with a pristine root port. Ten seconds post-mortem:

00:01.1 (CPU root port to the GPU):
  DevSta: CorrErr- NonFatalErr- FatalErr- UnsupReq- ...
  LnkCap: Speed 32GT/s, Width x16
  LnkSta: Speed 2.5GT/s, Width x16        <-- still trained, power-on speed
01:00.0 / 01:00.1 (GPU):
  !!! Unknown header type 7f              <-- all config reads return FF

Link up and trained at ×16, zero error bits ever latched on the root port, endpoint config gone. This matches erik.bjornemo’s “config space returns to power-on defaults while the link stays healthy” measurement — a card losing power could not keep its PHY trained, so on this machine card/system power delivery looks excluded as root cause (physical inspection incl. 12V-2x6 both ends was also clean).

4. GSP goes silent mid-conversation. The kernel’s RPC history shows the previous GSP_RM_CONTROL answered in 894 µs and the next one never answered. The Bad TimeLo ffffffff / heartbeat-timeout lines appeared in this incident but not in my incidents 3–4 — they look like an intermittent downstream symptom of the all-Fs reads, not a precursor.

5. RmLogGpuCrash: failed to save GPU crash data in 4 of my 5 incidents (one reported a dump created, which was then lost to the reboot). Since collection seems to need the GPU/GSP that just vanished, I’d love to hear from NVIDIA whether anything host-side improves dump-capture odds, or whether the RPC-history log is the intended fallback.

Full unredacted report went to linux-bugs@nvidia.com (follow-up to my 2026-08-10 mail). I can provide a synchronized pre-mortem trace + 10-second post-mortem report for every future occurrence, and can run controlled A/Bs (reduced power limit, JEDEC vs EXPO memory, driver branch) — happy to coordinate if anyone from NVIDIA is triaging this.

Did you try replacing your PSU? Most likely this is caused by the PSU being unstable or unable to handle the load spike during power state transition, causing the card to fall off the bus. Ryzen 9 boost + 5090 incurs huge load spikes during power state transition, and a 1200W/1300W PSU may not have enough head room for that, which can cause the GPU to enter a faulty state and stop responding to firmware heart beat, though it may be stable at consistent high load. The card could also be faulty, but I would highly recommend try upgrading/replacing the PSU first, because I went through the pain of card RMA and replacement but issue still occurs, but replacing the PSU is much easier and I wish I’d done that as the first step.

Personally I encountered the same issue - display went black, GPU lost, nvlddmkm 153/14 register dump, alternating uncorrectable SRAM error in the PCIE REORDER / P2PREQ unit. The crash did not occur for me at sustained load but at idle, and most times a few minutes after a workload has finished. I spent an entire month and tried everything i could find online, including GPU RMA replacement and purchase a brand new card of different brand. Nothing helped until I swapped my Super Flower Leadex VII 1300W PSU with a Corsair HX1500i. Prior to the swap I got almost 15+ crashes a day. After the swap I haven’t had a single crash in two days. I tried to make the GPU go into power state transition by playing 3D games and quitting and still so far had no issues. I would highly recommend giving it a shot. I would imagine any PSU with TDP > 1500W should be sufficient, but make sure to buy a PSU from a different and reputable brand from the one you have.

Update from my Aug 10/12 posts (RTX 5090 FE, X870/9900X, Ubuntu 26.04, 595.84): two more incidents (6 and 7 total), and a controlled A/B that produced the cleanest discrimination I’ve managed. My logger now records per-second GPU power/clocks/temp plus five motherboard thermal zones (chipset, VRM, PCIe area), fsynced, so the final seconds before each loss are preserved.

The A/B result, short version:

  • 400 W power limit (nvidia-smi -pl 400) + aggressive case fans: 11 days, zero incidents, including 17.6+ hours above 390 W in one boot. GPU core peaked at 69 °C.
  • Stock 575 W, same cooling: dead in ~35 seconds on the first heavy job. Power ~550 W, GPU core 87–91 °C at the loss.
  • Board thermals at the moment of death: chipset 54 °C, VRM 52 °C — identical to idle. So on my machine the chipset/airflow mechanism from thread 369440 is falsified with instrumentation: the board was cool and the card died anyway. (Their fan fix genuinely holds for them — possibly two sub-populations under one symptom, or airflow fixes that work by incidentally lowering GPU-core temps.)

Other data points:

  • Incident 6 (BIOS F12 + JEDEC memory — both excluded as factors by the crash itself) died at the load-release boundary: the job had effectively completed, the app logged success ~0.5 s after the Xid. Also the only incident reporting Xid 154 recovery action 0x1 (GPU Reset Required) rather than 0x2.
  • Across all 7 incidents the invariant is the GPU itself at ~500–575 W / 86–91 °C core. Two slots, reseat/inspection (incl. 12V-2x6 both ends), BIOS F7 and F12, EXPO and JEDEC, board thermals, PSU/UPS telemetry — all falsified locally; the link is still trained with a clean root port post-mortem every time.
  • Re the Aug 14 PSU-swap suggestion: plausible for some systems, but on mine the PCIe link stays trained through the event, rails are steady to the last 1 Hz sample, and the root port latches no errors — a supply brown-out should not look like that. Worth keeping distinct from the config-space-reset signature.

Question for anyone from NVIDIA reading: 595.91.07’s notes mention removing a hard-coded Completion Timeout (CTO) value for GB202/GB203. Given this bug’s signature is config reads timing out to all-Fs while the link stays up, is that change relevant, and is 595.91.07 worth testing for this?

Practical takeaway for fellow sufferers meanwhile: nvidia-smi -pl 400 has been a 100 % effective mitigation here, at a ~10–15 % generation-speed cost. Full reports for both new incidents went to linux-bugs@nvidia.com.

Another Blackwell Xid 79 at idle, on GB203 rather than GB202. Posting here rather than only in the GB203 thread because my userspace cascade matches yours almost exactly, and it extends the libnvidia-eglcore finding to the 610 branch.

System

Component Detail
GPU GeForce RTX 5080 (GB203), PCI 0000:01:00.0, VBIOS 98.03.3B.00.A5, 360 W limit, stock
Motherboard ASRock X870 Pro RS WiFi, BIOS 4.41 (2026-06-02)
CPU Ryzen 9 9950X3D (AMD Raphael iGPU present and enabled, amdgpu loaded)
OS Arch Linux, kernel 7.2.3-arch1-2
Driver nvidia-open-dkms 610.57.04
Session Hyprland (Wayland) + XWayland, nvidia_drm modeset=1, 2x 1440p @ 144 Hz on the 5080

One event, not seven, so this is corroboration rather than an investigation. Where it adds something is the driver branch and the abort entry point.

libnvidia-eglcore calls abort() on 610.57.04 too, from a third entry point

@erik.bjornemo documented this on 595.71.05 and 595.84, from EGL init (Xwayland) and from cogl_texture_allocate() (gnome-shell). Mine is 610.57.04, and the entry point is neither: it is the atexit teardown path.

#7  abort                                       (libc.so.6 + 0x25685)
#8  libnvidia-eglcore.so.610.57.04 + 0x29d152   <-- caller of abort()
#9  libnvidia-eglcore.so.610.57.04 + 0xa8b46f
#10 libnvidia-eglcore.so.610.57.04 + 0xa8ba09
... 12 more eglcore frames ...
#21 libEGL_nvidia.so.0 + 0xa02b8
#22 libEGL_nvidia.so.0 + 0x9f9b8
#23 libc.so.6 + 0x40fbf                         (__run_exit_handlers)
#24 exit                                        (libc.so.6 + 0x4109e)
#25 Xwayland + 0x29b00

Xwayland was already exiting because of the GPU loss; an EGL destructor registered via atexit then aborted on the way out. Your caller-of-abort is at +0x2bd20e on 595.84, mine at +0x29d152 on 610.57.04. Different builds, so I am not going to claim it is the same function without symbols. But the behaviour is identical, and it is now three entry points across two driver branches: init, steady-state allocation, and teardown.

My xdg-desktop-portal-hyprland died the same way: exit() to __run_exit_handlers to wl_proxy_marshal_flags to SIGSEGV. Two processes, both in atexit handlers.

Your point stands and I would underline it: abort() from inside a driver library gives the caller no way to recover. That looks fixable independently of whatever is killing the GPU.

The kernel survived, with numbers

You separated “kernel alive, GPU dead” from a true hard lockup. Mine is clearly the former:

  • All three core dumps were fully written and zstd-compressed to disk after the Xid: Hyprland 7.3 MB, Xwayland 3.0 MB, portal 166 KB.
    • /sys/fs/pstore/ empty, no panic.
    • systemd-coredump ran to completion for all three.
      The kernel was scheduling and doing filesystem I/O well after the GPU went. My journal ends mid-line only because journald never flushed its tail. From outside it looked like a total freeze (black screen, fans instantly to 100% and stuck there, hard power cycle needed) but that appearance was wrong. Worth flagging for anyone reporting “total silence”: mine looked like your crash 5 and was not.

Fault sequence

NVRM: Xid (PCI:0000:01:00): 79, GPU has fallen off the bus.
NVRM: krcRcAndNotifyAllChannels_IMPL: RC all channels for critical error 79.
NVRM: _threadNodeCheckTimeout: API_GPU_ATTACHED_SANITY_CHECK failed!   (x28)
NVRM: prbEncStartAlloc: Can't allocate memory for protocol buffers.
NVRM: A GPU crash dump has been created.
NVRM: Xid (PCI:0000:01:00): 154, GPU recovery action changed from 0x0 (None) to 0x1 (PF FLR)
NVRM: _issueRpcAndWait: rpcSendMessage failed with status 0xf for fn 78 ...
NVRM: nvCheckOkFailedNoLog: ... GPU lost from the bus [NV_ERR_GPU_IS_LOST] (0xF)

On the Xid 154 recovery action: mine reads 0x1 (PF FLR). Yours and @nicokousmi’s incident 6 read 0x1 (GPU Reset Required). Same numeric value, different label, so the recovery-action enum appears to have been relabelled between the 595 and 610 branches. Anyone comparing these across driver versions should compare the hex, not the text. Either way the FLR did not recover the device.

Hyprland took SIGABRT at the same second, exactly as gnome-shell did for you.

A variable not on the not-yet-tested list: suspend/resume

Time (EDT) Event
02:01:23 Boot
~02:01:45 Suspend to RAM
06:01:56 Resume, 4 h 00 m 15 s asleep
06:15 Package update, 6 userspace packages, no kernel or nvidia
06:32:58 Xid 79

31 minutes after resuming from a 4-hour S3 suspend. n=1, so I claim nothing. But you installed 595.84 specifically to test its “suspend and resume failure with RTD3 runtime power management” changelog fix, and suspend/resume is not in your ruled-out or not-yet-tested lists. If other reporters can check whether their fault followed a resume, that is cheap to answer and either surfaces a pattern or kills one.

PreserveVideoMemoryAllocations=1 was active, the systemd-sleep nvidia hook is installed and ran, and the VRAM save/restore logged no error. Other params: DynamicPowerManagement=3, EnableGpuFirmware=18, EnableMSI=1, EnableS0ixPowerManagement=0.

Matching the ruled-out list

  • Thermal: 40 C idle, CPU Tctl 50 C, no throttle events.
    • PCIe AER: zero events, any boot, any port.
    • Lane width: x16, Gen5 capable.
    • Load: near-idle, ~25 W, browser and compositor only. No CUDA, no game, no encode.
    • CPU/memory: zero MCE, zero EDAC, ever.
    • Frequency: first Xid of any kind in 26 boots.
      Differences from your setup worth recording: my AMD iGPU is enabled with amdgpu loaded (you disabled yours and still crashed, so this looks irrelevant, but it is one more point against it), and my compositor is Hyprland, not mutter, so the cascade is not GNOME-specific.

I have not measured the 12 V rail and cannot exclude power by measurement.

Two things aimed at @nicokousmi’s Aug 27 post

The CTO question, partially answered. You asked whether 595.91.07’s removal of a hard-coded Completion Timeout value for GB202/GB203 is relevant, and whether 595.91.07 is worth testing. I am on a GB203 running 610.57.04 and hit this anyway. If that CTO change is present in the 610 branch, which someone from NVIDIA would have to confirm since I cannot assume a 610 build contains everything from a later 595 point release, then it is not sufficient to fix this, at least not for GB203 at idle. If it is not in 610.57.04, that is worth knowing too, and would make a 595.91.07 test genuinely interesting rather than redundant.

The power-limit mitigation. Your A/B (400 W cap, 11 days clean; stock 575 W, dead in ~35 s) is the most actionable result in either thread. My card is a 5080 with a 360 W default and a 250 W floor, and my fault came at ~25 W, the opposite end of the envelope from your load-driven deaths, so I would be testing a different hypothesis than you were. I will cap and report back either way, since a negative result at idle would help separate “power/thermal envelope” from “idle-path GSP fault”.

One caveat on your invariant: “~500-575 W / 86-91 C core across all 7 incidents” is a strong signature, but it cannot be the whole story for the thread, since erik’s crash 6 came at ~16 W and mine at ~25 W. Possibly two sub-populations under one Xid, as you suggested about the fan fix.

nvidia-bug-report.log.gz and the full NVRM output from the crash boot are attached. I have set up a watcher that fsyncs GPU, PCIe, thermal and process state to disk the instant any NVRM: Xid appears, so a second event will come with real telemetry rather than a post-mortem. Tell me what you would want sampled and I will add it.

Filed the eglcore abort as its own tracked bug: 6727385

@erik.bjornemo — I filed it against the abort() behaviour rather than the GPU loss, on your argument that it is independently fixable. The report cites your 595.71.05 and 595.84 occurrences (EGL init in Xwayland, and cogl_texture_allocate() in gnome-shell) alongside my 610.57.04 atexit one, so all three entry points sit on a single record.

Two things I could add from the core dump that I had not posted before:

It is an explicit call, not a fault. objdump on the shipped library, at the frame #8 return address:

29d14d:  e8 be c5 f7 ff     call   219710 <abort@plt>
29d152:  48 8d 7c 24 70     lea    0x70(%rsp),%rdi     <-- frame #8 return address

Frame #8 lands one instruction after call abort@plt, so the library reaches abort() deliberately. The ud2 padding bracketing it is the usual compiler output after a noreturn, which fits a C++ std::terminate / noexcept path rather than a checked error return.

The client was already shutting down correctly. Xwayland logged (EE) failed to read Wayland events: Broken pipe and called exit(); the abort came out of libEGL_nvidia’s destructor via __run_exit_handlers. So this is not a client mishandling GPU loss — it is a library killing a process that was exiting cleanly by design.

The bug form takes no attachments, so nvidia-bug-report.log.gz and the NVRM extract went to NVSDKIssues@nvidia.com quoting the Bug ID.

@nicokousmi — filing is open to anyone in the Developer Program (Log in | NVIDIA Developer) and issues an ID immediately, if you want your GB202 power-limit A/B on a tracked record rather than only in-thread.

I’m not really a researcher or developer working with Nvidia firmware or software, nor am I particularly knowledgeable about the internals of the firmware or hardware. I was led here by much, much, Googling and asking Claude about my incessant GPU crashes. In short: I have very little to contribute to this topic besides confirmation that this issue exists and continues to affect users, and some logs that may or may not be useful.

For me, this issue is was encountered when trying to run Stable Diffusion workflows in ComfyUI, and when running FaceFusion. Loading the models into memory was fine, but once the actual sampling began, the GPU would fall off the Bus completely within seconds. Notably, this only occurs when running AI loads as mentioned. Games (such as Civilization VI, Deep Rock Galactic, and World of Warcraft) run perfectly fine with no issues.

Here’s some example output from journalctl -b -1:

Output

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU at PCI:0000:2d:00: GPU-c405f691-b416-145b-7a8f-14aa717c0f19

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU Board Serial Number: 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: Xid (PCI:0000:2d:00): 79, GPU has fallen off the bus.

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU 0000:2d:00.0: GPU has fallen off the bus.

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU 0000:2d:00.0: GPU serial number is 0.

Jul 16 11:38:09 ultima-pc kernel: NVRM: krcRcAndNotifyAllChannels_IMPL: RC all channels for critical error 79.

Jul 16 11:38:09 ultima-pc kernel: NVRM: _threadNodeCheckTimeout: API_GPU_ATTACHED_SANITY_CHECK failed!

Jul 16 11:38:09 ultima-pc kernel: NVRM: _threadNodeCheckTimeout: API_GPU_ATTACHED_SANITY_CHECK failed!

[this repeats many times]

Jul 16 11:38:09 ultima-pc kernel: NVRM: A GPU crash dump has been created. If possible, please run

NVRM: nvidia-bug-report.sh as root to collect this data before

NVRM: the NVIDIA kernel module is unloaded.

Jul 16 11:38:09 ultima-pc kernel: NVRM: Xid (PCI:0000:2d:00): 154, GPU recovery action changed from 0x0 (None) to 0x2 (Node Reboot Required)

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 _issueRpcAndWait: rpcSendMessage failed with status 0x0000000f for fn 10 sequence 21361!

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 rpcRmApiFree_GSP: GspRmFree failed: hClient=0xc1d0005c; hObject=0xbeed0403; paramsStatus=0x00000000; status=0x0000000f

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 _issueRpcAndWait: rpcSendMessage failed with status 0x0000000f for fn 10 sequence 21362!

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 rpcRmApiFree_GSP: GspRmFree failed: hClient=0xc1d0005c; hObject=0xbeed4903; paramsStatus=0x00000000; status=0x0000000f

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: (status == NV_OK) || (status == NV_ERR_GPU_IN_FULLCHIP_RESET) @ rs_client.c:844

Jul 16 11:38:09 ultima-pc kernel: NVRM: nvAssertFailedNoLog: Assertion failed: (status == NV_OK) || (status == NV_ERR_GPU_IN_FULLCHIP_RESET) @ rs_server.c:259

Jul 16 11:38:09 ultima-pc kernel: NVRM: nvAssertFailedNoLog: Assertion failed: (status == NV_OK) || (status == NV_ERR_GPU_IN_FULLCHIP_RESET) @ rs_server.c:1375

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 _issueRpcAndWait: rpcSendMessage failed with status 0x0000000f for fn 10 sequence 21363!

[this repeats many times]

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x84004020, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x101, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: pEntries != NULL @ gmmu_walk.c:826

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: 0 @ mmu_walk.c:391

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x101, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: pEntries != NULL @ gmmu_walk.c:826

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: progress == 1 @ mmu_walk.c:1522

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 mmuWalkUnmap: Failed to unmap VA Range 0x164000000 to 0x1673fffff. Status = 0x00000040

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: 0 @ mmu_walk_unmap.c:62

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertOkFailedNoLog: Assertion failed: Generic Error: Invalid state [NV_ERR_INVALID_STATE] (0x00000040) returned from mmuWalkUnmap(userCtx.pGpuState->pWalk, vaLo, vaHi) @ gpu_vaspace.c:2084

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x101, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: pEntries != NULL @ gmmu_walk.c:826

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: 0 @ mmu_walk.c:391

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x101, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: pEntries != NULL @ gmmu_walk.c:826

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: progress == 1 @ mmu_walk.c:1522

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 mmuWalkUnmap: Failed to unmap VA Range 0x164000000 to 0x1673fffff. Status = 0x00000040

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: 0 @ mmu_walk_unmap.c:62

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: NV_OK == status @ gpu_vaspace.c:4916

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x84004020, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x84004020, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x84004020, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x84004020, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x84004020, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x84004020, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x101, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: pEntries != NULL @ gmmu_walk.c:826

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: progress == entryIndexHi - entryIndexLo + 1 @ mmu_walk_fill.c:130

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: NV_OK == status @ mmu_walk.c:541

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 mmuWalkUnmap: Failed to unmap VA Range 0x13c600000 to 0x13c976fff. Status = 0x00000040

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: 0 @ mmu_walk_unmap.c:62

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertOkFailedNoLog: Assertion failed: Generic Error: Invalid state [NV_ERR_INVALID_STATE] (0x00000040) returned from mmuWalkUnmap(userCtx.pGpuState->pWalk, vaLo, vaHi) @ gpu_vaspace.c:2084

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 kgmmuInvalidateTlb_GM107: TLB invalidation failed waiting for prior invalidate (status=0x0000000f), vaspaceFlags 0x101, scope 0x2, GFID 0

Jul 16 11:38:09 ultima-pc kernel: NVRM: GPU0 nvAssertFailedNoLog: Assertion failed: pEntries != NULL @ gmmu_walk.c:826

I also kept a log of GPU telemetry during one of the crashes: nvidia-smi --query-gpu=timestamp,power.draw,temperature.gpu,clocks_throttle_reasons.active --format=csv -l 1 -f ~/gpu_telemetry.csv:

gpu_telemetry.csv

2026/08/20 10:55:07.102, 82.75 W, 30, 0x0000000000000000

2026/08/20 10:55:08.102, 82.59 W, 31, 0x0000000000000000

2026/08/20 10:55:09.102, 82.56 W, 31, 0x0000000000000000

2026/08/20 10:55:10.102, 80.92 W, 30, 0x0000000000000000

2026/08/20 10:55:11.102, 70.85 W, 30, 0x0000000000000000

2026/08/20 10:55:12.102, 76.37 W, 30, 0x0000000000000000

2026/08/20 10:55:13.102, 72.81 W, 30, 0x0000000000000000

2026/08/20 10:55:14.102, 77.09 W, 30, 0x0000000000000000

2026/08/20 10:55:15.102, 73.16 W, 30, 0x0000000000000000

2026/08/20 10:55:16.103, 77.63 W, 30, 0x0000000000000000

2026/08/20 10:55:17.103, 77.10 W, 30, 0x0000000000000000

2026/08/20 10:55:18.103, 67.04 W, 30, 0x0000000000000000

2026/08/20 10:55:19.103, 65.62 W, 30, 0x0000000000000000

2026/08/20 10:55:20.103, 66.88 W, 30, 0x0000000000000000

2026/08/20 10:55:21.103, 91.10 W, 31, 0x0000000000000000

2026/08/20 10:55:22.103, 91.31 W, 31, 0x0000000000000000

2026/08/20 10:55:23.103, 90.57 W, 31, 0x0000000000000000

2026/08/20 10:55:24.103, 88.82 W, 31, 0x0000000000000000

2026/08/20 10:55:25.103, 107.46 W, 33, 0x0000000000000000

2026/08/20 10:55:26.104, 103.21 W, 31, 0x0000000000000000

My PC:

  • Motherboard: MSI MPG B550 Gaming Plus (previously MSI Meg X570 Unify, issue encountered on both)
  • Processor: AMD Ryzen 9 3950X
  • RAM: 32 GB DDR4 (4x 8GB Corsair Vengeance RGB Pro DDR4 3200MHz)
  • GPU: Gigabyte GeForce RTX 5090 Gaming OC
  • PSU: Corsair HX1200i (issue also encountered using a Corsair HX1500i)
  • OS: Nobara Linux 44

With the aforementioned Googling and Claude, I tried many troubleshooting steps.

  • reseating the GPU
  • reseating the GPU power cable
  • replacing the provided GPU power cable with a 90-degree cable to prevent tight cable turns
  • supporting the GPU to prevent sag
  • fully replacing the motherboard
  • updating the motherboard BIOS to the most recent version
  • forcing PCIE Gen4 (ultimately not relevant, as my motherboard only supports Gen4 in the first place)
  • disabling ASPM in the BIOS (was seemingly already disabled)
  • updating all drivers to most recent
  • replacing the GPU power cable again
  • fully replacing the existing 1200W PSU with a brand new 1500W PSU (along with its new GPU power cable)

None of these resolved the issue. If anything, replacing the motherboard made it worse (I didn’t intensively test that, that’s purely just based on how it seemed).

Finally, based on this very thread, I tried: nvidia-smi -pl 400

This was the only step to have any effect at all, and I can now successfully finish a ComfyUI SDXL workflow. I have yet to do a full stress test and run it for any length of time, but the fact that it finishes at all is a vast improvement from before. Still, this issue is in desperate need of an official first-party resolution.

Just a quick update for anyone struggling with the same problem, and just in case it somehow helps solving the issue on the Nvidia side:

Limiting the power draw (nvidia-smi -pl 400) helped, but did not achieve long-term stability. I still occasionally crashed under sustained AI loads, like a 12-second MiniMax H3 render. However, limiting the clock (nvidia-smi -lgc 2200,2200) has essentially made the problem disappear. I’m now two weeks in, encompassing hundreds of image generations and dozens of video generations, and have yet to experience a single repeat incident.

I should note that this is with both the power draw and the clock limited. I haven’t tried limiting the clock in isolation from limiting the power draw.

Adding some info here as well. I got a used RTX 3070 Ti + i9-12900H laptop and since the latest driver update (615.78.08), I started to get Xid 79 at random points (sometimes I had heavy GPU load, sometimes it was sitting idle, with little to no use on the GPU besides extending to a 4K external screen.

What worked for me was to sort out PL1/PL2 limits on my CPU (I have a ROG Zephyrus M16, so rog-control-center has settings for sustained power limit “PL1”, and turbo power limit “PL2”). Right now I limited to 40/75W as for my regular use is quite enough and nvidia-smi settings are on default (I did add nvidia_drm.modeset=1 pcie_aspm=off on my boot options and haven’t removed to test, but hey, those settings still had my computer unstable anyway).

It turns out that being a laptop with shared heatsink between CPU and GPU, my issue wasn’t on the GPU itself, but on the intel CPU power spikes. When this happens, the heat generated from the CPU did affect the GPU, triggering a sudden power cut to cool it down quicker, forcing GPU+MEM down-clock to cool it down.

Because this temperature spike is artificial (not coming from the GPU itself), the memory read misses timing and the driver assumes the GPU fell off the bus, even though the hardware is still there.

I’m unsure how this wasn’t an issue while I was under 610.57.04, but it seems that something on the older driver used to better handle memory read timing (or fail-over) and sudden external heat/cool spikes.

EDIT: I’ll put my hardware to some thermal maintenance soon, as I saw some reports that the original CPU liquid metal application on the CPU does leave dry patches that affect overall temperatures on my laptop version.

Tinkering a bit further: I got much more stable results by having:

  • pcie_aspm=off on boot options
  • setting options nvidia NVreg_EnableGpuFirmware=0 on a config file over modprobe.d
  • install thermald and run its service (I’m over a laptop with an Intel i9 sharing heatsink, thermal runoff was running crazy
  • install supergfxctl and run the daemon and then run a supergfxctl -m AsusMuxDgpu (it’s the Dedicated variant my laptop has, I recommend running a -s to see the list and check which is the dedicated option for you.

It seems that on my case it was a series of issues combined in a perfect storm. The issues were:

  • Thermal overrun: The shared heatsink and the bad application of CPU’s liquid metal from factory on the Zephyrus M16 (2022) ended up in unexpected thermal spikes on the GPU.
  • De-sync between laptop display and external display: laptop display is by default driven by the iGPU and only handing compute data to dGPU on my laptop configuration (Hybrid settings), whereas HDMI and USB-C (DP) is dGPU-exclusive. As both screens have different refresh rates (60Hz on the external vs. 165Hz on the laptop screen), issues happened.

The thermal issue could be solved, because triggering a Xid 79 and put the driver in a non-recoverable state when the PCI is still attached and available (a lspci | grep -i nvidia still lists the GPU and rev a1) seems overkill to me.

As for the de-sync issue, this has to be something to be fixed in the driver itself. How come the driver panics and throws a Xid 79 only because I have two screens with different refresh rates? This isn’t an issue on Windows, so I really don’t see why we have to overcome it by either being plugged on a huge power brick or having to sacrifice battery time to be able to use external screens.