Merge git://git.infradead.org/iommu-2.6 into iommu/fixes

+9 -4
+2 -1
drivers/iommu/dmar.c
··· 152 info->seg = pci_domain_nr(dev->bus); 153 info->level = level; 154 if (event == BUS_NOTIFY_ADD_DEVICE) { 155 - for (tmp = dev, level--; tmp; tmp = tmp->bus->self) { 156 info->path[level].device = PCI_SLOT(tmp->devfn); 157 info->path[level].function = PCI_FUNC(tmp->devfn); 158 if (pci_is_root_bus(tmp->bus))
··· 152 info->seg = pci_domain_nr(dev->bus); 153 info->level = level; 154 if (event == BUS_NOTIFY_ADD_DEVICE) { 155 + for (tmp = dev; tmp; tmp = tmp->bus->self) { 156 + level--; 157 info->path[level].device = PCI_SLOT(tmp->devfn); 158 info->path[level].function = PCI_FUNC(tmp->devfn); 159 if (pci_is_root_bus(tmp->bus))
+7 -3
drivers/iommu/intel-iommu.c
··· 1009 if (level == 1) 1010 return freelist; 1011 1012 - for (pte = page_address(pg); !first_pte_in_page(pte); pte++) { 1013 if (dma_pte_present(pte) && !dma_pte_superpage(pte)) 1014 freelist = dma_pte_list_pagetables(domain, level - 1, 1015 pte, freelist); 1016 - } 1017 1018 return freelist; 1019 } ··· 2237 bridge_devfn = dev_tmp->devfn; 2238 } 2239 spin_lock_irqsave(&device_domain_lock, flags); 2240 - info = dmar_search_domain_by_dev_info(segment, bus, devfn); 2241 if (info) { 2242 iommu = info->iommu; 2243 domain = info->domain;
··· 1009 if (level == 1) 1010 return freelist; 1011 1012 + pte = page_address(pg); 1013 + do { 1014 if (dma_pte_present(pte) && !dma_pte_superpage(pte)) 1015 freelist = dma_pte_list_pagetables(domain, level - 1, 1016 pte, freelist); 1017 + pte++; 1018 + } while (!first_pte_in_page(pte)); 1019 1020 return freelist; 1021 } ··· 2235 bridge_devfn = dev_tmp->devfn; 2236 } 2237 spin_lock_irqsave(&device_domain_lock, flags); 2238 + info = dmar_search_domain_by_dev_info(segment, 2239 + bridge_bus, 2240 + bridge_devfn); 2241 if (info) { 2242 iommu = info->iommu; 2243 domain = info->domain;