aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorJohn Levon <john.levon@nutanix.com>2021-05-14 09:36:48 +0000
committerJohn Levon <john.levon@nutanix.com>2021-05-14 09:36:48 +0000
commit4929d0a29187d4c71e9034da692b5335c57cc91d (patch)
treeb8b6dc50ed36a64c4dc5b043d821f1925673e00d /include
parent250aedb026ba557fc4fae6ff301b3b1dfd953c7e (diff)
downloadlibvfio-user-4929d0a29187d4c71e9034da692b5335c57cc91d.zip
libvfio-user-4929d0a29187d4c71e9034da692b5335c57cc91d.tar.gz
libvfio-user-4929d0a29187d4c71e9034da692b5335c57cc91d.tar.bz2
Revert "Merge pull request #493 from swapnili/use-linux-vfio-header"
This reverts commit 250aedb026ba557fc4fae6ff301b3b1dfd953c7e, reversing changes made to 71f8b30557d3635336aec06c084188370ed5e248.
Diffstat (limited to 'include')
-rw-r--r--include/vfio-user.h61
1 files changed, 61 insertions, 0 deletions
diff --git a/include/vfio-user.h b/include/vfio-user.h
index 09a756e..053ead2 100644
--- a/include/vfio-user.h
+++ b/include/vfio-user.h
@@ -133,6 +133,67 @@ struct vfio_user_irq_info {
uint32_t subindex;
} __attribute__((packed));
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,8,0)
+
+/* copied from <linux/vfio.h> */
+
+#define VFIO_DEVICE_STATE_STOP (0)
+#define VFIO_DEVICE_STATE_RUNNING (1 << 0)
+#define VFIO_DEVICE_STATE_SAVING (1 << 1)
+#define VFIO_DEVICE_STATE_RESUMING (1 << 2)
+#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_RUNNING | \
+ VFIO_DEVICE_STATE_SAVING | \
+ VFIO_DEVICE_STATE_RESUMING)
+
+#define VFIO_DEVICE_STATE_VALID(state) \
+ (state & VFIO_DEVICE_STATE_RESUMING ? \
+ (state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_RESUMING : 1)
+
+#define VFIO_DEVICE_STATE_IS_ERROR(state) \
+ ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_SAVING | \
+ VFIO_DEVICE_STATE_RESUMING))
+
+#define VFIO_DEVICE_STATE_SET_ERROR(state) \
+ ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_SATE_SAVING | \
+ VFIO_DEVICE_STATE_RESUMING)
+
+/* RHEL kernels have some of it backported */
+#ifndef VFIO_REGION_TYPE_MIGRATION /* not a RHEL kernel */
+#define VFIO_REGION_TYPE_MIGRATION (3)
+#define VFIO_REGION_SUBTYPE_MIGRATION (1)
+
+struct vfio_device_migration_info {
+ __u32 device_state; /* VFIO device state */
+ __u32 reserved;
+ __u64 pending_bytes;
+ __u64 data_offset;
+ __u64 data_size;
+};
+#endif /* not a RHEL kernel */
+
+struct vfio_bitmap {
+ __u64 pgsize; /* page size for bitmap in bytes */
+ __u64 size; /* in bytes */
+ __u64 *data; /* one bit per page */
+};
+
+struct vfio_iommu_type1_dirty_bitmap {
+ __u32 argsz;
+ __u32 flags;
+#define VFIO_IOMMU_DIRTY_PAGES_FLAG_START (1 << 0)
+#define VFIO_IOMMU_DIRTY_PAGES_FLAG_STOP (1 << 1)
+#define VFIO_IOMMU_DIRTY_PAGES_FLAG_GET_BITMAP (1 << 2)
+ __u8 data[];
+};
+
+struct vfio_iommu_type1_dirty_bitmap_get {
+ __u64 iova; /* IO virtual address */
+ __u64 size; /* Size of iova range */
+ struct vfio_bitmap bitmap;
+};
+
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(5,8,0) */
+
#ifdef __cplusplus
}
#endif