[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 00/22] vdpa net devices Rx filter change notification with Shadow
From: |
Eugenio Pérez |
Subject: |
[PATCH 00/22] vdpa net devices Rx filter change notification with Shadow VQ |
Date: |
Fri, 8 Jul 2022 12:49:51 +0200 |
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]
20220706184008.1649478-1-eperezma@redhat.com/">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
- [PATCH 00/22] vdpa net devices Rx filter change notification with Shadow VQ,
Eugenio Pérez <=
- [PATCH 01/22] vhost: Return earlier if used buffers overrun, Eugenio Pérez, 2022/07/08
- [PATCH 02/22] vhost: move descriptor translation to vhost_svq_vring_write_descs, Eugenio Pérez, 2022/07/08
- [PATCH 03/22] vdpa: Clean vhost_vdpa_dev_start(dev, false), Eugenio Pérez, 2022/07/08
- [PATCH 04/22] virtio-net: Expose ctrl virtqueue logic, Eugenio Pérez, 2022/07/08
- [PATCH 06/22] vhost: Reorder vhost_svq_last_desc_of_chain, Eugenio Pérez, 2022/07/08
- [PATCH 05/22] vhost: Decouple vhost_svq_add_split from VirtQueueElement, Eugenio Pérez, 2022/07/08
- [PATCH 07/22] vhost: Add SVQElement, Eugenio Pérez, 2022/07/08
- [PATCH 08/22] vhost: Move last chain id to SVQ element, Eugenio Pérez, 2022/07/08
- [PATCH 11/22] vhost: add vhost_svq_push_elem, Eugenio Pérez, 2022/07/08
- [PATCH 10/22] vdpa: Small rename of error labels, Eugenio Pérez, 2022/07/08