58 lines
1.7 KiB
Diff
58 lines
1.7 KiB
Diff
From 200b5168858f0eb9e48d529fa131adedc2c193b4 Mon Sep 17 00:00:00 2001
|
|
From: libai <libai12@huawei.com>
|
|
Date: Mon, 4 Dec 2023 15:57:35 +0800
|
|
Subject: [PATCH 08/16] vhost: implement post resume bh
|
|
|
|
Set vdpa device mig state to post start when vm post start
|
|
|
|
Signed-off-by: libai <libai12@huawei.com>
|
|
---
|
|
hw/virtio/vdpa-dev-mig.c | 17 +++++++++++++++++
|
|
1 file changed, 17 insertions(+)
|
|
|
|
diff --git a/hw/virtio/vdpa-dev-mig.c b/hw/virtio/vdpa-dev-mig.c
|
|
index 662d4a2..1872f11 100644
|
|
--- a/hw/virtio/vdpa-dev-mig.c
|
|
+++ b/hw/virtio/vdpa-dev-mig.c
|
|
@@ -26,6 +26,7 @@
|
|
#include "qemu/error-report.h"
|
|
#include "hw/virtio/vdpa-dev-mig.h"
|
|
#include "migration/qemu-file-types.h"
|
|
+#include "qemu/main-loop.h"
|
|
|
|
/*
|
|
* Flags used as delimiter:
|
|
@@ -218,6 +219,18 @@ err_host_notifiers:
|
|
return ret;
|
|
}
|
|
|
|
+static void vdpa_dev_migration_handle_incoming_bh(void *opaque)
|
|
+{
|
|
+ struct vhost_dev *hdev = opaque;
|
|
+ int ret;
|
|
+
|
|
+ /* Post start device, unsupport rollback if failed! */
|
|
+ ret = vhost_vdpa_set_mig_state(hdev, VDPA_DEVICE_POST_START);
|
|
+ if (ret) {
|
|
+ error_report("Failed to set state: POST_START\n");
|
|
+ }
|
|
+}
|
|
+
|
|
static void vdpa_dev_vmstate_change(void *opaque, bool running, RunState state)
|
|
{
|
|
VhostVdpaDevice *vdpa = VHOST_VDPA_DEVICE(opaque);
|
|
@@ -247,6 +260,10 @@ static void vdpa_dev_vmstate_change(void *opaque, bool running, RunState state)
|
|
|
|
if (mis->state == RUN_STATE_RESTORE_VM) {
|
|
vhost_vdpa_call(hdev, VHOST_VDPA_RESUME, NULL);
|
|
+ /* post resume */
|
|
+ mis->bh = qemu_bh_new(vdpa_dev_migration_handle_incoming_bh,
|
|
+ hdev);
|
|
+ qemu_bh_schedule(mis->bh);
|
|
}
|
|
}
|
|
}
|
|
--
|
|
2.46.0.windows.1
|
|
|