Dear all,
To the best of my knowledge, ARM hardware virtualization extensions can force the system to trap to the hypervisor when certain events occur such as privileged cache ops, MMU ops, and other privileged operations. Also, one can configure IRQ and FIQ to be routed to the hypervisor.
Using the ARM extensions can I configure IRQ from certain devices to trap (say timer) while others to be handled in the directly in the guest. Please share your experience.
Best wishes.
I'm afraid the answer is no - you can't selectively route IRQs. That is, physical IRQs are either routed to EL2/Hyp or they are not.
The closest to this would be that that the GIC (GICv2 and later) can generate virtual interrupts (vIRQ and vFIQ). You could have physical interrupts routed to EL2/Hyp, and virtual interrupts dealt with by the guest.
Thanks for the answer,
but the vIRQ are injected to the guest by the hypervisor based on physical interrupt that already trapped to the hypervisor which maps and injects the PIRQ to virq so that the guest can handle and have the illusion to be running on a native hardware. In that cases, the overhead of world-switching that I am trying to workaround have actually been injected into the system. Is that true? am I missing a certain point?
Regards,