From: Konrad Rzeszutek Wilk Date: Tue, 20 Aug 2013 14:35:20 +0000 (-0400) Subject: Merge branch 'stable/for-linus-3.11' into linux-next X-Git-Tag: next-20130822~35^2~1 X-Git-Url: https://git.kernelconcepts.de/?a=commitdiff_plain;h=b31ceddf47cf8a9a963a3f87e8ce22ab349cdd9c;p=karo-tx-linux.git Merge branch 'stable/for-linus-3.11' into linux-next * stable/for-linus-3.11: 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 --- b31ceddf47cf8a9a963a3f87e8ce22ab349cdd9c diff --cc arch/arm/xen/enlighten.c index c9770ba5c7df,05db95d010ae..8a6295c86209 --- a/arch/arm/xen/enlighten.c +++ b/arch/arm/xen/enlighten.c @@@ -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; diff --cc arch/x86/xen/smp.c index ca92754eb846,34ed6edf85d0..b81c88e51daa --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c @@@ -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; }