From fa9e2da7749b5227f1941f698e152abdcb5135ba Mon Sep 17 00:00:00 2001 From: Chen Qun 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 --- ...ority-of-the-VFIO-VM-state-change-ha.patch | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 vfio-Set-the-priority-of-the-VFIO-VM-state-change-ha.patch 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 +