aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-05-01 11:12:39 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-05-01 11:12:39 -0400
commit0d262424b07582a3aa3afa85af645bd436a94a39 (patch)
tree4ec3c7034bb244515904c6866642fdc9a9a4b39a
parent9f29333dae3488542b1344871e8ecb84084ad80e (diff)
parentc9f2946fbec88d4baa3a6d47eb3a8e6b08b05cd9 (diff)
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6: [SPARC64]: Disable preemption during flush_tlb_pending(). [SPARC64]: Kill __flush_tlb_page() prototype.
-rw-r--r--arch/sparc64/mm/tlb.c5
-rw-r--r--include/asm-sparc64/tlbflush.h2
2 files changed, 5 insertions, 2 deletions
diff --git a/arch/sparc64/mm/tlb.c b/arch/sparc64/mm/tlb.c
index a079cf42505e..3f10fc921b00 100644
--- a/arch/sparc64/mm/tlb.c
+++ b/arch/sparc64/mm/tlb.c
@@ -8,6 +8,7 @@
8#include <linux/percpu.h> 8#include <linux/percpu.h>
9#include <linux/mm.h> 9#include <linux/mm.h>
10#include <linux/swap.h> 10#include <linux/swap.h>
11#include <linux/preempt.h>
11 12
12#include <asm/pgtable.h> 13#include <asm/pgtable.h>
13#include <asm/pgalloc.h> 14#include <asm/pgalloc.h>
@@ -24,6 +25,8 @@ void flush_tlb_pending(void)
24{ 25{
25 struct mmu_gather *mp = &__get_cpu_var(mmu_gathers); 26 struct mmu_gather *mp = &__get_cpu_var(mmu_gathers);
26 27
28 preempt_disable();
29
27 if (mp->tlb_nr) { 30 if (mp->tlb_nr) {
28 flush_tsb_user(mp); 31 flush_tsb_user(mp);
29 32
@@ -38,6 +41,8 @@ void flush_tlb_pending(void)
38 } 41 }
39 mp->tlb_nr = 0; 42 mp->tlb_nr = 0;
40 } 43 }
44
45 preempt_enable();
41} 46}
42 47
43void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t orig) 48void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t orig)
diff --git a/include/asm-sparc64/tlbflush.h b/include/asm-sparc64/tlbflush.h
index 9ad5d9c51d42..e3a7c453b500 100644
--- a/include/asm-sparc64/tlbflush.h
+++ b/include/asm-sparc64/tlbflush.h
@@ -22,8 +22,6 @@ extern void flush_tlb_pending(void);
22/* Local cpu only. */ 22/* Local cpu only. */
23extern void __flush_tlb_all(void); 23extern void __flush_tlb_all(void);
24 24
25extern void __flush_tlb_page(unsigned long context, unsigned long page, unsigned long r);
26
27extern void __flush_tlb_kernel_range(unsigned long start, unsigned long end); 25extern void __flush_tlb_kernel_range(unsigned long start, unsigned long end);
28 26
29#ifndef CONFIG_SMP 27#ifndef CONFIG_SMP