diff options
author | Helge Deller <deller@gmx.de> | 2013-05-07 17:42:47 -0400 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2013-05-07 17:44:04 -0400 |
commit | 0fc537d1d655cdae69b489dbba46ad617cfc1373 (patch) | |
tree | bc4d826346201de329257d010b74d258a1c35012 /arch/parisc | |
parent | cd85d5514d5c4d7e78abac923fc032457d0c5091 (diff) |
parisc: tlb flush counting fix for SMP and UP
Fix up build error on UP and show correctly number of function call
(ipi) irqs.
Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch/parisc')
-rw-r--r-- | arch/parisc/include/asm/hardirq.h | 6 | ||||
-rw-r--r-- | arch/parisc/include/asm/tlbflush.h | 2 | ||||
-rw-r--r-- | arch/parisc/kernel/irq.c | 5 | ||||
-rw-r--r-- | arch/parisc/kernel/smp.c | 11 |
4 files changed, 5 insertions, 19 deletions
diff --git a/arch/parisc/include/asm/hardirq.h b/arch/parisc/include/asm/hardirq.h index a9c0fb195253..12373c4dabab 100644 --- a/arch/parisc/include/asm/hardirq.h +++ b/arch/parisc/include/asm/hardirq.h | |||
@@ -19,12 +19,8 @@ typedef struct { | |||
19 | #ifdef CONFIG_SMP | 19 | #ifdef CONFIG_SMP |
20 | unsigned int irq_resched_count; | 20 | unsigned int irq_resched_count; |
21 | unsigned int irq_call_count; | 21 | unsigned int irq_call_count; |
22 | /* | ||
23 | * irq_tlb_count is double-counted in irq_call_count, so it must be | ||
24 | * subtracted from irq_call_count when displaying irq_call_count | ||
25 | */ | ||
26 | unsigned int irq_tlb_count; | ||
27 | #endif | 22 | #endif |
23 | unsigned int irq_tlb_count; | ||
28 | } ____cacheline_aligned irq_cpustat_t; | 24 | } ____cacheline_aligned irq_cpustat_t; |
29 | 25 | ||
30 | DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); | 26 | DECLARE_PER_CPU_SHARED_ALIGNED(irq_cpustat_t, irq_stat); |
diff --git a/arch/parisc/include/asm/tlbflush.h b/arch/parisc/include/asm/tlbflush.h index 8f1a8100bf2d..5273da991e06 100644 --- a/arch/parisc/include/asm/tlbflush.h +++ b/arch/parisc/include/asm/tlbflush.h | |||
@@ -22,6 +22,8 @@ extern spinlock_t pa_tlb_lock; | |||
22 | extern void flush_tlb_all(void); | 22 | extern void flush_tlb_all(void); |
23 | extern void flush_tlb_all_local(void *); | 23 | extern void flush_tlb_all_local(void *); |
24 | 24 | ||
25 | #define smp_flush_tlb_all() flush_tlb_all() | ||
26 | |||
25 | /* | 27 | /* |
26 | * flush_tlb_mm() | 28 | * flush_tlb_mm() |
27 | * | 29 | * |
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c index a237e32ede19..e255db0bb761 100644 --- a/arch/parisc/kernel/irq.c +++ b/arch/parisc/kernel/irq.c | |||
@@ -175,14 +175,13 @@ int arch_show_interrupts(struct seq_file *p, int prec) | |||
175 | seq_printf(p, " Rescheduling interrupts\n"); | 175 | seq_printf(p, " Rescheduling interrupts\n"); |
176 | seq_printf(p, "%*s: ", prec, "CAL"); | 176 | seq_printf(p, "%*s: ", prec, "CAL"); |
177 | for_each_online_cpu(j) | 177 | for_each_online_cpu(j) |
178 | seq_printf(p, "%10u ", irq_stats(j)->irq_call_count - | 178 | seq_printf(p, "%10u ", irq_stats(j)->irq_call_count); |
179 | irq_stats(j)->irq_tlb_count); | ||
180 | seq_printf(p, " Function call interrupts\n"); | 179 | seq_printf(p, " Function call interrupts\n"); |
180 | #endif | ||
181 | seq_printf(p, "%*s: ", prec, "TLB"); | 181 | seq_printf(p, "%*s: ", prec, "TLB"); |
182 | for_each_online_cpu(j) | 182 | for_each_online_cpu(j) |
183 | seq_printf(p, "%10u ", irq_stats(j)->irq_tlb_count); | 183 | seq_printf(p, "%10u ", irq_stats(j)->irq_tlb_count); |
184 | seq_printf(p, " TLB shootdowns\n"); | 184 | seq_printf(p, " TLB shootdowns\n"); |
185 | #endif | ||
186 | return 0; | 185 | return 0; |
187 | } | 186 | } |
188 | 187 | ||
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 218e20bff9d2..e3614fb343e5 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -264,17 +264,6 @@ void arch_send_call_function_single_ipi(int cpu) | |||
264 | } | 264 | } |
265 | 265 | ||
266 | /* | 266 | /* |
267 | * Flush all other CPU's tlb and then mine. Do this with on_each_cpu() | ||
268 | * as we want to ensure all TLB's flushed before proceeding. | ||
269 | */ | ||
270 | |||
271 | void | ||
272 | smp_flush_tlb_all(void) | ||
273 | { | ||
274 | on_each_cpu(flush_tlb_all_local, NULL, 1); | ||
275 | } | ||
276 | |||
277 | /* | ||
278 | * Called by secondaries to update state and initialize CPU registers. | 267 | * Called by secondaries to update state and initialize CPU registers. |
279 | */ | 268 | */ |
280 | static void __init | 269 | static void __init |