Skip to content

Commit

Permalink
[PATCH] powerpc: Early debugging support for iSeries
Browse files Browse the repository at this point in the history
Connect iSeries up to the standard early debugging infrastructure.

To actually use this you need to enable the iSeries early debugging
in setup_64.c. Then after the messages are logged hit Ctrl-x Ctrl-x on
your console to dump the Hypervisor console buffer.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
  • Loading branch information
Michael Ellerman authored and Paul Mackerras committed Jan 11, 2006
1 parent f481f1e commit bf6a711
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 10 deletions.
14 changes: 9 additions & 5 deletions arch/powerpc/kernel/setup_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,22 +75,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() \
Expand Down
18 changes: 15 additions & 3 deletions arch/powerpc/platforms/iseries/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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
Expand Down Expand Up @@ -984,3 +983,16 @@ static int __init early_parsemem(char *p)
return 0;
}
early_param("mem", early_parsemem);

static void hvputc(char c)
{
if (c == '\n')
hvputc('\r');

HvCall_writeLogBuffer(&c, 1);
}

void __init udbg_init_iseries(void)
{
udbg_putc = hvputc;
}
4 changes: 2 additions & 2 deletions drivers/char/viocons.c
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ static void initDataEvent(struct viocharlpevent *viochar, HvLpIndex lp);

static struct tty_driver *viotty_driver;

void hvlog(char *fmt, ...)
static void hvlog(char *fmt, ...)
{
int i;
unsigned long flags;
Expand All @@ -147,7 +147,7 @@ void hvlog(char *fmt, ...)
spin_unlock_irqrestore(&consoleloglock, flags);
}

void hvlogOutput(const char *buf, int count)
static void hvlogOutput(const char *buf, int count)
{
unsigned long flags;
int begin;
Expand Down

0 comments on commit bf6a711

Please sign in to comment.