qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC PATCH 18/21] kvm/ioapic: mark gsi-2 used in ioapic routing init


From: Philippe Mathieu-Daudé
Subject: Re: [RFC PATCH 18/21] kvm/ioapic: mark gsi-2 used in ioapic routing init
Date: Mon, 5 Dec 2022 23:25:18 +0100
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.5.1

On 5/12/22 18:31, David Woodhouse wrote:
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(+)


diff --git a/hw/i386/kvm/ioapic.c b/hw/i386/kvm/ioapic.c
index ee7c8ef68b..5fab0d35c9 100644
--- a/hw/i386/kvm/ioapic.c
+++ b/hw/i386/kvm/ioapic.c
@@ -43,6 +43,7 @@ void kvm_pc_setup_irq_routing(bool pci_enabled)
              }
          }
      }

Workarounds usually deserve some comment in the code.

+    kvm_irqchip_set_gsi(s, 2);
      kvm_irqchip_commit_routes(s);
  }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]