Reviewed-by: Raphael Norwitz <[email protected]>

On Wed, Aug 13, 2025 at 12:52 PM Vladimir Sementsov-Ogievskiy
<[email protected]> wrote:
>
> This simplifies further refactoring and final introduction
> of vhost backend live migration.
>
> Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
> ---
>  hw/virtio/vhost.c | 47 +++++++++++++++++++++++------------------------
>  1 file changed, 23 insertions(+), 24 deletions(-)
>
> diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c
> index bc1821eadd..97113174b9 100644
> --- a/hw/virtio/vhost.c
> +++ b/hw/virtio/vhost.c
> @@ -1288,30 +1288,6 @@ int vhost_virtqueue_start(struct vhost_dev *dev,
>          /* Queue might not be ready for start */
>          return 0;
>      }
> -
> -    vq->num = state.num = virtio_queue_get_num(vdev, idx);
> -    r = dev->vhost_ops->vhost_set_vring_num(dev, &state);
> -    if (r) {
> -        VHOST_OPS_DEBUG(r, "vhost_set_vring_num failed");
> -        return r;
> -    }
> -
> -    state.num = virtio_queue_get_last_avail_idx(vdev, idx);
> -    r = dev->vhost_ops->vhost_set_vring_base(dev, &state);
> -    if (r) {
> -        VHOST_OPS_DEBUG(r, "vhost_set_vring_base failed");
> -        return r;
> -    }
> -
> -    if (vhost_needs_vring_endian(vdev)) {
> -        r = vhost_virtqueue_set_vring_endian_legacy(dev,
> -                                                    
> virtio_is_big_endian(vdev),
> -                                                    vhost_vq_index);
> -        if (r) {
> -            return r;
> -        }
> -    }
> -
>      vq->desc_size = l = virtio_queue_get_desc_size(vdev, idx);
>      vq->desc_phys = a;
>      vq->desc = vhost_memory_map(dev, a, l, false);
> @@ -1334,6 +1310,29 @@ int vhost_virtqueue_start(struct vhost_dev *dev,
>          goto fail;
>      }
>
> +    vq->num = state.num = virtio_queue_get_num(vdev, idx);
> +    r = dev->vhost_ops->vhost_set_vring_num(dev, &state);
> +    if (r) {
> +        VHOST_OPS_DEBUG(r, "vhost_set_vring_num failed");
> +        goto fail;
> +    }
> +
> +    state.num = virtio_queue_get_last_avail_idx(vdev, idx);
> +    r = dev->vhost_ops->vhost_set_vring_base(dev, &state);
> +    if (r) {
> +        VHOST_OPS_DEBUG(r, "vhost_set_vring_base failed");
> +        goto fail;
> +    }
> +
> +    if (vhost_needs_vring_endian(vdev)) {
> +        r = vhost_virtqueue_set_vring_endian_legacy(dev,
> +                                                    
> virtio_is_big_endian(vdev),
> +                                                    vhost_vq_index);
> +        if (r) {
> +            goto fail;
> +        }
> +    }
> +
>      r = vhost_virtqueue_set_addr(dev, vq, vhost_vq_index, dev->log_enabled);
>      if (r < 0) {
>          goto fail;
> --
> 2.48.1
>
>

Reply via email to