From: "Eugenio Pérez" <eperezma@redhat.com>
To: qemu-devel@nongnu.org
Cc: Eric Blake <eblake@redhat.com>,
Stefan Hajnoczi <stefanha@redhat.com>,
Liuxiangdong <liuxiangdong5@huawei.com>,
Cindy Lu <lulu@redhat.com>, Zhu Lingshan <lingshan.zhu@intel.com>,
"Gonglei (Arei)" <arei.gonglei@huawei.com>,
Laurent Vivier <lvivier@redhat.com>,
Gautam Dawar <gdawar@xilinx.com>,
Stefano Garzarella <sgarzare@redhat.com>,
Markus Armbruster <armbru@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Harpreet Singh Anand <hanand@xilinx.com>,
Jason Wang <jasowang@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Eli Cohen <eli@mellanox.com>, Parav Pandit <parav@mellanox.com>,
Cornelia Huck <cohuck@redhat.com>
Subject: [PATCH 00/22] vdpa net devices Rx filter change notification with Shadow VQ
Date: Fri, 8 Jul 2022 12:49:51 +0200 [thread overview]
Message-ID: <20220708105013.1899854-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 advanced configurations.
Rx filtering event is issues by qemu when device's MAC address changed once and
the previous one has not been queried by external agents.
Shadow VirtQueue (SVQ) already makes possible tracking the state of virtqueues,
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.
This series uses SVQ infraestructure to intercept networking control messages
used by the device. This way, qemu is able to update VirtIONet device model and
react to them. In particular, this series enables rx filter change
notification.
This is a pre-requisite to achieve net vdpa device with CVQ live migration.
It's a stripped down version of [1], with error paths checked and no migration
enabled.
First patch solves a memory leak if the device is able to trick qemu to think
it has returned more buffers than svq size. This should not be possible, but
we're a bit safer this way.
Next nine patches reorder and clean code base so its easier to apply later
ones. No functional change should be noticed from these changes.
Patches from 11 to 16 enable SVQ API to make other parts of qemu to interact
with it. In particular, they will be used by vhost-vdpa net to handle CVQ
messages.
Patches 17 to 19 enable the update of the virtio-net device model for each
CVQ message acknoledged by the device.
Last patches enable x-svq parameter, forbidding device migration since it is
not restored in the destination's vdpa device yet. This will be added in later
series, using this work.
Comments are welcome.
[1] https://patchwork.kernel.org/project/qemu-devel/cover/20220706184008.1649478-1-eperezma@redhat.com/
Eugenio Pérez (22):
vhost: Return earlier if used buffers overrun
vhost: move descriptor translation to vhost_svq_vring_write_descs
vdpa: Clean vhost_vdpa_dev_start(dev, false)
virtio-net: Expose ctrl virtqueue logic
vhost: Decouple vhost_svq_add_split from VirtQueueElement
vhost: Reorder vhost_svq_last_desc_of_chain
vhost: Add SVQElement
vhost: Move last chain id to SVQ element
vhost: Add opaque member to SVQElement
vdpa: Small rename of error labels
vhost: add vhost_svq_push_elem
vhost: Add vhost_svq_inject
vhost: add vhost_svq_poll
vhost: Add custom used buffer callback
vhost: Add svq avail_handler callback
vhost: add detach SVQ operation
vdpa: Export vhost_vdpa_dma_map and unmap calls
vdpa: manual forward CVQ buffers
vdpa: Buffer CVQ support on shadow virtqueue
vdpa: Extract get features part from vhost_vdpa_get_max_queue_pairs
vdpa: Add device migration blocker
vdpa: Add x-svq to NetdevVhostVDPAOptions
qapi/net.json | 9 +-
hw/virtio/vhost-shadow-virtqueue.h | 64 +++-
include/hw/virtio/vhost-vdpa.h | 8 +
include/hw/virtio/virtio-net.h | 4 +
hw/net/virtio-net.c | 84 ++---
hw/virtio/vhost-shadow-virtqueue.c | 287 +++++++++++++----
hw/virtio/vhost-vdpa.c | 63 ++--
net/vhost-vdpa.c | 473 ++++++++++++++++++++++++++++-
8 files changed, 855 insertions(+), 137 deletions(-)
--
2.31.1
next reply other threads:[~2022-07-08 10:52 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-08 10:49 Eugenio Pérez [this message]
2022-07-08 10:49 ` [PATCH 01/22] vhost: Return earlier if used buffers overrun Eugenio Pérez
2022-07-08 10:49 ` [PATCH 02/22] vhost: move descriptor translation to vhost_svq_vring_write_descs Eugenio Pérez
2022-07-08 10:49 ` [PATCH 03/22] vdpa: Clean vhost_vdpa_dev_start(dev, false) Eugenio Pérez
2022-07-08 10:49 ` [PATCH 04/22] virtio-net: Expose ctrl virtqueue logic Eugenio Pérez
2022-07-08 10:49 ` [PATCH 05/22] vhost: Decouple vhost_svq_add_split from VirtQueueElement Eugenio Pérez
2022-07-08 10:49 ` [PATCH 06/22] vhost: Reorder vhost_svq_last_desc_of_chain Eugenio Pérez
2022-07-08 10:49 ` [PATCH 07/22] vhost: Add SVQElement Eugenio Pérez
2022-07-08 10:49 ` [PATCH 08/22] vhost: Move last chain id to SVQ element Eugenio Pérez
2022-07-08 10:50 ` [PATCH 09/22] vhost: Add opaque member to SVQElement Eugenio Pérez
2022-07-08 10:50 ` [PATCH 10/22] vdpa: Small rename of error labels Eugenio Pérez
2022-07-08 10:50 ` [PATCH 11/22] vhost: add vhost_svq_push_elem Eugenio Pérez
2022-07-08 10:50 ` [PATCH 12/22] vhost: Add vhost_svq_inject Eugenio Pérez
2022-07-08 10:50 ` [PATCH 13/22] vhost: add vhost_svq_poll Eugenio Pérez
2022-07-08 10:50 ` [PATCH 14/22] vhost: Add custom used buffer callback Eugenio Pérez
2022-07-08 10:50 ` [PATCH 15/22] vhost: Add svq avail_handler callback Eugenio Pérez
2022-07-08 10:50 ` [PATCH 16/22] vhost: add detach SVQ operation Eugenio Pérez
2022-07-08 10:50 ` [PATCH 17/22] vdpa: Export vhost_vdpa_dma_map and unmap calls Eugenio Pérez
2022-07-08 10:50 ` [PATCH 18/22] vdpa: manual forward CVQ buffers Eugenio Pérez
2022-07-08 10:50 ` [PATCH 19/22] vdpa: Buffer CVQ support on shadow virtqueue Eugenio Pérez
2022-07-08 10:50 ` [PATCH 20/22] vdpa: Extract get features part from vhost_vdpa_get_max_queue_pairs Eugenio Pérez
2022-07-08 10:50 ` [PATCH 21/22] vdpa: Add device migration blocker Eugenio Pérez
2022-07-08 10:50 ` [PATCH 22/22] vdpa: Add x-svq to NetdevVhostVDPAOptions Eugenio Pérez
2022-07-08 12:52 ` Markus Armbruster
2022-07-11 7:17 ` Eugenio Perez Martin
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=20220708105013.1899854-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 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).