[PATCH v12 08/17] iommu: Make free of iommu_domain_ops optional

Lu Baolu posted 17 patches 3 years, 7 months ago
There is a newer version of this series
[PATCH v12 08/17] iommu: Make free of iommu_domain_ops optional
Posted by Lu Baolu 3 years, 7 months ago
So that the drivers are able to implement static singleton instance for
some special domains. The blocking domain is an example. The driver has
no need to allocate different memory for each blocking domain allocation
request. Hence, no need for a free callback.

Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Tested-by: Tony Zhu <tony.zhu@intel.com>
---
 drivers/iommu/iommu.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index e985f4d5895f..630e1b64ed89 100644
--- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c
@@ -1972,7 +1972,8 @@ void iommu_domain_free(struct iommu_domain *domain)
 	if (domain->type == IOMMU_DOMAIN_SVA)
 		mmdrop(domain->mm);
 	iommu_put_dma_cookie(domain);
-	domain->ops->free(domain);
+	if (domain->ops->free)
+		domain->ops->free(domain);
 }
 EXPORT_SYMBOL_GPL(iommu_domain_free);
 
-- 
2.25.1
Re: [PATCH v12 08/17] iommu: Make free of iommu_domain_ops optional
Posted by Jason Gunthorpe 3 years, 7 months ago
On Fri, Aug 26, 2022 at 08:11:32PM +0800, Lu Baolu wrote:
> So that the drivers are able to implement static singleton instance for
> some special domains. The blocking domain is an example. The driver has
> no need to allocate different memory for each blocking domain allocation
> request. Hence, no need for a free callback.
> 
> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
> Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
> Tested-by: Tony Zhu <tony.zhu@intel.com>
> ---
>  drivers/iommu/iommu.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
> index e985f4d5895f..630e1b64ed89 100644
> --- a/drivers/iommu/iommu.c
> +++ b/drivers/iommu/iommu.c
> @@ -1972,7 +1972,8 @@ void iommu_domain_free(struct iommu_domain *domain)
>  	if (domain->type == IOMMU_DOMAIN_SVA)
>  		mmdrop(domain->mm);
>  	iommu_put_dma_cookie(domain);
> -	domain->ops->free(domain);
> +	if (domain->ops->free)
> +		domain->ops->free(domain);
>  }
>  EXPORT_SYMBOL_GPL(iommu_domain_free);

This patch is in the wrong order, it needs to be before the ARM patch
implementing the blocking domain

But looks OK

Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>

Jason
Re: [PATCH v12 08/17] iommu: Make free of iommu_domain_ops optional
Posted by Jason Gunthorpe 3 years, 7 months ago
On Fri, Aug 26, 2022 at 11:53:15AM -0300, Jason Gunthorpe wrote:
> On Fri, Aug 26, 2022 at 08:11:32PM +0800, Lu Baolu wrote:
> > So that the drivers are able to implement static singleton instance for
> > some special domains. The blocking domain is an example. The driver has
> > no need to allocate different memory for each blocking domain allocation
> > request. Hence, no need for a free callback.
> > 
> > Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
> > Tested-by: Zhangfei Gao <zhangfei.gao@linaro.org>
> > Tested-by: Tony Zhu <tony.zhu@intel.com>
> > ---
> >  drivers/iommu/iommu.c | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
> > index e985f4d5895f..630e1b64ed89 100644
> > --- a/drivers/iommu/iommu.c
> > +++ b/drivers/iommu/iommu.c
> > @@ -1972,7 +1972,8 @@ void iommu_domain_free(struct iommu_domain *domain)
> >  	if (domain->type == IOMMU_DOMAIN_SVA)
> >  		mmdrop(domain->mm);
> >  	iommu_put_dma_cookie(domain);
> > -	domain->ops->free(domain);
> > +	if (domain->ops->free)
> > +		domain->ops->free(domain);
> >  }
> >  EXPORT_SYMBOL_GPL(iommu_domain_free);
> 
> This patch is in the wrong order, it needs to be before the ARM patch
> implementing the blocking domain

Oh, nevermind, I am reading them in the wrong order :)

Jason