diff --git a/vfio-Set-the-priority-of-the-VFIO-VM-state-change-ha.patch b/vfio-Set-the-priority-of-the-VFIO-VM-state-change-ha.patch new file mode 100644 index 0000000..d2138b5 --- /dev/null +++ b/vfio-Set-the-priority-of-the-VFIO-VM-state-change-ha.patch @@ -0,0 +1,41 @@ +From b9d74bcf6aefe8ab607439ad1c518a453053ccee Mon Sep 17 00:00:00 2001 +From: Shenming Lu +Date: Wed, 10 Mar 2021 11:02:32 +0800 +Subject: [PATCH] vfio: Set the priority of the VFIO VM state change handler + explicitly + +In the VFIO VM state change handler when stopping the VM, the _RUNNING +bit in device_state is cleared which makes the VFIO device stop, including +no longer generating interrupts. Then we can save the pending states of +all interrupts in the GIC VM state change handler (on ARM). + +So we have to set the priority of the VFIO VM state change handler +explicitly (like virtio devices) to ensure it is called before the +GIC's in saving. + +Signed-off-by: Shenming Lu +Reviewed-by: Kirti Wankhede +Reviewed-by: Cornelia Huck +Message-Id: <20210310030233.1133-3-lushenming@huawei.com> +Signed-off-by: Alex Williamson +--- + 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 ea36ae5225..1a97784486 100644 +--- a/hw/vfio/migration.c ++++ b/hw/vfio/migration.c +@@ -862,7 +862,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.27.0 +