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>
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