
Hello Alberto, First of all, does it work with only one vm config enabled? That is, first test with only vm0 and check if it works, then check with only vm2. Don't try combining them before testing each individually. That limits the number of problems you have to solve at once. On 2025-05-13 14:04, Alberto Lange via Devel wrote:
The passthrough for both VM's has been done, and both detect the NICs. For more information, this is the setup for the irqs in the camkes file: vm0.vm_irqs = [ {"name":"inner_eth", "ioapic":0, "source":0xb, "level_trig":1, "active_low":1, "dest":10} ]; vm2.vm_irqs = [ {"name":"outer_eth", "ioapic":0, "source":0xb, "level_trig":1, "active_low":1, "dest":12} ];
My problem is related to having the same IRQ11 in both e1000e devices. I can't control this; that is what QEMU provides.
Your problem is that both NICs share one IRQ. This a QEMU configuration problem, you want different interrupts. Perhaps you can achieve this by adding the card to different PCI roots, or with some other options. If not, you can work around this problem in the VM monitor, but you will need to modify the code: When receiving interrupt 11, you need to check which NIC caused it. And then inject the IRQs into the VMs that have the corresponding NIC (which could be both).
Any interruption goes to VM2; they all go to VM0 but are not intended to go to that one, so they are ignored.
This is because you are passing the same IOAPIC source twice, I don't think the code expect you to do that. It's probably not possible to get two IOAPIC handlers for the same IRQ in seL4 and your config triggers some bugs in the camkes VMM code (it should give at least an error message). It is strange that vm0 is complaining about IRQ 10 though, it's what you configured. Does networking work for vm0 if you pass it as IRQ 11? Greetings, Indan