Implement support to save/restore the ARM KVM VGIC state from the kernel. The basic appraoch is to transfer state from the in-kernel VGIC to the emulated arm-gic state representation and let the standard QEMU vmstate save/restore handle saving the arm-gic state. Restore works by reversing the process.
The first patches adds missing features and fixes issues with the arm-gic implementation in qemu in preparation for the actual save/restore logic. The patches depend on the device control patch series sent out earlier, which can also be found here: git://git.linaro.org/people/cdall/qemu-arm.git migration/device-ctrl-v3 The whole patch series based on top of the above can be found here: git://git.linaro.org/people/cdall/qemu-arm.git migration/vgic-v3 Changelog [v3]: - Changes are described in the individual patches - New patch that renames GIC_..._TRIGGER to GIC_..._EDGE_TRIGGER - New patch to keep track of software writing to SPENDR and CPENDR registers. - New patch that fixes not clearing the pending state for an asserted level-triggered interrupt on ACK - Separate patch for the GICC_APRn state Changelog [v2]: - Changes are described in the individual patches - VMState additions has been split into a separate patch Christoffer Dall (10): hw: arm_gic: Fix gic_set_irq handling hw: arm_gic: Introduce gic_set_priority function hw: arm_gic: Keep track of SGI sources arm_gic: Support setting/getting binary point reg arm_gic: Rename GIC_X_TRIGGER to GIC_X_EDGE_TRIGGER arm_gic: Keep track of GICD_CPENDR and GICD_SPENDR arm_gic: Fix gic_acknowledge_irq pending bit clear vmstate: Add uint32 2D-array support arm_gic: Add GICC_APRn state to the GICState hw: arm_gic_kvm: Add KVM VGIC save/restore logic hw/intc/arm_gic.c | 133 +++++++++--- hw/intc/arm_gic_common.c | 15 +- hw/intc/arm_gic_kvm.c | 424 ++++++++++++++++++++++++++++++++++++++- hw/intc/gic_internal.h | 13 +- include/hw/intc/arm_gic_common.h | 21 ++ include/migration/vmstate.h | 6 + 6 files changed, 569 insertions(+), 43 deletions(-) -- 1.8.4.3