diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-01 13:46:27 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-10-01 13:46:27 -0400 |
commit | da8347969f324db5f572581397d9b3a8e108cda4 (patch) | |
tree | 7df2ea8968ecb92e307bbffdbe8f9bcd0c79c36a /arch/x86/xen | |
parent | 80749df4a1492004fdb7bd2cec094b92260c6d27 (diff) | |
parent | c416ddf5b909736f5b57d348f5de159693e699ad (diff) |
Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86/asm changes from Ingo Molnar:
"The one change that stands out is the alternatives patching change
that prevents us from ever patching back instructions from SMP to UP:
this simplifies things and speeds up CPU hotplug.
Other than that it's smaller fixes, cleanups and improvements."
* 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86: Unspaghettize do_trap()
x86_64: Work around old GAS bug
x86: Use REP BSF unconditionally
x86: Prefer TZCNT over BFS
x86/64: Adjust types of temporaries used by ffs()/fls()/fls64()
x86: Drop unnecessary kernel_eflags variable on 64-bit
x86/smp: Don't ever patch back to UP if we unplug cpus
Diffstat (limited to 'arch/x86/xen')
-rw-r--r-- | arch/x86/xen/smp.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/arch/x86/xen/smp.c b/arch/x86/xen/smp.c index f58dca7a6e52..353c50f18702 100644 --- a/arch/x86/xen/smp.c +++ b/arch/x86/xen/smp.c | |||
@@ -377,7 +377,8 @@ static int __cpuinit xen_cpu_up(unsigned int cpu, struct task_struct *idle) | |||
377 | return rc; | 377 | return rc; |
378 | 378 | ||
379 | if (num_online_cpus() == 1) | 379 | if (num_online_cpus() == 1) |
380 | alternatives_smp_switch(1); | 380 | /* Just in case we booted with a single CPU. */ |
381 | alternatives_enable_smp(); | ||
381 | 382 | ||
382 | rc = xen_smp_intr_init(cpu); | 383 | rc = xen_smp_intr_init(cpu); |
383 | if (rc) | 384 | if (rc) |
@@ -424,9 +425,6 @@ static void xen_cpu_die(unsigned int cpu) | |||
424 | unbind_from_irqhandler(per_cpu(xen_irq_work, cpu), NULL); | 425 | unbind_from_irqhandler(per_cpu(xen_irq_work, cpu), NULL); |
425 | xen_uninit_lock_cpu(cpu); | 426 | xen_uninit_lock_cpu(cpu); |
426 | xen_teardown_timer(cpu); | 427 | xen_teardown_timer(cpu); |
427 | |||
428 | if (num_online_cpus() == 1) | ||
429 | alternatives_smp_switch(0); | ||
430 | } | 428 | } |
431 | 429 | ||
432 | static void __cpuinit xen_play_dead(void) /* used only with HOTPLUG_CPU */ | 430 | static void __cpuinit xen_play_dead(void) /* used only with HOTPLUG_CPU */ |