iommu/amd: Work around broken IVRS tables
authorJoerg Roedel <joerg.roedel@amd.com>
Wed, 18 Jan 2012 13:03:11 +0000 (14:03 +0100)
committerJoerg Roedel <joerg.roedel@amd.com>
Mon, 23 Jan 2012 13:05:23 +0000 (14:05 +0100)
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>
drivers/iommu/amd_iommu.c

index cce1f03b8895324d7d6e92cd6094cc39e7673cbe..f75e0608be5bb298d40443462bc31316bc8165df 100644 (file)
@@ -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;
                }