Hi Shameer,

On 2/11/26 9:34 AM, Shameer Kolothum wrote:
> Move viommu teardown into a helper function and use it from the
> last device removal path. No functional change.
>
> Reviewed-by: Nicolin Chen <[email protected]>
> Signed-off-by: Shameer Kolothum <[email protected]>
Reviewed-by: Eric Auger <[email protected]>

Eric
> ---
>  hw/arm/smmuv3-accel.c | 21 +++++++++++++++------
>  1 file changed, 15 insertions(+), 6 deletions(-)
>
> diff --git a/hw/arm/smmuv3-accel.c b/hw/arm/smmuv3-accel.c
> index f5cd4df336..c19c526fca 100644
> --- a/hw/arm/smmuv3-accel.c
> +++ b/hw/arm/smmuv3-accel.c
> @@ -390,6 +390,20 @@ bool smmuv3_accel_issue_inv_cmd(SMMUv3State *bs, void 
> *cmd, SMMUDevice *sdev,
>                     sizeof(Cmd), &entry_num, cmd, errp);
>  }
>  
> +static void smmuv3_accel_free_viommu(SMMUv3AccelState *accel)
> +{
> +    IOMMUFDViommu *viommu = accel->viommu;
> +
> +    if (!viommu) {
> +        return;
> +    }
> +    iommufd_backend_free_id(viommu->iommufd, accel->bypass_hwpt_id);
> +    iommufd_backend_free_id(viommu->iommufd, accel->abort_hwpt_id);
> +    iommufd_backend_free_id(viommu->iommufd, accel->viommu->viommu_id);
> +    g_free(viommu);
> +    accel->viommu = NULL;
> +}
> +
>  static bool
>  smmuv3_accel_alloc_viommu(SMMUv3State *s, HostIOMMUDeviceIOMMUFD *idev,
>                            Error **errp)
> @@ -549,12 +563,7 @@ static void smmuv3_accel_unset_iommu_device(PCIBus *bus, 
> void *opaque,
>      trace_smmuv3_accel_unset_iommu_device(devfn, idev->devid);
>  
>      if (QLIST_EMPTY(&accel->device_list)) {
> -        iommufd_backend_free_id(accel->viommu->iommufd, 
> accel->bypass_hwpt_id);
> -        iommufd_backend_free_id(accel->viommu->iommufd, 
> accel->abort_hwpt_id);
> -        iommufd_backend_free_id(accel->viommu->iommufd,
> -                                accel->viommu->viommu_id);
> -        g_free(accel->viommu);
> -        accel->viommu = NULL;
> +        smmuv3_accel_free_viommu(accel);
>      }
>  }
>  


Reply via email to