[PATCH for-10.1 v2 10/37] vfio: Introduce a new header file for VFIOIOMMUFD declarations

Cédric Le Goater posted 37 patches 10 months, 3 weeks ago
There is a newer version of this series
[PATCH for-10.1 v2 10/37] vfio: Introduce a new header file for VFIOIOMMUFD declarations
Posted by Cédric Le Goater 10 months, 3 weeks ago
Gather all VFIOIOMMUFD related declarations introduced by commits
5ee3dc7af785 ("vfio/iommufd: Implement the iommufd backend") and
5b1e96e65403 ("vfio/iommufd: Introduce auto domain creation") into
"vfio-iommufd.h". This to reduce exposure of VFIO internals in
"hw/vfio/vfio-common.h".

Cc: Joao Martins <joao.m.martins@oracle.com>
Cc: Yi Liu <yi.l.liu@intel.com>
Reviewed-by: John Levon <john.levon@nutanix.com>
Link: https://lore.kernel.org/qemu-devel/20250318095415.670319-10-clg@redhat.com
Signed-off-by: Cédric Le Goater <clg@redhat.com>
---
 hw/vfio/vfio-iommufd.h        | 34 ++++++++++++++++++++++++++++++++++
 include/hw/vfio/vfio-common.h | 21 +++------------------
 hw/vfio/iommufd.c             |  1 +
 3 files changed, 38 insertions(+), 18 deletions(-)
 create mode 100644 hw/vfio/vfio-iommufd.h

