|
|
|
|
|
|
|
|
|
|
xen-changelog
[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
|
<Prev in Thread] |
Current Thread |
[Next in Thread> |
- [Xen-changelog] Fix CPU hotplug.,
Xen patchbot -unstable <=
|
|
|
|
|