public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* 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