Repository navigation
Bridged 2x RTX 3090, both unlocked: Xid 74 (NVLink fatal) on all 4 links under load — concurrent unlock as the suspect #300
hybridindie
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
TL;DR — 2× RTX 3090 on an NV4 bridge, both cards unlocked, 615.71.09 open modules. Boots clean, both cards give full speed. Then a dual-card GEMM takes
Xid 74"NVLink: fatal error detected" on all four links about 4½ minutes in, and the box hard-locks until reset. Unlocking only the headless card has been stable for days. The one structural difference I can find versus the known-good bridged 2×3090 reports is that both cards are unlocked concurrently at boot. Serialising the unlocks gave me one clean 10-minute soak — which I don't consider proof, so I'm posting for data points and a sanity check on the mechanism.Setup
10de:2204), VBIOS94.02.42.00.A8, stock, 390 W each (driver default, no cap service).0b:00.0drives GNOME,0c:00.0is headless. NV4 bridge:nvidia-smi topo -m→GPU0 ↔ GPU1 = NV4. Each card on its own CPU root port, no PCIe switch. Display slot trains Gen4 x8.7.2.15-300.fc45.x86_64, NVIDIA 615.71.09 open kernel modules (akmods), dracut, Secure Boot off.7eb51bc, built withmake rpm+ DKMS, firmware610.43.03in the initramfs,rd.driver.pre=gpu_unlock,nvidia.kodeliberately absent from the initramfs.... gpu_unlock.targets=0000:0b:00.0,0000:0c:00.0Symptom
Boot and unlock are clean (
stage=handoff ret=0,unlocked, both cards), 115–119 TFLOPS BF16 each. Then a sustained dual-card BF16 GEMM — plaintorch.matmul8192³, no P2P, no NCCL, so NVLink carries no traffic at all — does this at 4 m 38 s:The worker dies with
CUBLAS_STATUS_EXECUTION_FAILED, the GNOME session goes into a shutdown loop, NVRM then logs_issueRpcAndWait: rpcSendMessage failed with status 0x0000000f for fn 76every 30 s, and the journal stops with nosystemd-shutdownlines — hard reset required.The bridge itself is fine afterwards:
nvidia-smi nvlink -s→ 4×14.062 GB/s on both cards,nvlink -e→ 0 replay / CRC / recovery errors.I don't think it's power
This machine previously had a 1000 W PSU that hard-latched (OCP, wall-switch recovery) seconds after unlocking both cards — that was power, and it's gone since a 1600 W unit went in. During this failure the rails never reached the limit:
And the box kept running for seven minutes after the Xid rather than losing power.
Stable vs unstable, same hardware, same day
0cunlocked,0blockedXid 74on all 4 links at 4 m 38 s, hard resetThe failing run is lower in total power than the passing one, and carries no NVLink traffic.
The one difference I can see
main.cschedules every selected card on one shared async domain, so the whole set is reset concurrently. Each unlock ends inpcie_flr()+pci_restore_state(). The boot log shows bothstage=claimat12:44:16and bothhandoff/unlockedat12:44:17:So two PF-FLRs plus two PCIe state restores land inside the same second on the two ends of the bridge. I'm aware of the #260 analysis that on GA102 the module writes no link registers and that this FLR is the one VFIO does on every passthrough — which is exactly why I can't explain how it would still matter minutes later, after
nvidia.kohas trained the links. That's question 1 below.What I tried
Serialised the unlocks — firmware still loaded once up front, then each card unlocked before the next starts. Boot log is now strictly sequential, one second apart:
Result: 10-minute dual-card soak completed — 618 samples, 727 W avg / 779 W max, 0 Xid, and
nvidia-smi nvlink -esampled every 20 s stayed at zero replay/CRC/recovery errors throughout. Per-card: 116.3 TFLOPS on the headless card, 94.3 on the display card (thermally throttled at 93 °C).Caveats I'd raise against my own result:
Questions
Xid 74on all four links at once (rather than one link degrading first) a link-hardware signature, or something the driver/GSP can produce on its own?journalctl -k -b | grep -E "gpu_unlock: (stage=claim|unlocked)".Xid 74(not 79) with the unlock in the picture?What would settle it
Interleaved cold-boot A/B — unpatched soak, patched soak, three pairs — with success defined as patched 3/3 clean and unpatched at least 1/3 faulting, which also pins the base rate. Then repeat both arms with the display card capped at 300 W to decouple heat from the patch: if unpatched stops faulting under the cap, thermals own the problem and the serialisation is incidental.
I'll report back either way. I haven't opened a PR — happy to if there's interest in serialising (it costs ~1 s of boot per extra card, which may be unacceptable on 8-GPU boxes, so a module parameter might be the better shape).
All reactions