diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2008-10-16 01:02:07 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-16 14:21:33 -0400 |
commit | bdab0ba3d9ad8de257ee6236daf314723748fde6 (patch) | |
tree | 13dfbdff1fe33cca81ace5c27431112e0cb4087f | |
parent | b418da16dd44810e5d5a22bba377cca80512a524 (diff) |
x86: rename iommu_num_pages function to iommu_nr_pages
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 <joerg.roedel@amd.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Muli Ben-Yehuda <muli@il.ibm.com>
Cc: Dave Airlie <airlied@linux.ie>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | arch/x86/kernel/amd_iommu.c | 8 | ||||
-rw-r--r-- | arch/x86/kernel/pci-dma.c | 4 | ||||
-rw-r--r-- | arch/x86/kernel/pci-gart_64.c | 8 | ||||
-rw-r--r-- | include/asm-x86/iommu.h | 2 |
4 files changed, 11 insertions, 11 deletions
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c index 34e4d112b1ef..10646acba9be 100644 --- a/arch/x86/kernel/amd_iommu.c +++ b/arch/x86/kernel/amd_iommu.c | |||
@@ -295,7 +295,7 @@ static int iommu_flush_pages(struct amd_iommu *iommu, u16 domid, | |||
295 | u64 address, size_t size) | 295 | u64 address, size_t size) |
296 | { | 296 | { |
297 | int s = 0; | 297 | int s = 0; |
298 | unsigned pages = iommu_num_pages(address, size); | 298 | unsigned pages = iommu_nr_pages(address, size); |
299 | 299 | ||
300 | address &= PAGE_MASK; | 300 | address &= PAGE_MASK; |
301 | 301 | ||
@@ -679,7 +679,7 @@ static struct dma_ops_domain *dma_ops_domain_alloc(struct amd_iommu *iommu, | |||
679 | if (iommu->exclusion_start && | 679 | if (iommu->exclusion_start && |
680 | iommu->exclusion_start < dma_dom->aperture_size) { | 680 | iommu->exclusion_start < dma_dom->aperture_size) { |
681 | unsigned long startpage = iommu->exclusion_start >> PAGE_SHIFT; | 681 | unsigned long startpage = iommu->exclusion_start >> PAGE_SHIFT; |
682 | int pages = iommu_num_pages(iommu->exclusion_start, | 682 | int pages = iommu_nr_pages(iommu->exclusion_start, |
683 | iommu->exclusion_length); | 683 | iommu->exclusion_length); |
684 | dma_ops_reserve_addresses(dma_dom, startpage, pages); | 684 | dma_ops_reserve_addresses(dma_dom, startpage, pages); |
685 | } | 685 | } |
@@ -935,7 +935,7 @@ static dma_addr_t __map_single(struct device *dev, | |||
935 | unsigned long align_mask = 0; | 935 | unsigned long align_mask = 0; |
936 | int i; | 936 | int i; |
937 | 937 | ||
938 | pages = iommu_num_pages(paddr, size); | 938 | pages = iommu_nr_pages(paddr, size); |
939 | paddr &= PAGE_MASK; | 939 | paddr &= PAGE_MASK; |
940 | 940 | ||
941 | if (align) | 941 | if (align) |
@@ -980,7 +980,7 @@ static void __unmap_single(struct amd_iommu *iommu, | |||
980 | if ((dma_addr == 0) || (dma_addr + size > dma_dom->aperture_size)) | 980 | if ((dma_addr == 0) || (dma_addr + size > dma_dom->aperture_size)) |
981 | return; | 981 | return; |
982 | 982 | ||
983 | pages = iommu_num_pages(dma_addr, size); | 983 | pages = iommu_nr_pages(dma_addr, size); |
984 | dma_addr &= PAGE_MASK; | 984 | dma_addr &= PAGE_MASK; |
985 | start = dma_addr; | 985 | start = dma_addr; |
986 | 986 | ||
diff --git a/arch/x86/kernel/pci-dma.c b/arch/x86/kernel/pci-dma.c index 0a3824e837b4..192624820217 100644 --- a/arch/x86/kernel/pci-dma.c +++ b/arch/x86/kernel/pci-dma.c | |||
@@ -125,13 +125,13 @@ void __init pci_iommu_alloc(void) | |||
125 | pci_swiotlb_init(); | 125 | pci_swiotlb_init(); |
126 | } | 126 | } |
127 | 127 | ||
128 | unsigned long iommu_num_pages(unsigned long addr, unsigned long len) | 128 | unsigned long iommu_nr_pages(unsigned long addr, unsigned long len) |
129 | { | 129 | { |
130 | unsigned long size = roundup((addr & ~PAGE_MASK) + len, PAGE_SIZE); | 130 | unsigned long size = roundup((addr & ~PAGE_MASK) + len, PAGE_SIZE); |
131 | 131 | ||
132 | return size >> PAGE_SHIFT; | 132 | return size >> PAGE_SHIFT; |
133 | } | 133 | } |
134 | EXPORT_SYMBOL(iommu_num_pages); | 134 | EXPORT_SYMBOL(iommu_nr_pages); |
135 | #endif | 135 | #endif |
136 | 136 | ||
137 | void *dma_generic_alloc_coherent(struct device *dev, size_t size, | 137 | void *dma_generic_alloc_coherent(struct device *dev, size_t size, |
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c index 145f1c83369f..14f1b41348fd 100644 --- a/arch/x86/kernel/pci-gart_64.c +++ b/arch/x86/kernel/pci-gart_64.c | |||
@@ -231,7 +231,7 @@ nonforced_iommu(struct device *dev, unsigned long addr, size_t size) | |||
231 | static dma_addr_t dma_map_area(struct device *dev, dma_addr_t phys_mem, | 231 | static dma_addr_t dma_map_area(struct device *dev, dma_addr_t phys_mem, |
232 | size_t size, int dir, unsigned long align_mask) | 232 | size_t size, int dir, unsigned long align_mask) |
233 | { | 233 | { |
234 | unsigned long npages = iommu_num_pages(phys_mem, size); | 234 | unsigned long npages = iommu_nr_pages(phys_mem, size); |
235 | unsigned long iommu_page = alloc_iommu(dev, npages, align_mask); | 235 | unsigned long iommu_page = alloc_iommu(dev, npages, align_mask); |
236 | int i; | 236 | int i; |
237 | 237 | ||
@@ -285,7 +285,7 @@ static void gart_unmap_single(struct device *dev, dma_addr_t dma_addr, | |||
285 | return; | 285 | return; |
286 | 286 | ||
287 | iommu_page = (dma_addr - iommu_bus_base)>>PAGE_SHIFT; | 287 | iommu_page = (dma_addr - iommu_bus_base)>>PAGE_SHIFT; |
288 | npages = iommu_num_pages(dma_addr, size); | 288 | npages = iommu_nr_pages(dma_addr, size); |
289 | for (i = 0; i < npages; i++) { | 289 | for (i = 0; i < npages; i++) { |
290 | iommu_gatt_base[iommu_page + i] = gart_unmapped_entry; | 290 | iommu_gatt_base[iommu_page + i] = gart_unmapped_entry; |
291 | CLEAR_LEAK(iommu_page + i); | 291 | CLEAR_LEAK(iommu_page + i); |
@@ -368,7 +368,7 @@ static int __dma_map_cont(struct device *dev, struct scatterlist *start, | |||
368 | } | 368 | } |
369 | 369 | ||
370 | addr = phys_addr; | 370 | addr = phys_addr; |
371 | pages = iommu_num_pages(s->offset, s->length); | 371 | pages = iommu_nr_pages(s->offset, s->length); |
372 | while (pages--) { | 372 | while (pages--) { |
373 | iommu_gatt_base[iommu_page] = GPTE_ENCODE(addr); | 373 | iommu_gatt_base[iommu_page] = GPTE_ENCODE(addr); |
374 | SET_LEAK(iommu_page); | 374 | SET_LEAK(iommu_page); |
@@ -451,7 +451,7 @@ gart_map_sg(struct device *dev, struct scatterlist *sg, int nents, int dir) | |||
451 | 451 | ||
452 | seg_size += s->length; | 452 | seg_size += s->length; |
453 | need = nextneed; | 453 | need = nextneed; |
454 | pages += iommu_num_pages(s->offset, s->length); | 454 | pages += iommu_nr_pages(s->offset, s->length); |
455 | ps = s; | 455 | ps = s; |
456 | } | 456 | } |
457 | if (dma_map_cont(dev, start_sg, i - start, sgmap, pages, need) < 0) | 457 | if (dma_map_cont(dev, start_sg, i - start, sgmap, pages, need) < 0) |
diff --git a/include/asm-x86/iommu.h b/include/asm-x86/iommu.h index 546ad3110fea..961e746da977 100644 --- a/include/asm-x86/iommu.h +++ b/include/asm-x86/iommu.h | |||
@@ -8,7 +8,7 @@ extern int force_iommu, no_iommu; | |||
8 | extern int iommu_detected; | 8 | extern int iommu_detected; |
9 | extern int dmar_disabled; | 9 | extern int dmar_disabled; |
10 | 10 | ||
11 | extern unsigned long iommu_num_pages(unsigned long addr, unsigned long len); | 11 | extern unsigned long iommu_nr_pages(unsigned long addr, unsigned long len); |
12 | 12 | ||
13 | #ifdef CONFIG_GART_IOMMU | 13 | #ifdef CONFIG_GART_IOMMU |
14 | extern int gart_iommu_aperture; | 14 | extern int gart_iommu_aperture; |