qemu/hw/intc
Edgar E. Iglesias 7175a562f1 hw/intc/arm_gic: Fix deactivation of SPI lines
Julien reported that he has seen strange behaviour when running
Xen on QEMU using GICv2. When Xen migrates a guest's vCPU from
one pCPU to another while the vCPU is handling an interrupt, the
guest is unable to properly deactivate interrupts.

Looking at it a little closer, our GICv2 model treats
deactivation of SPI lines as if they were PPI's, i.e banked per
CPU core. The state for active interrupts should only be banked
for PPI lines, not for SPI lines.

Make deactivation of SPI lines unbanked, similar to how we
handle writes to GICD_ICACTIVER.

Reported-by: Julien Grall <julien@xen.org>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Message-id: 20240605143044.2029444-2-edgar.iglesias@gmail.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2024-06-21 14:01:58 +01:00
..
allwinner-a10-pic.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
apic_common.c hw/i386/x86: Fix PIC interrupt handling if APIC is globally disabled 2024-02-14 06:09:32 -05:00
apic.c hw/intc/apic: fix memory leak 2024-03-09 18:51:45 +01:00
arm_gic_common.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
arm_gic_kvm.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
arm_gic.c hw/intc/arm_gic: Fix writes to GICD_ITARGETSRn 2024-05-30 13:21:06 +01:00
arm_gicv2m.c
arm_gicv3_common.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
arm_gicv3_cpuif_common.c
arm_gicv3_cpuif.c hw/intc/arm_gicv3: Report the VINMI interrupt 2024-04-25 10:21:05 +01:00
arm_gicv3_dist.c hw/intc/arm_gicv3: Implement GICD_INMIR 2024-04-25 10:21:05 +01:00
arm_gicv3_its_common.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
arm_gicv3_its_kvm.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
arm_gicv3_its.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
arm_gicv3_kvm.c hw, target: Add ResetType argument to hold and exit phase methods 2024-04-25 10:21:06 +01:00
arm_gicv3_redist.c hw/intc/arm_gicv3: Implement NMI interrupt priority 2024-04-25 10:21:05 +01:00
arm_gicv3.c hw/intc/arm_gicv3: Implement NMI interrupt priority 2024-04-25 10:21:05 +01:00
armv7m_nvic.c hw/intc/armv7m_nvic: add "num-prio-bits" property 2024-01-09 14:42:40 +00:00
aspeed_intc.c aspeed/intc: Add AST2700 support 2024-06-16 21:08:54 +02:00
aspeed_vic.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
bcm2835_ic.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
bcm2836_control.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
etraxfs_pic.c
exynos4210_combiner.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
exynos4210_gic.c
gic_internal.h hw/intc/arm_gic: Fix deactivation of SPI lines 2024-06-21 14:01:58 +01:00
gicv3_internal.h hw/intc/arm_gicv3: Handle icv_nmiar1_read() for icc_nmiar1_read() 2024-04-25 10:21:05 +01:00
goldfish_pic.c hw/intc: Avoid using Monitor in INTERRUPT_STATS_PROVIDER::print_info() 2024-06-19 12:40:49 +02:00
grlib_irqmp.c hw/intc/grlib_irqmp: abort realize when ncpus value is out of range 2024-03-09 19:17:01 +01:00
heathrow_pic.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
i8259_common.c hw/intc: Avoid using Monitor in INTERRUPT_STATS_PROVIDER::print_info() 2024-06-19 12:40:49 +02:00
i8259.c hw/intc/i8259: Implement legacy LTIM Edge/Level Bank Select 2023-03-08 00:37:48 +01:00
imx_avic.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
imx_gpcv2.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
intc.c
ioapic_common.c hw/intc: Avoid using Monitor in INTERRUPT_STATS_PROVIDER::print_info() 2024-06-19 12:40:49 +02:00
ioapic_internal.h hw: Move ioapic*.h to intc/ 2023-02-27 22:29:01 +01:00
ioapic-stub.c i386: select correct components for no-board build 2024-05-10 15:45:15 +02:00
ioapic.c hw/intc/ioapic: Update KVM routes before redelivering IRQ, on RTE update 2023-03-15 11:52:25 +01:00
Kconfig hw/intc/loongarch_ipi: Rename as loongson_ipi 2024-05-09 00:07:21 +02:00
kvm_irqcount.c
loongarch_extioi.c hw/intc/loongarch_extioi: Add extioi virt extension definition 2024-06-06 11:56:45 +08:00
loongarch_pch_msi.c
loongarch_pch_pic.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
loongson_ipi.c hw/intc/loongson_ipi: Replace ipi_getcpu with cpu_by_arch_id 2024-06-19 12:42:03 +02:00
loongson_liointc.c hw/other: spelling fixes 2023-09-21 11:31:16 +03:00
m68k_irqc.c hw/intc: Avoid using Monitor in INTERRUPT_STATS_PROVIDER::print_info() 2024-06-19 12:40:49 +02:00
meson.build aspeed/intc: Add AST2700 support 2024-06-16 21:08:54 +02:00
mips_gic.c accel/tcg: Replace CPUState.env_ptr with cpu_env() 2023-10-04 11:03:54 -07:00
omap_intc.c hw/other: spelling fixes 2023-09-21 11:31:16 +03:00
ompic.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
openpic_kvm.c
openpic.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
pl190.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
pnv_xive2_regs.h pnv/xive2: Add definition for the ESB cache configuration register 2023-06-10 10:19:24 -03:00
pnv_xive2.c hw/ppc: Avoid using Monitor in pnv_xive2_pic_print_info() 2024-06-19 12:40:49 +02:00
pnv_xive_regs.h ppc/xive: Handle END triggers between chips with MMIOs 2023-09-06 11:19:33 +02:00
pnv_xive.c hw/ppc: Avoid using Monitor in pnv_xive_pic_print_info() 2024-06-19 12:40:49 +02:00
ppc-uic.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
realview_gic.c
riscv_aclint.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
riscv_aplic.c hw/intc/riscv_aplic: APLICs should add child earlier than realize 2024-06-03 11:12:11 +10:00
riscv_imsic.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
rx_icu.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
s390_flic_kvm.c kvm: move target-dependent interrupt routing out of kvm-all.c 2024-05-03 15:47:48 +02:00
s390_flic.c hw/intc/s390_flic: Fix crash that occurs when saving the machine state 2024-05-17 11:18:32 +02:00
sh_intc.c
sifive_plic.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
slavio_intctl.c hw/intc: Avoid using Monitor in INTERRUPT_STATS_PROVIDER::print_info() 2024-06-19 12:40:49 +02:00
spapr_xive_kvm.c hw/other: spelling fixes 2023-09-21 11:31:16 +03:00
spapr_xive.c hw/ppc: Avoid using Monitor in SpaprInterruptControllerClass::print_info() 2024-06-19 12:40:49 +02:00
trace-events aspeed/intc: Add AST2700 support 2024-06-16 21:08:54 +02:00
trace.h
vgic_common.h
xics_kvm.c
xics_pnv.c
xics_spapr.c hw/ppc: Avoid using Monitor in SpaprInterruptControllerClass::print_info() 2024-06-19 12:40:49 +02:00
xics.c hw/ppc: Avoid using Monitor in ics_pic_print_info() 2024-06-19 12:40:49 +02:00
xilinx_intc.c
xive2.c hw/ppc: Avoid using Monitor in xive2_end_pic_print_info() 2024-06-19 12:40:49 +02:00
xive.c hw/ppc: Avoid using Monitor in xive_end_eas_pic_print_info() 2024-06-19 12:40:49 +02:00
xlnx-pmu-iomod-intc.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
xlnx-zynqmp-ipi.c hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00