[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 06/15] vdpa: add vhost_vdpa->suspended parameter
From: |
Eugenio Pérez |
Subject: |
[PATCH v4 06/15] vdpa: add vhost_vdpa->suspended parameter |
Date: |
Fri, 24 Feb 2023 16:54:29 +0100 |
This allows vhost_vdpa to track if it is safe to get 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 8cc9c98db9..228677895a 100644
--- a/hw/virtio/vhost-vdpa.c
+++ b/hw/virtio/vhost-vdpa.c
@@ -1227,6 +1227,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
- Re: [PATCH v4 01/15] vdpa net: move iova tree creation from init to start, (continued)
- [PATCH v4 02/15] vdpa: Remember last call fd set, Eugenio Pérez, 2023/02/24
- [PATCH v4 04/15] vdpa: Negotiate _F_SUSPEND feature, Eugenio Pérez, 2023/02/24
- [PATCH v4 03/15] vdpa: stop svq at vhost_vdpa_dev_start(false), Eugenio Pérez, 2023/02/24
- [PATCH v4 05/15] vdpa: move vhost reset after get vring base, Eugenio Pérez, 2023/02/24
- [PATCH v4 09/15] vdpa: add vdpa net migration state notifier, Eugenio Pérez, 2023/02/24
- [PATCH v4 14/15] vdpa net: allow VHOST_F_LOG_ALL, Eugenio Pérez, 2023/02/24
- [PATCH v4 06/15] vdpa: add vhost_vdpa->suspended parameter,
Eugenio Pérez <=
- [PATCH v4 07/15] vdpa: add vhost_vdpa_suspend, Eugenio Pérez, 2023/02/24
- [PATCH v4 10/15] vdpa: disable RAM block discard only for the first device, Eugenio Pérez, 2023/02/24
- [PATCH v4 13/15] vdpa: block migration if SVQ does not admit a feature, Eugenio Pérez, 2023/02/24
- [PATCH v4 08/15] vdpa: rewind at get_base, not set_base, Eugenio Pérez, 2023/02/24
- [PATCH v4 12/15] vdpa: block migration if device has unsupported features, Eugenio Pérez, 2023/02/24