Merge branch 'linus' into cpus4096
authorIngo Molnar <mingo@elte.hu>
Tue, 15 Jul 2008 22:29:07 +0000 (00:29 +0200)
committerIngo Molnar <mingo@elte.hu>
Tue, 15 Jul 2008 22:29:07 +0000 (00:29 +0200)
Conflicts:

arch/x86/xen/smp.c
kernel/sched_rt.c
net/iucv/iucv.c

Signed-off-by: Ingo Molnar <mingo@elte.hu>
15 files changed:
1  2 
arch/x86/kernel/cpu/intel_cacheinfo.c
arch/x86/kernel/io_apic_64.c
arch/x86/kernel/smpboot.c
arch/x86/xen/smp.c
drivers/infiniband/hw/ehca/ehca_irq.c
include/asm-x86/ipi.h
kernel/cpu.c
kernel/rcuclassic.c
kernel/rcupreempt.c
kernel/sched.c
kernel/sched_fair.c
kernel/sched_rt.c
kernel/time/tick-broadcast.c
net/core/dev.c
net/iucv/iucv.c

Simple merge
Simple merge
Simple merge
@@@ -349,23 -355,30 +355,30 @@@ static void xen_send_IPI_mask(cpumask_
                xen_send_IPI_one(cpu, vector);
  }
  
 -      for_each_cpu_mask(cpu, mask) {
+ void xen_smp_send_call_function_ipi(cpumask_t mask)
+ {
+       int cpu;
+       xen_send_IPI_mask(mask, XEN_CALL_FUNCTION_VECTOR);
+       /* Make sure other vcpus get a chance to run if they need to. */
++      for_each_cpu_mask_nr(cpu, mask) {
+               if (xen_vcpu_stolen(cpu)) {
+                       HYPERVISOR_sched_op(SCHEDOP_yield, 0);
+                       break;
+               }
+       }
+ }
+ void xen_smp_send_call_function_single_ipi(int cpu)
+ {
+       xen_send_IPI_mask(cpumask_of_cpu(cpu), XEN_CALL_FUNCTION_SINGLE_VECTOR);
+ }
  static irqreturn_t xen_call_function_interrupt(int irq, void *dev_id)
  {
-       void (*func) (void *info) = call_data->func;
-       void *info = call_data->info;
-       int wait = call_data->wait;
-       /*
-        * Notify initiating CPU that I've grabbed the data and am
-        * about to execute the function
-        */
-       mb();
-       atomic_inc(&call_data->started);
-       /*
-        * At this point the info structure may be out of scope unless wait==1
-        */
        irq_enter();
-       (*func)(info);
+       generic_smp_call_function_interrupt();
        __get_cpu_var(irq_stat).irq_call_count++;
        irq_exit();
  
Simple merge
Simple merge
diff --cc kernel/cpu.c
Simple merge
Simple merge
Simple merge
diff --cc kernel/sched.c
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
diff --cc net/iucv/iucv.c
@@@ -497,8 -497,8 +497,8 @@@ static void iucv_setmask_up(void
        /* Disable all cpu but the first in cpu_irq_cpumask. */
        cpumask = iucv_irq_cpumask;
        cpu_clear(first_cpu(iucv_irq_cpumask), cpumask);
 -      for_each_cpu_mask(cpu, cpumask)
 +      for_each_cpu_mask_nr(cpu, cpumask)
-               smp_call_function_single(cpu, iucv_block_cpu, NULL, 0, 1);
+               smp_call_function_single(cpu, iucv_block_cpu, NULL, 1);
  }
  
  /**