diff --git a/hw/vfio/vfio-iommufd.h b/hw/vfio/vfio-iommufd.h
new file mode 100644
index 0000000000000000000000000000000000000000..07ea0f43049645a5f3782048117fd9bf22083053
--- /dev/null
+++ b/hw/vfio/vfio-iommufd.h
@@ -0,0 +1,34 @@
+/*
+ * VFIO iommufd
+ *
+ * Copyright Red Hat, Inc. 2025
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef HW_VFIO_VFIO_IOMMUFD_H
+#define HW_VFIO_VFIO_IOMMUFD_H
+
+#include "hw/vfio/vfio-container-base.h"
+
+typedef struct VFIODevice VFIODevice;
+
+typedef struct VFIOIOASHwpt {
+    uint32_t hwpt_id;
+    uint32_t hwpt_flags;
+    QLIST_HEAD(, VFIODevice) device_list;
+    QLIST_ENTRY(VFIOIOASHwpt) next;
+} VFIOIOASHwpt;
+
+typedef struct IOMMUFDBackend IOMMUFDBackend;
+
+typedef struct VFIOIOMMUFDContainer {
+    VFIOContainerBase bcontainer;
+    IOMMUFDBackend *be;
+    uint32_t ioas_id;
+    QLIST_HEAD(, VFIOIOASHwpt) hwpt_list;
+} VFIOIOMMUFDContainer;
+
+OBJECT_DECLARE_SIMPLE_TYPE(VFIOIOMMUFDContainer, VFIO_IOMMU_IOMMUFD);
+
+#endif /* HW_VFIO_VFIO_IOMMUFD_H */
diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
index 3355c2d4e57569d7bb01b4d9378fb49a807335e8..8d48f5300a791d8858fe29d1bb905f814ef11990 100644
--- a/include/hw/vfio/vfio-common.h
+++ b/include/hw/vfio/vfio-common.h
@@ -69,27 +69,12 @@ typedef struct VFIOContainer {
 
 OBJECT_DECLARE_SIMPLE_TYPE(VFIOContainer, VFIO_IOMMU_LEGACY);
 
-typedef struct IOMMUFDBackend IOMMUFDBackend;
-
-typedef struct VFIOIOASHwpt {
-    uint32_t hwpt_id;
-    uint32_t hwpt_flags;
-    QLIST_HEAD(, VFIODevice) device_list;
-    QLIST_ENTRY(VFIOIOASHwpt) next;
-} VFIOIOASHwpt;
-
-typedef struct VFIOIOMMUFDContainer {
-    VFIOContainerBase bcontainer;
-    IOMMUFDBackend *be;
-    uint32_t ioas_id;
-    QLIST_HEAD(, VFIOIOASHwpt) hwpt_list;
-} VFIOIOMMUFDContainer;
-
-OBJECT_DECLARE_SIMPLE_TYPE(VFIOIOMMUFDContainer, VFIO_IOMMU_IOMMUFD);
-
 typedef struct VFIODeviceOps VFIODeviceOps;
 typedef struct VFIOMigration VFIOMigration;
 
+typedef struct IOMMUFDBackend IOMMUFDBackend;
+typedef struct VFIOIOASHwpt VFIOIOASHwpt;
+
 typedef struct VFIODevice {
     QLIST_ENTRY(VFIODevice) next;
     QLIST_ENTRY(VFIODevice) container_next;
diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
index 42c8412bbf50724dddb43f9b19a3aa40c8bc311d..7196c4080125674ec58b1ebf02dad84b4387c355 100644
--- a/hw/vfio/iommufd.c
+++ b/hw/vfio/iommufd.c
@@ -25,6 +25,7 @@
 #include "qemu/cutils.h"
 #include "qemu/chardev_open.h"
 #include "pci.h"
+#include "vfio-iommufd.h"
 
 static int iommufd_cdev_map(const VFIOContainerBase *bcontainer, hwaddr iova,
                             ram_addr_t size, void *vaddr, bool readonly)
-- 
2.49.0


Re: [PATCH for-10.1 v2 10/37] vfio: Introduce a new header file for VFIOIOMMUFD declarations
Posted by Joao Martins 10 months, 2 weeks ago
On 26/03/2025 07:50, Cédric Le Goater wrote:
> Gather all VFIOIOMMUFD related declarations introduced by commits
> 5ee3dc7af785 ("vfio/iommufd: Implement the iommufd backend") and
> 5b1e96e65403 ("vfio/iommufd: Introduce auto domain creation") into
> "vfio-iommufd.h". This to reduce exposure of VFIO internals in
> "hw/vfio/vfio-common.h".
> 
> Cc: Joao Martins <joao.m.martins@oracle.com>
> Cc: Yi Liu <yi.l.liu@intel.com>
> Reviewed-by: John Levon <john.levon@nutanix.com>
> Link: https://lore.kernel.org/qemu-devel/20250318095415.670319-10-clg@redhat.com
> Signed-off-by: Cédric Le Goater <clg@redhat.com>

Reviewed-by: Joao Martins <joao.m.martins@oracle.com>

> ---
>  hw/vfio/vfio-iommufd.h        | 34 ++++++++++++++++++++++++++++++++++
>  include/hw/vfio/vfio-common.h | 21 +++------------------
>  hw/vfio/iommufd.c             |  1 +
>  3 files changed, 38 insertions(+), 18 deletions(-)
>  create mode 100644 hw/vfio/vfio-iommufd.h
> 
> diff --git a/hw/vfio/vfio-iommufd.h b/hw/vfio/vfio-iommufd.h
> new file mode 100644
> index 0000000000000000000000000000000000000000..07ea0f43049645a5f3782048117fd9bf22083053
> --- /dev/null
> +++ b/hw/vfio/vfio-iommufd.h
> @@ -0,0 +1,34 @@
> +/*
> + * VFIO iommufd
> + *
> + * Copyright Red Hat, Inc. 2025
> + *
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */
> +
> +#ifndef HW_VFIO_VFIO_IOMMUFD_H
> +#define HW_VFIO_VFIO_IOMMUFD_H
> +
> +#include "hw/vfio/vfio-container-base.h"
> +
> +typedef struct VFIODevice VFIODevice;
> +
> +typedef struct VFIOIOASHwpt {
> +    uint32_t hwpt_id;
> +    uint32_t hwpt_flags;
> +    QLIST_HEAD(, VFIODevice) device_list;
> +    QLIST_ENTRY(VFIOIOASHwpt) next;
> +} VFIOIOASHwpt;
> +
> +typedef struct IOMMUFDBackend IOMMUFDBackend;
> +
> +typedef struct VFIOIOMMUFDContainer {
> +    VFIOContainerBase bcontainer;
> +    IOMMUFDBackend *be;
> +    uint32_t ioas_id;
> +    QLIST_HEAD(, VFIOIOASHwpt) hwpt_list;
> +} VFIOIOMMUFDContainer;
> +
> +OBJECT_DECLARE_SIMPLE_TYPE(VFIOIOMMUFDContainer, VFIO_IOMMU_IOMMUFD);
> +
> +#endif /* HW_VFIO_VFIO_IOMMUFD_H */
> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
> index 3355c2d4e57569d7bb01b4d9378fb49a807335e8..8d48f5300a791d8858fe29d1bb905f814ef11990 100644
> --- a/include/hw/vfio/vfio-common.h
> +++ b/include/hw/vfio/vfio-common.h
> @@ -69,27 +69,12 @@ typedef struct VFIOContainer {
>  
>  OBJECT_DECLARE_SIMPLE_TYPE(VFIOContainer, VFIO_IOMMU_LEGACY);
>  
> -typedef struct IOMMUFDBackend IOMMUFDBackend;
> -
> -typedef struct VFIOIOASHwpt {
> -    uint32_t hwpt_id;
> -    uint32_t hwpt_flags;
> -    QLIST_HEAD(, VFIODevice) device_list;
> -    QLIST_ENTRY(VFIOIOASHwpt) next;
> -} VFIOIOASHwpt;
> -
> -typedef struct VFIOIOMMUFDContainer {
> -    VFIOContainerBase bcontainer;
> -    IOMMUFDBackend *be;
> -    uint32_t ioas_id;
> -    QLIST_HEAD(, VFIOIOASHwpt) hwpt_list;
> -} VFIOIOMMUFDContainer;
> -
> -OBJECT_DECLARE_SIMPLE_TYPE(VFIOIOMMUFDContainer, VFIO_IOMMU_IOMMUFD);
> -
>  typedef struct VFIODeviceOps VFIODeviceOps;
>  typedef struct VFIOMigration VFIOMigration;
>  
> +typedef struct IOMMUFDBackend IOMMUFDBackend;
> +typedef struct VFIOIOASHwpt VFIOIOASHwpt;
> +
>  typedef struct VFIODevice {
>      QLIST_ENTRY(VFIODevice) next;
>      QLIST_ENTRY(VFIODevice) container_next;
> diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
> index 42c8412bbf50724dddb43f9b19a3aa40c8bc311d..7196c4080125674ec58b1ebf02dad84b4387c355 100644
> --- a/hw/vfio/iommufd.c
> +++ b/hw/vfio/iommufd.c
> @@ -25,6 +25,7 @@
>  #include "qemu/cutils.h"
>  #include "qemu/chardev_open.h"
>  #include "pci.h"
> +#include "vfio-iommufd.h"
>  
>  static int iommufd_cdev_map(const VFIOContainerBase *bcontainer, hwaddr iova,
>                              ram_addr_t size, void *vaddr, bool readonly)


RE: [PATCH for-10.1 v2 10/37] vfio: Introduce a new header file for VFIOIOMMUFD declarations
Posted by Duan, Zhenzhong 10 months, 2 weeks ago

>-----Original Message-----
>From: Cédric Le Goater <clg@redhat.com>
>Subject: [PATCH for-10.1 v2 10/37] vfio: Introduce a new header file for
>VFIOIOMMUFD declarations
>
>Gather all VFIOIOMMUFD related declarations introduced by commits
>5ee3dc7af785 ("vfio/iommufd: Implement the iommufd backend") and
>5b1e96e65403 ("vfio/iommufd: Introduce auto domain creation") into
>"vfio-iommufd.h". This to reduce exposure of VFIO internals in
>"hw/vfio/vfio-common.h".
>
>Cc: Joao Martins <joao.m.martins@oracle.com>
>Cc: Yi Liu <yi.l.liu@intel.com>
>Reviewed-by: John Levon <john.levon@nutanix.com>
>Link: https://lore.kernel.org/qemu-devel/20250318095415.670319-10-
>clg@redhat.com
>Signed-off-by: Cédric Le Goater <clg@redhat.com>

Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com>

Thanks
Zhenzhong