[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Fix CPU hotplug.
# HG changeset patch # User kaf24@xxxxxxxxxxxxxxxxxxxx # Node ID 0a404794aac138e0f0cdda6b90f0911c43555fca # Parent 10d6c1dc1bc786bbf563c0239d925a896734b8c9 Fix CPU hotplug. Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx> diff -r 10d6c1dc1bc7 -r 0a404794aac1 linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c --- a/linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c Thu Feb 9 11:17:35 2006 +++ b/linux-2.6-xen-sparse/arch/i386/kernel/process-xen.c Thu Feb 9 13:52:40 2006 @@ -124,10 +124,18 @@ #endif #ifdef CONFIG_HOTPLUG_CPU +extern cpumask_t cpu_initialized; static inline void play_dead(void) { idle_task_exit(); + local_irq_disable(); + cpu_clear(smp_processor_id(), cpu_initialized); + preempt_enable_no_resched(); HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL); + /* Same as drivers/xen/core/smpboot.c:cpu_bringup(). */ + cpu_init(); + touch_softlockup_watchdog(); + preempt_disable(); local_irq_enable(); } #else diff -r 10d6c1dc1bc7 -r 0a404794aac1 linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c --- a/linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c Thu Feb 9 11:17:35 2006 +++ b/linux-2.6-xen-sparse/arch/x86_64/kernel/process-xen.c Thu Feb 9 13:52:40 2006 @@ -138,14 +138,17 @@ } #ifdef CONFIG_HOTPLUG_CPU -DECLARE_PER_CPU(int, cpu_state); - -#include <asm/nmi.h> -/* We halt the CPU with physical CPU hotplug */ static inline void play_dead(void) { idle_task_exit(); + local_irq_disable(); + cpu_clear(smp_processor_id(), cpu_initialized); + preempt_enable_no_resched(); HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL); + /* Same as drivers/xen/core/smpboot.c:cpu_bringup(). */ + cpu_init(); + touch_softlockup_watchdog(); + preempt_disable(); local_irq_enable(); } #else diff -r 10d6c1dc1bc7 -r 0a404794aac1 linux-2.6-xen-sparse/drivers/xen/core/smpboot.c --- a/linux-2.6-xen-sparse/drivers/xen/core/smpboot.c Thu Feb 9 11:17:35 2006 +++ b/linux-2.6-xen-sparse/drivers/xen/core/smpboot.c Thu Feb 9 13:52:40 2006 @@ -40,8 +40,6 @@ extern void system_call(void); extern void smp_trap_init(trap_info_t *); -extern cpumask_t cpu_initialized; - /* Number of siblings per CPU package */ int smp_num_siblings = 1; int phys_proc_id[NR_CPUS]; /* Package ID of each logical CPU */ @@ -141,10 +139,9 @@ static void cpu_bringup(void) { - if (!cpu_isset(smp_processor_id(), cpu_initialized)) { - cpu_init(); - preempt_disable(); - } + cpu_init(); + touch_softlockup_watchdog(); + preempt_disable(); local_irq_enable(); cpu_idle(); } _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |