From: Avihai Horon <avihaih@nvidia.com>
To: <qemu-devel@nongnu.org>
Cc: "Alex Williamson" <alex.williamson@redhat.com>,
"Cédric Le Goater" <clg@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Joao Martins" <joao.m.martins@oracle.com>,
"Yishai Hadas" <yishaih@nvidia.com>,
"Jason Gunthorpe" <jgg@nvidia.com>,
"Maor Gottlieb" <maorg@nvidia.com>,
"Kirti Wankhede" <kwankhede@nvidia.com>,
"Tarun Gupta" <targupta@nvidia.com>,
"Avihai Horon" <avihaih@nvidia.com>
Subject: [PATCH for-8.2 0/6] vfio/migration: Add P2P support for VFIO migration
Date: Sun, 16 Jul 2023 11:15:35 +0300 [thread overview]
Message-ID: <20230716081541.27900-1-avihaih@nvidia.com> (raw)
Hi all,
The first patch in this series adds a small optimization to VFIO
migration by moving the STOP_COPY->STOP transition to
vfio_save_cleanup(). Testing with a ConnectX-7 VFIO device showed that
this can reduce downtime by up to 6%.
The rest of the series adds P2P support for VFIO migration.
VFIO migration uAPI defines an optional intermediate P2P quiescent
state. While in the P2P quiescent state, P2P DMA transactions cannot be
initiated by the device, but the device can respond to incoming ones.
Additionally, all outstanding P2P transactions are guaranteed to have
been completed by the time the device enters this state.
The purpose of this state is to support migration of multiple devices
that are doing P2P transactions between themselves.
To implement P2P migration support, all the devices must be transitioned
to the P2P quiescent state before being stopped or started.
This behavior is achieved by adding an optional pre VM state change
callback to VMChangeStateEntry. These callbacks are invoked before the
main VM state change callbacks, transitioning all the VFIO devices to
the P2P state, and only then are the main callbacks invoked, which stop
or start the devices.
This will allow migration of multiple VFIO devices if all of them
support P2P migration.
Thanks.
Avihai Horon (5):
vfio/migration: Move from STOP_COPY to STOP in vfio_save_cleanup()
sysemu: Add pre VM state change callback
qdev: Add qdev_add_vm_change_state_handler_full()
vfio/migration: Add P2P support for VFIO migration
vfio/migration: Allow migration of multiple P2P supporting devices
Joao Martins (1):
vfio/migration: Refactor PRE_COPY and RUNNING state checks
docs/devel/vfio-migration.rst | 93 +++++++++++++++++++------------
include/hw/vfio/vfio-common.h | 2 +
include/sysemu/runstate.h | 7 +++
hw/core/vm-change-state-handler.c | 14 ++++-
hw/vfio/common.c | 50 +++++++++++++----
hw/vfio/migration.c | 83 +++++++++++++++++++--------
softmmu/runstate.c | 39 +++++++++++++
hw/vfio/trace-events | 2 +-
8 files changed, 217 insertions(+), 73 deletions(-)
--
2.26.3
next reply other threads:[~2023-07-16 8:21 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-16 8:15 Avihai Horon [this message]
2023-07-16 8:15 ` [PATCH for-8.2 1/6] vfio/migration: Move from STOP_COPY to STOP in vfio_save_cleanup() Avihai Horon
2023-07-30 16:25 ` Cédric Le Goater
2023-07-31 6:32 ` Avihai Horon
2023-07-31 7:05 ` Cédric Le Goater
2023-07-16 8:15 ` [PATCH for-8.2 2/6] sysemu: Add pre VM state change callback Avihai Horon
2023-07-27 16:23 ` Cédric Le Goater
2023-07-30 6:31 ` Avihai Horon
2023-07-30 16:22 ` Cédric Le Goater
2023-07-16 8:15 ` [PATCH for-8.2 3/6] qdev: Add qdev_add_vm_change_state_handler_full() Avihai Horon
2023-07-16 8:15 ` [PATCH for-8.2 4/6] vfio/migration: Refactor PRE_COPY and RUNNING state checks Avihai Horon
2023-07-21 11:33 ` Cédric Le Goater
2023-07-16 8:15 ` [PATCH for-8.2 5/6] vfio/migration: Add P2P support for VFIO migration Avihai Horon
2023-07-21 11:48 ` Cédric Le Goater
2023-07-23 10:37 ` Avihai Horon
2023-07-16 8:15 ` [PATCH for-8.2 6/6] vfio/migration: Allow migration of multiple P2P supporting devices Avihai Horon
2023-07-21 12:09 ` Cédric Le Goater
2023-07-23 10:42 ` Avihai Horon
2023-07-18 15:46 ` [PATCH for-8.2 0/6] vfio/migration: Add P2P support for VFIO migration Jason Gunthorpe
2023-07-30 6:50 ` Avihai Horon
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=20230716081541.27900-1-avihaih@nvidia.com \
--to=avihaih@nvidia.com \
--cc=alex.williamson@redhat.com \
--cc=clg@redhat.com \
--cc=jgg@nvidia.com \
--cc=joao.m.martins@oracle.com \
--cc=kwankhede@nvidia.com \
--cc=maorg@nvidia.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=targupta@nvidia.com \
--cc=yishaih@nvidia.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).