diff mbox

[v4,2/3] powerpc/xmon: drop the nobt option from xmon plus minor fixes

Message ID 20170322192751.30531-3-gpiccoli@linux.vnet.ibm.com (mailing list archive)
State Accepted
Headers show

Commit Message

Guilherme G. Piccoli March 22, 2017, 7:27 p.m. UTC
The xmon parameter nobt was added long time ago, by commit 26c8af5f01df
("[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: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
---
v4: extended the auto backtrace functionality, by showing the trace
in every xmon invokation [mpe suggestion].

 arch/powerpc/xmon/xmon.c | 13 +++----------
 1 file changed, 3 insertions(+), 10 deletions(-)

Comments

Paul Mackerras March 31, 2017, 12:36 a.m. UTC | #1
On Wed, Mar 22, 2017 at 04:27:50PM -0300, Guilherme G. Piccoli wrote:
> The xmon parameter nobt was added long time ago, by commit 26c8af5f01df
> ("[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!

Xmon still can't use a USB keyboard.  It's not a question of how well
USB keyboards work, it's that having a non-interrupt-driven USB stack
with (at least) an OHCI host controller driver and a keyboard driver
in xmon is impractical.

Paul.
Guilherme G. Piccoli March 31, 2017, 1:06 p.m. UTC | #2
On 03/30/2017 09:36 PM, Paul Mackerras wrote:
> On Wed, Mar 22, 2017 at 04:27:50PM -0300, Guilherme G. Piccoli wrote:
>> The xmon parameter nobt was added long time ago, by commit 26c8af5f01df
>> ("[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!
> 
> Xmon still can't use a USB keyboard.  It's not a question of how well
> USB keyboards work, it's that having a non-interrupt-driven USB stack
> with (at least) an OHCI host controller driver and a keyboard driver
> in xmon is impractical.

That's nice to know Paul, thank you. Fortunately, we kept the automatic
trace showing feature!

Seems my commit message was unfortunate/wrong in this aspect, though.
@mpe, if you wanna change, feel free. Although it's not essential...

Cheers,


Guilherme

> 
> Paul.
>
Michael Ellerman April 1, 2017, 10:31 a.m. UTC | #3
"Guilherme G. Piccoli" <gpiccoli@linux.vnet.ibm.com> writes:

> On 03/30/2017 09:36 PM, Paul Mackerras wrote:
>> On Wed, Mar 22, 2017 at 04:27:50PM -0300, Guilherme G. Piccoli wrote:
>>> The xmon parameter nobt was added long time ago, by commit 26c8af5f01df
>>> ("[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!
>> 
>> Xmon still can't use a USB keyboard.  It's not a question of how well
>> USB keyboards work, it's that having a non-interrupt-driven USB stack
>> with (at least) an OHCI host controller driver and a keyboard driver
>> in xmon is impractical.
>
> That's nice to know Paul, thank you. Fortunately, we kept the automatic
> trace showing feature!
>
> Seems my commit message was unfortunate/wrong in this aspect, though.
> @mpe, if you wanna change, feel free. Although it's not essential...

It's already merged, so it is what it is.

I do remember not quite understanding what you meant with the "long time
ago" bit, but didn't think much more of it.

cheers
diff mbox

Patch

diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index a89db1b3f66d..25a32815f310 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -185,8 +185,6 @@  static void dump_tlb_44x(void);
 static void dump_tlb_book3e(void);
 #endif
 
-static int xmon_no_auto_backtrace;
-
 #ifdef CONFIG_PPC64
 #define REG		"%.16lx"
 #else
@@ -885,10 +883,7 @@  cmds(struct pt_regs *excp)
 	last_cmd = NULL;
 	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(;;) {
 #ifdef CONFIG_SMP
@@ -3318,10 +3313,10 @@  static int __init setup_xmon_sysrq(void)
 	register_sysrq_key('x', &sysrq_xmon_op);
 	return 0;
 }
-__initcall(setup_xmon_sysrq);
+device_initcall(setup_xmon_sysrq);
 #endif /* CONFIG_MAGIC_SYSRQ */
 
-static int __initdata xmon_early;
+static int xmon_early __initdata;
 
 static int __init early_parse_xmon(char *p)
 {
@@ -3335,8 +3330,6 @@  static int __init early_parse_xmon(char *p)
 		xmon_on = 1;
 	} else if (strncmp(p, "off", 3) == 0)
 		xmon_on = 0;
-	else if (strncmp(p, "nobt", 4) == 0)
-		xmon_no_auto_backtrace = 1;
 	else
 		return 1;