>-----Original Message----- >From: Eric Auger <eric.au...@redhat.com> >Subject: Re: [PATCH v6 03/19] backends/iommufd: Introduce abstract >TYPE_HOST_IOMMU_DEVICE_IOMMUFD device > > >Hi Zhenzhong, >On 6/3/24 08:10, Zhenzhong Duan wrote: >> TYPE_HOST_IOMMU_DEVICE_IOMMUFD represents a host IOMMU device >under >> iommufd backend. >> >> It will have its own .get_cap() implementation. >> >> Opportunistically, add missed header to include/sysemu/iommufd.h. > >I would explain why it is abstract, ie. because it is going to be >derived into VFIO or VDPA type'd device.
Sure. > >Besides I think I would simply squash patches 3 and 4 Will do. Thanks Zhenzhong > >Thanks > >Eric >> >> Suggested-by: Cédric Le Goater <c...@redhat.com> >> Signed-off-by: Yi Liu <yi.l....@intel.com> >> Signed-off-by: Zhenzhong Duan <zhenzhong.d...@intel.com> >> --- >> include/sysemu/iommufd.h | 16 ++++++++++++++++ >> backends/iommufd.c | 35 ++++++++++++++++++----------------- >> 2 files changed, 34 insertions(+), 17 deletions(-) >> >> diff --git a/include/sysemu/iommufd.h b/include/sysemu/iommufd.h >> index 293bfbe967..f6e6d6e1f9 100644 >> --- a/include/sysemu/iommufd.h >> +++ b/include/sysemu/iommufd.h >> @@ -1,9 +1,23 @@ >> +/* >> + * iommufd container backend declaration >> + * >> + * Copyright (C) 2024 Intel Corporation. >> + * Copyright Red Hat, Inc. 2024 >> + * >> + * Authors: Yi Liu <yi.l....@intel.com> >> + * Eric Auger <eric.au...@redhat.com> >> + * Zhenzhong Duan <zhenzhong.d...@intel.com> >> + * >> + * SPDX-License-Identifier: GPL-2.0-or-later >> + */ >> + >> #ifndef SYSEMU_IOMMUFD_H >> #define SYSEMU_IOMMUFD_H >> >> #include "qom/object.h" >> #include "exec/hwaddr.h" >> #include "exec/cpu-common.h" >> +#include "sysemu/host_iommu_device.h" >> >> #define TYPE_IOMMUFD_BACKEND "iommufd" >> OBJECT_DECLARE_TYPE(IOMMUFDBackend, IOMMUFDBackendClass, >IOMMUFD_BACKEND) >> @@ -33,4 +47,6 @@ int iommufd_backend_map_dma(IOMMUFDBackend >*be, uint32_t ioas_id, hwaddr iova, >> ram_addr_t size, void *vaddr, bool readonly); >> int iommufd_backend_unmap_dma(IOMMUFDBackend *be, uint32_t >ioas_id, >> hwaddr iova, ram_addr_t size); >> + >> +#define TYPE_HOST_IOMMU_DEVICE_IOMMUFD >TYPE_HOST_IOMMU_DEVICE "-iommufd" >> #endif >> diff --git a/backends/iommufd.c b/backends/iommufd.c >> index c506afbdac..012f18d8d8 100644 >> --- a/backends/iommufd.c >> +++ b/backends/iommufd.c >> @@ -208,23 +208,24 @@ int >iommufd_backend_unmap_dma(IOMMUFDBackend *be, uint32_t ioas_id, >> return ret; >> } >> >> -static const TypeInfo iommufd_backend_info = { >> - .name = TYPE_IOMMUFD_BACKEND, >> - .parent = TYPE_OBJECT, >> - .instance_size = sizeof(IOMMUFDBackend), >> - .instance_init = iommufd_backend_init, >> - .instance_finalize = iommufd_backend_finalize, >> - .class_size = sizeof(IOMMUFDBackendClass), >> - .class_init = iommufd_backend_class_init, >> - .interfaces = (InterfaceInfo[]) { >> - { TYPE_USER_CREATABLE }, >> - { } >> +static const TypeInfo types[] = { >> + { >> + .name = TYPE_IOMMUFD_BACKEND, >> + .parent = TYPE_OBJECT, >> + .instance_size = sizeof(IOMMUFDBackend), >> + .instance_init = iommufd_backend_init, >> + .instance_finalize = iommufd_backend_finalize, >> + .class_size = sizeof(IOMMUFDBackendClass), >> + .class_init = iommufd_backend_class_init, >> + .interfaces = (InterfaceInfo[]) { >> + { TYPE_USER_CREATABLE }, >> + { } >> + } >> + }, { >> + .name = TYPE_HOST_IOMMU_DEVICE_IOMMUFD, >> + .parent = TYPE_HOST_IOMMU_DEVICE, >> + .abstract = true, >> } >> }; >> >> -static void register_types(void) >> -{ >> - type_register_static(&iommufd_backend_info); >> -} >> - >> -type_init(register_types); >> +DEFINE_TYPES(types)