[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH for 8.0 v8 07/12] vdpa: move SVQ vring features check to net/
From: |
Eugenio Pérez |
Subject: |
[PATCH for 8.0 v8 07/12] vdpa: move SVQ vring features check to net/ |
Date: |
Thu, 24 Nov 2022 16:51:53 +0100 |
The next patches will start control SVQ if possible. However, we don't
know if that will be possible at qemu boot anymore.
Since the moved checks will be already evaluated at net/ to know if it
is ok to shadow CVQ, move them.
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
---
hw/virtio/vhost-vdpa.c | 33 ++-------------------------------
net/vhost-vdpa.c | 3 ++-
2 files changed, 4 insertions(+), 32 deletions(-)
diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
index 691bcc811a..6f2dabd0bf 100644
--- a/hw/virtio/vhost-vdpa.c
+++ b/hw/virtio/vhost-vdpa.c
@@ -402,29 +402,9 @@ static int vhost_vdpa_get_dev_features(struct vhost_dev
*dev,
return ret;
}
-static int vhost_vdpa_init_svq(struct vhost_dev *hdev, struct vhost_vdpa *v,
- Error **errp)
+static void vhost_vdpa_init_svq(struct vhost_dev *hdev, struct vhost_vdpa *v)
{
g_autoptr(GPtrArray) shadow_vqs = NULL;
- uint64_t dev_features, svq_features;
- int r;
- bool ok;
-
- if (!v->shadow_vqs_enabled) {
- return 0;
- }
-
- r = vhost_vdpa_get_dev_features(hdev, &dev_features);
- if (r != 0) {
- error_setg_errno(errp, -r, "Can't get vdpa device features");
- return r;
- }
-
- svq_features = dev_features;
- ok = vhost_svq_valid_features(svq_features, errp);
- if (unlikely(!ok)) {
- return -1;
- }
shadow_vqs = g_ptr_array_new_full(hdev->nvqs, vhost_svq_free);
for (unsigned n = 0; n < hdev->nvqs; ++n) {
@@ -435,7 +415,6 @@ static int vhost_vdpa_init_svq(struct vhost_dev *hdev,
struct vhost_vdpa *v,
}
v->shadow_vqs = g_steal_pointer(&shadow_vqs);
- return 0;
}
static int vhost_vdpa_init(struct vhost_dev *dev, void *opaque, Error **errp)
@@ -460,11 +439,7 @@ static int vhost_vdpa_init(struct vhost_dev *dev, void
*opaque, Error **errp)
dev->opaque = opaque ;
v->listener = vhost_vdpa_memory_listener;
v->msg_type = VHOST_IOTLB_MSG_V2;
- ret = vhost_vdpa_init_svq(dev, v, errp);
- if (ret) {
- goto err;
- }
-
+ vhost_vdpa_init_svq(dev, v);
vhost_vdpa_get_iova_range(v);
if (!vhost_vdpa_first_dev(dev)) {
@@ -475,10 +450,6 @@ static int vhost_vdpa_init(struct vhost_dev *dev, void
*opaque, Error **errp)
VIRTIO_CONFIG_S_DRIVER);
return 0;
-
-err:
- ram_block_discard_disable(false);
- return ret;
}
static void vhost_vdpa_host_notifier_uninit(struct vhost_dev *dev,
diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
index 9ee3bc4cd3..b47acf5a2d 100644
--- a/net/vhost-vdpa.c
+++ b/net/vhost-vdpa.c
@@ -118,9 +118,10 @@ static bool vhost_vdpa_net_valid_svq_features(uint64_t
features, Error **errp)
if (invalid_dev_features) {
error_setg(errp, "vdpa svq does not work with features 0x%" PRIx64,
invalid_dev_features);
+ return false;
}
- return !invalid_dev_features;
+ return vhost_svq_valid_features(features, errp);
}
static int vhost_vdpa_net_check_device_id(struct vhost_net *net)
--
2.31.1
- [PATCH for 8.0 v8 00/12] ASID support in vhost-vdpa net, Eugenio Pérez, 2022/11/24
- [PATCH for 8.0 v8 01/12] vdpa: use v->shadow_vqs_enabled in vhost_vdpa_svqs_start & stop, Eugenio Pérez, 2022/11/24
- [PATCH for 8.0 v8 02/12] vhost: set SVQ device call handler at SVQ start, Eugenio Pérez, 2022/11/24
- [PATCH for 8.0 v8 03/12] vhost: allocate SVQ device file descriptors at device start, Eugenio Pérez, 2022/11/24
- [PATCH for 8.0 v8 04/12] vhost: move iova_tree set to vhost_svq_start, Eugenio Pérez, 2022/11/24
- [PATCH for 8.0 v8 05/12] vdpa: add vhost_vdpa_net_valid_svq_features, Eugenio Pérez, 2022/11/24
- [PATCH for 8.0 v8 06/12] vdpa: extract vhost_vdpa_svq_allocate_iova_tree, Eugenio Pérez, 2022/11/24
- [PATCH for 8.0 v8 08/12] vdpa: allocate SVQ array unconditionally, Eugenio Pérez, 2022/11/24
- [PATCH for 8.0 v8 07/12] vdpa: move SVQ vring features check to net/,
Eugenio Pérez <=
- [PATCH for 8.0 v8 10/12] vdpa: store x-svq parameter in VhostVDPAState, Eugenio Pérez, 2022/11/24
- [PATCH for 8.0 v8 09/12] vdpa: add asid parameter to vhost_vdpa_dma_map/unmap, Eugenio Pérez, 2022/11/24
- [PATCH for 8.0 v8 11/12] vdpa: add shadow_data to vhost_vdpa, Eugenio Pérez, 2022/11/24
- [PATCH for 8.0 v8 12/12] vdpa: always start CVQ in SVQ mode if possible, Eugenio Pérez, 2022/11/24