From: Yulei Zhang <yulei.zhang@intel.com>
To: qemu-devel@nongnu.org
Cc: zhenyuw@linux.intel.com, zhi.a.wang@intel.com,
joonas.lahtinen@linux.intel.com, kevin.tian@intel.com,
xiao.zheng@intel.com, Yulei Zhang <yulei.zhang@intel.com>
Subject: [Qemu-devel] [RFC 0/5] vfio: Introduce Live migration capability to vfio_mdev device
Date: Mon, 26 Jun 2017 08:51:31 -0000 [thread overview]
Message-ID: <1491301529-24125-1-git-send-email-yulei.zhang@intel.com> (raw)
Summary
This series RFC would like to introduce the live migration capability
to vfio_mdev device.
As currently vfio_mdev device don't support migration, we introduce a
device flag VFIO_DEVICE_FLAGS_MIGRATABLE to help determine whether the
mdev device can be migrate or not, it will check the flag during the
device initialization and decide to init the new vfio region
VFIO_PCI_DEVICE_STATE_REGION_INDEX.
The intention to add the new region is using it for vfio_mdev device
status save and restore during the migration. The access to this region
will be trapped and forward to the vfio_mdev device driver. There is
an alternative way to achieve it is to add a new vfio ioctl to help fetch
and save the device status.
Also this series include two new vfio ioctl
#define VFIO_DEVICE_PCI_STATUS_SET _IO(VFIO_TYPE, VFIO_BASE + 14)
#define VFIO_DEVICE_PCI_GET_DIRTY_BITMAP _IO(VFIO_TYPE, VFIO_BASE + 15)
The first one is used to contorl the device running status, we want to
stop the mdev device before quary the status from its device driver and
restart the device after migration.
The second one is used to do the mdev device dirty page synchronization.
So the vfio_mdev device migration sequence would be
Source VM side:
start migration
|
V
get the cpu state change callback
use status set ioctl to stop the mdev device
|
V
save the deivce status into Qemufile which is
read from the new vfio device status region
|
V
quary the dirty page bitmap from deivce
and add into qemu dirty list for sync
Target VM side:
restore the mdev device after get the
saved status context from Qemufile
|
V
get the cpu state change callback
use status set ioctl to start the mdev
device to put it in running status
|
V
finish migration
Yulei Zhang (5):
vfio: introduce a new VFIO region for migration support
vfio: Add struct vfio_vmstate_info to introduce vfio device put/get
funtion
vfio: introduce new VFIO ioctl VFIO_DEVICE_PCI_STATUS_SET
vfio: use vfio_device_put/vfio_device_get for device status
save/restore
vifo: introduce new VFIO ioctl VFIO_DEVICE_PCI_GET_DIRTY_BITMAP
hw/vfio/pci.c | 204 ++++++++++++++++++++++++++++++++++++++++++++-
hw/vfio/pci.h | 3 +
linux-headers/linux/vfio.h | 34 +++++++-
3 files changed, 239 insertions(+), 2 deletions(-)
--
2.7.4
next reply other threads:[~2017-06-26 8:51 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-26 8:51 Yulei Zhang [this message]
2017-06-27 10:28 ` [Qemu-devel] [RFC 0/5] vfio: Introduce Live migration capability to vfio_mdev device Dr. David Alan Gilbert
2017-07-24 8:48 ` Zhang, Yulei
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=1491301529-24125-1-git-send-email-yulei.zhang@intel.com \
--to=yulei.zhang@intel.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=kevin.tian@intel.com \
--cc=qemu-devel@nongnu.org \
--cc=xiao.zheng@intel.com \
--cc=zhenyuw@linux.intel.com \
--cc=zhi.a.wang@intel.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).