In VFIO VM state change handler, VFIO devices are transitioned in _SAVING state, which should keep them from sending interrupts. Then we can save the pending states of all interrupts in GIC VM state change handler (on ARM).
So we have to set the priority of VFIO VM state change handler explicitly (like virtio devices) to ensure it is called before GIC's in saving. Signed-off-by: Shenming Lu <lushenm...@huawei.com> --- hw/vfio/migration.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/vfio/migration.c b/hw/vfio/migration.c index 55261562d4..d0d30864ba 100644 --- a/hw/vfio/migration.c +++ b/hw/vfio/migration.c @@ -857,7 +857,8 @@ static int vfio_migration_init(VFIODevice *vbasedev, register_savevm_live(id, VMSTATE_INSTANCE_ID_ANY, 1, &savevm_vfio_handlers, vbasedev); - migration->vm_state = qemu_add_vm_change_state_handler(vfio_vmstate_change, + migration->vm_state = qdev_add_vm_change_state_handler(vbasedev->dev, + vfio_vmstate_change, vbasedev); migration->migration_state.notify = vfio_migration_state_notifier; add_migration_state_change_notifier(&migration->migration_state); -- 2.19.1