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 1/5] vfio: introduce a new VFIO region for migration support
Date: Mon, 26 Jun 2017 08:52:44 -0000 [thread overview]
Message-ID: <1491301617-24179-1-git-send-email-yulei.zhang@intel.com> (raw)
New VFIO region VFIO_PCI_DEVICE_STATE_REGION_INDEX is added to fetch
and restore the pci device status during the live migration.
Signed-off-by: Yulei Zhang <yulei.zhang@intel.com>
---
hw/vfio/pci.c | 17 +++++++++++++++++
hw/vfio/pci.h | 1 +
| 5 ++++-
3 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index 03a3d01..bf2e0ff 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -2360,6 +2360,23 @@ static void vfio_populate_device(VFIOPCIDevice *vdev, Error **errp)
QLIST_INIT(&vdev->bars[i].quirks);
}
+ /* device state region setup */
+ if (vbasedev->flags & VFIO_DEVICE_FLAGS_MIGRATABLE) {
+ char *name = g_strdup_printf("%s BAR %d", vbasedev->name, VFIO_PCI_DEVICE_STATE_REGION_INDEX);
+
+ ret = vfio_region_setup(OBJECT(vdev), vbasedev,
+ &vdev->device_state.region, VFIO_PCI_DEVICE_STATE_REGION_INDEX, name);
+ g_free(name);
+
+ if (ret) {
+ error_setg_errno(errp, -ret, "failed to get region %d info",
+ VFIO_PCI_DEVICE_STATE_REGION_INDEX);
+ return;
+ }
+
+ QLIST_INIT(&vdev->device_state.quirks);
+ }
+
ret = vfio_get_region_info(vbasedev,
VFIO_PCI_CONFIG_REGION_INDEX, ®_info);
if (ret) {
diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h
index a8366bb..bd98618 100644
--- a/hw/vfio/pci.h
+++ b/hw/vfio/pci.h
@@ -115,6 +115,7 @@ typedef struct VFIOPCIDevice {
int interrupt; /* Current interrupt type */
VFIOBAR bars[PCI_NUM_REGIONS - 1]; /* No ROM */
VFIOVGA *vga; /* 0xa0000, 0x3b0, 0x3c0 */
+ VFIOBAR device_state;
void *igd_opregion;
PCIHostDeviceAddress host;
EventNotifier err_notifier;
--git a/linux-headers/linux/vfio.h b/linux-headers/linux/vfio.h
index 531cb2e..c87d05c 100644
--- a/linux-headers/linux/vfio.h
+++ b/linux-headers/linux/vfio.h
@@ -198,6 +198,8 @@ struct vfio_device_info {
#define VFIO_DEVICE_FLAGS_PCI (1 << 1) /* vfio-pci device */
#define VFIO_DEVICE_FLAGS_PLATFORM (1 << 2) /* vfio-platform device */
#define VFIO_DEVICE_FLAGS_AMBA (1 << 3) /* vfio-amba device */
+#define VFIO_DEVICE_FLAGS_CCW (1 << 4) /* vfio-ccw device */
+#define VFIO_DEVICE_FLAGS_MIGRATABLE (1 << 5) /* Device supports migrate */
__u32 num_regions; /* Max region index + 1 */
__u32 num_irqs; /* Max IRQ index + 1 */
};
@@ -433,7 +435,8 @@ enum {
* between described ranges are unimplemented.
*/
VFIO_PCI_VGA_REGION_INDEX,
- VFIO_PCI_NUM_REGIONS = 9 /* Fixed user ABI, region indexes >=9 use */
+ VFIO_PCI_DEVICE_STATE_REGION_INDEX,
+ VFIO_PCI_NUM_REGIONS = 10 /* Fixed user ABI, region indexes >=9 use */
/* device specific cap to define content. */
};
--
2.7.4
next reply other threads:[~2017-06-26 8:52 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-26 8:52 Yulei Zhang [this message]
2017-06-26 20:19 ` [Qemu-devel] [RFC 1/5] vfio: introduce a new VFIO region for migration support Alex Williamson
2017-06-27 8:12 ` 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=1491301617-24179-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).