Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 154775
b: refs/heads/master
c: 0ab36de
h: refs/heads/master
i:
  154773: fcaede0
  154771: 8b6abdf
  154767: 491d4c7
v: v3
  • Loading branch information
David Woodhouse authored and David Woodhouse committed Jun 29, 2009
1 parent cc20efc commit 93e197f
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 61df744314079e8cb8cdec75f517cf0e704e41ef
refs/heads/master: 0ab36de274ab094c3992b50c9c48c5c89072ec94
18 changes: 8 additions & 10 deletions trunk/drivers/pci/intel-iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -2477,14 +2477,12 @@ static dma_addr_t __intel_map_single(struct device *hwdev, phys_addr_t paddr,
return 0;

iommu = domain_get_iommu(domain);
size = aligned_size((u64)paddr, size);
size = aligned_size(paddr, size) >> VTD_PAGE_SHIFT;

iova = __intel_alloc_iova(hwdev, domain, size, pdev->dma_mask);
iova = __intel_alloc_iova(hwdev, domain, size << VTD_PAGE_SHIFT, pdev->dma_mask);
if (!iova)
goto error;

start_paddr = (phys_addr_t)iova->pfn_lo << PAGE_SHIFT;

/*
* Check if DMAR supports zero-length reads on write only
* mappings..
Expand All @@ -2500,20 +2498,20 @@ static dma_addr_t __intel_map_single(struct device *hwdev, phys_addr_t paddr,
* might have two guest_addr mapping to the same host paddr, but this
* is not a big problem
*/
ret = domain_page_mapping(domain, start_paddr,
((u64)paddr) & PHYSICAL_PAGE_MASK,
size, prot);
ret = domain_pfn_mapping(domain, mm_to_dma_pfn(iova->pfn_lo),
paddr >> VTD_PAGE_SHIFT, size, prot);
if (ret)
goto error;

start_paddr = (phys_addr_t)iova->pfn_lo << PAGE_SHIFT;

/* it's a non-present to present mapping. Only flush if caching mode */
if (cap_caching_mode(iommu->cap))
iommu_flush_iotlb_psi(iommu, 0, start_paddr,
size >> VTD_PAGE_SHIFT);
iommu_flush_iotlb_psi(iommu, 0, start_paddr, size);
else
iommu_flush_write_buffer(iommu);

return start_paddr + ((u64)paddr & (~PAGE_MASK));
return start_paddr + (paddr & (~PAGE_MASK));

error:
if (iova)
Expand Down

0 comments on commit 93e197f

Please sign in to comment.