OSDN Git Service

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid
[uclinux-h8/linux.git] / drivers / iommu / intel-iommu.c
index 2297ec1..d4a4cd4 100644 (file)
@@ -589,7 +589,9 @@ static void domain_update_iommu_coherency(struct dmar_domain *domain)
 {
        int i;
 
-       domain->iommu_coherency = 1;
+       i = find_first_bit(domain->iommu_bmp, g_num_of_iommus);
+
+       domain->iommu_coherency = i < g_num_of_iommus ? 1 : 0;
 
        for_each_set_bit(i, domain->iommu_bmp, g_num_of_iommus) {
                if (!ecap_coherent(g_iommus[i]->ecap)) {
@@ -2351,7 +2353,7 @@ static int iommu_should_identity_map(struct pci_dev *pdev, int startup)
                        return 0;
                if (pdev->class >> 8 == PCI_CLASS_BRIDGE_PCI)
                        return 0;
-       } else if (pdev->pcie_type == PCI_EXP_TYPE_PCI_BRIDGE)
+       } else if (pci_pcie_type(pdev) == PCI_EXP_TYPE_PCI_BRIDGE)
                return 0;
 
        /* 
@@ -3546,10 +3548,10 @@ found:
                struct pci_dev *bridge = bus->self;
 
                if (!bridge || !pci_is_pcie(bridge) ||
-                   bridge->pcie_type == PCI_EXP_TYPE_PCI_BRIDGE)
+                   pci_pcie_type(bridge) == PCI_EXP_TYPE_PCI_BRIDGE)
                        return 0;
 
-               if (bridge->pcie_type == PCI_EXP_TYPE_ROOT_PORT) {
+               if (pci_pcie_type(bridge) == PCI_EXP_TYPE_ROOT_PORT) {
                        for (i = 0; i < atsru->devices_cnt; i++)
                                if (atsru->devices[i] == bridge)
                                        return 1;