Message ID | 1479806759-5409-1-git-send-email-ravi.bangoria@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com> writes: > Xmon data-breakpoint feature is broken. > > Whenever there is a watchpoint match occurs, hw_breakpoint_handler will > be called by do_break via notifier chains mechanism. If watchpoint is > registered by xmon, hw_breakpoint_handler won't find any associated > perf_event and returns immediately with NOTIFY_STOP. Similarly, do_break > also returns without notifying to xmon. > > Solve this by returning NOTIFY_DONE when hw_breakpoint_handler does not > find any perf_event associated with matched watchpoint. .. rather than NOTIFY_STOP, which tells the core code to continue calling the other breakpoint handlers including the xmon one. Right? Also any idea when we broke this? cheers
Thanks Michael, On Tuesday 22 November 2016 05:03 PM, Michael Ellerman wrote: > Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com> writes: > >> Xmon data-breakpoint feature is broken. >> >> Whenever there is a watchpoint match occurs, hw_breakpoint_handler will >> be called by do_break via notifier chains mechanism. If watchpoint is >> registered by xmon, hw_breakpoint_handler won't find any associated >> perf_event and returns immediately with NOTIFY_STOP. Similarly, do_break >> also returns without notifying to xmon. >> >> Solve this by returning NOTIFY_DONE when hw_breakpoint_handler does not >> find any perf_event associated with matched watchpoint. > .. rather than NOTIFY_STOP, which tells the core code to continue > calling the other breakpoint handlers including the xmon one. > > Right? Yes. > Also any idea when we broke this? Hmm, not sure exactly. The code is same since it was merged in 2010 when support for hw_breakpoint was added for server processor. -Ravi > cheers >
Hi Michael, Can you please pull this patch. Thanks, Ravi On Tuesday 22 November 2016 02:55 PM, Ravi Bangoria wrote: > Xmon data-breakpoint feature is broken. > > Whenever there is a watchpoint match occurs, hw_breakpoint_handler will > be called by do_break via notifier chains mechanism. If watchpoint is > registered by xmon, hw_breakpoint_handler won't find any associated > perf_event and returns immediately with NOTIFY_STOP. Similarly, do_break > also returns without notifying to xmon. > > Solve this by returning NOTIFY_DONE when hw_breakpoint_handler does not > find any perf_event associated with matched watchpoint. > > Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com> > --- > arch/powerpc/kernel/hw_breakpoint.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/kernel/hw_breakpoint.c b/arch/powerpc/kernel/hw_breakpoint.c > index 03d089b..469d86d 100644 > --- a/arch/powerpc/kernel/hw_breakpoint.c > +++ b/arch/powerpc/kernel/hw_breakpoint.c > @@ -228,8 +228,10 @@ int hw_breakpoint_handler(struct die_args *args) > rcu_read_lock(); > > bp = __this_cpu_read(bp_per_reg); > - if (!bp) > + if (!bp) { > + rc = NOTIFY_DONE; > goto out; > + } > info = counter_arch_bp(bp); > > /*
On Tue, 2016-11-22 at 09:25:59 UTC, Ravi Bangoria wrote: > Xmon data-breakpoint feature is broken. > > Whenever there is a watchpoint match occurs, hw_breakpoint_handler will > be called by do_break via notifier chains mechanism. If watchpoint is > registered by xmon, hw_breakpoint_handler won't find any associated > perf_event and returns immediately with NOTIFY_STOP. Similarly, do_break > also returns without notifying to xmon. > > Solve this by returning NOTIFY_DONE when hw_breakpoint_handler does not > find any perf_event associated with matched watchpoint. > > Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com> Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/c21a493a2b44650707d06741601894 cheers
diff --git a/arch/powerpc/kernel/hw_breakpoint.c b/arch/powerpc/kernel/hw_breakpoint.c index 03d089b..469d86d 100644 --- a/arch/powerpc/kernel/hw_breakpoint.c +++ b/arch/powerpc/kernel/hw_breakpoint.c @@ -228,8 +228,10 @@ int hw_breakpoint_handler(struct die_args *args) rcu_read_lock(); bp = __this_cpu_read(bp_per_reg); - if (!bp) + if (!bp) { + rc = NOTIFY_DONE; goto out; + } info = counter_arch_bp(bp); /*
Xmon data-breakpoint feature is broken. Whenever there is a watchpoint match occurs, hw_breakpoint_handler will be called by do_break via notifier chains mechanism. If watchpoint is registered by xmon, hw_breakpoint_handler won't find any associated perf_event and returns immediately with NOTIFY_STOP. Similarly, do_break also returns without notifying to xmon. Solve this by returning NOTIFY_DONE when hw_breakpoint_handler does not find any perf_event associated with matched watchpoint. Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com> --- arch/powerpc/kernel/hw_breakpoint.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)