diff options
Diffstat (limited to 'include/asm-ppc/highmem.h')
-rw-r--r-- | include/asm-ppc/highmem.h | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/include/asm-ppc/highmem.h b/include/asm-ppc/highmem.h index 1d2c4ef81c22..f7b21ee302b4 100644 --- a/include/asm-ppc/highmem.h +++ b/include/asm-ppc/highmem.h | |||
@@ -79,7 +79,7 @@ static inline void *kmap_atomic(struct page *page, enum km_type type) | |||
79 | unsigned long vaddr; | 79 | unsigned long vaddr; |
80 | 80 | ||
81 | /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */ | 81 | /* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */ |
82 | inc_preempt_count(); | 82 | pagefault_disable(); |
83 | if (!PageHighMem(page)) | 83 | if (!PageHighMem(page)) |
84 | return page_address(page); | 84 | return page_address(page); |
85 | 85 | ||
@@ -101,8 +101,7 @@ static inline void kunmap_atomic(void *kvaddr, enum km_type type) | |||
101 | unsigned int idx = type + KM_TYPE_NR*smp_processor_id(); | 101 | unsigned int idx = type + KM_TYPE_NR*smp_processor_id(); |
102 | 102 | ||
103 | if (vaddr < KMAP_FIX_BEGIN) { // FIXME | 103 | if (vaddr < KMAP_FIX_BEGIN) { // FIXME |
104 | dec_preempt_count(); | 104 | pagefault_enable(); |
105 | preempt_check_resched(); | ||
106 | return; | 105 | return; |
107 | } | 106 | } |
108 | 107 | ||
@@ -115,8 +114,7 @@ static inline void kunmap_atomic(void *kvaddr, enum km_type type) | |||
115 | pte_clear(&init_mm, vaddr, kmap_pte+idx); | 114 | pte_clear(&init_mm, vaddr, kmap_pte+idx); |
116 | flush_tlb_page(NULL, vaddr); | 115 | flush_tlb_page(NULL, vaddr); |
117 | #endif | 116 | #endif |
118 | dec_preempt_count(); | 117 | pagefault_enable(); |
119 | preempt_check_resched(); | ||
120 | } | 118 | } |
121 | 119 | ||
122 | static inline struct page *kmap_atomic_to_page(void *ptr) | 120 | static inline struct page *kmap_atomic_to_page(void *ptr) |