diff options
author | FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> | 2008-09-22 09:35:07 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-09-22 10:47:50 -0400 |
commit | d26dbc5cf94b0a28acc947285c3b54814a73cb2e (patch) | |
tree | ba6d44e5945b491166159fee791761ebe4b39134 | |
parent | 832a90c30485117d65180cc9a8d9869c1b158570 (diff) |
iommu: export iommu_area_reserve helper function
x86 has set_bit_string() that does the exact same thing that
set_bit_area() in lib/iommu-helper.c does.
This patch exports set_bit_area() in lib/iommu-helper.c as
iommu_area_reserve(), converts GART, Calgary, and AMD IOMMU to use it.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Acked-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | arch/x86/kernel/amd_iommu.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/pci-calgary_64.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/pci-gart_64.c | 2 | ||||
-rw-r--r-- | include/linux/iommu-helper.h | 1 | ||||
-rw-r--r-- | lib/iommu-helper.c | 5 |
5 files changed, 6 insertions, 6 deletions
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c index 6f7b97445738..70537d117a96 100644 --- a/arch/x86/kernel/amd_iommu.c +++ b/arch/x86/kernel/amd_iommu.c | |||
@@ -572,7 +572,7 @@ static void dma_ops_reserve_addresses(struct dma_ops_domain *dom, | |||
572 | if (start_page + pages > last_page) | 572 | if (start_page + pages > last_page) |
573 | pages = last_page - start_page; | 573 | pages = last_page - start_page; |
574 | 574 | ||
575 | set_bit_string(dom->bitmap, start_page, pages); | 575 | iommu_area_reserve(dom->bitmap, start_page, pages); |
576 | } | 576 | } |
577 | 577 | ||
578 | static void dma_ops_free_pagetable(struct dma_ops_domain *dma_dom) | 578 | static void dma_ops_free_pagetable(struct dma_ops_domain *dma_dom) |
diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c index fe7695e4caae..080d1d27f37a 100644 --- a/arch/x86/kernel/pci-calgary_64.c +++ b/arch/x86/kernel/pci-calgary_64.c | |||
@@ -261,7 +261,7 @@ static void iommu_range_reserve(struct iommu_table *tbl, | |||
261 | badbit, tbl, start_addr, npages); | 261 | badbit, tbl, start_addr, npages); |
262 | } | 262 | } |
263 | 263 | ||
264 | set_bit_string(tbl->it_map, index, npages); | 264 | iommu_area_reserve(tbl->it_map, index, npages); |
265 | 265 | ||
266 | spin_unlock_irqrestore(&tbl->it_lock, flags); | 266 | spin_unlock_irqrestore(&tbl->it_lock, flags); |
267 | } | 267 | } |
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c index 508ef470b27f..3dcb1ad86e38 100644 --- a/arch/x86/kernel/pci-gart_64.c +++ b/arch/x86/kernel/pci-gart_64.c | |||
@@ -827,7 +827,7 @@ void __init gart_iommu_init(void) | |||
827 | * Out of IOMMU space handling. | 827 | * Out of IOMMU space handling. |
828 | * Reserve some invalid pages at the beginning of the GART. | 828 | * Reserve some invalid pages at the beginning of the GART. |
829 | */ | 829 | */ |
830 | set_bit_string(iommu_gart_bitmap, 0, EMERGENCY_PAGES); | 830 | iommu_area_reserve(iommu_gart_bitmap, 0, EMERGENCY_PAGES); |
831 | 831 | ||
832 | agp_memory_reserved = iommu_size; | 832 | agp_memory_reserved = iommu_size; |
833 | printk(KERN_INFO | 833 | printk(KERN_INFO |
diff --git a/include/linux/iommu-helper.h b/include/linux/iommu-helper.h index 58f41107e4ae..786539e432d7 100644 --- a/include/linux/iommu-helper.h +++ b/include/linux/iommu-helper.h | |||
@@ -11,6 +11,7 @@ static inline unsigned long iommu_device_max_index(unsigned long size, | |||
11 | extern int iommu_is_span_boundary(unsigned int index, unsigned int nr, | 11 | extern int iommu_is_span_boundary(unsigned int index, unsigned int nr, |
12 | unsigned long shift, | 12 | unsigned long shift, |
13 | unsigned long boundary_size); | 13 | unsigned long boundary_size); |
14 | extern void iommu_area_reserve(unsigned long *map, unsigned long i, int len); | ||
14 | extern unsigned long iommu_area_alloc(unsigned long *map, unsigned long size, | 15 | extern unsigned long iommu_area_alloc(unsigned long *map, unsigned long size, |
15 | unsigned long start, unsigned int nr, | 16 | unsigned long start, unsigned int nr, |
16 | unsigned long shift, | 17 | unsigned long shift, |
diff --git a/lib/iommu-helper.c b/lib/iommu-helper.c index a3b8d4c3f77a..5d90074dca75 100644 --- a/lib/iommu-helper.c +++ b/lib/iommu-helper.c | |||
@@ -30,8 +30,7 @@ again: | |||
30 | return index; | 30 | return index; |
31 | } | 31 | } |
32 | 32 | ||
33 | static inline void set_bit_area(unsigned long *map, unsigned long i, | 33 | void iommu_area_reserve(unsigned long *map, unsigned long i, int len) |
34 | int len) | ||
35 | { | 34 | { |
36 | unsigned long end = i + len; | 35 | unsigned long end = i + len; |
37 | while (i < end) { | 36 | while (i < end) { |
@@ -64,7 +63,7 @@ again: | |||
64 | start = index + 1; | 63 | start = index + 1; |
65 | goto again; | 64 | goto again; |
66 | } | 65 | } |
67 | set_bit_area(map, index, nr); | 66 | iommu_area_reserve(map, index, nr); |
68 | } | 67 | } |
69 | return index; | 68 | return index; |
70 | } | 69 | } |