qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/22] vdpa net devices Rx filter change notification with Shadow VQ
@ 2022-07-08 10:49 Eugenio Pérez
  2022-07-08 10:49 ` [PATCH 01/22] vhost: Return earlier if used buffers overrun Eugenio Pérez
                   ` (21 more replies)
  0 siblings, 22 replies; 25+ messages in thread
From: Eugenio Pérez @ 2022-07-08 10:49 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eric Blake, Stefan Hajnoczi, Liuxiangdong, Cindy Lu, Zhu Lingshan,
	Gonglei (Arei), Laurent Vivier, Gautam Dawar, Stefano Garzarella,
	Markus Armbruster, Paolo Bonzini, Harpreet Singh Anand,
	Jason Wang, Michael S. Tsirkin, Eli Cohen, Parav Pandit,
	Cornelia Huck

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




^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2022-07-11  7:19 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-08 10:49 [PATCH 00/22] vdpa net devices Rx filter change notification with Shadow VQ Eugenio Pérez
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

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).