[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v5 05/14] vdpa: add vhost_vdpa->suspended parameter
From: |
Eugenio Pérez |
Subject: |
[PATCH v5 05/14] vdpa: add vhost_vdpa->suspended parameter |
Date: |
Fri, 3 Mar 2023 18:24:36 +0100 |
This allows vhost_vdpa to track if it is safe to get the vring base from
the device or not. If it is not, vhost can fall back to fetch idx from
the guest buffer again.
No functional change intended in this patch, later patches will use this
field.
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
---
include/hw/virtio/vhost-vdpa.h | 2 ++
hw/virtio/vhost-vdpa.c | 8 ++++++++
2 files changed, 10 insertions(+)
diff --git a/include/hw/virtio/vhost-vdpa.h b/include/hw/virtio/vhost-vdpa.h
index 7997f09a8d..4a7d396674 100644
--- a/include/hw/virtio/vhost-vdpa.h
+++ b/include/hw/virtio/vhost-vdpa.h
@@ -42,6 +42,8 @@ typedef struct vhost_vdpa {
bool shadow_vqs_enabled;
/* Vdpa must send shadow addresses as IOTLB key for data queues, not GPA */
bool shadow_data;
+ /* Device suspended successfully */
+ bool suspended;
/* IOVA mapping used by the Shadow Virtqueue */
VhostIOVATree *iova_tree;
GPtrArray *shadow_vqs;
diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
index 1550b1e26a..517e3cdc8d 100644
--- a/hw/virtio/vhost-vdpa.c
+++ b/hw/virtio/vhost-vdpa.c
@@ -1193,6 +1193,14 @@ static int vhost_vdpa_get_vring_base(struct vhost_dev
*dev,
return 0;
}
+ if (!v->suspended) {
+ /*
+ * Cannot trust in value returned by device, let vhost recover used
+ * idx from guest.
+ */
+ return -1;
+ }
+
ret = vhost_vdpa_call(dev, VHOST_GET_VRING_BASE, ring);
trace_vhost_vdpa_get_vring_base(dev, ring->index, ring->num);
return ret;
--
2.31.1
- [PATCH v5 00/14] Dynamically switch to vhost shadow virtqueues at vdpa net migration, Eugenio Pérez, 2023/03/03
- [PATCH v5 01/14] vdpa net: move iova tree creation from init to start, Eugenio Pérez, 2023/03/03
- [PATCH v5 02/14] vdpa: Remember last call fd set, Eugenio Pérez, 2023/03/03
- [PATCH v5 05/14] vdpa: add vhost_vdpa->suspended parameter,
Eugenio Pérez <=
- [PATCH v5 04/14] vdpa: rewind at get_base, not set_base, Eugenio Pérez, 2023/03/03
- [PATCH v5 06/14] vdpa: add vhost_vdpa_suspend, Eugenio Pérez, 2023/03/03
- [PATCH v5 07/14] vdpa: move vhost reset after get vring base, Eugenio Pérez, 2023/03/03
- [PATCH v5 03/14] vdpa: Negotiate _F_SUSPEND feature, Eugenio Pérez, 2023/03/03
- [PATCH v5 08/14] vdpa: add vdpa net migration state notifier, Eugenio Pérez, 2023/03/03
- [PATCH v5 09/14] vdpa: disable RAM block discard only for the first device, Eugenio Pérez, 2023/03/03
- [PATCH v5 10/14] vdpa net: block migration if the device has CVQ, Eugenio Pérez, 2023/03/03
- [PATCH v5 11/14] vdpa: block migration if device has unsupported features, Eugenio Pérez, 2023/03/03
- [PATCH v5 13/14] vdpa net: allow VHOST_F_LOG_ALL, Eugenio Pérez, 2023/03/03
- [PATCH v5 12/14] vdpa: block migration if SVQ does not admit a feature, Eugenio Pérez, 2023/03/03