On 3/20/25 10:18, Duan, Zhenzhong wrote:
>
>
>> -----Original Message-----
>> From: Cédric Le Goater <clg@redhat.com>
>> Subject: [PATCH for-10.1 09/32] vfio: Introduce a new header file for
>> VFIOIOMMUFD declarations
>>
>> Gather all VFIOIOMMUFD related declarations into "iommufd.h" to
>> reduce exposure of VFIO internals in "hw/vfio/vfio-common.h".
>>
>> Signed-off-by: Cédric Le Goater <clg@redhat.com>
>> ---
>> hw/vfio/iommufd.h | 29 +++++++++++++++++++++++++++++
>> include/hw/vfio/vfio-common.h | 21 +++------------------
>> hw/vfio/iommufd.c | 1 +
>> 3 files changed, 33 insertions(+), 18 deletions(-)
>> create mode 100644 hw/vfio/iommufd.h
>>
>> diff --git a/hw/vfio/iommufd.h b/hw/vfio/iommufd.h
>> new file mode 100644
>> index
>> 0000000000000000000000000000000000000000..7d87994c4fadbc328b6ac7f9ae
>> e00469dd8808b0
>> --- /dev/null
>> +++ b/hw/vfio/iommufd.h
>> @@ -0,0 +1,29 @@
>> +/*
>> + * VFIO iommufd
>> + *
>> + * Copyright Red Hat, Inc. 2025
>> + *
>> + * SPDX-License-Identifier: GPL-2.0-or-later
>> + */
>> +
>> +#ifndef HW_VFIO_IOMMUFD_H
>> +#define HW_VFIO_IOMMUFD_H
>> +
>> +
>> +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;
>
> Do we need to add 'typedef struct IOMMUFDBackend IOMMUFDBackend;' for above line?
yes and we need a few more includes too (VFIODevice , VFIOContainerBase).
Thanks,
C.
>
> Thanks
> Zhenzhong
>
>> + uint32_t ioas_id;
>> + QLIST_HEAD(, VFIOIOASHwpt) hwpt_list;
>> +} VFIOIOMMUFDContainer;
>> +
>> +OBJECT_DECLARE_SIMPLE_TYPE(VFIOIOMMUFDContainer,
>> VFIO_IOMMU_IOMMUFD);
>> +
>> +#endif /* HW_VFIO_IOMMUFD_H */
>> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
>> index
>> 3355c2d4e57569d7bb01b4d9378fb49a807335e8..8d48f5300a791d8858fe29d1bb
>> 905f814ef11990 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
>> 2fb2a01ec6d29dbc284cfd9830c24e78ce560dd0..a219b6453037e2d4e0d12800ea
>> 25678885af98f8 100644
>> --- a/hw/vfio/iommufd.c
>> +++ b/hw/vfio/iommufd.c
>> @@ -26,6 +26,7 @@
>> #include "qemu/chardev_open.h"
>> #include "pci.h"
>> #include "migration.h"
>> +#include "iommufd.h"
>>
>> static int iommufd_cdev_map(const VFIOContainerBase *bcontainer, hwaddr
>> iova,
>> ram_addr_t size, void *vaddr, bool readonly)
>> --
>> 2.48.1
>