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.mart...@oracle.com> > Cc: Yi Liu <yi.l....@intel.com> > Reviewed-by: John Levon <john.le...@nutanix.com> > Link: > https://lore.kernel.org/qemu-devel/20250318095415.670319-10-...@redhat.com > Signed-off-by: Cédric Le Goater <c...@redhat.com>
Reviewed-by: Joao Martins <joao.m.mart...@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)