[PATCH kernel v10 12/34] vfio: powerpc/spapr: Rework groups attaching

Gavin Shan gwshan at linux.vnet.ibm.com
Thu May 14 09:35:39 AEST 2015


On Tue, May 12, 2015 at 01:39:01AM +1000, Alexey Kardashevskiy wrote:
>This is to make extended ownership and multiple groups support patches
>simpler for review.
>
>This should cause no behavioural change.
>
>Signed-off-by: Alexey Kardashevskiy <aik at ozlabs.ru>
>[aw: for the vfio related changes]
>Acked-by: Alex Williamson <alex.williamson at redhat.com>
>Reviewed-by: David Gibson <david at gibson.dropbear.id.au>

Reviewed-by: Gavin Shan <gwshan at linux.vnet.ibm.com>

Thanks,
Gavin

>---
> drivers/vfio/vfio_iommu_spapr_tce.c | 40 ++++++++++++++++++++++---------------
> 1 file changed, 24 insertions(+), 16 deletions(-)
>
>diff --git a/drivers/vfio/vfio_iommu_spapr_tce.c b/drivers/vfio/vfio_iommu_spapr_tce.c
>index 115d5e6..0fbe03e 100644
>--- a/drivers/vfio/vfio_iommu_spapr_tce.c
>+++ b/drivers/vfio/vfio_iommu_spapr_tce.c
>@@ -460,16 +460,21 @@ static int tce_iommu_attach_group(void *iommu_data,
> 				iommu_group_id(container->tbl->it_group),
> 				iommu_group_id(iommu_group));
> 		ret = -EBUSY;
>-	} else if (container->enabled) {
>+		goto unlock_exit;
>+	}
>+
>+	if (container->enabled) {
> 		pr_err("tce_vfio: attaching group #%u to enabled container\n",
> 				iommu_group_id(iommu_group));
> 		ret = -EBUSY;
>-	} else {
>-		ret = iommu_take_ownership(tbl);
>-		if (!ret)
>-			container->tbl = tbl;
>+		goto unlock_exit;
> 	}
>
>+	ret = iommu_take_ownership(tbl);
>+	if (!ret)
>+		container->tbl = tbl;
>+
>+unlock_exit:
> 	mutex_unlock(&container->lock);
>
> 	return ret;
>@@ -487,19 +492,22 @@ static void tce_iommu_detach_group(void *iommu_data,
> 		pr_warn("tce_vfio: detaching group #%u, expected group is #%u\n",
> 				iommu_group_id(iommu_group),
> 				iommu_group_id(tbl->it_group));
>-	} else {
>-		if (container->enabled) {
>-			pr_warn("tce_vfio: detaching group #%u from enabled container, forcing disable\n",
>-					iommu_group_id(tbl->it_group));
>-			tce_iommu_disable(container);
>-		}
>+		goto unlock_exit;
>+	}
>
>-		/* pr_debug("tce_vfio: detaching group #%u from iommu %p\n",
>-				iommu_group_id(iommu_group), iommu_group); */
>-		container->tbl = NULL;
>-		tce_iommu_clear(container, tbl, tbl->it_offset, tbl->it_size);
>-		iommu_release_ownership(tbl);
>+	if (container->enabled) {
>+		pr_warn("tce_vfio: detaching group #%u from enabled container, forcing disable\n",
>+				iommu_group_id(tbl->it_group));
>+		tce_iommu_disable(container);
> 	}
>+
>+	/* pr_debug("tce_vfio: detaching group #%u from iommu %p\n",
>+	   iommu_group_id(iommu_group), iommu_group); */
>+	container->tbl = NULL;
>+	tce_iommu_clear(container, tbl, tbl->it_offset, tbl->it_size);
>+	iommu_release_ownership(tbl);
>+
>+unlock_exit:
> 	mutex_unlock(&container->lock);
> }
>
>-- 
>2.4.0.rc3.8.gfb3e7d5
>



More information about the Linuxppc-dev mailing list