mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-19 11:41:32 +00:00
x86: rewrite gsi_handler()
Rewrite function to use switch() for IRQ number mapping. Check i8259_irq exists before raising it so the function also works in case no i8259 (aka pic) is present. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Message-id: 20201203105423.10431-3-kraxel@redhat.com
This commit is contained in:
parent
5e7b204dbf
commit
ceea95cd88
@ -588,11 +588,17 @@ void gsi_handler(void *opaque, int n, int level)
|
||||
GSIState *s = opaque;
|
||||
|
||||
trace_x86_gsi_interrupt(n, level);
|
||||
if (n < ISA_NUM_IRQS) {
|
||||
/* Under KVM, Kernel will forward to both PIC and IOAPIC */
|
||||
qemu_set_irq(s->i8259_irq[n], level);
|
||||
switch (n) {
|
||||
case 0 ... ISA_NUM_IRQS - 1:
|
||||
if (s->i8259_irq[n]) {
|
||||
/* Under KVM, Kernel will forward to both PIC and IOAPIC */
|
||||
qemu_set_irq(s->i8259_irq[n], level);
|
||||
}
|
||||
/* fall through */
|
||||
case ISA_NUM_IRQS ... IOAPIC_NUM_PINS - 1:
|
||||
qemu_set_irq(s->ioapic_irq[n], level);
|
||||
break;
|
||||
}
|
||||
qemu_set_irq(s->ioapic_irq[n], level);
|
||||
}
|
||||
|
||||
void ioapic_init_gsi(GSIState *gsi_state, const char *parent_name)
|
||||
|
Loading…
x
Reference in New Issue
Block a user