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 <[email protected]>
> Cc: Yi Liu <[email protected]>
> Reviewed-by: John Levon <[email protected]>
> Link:
> https://lore.kernel.org/qemu-devel/[email protected]
> Signed-off-by: Cédric Le Goater <[email protected]>
Reviewed-by: Joao Martins <[email protected]>
> ---
> 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)