iommu/vt-d: Allow PCI sub-hierarchy to use DMA domain
[linux-2.6-microblaze.git] / drivers / iommu / intel-iommu.c
index 16ba7ad..af309e8 100644 (file)
@@ -2857,31 +2857,6 @@ static int device_def_domain_type(struct device *dev)
 
                if ((iommu_identity_mapping & IDENTMAP_GFX) && IS_GFX_DEVICE(pdev))
                        return IOMMU_DOMAIN_IDENTITY;
-
-               /*
-                * We want to start off with all devices in the 1:1 domain, and
-                * take them out later if we find they can't access all of memory.
-                *
-                * However, we can't do this for PCI devices behind bridges,
-                * because all PCI devices behind the same bridge will end up
-                * with the same source-id on their transactions.
-                *
-                * Practically speaking, we can't change things around for these
-                * devices at run-time, because we can't be sure there'll be no
-                * DMA transactions in flight for any of their siblings.
-                *
-                * So PCI devices (unless they're on the root bus) as well as
-                * their parent PCI-PCI or PCIe-PCI bridges must be left _out_ of
-                * the 1:1 domain, just in _case_ one of their siblings turns out
-                * not to be able to map all of memory.
-                */
-               if (!pci_is_pcie(pdev)) {
-                       if (!pci_is_root_bus(pdev->bus))
-                               return IOMMU_DOMAIN_DMA;
-                       if (pdev->class >> 8 == PCI_CLASS_BRIDGE_PCI)
-                               return IOMMU_DOMAIN_DMA;
-               } else if (pci_pcie_type(pdev) == PCI_EXP_TYPE_PCI_BRIDGE)
-                       return IOMMU_DOMAIN_DMA;
        }
 
        return 0;