This series allows ITS save/restore and migration use cases. ITS tables are flushed into guest RAM on VM stop while registers are save on pre_save() callback. Tables and registers are restored on ITS post_load().
Redistributor pending tables also are flushed on VM stop, independently on ITS tables. That work was tested on Cavium ThunderX using virsh save/restore and virt-manager live migration. Best Regards Eric This series can be found at: https://github.com/eauger/qemu/tree/v2.9.0-its_mig-v6 History: v5 -> v6: - RFC -> PATCH as the kernel associated series was pulled for 4.12 - remove linux header update patch file - added "kvm-all: Pass an error object to kvm_device_access" to avoid aborting if table save fails with -EFAULT - fix the migration_blocker message (s/vGICv3/vITS) - use &s->ctlr directly when writing GITS_CTLR - s->iidr reset in gicv3_its_common_reset v4 -> v5: - adapt to the new user API - new patch "hw/intc/arm_gicv3_kvm: Implement pending table save" as the pending table save now is handled on GICV3 side. v3 -> v4: - oversight in v3, missed a last minute correction related to reg useless declaration in kvm_arm_its_pre_save v2 -> v3: - GITS_IIDR is now saved and restored to check ABI revision. - get/put functions renamed into pre_save/post_load - unmigratable = false removed - changed the migration blocker message - remove the extract64 round s->ctlr - reword some comments v1 -> v2: - rebase on 2.9 soft release code - handle case where migrate_add_blocker fails - add comments along with ITS and GICv3 migration priorities Eric Auger (4): kvm-all: Pass an error object to kvm_device_access hw/intc/arm_gicv3_its: Implement state save/restore hw/intc/arm_gicv3_kvm: Implement pending table save hw/intc/arm_gicv3_its: Allow save/restore hw/intc/arm_gic_kvm.c | 9 ++- hw/intc/arm_gicv3_common.c | 1 + hw/intc/arm_gicv3_its_common.c | 12 ++- hw/intc/arm_gicv3_its_kvm.c | 131 +++++++++++++++++++++++++++++---- hw/intc/arm_gicv3_kvm.c | 48 ++++++++++-- include/hw/intc/arm_gicv3_its_common.h | 8 ++ include/migration/vmstate.h | 2 + include/sysemu/kvm.h | 11 ++- kvm-all.c | 13 ++-- 9 files changed, 200 insertions(+), 35 deletions(-) -- 2.5.5