From: "Eugenio Pérez" <eperezma@redhat.com>
To: qemu-devel@nongnu.org
Cc: Laurent Vivier <lvivier@redhat.com>,
Parav Pandit <parav@mellanox.com>, Cindy Lu <lulu@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Jason Wang <jasowang@redhat.com>,
Gautam Dawar <gdawar@xilinx.com>,
Harpreet Singh Anand <hanand@xilinx.com>,
Eli Cohen <eli@mellanox.com>,
Zhu Lingshan <lingshan.zhu@intel.com>,
Liuxiangdong <liuxiangdong5@huawei.com>
Subject: [RFC PATCH v2 00/18] Net Control VQ support with asid in vDPA SVQ
Date: Thu, 17 Mar 2022 19:23:41 +0100 [thread overview]
Message-ID: <20220317182400.651508-1-eperezma@redhat.com> (raw)
Control virtqueue is used by networking device for accepting various
commands from the driver. It's a must to support multiqueue and other
configurations.
Shadow VirtQueue (SVQ) already makes possible migration of virtqueue
states, effectively intercepting them so qemu can track what regions of memory
are dirty because device action and needs migration. However, this does not
solve networking device state seen by the driver because CVQ messages, like
changes on MAC addresses from the driver.
To solve that, this series uses SVQ infraestructure proposed at SVQ to
intercept networking control messages used by the device. This way, qemu is
able to update VirtIONet device model and to migrate it.
You can run qemu in two modes after applying this series: only intercepting
cvq with x-cvq-svq=on or intercept all the virtqueues adding cmdline x-svq=on:
-netdev type=vhost-vdpa,vhostdev=/dev/vhost-vdpa-0,id=vhost-vdpa0,x-cvq-svq=on,x-svq=on
The most updated kernel part of ASID is proposed at [1].
Other modes without x-cvq-svq have been not tested with this series. Other vq
cmd commands than set mac are not tested. Some details like error control are
not 100% tested neither.
Comments are welcomed on every aspect of the patch.
Changes from rfc v1:
* Rebase to latest master
* Configure ASID instead of assuming cvq asid != data vqs asid
* Update device model so (MAC) state can be migrated too.
[1] https://lkml.kernel.org/kvm/20220224212314.1326-1-gdawar@xilinx.com/
Eugenio Pérez (18):
vdpa: Add x-svq to NetdevVhostVDPAOptions
vhost: move descriptor translation to vhost_svq_vring_write_descs
vdpa: Fix index calculus at vhost_vdpa_svqs_start
virtio-net: use g_memdup2() instead of unsafe g_memdup()
virtio-net: Expose ctrl virtqueue logic
vdpa: Extract get geatures part from vhost_vdpa_get_max_queue_pairs
virtio: Make virtqueue_alloc_element non-static
vhost: Add SVQElement
vhost: Add custom used buffer callback
vdpa: control virtqueue support on shadow virtqueue
vhost: Add vhost_iova_tree_find
vdpa: Add map/unmap operation callback to SVQ
vhost: Add vhost_svq_inject
vdpa: add NetClientState->start() callback
vdpa: Add vhost_vdpa_start_control_svq
vhost: Update kernel headers
vdpa: Add asid attribute to vdpa device
vdpa: Add x-cvq-svq
qapi/net.json | 13 +-
hw/virtio/vhost-iova-tree.h | 2 +
hw/virtio/vhost-shadow-virtqueue.h | 46 ++-
include/hw/virtio/vhost-vdpa.h | 5 +
include/hw/virtio/virtio-net.h | 3 +
include/hw/virtio/virtio.h | 1 +
include/net/net.h | 2 +
include/standard-headers/linux/vhost_types.h | 11 +-
linux-headers/linux/vhost.h | 25 +-
hw/net/vhost_net.c | 4 +
hw/net/virtio-net.c | 82 +++--
hw/virtio/vhost-iova-tree.c | 14 +
hw/virtio/vhost-shadow-virtqueue.c | 236 +++++++++---
hw/virtio/vhost-vdpa.c | 70 +++-
hw/virtio/virtio.c | 2 +-
net/vhost-vdpa.c | 368 +++++++++++++++++--
16 files changed, 760 insertions(+), 124 deletions(-)
--
2.27.0
next reply other threads:[~2022-03-17 18:26 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-17 18:23 Eugenio Pérez [this message]
2022-03-17 18:23 ` [RFC PATCH v2 01/18] vdpa: Add x-svq to NetdevVhostVDPAOptions Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 02/18] vhost: move descriptor translation to vhost_svq_vring_write_descs Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 03/18] vdpa: Fix index calculus at vhost_vdpa_svqs_start Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 04/18] virtio-net: use g_memdup2() instead of unsafe g_memdup() Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 05/18] virtio-net: Expose ctrl virtqueue logic Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 06/18] vdpa: Extract get geatures part from vhost_vdpa_get_max_queue_pairs Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 07/18] virtio: Make virtqueue_alloc_element non-static Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 08/18] vhost: Add SVQElement Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 09/18] vhost: Add custom used buffer callback Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 10/18] vdpa: control virtqueue support on shadow virtqueue Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 11/18] vhost: Add vhost_iova_tree_find Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 12/18] vdpa: Add map/unmap operation callback to SVQ Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 13/18] vhost: Add vhost_svq_inject Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 14/18] vdpa: add NetClientState->start() callback Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 15/18] vdpa: Add vhost_vdpa_start_control_svq Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 16/18] vhost: Update kernel headers Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 17/18] vdpa: Add asid attribute to vdpa device Eugenio Pérez
2022-03-17 18:23 ` [RFC PATCH v2 18/18] vdpa: Add x-cvq-svq 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=20220317182400.651508-1-eperezma@redhat.com \
--to=eperezma@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=qemu-devel@nongnu.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).