diff options
author | Cédric Le Goater <clg@redhat.com> | 2023-12-19 07:58:19 +0100 |
---|---|---|
committer | Cédric Le Goater <clg@redhat.com> | 2024-01-05 21:25:20 +0100 |
commit | fdaa774e67435a328c0e28006c4d749f2198294a (patch) | |
tree | 57847ace36a36aa938474f1c680641a990c611dd /hw/vfio/container-base.c | |
parent | bffe92af0e7571868d47a1d1cd2205e13054d492 (diff) | |
download | qemu-fdaa774e67435a328c0e28006c4d749f2198294a.zip qemu-fdaa774e67435a328c0e28006c4d749f2198294a.tar.gz qemu-fdaa774e67435a328c0e28006c4d749f2198294a.tar.bz2 |
vfio/container: Introduce a VFIOIOMMU QOM interface
VFIOContainerBase was not introduced as an abstract QOM object because
it felt unnecessary to expose all the IOMMU backends to the QEMU
machine and human interface. However, we can still abstract the IOMMU
backend handlers using a QOM interface class. This provides more
flexibility when referencing the various implementations.
Simply transform the VFIOIOMMUOps struct in an InterfaceClass and do
some initial name replacements. Next changes will start converting
VFIOIOMMUOps.
Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com>
Tested-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Cédric Le Goater <clg@redhat.com>
Diffstat (limited to 'hw/vfio/container-base.c')
-rw-r--r-- | hw/vfio/container-base.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/hw/vfio/container-base.c b/hw/vfio/container-base.c index 1ffd25b..913ae49 100644 --- a/hw/vfio/container-base.c +++ b/hw/vfio/container-base.c @@ -72,7 +72,7 @@ int vfio_container_query_dirty_bitmap(const VFIOContainerBase *bcontainer, } void vfio_container_init(VFIOContainerBase *bcontainer, VFIOAddressSpace *space, - const VFIOIOMMUOps *ops) + const VFIOIOMMUClass *ops) { bcontainer->ops = ops; bcontainer->space = space; @@ -99,3 +99,13 @@ void vfio_container_destroy(VFIOContainerBase *bcontainer) g_list_free_full(bcontainer->iova_ranges, g_free); } + +static const TypeInfo types[] = { + { + .name = TYPE_VFIO_IOMMU, + .parent = TYPE_INTERFACE, + .class_size = sizeof(VFIOIOMMUClass), + }, +}; + +DEFINE_TYPES(types) |