From cfd24ec89371d8f57e5b2ddcb00866f5b58516e1 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Wed, 6 Dec 2006 20:32:21 -0800 Subject: [PATCH] --- yaml --- r: 42661 b: refs/heads/master c: ad76fb6b5a5183255279e0ab5260715481770678 h: refs/heads/master i: 42659: 46e101e022b05e663a0c65ec4525a505d7abce4b v: v3 --- [refs] | 2 +- trunk/include/asm-mips/highmem.h | 10 ++++++++-- trunk/include/linux/highmem.h | 8 +++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 4beef10cdcc3..5281c0564f4a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a866374aecc90c7d90619727ccd851ac096b2fc7 +refs/heads/master: ad76fb6b5a5183255279e0ab5260715481770678 diff --git a/trunk/include/asm-mips/highmem.h b/trunk/include/asm-mips/highmem.h index c976bfaaba83..f8c8182f7f2e 100644 --- a/trunk/include/asm-mips/highmem.h +++ b/trunk/include/asm-mips/highmem.h @@ -21,6 +21,7 @@ #include #include +#include #include /* undef for production */ @@ -70,11 +71,16 @@ static inline void *kmap(struct page *page) static inline void *kmap_atomic(struct page *page, enum km_type type) { + pagefault_disable(); return page_address(page); } -static inline void kunmap_atomic(void *kvaddr, enum km_type type) { } -#define kmap_atomic_pfn(pfn, idx) page_address(pfn_to_page(pfn)) +static inline void kunmap_atomic(void *kvaddr, enum km_type type) +{ + pagefault_enable(); +} + +#define kmap_atomic_pfn(pfn, idx) kmap_atomic(pfn_to_page(pfn), (idx)) #define kmap_atomic_to_page(ptr) virt_to_page(ptr) diff --git a/trunk/include/linux/highmem.h b/trunk/include/linux/highmem.h index fd7d12daa94f..3d8768b619e9 100644 --- a/trunk/include/linux/highmem.h +++ b/trunk/include/linux/highmem.h @@ -3,6 +3,7 @@ #include #include +#include #include @@ -41,9 +42,10 @@ static inline void *kmap(struct page *page) #define kunmap(page) do { (void) (page); } while (0) -#define kmap_atomic(page, idx) page_address(page) -#define kunmap_atomic(addr, idx) do { } while (0) -#define kmap_atomic_pfn(pfn, idx) page_address(pfn_to_page(pfn)) +#define kmap_atomic(page, idx) \ + ({ pagefault_disable(); page_address(page); }) +#define kunmap_atomic(addr, idx) do { pagefault_enable(); } while (0) +#define kmap_atomic_pfn(pfn, idx) kmap_atomic(pfn_to_page(pfn), (idx)) #define kmap_atomic_to_page(ptr) virt_to_page(ptr) #endif