Reviewed-by: Raphael Norwitz <[email protected]>
On Thu, Oct 16, 2025 at 7:47 AM Vladimir Sementsov-Ogievskiy <[email protected]> wrote: > > We are going to split vhost_dev_init() so that the first part will do > early initialization of QEMU structures, but don't communicate with > backend, and the second part will do backend communication. We need > this for future support for backend-transfer migration support for > vhost-user-blk (backend will not be available in the early > initialization point). > > With this commit, we simply reorder the logic in vhost_dev_init() > in accordance with idea of further split. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]> > --- > hw/virtio/vhost.c | 60 +++++++++++++++++++++++------------------------ > 1 file changed, 30 insertions(+), 30 deletions(-) > > diff --git a/hw/virtio/vhost.c b/hw/virtio/vhost.c > index 9fc6e7ba65..551d1687fc 100644 > --- a/hw/virtio/vhost.c > +++ b/hw/virtio/vhost.c > @@ -1637,26 +1637,6 @@ int vhost_dev_init(struct vhost_dev *hdev, void > *opaque, > goto fail; > } > > - r = hdev->vhost_ops->vhost_set_owner(hdev); > - if (r < 0) { > - error_setg_errno(errp, -r, "vhost_set_owner failed"); > - goto fail; > - } > - > - r = vhost_dev_init_features(hdev); > - if (r < 0) { > - error_setg_errno(errp, -r, "vhost_init_features failed"); > - goto fail; > - } > - > - for (i = 0; i < hdev->nvqs; ++i, ++n_initialized_vqs) { > - r = vhost_virtqueue_init(hdev, hdev->vqs + i, hdev->vq_index + i); > - if (r < 0) { > - error_setg_errno(errp, -r, "Failed to initialize virtqueue %d", > i); > - goto fail; > - } > - } > - > hdev->memory_listener = (MemoryListener) { > .name = "vhost", > .begin = vhost_begin, > @@ -1677,6 +1657,36 @@ int vhost_dev_init(struct vhost_dev *hdev, void > *opaque, > .region_del = vhost_iommu_region_del, > }; > > + hdev->mem = g_malloc0(offsetof(struct vhost_memory, regions)); > + hdev->n_mem_sections = 0; > + hdev->mem_sections = NULL; > + hdev->log = NULL; > + hdev->log_size = 0; > + hdev->log_enabled = false; > + hdev->started = false; > + memory_listener_register(&hdev->memory_listener, &address_space_memory); > + QLIST_INSERT_HEAD(&vhost_devices, hdev, entry); > + > + r = hdev->vhost_ops->vhost_set_owner(hdev); > + if (r < 0) { > + error_setg_errno(errp, -r, "vhost_set_owner failed"); > + goto fail; > + } > + > + r = vhost_dev_init_features(hdev); > + if (r < 0) { > + error_setg_errno(errp, -r, "vhost_init_features failed"); > + goto fail; > + } > + > + for (i = 0; i < hdev->nvqs; ++i, ++n_initialized_vqs) { > + r = vhost_virtqueue_init(hdev, hdev->vqs + i, hdev->vq_index + i); > + if (r < 0) { > + error_setg_errno(errp, -r, "Failed to initialize virtqueue %d", > i); > + goto fail; > + } > + } > + > if (hdev->migration_blocker == NULL) { > if (!vhost_dev_has_feature_ex(hdev, VHOST_F_LOG_ALL)) { > error_setg(&hdev->migration_blocker, > @@ -1694,16 +1704,6 @@ int vhost_dev_init(struct vhost_dev *hdev, void > *opaque, > } > } > > - hdev->mem = g_malloc0(offsetof(struct vhost_memory, regions)); > - hdev->n_mem_sections = 0; > - hdev->mem_sections = NULL; > - hdev->log = NULL; > - hdev->log_size = 0; > - hdev->log_enabled = false; > - hdev->started = false; > - memory_listener_register(&hdev->memory_listener, &address_space_memory); > - QLIST_INSERT_HEAD(&vhost_devices, hdev, entry); > - > if (!check_memslots(hdev, errp)) { > r = -EINVAL; > goto fail; > -- > 2.48.1 > >
