aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/smp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/kernel/smp.c')
-rw-r--r--arch/ia64/kernel/smp.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c
index 3676468612b6..da8f020d82c1 100644
--- a/arch/ia64/kernel/smp.c
+++ b/arch/ia64/kernel/smp.c
@@ -58,7 +58,7 @@ static struct local_tlb_flush_counts {
58 unsigned int count; 58 unsigned int count;
59} __attribute__((__aligned__(32))) local_tlb_flush_counts[NR_CPUS]; 59} __attribute__((__aligned__(32))) local_tlb_flush_counts[NR_CPUS];
60 60
61static DEFINE_PER_CPU(unsigned int, shadow_flush_counts[NR_CPUS]) ____cacheline_aligned; 61static DEFINE_PER_CPU(unsigned short, shadow_flush_counts[NR_CPUS]) ____cacheline_aligned;
62 62
63#define IPI_CALL_FUNC 0 63#define IPI_CALL_FUNC 0
64#define IPI_CPU_STOP 1 64#define IPI_CPU_STOP 1
@@ -254,7 +254,7 @@ smp_local_flush_tlb(void)
254void 254void
255smp_flush_tlb_cpumask(cpumask_t xcpumask) 255smp_flush_tlb_cpumask(cpumask_t xcpumask)
256{ 256{
257 unsigned int *counts = __ia64_per_cpu_var(shadow_flush_counts); 257 unsigned short *counts = __ia64_per_cpu_var(shadow_flush_counts);
258 cpumask_t cpumask = xcpumask; 258 cpumask_t cpumask = xcpumask;
259 int mycpu, cpu, flush_mycpu = 0; 259 int mycpu, cpu, flush_mycpu = 0;
260 260
@@ -262,7 +262,7 @@ smp_flush_tlb_cpumask(cpumask_t xcpumask)
262 mycpu = smp_processor_id(); 262 mycpu = smp_processor_id();
263 263
264 for_each_cpu_mask(cpu, cpumask) 264 for_each_cpu_mask(cpu, cpumask)
265 counts[cpu] = local_tlb_flush_counts[cpu].count; 265 counts[cpu] = local_tlb_flush_counts[cpu].count & 0xffff;
266 266
267 mb(); 267 mb();
268 for_each_cpu_mask(cpu, cpumask) { 268 for_each_cpu_mask(cpu, cpumask) {
@@ -276,7 +276,7 @@ smp_flush_tlb_cpumask(cpumask_t xcpumask)
276 smp_local_flush_tlb(); 276 smp_local_flush_tlb();
277 277
278 for_each_cpu_mask(cpu, cpumask) 278 for_each_cpu_mask(cpu, cpumask)
279 while(counts[cpu] == local_tlb_flush_counts[cpu].count) 279 while(counts[cpu] == (local_tlb_flush_counts[cpu].count & 0xffff))
280 udelay(FLUSH_DELAY); 280 udelay(FLUSH_DELAY);
281 281
282 preempt_enable(); 282 preempt_enable();