qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH Kernel v18 6/7] vfio iommu: Add migration capability to repor


From: Kirti Wankhede
Subject: Re: [PATCH Kernel v18 6/7] vfio iommu: Add migration capability to report supported features
Date: Thu, 7 May 2020 11:07:26 +0530
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.6.0



On 5/7/2020 3:57 AM, Alex Williamson wrote:
On Mon, 4 May 2020 21:28:58 +0530
Kirti Wankhede <address@hidden> wrote:

Added migration capability in IOMMU info chain.
User application should check IOMMU info chain for migration capability
to use dirty page tracking feature provided by kernel module.

Signed-off-by: Kirti Wankhede <address@hidden>
---
  drivers/vfio/vfio_iommu_type1.c | 15 +++++++++++++++
  include/uapi/linux/vfio.h       | 14 ++++++++++++++
  2 files changed, 29 insertions(+)

diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index 8b27faf1ec38..b38d278d7bff 100644
--- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c
@@ -2378,6 +2378,17 @@ static int vfio_iommu_iova_build_caps(struct vfio_iommu 
*iommu,
        return ret;
  }
+static int vfio_iommu_migration_build_caps(struct vfio_info_cap *caps)
+{
+       struct vfio_iommu_type1_info_cap_migration cap_mig;
+
+       cap_mig.header.id = VFIO_IOMMU_TYPE1_INFO_CAP_MIGRATION;
+       cap_mig.header.version = 1;
+       cap_mig.flags = VFIO_IOMMU_INFO_CAPS_MIGRATION_DIRTY_PAGE_TRACK;
+
+       return vfio_info_add_capability(caps, &cap_mig.header, sizeof(cap_mig));
+}
+
  static long vfio_iommu_type1_ioctl(void *iommu_data,
                                   unsigned int cmd, unsigned long arg)
  {
@@ -2427,6 +2438,10 @@ static long vfio_iommu_type1_ioctl(void *iommu_data,
                if (ret)
                        return ret;
+ ret = vfio_iommu_migration_build_caps(&caps);
+               if (ret)
+                       return ret;
+
                if (caps.size) {
                        info.flags |= VFIO_IOMMU_INFO_CAPS;
diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
index e3cbf8b78623..df9ce8aaafab 100644
--- a/include/uapi/linux/vfio.h
+++ b/include/uapi/linux/vfio.h
@@ -1013,6 +1013,20 @@ struct vfio_iommu_type1_info_cap_iova_range {
        struct  vfio_iova_range iova_ranges[];
  };
+/*
+ * The migration capability allows to report supported features for migration.
+ *
+ * The structures below define version 1 of this capability.
+ */
+#define VFIO_IOMMU_TYPE1_INFO_CAP_MIGRATION  1
+
+struct vfio_iommu_type1_info_cap_migration {
+       struct  vfio_info_cap_header header;
+       __u32   flags;
+       /* supports dirty page tracking */
+#define VFIO_IOMMU_INFO_CAPS_MIGRATION_DIRTY_PAGE_TRACK        (1 << 0)
+};
+

What about exposing the maximum supported dirty bitmap size and the
supported page sizes?  Thanks,


How should user application use that?

Thanks,
Kirti

Alex

  #define VFIO_IOMMU_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
/**




reply via email to

[Prev in Thread] Current Thread [Next in Thread]