summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2012-06-21 16:51:25 +0200
committerJoerg Roedel <joerg.roedel@amd.com>2012-09-28 17:33:28 +0200
commitf6fec00a9202987f1be2ae0a722518b742a9a799 (patch)
tree53f05eb432b897f4cd189731749b97ff3a67108b
parent33f28c59e18d83fd2aeef258d211be66b9b80eb3 (diff)
downloadlinux-3.10-f6fec00a9202987f1be2ae0a722518b742a9a799.tar.gz
linux-3.10-f6fec00a9202987f1be2ae0a722518b742a9a799.tar.bz2
linux-3.10-f6fec00a9202987f1be2ae0a722518b742a9a799.zip
iommu/amd: Make sure IOMMU is not considered to translate itself
The IVRS table usually includes the IOMMU device. But the IOMMU does never translate itself, so make sure the IOMMU driver knows this. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
-rw-r--r--drivers/iommu/amd_iommu_init.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 8a7f1971d63..68b3305a126 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -1021,6 +1021,13 @@ static int __init init_iommu_one(struct amd_iommu *iommu, struct ivhd_header *h)
ret = init_iommu_from_acpi(iommu, h);
if (ret)
return ret;
+
+ /*
+ * Make sure IOMMU is not considered to translate itself. The IVRS
+ * table tells us so, but this is a lie!
+ */
+ amd_iommu_rlookup_table[iommu->devid] = NULL;
+
init_iommu_devices(iommu);
return 0;