From: Ankur Arora <ankur.a.arora@oracle.com>
GSI-2/IOAPIC pin-2 is treated specially while initing
IRQ routing: PIC does not use it at all while the IOAPIC
maps virq=0 to pin-2 and does not use GSI-2.
(all other GSIs are identity mapped to pins.)
This results in any later code which allocates a virq
to be assigned GSI-2. This virq is in-turn used to
remap interrupts to HYPERVISOR_CALLBACK_VECTOR (0xf3)
to deliver to the guest.
Ordinarily this would be okay, but if the event delivery is
via direct injection via KVM_REQ_EVENT (without going
through the LAPIC) we see vmentry failure.
This works fine for any other values of GSI.
As a workaround, mark GSI-2 used.
Signed-off-by: Ankur Arora <ankur.a.arora@oracle.com>
Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
---
accel/kvm/kvm-all.c | 5 +++++
hw/i386/kvm/ioapic.c | 1 +
include/sysemu/kvm.h | 1 +
3 files changed, 7 insertions(+)