Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 22af4859 authored by Alexey Kardashevskiy's avatar Alexey Kardashevskiy Committed by Michael Ellerman
Browse files

vfio: powerpc/spapr: Rework groups attaching



This is to make extended ownership and multiple groups support patches
simpler for review.

This should cause no behavioural change.

Signed-off-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
[aw: for the vfio related changes]
Acked-by: default avatarAlex Williamson <alex.williamson@redhat.com>
Reviewed-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
Reviewed-by: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 649354b7
Loading
Loading
Loading
Loading
+24 −16
Original line number Diff line number Diff line
@@ -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 {
		goto unlock_exit;
	}

	ret = iommu_take_ownership(tbl);
	if (!ret)
		container->tbl = tbl;
	}

unlock_exit:
	mutex_unlock(&container->lock);

	return ret;
@@ -487,7 +492,9 @@ 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 {
		goto unlock_exit;
	}

	if (container->enabled) {
		pr_warn("tce_vfio: detaching group #%u from enabled container, forcing disable\n",
				iommu_group_id(tbl->it_group));
@@ -499,7 +506,8 @@ static void tce_iommu_detach_group(void *iommu_data,
	container->tbl = NULL;
	tce_iommu_clear(container, tbl, tbl->it_offset, tbl->it_size);
	iommu_release_ownership(tbl);
	}

unlock_exit:
	mutex_unlock(&container->lock);
}