Build1 distinct publisher3 min readUpdated
A Proxmox 8 GPU passthrough that passed every checklist item still refused to boot. The only signal was an IRQ and vfio interrupt remapping burst in host dmesg, and the reported culprit was an HBA.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
A Proxmox 8 GPU passthrough that passed every checklist item still refused to boot. The only signal was an IRQ and vfio interrupt remapping burst in host dmesg, and the reported culprit was an HBA.
A Proxmox 8 host refused to bring up an Ubuntu 24.04 VM after an NVIDIA RTX A4000 was passed through to it for a Filecoin sealing worker, and the only place the failure was legible was host dmesg [1][6]. The errors named the GPU; the author's account concludes the actual culprit was an HBA elsewhere in the box [9].
The build was the one every guide prescribes: VT-d on the Xeon, IOMMU enabled at the kernel line, OVMF on the VM, vfio-pci bound to the device IDs, machine type q35 for PCIe [2]. Then `qm start` returned and the guest did not come up [3]. No kernel panic, no host lockup, no "device not found" surfaced to the operator [3]. QEMU exited from the host's perspective and left nothing behind: no running guest, no console output [4]. The web UI showed the VM as stopped, exactly the state it was in before start was pressed [5]. The host stayed completely fine throughout [7].
The signal did exist, in a different terminal. `dmesg -w` on the host produced a burst of IRQ allocation failures and vfio interrupt remapping errors at VM startup, then silence [6]. That is the entire diagnostic surface, and it is emitted by the layer nobody was watching. The author notes the pattern read more like a misconfigured VM than a hardware conflict, which is why the cause survived so long [8].
It survived three sessions across about a week, roughly ninety minutes each, each one eliminating a correct-looking explanation without producing the answer [10] - call it four and a half hours of diagnosis [20]. Session one confirmed the obvious: `lspci -nnk -d 10de:24b0` reported `Kernel driver in use: vfio-pci`, with no nouveau and no nvidia [11], and the VM config carried the correct BDF, q35, and OVMF [12]. Everything about the device being passed was right. A checklist verifies the device you are thinking about, and the IOMMU topology contains devices you are not.
The reason this mattered is throughput arithmetic, not benchmark pride. Filecoin's SDR phase is memory-latency bound, CPU-heavy, and immune to GPU acceleration by protocol design, taking three to four hours per sector on this hardware [13]. TreeRC tree building is the GPU-eligible half: two to three hours per sector on CPU, roughly fifteen to twenty minutes on the A4000 [14]. Sealing without a GPU is therefore about five to seven hours per sector end to end [18], and the card removes somewhere between 100 and 165 minutes from each one [19]. The larger payoff is pipelining: SDR on one sector while the GPU does TreeRC on the previous one makes throughput gated by SDR alone [16], which the author puts at the difference between two sectors a day and five or six for a small provider [17], a 2.5x to 3x change [22] and consistent with the six-to-eight-per-day ceiling that a three-to-four-hour SDR implies [21].
Two operational takeaways. Start `dmesg -w` before you touch `qm start`, because the Proxmox UI and the `qm` return path carried no information about this failure at all [3][5][6]. And when interrupt remapping errors appear, enumerate the whole IOMMU topology rather than re-auditing the target card, which session one already proved clean [11][12]. The supplied account stops partway through that first session, so the mechanism tying the HBA to the interrupt errors is not in the material here: the HBA is the reported culprit, not a demonstrated one [9].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The author's account states that the error pointed at the GPU and the culprit was the HBA, with the real cause somewhere else entirely.
Tree building, specifically the TreeRC computations for Proof-of-Replication, is GPU-eligible: on CPU it adds another two to three hours per sector, while with the A4000 the same work completes in roughly fifteen to twenty minutes.
The plan was to PCIe passthrough an NVIDIA RTX A4000 from a Proxmox 8 host into an Ubuntu 24.04 VM, giving a Filecoin sealing worker direct GPU access for the compute phases that need it.
The setup followed the standard sequence: VT-d on the Xeon, IOMMU enabled at the kernel line, OVMF BIOS on the VM, vfio-pci bound to the device IDs, and machine type set to q35 for PCIe support.
qm start returned and the VM did not come up: not a kernel panic, not a host lockup, and not a 'device not found' error surfaced to the operator.
QEMU exited from the host's perspective and left nothing behind: no running guest, no console output, no obvious pointer at what had failed.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Concrete commands and outputs, single self-reported source, no artifacts, truncated ending
The account is specific and reproducible in method — lspci -nnk -d 10de:24b0 output, vfio.conf and blacklist.conf contents, update-initramfs, the /sys/kernel/iommu_groups enumeration that surfaced the SAS2008 — which is stronger than a generic troubleshooting post. But everything rests on one practitioner narrative with no pasted logs, no timing data, no second observer, and the published text stops mid-sentence in session three before the mechanism is explained or a fix is demonstrated. The sealing performance figures are asserted, not measured in-article.
One self-reported homelab instance, no measurable adoption signal
The only adoption-shaped datum is a single operator disclosing one Proxmox 8 host and one A4000 that never successfully passed through. There are no third-party deployments, no counts, no vendor or project usage disclosures, and no benchmark participation in the supplied material, so adoption cannot be scored without inventing facts.
Mildly overstated: verified diagnosis narrative, unverified fix and throughput payoff
The piece deflates as much as it inflates: it explicitly calls the 'GPU acceleration makes sealing faster' framing operationally misleading and reframes the benefit as pipeline decoupling, which pushes toward zero or negative. The overstatement is structural rather than rhetorical — the title and dek assert the HBA as the named culprit, and the 2.5x-3x sectors-per-day payoff is presented as the stake, while the published text never shows a working passthrough or a post-fix sealing run and the author admits he did not yet understand the mechanism. Small positive gap.
Practitioner blog with series cross-promotion; no vendor sponsorship disclosed
The visible incentive is authorial: a personal dev.to post that cross-references an earlier segmentation piece and positions itself within a series of workload-layer stories, which rewards narrative drama ('the error pointed at the GPU, the culprit was the HBA'). The author also has operator skin in the game as a small Filecoin storage provider whose sealing throughput is the subject. No sponsorship, vendor affiliation, NVIDIA/Proxmox/Filecoin relationship, or paid placement is disclosed or evident in the supplied material, so distortion pressure reads low-to-moderate.
Internally coherent single-source report, unresolved and uncorroborated
Confidence is moderate: the diagnostic sequence is plausible, internally consistent (the SDR-gated six-to-eight sector ceiling brackets the claimed five or six), and consistent with well-documented IOMMU-group passthrough behavior. It is held down by one publisher, one author, no artifacts, and a body that terminates before the mechanism and outcome are stated, which leaves the central causal claim probable rather than established.
build
py-libp2p bounds a dev-only /sdp endpoint that believed whatever Content-Length it was told1 distinct publisher
build
The MS-R1 ships KVM but no vhost, so an Android test fleet starts with a kernel build1 distinct publisher
build
A three-Pi HA control plane that ended up less reliable than the one node it replaced1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 20, 2026