forked from luck/tmp_suning_uos_patched
[PATCH] powerpc: Early debugging support for iSeries
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>
This commit is contained in:
parent
f481f1edee
commit
bf6a7112bd
@ -75,22 +75,26 @@
|
|||||||
* but your kernel will not boot on anything else if you do so
|
* 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
|
/* For use on LPAR machines that support an HVC console on vterm 0 */
|
||||||
* on vterm 0
|
|
||||||
*/
|
|
||||||
extern void udbg_init_debug_lpar(void);
|
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);
|
extern void udbg_init_pmac_realmode(void);
|
||||||
|
|
||||||
/* That's RTAS panel debug */
|
/* That's RTAS panel debug */
|
||||||
extern void call_rtas_display_status_delay(unsigned char c);
|
extern void call_rtas_display_status_delay(unsigned char c);
|
||||||
|
|
||||||
/* Here's maple real mode debug */
|
/* Here's maple real mode debug */
|
||||||
extern void udbg_init_maple_realmode(void);
|
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)
|
#define EARLY_DEBUG_INIT() do {} while(0)
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
#define EARLY_DEBUG_INIT() udbg_init_debug_lpar()
|
#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_maple_realmode()
|
||||||
#define EARLY_DEBUG_INIT() udbg_init_pmac_realmode()
|
#define EARLY_DEBUG_INIT() udbg_init_pmac_realmode()
|
||||||
#define EARLY_DEBUG_INIT() \
|
#define EARLY_DEBUG_INIT() \
|
||||||
|
@ -52,6 +52,7 @@
|
|||||||
#include <asm/iseries/mf.h>
|
#include <asm/iseries/mf.h>
|
||||||
#include <asm/iseries/hv_lp_event.h>
|
#include <asm/iseries/hv_lp_event.h>
|
||||||
#include <asm/iseries/lpar_map.h>
|
#include <asm/iseries/lpar_map.h>
|
||||||
|
#include <asm/udbg.h>
|
||||||
|
|
||||||
#include "naca.h"
|
#include "naca.h"
|
||||||
#include "setup.h"
|
#include "setup.h"
|
||||||
@ -62,10 +63,8 @@
|
|||||||
#include "call_sm.h"
|
#include "call_sm.h"
|
||||||
#include "call_hpt.h"
|
#include "call_hpt.h"
|
||||||
|
|
||||||
extern void hvlog(char *fmt, ...);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#define DBG(fmt...) hvlog(fmt)
|
#define DBG(fmt...) udbg_printf(fmt)
|
||||||
#else
|
#else
|
||||||
#define DBG(fmt...)
|
#define DBG(fmt...)
|
||||||
#endif
|
#endif
|
||||||
@ -984,3 +983,16 @@ static int __init early_parsemem(char *p)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
early_param("mem", early_parsemem);
|
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;
|
||||||
|
}
|
||||||
|
@ -131,7 +131,7 @@ static void initDataEvent(struct viocharlpevent *viochar, HvLpIndex lp);
|
|||||||
|
|
||||||
static struct tty_driver *viotty_driver;
|
static struct tty_driver *viotty_driver;
|
||||||
|
|
||||||
void hvlog(char *fmt, ...)
|
static void hvlog(char *fmt, ...)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
@ -147,7 +147,7 @@ void hvlog(char *fmt, ...)
|
|||||||
spin_unlock_irqrestore(&consoleloglock, flags);
|
spin_unlock_irqrestore(&consoleloglock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hvlogOutput(const char *buf, int count)
|
static void hvlogOutput(const char *buf, int count)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int begin;
|
int begin;
|
||||||
|
Loading…
Reference in New Issue
Block a user