From: Joerg Roedel This series of patches re-introduces the iommu_num_pages function so that it can be used by each architecture specific IOMMU implementations. The series also changes IOMMU implementations for X86, Alpha, PowerPC and UltraSparc. The other implementations are not yet changed because the modifications required are not obvious and I can't test them on real hardware. This patch: This is a preparation patch for introducing a generic iommu_num_pages function. Signed-off-by: Joerg Roedel Cc: "David S. Miller" Cc: Richard Henderson Cc: Ivan Kokshaysky Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Ingo Molnar Cc: Thomas Gleixner Cc: FUJITA Tomonori Cc: Muli Ben-Yehuda Cc: Dave Airlie Signed-off-by: Andrew Morton --- arch/x86/kernel/amd_iommu.c | 8 ++++---- arch/x86/kernel/pci-dma.c | 4 ++-- arch/x86/kernel/pci-gart_64.c | 8 ++++---- include/asm-x86/iommu.h | 2 +- 4 files changed, 11 insertions(+), 11 deletions(-) diff -puN arch/x86/kernel/amd_iommu.c~x86-rename-iommu_num_pages-function-to-iommu_nr_pages arch/x86/kernel/amd_iommu.c --- a/arch/x86/kernel/amd_iommu.c~x86-rename-iommu_num_pages-function-to-iommu_nr_pages +++ a/arch/x86/kernel/amd_iommu.c @@ -185,7 +185,7 @@ static int iommu_flush_pages(struct amd_ u64 address, size_t size) { int s = 0; - unsigned pages = iommu_num_pages(address, size); + unsigned pages = iommu_nr_pages(address, size); address &= PAGE_MASK; @@ -557,7 +557,7 @@ static struct dma_ops_domain *dma_ops_do if (iommu->exclusion_start && iommu->exclusion_start < dma_dom->aperture_size) { unsigned long startpage = iommu->exclusion_start >> PAGE_SHIFT; - int pages = iommu_num_pages(iommu->exclusion_start, + int pages = iommu_nr_pages(iommu->exclusion_start, iommu->exclusion_length); dma_ops_reserve_addresses(dma_dom, startpage, pages); } @@ -767,7 +767,7 @@ static dma_addr_t __map_single(struct de unsigned int pages; int i; - pages = iommu_num_pages(paddr, size); + pages = iommu_nr_pages(paddr, size); paddr &= PAGE_MASK; address = dma_ops_alloc_addresses(dev, dma_dom, pages); @@ -802,7 +802,7 @@ static void __unmap_single(struct amd_io if ((dma_addr == 0) || (dma_addr + size > dma_dom->aperture_size)) return; - pages = iommu_num_pages(dma_addr, size); + pages = iommu_nr_pages(dma_addr, size); dma_addr &= PAGE_MASK; start = dma_addr; diff -puN arch/x86/kernel/pci-dma.c~x86-rename-iommu_num_pages-function-to-iommu_nr_pages arch/x86/kernel/pci-dma.c --- a/arch/x86/kernel/pci-dma.c~x86-rename-iommu_num_pages-function-to-iommu_nr_pages +++ a/arch/x86/kernel/pci-dma.c @@ -125,13 +125,13 @@ void __init pci_iommu_alloc(void) pci_swiotlb_init(); } -unsigned long iommu_num_pages(unsigned long addr, unsigned long len) +unsigned long iommu_nr_pages(unsigned long addr, unsigned long len) { unsigned long size = roundup((addr & ~PAGE_MASK) + len, PAGE_SIZE); return size >> PAGE_SHIFT; } -EXPORT_SYMBOL(iommu_num_pages); +EXPORT_SYMBOL(iommu_nr_pages); #endif /* diff -puN arch/x86/kernel/pci-gart_64.c~x86-rename-iommu_num_pages-function-to-iommu_nr_pages arch/x86/kernel/pci-gart_64.c --- a/arch/x86/kernel/pci-gart_64.c~x86-rename-iommu_num_pages-function-to-iommu_nr_pages +++ a/arch/x86/kernel/pci-gart_64.c @@ -240,7 +240,7 @@ nonforced_iommu(struct device *dev, unsi static dma_addr_t dma_map_area(struct device *dev, dma_addr_t phys_mem, size_t size, int dir, unsigned long align_mask) { - unsigned long npages = iommu_num_pages(phys_mem, size); + unsigned long npages = iommu_nr_pages(phys_mem, size); unsigned long iommu_page = alloc_iommu(dev, npages, align_mask); int i; @@ -294,7 +294,7 @@ static void gart_unmap_single(struct dev return; iommu_page = (dma_addr - iommu_bus_base)>>PAGE_SHIFT; - npages = iommu_num_pages(dma_addr, size); + npages = iommu_nr_pages(dma_addr, size); for (i = 0; i < npages; i++) { iommu_gatt_base[iommu_page + i] = gart_unmapped_entry; CLEAR_LEAK(iommu_page + i); @@ -377,7 +377,7 @@ static int __dma_map_cont(struct device } addr = phys_addr; - pages = iommu_num_pages(s->offset, s->length); + pages = iommu_nr_pages(s->offset, s->length); while (pages--) { iommu_gatt_base[iommu_page] = GPTE_ENCODE(addr); SET_LEAK(iommu_page); @@ -460,7 +460,7 @@ gart_map_sg(struct device *dev, struct s seg_size += s->length; need = nextneed; - pages += iommu_num_pages(s->offset, s->length); + pages += iommu_nr_pages(s->offset, s->length); ps = s; } if (dma_map_cont(dev, start_sg, i - start, sgmap, pages, need) < 0) diff -puN include/asm-x86/iommu.h~x86-rename-iommu_num_pages-function-to-iommu_nr_pages include/asm-x86/iommu.h --- a/include/asm-x86/iommu.h~x86-rename-iommu_num_pages-function-to-iommu_nr_pages +++ a/include/asm-x86/iommu.h @@ -7,7 +7,7 @@ extern struct dma_mapping_ops nommu_dma_ extern int force_iommu, no_iommu; extern int iommu_detected; -extern unsigned long iommu_num_pages(unsigned long addr, unsigned long len); +extern unsigned long iommu_nr_pages(unsigned long addr, unsigned long len); #ifdef CONFIG_GART_IOMMU extern int gart_iommu_aperture; _