diff mbox

[2/2] powerpc/xmon: Disable tracing when entering xmon

Message ID 1501685906-10169-2-git-send-email-leitao@debian.org (mailing list archive)
State Superseded
Headers show

Commit Message

Breno Leitao Aug. 2, 2017, 2:58 p.m. UTC
If tracing is enabled and you get into xmon, the tracing buffer
continues to be updated, causing possible loss of data and unnecessary
tracing information coming from xmon functions.

This patch simple disables tracing when entering xmon, and reenables it
if the kernel is resumed (with 'x').

Signed-off-by: Breno Leitao <leitao@debian.org>
---
 arch/powerpc/xmon/xmon.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Naveen N. Rao Aug. 2, 2017, 4:23 p.m. UTC | #1
On 2017/08/02 11:58AM, Breno Leitao wrote:
> If tracing is enabled and you get into xmon, the tracing buffer
> continues to be updated, causing possible loss of data and unnecessary
> tracing information coming from xmon functions.
> 
> This patch simple disables tracing when entering xmon, and reenables it
> if the kernel is resumed (with 'x').
> 
> Signed-off-by: Breno Leitao <leitao@debian.org>

Two minor nits...

> ---
>  arch/powerpc/xmon/xmon.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
> index 0cbd910193fa..0b766d7780fa 100644
> --- a/arch/powerpc/xmon/xmon.c
> +++ b/arch/powerpc/xmon/xmon.c
> @@ -89,6 +89,7 @@ static unsigned long nidump = 16;
>  static unsigned long ncsum = 4096;
>  static int termch;
>  static char tmpstr[128];
> +static char tracing_enabled;
	  ^^^^
	  int

> 
>  static long bus_error_jmp[JMP_BUF_LEN];
>  static int catch_memory_errors;
> @@ -462,6 +463,9 @@ static int xmon_core(struct pt_regs *regs, int fromipi)
>  	local_irq_save(flags);
>  	hard_irq_disable();
> 
> +	tracing_enabled = tracing_is_on();
> +	tracing_off();
> +
>  	bp = in_breakpoint_table(regs->nip, &offset);
>  	if (bp != NULL) {
>  		regs->nip = bp->address + offset;
> @@ -982,6 +986,8 @@ cmds(struct pt_regs *excp)
>  			break;
>  		case 'x':
>  		case 'X':
> +			if (tracing_enabled)
> +				tracing_on();
>  			return cmd;
>  		case EOF:
>  			printf(" <no input ...>\n");
> @@ -2353,7 +2359,6 @@ static void dump_tracing(void)
>  	else
>  		ftrace_dump(DUMP_ALL);
> 
> -	tracing_on();
>  }

I'd also remove the extra blank line there.

Apart from those:
Acked-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>

Thanks,
Naveen
diff mbox

Patch

diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index 0cbd910193fa..0b766d7780fa 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -89,6 +89,7 @@  static unsigned long nidump = 16;
 static unsigned long ncsum = 4096;
 static int termch;
 static char tmpstr[128];
+static char tracing_enabled;
 
 static long bus_error_jmp[JMP_BUF_LEN];
 static int catch_memory_errors;
@@ -462,6 +463,9 @@  static int xmon_core(struct pt_regs *regs, int fromipi)
 	local_irq_save(flags);
 	hard_irq_disable();
 
+	tracing_enabled = tracing_is_on();
+	tracing_off();
+
 	bp = in_breakpoint_table(regs->nip, &offset);
 	if (bp != NULL) {
 		regs->nip = bp->address + offset;
@@ -982,6 +986,8 @@  cmds(struct pt_regs *excp)
 			break;
 		case 'x':
 		case 'X':
+			if (tracing_enabled)
+				tracing_on();
 			return cmd;
 		case EOF:
 			printf(" <no input ...>\n");
@@ -2353,7 +2359,6 @@  static void dump_tracing(void)
 	else
 		ftrace_dump(DUMP_ALL);
 
-	tracing_on();
 }
 
 static void dump_all_pacas(void)