diff options
Diffstat (limited to 'arch/ia64')
-rw-r--r-- | arch/ia64/kernel/smp.c | 8 |
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 | ||
61 | static DEFINE_PER_CPU(unsigned int, shadow_flush_counts[NR_CPUS]) ____cacheline_aligned; | 61 | static 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) | |||
254 | void | 254 | void |
255 | smp_flush_tlb_cpumask(cpumask_t xcpumask) | 255 | smp_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(); |