vt-d2 interrupt remapping in virtualized scenario
Posted: Tue Dec 03, 2013 7:22 am
Hi folks,
consider the virtualization scenario where a PCIe device is assigned to a specific VM (e.g. PCI passthrough device VM assigned into ESXi). I was trying to better understand how VT-d2 (interrupt remapping) is involved in delivery a such interrupt to the specific VM
Reading Intel doc interrupt remapping (implemented by northbridge integrated on-die on modern CPUs) basically maps a "logical interrupt" - programmed by VM into assigned device (e.g. MSI capability registry entries into PCIe configuration space or MMIO range in case of MSI-X) - in a physical interrupt message directly delivered to the CPU's local APIC (actually IRTE entries have fields for cpu-id destination, interrupt vector plus other interrupt related stuff)
Now if that is correct my doubt is: how does the interrupt remapping engine deliver an interrupt to a specific VM assigned vCPU? There exist dedicated sw structures (managed by Hypervisor/VMM) involved in this deliver process (e.g. VMCS or others) ?
thanks for your help !
consider the virtualization scenario where a PCIe device is assigned to a specific VM (e.g. PCI passthrough device VM assigned into ESXi). I was trying to better understand how VT-d2 (interrupt remapping) is involved in delivery a such interrupt to the specific VM
Reading Intel doc interrupt remapping (implemented by northbridge integrated on-die on modern CPUs) basically maps a "logical interrupt" - programmed by VM into assigned device (e.g. MSI capability registry entries into PCIe configuration space or MMIO range in case of MSI-X) - in a physical interrupt message directly delivered to the CPU's local APIC (actually IRTE entries have fields for cpu-id destination, interrupt vector plus other interrupt related stuff)
Now if that is correct my doubt is: how does the interrupt remapping engine deliver an interrupt to a specific VM assigned vCPU? There exist dedicated sw structures (managed by Hypervisor/VMM) involved in this deliver process (e.g. VMCS or others) ?
thanks for your help !