diff options
Diffstat (limited to 'arch/sparc64/mm/tlb.c')
| -rw-r--r-- | arch/sparc64/mm/tlb.c | 5 |
1 files changed, 5 insertions, 0 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 | ||
| 43 | void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t orig) | 48 | void tlb_batch_add(struct mm_struct *mm, unsigned long vaddr, pte_t *ptep, pte_t orig) |
