Virtualizing Interrupts

Virtualizing Interrupts

Imagen de Anthony Bock (Intel)

It seems like there must be some way of virtualizing interrupts without catching them all in the VMM or exiting on every APIC access from the guest...

Let's say I have a single device that I need the VMM to manage and present a virtual device to the guest. I want to catch the physicaldevice's interrupts in the VMM but I don't care about any other device and I would really like to avoid virtualizing the whole APIC just to hide this one interrupt from the guest. When the VMM is done, I want to inject an interrupt for the virtual function into the guest.

Is there any way to catch just this one interrupt in the VMM and let everything else pass through to the guest without exiting?

publicaciones de 6 / 0 nuevos
Último envío
Para obtener más información sobre las optimizaciones del compilador, consulte el aviso sobre la optimización.
Imagen de Hussam Mousa (Intel)

Unfortunately the current generation of H/W and VMMs don't yet support this functionality.

Are you interested in the performance benefits of it, or is there a functional problem you are facing?

Imagen de David Ott (Intel)

Virtualized interrupts are not currently supported today.

David Ott

Imagen de Anthony Bock (Intel)

Both, actually. We would like the guest to be able to use their operating system's in-box class drivers without an additional driver for our device. This isn't possible if we have to explicitly coordinate with the code running in the VMM.

We can virtualize more completely but then we incur performance penalties and add complexity in the VMM. I was looking for a way around this should such an option exist...

Imagen de Hussam Mousa (Intel)
Best Reply

If this is a PCI-E device you can use VT-D pass-through for the functionality you described. Have you looked at that option?

Imagen de Anthony Bock (Intel)

Yes, it is a PCIe device. VTd is plan B, so it looks like we'll try looking in that direction for awhile.

Thanks!

Inicie sesión para dejar un comentario.