Message ID | 20240617063409.34393-17-clg@redhat.com |
---|---|
State | New |
Headers | show |
Series | vfio: QOMify VFIOContainer | expand |
On 6/17/24 08:34, Cédric Le Goater wrote: > Just as we did for the VFIOContainerBase object, introduce an > instance_init() handler for the legacy VFIOContainer object and do the > specific initialization there. > > 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.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/hw/vfio/container.c b/hw/vfio/container.c > index 3f2032d5c496de078c277ebacc49d7db89f4cc65..45123acbdd6a681f4ce7cae7aa2509100ea225ab 100644 > --- a/hw/vfio/container.c > +++ b/hw/vfio/container.c > @@ -639,7 +639,6 @@ static bool vfio_connect_container(VFIOGroup *group, AddressSpace *as, > > vfio_kvm_device_add_group(group); > > - QLIST_INIT(&container->group_list); > vfio_address_space_insert(space, bcontainer); > > group->container = container; > @@ -1183,6 +1182,13 @@ hiod_legacy_vfio_get_iova_ranges(HostIOMMUDevice *hiod, Error **errp) > return l; > } > > +static void vfio_iommu_legacy_instance_init(Object *obj) > +{ > + VFIOContainer *container = VFIO_IOMMU_LEGACY(obj); > + > + QLIST_INIT(&container->group_list); > +} > + > static void hiod_legacy_vfio_class_init(ObjectClass *oc, void *data) > { > HostIOMMUDeviceClass *hioc = HOST_IOMMU_DEVICE_CLASS(oc); > @@ -1196,6 +1202,7 @@ static const TypeInfo types[] = { > { > .name = TYPE_VFIO_IOMMU_LEGACY, > .parent = TYPE_VFIO_IOMMU, > + .instance_init = vfio_iommu_legacy_instance_init, > .instance_size = sizeof(VFIOContainer), > .class_init = vfio_iommu_legacy_class_init, > }, {
diff --git a/hw/vfio/container.c b/hw/vfio/container.c index 3f2032d5c496de078c277ebacc49d7db89f4cc65..45123acbdd6a681f4ce7cae7aa2509100ea225ab 100644 --- a/hw/vfio/container.c +++ b/hw/vfio/container.c @@ -639,7 +639,6 @@ static bool vfio_connect_container(VFIOGroup *group, AddressSpace *as, vfio_kvm_device_add_group(group); - QLIST_INIT(&container->group_list); vfio_address_space_insert(space, bcontainer); group->container = container; @@ -1183,6 +1182,13 @@ hiod_legacy_vfio_get_iova_ranges(HostIOMMUDevice *hiod, Error **errp) return l; } +static void vfio_iommu_legacy_instance_init(Object *obj) +{ + VFIOContainer *container = VFIO_IOMMU_LEGACY(obj); + + QLIST_INIT(&container->group_list); +} + static void hiod_legacy_vfio_class_init(ObjectClass *oc, void *data) { HostIOMMUDeviceClass *hioc = HOST_IOMMU_DEVICE_CLASS(oc); @@ -1196,6 +1202,7 @@ static const TypeInfo types[] = { { .name = TYPE_VFIO_IOMMU_LEGACY, .parent = TYPE_VFIO_IOMMU, + .instance_init = vfio_iommu_legacy_instance_init, .instance_size = sizeof(VFIOContainer), .class_init = vfio_iommu_legacy_class_init, }, {