Hi all, here Albert
I’m working on a SuperMicro E300-9D server and trying to passthrough an Intel X557-AT2 NIC to a Linux 6.1 guest. The .camkes configuration seems to be right, here are the configs for the device (the device is correctly detected on the VM):
vm2.vm_ioports = [];
vm2.pci_devices = [
{
"name":"outer_eth",
"bus":0xb5,
"dev":0x0,
"fun":1,
"irq":"outer_eth",
"memory":[
{"paddr":0xf9000000, "size":0x01000000, "page_bits":12}, // BAR0
{"paddr":0xfb000000, "size":0x00008000, "page_bits":12}, // BAR3
]
}
];
vm2.vm_irqs = [
{"name":"outer_eth", "ioapic":0, "source":0xb, "level_trig":0, "active_low":1, "dest":12}
];
I’m seeing the following errors during boot and when bringing the interface up:
[ 2.040786] i40e 0000:00:01.0: MAC address: 3c:ec:ef:d2:88:85
[ 2.090786] i40e 0000:00:01.0: MSI-X vector reservation failed: -38
[ 2.109960] i40e 0000:00:01.0: MSI-X not available, trying MSI
[ 2.115660] i40e 0000:00:01.0: MSI init failed - -38
[ 2.121656] i40e 0000:00:01.0: MSI-X and MSI not available, falling back to Legacy IRQ
[ 2.220802] i40e 0000:00:01.0 eth1: NIC Link is Up, 1000 Mbps Full Duplex, Flow Control: None
[ 2.290774] i40e 0000:00:01.0: Features: PF-id[1] VSIs: 66 QP: 1 VxLAN Geneve PTP VEPA
...
# ifconfig eth1 up
[ 451.042525] i40e 0000:00:01.0 eth1: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 5770 ms
[ 451.052764] i40e 0000:00:01.0 eth1: tx_timeout: VSI_seid: 391, Q 0, NTC: 0x0, HWB: 0x1, NTU: 0x1, TAIL: 0x1, INT: 0x0
[ 451.065876] i40e 0000:00:01.0 eth1: tx_timeout recovery level 2, txqueue 0
[ 456.082601] i40e 0000:00:01.0 eth1: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 10810 ms
My thought is that this NIC does not work reliably with legacy IRQ mode.
My question is: Is there any implementation of MSI-X interrupts for x86 in the seL4 VMM, or plans to support it? If such support exists, I would like to contribute, as I plan to share my project once it’s finished.
Thanks in advance for any guidance or suggestions.
Albert