qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v10 00/12] NIC vhost-vdpa state restore via Shadow CVQ


From: Jason Wang
Subject: Re: [PATCH v10 00/12] NIC vhost-vdpa state restore via Shadow CVQ
Date: Wed, 24 Aug 2022 10:32:56 +0800
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.12.0


在 2022/8/24 02:30, Eugenio Pérez 写道:
CVQ of net vhost-vdpa devices can be intercepted since the addition of x-svq.
The virtio-net device model is updated. The migration was blocked because
although the state can be megrated between VMM it was not possible to restore
on the destination NIC.

This series add support for SVQ to inject external messages without the guest's
knowledge, so before the guest is resumed all the guest visible state is
restored. It is done using standard CVQ messages, so the vhost-vdpa device does
not need to learn how to restore it: As long as they have the feature, they
know how to handle it.

Depending on the device, this series may need fixes with message id [1] to
achieve full live migration.

[1] <20220823182008.97141-1-eperezma@redhat.com>


I've queued the two series in net-next branch:

https://github.com/jasowang/qemu/commits/net-next

Thanks



v10:
- Rebase on latest fixes of [1].

v9:
- Use guest acked features instead of device's.
- Minors: fix typos and patch messages, constify vhost_vdpa and VirtIONet vars,
   delete unneeded increment of cursor.

v8:
- Rename NetClientInfo load to start, so is symmetrical with stop()
- Delete copy of device's in buffer at vhost_vdpa_net_load

v7:
- Remove accidental double free.

v6:
- Move map and unmap of the buffers to the start and stop of the device. This
   implies more callbacks on NetClientInfo, but simplifies the SVQ CVQ code.
- Not assume that in buffer is sizeof(virtio_net_ctrl_ack) in
   vhost_vdpa_net_cvq_add
- Reduce the number of changes from previous versions
- Delete unused memory barrier

v5:
- Rename s/start/load/
- Use independent NetClientInfo to only add load callback on cvq.
- Accept out sg instead of dev_buffers[] at vhost_vdpa_net_cvq_map_elem
- Use only out size instead of iovec dev_buffers to know if the descriptor is
   effectively available, allowing to delete artificial !NULL VirtQueueElement
   on vhost_svq_add call.

v4:
- Actually use NetClientInfo callback.

v3:
- Route vhost-vdpa start code through NetClientInfo callback.
- Delete extra vhost_net_stop_one() call.

v2:
- Fix SIGSEGV dereferencing SVQ when not in svq mode

v1 from RFC:
- Do not reorder DRIVER_OK & enable patches.
- Delete leftovers

Eugenio Pérez (12):
   vhost: stop transfer elem ownership in vhost_handle_guest_kick
   vhost: use SVQ element ndescs instead of opaque data for desc
     validation
   vhost: Delete useless read memory barrier
   vhost: Do not depend on !NULL VirtQueueElement on vhost_svq_flush
   vhost_net: Add NetClientInfo start callback
   vhost_net: Add NetClientInfo stop callback
   vdpa: add net_vhost_vdpa_cvq_info NetClientInfo
   vdpa: Move command buffers map to start of net device
   vdpa: extract vhost_vdpa_net_cvq_add from
     vhost_vdpa_net_handle_ctrl_avail
   vhost_net: add NetClientState->load() callback
   vdpa: Add virtio-net mac address via CVQ at start
   vdpa: Delete CVQ migration blocker

  include/hw/virtio/vhost-vdpa.h     |   1 -
  include/net/net.h                  |   6 +
  hw/net/vhost_net.c                 |  17 +++
  hw/virtio/vhost-shadow-virtqueue.c |  27 ++--
  hw/virtio/vhost-vdpa.c             |  15 --
  net/vhost-vdpa.c                   | 224 ++++++++++++++++++-----------
  6 files changed, 177 insertions(+), 113 deletions(-)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]