Merge git://git.infradead.org/iommu-2.6 into iommu/fixes
This commit is contained in:
commit
3426cb3d35
@ -152,7 +152,8 @@ dmar_alloc_pci_notify_info(struct pci_dev *dev, unsigned long event)
|
|||||||
info->seg = pci_domain_nr(dev->bus);
|
info->seg = pci_domain_nr(dev->bus);
|
||||||
info->level = level;
|
info->level = level;
|
||||||
if (event == BUS_NOTIFY_ADD_DEVICE) {
|
if (event == BUS_NOTIFY_ADD_DEVICE) {
|
||||||
for (tmp = dev, level--; tmp; tmp = tmp->bus->self) {
|
for (tmp = dev; tmp; tmp = tmp->bus->self) {
|
||||||
|
level--;
|
||||||
info->path[level].device = PCI_SLOT(tmp->devfn);
|
info->path[level].device = PCI_SLOT(tmp->devfn);
|
||||||
info->path[level].function = PCI_FUNC(tmp->devfn);
|
info->path[level].function = PCI_FUNC(tmp->devfn);
|
||||||
if (pci_is_root_bus(tmp->bus))
|
if (pci_is_root_bus(tmp->bus))
|
||||||
|
@ -1009,11 +1009,13 @@ static struct page *dma_pte_list_pagetables(struct dmar_domain *domain,
|
|||||||
if (level == 1)
|
if (level == 1)
|
||||||
return freelist;
|
return freelist;
|
||||||
|
|
||||||
for (pte = page_address(pg); !first_pte_in_page(pte); pte++) {
|
pte = page_address(pg);
|
||||||
|
do {
|
||||||
if (dma_pte_present(pte) && !dma_pte_superpage(pte))
|
if (dma_pte_present(pte) && !dma_pte_superpage(pte))
|
||||||
freelist = dma_pte_list_pagetables(domain, level - 1,
|
freelist = dma_pte_list_pagetables(domain, level - 1,
|
||||||
pte, freelist);
|
pte, freelist);
|
||||||
}
|
pte++;
|
||||||
|
} while (!first_pte_in_page(pte));
|
||||||
|
|
||||||
return freelist;
|
return freelist;
|
||||||
}
|
}
|
||||||
@ -2235,7 +2237,9 @@ static struct dmar_domain *get_domain_for_dev(struct device *dev, int gaw)
|
|||||||
bridge_devfn = dev_tmp->devfn;
|
bridge_devfn = dev_tmp->devfn;
|
||||||
}
|
}
|
||||||
spin_lock_irqsave(&device_domain_lock, flags);
|
spin_lock_irqsave(&device_domain_lock, flags);
|
||||||
info = dmar_search_domain_by_dev_info(segment, bus, devfn);
|
info = dmar_search_domain_by_dev_info(segment,
|
||||||
|
bridge_bus,
|
||||||
|
bridge_devfn);
|
||||||
if (info) {
|
if (info) {
|
||||||
iommu = info->iommu;
|
iommu = info->iommu;
|
||||||
domain = info->domain;
|
domain = info->domain;
|
||||||
|
Loading…
Reference in New Issue
Block a user