aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2012-01-18 14:03:11 +0100
committerJoerg Roedel <joerg.roedel@amd.com>2012-01-23 14:05:23 +0100
commitaf1be04901e27ce669b4ecde1c953d5c939498f5 (patch)
tree61382cc45e7b9d5a6648e46ed2369720d790b9f7
parentdcd6c92267155e70a94b3927bce681ce74b80d1f (diff)
downloadlinux-stericsson-af1be04901e27ce669b4ecde1c953d5c939498f5.tar.gz
iommu/amd: Work around broken IVRS tables
On some systems the IVRS table does not contain all PCI devices present in the system. In case a device not present in the IVRS table is translated by the IOMMU no DMA is possible from that device by default. This patch fixes this by removing the DTE entry for every PCI device present in the system and not covered by IVRS. Cc: stable@vger.kernel.org # >= 3.0 Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
-rw-r--r--drivers/iommu/amd_iommu.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index cce1f03b8895..f75e0608be5b 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -2863,6 +2863,9 @@ static unsigned device_dma_ops_init(void)
for_each_pci_dev(pdev) {
if (!check_device(&pdev->dev)) {
+
+ iommu_ignore_device(&pdev->dev);
+
unhandled += 1;
continue;
}