On Wed, Nov 16, 2022 at 11:06 PM Eugenio Pérez <eperezma@xxxxxxxxxx> wrote: > > 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@xxxxxxxxxx> Acked-by: Jason Wang <jasowang@xxxxxxxxxx> Thanks > --- > 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 3df2775760..146f0dcb40 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) { > @@ -436,7 +416,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) > @@ -461,11 +440,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)) { > @@ -476,10 +451,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 e98d5f5eac..dd9cea42d0 100644 > --- a/net/vhost-vdpa.c > +++ b/net/vhost-vdpa.c > @@ -117,9 +117,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 >