Merge tag 'stable/for-linus-3.11-rc6-tag' of git://git.kernel.org/pub/scm/linux/kerne...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 21 Aug 2013 23:38:33 +0000 (16:38 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 21 Aug 2013 23:38:33 +0000 (16:38 -0700)
Pull Xen bug-fixes from Konrad Rzeszutek Wilk:
 - On ARM did not have balanced calls to get/put_cpu.
 - Fix to make tboot + Xen + Linux correctly.
 - Fix events VCPU binding issues.
 - Fix a vCPU online race where IPIs are sent to not-yet-online vCPU.

* tag 'stable/for-linus-3.11-rc6-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
  xen/smp: initialize IPI vectors before marking CPU online
  xen/events: mask events when changing their VCPU binding
  xen/events: initialize local per-cpu mask for all possible events
  x86/xen: do not identity map UNUSABLE regions in the machine E820
  xen/arm: missing put_cpu in xen_percpu_init

1  2 
arch/arm/xen/enlighten.c
arch/x86/xen/setup.c
arch/x86/xen/smp.c

index c9770ba5c7df5c3b68c909c32db7fa2fb7be39f1,05db95d010aed68ce5a041c879976aa6917f4c8e..8a6295c86209cd982076a8f79662bd20c2c0f02b
@@@ -170,9 -170,10 +170,10 @@@ static void __init xen_percpu_init(voi
        per_cpu(xen_vcpu, cpu) = vcpup;
  
        enable_percpu_irq(xen_events_irq, 0);
+       put_cpu();
  }
  
 -static void xen_restart(char str, const char *cmd)
 +static void xen_restart(enum reboot_mode reboot_mode, const char *cmd)
  {
        struct sched_shutdown r = { .reason = SHUTDOWN_reboot };
        int rc;
Simple merge
index ca92754eb846b6d7f8293a4f6f75dedae7bf13a9,34ed6edf85d0ffe5ee57ac64e815581490b8ff30..b81c88e51daa3d412a147f2088c1f51be1649d26
@@@ -691,11 -683,18 +691,18 @@@ static void __init xen_hvm_smp_prepare_
        xen_init_lock_cpu(0);
  }
  
 -static int __cpuinit xen_hvm_cpu_up(unsigned int cpu, struct task_struct *tidle)
 +static int xen_hvm_cpu_up(unsigned int cpu, struct task_struct *tidle)
  {
        int rc;
-       rc = native_cpu_up(cpu, tidle);
-       WARN_ON (xen_smp_intr_init(cpu));
+       /*
+        * xen_smp_intr_init() needs to run before native_cpu_up()
+        * so that IPI vectors are set up on the booting CPU before
+        * it is marked online in native_cpu_up().
+       */
+       rc = xen_smp_intr_init(cpu);
+       WARN_ON(rc);
+       if (!rc)
+               rc =  native_cpu_up(cpu, tidle);
        return rc;
  }