From: "Eugenio Pérez" <eperezma@redhat.com>
To: qemu-devel@nongnu.org
Cc: Stefano Garzarella <sgarzare@redhat.com>,
"Gonglei (Arei)" <arei.gonglei@huawei.com>,
Cornelia Huck <cohuck@redhat.com>,
Liuxiangdong <liuxiangdong5@huawei.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Jason Wang <jasowang@redhat.com>,
Gautam Dawar <gdawar@xilinx.com>,
Laurent Vivier <lvivier@redhat.com>, Eli Cohen <eli@mellanox.com>,
Zhu Lingshan <lingshan.zhu@intel.com>, Cindy Lu <lulu@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Parav Pandit <parav@mellanox.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Harpreet Singh Anand <hanand@xilinx.com>,
Eric Blake <eblake@redhat.com>,
Markus Armbruster <armbru@redhat.com>
Subject: [PATCH v6 00/12] NIC vhost-vdpa state restore via Shadow CVQ
Date: Thu, 4 Aug 2022 20:17:10 +0200 [thread overview]
Message-ID: <20220804181722.701067-1-eperezma@redhat.com> (raw)
CVQ of net vhost-vdpa devices can be intercepted since the work of [1]. 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.
This series needs fix [1] to be applied to achieve full live
migration.
Thanks!
[1] https://lists.nongnu.org/archive/html/qemu-devel/2022-08/msg00325.html
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 prepare 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 | 14 --
net/vhost-vdpa.c | 227 ++++++++++++++++++-----------
6 files changed, 180 insertions(+), 112 deletions(-)
--
2.31.1
next reply other threads:[~2022-08-04 18:21 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-04 18:17 Eugenio Pérez [this message]
2022-08-04 18:17 ` [PATCH v6 01/12] vhost: stop transfer elem ownership in vhost_handle_guest_kick Eugenio Pérez
2022-08-04 18:17 ` [PATCH v6 02/12] vhost: use SVQ element ndescs instead of opaque data for desc validation Eugenio Pérez
2022-08-04 18:17 ` [PATCH v6 03/12] vhost: Delete useless read memory barrier Eugenio Pérez
2022-08-04 18:17 ` [PATCH v6 04/12] vhost: Do not depend on !NULL VirtQueueElement on vhost_svq_flush Eugenio Pérez
2022-08-04 18:17 ` [PATCH v6 05/12] vhost_net: Add NetClientInfo prepare callback Eugenio Pérez
2022-08-04 18:17 ` [PATCH v6 06/12] vhost_net: Add NetClientInfo stop callback Eugenio Pérez
2022-08-04 18:17 ` [PATCH v6 07/12] vdpa: add net_vhost_vdpa_cvq_info NetClientInfo Eugenio Pérez
2022-08-04 18:17 ` [PATCH v6 08/12] vdpa: Move command buffers map to start of net device Eugenio Pérez
2022-08-04 18:17 ` [PATCH v6 09/12] vdpa: Extract vhost_vdpa_net_cvq_add from vhost_vdpa_net_handle_ctrl_avail Eugenio Pérez
2022-08-04 18:17 ` [PATCH v6 10/12] vhost_net: add NetClientState->load() callback Eugenio Pérez
2022-08-04 18:17 ` [PATCH v6 11/12] vdpa: Add virtio-net mac address via CVQ at start Eugenio Pérez
2022-08-04 18:17 ` [PATCH v6 12/12] vdpa: Delete CVQ migration blocker Eugenio Pérez
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220804181722.701067-1-eperezma@redhat.com \
--to=eperezma@redhat.com \
--cc=arei.gonglei@huawei.com \
--cc=armbru@redhat.com \
--cc=cohuck@redhat.com \
--cc=eblake@redhat.com \
--cc=eli@mellanox.com \
--cc=gdawar@xilinx.com \
--cc=hanand@xilinx.com \
--cc=jasowang@redhat.com \
--cc=lingshan.zhu@intel.com \
--cc=liuxiangdong5@huawei.com \
--cc=lulu@redhat.com \
--cc=lvivier@redhat.com \
--cc=mst@redhat.com \
--cc=parav@mellanox.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=sgarzare@redhat.com \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.