Hi everyone,
I'm currently working with devices virtualization and I have noticed on my experiments that one of the most sources of overhead comes from the device's interrupts, even if the guest OS has a pass-through access. This is due to the fact of the interrupt's injection by the hypervisor to the guest everytime it's triggered. In fact, routing a physical device IRQ to the virtual device IRQ of guestOS is costly in several approaches because it requires a hyp_entry and hyp_exit.
For I/O intensive workloads only direct access is not enough to approach the native performance due to the interrupt handling path from the host (hypervisor) to the guest (operating system), limiting it to 2/3 of native performance. Some attempts have been published to overcome this problem by software, however, I've seen in the spec of the new version of GIC (i.e. GICv4) a new feature called by "Direct injection of virtual interrupts".
My question is the following, with this new feature is it possible for the GIC anyhow inject the device's interrupt directly in the vcpu of the guest OS without any hypervisor interference?
Cheers
Only for LPI style interrupts, but yes. This question has been answered on this forum:
https://community.arm.com/processors/f/discussions/6231/gicv3-4-what-is-the-purpose-of-direct-injection-of-virtual-interrupts
And there's a lovely document that covers how to use it (if you don't want to follow the thread, see Section 9):
http://infocenter.arm.com/help/topic/com.arm.doc.dai0492b/index.html
Ta,
Matt
Thanks Matt,
Jorge