NVIDIA Open GPU Kernel Modules Version
580.159.03
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
Linux vnvbrwgpu1 7.0.0-28-generic #28-Ubuntu SMP PREEMPT_DYNAMIC Sun Jun 21 01:01:36 UTC 2026 x86_64 GNU/Linux
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 RTX PRO 6000 Blackwell Server Edition (UUID: GPU-17a7ccd5-72c9-d924-c600-7a2be09787aa)
GPU 1: NVIDIA RTX PRO 6000 Blackwell Server Edition (UUID: GPU-75858999-047a-0c66-932f-c5a89028f2e5)
GPU 2: NVIDIA RTX PRO 6000 Blackwell Server Edition (UUID: GPU-f4702d06-6501-fe66-c6e7-541574891c65)
GPU 3: NVIDIA RTX PRO 6000 Blackwell Server Edition (UUID: GPU-97e94ff4-1f3b-6f88-6e58-eee43fbfa8ac)
Describe the bug
Disclaimer: The bug analysis and report was not done by me personally but an AI, as my knowledge in that area is limited and I honestly couldn't have done a better job I believe. We just had issues on our server and I let Warp on it to analyse the issue. This is the (reproducable) output.
When a Docker container running vLLM with tensor parallelism (--tensor-parallel-size 2)
and --ipc host is stopped via docker stop or docker compose down, the NVIDIA
driver logs iovaspaceDestruct_IMPL failures with left-over mappings, followed by
assertion failures at io_vaspace.c:592 and :601:
NVRM: iovaspaceDestruct_IMPL: 2 left-over mappings in IOVAS 0xe300
NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:592
NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:601
NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:592
NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:601
This reproduces reliably in a single start/stop cycle with the exact configuration
described below.
After multiple stop/start cycles (e.g. a nightly maintenance cron job), the accumulated
IOVAS corruption causes the GPU's GSP firmware to enter a GSP_LOCKDOWN_NOTICE state.
The next time the NVIDIA driver attempts to re-initialize that GPU
(rm_init_adapter → kgspBootstrap_GH100), it times out with Xid 119:
NVRM: Xid (PCI:0000:03:00): 119, Timeout after 6s waiting for RPC response
from GPU2 GSP! Expected function 4097 (GSP_INIT_DONE).
NVRM: GPU2 GSP RPC buffer contains function 4124 (GSP_LOCKDOWN_NOTICE)
NVRM: _kgspBootGspRm: unexpected WPR2 already up, cannot proceed with booting GSP
NVRM: gpuHandleSanityCheckRegReadError_GH100: regvalue: 0xbadf5720
The GPU is then permanently unrecoverable until a full system reboot. The other GPUs
involved in the tensor-parallel group are affected in the same way.
Deceptive symptom: After IOVAS corruption, the affected GPUs continue to respond
normally to nvidia-smi queries (basic register reads still work). The failure only
manifests hours later when something triggers a fresh GSP bootstrap, masking the
corruption for an extended period.
To Reproduce
Preconditions:
- NVIDIA GB202GL GPU(s) (RTX PRO 6000 Blackwell Server Edition)
- Driver
580.159.03 open kernel module
- GPU persistence mode disabled (default — confirm with
nvidia-smi -q | grep Persistence)
- Docker with NVIDIA Container Toolkit
- vLLM
v0.25.1 container configured with:
--tensor-parallel-size 2 (NVLink P2P between 2 GPUs)
--gpu-memory-utilization 0.90 (~88 GB allocated per GPU)
--ipc host (host IPC namespace — enables persistent CUDA IPC handles)
- A large model (tested with
Qwen/Qwen3.5-122B-A10B-GPTQ-Int4, 73 GB)
Steps to reproduce IOVAS corruption (single cycle — always reproduces)
1. Start vLLM with tensor parallelism on 2 GPUs:
docker run --detach --name vllm-test \
--ipc host \
--device nvidia.com/gpu=0 \
--device nvidia.com/gpu=1 \
-v <path-to-hf-cache>:/root/.cache/huggingface \
-e HF_HUB_OFFLINE=1 \
vllm/vllm-openai:v0.25.1 \
Qwen/Qwen3.5-122B-A10B-GPTQ-Int4 \
--tensor-parallel-size 2 \
--gpu-memory-utilization 0.90
2. Wait for NCCL initialization (~90 seconds). Confirm with:
docker logs vllm-test 2>&1 | grep "world_size"
Expected output (both workers must appear):
(Worker pid=...) INFO [parallel_state.py] world_size=2 rank=0 ... backend=nccl
(Worker pid=...) INFO [parallel_state.py] world_size=2 rank=1 ... backend=nccl
Also confirm GPU memory is allocated (~38 GB per GPU):
nvidia-smi --query-gpu=index,pci.bus_id,memory.used --format=csv,noheader
3. Stop the container:
docker stop --timeout 10 vllm-test && docker rm vllm-test
4. Check dmesg immediately:
sudo dmesg | grep -iE "iovaspaceDestruct|pIOVAS"
Expected output (bug):
NVRM: iovaspaceDestruct_IMPL: N left-over mappings in IOVAS 0x<bus>
NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:592
NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:601
Steps to reproduce full GPU failure (multiple cycles → Xid 119)
5. Repeat steps 1–3 three or more times without GPU persistence mode enabled.
Each cycle produces additional IOVAS corruption on different GPU buses.
6. After the final stop (container NOT restarted), run:
7. Observe in dmesg:
NVRM: Xid (PCI:0000:<bus>): 119, Timeout after 6s waiting for RPC response
NVRM: _kgspBootGspRm: unexpected WPR2 already up, cannot proceed with booting GSP
NVRM: GPU 0000:<bus>.0: RmInitAdapter failed! (0x62:0x65:2028)
The GPU is now unrecoverable without a full system reboot.
Important notes:
- The bug does not reproduce with simplified synthetic workloads (plain PyTorch
torch.zeros allocations without --ipc host and without a real tensor-parallel
vLLM stack).
--ipc host is critical — it is what causes CUDA IPC handles to persist on the
host after the container exits.
- GPU persistence mode (
nvidia-smi -pm 1) prevents the issue by keeping the GPU
initialized between restarts, bypassing the GSP re-bootstrap path entirely.
Bug Incidence
Always
nvidia-bug-report.log.gz
nvidia-bug-report-repro.gz
More Info
1. Proprietary driver not tested.
The system runs exclusively with the open kernel module. Cannot confirm whether
the issue is specific to the open module.
2. Critical factors required for reproduction (all must be present):
--ipc host: host IPC namespace — creates persistent CUDA IPC handles visible to
the host that are not cleaned up when the container exits
--tensor-parallel-size 2: NVLink P2P memory mappings between GPUs via NCCL
--gpu-memory-utilization 0.90: ~88 GB GPU memory allocated per GPU
- A large model requiring full initialization (tested:
Qwen/Qwen3.5-122B-A10B-GPTQ-Int4)
Simplified workloads (plain torch.zeros, no --ipc host, single GPU) do not reproduce.
3. IOVAS errors captured in the attached bug report:
[ 3468.890720] NVRM: iovaspaceDestruct_IMPL: 2 left-over mappings in IOVAS 0xe300
[ 3478.578451] NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:592
[ 3478.578467] NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:601
[ 4391.210104] NVRM: iovaspaceDestruct_IMPL: 1 left-over mappings in IOVAS 0x300
[ 4391.221416] NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:592
[ 4391.221424] NVRM: nvAssertFailedNoLog: Assertion failed: pIOVAS != NULL @ io_vaspace.c:601
Two cycles, two different GPU buses affected (0xe300 = GPU 2 on first stop,
0x300 = GPU 0 on second stop).
4. Fatal Xid 119 — from production (previous boot, after 3 nightly cycles):
NVRM: Xid (PCI:0000:03:00): 119, Timeout after 6s of waiting for RPC response
from GPU2 GSP! Expected function 4097 (GSP_INIT_DONE).
NVRM: GPU2 GSP RPC buffer contains function 4124 (GSP_LOCKDOWN_NOTICE)
NVRM: _kgspBootGspRm: unexpected WPR2 already up, cannot proceed with booting GSP
NVRM: gpuHandleSanityCheckRegReadError_GH100: addr: 0x110624,
regvalue: 0xbadf5720, error code: Unknown SYS_PRI_ERROR_CODE
NVRM: kflcnCoreDumpNondestructive_IMPL: PRI: riscvPrivErrInfo: badf510e
NVRM: RmInitAdapter failed! (0x62:0x65:2028)
Call stack at time of Xid 119:
_kgspRpcRecvPoll+0x784/0x9a0 [nvidia]
kgspWaitForRmInitDone_IMPL+0x36/0xf8 [nvidia]
kgspBootstrap_GH100+0x385/0xaca [nvidia]
kgspInitRm_IMPL+0x979/0x1a20 [nvidia]
RmInitAdapter+0xff2/0x1e80 [nvidia]
nv_open_device+0x459/0xab0 [nvidia]
nvidia_open_deferred+0x36/0xa0 [nvidia]
5. Expected behavior:
The driver should either cleanly release all IOVAS mappings when the container exits
(even with --ipc host), or detect and recover from the corrupted state on next
initialization without entering GSP lockdown.
6. Workaround:
Enable GPU persistence mode to prevent de-initialization between container restarts:
7. Related issue:
GitHub issue #688 (closed/Implemented) covers a similar 0xbadf5xxx register pattern
on older Maxwell HAL (_GM107). The present issue is on the GH100/Blackwell HAL
(_GH100, GB202GL) and involves the FSP/WPR2 lockdown mechanism specific to
Hopper/Blackwell secure boot.
8. System details:
- Hardware: Lenovo ThinkSystem SR675 V3, BIOS QGE144E-8.41 (2026-01-22)
- vLLM version: v0.25.1
- NCCL version: 2.28.9
- Docker with
--ipc host and CDI device access (nvidia.com/gpu=N)
NVIDIA Open GPU Kernel Modules Version
580.159.03
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
Linux vnvbrwgpu1 7.0.0-28-generic #28-Ubuntu SMP PREEMPT_DYNAMIC Sun Jun 21 01:01:36 UTC 2026 x86_64 GNU/Linux
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 RTX PRO 6000 Blackwell Server Edition (UUID: GPU-17a7ccd5-72c9-d924-c600-7a2be09787aa)
GPU 1: NVIDIA RTX PRO 6000 Blackwell Server Edition (UUID: GPU-75858999-047a-0c66-932f-c5a89028f2e5)
GPU 2: NVIDIA RTX PRO 6000 Blackwell Server Edition (UUID: GPU-f4702d06-6501-fe66-c6e7-541574891c65)
GPU 3: NVIDIA RTX PRO 6000 Blackwell Server Edition (UUID: GPU-97e94ff4-1f3b-6f88-6e58-eee43fbfa8ac)
Describe the bug
Disclaimer: The bug analysis and report was not done by me personally but an AI, as my knowledge in that area is limited and I honestly couldn't have done a better job I believe. We just had issues on our server and I let Warp on it to analyse the issue. This is the (reproducable) output.
When a Docker container running vLLM with tensor parallelism (
--tensor-parallel-size 2)and
--ipc hostis stopped viadocker stopordocker compose down, the NVIDIAdriver logs
iovaspaceDestruct_IMPLfailures with left-over mappings, followed byassertion failures at
io_vaspace.c:592and:601:This reproduces reliably in a single start/stop cycle with the exact configuration
described below.
After multiple stop/start cycles (e.g. a nightly maintenance cron job), the accumulated
IOVAS corruption causes the GPU's GSP firmware to enter a
GSP_LOCKDOWN_NOTICEstate.The next time the NVIDIA driver attempts to re-initialize that GPU
(
rm_init_adapter→kgspBootstrap_GH100), it times out with Xid 119:The GPU is then permanently unrecoverable until a full system reboot. The other GPUs
involved in the tensor-parallel group are affected in the same way.
Deceptive symptom: After IOVAS corruption, the affected GPUs continue to respond
normally to
nvidia-smiqueries (basic register reads still work). The failure onlymanifests hours later when something triggers a fresh GSP bootstrap, masking the
corruption for an extended period.
To Reproduce
Preconditions:
580.159.03open kernel modulenvidia-smi -q | grep Persistence)v0.25.1container configured with:--tensor-parallel-size 2(NVLink P2P between 2 GPUs)--gpu-memory-utilization 0.90(~88 GB allocated per GPU)--ipc host(host IPC namespace — enables persistent CUDA IPC handles)Qwen/Qwen3.5-122B-A10B-GPTQ-Int4, 73 GB)Steps to reproduce IOVAS corruption (single cycle — always reproduces)
1. Start vLLM with tensor parallelism on 2 GPUs:
2. Wait for NCCL initialization (~90 seconds). Confirm with:
Expected output (both workers must appear):
Also confirm GPU memory is allocated (~38 GB per GPU):
3. Stop the container:
docker stop --timeout 10 vllm-test && docker rm vllm-test4. Check dmesg immediately:
Expected output (bug):
Steps to reproduce full GPU failure (multiple cycles → Xid 119)
5. Repeat steps 1–3 three or more times without GPU persistence mode enabled.
Each cycle produces additional IOVAS corruption on different GPU buses.
6. After the final stop (container NOT restarted), run:
7. Observe in dmesg:
The GPU is now unrecoverable without a full system reboot.
Important notes:
torch.zerosallocations without--ipc hostand without a real tensor-parallelvLLM stack).
--ipc hostis critical — it is what causes CUDA IPC handles to persist on thehost after the container exits.
nvidia-smi -pm 1) prevents the issue by keeping the GPUinitialized between restarts, bypassing the GSP re-bootstrap path entirely.
Bug Incidence
Always
nvidia-bug-report.log.gz
nvidia-bug-report-repro.gz
More Info
1. Proprietary driver not tested.
The system runs exclusively with the open kernel module. Cannot confirm whether
the issue is specific to the open module.
2. Critical factors required for reproduction (all must be present):
--ipc host: host IPC namespace — creates persistent CUDA IPC handles visible tothe host that are not cleaned up when the container exits
--tensor-parallel-size 2: NVLink P2P memory mappings between GPUs via NCCL--gpu-memory-utilization 0.90: ~88 GB GPU memory allocated per GPUQwen/Qwen3.5-122B-A10B-GPTQ-Int4)Simplified workloads (plain
torch.zeros, no--ipc host, single GPU) do not reproduce.3. IOVAS errors captured in the attached bug report:
Two cycles, two different GPU buses affected (
0xe300= GPU 2 on first stop,0x300= GPU 0 on second stop).4. Fatal Xid 119 — from production (previous boot, after 3 nightly cycles):
Call stack at time of Xid 119:
5. Expected behavior:
The driver should either cleanly release all IOVAS mappings when the container exits
(even with
--ipc host), or detect and recover from the corrupted state on nextinitialization without entering GSP lockdown.
6. Workaround:
Enable GPU persistence mode to prevent de-initialization between container restarts:
7. Related issue:
GitHub issue #688 (closed/Implemented) covers a similar
0xbadf5xxxregister patternon older Maxwell HAL (
_GM107). The present issue is on the GH100/Blackwell HAL(
_GH100, GB202GL) and involves the FSP/WPR2 lockdown mechanism specific toHopper/Blackwell secure boot.
8. System details:
--ipc hostand CDI device access (nvidia.com/gpu=N)