qemu-kvm: Fix GSI handling with in-kernel irqchip
PATCH 1/1 qemu-kvm: Fix GSI handling with in-kernel irqchip
Interrupt routing with in-kernel irqchip was always a mess. Now this increased after latest upstream merge: we started to call ioapic_set_irq also for kernel-handled interrupts.
Reduce this mess again by using the upstream kvm_piix3_gsi_handler. It is aware of the PIIX3-specific routing in KVM mode and won't call into the user space APIC model (as we do not raise IRQs >= ISA_NUM_IRQS with the PIIX3).
Signed-off-by Jan Kiszka <[email protected]>
--- hw/pc_piix.c | 17 +++++------------ 1 files changed, 5 insertions(+), 12 deletions(-)
hw/pc_piix.c +5 -12
@@ -90,6 +90,7 @@ static void kvm_piix3_setup_irq_routing(bool pci_enabled) }#endif /* CONFIG_KVM */ } +#endif static void kvm_piix3_gsi_handler (void *opaque,int n,int level) {
@@ -102,7 +103,6 @@ static void kvm_piix3_gsi_handler(void *opaque, int n, int level)qemu_set_irq (s->ioapic_irq[n], level); } } -#endif static void ioapic_init (GSIState *gsi_state) {
@@ -194,14 +194,13 @@ static void pc_init1(MemoryRegion *system_memory, } gsi_state =g_malloc0 (sizeof (*gsi_state)); -#ifdef UNUSED_UPSTREAM_KVM if (kvm_enabled () &&kvm_irqchip_in_kernel ()) { +#ifdef UNUSED_UPSTREAM_KVM kvm_piix3_setup_irq_routing (pci_enabled); +#endif gsi =qemu_allocate_irqs (kvm_piix3_gsi_handler, gsi_state,GSI_NUM_PINS ); - } else -#endif - { + }else { gsi =qemu_allocate_irqs (gsi_handler, gsi_state,GSI_NUM_PINS ); }
@@ -221,6 +220,7 @@ static void pc_init1(MemoryRegion *system_memory, isa_bus =isa_bus_new (NULL , system_io); no_hpet =1 ; } +isa_bus_irqs (isa_bus, gsi);#ifdef UNUSED_UPSTREAM_KVM if (kvm_enabled () &&kvm_irqchip_in_kernel ()) {
@@ -240,13 +240,6 @@ static void pc_init1(MemoryRegion *system_memory,if (pci_enabled) {ioapic_init (gsi_state); } -if (!(kvm_enabled () &&kvm_irqchip_in_kernel ())) { - gsi =qemu_allocate_irqs (gsi_handler, gsi_state,GSI_NUM_PINS ); - }else { - gsi = i8259; - } - -isa_bus_irqs (isa_bus, gsi);pc_register_ferr_irq (gsi[13 ]);
Signature · 1 line
1.7.3.4