Message ID | 1487144990-5969-1-git-send-email-xinhui.pan@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On 15/02/2017 05:49, Pan Xinhui wrote: > Once xmon is triggered by sysrq-x, it is enabled always afterwards even > if it is disabled during boot. This will cause a system reset interrut > fail to dump. So keep xmon in its original state after exit. > > Signed-off-by: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> Patch is fine - minor typo: interrut => interrupt Feel free to add my: Tested-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com> Thanks, Guilherme > --- > arch/powerpc/xmon/xmon.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c > index 9c0e17c..721212f 100644 > --- a/arch/powerpc/xmon/xmon.c > +++ b/arch/powerpc/xmon/xmon.c > @@ -76,6 +76,7 @@ static int xmon_gate; > #endif /* CONFIG_SMP */ > > static unsigned long in_xmon __read_mostly = 0; > +static int xmon_off = 0; > > static unsigned long adrs; > static int size = 1; > @@ -3250,6 +3251,8 @@ static void sysrq_handle_xmon(int key) > /* ensure xmon is enabled */ > xmon_init(1); > debugger(get_irq_regs()); > + if (xmon_off) > + xmon_init(0); > } > > static struct sysrq_key_op sysrq_xmon_op = { > @@ -3266,7 +3269,7 @@ static int __init setup_xmon_sysrq(void) > __initcall(setup_xmon_sysrq); > #endif /* CONFIG_MAGIC_SYSRQ */ > > -static int __initdata xmon_early, xmon_off; > +static int __initdata xmon_early; > > static int __init early_parse_xmon(char *p) > { >
Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> writes: > Once xmon is triggered by sysrq-x, it is enabled always afterwards even > if it is disabled during boot. This will cause a system reset interrut > fail to dump. So keep xmon in its original state after exit. > > Signed-off-by: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> > --- > arch/powerpc/xmon/xmon.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c > index 9c0e17c..721212f 100644 > --- a/arch/powerpc/xmon/xmon.c > +++ b/arch/powerpc/xmon/xmon.c > @@ -76,6 +76,7 @@ static int xmon_gate; > #endif /* CONFIG_SMP */ > > static unsigned long in_xmon __read_mostly = 0; > +static int xmon_off = 0; > > static unsigned long adrs; > static int size = 1; > @@ -3250,6 +3251,8 @@ static void sysrq_handle_xmon(int key) > /* ensure xmon is enabled */ > xmon_init(1); > debugger(get_irq_regs()); > + if (xmon_off) > + xmon_init(0); > } I don't think this is right. xmon_off is only true if you boot with xmon=off on the command line. So if you boot with CONFIG_XMON_DEFAULT=n, and nothing on the command line, then enter xmon via sysrq, then exit, xmon will still be enabled. cheers
On 16/02/2017 03:09, Michael Ellerman wrote: > Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> writes: > >> Once xmon is triggered by sysrq-x, it is enabled always afterwards even >> if it is disabled during boot. This will cause a system reset interrut >> fail to dump. So keep xmon in its original state after exit. >> >> Signed-off-by: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> >> --- >> arch/powerpc/xmon/xmon.c | 5 ++++- >> 1 file changed, 4 insertions(+), 1 deletion(-) >> >> diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c >> index 9c0e17c..721212f 100644 >> --- a/arch/powerpc/xmon/xmon.c >> +++ b/arch/powerpc/xmon/xmon.c >> @@ -76,6 +76,7 @@ static int xmon_gate; >> #endif /* CONFIG_SMP */ >> >> static unsigned long in_xmon __read_mostly = 0; >> +static int xmon_off = 0; >> >> static unsigned long adrs; >> static int size = 1; >> @@ -3250,6 +3251,8 @@ static void sysrq_handle_xmon(int key) >> /* ensure xmon is enabled */ >> xmon_init(1); >> debugger(get_irq_regs()); >> + if (xmon_off) >> + xmon_init(0); >> } > > I don't think this is right. > > xmon_off is only true if you boot with xmon=off on the command line. > > So if you boot with CONFIG_XMON_DEFAULT=n, and nothing on the command > line, then enter xmon via sysrq, then exit, xmon will still be enabled. > Agreed, noticed it after some work in V2 of my patch. I'm addressing it there, so maybe no harm in keeping this way here.. Thanks, Guilherme > cheers >
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index 9c0e17c..721212f 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c @@ -76,6 +76,7 @@ static int xmon_gate; #endif /* CONFIG_SMP */ static unsigned long in_xmon __read_mostly = 0; +static int xmon_off = 0; static unsigned long adrs; static int size = 1; @@ -3250,6 +3251,8 @@ static void sysrq_handle_xmon(int key) /* ensure xmon is enabled */ xmon_init(1); debugger(get_irq_regs()); + if (xmon_off) + xmon_init(0); } static struct sysrq_key_op sysrq_xmon_op = { @@ -3266,7 +3269,7 @@ static int __init setup_xmon_sysrq(void) __initcall(setup_xmon_sysrq); #endif /* CONFIG_MAGIC_SYSRQ */ -static int __initdata xmon_early, xmon_off; +static int __initdata xmon_early; static int __init early_parse_xmon(char *p) {
Once xmon is triggered by sysrq-x, it is enabled always afterwards even if it is disabled during boot. This will cause a system reset interrut fail to dump. So keep xmon in its original state after exit. Signed-off-by: Pan Xinhui <xinhui.pan@linux.vnet.ibm.com> --- arch/powerpc/xmon/xmon.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)