On 7/15/25 11:25, Mark Cave-Ayland wrote:
> Use QOM casts to convert between VFIOContainer and VFIOContainerBase instead
> of accessing bcontainer directly.
>
> Signed-off-by: Mark Cave-Ayland <mark.caveayland@nutanix.com>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Thanks,
C.
> ---
> hw/vfio/spapr.c | 16 ++++++----------
> 1 file changed, 6 insertions(+), 10 deletions(-)
>
> diff --git a/hw/vfio/spapr.c b/hw/vfio/spapr.c
> index 564b70ef97..c41e4588d6 100644
> --- a/hw/vfio/spapr.c
> +++ b/hw/vfio/spapr.c
> @@ -62,7 +62,7 @@ static void vfio_prereg_listener_region_add(MemoryListener *listener,
> VFIOSpaprContainer *scontainer = container_of(listener, VFIOSpaprContainer,
> prereg_listener);
> VFIOContainer *container = &scontainer->container;
> - VFIOContainerBase *bcontainer = &container->bcontainer;
> + VFIOContainerBase *bcontainer = VFIO_IOMMU(container);
> const hwaddr gpa = section->offset_within_address_space;
> hwaddr end;
> int ret;
> @@ -244,7 +244,7 @@ static bool vfio_spapr_create_window(VFIOContainer *container,
> hwaddr *pgsize, Error **errp)
> {
> int ret = 0;
> - VFIOContainerBase *bcontainer = &container->bcontainer;
> + VFIOContainerBase *bcontainer = VFIO_IOMMU(container);
> VFIOSpaprContainer *scontainer = container_of(container, VFIOSpaprContainer,
> container);
> IOMMUMemoryRegion *iommu_mr = IOMMU_MEMORY_REGION(section->mr);
> @@ -352,8 +352,7 @@ vfio_spapr_container_add_section_window(VFIOContainerBase *bcontainer,
> MemoryRegionSection *section,
> Error **errp)
> {
> - VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> - bcontainer);
> + VFIOContainer *container = VFIO_IOMMU_LEGACY(bcontainer);
> VFIOSpaprContainer *scontainer = container_of(container, VFIOSpaprContainer,
> container);
> VFIOHostDMAWindow *hostwin;
> @@ -443,8 +442,7 @@ static void
> vfio_spapr_container_del_section_window(VFIOContainerBase *bcontainer,
> MemoryRegionSection *section)
> {
> - VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> - bcontainer);
> + VFIOContainer *container = VFIO_IOMMU_LEGACY(bcontainer);
> VFIOSpaprContainer *scontainer = container_of(container, VFIOSpaprContainer,
> container);
>
> @@ -465,8 +463,7 @@ vfio_spapr_container_del_section_window(VFIOContainerBase *bcontainer,
>
> static void vfio_spapr_container_release(VFIOContainerBase *bcontainer)
> {
> - VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> - bcontainer);
> + VFIOContainer *container = VFIO_IOMMU_LEGACY(bcontainer);
> VFIOSpaprContainer *scontainer = container_of(container, VFIOSpaprContainer,
> container);
> VFIOHostDMAWindow *hostwin, *next;
> @@ -484,8 +481,7 @@ static void vfio_spapr_container_release(VFIOContainerBase *bcontainer)
> static bool vfio_spapr_container_setup(VFIOContainerBase *bcontainer,
> Error **errp)
> {
> - VFIOContainer *container = container_of(bcontainer, VFIOContainer,
> - bcontainer);
> + VFIOContainer *container = VFIO_IOMMU_LEGACY(bcontainer);
> VFIOSpaprContainer *scontainer = container_of(container, VFIOSpaprContainer,
> container);
> struct vfio_iommu_spapr_tce_info info;