Commit b561783c authored by Guilherme G. Piccoli's avatar Guilherme G. Piccoli Committed by Michael Ellerman

powerpc/xmon: drop the nobt option from xmon plus minor fixes

The xmon parameter nobt was added long time ago, by commit 26c8af5f
("[POWERPC] print backtrace when entering xmon"). The problem that time
was that during a crash in a machine with USB keyboard, xmon wouldn't
respond to commands from the keyboard, so printing the backtrace wouldn't
be possible.

Idea then was to show automatically the backtrace on xmon crash for the
first time it's invoked (if it recovers, next time xmon won't show
backtrace automatically). The nobt parameter was added _only_ to prevent
this automatic trace show. Seems long time ago USB keyboards didn't work
that well!

We don't need this parameter anymore, the feature of auto showing the
backtrace is interesting (imagine a case of auto-reboot script),
so this patch extends the functionality, by always showing the backtrace
automatically when xmon is invoked; it removes the nobt parameter too.

Also, this patch fixes __initdata placement on xmon_early and replaces
__initcall() with modern device_initcall() on sysrq handler.
Signed-off-by: default avatarGuilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 3b5bf42b
...@@ -185,8 +185,6 @@ static void dump_tlb_44x(void); ...@@ -185,8 +185,6 @@ static void dump_tlb_44x(void);
static void dump_tlb_book3e(void); static void dump_tlb_book3e(void);
#endif #endif
static int xmon_no_auto_backtrace;
#ifdef CONFIG_PPC64 #ifdef CONFIG_PPC64
#define REG "%.16lx" #define REG "%.16lx"
#else #else
...@@ -885,10 +883,7 @@ cmds(struct pt_regs *excp) ...@@ -885,10 +883,7 @@ cmds(struct pt_regs *excp)
last_cmd = NULL; last_cmd = NULL;
xmon_regs = excp; xmon_regs = excp;
if (!xmon_no_auto_backtrace) {
xmon_no_auto_backtrace = 1;
xmon_show_stack(excp->gpr[1], excp->link, excp->nip); xmon_show_stack(excp->gpr[1], excp->link, excp->nip);
}
for(;;) { for(;;) {
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
...@@ -3318,10 +3313,10 @@ static int __init setup_xmon_sysrq(void) ...@@ -3318,10 +3313,10 @@ static int __init setup_xmon_sysrq(void)
register_sysrq_key('x', &sysrq_xmon_op); register_sysrq_key('x', &sysrq_xmon_op);
return 0; return 0;
} }
__initcall(setup_xmon_sysrq); device_initcall(setup_xmon_sysrq);
#endif /* CONFIG_MAGIC_SYSRQ */ #endif /* CONFIG_MAGIC_SYSRQ */
static int __initdata xmon_early; static int xmon_early __initdata;
static int __init early_parse_xmon(char *p) static int __init early_parse_xmon(char *p)
{ {
...@@ -3335,8 +3330,6 @@ static int __init early_parse_xmon(char *p) ...@@ -3335,8 +3330,6 @@ static int __init early_parse_xmon(char *p)
xmon_on = 1; xmon_on = 1;
} else if (strncmp(p, "off", 3) == 0) } else if (strncmp(p, "off", 3) == 0)
xmon_on = 0; xmon_on = 0;
else if (strncmp(p, "nobt", 4) == 0)
xmon_no_auto_backtrace = 1;
else else
return 1; return 1;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment