[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH for 9.0 07/12] vdpa: set backend capabilities at vhost_vdpa_i
From: |
Jason Wang |
Subject: |
Re: [PATCH for 9.0 07/12] vdpa: set backend capabilities at vhost_vdpa_init |
Date: |
Wed, 20 Dec 2023 12:34:13 +0800 |
On Sat, Dec 16, 2023 at 1:28 AM Eugenio Pérez <eperezma@redhat.com> wrote:
>
> The backend does not reset them until the vdpa file descriptor is closed
> so there is no harm in doing it only once.
>
> This allows the destination of a live migration to premap memory in
> batches, using VHOST_BACKEND_F_IOTLB_BATCH.
>
> Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
> ---
> hw/virtio/vhost-vdpa.c | 50 ++++++++++++++++--------------------------
> 1 file changed, 19 insertions(+), 31 deletions(-)
>
> diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
> index 449c3794b2..43f7c382b1 100644
> --- a/hw/virtio/vhost-vdpa.c
> +++ b/hw/virtio/vhost-vdpa.c
> @@ -587,11 +587,25 @@ static int vhost_vdpa_init(struct vhost_dev *dev, void
> *opaque, Error **errp)
> struct vhost_vdpa *v = opaque;
> assert(dev->vhost_ops->backend_type == VHOST_BACKEND_TYPE_VDPA);
> trace_vhost_vdpa_init(dev, v->shared, opaque);
> + uint64_t backend_features;
> + uint64_t qemu_backend_features = 0x1ULL << VHOST_BACKEND_F_IOTLB_MSG_V2 |
> + 0x1ULL << VHOST_BACKEND_F_IOTLB_BATCH |
> + 0x1ULL << VHOST_BACKEND_F_IOTLB_ASID |
> + 0x1ULL << VHOST_BACKEND_F_SUSPEND;
> int ret;
>
> v->dev = dev;
> dev->opaque = opaque ;
> v->shared->listener = vhost_vdpa_memory_listener;
> +
> + if (vhost_vdpa_call(dev, VHOST_GET_BACKEND_FEATURES, &backend_features))
> {
> + return -EFAULT;
> + }
> +
> + backend_features &= qemu_backend_features;
> +
> + dev->backend_cap = backend_features;
> + v->shared->backend_cap = backend_features;
> vhost_vdpa_init_svq(dev, v);
>
> error_propagate(&dev->migration_blocker, v->migration_blocker);
> @@ -599,6 +613,11 @@ static int vhost_vdpa_init(struct vhost_dev *dev, void
> *opaque, Error **errp)
> return 0;
> }
>
> + ret = vhost_vdpa_call(dev, VHOST_SET_BACKEND_FEATURES,
> &backend_features);
> + if (ret) {
> + return -EFAULT;
> + }
> +
> /*
> * If dev->shadow_vqs_enabled at initialization that means the device has
> * been started with x-svq=on, so don't block migration
> @@ -829,36 +848,6 @@ static int vhost_vdpa_set_features(struct vhost_dev *dev,
> return vhost_vdpa_add_status(dev, VIRTIO_CONFIG_S_FEATURES_OK);
> }
>
> -static int vhost_vdpa_set_backend_cap(struct vhost_dev *dev)
How about keeping this function but just calling it in vhost_vdpa_init()?
Thanks
- [PATCH for 9.0 01/12] vdpa: do not set virtio status bits if unneeded, (continued)
- [PATCH for 9.0 01/12] vdpa: do not set virtio status bits if unneeded, Eugenio Pérez, 2023/12/15
- [PATCH for 9.0 02/12] vdpa: make batch_begin_once early return, Eugenio Pérez, 2023/12/15
- [PATCH for 9.0 04/12] vdpa: extract out _dma_end_batch from _listener_commit, Eugenio Pérez, 2023/12/15
- [PATCH for 9.0 06/12] vdpa: check for iova tree initialized at net_client_start, Eugenio Pérez, 2023/12/15
- [PATCH for 9.0 05/12] vdpa: factor out stop path of vhost_vdpa_dev_start, Eugenio Pérez, 2023/12/15
- [PATCH for 9.0 07/12] vdpa: set backend capabilities at vhost_vdpa_init, Eugenio Pérez, 2023/12/15
- Re: [PATCH for 9.0 07/12] vdpa: set backend capabilities at vhost_vdpa_init,
Jason Wang <=
- [PATCH for 9.0 08/12] vdpa: add vhost_vdpa_load_setup, Eugenio Pérez, 2023/12/15
[PATCH for 9.0 09/12] vdpa: approve switchover after memory map in the migration destination, Eugenio Pérez, 2023/12/15
[PATCH for 9.0 03/12] vdpa: merge _begin_batch into _batch_begin_once, Eugenio Pérez, 2023/12/15