git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git]
/
arch
/
mips
/
mm
/
highmem.c
diff --git
a/arch/mips/mm/highmem.c
b/arch/mips/mm/highmem.c
index
1f7b37b
..
675502a
100644
(file)
--- a/
arch/mips/mm/highmem.c
+++ b/
arch/mips/mm/highmem.c
@@
-1,4
+1,3
@@
-#include <linux/config.h>
#include <linux/module.h>
#include <linux/highmem.h>
#include <asm/tlbflush.h>
#include <linux/module.h>
#include <linux/highmem.h>
#include <asm/tlbflush.h>
@@
-40,7
+39,7
@@
void *__kmap_atomic(struct page *page, enum km_type type)
unsigned long vaddr;
/* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */
unsigned long vaddr;
/* even !CONFIG_PREEMPT needs this, for in_atomic in do_page_fault */
-
inc_preempt_count
();
+
pagefault_disable
();
if (!PageHighMem(page))
return page_address(page);
if (!PageHighMem(page))
return page_address(page);
@@
-63,8
+62,7
@@
void __kunmap_atomic(void *kvaddr, enum km_type type)
enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id();
if (vaddr < FIXADDR_START) { // FIXME
enum fixed_addresses idx = type + KM_TYPE_NR*smp_processor_id();
if (vaddr < FIXADDR_START) { // FIXME
- dec_preempt_count();
- preempt_check_resched();
+ pagefault_enable();
return;
}
return;
}
@@
-79,10
+77,10
@@
void __kunmap_atomic(void *kvaddr, enum km_type type)
local_flush_tlb_one(vaddr);
#endif
local_flush_tlb_one(vaddr);
#endif
- dec_preempt_count();
- preempt_check_resched();
+ pagefault_enable();
}
}
+#ifndef CONFIG_LIMITED_DMA
/*
* This is the same as kmap_atomic() but can map memory that doesn't
* have a struct page associated with it.
/*
* This is the same as kmap_atomic() but can map memory that doesn't
* have a struct page associated with it.
@@
-92,7
+90,7
@@
void *kmap_atomic_pfn(unsigned long pfn, enum km_type type)
enum fixed_addresses idx;
unsigned long vaddr;
enum fixed_addresses idx;
unsigned long vaddr;
-
inc_preempt_count
();
+
pagefault_disable
();
idx = type + KM_TYPE_NR*smp_processor_id();
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
idx = type + KM_TYPE_NR*smp_processor_id();
vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx);
@@
-101,6
+99,7
@@
void *kmap_atomic_pfn(unsigned long pfn, enum km_type type)
return (void*) vaddr;
}
return (void*) vaddr;
}
+#endif /* CONFIG_LIMITED_DMA */
struct page *__kmap_atomic_to_page(void *ptr)
{
struct page *__kmap_atomic_to_page(void *ptr)
{