Commit 592ac93a authored by Randolph Chung's avatar Randolph Chung Committed by Kyle McMartin

[PARISC] Optimize TLB flush on SMP systems

Signed-off-by: default avatarRandolph Chung <tausq@debian.org>
Signed-off-by: default avatarKyle McMartin <kyle@parisc-linux.org>
parent e7b3ca08
...@@ -39,21 +39,19 @@ extern void flush_tlb_all_local(void *); ...@@ -39,21 +39,19 @@ extern void flush_tlb_all_local(void *);
* etc. do not do that). * etc. do not do that).
*/ */
static inline void flush_tlb_mm(struct mm_struct *mm) static inline void __flush_tlb_mm(void *mmv)
{ {
BUG_ON(mm == &init_mm); /* Should never happen */ struct mm_struct *mm = (struct mm_struct *)mmv;
if (mm == current->active_mm)
load_context(mm->context);
}
#ifdef CONFIG_SMP static inline void flush_tlb_mm(struct mm_struct *mm)
flush_tlb_all(); {
#else if (mm->context != 0)
if (mm) { free_sid(mm->context);
if (mm->context != 0) mm->context = alloc_sid();
free_sid(mm->context); on_each_cpu(__flush_tlb_mm, mm, 1, 1);
mm->context = alloc_sid();
if (mm == current->active_mm)
load_context(mm->context);
}
#endif
} }
extern __inline__ void flush_tlb_pgtables(struct mm_struct *mm, unsigned long start, unsigned long end) extern __inline__ void flush_tlb_pgtables(struct mm_struct *mm, unsigned long start, unsigned long end)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment