ia64/xen-unstable
changeset 8480:2869bdd16bd4
correct implementation of flush_tlb_mask needed to reenable CONFIG_SMP
Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
author | djm@kirby.fc.hp.com |
---|---|
date | Fri Jan 13 10:36:47 2006 -0600 (2006-01-13) |
parents | 985228c22276 |
children | 2884f14895d2 |
files | xen/arch/ia64/linux-xen/smp.c |
line diff
1.1 --- a/xen/arch/ia64/linux-xen/smp.c Fri Jan 13 10:25:10 2006 -0600 1.2 +++ b/xen/arch/ia64/linux-xen/smp.c Fri Jan 13 10:36:47 2006 -0600 1.3 @@ -57,8 +57,21 @@ 1.4 void flush_tlb_mask(cpumask_t mask) 1.5 { 1.6 #ifdef CONFIG_SMP 1.7 - printf("flush_tlb_mask called, not implemented for SMP\n"); 1.8 - dummy(); 1.9 + int cpu; 1.10 + 1.11 + cpu = smp_processor_id(); 1.12 + if (cpu_isset (cpu, mask)) { 1.13 + cpu_clear(cpu, mask); 1.14 + local_flush_tlb_all (); 1.15 + } 1.16 + 1.17 + if (cpus_empty(mask)) 1.18 + return; 1.19 + 1.20 + for (cpu = 0; cpu < NR_CPUS; ++cpu) 1.21 + if (cpu_isset(cpu, mask)) 1.22 + smp_call_function_single 1.23 + (cpu, (void (*)(void *))local_flush_tlb_all, NULL, 1, 1); 1.24 #endif 1.25 } 1.26 //#if CONFIG_SMP || IA64