提交 036b4c50 编写于 作者: J Joerg Roedel 提交者: Linus Torvalds

x86: convert Calgary IOMMU driver to generic iommu_num_pages function

Signed-off-by: NJoerg Roedel <joerg.roedel@amd.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Acked-by: NMuli Ben-Yehuda <muli@il.ibm.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 e3c449f5
...@@ -217,16 +217,6 @@ static inline unsigned long verify_bit_range(unsigned long* bitmap, ...@@ -217,16 +217,6 @@ static inline unsigned long verify_bit_range(unsigned long* bitmap,
#endif /* CONFIG_IOMMU_DEBUG */ #endif /* CONFIG_IOMMU_DEBUG */
static inline unsigned int num_dma_pages(unsigned long dma, unsigned int dmalen)
{
unsigned int npages;
npages = PAGE_ALIGN(dma + dmalen) - (dma & PAGE_MASK);
npages >>= PAGE_SHIFT;
return npages;
}
static inline int translation_enabled(struct iommu_table *tbl) static inline int translation_enabled(struct iommu_table *tbl)
{ {
/* only PHBs with translation enabled have an IOMMU table */ /* only PHBs with translation enabled have an IOMMU table */
...@@ -408,7 +398,7 @@ static void calgary_unmap_sg(struct device *dev, ...@@ -408,7 +398,7 @@ static void calgary_unmap_sg(struct device *dev,
if (dmalen == 0) if (dmalen == 0)
break; break;
npages = num_dma_pages(dma, dmalen); npages = iommu_num_pages(dma, dmalen, PAGE_SIZE);
iommu_free(tbl, dma, npages); iommu_free(tbl, dma, npages);
} }
} }
...@@ -427,7 +417,7 @@ static int calgary_map_sg(struct device *dev, struct scatterlist *sg, ...@@ -427,7 +417,7 @@ static int calgary_map_sg(struct device *dev, struct scatterlist *sg,
BUG_ON(!sg_page(s)); BUG_ON(!sg_page(s));
vaddr = (unsigned long) sg_virt(s); vaddr = (unsigned long) sg_virt(s);
npages = num_dma_pages(vaddr, s->length); npages = iommu_num_pages(vaddr, s->length, PAGE_SIZE);
entry = iommu_range_alloc(dev, tbl, npages); entry = iommu_range_alloc(dev, tbl, npages);
if (entry == bad_dma_address) { if (entry == bad_dma_address) {
...@@ -464,7 +454,7 @@ static dma_addr_t calgary_map_single(struct device *dev, phys_addr_t paddr, ...@@ -464,7 +454,7 @@ static dma_addr_t calgary_map_single(struct device *dev, phys_addr_t paddr,
struct iommu_table *tbl = find_iommu_table(dev); struct iommu_table *tbl = find_iommu_table(dev);
uaddr = (unsigned long)vaddr; uaddr = (unsigned long)vaddr;
npages = num_dma_pages(uaddr, size); npages = iommu_num_pages(uaddr, size, PAGE_SIZE);
return iommu_alloc(dev, tbl, vaddr, npages, direction); return iommu_alloc(dev, tbl, vaddr, npages, direction);
} }
...@@ -475,7 +465,7 @@ static void calgary_unmap_single(struct device *dev, dma_addr_t dma_handle, ...@@ -475,7 +465,7 @@ static void calgary_unmap_single(struct device *dev, dma_addr_t dma_handle,
struct iommu_table *tbl = find_iommu_table(dev); struct iommu_table *tbl = find_iommu_table(dev);
unsigned int npages; unsigned int npages;
npages = num_dma_pages(dma_handle, size); npages = iommu_num_pages(dma_handle, size, PAGE_SIZE);
iommu_free(tbl, dma_handle, npages); iommu_free(tbl, dma_handle, npages);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册