qemu/hw/intc
liu.xuemei1@zte.com.cn bc2200134c migration: Fix migration failure when aia is configured as aplic-imsic
Address an error in migration when aia is configured as 'aplic-imsic' in
riscv kvm vm by adding riscv_aplic_state_needed() and
riscv_imsic_state_needed() to determine whether the corresponding sates are
needed.

Previously, the fields in the vmsds of 'riscv_aplic' and 'riscv_imsic' can
only be initialized under certain special conditions in commit 95a97b3fd2.
However, the corresponding ses of these vmsds are inserted into the
savevm_state.handlers unconditionally. This led to migration failure
characterized by uninitialized fields when save vm state:
qemu-system-riscv64: ../migration/vmstate.c:433: vmstate_save_state_v:
Assertion 'first_elem || !n_elems || !size' failed.

Fixes: 95a97b3fd2 ("target/riscv: update APLIC and IMSIC to support KVM AIA")

Signed-off-by: Xuemei Liu <liu.xuemei1@zte.com.cn>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-ID: <20250616150034827wuHs_ffe3Qm8cqFXT7HeW@zte.com.cn>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
2025-07-04 21:09:49 +10:00
..
allwinner-a10-pic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
apic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
apic_common.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
arm_gic.c hw/intc/arm_gic: introduce a first-cpu-index property 2025-06-16 11:26:25 +01:00
arm_gic_common.c hw/intc/arm_gic: introduce a first-cpu-index property 2025-06-16 11:26:25 +01:00
arm_gic_kvm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
arm_gicv2m.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
arm_gicv3.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
arm_gicv3_common.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
arm_gicv3_cpuif.c cleanup: Drop pointless return at end of function 2025-04-24 09:33:42 +02:00
arm_gicv3_cpuif_common.c hw/intc/arm_gicv3: Extract gicv3_set_gicv3state from arm_gicv3_cpuif.c 2021-12-15 10:11:34 +00:00
arm_gicv3_dist.c hw/intc/arm_gicv3: Implement GICD_INMIR 2024-04-25 10:21:05 +01:00
arm_gicv3_its.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
arm_gicv3_its_common.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
arm_gicv3_its_kvm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
arm_gicv3_kvm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
arm_gicv3_redist.c hw/intc/arm_gicv3: Implement NMI interrupt priority 2024-04-25 10:21:05 +01:00
armv7m_nvic.c arm/cpu: Store id_mmfr0-5 into the idregs array 2025-07-01 15:08:29 +01:00
aspeed_intc.c hw/intc/aspeed Fix coding style 2025-05-25 23:39:11 +02:00
aspeed_vic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
bcm2835_ic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
bcm2836_control.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
exynos4210_combiner.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
exynos4210_gic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
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 qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
grlib_irqmp.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
heathrow_pic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
i8259.c hw/intc/i8259: Remove unused DEBUG_PIC define 2025-04-25 17:00:42 +02:00
i8259_common.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
imx_avic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
imx_gpcv2.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
intc.c intc: add an interface to gather statistics/informations on interrupt controllers 2016-10-04 10:00:25 +02:00
ioapic-stub.c i386: select correct components for no-board build 2024-05-10 15:45:15 +02:00
ioapic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
ioapic_common.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
ioapic_internal.h include/system: Move exec/memory.h to system/memory.h 2025-04-23 14:08:21 -07:00
Kconfig hw/intc: Remove TCG dependency on ARM_GICV3 2025-03-04 14:45:34 +01:00
kvm_irqcount.c hw/intc: Extract the IRQ counting functions into a separate file 2023-01-13 16:22:57 +01:00
loongarch_extioi.c hw/loongarch/virt: Add reset support for kernel irqchip 2025-06-19 15:52:35 +08:00
loongarch_extioi_common.c hw/intc/loongarch_extioi: Add reset support 2025-05-06 09:17:32 +08:00
loongarch_extioi_kvm.c hw/loongarch/virt: Add reset support for kernel irqchip 2025-06-19 15:52:35 +08:00
loongarch_ipi.c hw/loongarch/virt: Add reset support for kernel irqchip 2025-06-19 15:52:35 +08:00
loongarch_ipi_kvm.c hw/loongarch/virt: Add reset support for kernel irqchip 2025-06-19 15:52:35 +08:00
loongarch_pch_msi.c hw/intc/loongarch_pch_msi: Inject MSI interrupt to kernel 2025-06-19 15:48:22 +08:00
loongarch_pch_pic.c hw/loongarch/virt: Add reset support for kernel irqchip 2025-06-19 15:52:35 +08:00
loongarch_pic_common.c hw/intc/loongarch_pch: Set version information at initial stage 2025-05-14 15:43:46 +08:00
loongarch_pic_kvm.c hw/loongarch/virt: Add reset support for kernel irqchip 2025-06-19 15:52:35 +08:00
loongson_ipi.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
loongson_ipi_common.c hw/intc/loongson_ipi: Add load and save interface with ipi_common class 2025-06-19 15:45:31 +08:00
loongson_liointc.c hw/other: spelling fixes 2023-09-21 11:31:16 +03:00
m68k_irqc.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
meson.build hw/intc/loongarch_pch: Add kernel irqchip realize function 2025-06-19 15:49:22 +08:00
mips_gic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
omap_intc.c hw/arm: Replace TABs for spaces in OMAP board and device code 2025-05-14 14:29:47 +01:00
ompic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
openpic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
openpic_kvm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
pl190.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
pnv_xive.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
pnv_xive2.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
pnv_xive2_regs.h pnv/xive2: Enable VST NVG and NVC index compression 2024-07-26 09:51:33 +10:00
pnv_xive_regs.h ppc/xive: Handle END triggers between chips with MMIOs 2023-09-06 11:19:33 +02:00
ppc-uic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
realview_gic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
riscv_aclint.c hw/intc: riscv_aclint: Fix mtime write for sstc extension 2025-07-04 21:09:48 +10:00
riscv_aplic.c migration: Fix migration failure when aia is configured as aplic-imsic 2025-07-04 21:09:49 +10:00
riscv_imsic.c migration: Fix migration failure when aia is configured as aplic-imsic 2025-07-04 21:09:49 +10:00
rx_icu.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
s390_flic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
s390_flic_kvm.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
sh_intc.c hw/intc/sh_intc: Remove unneeded local variable initialisers 2021-10-30 18:39:37 +02:00
sifive_plic.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
slavio_intctl.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
spapr_xive.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
spapr_xive_kvm.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
trace-events hw/intc/loongarch_pch: Use unified trace event for memory region ops 2025-05-14 15:53:44 +08:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vgic_common.h intc/gic: Extract some reusable vGIC code 2015-09-24 01:29:36 +01:00
xics.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
xics_kvm.c include: Rename sysemu/ -> system/ 2024-12-20 17:44:56 +01:00
xics_pnv.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
xics_spapr.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
xilinx_intc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
xive.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
xive2.c qom: Make InterfaceInfo[] uses const 2025-04-25 17:00:41 +02:00
xlnx-pmu-iomod-intc.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00
xlnx-zynqmp-ipi.c qom: Have class_init() take a const data argument 2025-04-25 17:00:41 +02:00