Hello there!
I just started using Proxmox VE 7.4 (6.2) as of last week with a Lenovo ThinkCentre M900 Tiny I got off Amazon Renewed, mainly for the purpose of running it as an OPNSense router and as a host for Home Assistant OS, plus a few Docker containers.
So far, I've been able to install both OPNSense and HASS OS to the device, and HASS seems to run perfectly, though sadly I cannot say the same for OPNSense, given I've been dealing with constant reboots and, as of now, no Internet connectivity.
The issue seems to pop up when trying to forward my Intel NIC, an I219-LM with the following specs per
Also under the
So far, when I try to passthrough only the NIC itself, I am lucky after the Host's boot sequence and about 10 minutes of the VM's, given that PPPoE dialing completes without issue and I get both an IP address and Internet connectivity, but somewhere between 2-15 minutes depending on the VM's mood, I'll get
If I instead try to passthrough the entire
I've already tried blacklisting the NIC's driver from loading, upgrading and booting with the opt-in 6.2 kernel, and even disabling both all of the CPU's C-States and any PCIe power-saving measures like ASPM, but for some reason I'm completely unable to get the NIC to behave under these circumstances.
I'd really like to get the Onboard NIC to work in this fashion, given that if the problem lies with OPNSense itself, I'd probably be able to move over to OpenWRT and enjoy the CAKE SQM instead of OPNSense's, but I'm pretty sure I'll get better results either way if the entire NIC is being controlled by the VM instead of using a bridge, which besides seems to not work currently with OPNSense when it tries to dial the PPPoE connection to my ISP.
In case none of this works, my last resort would be another NIC I acquired as a precaution (an Intel I225 running over the device's NVMe port), but I'd really like to avoid this as there is not enough clearance between the SATA port and the NVMe port to have both the drive installed inside and the extension cables running out of the expansion card, which would mean having to drill out the casing to leave the Ethernet port and the 2.5" bay connected externally, but I'm pretty sure that would void my warranty (as meaningless as that would be).
Is there anything I can do to remedy this issue?
Thanks for the help!
I just started using Proxmox VE 7.4 (6.2) as of last week with a Lenovo ThinkCentre M900 Tiny I got off Amazon Renewed, mainly for the purpose of running it as an OPNSense router and as a host for Home Assistant OS, plus a few Docker containers.
So far, I've been able to install both OPNSense and HASS OS to the device, and HASS seems to run perfectly, though sadly I cannot say the same for OPNSense, given I've been dealing with constant reboots and, as of now, no Internet connectivity.
The issue seems to pop up when trying to forward my Intel NIC, an I219-LM with the following specs per
lspci -vvv
:
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM (rev 31)
DeviceName: Onboard LAN
Subsystem: Lenovo Ethernet Connection (2) I219-LM
Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx+
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Interrupt: pin A routed to IRQ 16
IOMMU group: 6
Region 0: Memory at df000000 (32-bit, non-prefetchable) [disabled] [size=128K]
Capabilities: [c8] Power Management version 3
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=1 PME-
Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+
Address: 0000000000000000 Data: 0000
Capabilities: [e0] PCI Advanced Features
AFCap: TP+ FLR+
AFCtrl: FLR+
AFStatus: TP+
Kernel driver in use: vfio-pci
Kernel modules: e1000e
Also under the
0000:00:1f
device are both the Onboard SMBus controller and the HD Audio controller, though without any modification the NIC itself is in its own IOMMU group, distinct from the other pieces.So far, when I try to passthrough only the NIC itself, I am lucky after the Host's boot sequence and about 10 minutes of the VM's, given that PPPoE dialing completes without issue and I get both an IP address and Internet connectivity, but somewhere between 2-15 minutes depending on the VM's mood, I'll get
vfio-pci 0000:00:1f.6: timed out waiting for pending transaction; performing AF function level reset anyway
on the syslog
of the host, and the VM will get into a reboot loop with no way of restoring Internet connectivity and/or stability to the system.If I instead try to passthrough the entire
0000:00:1f
device, I'll get the same behavior, but this time the following errors in the host's syslog
:
May 12 20:13:25 pve QEMU[1237]: kvm: vfio: Cannot reset device 0000:00:1f.4, no available reset mechanism.
May 12 20:13:25 pve QEMU[1237]: kvm: vfio: Cannot reset device 0000:00:1f.3, no available reset mechanism.
May 12 20:13:25 pve QEMU[1237]: kvm: vfio: Cannot reset device 0000:00:1f.2, no available reset mechanism.
May 12 20:13:25 pve QEMU[1237]: kvm: vfio: Cannot reset device 0000:00:1f.0, no available reset mechanism.
I've already tried blacklisting the NIC's driver from loading, upgrading and booting with the opt-in 6.2 kernel, and even disabling both all of the CPU's C-States and any PCIe power-saving measures like ASPM, but for some reason I'm completely unable to get the NIC to behave under these circumstances.
I'd really like to get the Onboard NIC to work in this fashion, given that if the problem lies with OPNSense itself, I'd probably be able to move over to OpenWRT and enjoy the CAKE SQM instead of OPNSense's, but I'm pretty sure I'll get better results either way if the entire NIC is being controlled by the VM instead of using a bridge, which besides seems to not work currently with OPNSense when it tries to dial the PPPoE connection to my ISP.
In case none of this works, my last resort would be another NIC I acquired as a precaution (an Intel I225 running over the device's NVMe port), but I'd really like to avoid this as there is not enough clearance between the SATA port and the NVMe port to have both the drive installed inside and the extension cables running out of the expansion card, which would mean having to drill out the casing to leave the Ethernet port and the 2.5" bay connected externally, but I'm pretty sure that would void my warranty (as meaningless as that would be).
Is there anything I can do to remedy this issue?
Thanks for the help!