All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC 00/10] vDPA shadow virtqueue - notifications forwarding
@ 2021-01-29 20:54 Eugenio Pérez
  2021-01-29 20:54 ` [RFC 01/10] virtio: Add virtqueue_set_handler Eugenio Pérez
                   ` (9 more replies)
  0 siblings, 10 replies; 42+ messages in thread
From: Eugenio Pérez @ 2021-01-29 20:54 UTC (permalink / raw)
  To: qemu-devel
  Cc: Parav Pandit, Michael S. Tsirkin, Jason Wang, Juan Quintela,
	Markus Armbruster, virtualization, Harpreet Singh Anand,
	Xiao W Wang, Stefan Hajnoczi, Eli Cohen, Stefano Garzarella,
	Michael Lilja, Jim Harford, Rob Miller

This series enable vhost (And vhost-vdpa) notifications forwarding for
software assisted live migration, implemented through a shadow
virtqueue.

Shadow virtqueue is a new method of tracking memory for migration:
Instead of relay on vDPA device's dirty logging capability, SW assisted
LM intercepts dataplane, forwarding the descriptors between VM and
device.

In this migration mode, qemu offers a new (shadow) vring to the device
to read and write into, and forwards descriptors between host vring
and qemu one. On used buffer relay, qemu will mark the dirty memory as
with plain virtio-net devices. This way, devices does not need to have
dirty page logging capability.

This RFC series just enables just the notifications forwarding part,
not buffer forwarding/tracking.

It is based on the ideas of DPDK SW assisted LM, in the series of
DPDK's https://patchwork.dpdk.org/cover/48370/ , but will use memory in
qemu Virtual Address Space for rings, instead of in guest's.

Main changes from previous RFC [1] are:
* Use QMP to enable. Can disable through QMP too.
* Do not use vhost_dev_{enable,disable}_notifiers, since they override
  the VM ioeventfd set, and could cause race conditions. Do never modify
  irqfd or ioeventfd used for the guest.

Comments are welcome.

Thanks!

[1] https://patchew.org/QEMU/20201120185105.279030-1-eperezma@redhat.com/

Eugenio Pérez (10):
  virtio: Add virtqueue_set_handler
  virtio: Add set_vq_handler
  virtio: Add virtio_queue_get_idx
  virtio: Add virtio_queue_host_notifier_status
  vhost: Add vhost_dev_from_virtio
  vhost: Save masked_notifier state
  vhost: Add VhostShadowVirtqueue
  vhost: Add x-vhost-enable-shadow-vq qmp
  vhost: Route guest->host notification through shadow virtqueue
  vhost: Route host->guest notification through shadow virtqueue

 qapi/net.json                      |  23 +++
 hw/virtio/vhost-shadow-virtqueue.h |  31 ++++
 include/hw/virtio/vhost.h          |   6 +
 include/hw/virtio/virtio.h         |  14 +-
 hw/net/virtio-net.c                |  26 ++++
 hw/virtio/vhost-shadow-virtqueue.c | 234 +++++++++++++++++++++++++++++
 hw/virtio/vhost.c                  | 161 ++++++++++++++++++++
 hw/virtio/virtio.c                 |  24 +++
 hw/virtio/meson.build              |   2 +-
 9 files changed, 517 insertions(+), 4 deletions(-)
 create mode 100644 hw/virtio/vhost-shadow-virtqueue.h
 create mode 100644 hw/virtio/vhost-shadow-virtqueue.c

-- 
2.27.0



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

end of thread, other threads:[~2021-02-10  5:58 UTC | newest]

Thread overview: 42+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-29 20:54 [RFC 00/10] vDPA shadow virtqueue - notifications forwarding Eugenio Pérez
2021-01-29 20:54 ` [RFC 01/10] virtio: Add virtqueue_set_handler Eugenio Pérez
2021-01-29 20:54 ` [RFC 02/10] virtio: Add set_vq_handler Eugenio Pérez
2021-01-29 20:54 ` [RFC 03/10] virtio: Add virtio_queue_get_idx Eugenio Pérez
2021-02-01  6:10   ` Jason Wang
2021-02-01  6:10     ` Jason Wang
2021-02-01  7:20     ` Eugenio Perez Martin
2021-01-29 20:54 ` [RFC 04/10] virtio: Add virtio_queue_host_notifier_status Eugenio Pérez
2021-01-29 20:54 ` [RFC 05/10] vhost: Add vhost_dev_from_virtio Eugenio Pérez
2021-02-01  6:12   ` Jason Wang
2021-02-01  6:12     ` Jason Wang
2021-02-01  8:28     ` Eugenio Perez Martin
2021-02-02  3:31       ` Jason Wang
2021-02-02  3:31         ` Jason Wang
2021-02-02 10:17         ` Eugenio Perez Martin
2021-02-04  3:14           ` Jason Wang
2021-02-04  3:14             ` Jason Wang
2021-02-04  9:25             ` Eugenio Perez Martin
2021-02-05  3:51               ` Jason Wang
2021-02-05  3:51                 ` Jason Wang
2021-02-09 15:35                 ` Eugenio Perez Martin
2021-02-10  5:54                   ` Jason Wang
2021-02-10  5:54                     ` Jason Wang
2021-01-29 20:54 ` [RFC 06/10] vhost: Save masked_notifier state Eugenio Pérez
2021-01-29 20:54 ` [RFC 07/10] vhost: Add VhostShadowVirtqueue Eugenio Pérez
2021-01-29 20:54 ` [RFC 08/10] vhost: Add x-vhost-enable-shadow-vq qmp Eugenio Pérez
2021-02-02 15:38   ` Eric Blake
2021-02-02 15:38     ` Eric Blake
2021-02-04  9:01     ` Eugenio Perez Martin
2021-02-04 12:16       ` Markus Armbruster
2021-02-04 12:16         ` Markus Armbruster
2021-02-04 14:03         ` Eugenio Perez Martin
2021-01-29 20:54 ` [RFC 09/10] vhost: Route guest->host notification through shadow virtqueue Eugenio Pérez
2021-02-01  6:29   ` Jason Wang
2021-02-01  6:29     ` Jason Wang
2021-02-02 10:08     ` Eugenio Perez Martin
2021-02-04  3:26       ` Jason Wang
2021-02-04  3:26         ` Jason Wang
2021-02-09 15:02         ` Eugenio Perez Martin
2021-02-10  5:57           ` Jason Wang
2021-02-10  5:57             ` Jason Wang
2021-01-29 20:54 ` [RFC 10/10] vhost: Route host->guest " Eugenio Pérez

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.