Skip to content

Commit

Permalink
intel-iommu: Clean up iommu_domain_identity_map()
Browse files Browse the repository at this point in the history
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
  • Loading branch information
David Woodhouse authored and David Woodhouse committed Jun 29, 2009
1 parent 1a4a455 commit c5395d5
Showing 1 changed file with 9 additions and 15 deletions.
24 changes: 9 additions & 15 deletions drivers/pci/intel-iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -1861,31 +1861,25 @@ static int iommu_domain_identity_map(struct dmar_domain *domain,
unsigned long long start,
unsigned long long end)
{
unsigned long size;
unsigned long long base;
unsigned long first_vpfn = start >> VTD_PAGE_SHIFT;
unsigned long last_vpfn = end >> VTD_PAGE_SHIFT;

/* The address might not be aligned */
base = start & PAGE_MASK;
size = end - base;
size = PAGE_ALIGN(size);
if (!reserve_iova(&domain->iovad, IOVA_PFN(base),
IOVA_PFN(base + size) - 1)) {
if (!reserve_iova(&domain->iovad, dma_to_mm_pfn(first_vpfn),
dma_to_mm_pfn(last_vpfn))) {
printk(KERN_ERR "IOMMU: reserve iova failed\n");
return -ENOMEM;
}

pr_debug("Mapping reserved region %lx@%llx for domain %d\n",
size, base, domain->id);
pr_debug("Mapping reserved region %llx-%llx for domain %d\n",
start, end, domain->id);
/*
* RMRR range might have overlap with physical memory range,
* clear it first
*/
dma_pte_clear_range(domain, base >> VTD_PAGE_SHIFT,
(base + size - 1) >> VTD_PAGE_SHIFT);
dma_pte_clear_range(domain, first_vpfn, last_vpfn);

return domain_pfn_mapping(domain, base >> VTD_PAGE_SHIFT,
base >> VTD_PAGE_SHIFT,
size >> VTD_PAGE_SHIFT,
return domain_pfn_mapping(domain, first_vpfn, first_vpfn,
last_vpfn - first_vpfn + 1,
DMA_PTE_READ|DMA_PTE_WRITE);
}

Expand Down

0 comments on commit c5395d5

Please sign in to comment.