Am Mittwoch, den 18.07.2012, 11:44 +0200 schrieb Udo Steinberg:
An active IOMMU will only let interrupt vectors through that have been explicitly whitelisted by the hypervisor. Applications request an interrupt by means of the assign_gsi hypercall and also specify which CPU they want the interrupt routed to. This must be done for any interrupt (IOAPIC or MSI).
One quick addition to this: If you guys implement that, be sure to test it on a box that actually has Interrupt Remapping support. The kernel will hide the difference (it magically returns the correct MSI address/value pair to program), but if it works on a box with Interrupt Remapping support, you are sure that you did everything correctly.
Udo, is there an easy way to figure out, if a system supports Interrupt Remapping short of looking into ACPI tables?
(I'm thinking about adding some code to the hypervisor, causing sem_down to fail on an interrupt semaphore unless the interrupt has been configured using assign_gsi.)
+1 from me. That would cause broken code to fail early.
Julian