linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] xmon: Setup xmon debugger hooks when first break-point is set
@ 2018-03-04 17:30 Vaibhav Jain
  2018-03-04 21:29 ` Balbir Singh
  2018-03-14  9:28 ` [v2] " Michael Ellerman
  0 siblings, 2 replies; 3+ messages in thread
From: Vaibhav Jain @ 2018-03-04 17:30 UTC (permalink / raw)
  To: Michael Ellerman, Balbir Singh
  Cc: Vaibhav Jain, Frederic Barrat, linuxppc-dev, linux-kernel,
	Benjamin Herrenschmidt, Paul Mackerras, Nicholas Piggin,
	Douglas Miller

Presently sysrq key for xmon('x') is registered during kernel init
irrespective of the value of kernel param 'xmon'. Thus xmon is enabled
even if 'xmon=off' is passed on the kernel command line. However this
doesn't enable the kernel debugger hooks needed for instruction or data
breakpoints. Thus when a break-point is hit with xmon=off a kernel oops
of the form below is reported:

Oops: Exception in kernel mode, sig: 5 [#1]
< snip >
Trace/breakpoint trap

To fix this the patch checks and enables debugger hooks when an
instruction or data break-point is set via xmon console.

Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
---
Change-log:

v2 -> Moved the code that was force enabling xmon to a separate inline
      function (Balbir)

      The change related to clearing all breakpoints when xmon is
      disabled via debugfs will be respinned as a separate
      patch. (Mpe)
---
 arch/powerpc/xmon/xmon.c | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
index 82e1a3ee6e0f..e9c7ec8f15f8 100644
--- a/arch/powerpc/xmon/xmon.c
+++ b/arch/powerpc/xmon/xmon.c
@@ -1273,6 +1273,18 @@ static long check_bp_loc(unsigned long addr)
 	return 1;
 }
 
+/* Force enable xmon if not already enabled */
+static inline void force_enable_xmon(void)
+{
+	static const char warnxmon[] = "xmon: Enabling debugger hooks\n";
+
+	/* Enable xmon hooks if needed */
+	if (!xmon_on) {
+		printf(warnxmon);
+		xmon_on = 1;
+	}
+}
+
 static char *breakpoint_help_string =
     "Breakpoint command usage:\n"
     "b                show breakpoints\n"
@@ -1315,6 +1327,8 @@ bpt_cmds(void)
 			dabr.address &= ~HW_BRK_TYPE_DABR;
 			dabr.enabled = mode | BP_DABR;
 		}
+
+		force_enable_xmon();
 		break;
 
 	case 'i':	/* bi - hardware instr breakpoint */
@@ -1335,6 +1349,7 @@ bpt_cmds(void)
 		if (bp != NULL) {
 			bp->enabled |= BP_CIABR;
 			iabr = bp;
+			force_enable_xmon();
 		}
 		break;
 #endif
@@ -1399,8 +1414,10 @@ bpt_cmds(void)
 		if (!check_bp_loc(a))
 			break;
 		bp = new_breakpoint(a);
-		if (bp != NULL)
+		if (bp != NULL) {
 			bp->enabled |= BP_TRAP;
+			force_enable_xmon();
+		}
 		break;
 	}
 }
-- 
2.14.3

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH v2] xmon: Setup xmon debugger hooks when first break-point is set
  2018-03-04 17:30 [PATCH v2] xmon: Setup xmon debugger hooks when first break-point is set Vaibhav Jain
@ 2018-03-04 21:29 ` Balbir Singh
  2018-03-14  9:28 ` [v2] " Michael Ellerman
  1 sibling, 0 replies; 3+ messages in thread
From: Balbir Singh @ 2018-03-04 21:29 UTC (permalink / raw)
  To: Vaibhav Jain
  Cc: Michael Ellerman, Frederic Barrat,
	open list:LINUX FOR POWERPC (32-BIT AND 64-BIT),
	linux-kernel, Benjamin Herrenschmidt, Paul Mackerras,
	Nicholas Piggin, Douglas Miller

On Mon, Mar 5, 2018 at 4:30 AM, Vaibhav Jain <vaibhav@linux.vnet.ibm.com> wrote:
> Presently sysrq key for xmon('x') is registered during kernel init
> irrespective of the value of kernel param 'xmon'. Thus xmon is enabled
> even if 'xmon=off' is passed on the kernel command line. However this
> doesn't enable the kernel debugger hooks needed for instruction or data
> breakpoints. Thus when a break-point is hit with xmon=off a kernel oops
> of the form below is reported:
>
> Oops: Exception in kernel mode, sig: 5 [#1]
> < snip >
> Trace/breakpoint trap
>
> To fix this the patch checks and enables debugger hooks when an
> instruction or data break-point is set via xmon console.
>
> Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
> ---
Reviewed-by: Balbir Singh <bsingharora@gmail.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [v2] xmon: Setup xmon debugger hooks when first break-point is set
  2018-03-04 17:30 [PATCH v2] xmon: Setup xmon debugger hooks when first break-point is set Vaibhav Jain
  2018-03-04 21:29 ` Balbir Singh
@ 2018-03-14  9:28 ` Michael Ellerman
  1 sibling, 0 replies; 3+ messages in thread
From: Michael Ellerman @ 2018-03-14  9:28 UTC (permalink / raw)
  To: Vaibhav Jain, Balbir Singh
  Cc: Vaibhav Jain, Frederic Barrat, linux-kernel, Paul Mackerras,
	Nicholas Piggin, Douglas Miller, linuxppc-dev

On Sun, 2018-03-04 at 17:30:25 UTC, Vaibhav Jain wrote:
> Presently sysrq key for xmon('x') is registered during kernel init
> irrespective of the value of kernel param 'xmon'. Thus xmon is enabled
> even if 'xmon=off' is passed on the kernel command line. However this
> doesn't enable the kernel debugger hooks needed for instruction or data
> breakpoints. Thus when a break-point is hit with xmon=off a kernel oops
> of the form below is reported:
> 
> Oops: Exception in kernel mode, sig: 5 [#1]
> < snip >
> Trace/breakpoint trap
> 
> To fix this the patch checks and enables debugger hooks when an
> instruction or data break-point is set via xmon console.
> 
> Signed-off-by: Vaibhav Jain <vaibhav@linux.vnet.ibm.com>
> Reviewed-by: Balbir Singh <bsingharora@gmail.com>

Applied to powerpc next, thanks.

https://git.kernel.org/powerpc/c/e1368d0c9edbc366e45216e7295fd6

cheers

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-03-14  9:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-04 17:30 [PATCH v2] xmon: Setup xmon debugger hooks when first break-point is set Vaibhav Jain
2018-03-04 21:29 ` Balbir Singh
2018-03-14  9:28 ` [v2] " Michael Ellerman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).