From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753001Ab3KOQj6 (ORCPT ); Fri, 15 Nov 2013 11:39:58 -0500 Received: from cam-admin0.cambridge.arm.com ([217.140.96.50]:57020 "EHLO cam-admin0.cambridge.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751754Ab3KOQjv (ORCPT ); Fri, 15 Nov 2013 11:39:51 -0500 Date: Fri, 15 Nov 2013 16:39:36 +0000 From: Will Deacon To: Sandeepa Prabhu Cc: Masami Hiramatsu , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "patches@linaro.org" , "linaro-kernel@lists.linaro.org" , Catalin Marinas , "steve.capper@linaro.org" , "nico@linaro.org" , "srikar@linux.vnet.ibm.com" , "rostedt@goodmis.org" , "dsaxena@linaro.org" , "Vijaya.Kumar@caviumnetworks.com" , Jiang Liu , "yrl.pp-manager.tt@hitachi.com" , Peter Zijlstra , Ingo Molnar Subject: Re: Re: Re: [PATCH RFC 2/6] arm64: Kprobes with single stepping support Message-ID: <20131115163936.GI19468@mudshark.cambridge.arm.com> References: <52808D53.7080904@hitachi.com> <5280B6C8.7050807@hitachi.com> <20131111105812.GC28302@mudshark.cambridge.arm.com> <528114C4.5000506@hitachi.com> <5281D848.7000502@hitachi.com> <20131113143110.GF28881@mudshark.cambridge.arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 13, 2013 at 03:55:42PM +0000, Sandeepa Prabhu wrote: > On 13 November 2013 20:01, Will Deacon wrote: > > On Wed, Nov 13, 2013 at 06:55:33AM +0000, Sandeepa Prabhu wrote: > >> 1. Placing watchpoint ( attr.bp_type = HW_BREAKPOINT_W | > >> HW_BREAKPOINT_R) upon vfs_symlink symbol, but seems watch-point is not > >> triggering at all. > > > > vfs_symlink is a function. Why would you expect to write it? > This is generic test module (samples/hw_breakpoint/data_breakpoint.ko) > which places watchpoint for bothe read/write. > Atleast watchpt should have triggered for Read right? I also tried > with othe functions like do_fork, vfs_read etc but no hit. You'd need to place something for exec if you want to see anything on the instruction side. A read by the instruction fetcher does not trigger a read watchpoint on ARM. > >> 2. Placing text breakpoint (modified sample module with attr.bp_type > >> = HW_BREAKPOINT_X) upon vfs_symlink, and run "ln -s /dev/null > >> /tmp/foo". This time, breakpoint hit but exception is re-cursing > >> infinitely! > > > > The problem here is that we expect the overflow handler to deal with the > > stepping (like GDB does via ptrace). If you don't register a handler, the > > kernel will do the step (like you would get if you used perf stat -e > > mem:0xNNNN:x). > [This test was done on upstream branch, without kprobes patches.] > Hmm, then this is expected with test breakpoint right? is this > handling to be done by perf and ptrace? perf stat doesn't register an overflow handler, so the hw_breakpoint backend will handle the step. ptrace registers a handler which sends a SIGTRAP to the debugger (e.g. gdb), which handles the step manually (probably using a PTRACE_SINGLESTEP request). > I did not see arm64 support in linux/tools/perf/, there are multiple > patches in mailing list though. Are you aware of any version of perf > that work with arm64? The perf tool should work fine on arm64 using mainline. Are you seeing problems? Will