qemu/hw/intc
Peter Xu 20fd4b7b6d x86: ioapic: add support for explicit EOI
Some old Linux kernels (upstream before v4.0), or any released RHEL
kernels has problem in sending APIC EOI when IR is enabled. Meanwhile,
many of them only support explicit EOI for IOAPIC, which is only
introduced in IOAPIC version 0x20. This patch provide a way to boost
QEMU IOAPIC to version 0x20, in order for QEMU to correctly receive EOI
messages.

Without boosting IOAPIC version to 0x20, kernels before commit d32932d
("x86/irq: Convert IOAPIC to use hierarchical irqdomain interfaces")
will have trouble enabling both IR and level-triggered interrupt devices
(like e1000).

To upgrade IOAPIC to version 0x20, we need to specify:

  -global ioapic.version=0x20

To be compatible with old systems, 0x11 will still be the default IOAPIC
version. Here 0x11 and 0x20 are the only versions to be supported.

One thing to mention: this patch only applies to emulated IOAPIC. It
does not affect kernel IOAPIC behavior.

Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <1470059959-372-1-git-send-email-peterx@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2016-08-03 18:44:57 +02:00
..
allwinner-a10-pic.c hw: explicitly include qemu/log.h 2016-05-19 16:42:29 +02:00
apic_common.c apic: Use apic_id as apic's migration instance_id 2016-07-20 12:02:19 -03:00
apic.c (kvm)apic: Add unrealize callbacks 2016-07-20 12:02:19 -03:00
arm_gic_common.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
arm_gic_kvm.c qemu-common: push cpu.h inclusion out of qemu-common.h 2016-05-19 16:42:29 +02:00
arm_gic.c hw/intc/gic: RAZ/WI non-sec access to sec interrupts 2016-06-06 16:59:29 +01:00
arm_gicv2m.c hw: explicitly include qemu/log.h 2016-05-19 16:42:29 +02:00
arm_gicv3_common.c hw/intc/arm_gicv3: Implement functions to identify next pending irq 2016-06-17 15:23:51 +01:00
arm_gicv3_cpuif.c hw/intc/arm_gicv3: Add missing break 2016-06-27 15:37:32 +01:00
arm_gicv3_dist.c hw/intc/arm_gicv3: Fix compilation with simple trace backend 2016-06-20 11:35:15 +01:00
arm_gicv3_kvm.c hw/intc/arm_gicv3: Add vmstate descriptors 2016-06-17 15:23:51 +01:00
arm_gicv3_redist.c arm_gicv3: Add assert()s to tell Coverity that offsets are aligned 2016-07-19 17:56:27 +01:00
arm_gicv3.c hw/intc/arm_gicv3: Implement GICv3 CPU interface registers 2016-06-17 15:23:51 +01:00
armv7m_nvic.c armv7m_nvic: Use qemu_get_cpu(0) instead of current_cpu 2016-07-04 13:15:22 +01:00
aspeed_vic.c hw: Clean up includes 2016-06-07 18:19:23 +03:00
bcm2835_ic.c hw: explicitly include qemu/log.h 2016-05-19 16:42:29 +02:00
bcm2836_control.c hw: explicitly include qemu/log.h 2016-05-19 16:42:29 +02:00
etraxfs_pic.c hw/intc: QOM'ify etraxfs_pic.c 2016-05-12 13:22:24 +01:00
exynos4210_combiner.c hw/intc: QOM'ify exynos4210_combiner.c 2016-05-12 13:22:24 +01:00
exynos4210_gic.c hw/intc: QOM'ify exynos4210_gic.c 2016-05-12 13:22:24 +01:00
gic_internal.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
gicv3_internal.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
grlib_irqmp.c hw/intc: QOM'ify grlib_irqmp.c 2016-05-12 13:22:25 +01:00
heathrow_pic.c hw/intc: Clean up includes 2016-01-29 15:07:24 +00:00
i8259_common.c hw/intc: Clean up includes 2016-01-29 15:07:24 +00:00
i8259.c hw: explicitly include qemu/log.h 2016-05-19 16:42:29 +02:00
imx_avic.c hw: explicitly include qemu/log.h 2016-05-19 16:42:29 +02:00
ioapic_common.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
ioapic.c x86: ioapic: add support for explicit EOI 2016-08-03 18:44:57 +02:00
lm32_pic.c hw/intc: QOM'ify lm32_pic.c 2016-06-20 18:12:04 +02:00
Makefile.objs hw/mips: implement Global Interrupt Controller 2016-07-12 09:10:12 +01:00
mips_gic.c hw/mips: implement Global Interrupt Controller 2016-07-12 09:10:12 +01:00
omap_intc.c hw/intc: QOM'ify omap_intc.c 2016-05-12 13:22:25 +01:00
openpic_kvm.c qemu-common: push cpu.h inclusion out of qemu-common.h 2016-05-19 16:42:29 +02:00
openpic.c hw: explicitly include qemu/log.h 2016-05-19 16:42:29 +02:00
pl190.c hw: explicitly include qemu/log.h 2016-05-19 16:42:29 +02:00
puv3_intc.c unicore: Clean up includes 2016-01-29 15:07:22 +00:00
realview_gic.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
s390_flic_kvm.c coccinelle: Remove unnecessary variables for function return value 2016-06-20 16:38:13 +02:00
s390_flic.c s390x/kvm: add interface for clearing IO irqs 2016-06-14 13:34:50 +02:00
sh_intc.c hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
slavio_intctl.c hw/intc: QOM'ify slavio_intctl.c 2016-05-12 13:22:25 +01:00
trace-events trace: split out trace events for hw/intc/ directory 2016-06-20 17:22:15 +01:00
vgic_common.h intc/gic: Extract some reusable vGIC code 2015-09-24 01:29:36 +01:00
xics_kvm.c ppc/xics: Replace "icp" with "xics" in most places 2016-07-01 13:41:47 +10:00
xics_spapr.c ppc/xics: Replace "icp" with "xics" in most places 2016-07-01 13:41:47 +10:00
xics.c ppc/xics: Replace "icp" with "xics" in most places 2016-07-01 13:41:47 +10:00
xilinx_intc.c hw/intc: Clean up includes 2016-01-29 15:07:24 +00:00