* trival patch: disable interrupt in play_dead
@ 2005-11-29 6:48 Shaohua Li
0 siblings, 0 replies; only message in thread
From: Shaohua Li @ 2005-11-29 6:48 UTC (permalink / raw)
To: lkml; +Cc: Raj, Ashok, akpm, ak
It's physical CPU hotplug now, so disable interrupt in play_dead.
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
---
linux-2.6.14-root/arch/x86_64/kernel/process.c | 5 +++--
linux-2.6.14-root/include/asm-x86_64/system.h | 2 ++
2 files changed, 5 insertions(+), 2 deletions(-)
diff -puN arch/x86_64/kernel/process.c~cpuhp-disable-interrupt arch/x86_64/kernel/process.c
--- linux-2.6.14/arch/x86_64/kernel/process.c~cpuhp-disable-interrupt 2005-11-28 22:20:28.000000000 -0800
+++ linux-2.6.14-root/arch/x86_64/kernel/process.c 2005-11-28 22:20:28.000000000 -0800
@@ -157,7 +157,7 @@ EXPORT_SYMBOL_GPL(cpu_idle_wait);
DECLARE_PER_CPU(int, cpu_state);
#include <asm/nmi.h>
-/* We don't actually take CPU down, just spin without interrupts. */
+/* We halt the CPU with physical CPU hotplug */
static inline void play_dead(void)
{
idle_task_exit();
@@ -166,8 +166,9 @@ static inline void play_dead(void)
/* Ack it */
__get_cpu_var(cpu_state) = CPU_DEAD;
+ local_irq_disable();
while (1)
- safe_halt();
+ halt();
}
#else
static inline void play_dead(void)
diff -puN include/asm-x86_64/system.h~cpuhp-disable-interrupt include/asm-x86_64/system.h
--- linux-2.6.14/include/asm-x86_64/system.h~cpuhp-disable-interrupt 2005-11-28 22:20:28.000000000 -0800
+++ linux-2.6.14-root/include/asm-x86_64/system.h 2005-11-28 22:20:28.000000000 -0800
@@ -315,6 +315,8 @@ static inline unsigned long __cmpxchg(vo
#define local_irq_enable() __asm__ __volatile__("sti": : :"memory")
/* used in the idle loop; sti takes one instruction cycle to complete */
#define safe_halt() __asm__ __volatile__("sti; hlt": : :"memory")
+/* used when interrupts are already enabled or to shutdown the processor */
+#define halt() __asm__ __volatile__("hlt": : :"memory")
#define irqs_disabled() \
({ \
_
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2005-11-28 23:27 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-29 6:48 trival patch: disable interrupt in play_dead Shaohua Li
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox