[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20151015205046.28129.50479.stgit@gimli.home>
Date: Thu, 15 Oct 2015 14:52:33 -0600
From: Alex Williamson <alex.williamson@...hat.com>
To: alex.williamson@...hat.com
Cc: linux-kernel@...r.kernel.org, kvm@...r.kernel.org,
eric.auger@...aro.org
Subject: [RFC PATCH] vfio/type1: Do not support IOMMUs that allow bypass
We can only provide isolation if DMA is forced through the IOMMU
aperture. Don't allow type1 to be used if this is not the case.
Signed-off-by: Alex Williamson <alex.williamson@...hat.com>
---
Eric, I see a number of IOMMU drivers enable this, do the ones you
care about for ARM set geometry.force_aperture? Thanks,
Alex
drivers/vfio/vfio_iommu_type1.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index 57d8c37..6afa9d4 100644
--- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c
@@ -728,6 +728,7 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
struct vfio_group *group, *g;
struct vfio_domain *domain, *d;
struct bus_type *bus = NULL;
+ struct iommu_domain_geometry geometry;
int ret;
mutex_lock(&iommu->lock);
@@ -762,6 +763,17 @@ static int vfio_iommu_type1_attach_group(void *iommu_data,
goto out_free;
}
+ /*
+ * If a domain does not force DMA within the aperture, devices are not
+ * isolated and type1 is not an appropriate IOMMU model.
+ */
+ ret = iommu_domain_get_attr(domain->domain,
+ DOMAIN_ATTR_GEOMETRY, &geometry);
+ if (ret || !geometry.force_aperture) {
+ ret = -EPERM;
+ goto out_domain;
+ }
+
if (iommu->nesting) {
int attr = 1;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists