diff options
author | Jack Steiner <steiner@sgi.com> | 2007-05-08 17:50:43 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2007-05-08 17:50:43 -0400 |
commit | 3be44b9cc33d26930cb3bb014f35f582c6522481 (patch) | |
tree | 09225c5f0fb4c6caa81bbdff216ec83a093e4d12 /include | |
parent | 8737d59579c5e61ea3d5da4bd63303159fd1cf7e (diff) |
[IA64] Optional method to purge the TLB on SN systems
This patch adds an optional method for purging the TLB on SN IA64 systems.
The change should not affect any non-SN system.
Signed-off-by: Jack Steiner <steiner@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-ia64/hw_irq.h | 1 | ||||
-rw-r--r-- | include/asm-ia64/tlbflush.h | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/asm-ia64/hw_irq.h b/include/asm-ia64/hw_irq.h index 27f9df6b9145..c054d7a9aaa7 100644 --- a/include/asm-ia64/hw_irq.h +++ b/include/asm-ia64/hw_irq.h | |||
@@ -66,6 +66,7 @@ extern int ia64_last_device_vector; | |||
66 | #define IA64_PERFMON_VECTOR 0xee /* performanc monitor interrupt vector */ | 66 | #define IA64_PERFMON_VECTOR 0xee /* performanc monitor interrupt vector */ |
67 | #define IA64_TIMER_VECTOR 0xef /* use highest-prio group 15 interrupt for timer */ | 67 | #define IA64_TIMER_VECTOR 0xef /* use highest-prio group 15 interrupt for timer */ |
68 | #define IA64_MCA_WAKEUP_VECTOR 0xf0 /* MCA wakeup (must be >MCA_RENDEZ_VECTOR) */ | 68 | #define IA64_MCA_WAKEUP_VECTOR 0xf0 /* MCA wakeup (must be >MCA_RENDEZ_VECTOR) */ |
69 | #define IA64_IPI_LOCAL_TLB_FLUSH 0xfc /* SMP flush local TLB */ | ||
69 | #define IA64_IPI_RESCHEDULE 0xfd /* SMP reschedule */ | 70 | #define IA64_IPI_RESCHEDULE 0xfd /* SMP reschedule */ |
70 | #define IA64_IPI_VECTOR 0xfe /* inter-processor interrupt vector */ | 71 | #define IA64_IPI_VECTOR 0xfe /* inter-processor interrupt vector */ |
71 | 72 | ||
diff --git a/include/asm-ia64/tlbflush.h b/include/asm-ia64/tlbflush.h index cf9acb9bb1fb..e37f9fbf33af 100644 --- a/include/asm-ia64/tlbflush.h +++ b/include/asm-ia64/tlbflush.h | |||
@@ -27,9 +27,11 @@ extern void local_flush_tlb_all (void); | |||
27 | #ifdef CONFIG_SMP | 27 | #ifdef CONFIG_SMP |
28 | extern void smp_flush_tlb_all (void); | 28 | extern void smp_flush_tlb_all (void); |
29 | extern void smp_flush_tlb_mm (struct mm_struct *mm); | 29 | extern void smp_flush_tlb_mm (struct mm_struct *mm); |
30 | extern void smp_flush_tlb_cpumask (cpumask_t xcpumask); | ||
30 | # define flush_tlb_all() smp_flush_tlb_all() | 31 | # define flush_tlb_all() smp_flush_tlb_all() |
31 | #else | 32 | #else |
32 | # define flush_tlb_all() local_flush_tlb_all() | 33 | # define flush_tlb_all() local_flush_tlb_all() |
34 | # define smp_flush_tlb_cpumask(m) local_flush_tlb_all() | ||
33 | #endif | 35 | #endif |
34 | 36 | ||
35 | static inline void | 37 | static inline void |
@@ -94,6 +96,15 @@ flush_tlb_pgtables (struct mm_struct *mm, unsigned long start, unsigned long end | |||
94 | */ | 96 | */ |
95 | } | 97 | } |
96 | 98 | ||
99 | /* | ||
100 | * Flush the local TLB. Invoked from another cpu using an IPI. | ||
101 | */ | ||
102 | #ifdef CONFIG_SMP | ||
103 | void smp_local_flush_tlb(void); | ||
104 | #else | ||
105 | #define smp_local_flush_tlb() | ||
106 | #endif | ||
107 | |||
97 | #define flush_tlb_kernel_range(start, end) flush_tlb_all() /* XXX fix me */ | 108 | #define flush_tlb_kernel_range(start, end) flush_tlb_all() /* XXX fix me */ |
98 | 109 | ||
99 | #endif /* _ASM_IA64_TLBFLUSH_H */ | 110 | #endif /* _ASM_IA64_TLBFLUSH_H */ |