[PATCH] powerpc: Early debugging support for iSeries
Michael Ellerman
michael at ellerman.id.au
Thu Nov 17 14:14:30 EST 2005
Connect iSeries up to the standard early debugging infrastructure.
To actually use this you need to define the iSeries version of
EARLY_DEBUG_INIT in setup_64.c, and hit Ctrl-x Ctrl-x on your console to dump
the Hypervisor console buffer.
Signed-off-by: Michael Ellerman <michael at ellerman.id.au>
---
arch/powerpc/kernel/setup_64.c | 14 +++++++++-----
arch/powerpc/platforms/iseries/setup.c | 18 +++++++++++++++---
2 files changed, 24 insertions(+), 8 deletions(-)
Index: kexec/arch/powerpc/kernel/setup_64.c
===================================================================
--- kexec.orig/arch/powerpc/kernel/setup_64.c
+++ kexec/arch/powerpc/kernel/setup_64.c
@@ -74,22 +74,26 @@
* but your kernel will not boot on anything else if you do so
*/
-/* This one is for use on LPAR machines that support an HVC console
- * on vterm 0
- */
+/* For use on LPAR machines that support an HVC console on vterm 0 */
extern void udbg_init_debug_lpar(void);
-/* This one is for use on Apple G5 machines
- */
+
+/* This one is for use on Apple G5 machines */
extern void udbg_init_pmac_realmode(void);
+
/* That's RTAS panel debug */
extern void call_rtas_display_status_delay(unsigned char c);
+
/* Here's maple real mode debug */
extern void udbg_init_maple_realmode(void);
+/* For iSeries - hit Ctrl-x Ctrl-x to see the output */
+extern void udbg_init_iseries(void);
+
#define EARLY_DEBUG_INIT() do {} while(0)
#if 0
#define EARLY_DEBUG_INIT() udbg_init_debug_lpar()
+#define EARLY_DEBUG_INIT() udbg_init_iseries()
#define EARLY_DEBUG_INIT() udbg_init_maple_realmode()
#define EARLY_DEBUG_INIT() udbg_init_pmac_realmode()
#define EARLY_DEBUG_INIT() \
Index: kexec/arch/powerpc/platforms/iseries/setup.c
===================================================================
--- kexec.orig/arch/powerpc/platforms/iseries/setup.c
+++ kexec/arch/powerpc/platforms/iseries/setup.c
@@ -52,6 +52,7 @@
#include <asm/iseries/mf.h>
#include <asm/iseries/hv_lp_event.h>
#include <asm/iseries/lpar_map.h>
+#include <asm/udbg.h>
#include "naca.h"
#include "setup.h"
@@ -62,10 +63,8 @@
#include "call_sm.h"
#include "call_hpt.h"
-extern void hvlog(char *fmt, ...);
-
#ifdef DEBUG
-#define DBG(fmt...) hvlog(fmt)
+#define DBG(fmt...) udbg_printf(fmt)
#else
#define DBG(fmt...)
#endif
@@ -994,3 +993,16 @@ static int __init early_parsemem(char *p
return 0;
}
early_param("mem", early_parsemem);
+
+static void hvputc(unsigned char c)
+{
+ if (c == '\n')
+ hvputc('\r');
+
+ HvCall_writeLogBuffer(&c, 1);
+}
+
+void udbg_init_iseries(void)
+{
+ udbg_putc = hvputc;
+}
More information about the Linuxppc64-dev
mailing list