qemu-cr16/include/hw/intc
Steve Sistare 376cdd7e9c hw/intc/arm_gicv3_kvm: preserve pending interrupts during cpr
Close a race condition that causes cpr-transfer to lose VFIO
interrupts on ARM.

CPR stops VCPUs but does not disable VFIO interrupts, which may continue
to arrive throughout the transition to new QEMU.

CPR calls kvm_irqchip_remove_irqfd_notifier_gsi in old QEMU to force
future interrupts to the producer eventfd, where they are preserved.
Old QEMU then destroys the old KVM instance.  However, interrupts may
already be pending in KVM state.  To preserve them, call ioctl
KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES to flush them to guest RAM, where
they will be picked up when the new KVM+VCPU instance is created.

Cc: qemu-stable@nongnu.org
Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
Reviewed-by: Fabiano Rosas <farosas@suse.de>
Message-id: 1754936384-278328-1-git-send-email-steven.sistare@oracle.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2025-08-30 16:37:22 +01:00
..
allwinner-a10-pic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
arm_gic.h hw/intc/arm_gic: introduce a first-cpu-index property 2025-06-16 11:26:25 +01:00
arm_gic_common.h hw/intc/arm_gic: introduce a first-cpu-index property 2025-06-16 11:26:25 +01:00
arm_gicv3.h Use DECLARE_*CHECKER* when possible (--force mode) 2020-09-09 09:27:11 -04:00
arm_gicv3_common.h hw/intc/arm_gicv3_kvm: preserve pending interrupts during cpr 2025-08-30 16:37:22 +01:00
arm_gicv3_its_common.h hw/intc/gicv3_its: Do not check its_class_name() 2025-07-01 15:08:29 +01:00
armv7m_nvic.h include/hw/intc: Remove ifndef CONFIG_USER_ONLY from armv7m_nvic.h 2025-04-23 14:08:39 -07:00
aspeed_intc.h hw/intc/aspeed: Add support for AST2700 TSP INTC 2025-05-05 09:38:55 +02:00
aspeed_vic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
bcm2835_ic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
bcm2836_control.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
exynos4210_combiner.h Clean up ill-advised or unusual header guards 2022-05-11 16:50:01 +02:00
exynos4210_gic.h hw/arm/exynos4210: Put external GIC into state struct 2022-04-21 11:37:04 +01:00
goldfish_pic.h include: Include headers where needed 2023-01-08 01:54:22 -05:00
grlib_irqmp.h hw/intc/grlib_irqmp: implements multicore irq 2024-02-15 16:58:46 +01:00
heathrow_pic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
i8259.h intc: remove PICCommonState from typedefs.h 2024-05-03 15:47:48 +02:00
imx_avic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
imx_gpcv2.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
intc.h hw/intc: Avoid using Monitor in INTERRUPT_STATS_PROVIDER::print_info() 2024-06-19 12:40:49 +02:00
ioapic.h hw: Move ioapic*.h to intc/ 2023-02-27 22:29:01 +01:00
kvm_irqcount.h hw/intc: Extract the IRQ counting functions into a separate file 2023-01-13 16:22:57 +01:00
loongarch_extioi.h hw/intc/loongarch_extioi: Move unrealize function to common code 2025-07-11 14:47:15 +08:00
loongarch_extioi_common.h hw/intc/loongarch_extioi: Move unrealize function to common code 2025-07-11 14:47:15 +08:00
loongarch_ipi.h hw/intc/loongarch_ipi: Add kernel irqchip save and restore function 2025-06-19 15:46:28 +08:00
loongarch_pch_msi.h include: Include headers where needed 2023-01-08 01:54:22 -05:00
loongarch_pch_pic.h hw/intc/loongarch_pch: Add kernel irqchip save and restore function 2025-06-19 15:50:28 +08:00
loongarch_pic_common.h hw/intc/loongarch_pch: Add kernel irqchip save and restore function 2025-06-19 15:50:28 +08:00
loongson_ipi.h hw/intc/loongson_ipi: Move IPICore structure to loongson_ipi_common.h 2024-08-06 10:22:52 +02:00
loongson_ipi_common.h hw/intc/loongson_ipi: Add load and save interface with ipi_common class 2025-06-19 15:45:31 +08:00
loongson_liointc.h hw/intc: Rework Loongson LIOINTC 2021-01-04 23:24:44 +01:00
m68k_irqc.h hw/m68k/irqc: Pass CPU using QOM link property 2023-11-01 07:20:34 +01:00
mips_gic.h hw/mips: Declare all length properties as unsigned 2023-03-08 00:37:48 +01:00
ppc-uic.h hw/intc/ppc-uic: Convert ppc-uic to a PPC4xx DCR device 2022-08-31 14:08:06 -03:00
realview_gic.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
riscv_aclint.h hw/intc: Move mtimer/mtimecmp to aclint 2022-09-07 09:19:10 +02:00
riscv_aplic.h hw/intc/riscv_aplic: add kvm_msicfgaddr for split mode aplic-imsic 2024-12-20 11:22:47 +10:00
riscv_imsic.h hw/intc: Add RISC-V AIA IMSIC device emulation 2022-03-03 13:14:50 +10:00
rx_icu.h Clean up decorations and whitespace around header guards 2022-05-11 16:50:32 +02:00
sifive_plic.h hw/intc: sifive_plic: Drop PLICMode_H 2023-01-06 10:42:55 +10:00
xlnx-pmu-iomod-intc.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
xlnx-zynqmp-ipi.h Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00