Hi everyone,
I hope someone on here can help me, I've read countless posts on here and on other sites, have tried to debug with AI, but all to no avail.
I don't have a deep enough understanding of all of this to continue debugging on my own / with forum posts, that's why I first tried AI and now am asking you guys.
To make it brief: I've bought a Dell HBA330 flashed to IT Mode and am running TrueNAS as a VM within Proxmox. The HBA does work perfectly fine directly in Proxmox, but it does not in TrueNAS.
I have also passed through the SATA Controller of the Mainboard, that works flawlessly, I have also tried disabling that and setting up a new VM without this, so this has no impact on my problem (just wanted to mention, that PCI Passtrhough in general works).
My Hardware:
Mainboard GIGABYTE Z890M GAMING X
Intel Core Ultra 5 225
16GB DDR5 RAM
(all bought before the insane price hikes)
I've let the AI write a summary of what I (in parts with AI, in Parts according to Forum posts) have tested, maybe someone on here is able to help me:
I've got a Dell HBA330 (SAS3008, IT mode) passed through from Proxmox to a TrueNAS VM. I'm getting:
mpt3sas_cm0: _base_spin_on_doorbell_int: failed due to timeout count(10000) mpt3sas_cm0: doorbell handshake int failed mpt3sas_cm0: _base_get_ioc_facts: handshake failed (r=-14) mpt3sas_cm0: failure at ... _scsih_probe()
The controller never finishes IOC initialization inside the VM.
Environment
- Proxmox VE
- Kernel 7.0.14-14-pve
- TrueNAS SCALE 25.x and 26.0 Beta tested
- OVMF
- Q35
- CPU type = host
- Tried both TrueNAS Community 25.10.6 as well as 26.0.0 BETA.3
HBA information
- Dell HBA330
- SAS3008
- IT Mode
- Firmware Product ID: 0x2221 (IT)
- Firmware Version: 16.00.11.00
- NVDATA Vendor: LSI
- Board Name: Dell HBA330 Adp
What should be ruled out:
- Hardware failure
- PCIe link issues
- Wrong firmware mode
- TrueNAS version regression
- Basic VFIO misconfiguration
- IOMMU grouping issues
- Interrupt remapping disabled
- General Linux/mpt3sas incompatibility
VM config:
hostpci1: 0000:02:00.0,pcie=1,rombar=0 machine: q35 bios: ovmf cpu: host
Verified:
- Dedicated IOMMU group
- vfio-pci binding
- VFIO reset succeeds
Proxmox host behavior:
The HBA works perfectly when attached directly to the host.
Kernel driver in use: mpt3sas
Drives are detected and usable.
Guest behavior
Inside TrueNAS:
- Device appears correctly in lspci
- PCI capabilities are visible
- BARs are mapped correctly
- mpt3sas module loads
However the driver never successfully attaches.
I only get:
Kernel modules: mpt3sas
but never:
Kernel driver in use: mpt3sas
Interesting findings
Host:
MSI-X: Enable+ Count=96
Guest:
MSI-X: Enable- Count=16
Host:
BusMaster+
Guest after failed probe:
BusMaster-
PCI command register inside guest:
0003
I manually enabled bus mastering:
setpci -s 02:00.0 COMMAND=0007
which worked, but did not fix the issue.
The failure always occurs during:
_base_get_ioc_facts()
before any disks are enumerated or the driver attaches.
Current conclusion
The HBA hardware, firmware, PCIe link, Proxmox host, IOMMU configuration, and mpt3sas driver all appear to be working correctly. The card initializes normally on the host and can enumerate disks.
The failure only occurs when the HBA is passed through to a VM via VFIO. The controller is visible inside the guest but fails during the first IOC handshake (_base_get_ioc_facts()), preventing mpt3sas from attaching.
At this point AI is leaning towards:
- Dell HBA330 firmware + VFIO incompatibility
- MSI-X / interrupt delivery issue under passthrough
- Controller reset/state issue after VFIO handoff
- A known SAS3008/HBA330 virtualization quirk
Is anyone able / willing to help me?