diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-03-12 22:20:49 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-03-12 22:24:53 -0400 |
| commit | dd63fdcc63f0f853b116b52e56200a0e0227cf5f (patch) | |
| tree | 85cd311ae655787164c7c1247478a69bc251a147 | |
| parent | 12074fa1073013dd11f1cff41db018d5cff4ecd9 (diff) | |
x86: unify kmap_atomic_pfn() and iomap_atomic_prot_pfn(), fix
Impact: build fix
Move kmap_atomic_prot_pfn() to iomap_32.c. It is used on all 32-bit
kernels, while highmem_32.c is only built on highmem kernels.
( Note: the debug_kmap_atomic_prot() check is removed for now, that
problem is handled via another patch. )
Reported-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Akinobu Mita <akinobu.mita@gmail.com>
LKML-Reference: <20090311143317.GA22244@localhost.localdomain>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
| -rw-r--r-- | arch/x86/mm/highmem_32.c | 20 | ||||
| -rw-r--r-- | arch/x86/mm/iomap_32.c | 18 |
2 files changed, 19 insertions, 19 deletions
diff --git a/arch/x86/mm/highmem_32.c b/arch/x86/mm/highmem_32.c index f256e73542d7..522db5e3d0bf 100644 --- a/arch/x86/mm/highmem_32.c +++ b/arch/x86/mm/highmem_32.c | |||
| @@ -121,24 +121,8 @@ void kunmap_atomic(void *kvaddr, enum km_type type) | |||
| 121 | pagefault_enable(); | 121 | pagefault_enable(); |
| 122 | } | 122 | } |
| 123 | 123 | ||
| 124 | void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot) | 124 | /* |
| 125 | { | 125 | * This is the same as kmap_atomic() but can map memory that doesn't |
| 126 | enum fixed_addresses idx; | ||
| 127 | unsigned long vaddr; | ||
| 128 | |||
| 129 | pagefault_disable(); | ||
| 130 | |||
| 131 | debug_kmap_atomic_prot(type); | ||
| 132 | |||
| 133 | idx = type + KM_TYPE_NR * smp_processor_id(); | ||
| 134 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | ||
| 135 | set_pte(kmap_pte - idx, pfn_pte(pfn, prot)); | ||
| 136 | arch_flush_lazy_mmu_mode(); | ||
| 137 | |||
| 138 | return (void*) vaddr; | ||
| 139 | } | ||
| 140 | |||
| 141 | /* This is the same as kmap_atomic() but can map memory that doesn't | ||
| 142 | * have a struct page associated with it. | 126 | * have a struct page associated with it. |
| 143 | */ | 127 | */ |
| 144 | void *kmap_atomic_pfn(unsigned long pfn, enum km_type type) | 128 | void *kmap_atomic_pfn(unsigned long pfn, enum km_type type) |
diff --git a/arch/x86/mm/iomap_32.c b/arch/x86/mm/iomap_32.c index 592984e5496b..6e60ba698cee 100644 --- a/arch/x86/mm/iomap_32.c +++ b/arch/x86/mm/iomap_32.c | |||
| @@ -32,7 +32,23 @@ int is_io_mapping_possible(resource_size_t base, unsigned long size) | |||
| 32 | } | 32 | } |
| 33 | EXPORT_SYMBOL_GPL(is_io_mapping_possible); | 33 | EXPORT_SYMBOL_GPL(is_io_mapping_possible); |
| 34 | 34 | ||
| 35 | /* Map 'pfn' using fixed map 'type' and protections 'prot' | 35 | void *kmap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot) |
| 36 | { | ||
| 37 | enum fixed_addresses idx; | ||
| 38 | unsigned long vaddr; | ||
| 39 | |||
| 40 | pagefault_disable(); | ||
| 41 | |||
| 42 | idx = type + KM_TYPE_NR * smp_processor_id(); | ||
| 43 | vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); | ||
| 44 | set_pte(kmap_pte - idx, pfn_pte(pfn, prot)); | ||
| 45 | arch_flush_lazy_mmu_mode(); | ||
| 46 | |||
| 47 | return (void *)vaddr; | ||
| 48 | } | ||
| 49 | |||
| 50 | /* | ||
| 51 | * Map 'pfn' using fixed map 'type' and protections 'prot' | ||
| 36 | */ | 52 | */ |
| 37 | void * | 53 | void * |
| 38 | iomap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot) | 54 | iomap_atomic_prot_pfn(unsigned long pfn, enum km_type type, pgprot_t prot) |
