[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH for 8.0 v7 05/10] vdpa: move SVQ vring features check to net/
From: |
Jason Wang |
Subject: |
Re: [PATCH for 8.0 v7 05/10] vdpa: move SVQ vring features check to net/ |
Date: |
Thu, 17 Nov 2022 13:44:29 +0800 |
On Wed, Nov 16, 2022 at 11:06 PM Eugenio Pérez <eperezma@redhat.com> 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@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
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
>