diff mbox

[v2,02/10] iommu/ipmmu-vmsa: Cleanup failures of ARM mapping creation or attachment

Message ID 1400150451-13469-3-git-send-email-laurent.pinchart+renesas@ideasonboard.com (mailing list archive)
State New, archived
Headers show

Commit Message

Laurent Pinchart May 15, 2014, 10:40 a.m. UTC
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
 drivers/iommu/ipmmu-vmsa.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Joerg Roedel May 26, 2014, 9:23 a.m. UTC | #1
On Thu, May 15, 2014 at 12:40:43PM +0200, Laurent Pinchart wrote:
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
>  drivers/iommu/ipmmu-vmsa.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c
> index 49e00f7..49dbedd 100644
> --- a/drivers/iommu/ipmmu-vmsa.c
> +++ b/drivers/iommu/ipmmu-vmsa.c
> @@ -917,7 +917,8 @@ static int ipmmu_add_device(struct device *dev)
>  							SZ_1G, SZ_2G);
>  		if (IS_ERR(mapping)) {
>  			dev_err(mmu->dev, "failed to create ARM IOMMU mapping\n");
> -			return PTR_ERR(mapping);
> +			ret = PTR_ERR(mapping);
> +			goto error;
>  		}
>  
>  		mmu->mapping = mapping;
> @@ -933,6 +934,7 @@ static int ipmmu_add_device(struct device *dev)
>  	return 0;
>  
>  error:
> +	arm_iommu_release_mapping(mmu->mapping);
>  	kfree(dev->archdata.iommu);
>  	dev->archdata.iommu = NULL;
>  	iommu_group_remove_device(dev);

Skipped this one because it didn't apply. The others are applied.
Laurent Pinchart May 26, 2014, 10:08 a.m. UTC | #2
Hi Joerg,

On Monday 26 May 2014 11:23:11 Joerg Roedel wrote:
> On Thu, May 15, 2014 at 12:40:43PM +0200, Laurent Pinchart wrote:
> > Signed-off-by: Laurent Pinchart
> > <laurent.pinchart+renesas@ideasonboard.com>
> > ---
> > 
> >  drivers/iommu/ipmmu-vmsa.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c
> > index 49e00f7..49dbedd 100644
> > --- a/drivers/iommu/ipmmu-vmsa.c
> > +++ b/drivers/iommu/ipmmu-vmsa.c
> > @@ -917,7 +917,8 @@ static int ipmmu_add_device(struct device *dev)
> >  							SZ_1G, SZ_2G);
> >  		if (IS_ERR(mapping)) {
> >  			dev_err(mmu->dev, "failed to create ARM IOMMU mapping\n");
> > -			return PTR_ERR(mapping);
> > +			ret = PTR_ERR(mapping);
> > +			goto error;
> >  		}
> >  		
> >  		mmu->mapping = mapping;
> > @@ -933,6 +934,7 @@ static int ipmmu_add_device(struct device *dev)
> >  	return 0;
> >  
> >  error:
> > +	arm_iommu_release_mapping(mmu->mapping);
> >  	kfree(dev->archdata.iommu);
> >  	dev->archdata.iommu = NULL;
> >  	iommu_group_remove_device(dev);
> 
> Skipped this one because it didn't apply. The others are applied.

Thank you. I'll rebase the patch on top of your tree as soon as you publish 
the related branch and resubmit.
Joerg Roedel June 16, 2014, 3:11 p.m. UTC | #3
Hi Laurent,

On Mon, May 26, 2014 at 12:08:37PM +0200, Laurent Pinchart wrote:
> > Skipped this one because it didn't apply. The others are applied.
> 
> Thank you. I'll rebase the patch on top of your tree as soon as you publish 
> the related branch and resubmit.

What happened to this patch? And how about the other iommu_domain
changes requested. Will you submit them for 3.17?


	Joerg
Laurent Pinchart June 17, 2014, 11:20 p.m. UTC | #4
Hi Joerg,

On Monday 16 June 2014 17:11:42 Joerg Roedel wrote:
> On Mon, May 26, 2014 at 12:08:37PM +0200, Laurent Pinchart wrote:
> > > Skipped this one because it didn't apply. The others are applied.
> > 
> > Thank you. I'll rebase the patch on top of your tree as soon as you
> > publish the related branch and resubmit.
> 
> What happened to this patch?

It looks like it slipped through the cracks :-/ Should I submit it as a fix 
for v3.16 or wait until v3.17 ?

> And how about the other iommu_domain changes requested. Will you submit them
> for 3.17?

I plan to work on that, but I'm not sure whether I'll be able to finish the 
work for v3.17, as I need to concentrate on a DMA engine driver right now, and 
will then need to finish the DT bindings for the IPMMU driver (which may 
result in fixes for some of the iommu_domain-related problems).
diff mbox

Patch

diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c
index 49e00f7..49dbedd 100644
--- a/drivers/iommu/ipmmu-vmsa.c
+++ b/drivers/iommu/ipmmu-vmsa.c
@@ -917,7 +917,8 @@  static int ipmmu_add_device(struct device *dev)
 							SZ_1G, SZ_2G);
 		if (IS_ERR(mapping)) {
 			dev_err(mmu->dev, "failed to create ARM IOMMU mapping\n");
-			return PTR_ERR(mapping);
+			ret = PTR_ERR(mapping);
+			goto error;
 		}
 
 		mmu->mapping = mapping;
@@ -933,6 +934,7 @@  static int ipmmu_add_device(struct device *dev)
 	return 0;
 
 error:
+	arm_iommu_release_mapping(mmu->mapping);
 	kfree(dev->archdata.iommu);
 	dev->archdata.iommu = NULL;
 	iommu_group_remove_device(dev);