GPU/IOMMU fault report — v2, 2026-08-17 (supersedes the 2026-08-14 report; the fault has MOVED, not healed) > Three NVIDIA A800-SXM4-80GB on CPU root ports (no PCIe switch): > GPU0 = 0000:3d:00.0 serial 1324522063353 > GPU1 = 0000:63:00.0 serial 1324522063362 > GPU2 = 0000:ab:00.0 serial 1324522063359 > Driver 595.71.05, kernel 6.8.0-137-generic (changed from 6.8.0-117 at the > Aug-14 reboot), VBIOS 92.00.A4.00.02 on all three. PROBLEM GPU<->GPU P2P DMA corrupts data. Corruption always follows the SOURCE GPU: Source GPU | 2026-08-13 | 2026-08-17 (after reboot + kernel change) -----------+------------+------------- GPU0 | CORRUPT | CORRUPT GPU1 | clean | CORRUPT GPU2 | CORRUPT | clean The Aug-14 reboot did not fix anything: GPU0 has been a corrupt source both times, and the failure relocated from GPU2's DMA path to GPU1's. Reproducible test: /data/home/renbaibing/vllm/diag/p2p_check.py (run inside any CUDA container, e.g. vllm/vllm-openai:v0.27.1). Result: 16,777,215 of 16,777,216 elements wrong on the corrupt paths, bit-stable across runs. ROOT-CAUSE ASSESSMENT (platform translation path, NOT bad GPUs) - All hardware counters clean on all three GPUs: ECC volatile AND aggregate zero, zero remapped rows, zero retired pages, links x16 Gen4. - Per-GPU H2D/D2H copies and matmul PASS on all three GPUs. Only *peer*-addressed DMA corrupts. - Deterministic all-elements-wrong corruption = data written to wrong addresses (translation fault), not random bit errors from failing silicon. - VT-d is ENABLED: 14 active DMAR units, /proc/cmdline has no "iommu=pt" — every peer write crosses VT-d translation. There are no PCIe switches, so all P2P funnels through the root complex + IOMMU. - Kernel evidence, all pointing at GPU0 (3d:00) as the initiator: - Jul 6: Xid 31 CE2 MMU faults (FAULT_PDE, VIRT_WRITE) on 3d:00 - Aug 13: DMAR: [DMA Write NO_PASID] device [3d:00.0] fault reason 0x71 "Present bit in first-level paging entry is clear" (hundreds) - All NVLink links report inActive on all three SXM4 boards (topo shows PCIe-only: NODE/SYS). SXM4 boards exist for NVLink — links being down at 3 GPUs populated is itself worth investigating. ASK (in priority order) 1. Decisive test: add "intel_iommu=on iommu=pt" to the kernel command line, reboot, re-run diag/p2p_check.py. All 6 ordered pairs must print OK. Clean result = root cause proven (VT-d peer-DMA translation). 2. Investigate why NVLink is inactive (SBIOS setting / baseboard population / link training). If NVLink comes up, NCCL stops using the PCIe P2P path entirely and this bug stops mattering for our workload. 3. Check ACS on the three GPU root ports; consider SBIOS/BMC firmware and a driver branch matched to kernel 6.8.0-137 (driver + kernel both changed at the same reboot that relocated the fault). 4. Only if corruption survives iommu=pt: slot-swap two GPUs. Corruption following the serial = bad board; following the slot = bad fabric. Serials are recorded above for that comparison. IMPACT Tensor-parallel inference is unusable across GPUs without the software workaround (NCCL_P2P_DISABLE=1 + --disable-custom-all-reduce, i.e. NCCL stages through host memory). Measured cost at our TP=2 workload: none (~146 tok/s). Single-GPU workloads are unaffected and verified clean. Please re-run diag/p2p_check.py after ANY reboot or admin change and record the matrix; also re-record "nvidia-smi --query-gpu=index,serial,pci.bus_id" to track board vs slot.