# HG changeset patch
# User Jimi Xenidis <[EMAIL PROTECTED]>
# Node ID 701c68921ff32370caeaaac17a5e0a25ebc8a83a
# Parent  d1f6d0f820d890ac6075f47ad1ba6e38012167b4
[XEN][POWERPC] Keepin it cool: sleep the processor when halt fails

Signed-off-by: Jimi Xenidis <[EMAIL PROTECTED]>
---
 xen/arch/powerpc/domain.c     |    6 +++---
 xen/arch/powerpc/exceptions.h |    3 +++
 xen/arch/powerpc/setup.c      |    2 --
 3 files changed, 6 insertions(+), 5 deletions(-)

diff -r d1f6d0f820d8 -r 701c68921ff3 xen/arch/powerpc/domain.c
--- a/xen/arch/powerpc/domain.c Mon Oct 02 21:43:09 2006 -0400
+++ b/xen/arch/powerpc/domain.c Wed Oct 04 14:06:14 2006 -0400
@@ -34,6 +34,7 @@
 #include <asm/current.h>
 #include <asm/hcalls.h>
 #include "rtas.h"
+#include "exceptions.h"
 
 #define next_arg(fmt, args) ({                                              \
     unsigned long __arg;                                                    \
@@ -47,7 +48,6 @@
     }                                                                       \
     __arg;                                                                  \
 })
-extern void idle_loop(void);
 
 unsigned long hypercall_create_continuation(unsigned int op,
         const char *format, ...)
@@ -99,7 +99,8 @@ static void machine_fail(const char *s)
 static void machine_fail(const char *s)
 {
     printf("%s failed, manual powercycle required!\n", s);
-    while(1);
+    for (;;)
+        sleep();
 }
 void machine_halt(void)
 {
@@ -296,7 +297,6 @@ void arch_dump_domain_info(struct domain
 {
 }
 
-extern void sleep(void);
 static void safe_halt(void)
 {
     int cpu = smp_processor_id();
diff -r d1f6d0f820d8 -r 701c68921ff3 xen/arch/powerpc/exceptions.h
--- a/xen/arch/powerpc/exceptions.h     Mon Oct 02 21:43:09 2006 -0400
+++ b/xen/arch/powerpc/exceptions.h     Wed Oct 04 14:06:14 2006 -0400
@@ -43,8 +43,11 @@ extern void program_exception(
     struct cpu_user_regs *regs, unsigned long cookie);
 
 extern long xen_hvcall_jump(struct cpu_user_regs *regs, ulong address);
+
 extern void *mambo_memset(void *, int, ulong);
 extern void *mambo_memcpy(void *, const void *, ulong);
+extern void sleep(void);
+extern void idle_loop(void);
 
 extern ulong *__hypercall_table[];
 
diff -r d1f6d0f820d8 -r 701c68921ff3 xen/arch/powerpc/setup.c
--- a/xen/arch/powerpc/setup.c  Mon Oct 02 21:43:09 2006 -0400
+++ b/xen/arch/powerpc/setup.c  Wed Oct 04 14:06:14 2006 -0400
@@ -199,8 +199,6 @@ static void __init start_of_day(void)
     schedulers_start();
 }
 
-extern void idle_loop(void);
-
 void startup_cpu_idle_loop(void)
 {
     struct vcpu *v = current;

_______________________________________________
Xen-ppc-devel mailing list
Xen-ppc-devel@lists.xensource.com
http://lists.xensource.com/xen-ppc-devel

Reply via email to