Message ID | 20240617063409.34393-14-clg@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | vfio: QOMify VFIOContainer | expand |
On 6/17/24 08:34, Cédric Le Goater wrote: > This allows us to move the initialization code from vfio_container_init(), > which we will soon remove. > > Signed-off-by: Cédric Le Goater <clg@redhat.com> > Reviewed-by: Zhenzhong Duan <zhenzhong.duan@intel.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Eric > --- > hw/vfio/container-base.c | 19 +++++++++++++------ > 1 file changed, 13 insertions(+), 6 deletions(-) > > diff --git a/hw/vfio/container-base.c b/hw/vfio/container-base.c > index 98c15e174dd78df5146ee83c05c98f3ea9c1e52c..3858f5ab1d68e897f9013161d7c5c20c0553029d 100644 > --- a/hw/vfio/container-base.c > +++ b/hw/vfio/container-base.c > @@ -75,12 +75,6 @@ void vfio_container_init(VFIOContainerBase *bcontainer, > const VFIOIOMMUClass *ops) > { > bcontainer->ops = ops; > - bcontainer->error = NULL; > - bcontainer->dirty_pages_supported = false; > - bcontainer->dma_max_mappings = 0; > - bcontainer->iova_ranges = NULL; > - QLIST_INIT(&bcontainer->giommu_list); > - QLIST_INIT(&bcontainer->vrdl_list); > } > > void vfio_container_destroy(VFIOContainerBase *bcontainer) > @@ -99,10 +93,23 @@ void vfio_container_destroy(VFIOContainerBase *bcontainer) > g_list_free_full(bcontainer->iova_ranges, g_free); > } > > +static void vfio_container_instance_init(Object *obj) > +{ > + VFIOContainerBase *bcontainer = VFIO_IOMMU(obj); > + > + bcontainer->error = NULL; > + bcontainer->dirty_pages_supported = false; > + bcontainer->dma_max_mappings = 0; > + bcontainer->iova_ranges = NULL; > + QLIST_INIT(&bcontainer->giommu_list); > + QLIST_INIT(&bcontainer->vrdl_list); > +} > + > static const TypeInfo types[] = { > { > .name = TYPE_VFIO_IOMMU, > .parent = TYPE_OBJECT, > + .instance_init = vfio_container_instance_init, > .instance_size = sizeof(VFIOContainerBase), > .class_size = sizeof(VFIOIOMMUClass), > .abstract = true,
diff --git a/hw/vfio/container-base.c b/hw/vfio/container-base.c index 98c15e174dd78df5146ee83c05c98f3ea9c1e52c..3858f5ab1d68e897f9013161d7c5c20c0553029d 100644 --- a/hw/vfio/container-base.c +++ b/hw/vfio/container-base.c @@ -75,12 +75,6 @@ void vfio_container_init(VFIOContainerBase *bcontainer, const VFIOIOMMUClass *ops) { bcontainer->ops = ops; - bcontainer->error = NULL; - bcontainer->dirty_pages_supported = false; - bcontainer->dma_max_mappings = 0; - bcontainer->iova_ranges = NULL; - QLIST_INIT(&bcontainer->giommu_list); - QLIST_INIT(&bcontainer->vrdl_list); } void vfio_container_destroy(VFIOContainerBase *bcontainer) @@ -99,10 +93,23 @@ void vfio_container_destroy(VFIOContainerBase *bcontainer) g_list_free_full(bcontainer->iova_ranges, g_free); } +static void vfio_container_instance_init(Object *obj) +{ + VFIOContainerBase *bcontainer = VFIO_IOMMU(obj); + + bcontainer->error = NULL; + bcontainer->dirty_pages_supported = false; + bcontainer->dma_max_mappings = 0; + bcontainer->iova_ranges = NULL; + QLIST_INIT(&bcontainer->giommu_list); + QLIST_INIT(&bcontainer->vrdl_list); +} + static const TypeInfo types[] = { { .name = TYPE_VFIO_IOMMU, .parent = TYPE_OBJECT, + .instance_init = vfio_container_instance_init, .instance_size = sizeof(VFIOContainerBase), .class_size = sizeof(VFIOIOMMUClass), .abstract = true,