NVIDIA / NVIDIA/open-gpu-kernel-modules
dGPU silently removed from PCI bus while in D0 — driver never notified (no nv_pci_remove, no Xid), stale state forever
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 17.4k
- Forks
- 1.9k
- PR merge metrics
- No merged PRs in 30d
Description
NVIDIA Open GPU Kernel Modules Version
610.57.04 (release build, notroot@, Aug 5 2026)
Please confirm this issue does not happen with the proprietary driver (of the same version).
- I confirm this does not happen with the proprietary driver package.
(Not tested — only the open module is installed on this system.)
Operating System and Version
CachyOS (Arch-based), kernel 7.2.0-rc6-1-cachyos-rc
Hardware: GPU
NVIDIA GeForce RTX 5090 Laptop GPU (10de:2c58) on ASUS ROG Zephyrus G16 (GU605CX), at PCI 0000:01:00.0 under root port 0000:00:01.0. Intel Arc iGPU is the display GPU.
Describe the bug
Switching the GPU mode to "integrated" (via cardwire, a supergfxctl successor that only eBPF-blocks process access to the dGPU — it writes nothing to sysfs) makes the dGPU disappear from the PCI bus within 1–2 seconds, while fully in D0. The driver is never notified:
nv_pci_removeis never called (kprobe-verified), no Xid, no kernel message of any kind (dmesg stays empty even withNVreg_EnableStreamDebug=1andNVreg_EnableGPUResetLogging=1)nv_pmops_runtime_suspend/nv_pmops_runtime_resumeare never called — this is not a runtime-D3 transition (kprobe-verified;power/control=ondoes not prevent it)nv_acpi_d3cold_dsm_for_upstream_portis never called- cardwire's power tracker polls
power_statethroughout the event: it goesD0→ device gone, never D3Cold - Result:
/proc/driver/nvidia/gpus/0000:01:00.0persists forever, power state frozen at "Video Memory: Active",/dev/nvidia0..nvidiactlpersist, and the rail stays powered (GPU temp ~53C, ~20W on AC) while the device is "gone"
The device is revived (re-enumerates, driver re-binds) by switching back to "hybrid" or replugging AC — no reboot needed.
To Reproduce
- Boot hybrid mode (dGPU on the bus, driver bound,
NVreg_DynamicPowerManagement=0x02) cardwire set integrated(or unplug AC — cardwire auto-switches to integrated)- Within ~1–2 s:
lspcino longer lists 0000:01:00.0; driver frozen as described cardwire set hybrid→ device returns
Same result with NVreg_EnableS0ixPowerManagement=1 and with power/control=on pinned.
Bug Incidence
Always (10+ reproductions, identical).
nvidia-bug-report.log.gz
Full bug report + strace of the daemon + evidence write-up (kprobe setup/results, dmesg, timeline):
https://gist.github.com/Kiraprint/d7c4441a1d3f3bf58f6bb1a84fe4fb9e
More Info
The removal is performed by the platform/EC with no software-layer participation: not the driver (0 kprobe events), not the RM/GSP firmware (StreamDebug dmesg empty), not kernel PCI PM (control=on irrelevant). The trigger is the fully-blocked+idle state. The defect we'd like fixed: the driver does not handle device loss — no remove callback, no Xid, no cleanup, perpetual stale device state — whereas a graceful "GPU has fallen off the bus" (Xid 79-style) path would let the driver clear the device and the user recover without reboot.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the open GPU kernel module's PCI and device-loss paths around nv_pci_remove, the runtime PM callbacks, and the Xid 79-style handling described in the report. Reproduce with cardwire set integrated while monitoring lspci, dmesg, and /proc/driver/nvidia/gpus. Done means an unexpected D0 device disappearance is detected, stale driver state and device nodes are cleaned up, and recovery works without reboot.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- operating-systems
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100