All of lore.kernel.org
 help / color / mirror / Atom feed
From: steve.capper@linaro.org (Steve Capper)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 0/5] ARM64: Add kernel probes(Kprobes) support
Date: Wed, 26 Nov 2014 10:03:26 +0000	[thread overview]
Message-ID: <20141126100325.GA9157@linaro.org> (raw)
In-Reply-To: <54759041.9080105@hitachi.com>

On Wed, Nov 26, 2014 at 05:33:05PM +0900, Masami Hiramatsu wrote:
> (2014/11/21 0:02), Steve Capper wrote:
> > On Tue, Nov 18, 2014 at 01:32:50AM -0500, David Long wrote:
> >> From: "David A. Long" <dave.long@linaro.org>
> >>
> >> This patchset is heavily based on Sandeepa Prabhu's ARM v8 kprobes patches, first
> >> seen in October 2013.  This version attempts to address concerns raised by
> >> reviewers and also fixes problems discovered during testing, particularly during
> >> SMP testing.
> >>
> >> This patchset adds support for kernel probes(kprobes), jump probes(jprobes)
> >> and return probes(kretprobes) support for ARM64.
> >>
> >> Kprobes mechanism makes use of software breakpoint and single stepping
> >> support available in the ARM v8 kernel.
> >>
> >> Changes since v2 include:
> >>
> >> 1) Removal of NOP padding in kprobe XOL slots.  Slots are now exactly one
> >> instruction long.
> >> 2) Disabling of interrupts during execution in single-step mode.
> >> 3) Fixing of numerous problems in instruction simulation code.
> >> 4) Support for the HAVE_REGS_AND_STACK_ACCESS_API feature is added, to allow
> >> access to kprobes through debugfs.
> >> 5) kprobes is *not* enabled in defconfig.
> >> 6) Numerous complaints from checkpatch have been cleaned up, although a couple
> >> remain as removing the function pointer typedefs results in ugly code.
> > 
> > Hi David,
> > I've been playing with this on a Juno board.
> > I ran into one crash, which I'm not yet sure is an issue, but thought I
> > would flag it.
> > 
> > I opted to put a kprobe on memcpy, this is an assembler function so I
> > located it via:
> > $ nm ./vmlinux | grep \ memcpy$
> > fffffe0000408a00 T memcpy
> > 
> > Then placed a probe as follows:
> > echo "p:memcpy 0xfffffe0000408a00 %x2" > /sys/kernel/debug/tracing/kprobe_events
> 
> You can also do "p:memcpy memcpy %x2" > ...

Thanks, that is easier :-).

> 
> > 
> > I was able to cat out the /sys/kernel/debug/tracing/trace_pipe file and
> > activate the probe via:
> > echo 1 > /sys/kernel/debug/tracing/events/kprobes/enable
> > 
> > Everything worked well, and I got the expected output.
> > 
> > I then tried to record events with perf via:
> > perf record -e kprobes:memcpy -a sleep 5
> > 
> > Then I got an, easily reproducible, panic (pasted below).
> 
> On x86, I didn't get a panic.
> 
> > 
> > The point of failure in the panic was:
> > fs/buffer.c:1257
> > 
> > static inline void check_irqs_on(void)
> > {
> > #ifdef irqs_disabled
> >         BUG_ON(irqs_disabled());
> > #endif
> > }
> > 
> > I will do some more digging; but I have managed to code up an ftrace
> > static probe on memcpy and record that using perf on arm64 without
> > issue.
> 
> Yeah, this can be a bug related to kprobes recursive call.
> Could you do "cat /sys/kernel/debug/tracing/kprobe_profile" (before
> run perf)?
> The first digit is # of hit, and the second is # of missed (since
> recursively called).
> 
> On x86, right after tracing by ftrace, we have no missed probe.
> 
>  # cat /sys/kernel/debug/tracing/kprobe_profile
>   memcpy                                                  4547               0
> 
> But after tracing by perf, many missed events I could see.
> 
>  # cat /sys/kernel/debug/tracing/kprobe_profile
>   memcpy                                                413983            7632
> 
> So I guess this can be related to the recursive call (which
> is correctly handled on x86).
> 

Before running perf, I got the following:

 # cat /sys/kernel/debug/tracing/kprobe_profile
   memcpy                                                   838               0

Unfortunately, after the crash, I was then unable to take any other
measurements.

I rebooted, set up the kprobe, then ran `./hackbench 100 process 1000',
to try and exacerbate things, and got the following:
 # cat /sys/kernel/debug/tracing/kprobe_profile 
   memcpy                                                100677               0

So no missed events thusfar.

Cheers,
-- 
Steve

WARNING: multiple messages have this Message-ID (diff)
From: Steve Capper <steve.capper@linaro.org>
To: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: David Long <dave.long@linaro.org>,
	linux-arm-kernel@lists.infradead.org,
	Russell King <linux@arm.linux.org.uk>,
	"Jon Medhurst (Tixy)" <tixy@linaro.org>,
	Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
	Sandeepa Prabhu <sandeepa.prabhu@linaro.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	linux-kernel@vger.kernel.org,
	Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>,
	William Cohen <wcohen@redhat.com>,
	davem@davemloft.net
Subject: Re: [PATCH v3 0/5] ARM64: Add kernel probes(Kprobes) support
Date: Wed, 26 Nov 2014 10:03:26 +0000	[thread overview]
Message-ID: <20141126100325.GA9157@linaro.org> (raw)
In-Reply-To: <54759041.9080105@hitachi.com>

On Wed, Nov 26, 2014 at 05:33:05PM +0900, Masami Hiramatsu wrote:
> (2014/11/21 0:02), Steve Capper wrote:
> > On Tue, Nov 18, 2014 at 01:32:50AM -0500, David Long wrote:
> >> From: "David A. Long" <dave.long@linaro.org>
> >>
> >> This patchset is heavily based on Sandeepa Prabhu's ARM v8 kprobes patches, first
> >> seen in October 2013.  This version attempts to address concerns raised by
> >> reviewers and also fixes problems discovered during testing, particularly during
> >> SMP testing.
> >>
> >> This patchset adds support for kernel probes(kprobes), jump probes(jprobes)
> >> and return probes(kretprobes) support for ARM64.
> >>
> >> Kprobes mechanism makes use of software breakpoint and single stepping
> >> support available in the ARM v8 kernel.
> >>
> >> Changes since v2 include:
> >>
> >> 1) Removal of NOP padding in kprobe XOL slots.  Slots are now exactly one
> >> instruction long.
> >> 2) Disabling of interrupts during execution in single-step mode.
> >> 3) Fixing of numerous problems in instruction simulation code.
> >> 4) Support for the HAVE_REGS_AND_STACK_ACCESS_API feature is added, to allow
> >> access to kprobes through debugfs.
> >> 5) kprobes is *not* enabled in defconfig.
> >> 6) Numerous complaints from checkpatch have been cleaned up, although a couple
> >> remain as removing the function pointer typedefs results in ugly code.
> > 
> > Hi David,
> > I've been playing with this on a Juno board.
> > I ran into one crash, which I'm not yet sure is an issue, but thought I
> > would flag it.
> > 
> > I opted to put a kprobe on memcpy, this is an assembler function so I
> > located it via:
> > $ nm ./vmlinux | grep \ memcpy$
> > fffffe0000408a00 T memcpy
> > 
> > Then placed a probe as follows:
> > echo "p:memcpy 0xfffffe0000408a00 %x2" > /sys/kernel/debug/tracing/kprobe_events
> 
> You can also do "p:memcpy memcpy %x2" > ...

Thanks, that is easier :-).

> 
> > 
> > I was able to cat out the /sys/kernel/debug/tracing/trace_pipe file and
> > activate the probe via:
> > echo 1 > /sys/kernel/debug/tracing/events/kprobes/enable
> > 
> > Everything worked well, and I got the expected output.
> > 
> > I then tried to record events with perf via:
> > perf record -e kprobes:memcpy -a sleep 5
> > 
> > Then I got an, easily reproducible, panic (pasted below).
> 
> On x86, I didn't get a panic.
> 
> > 
> > The point of failure in the panic was:
> > fs/buffer.c:1257
> > 
> > static inline void check_irqs_on(void)
> > {
> > #ifdef irqs_disabled
> >         BUG_ON(irqs_disabled());
> > #endif
> > }
> > 
> > I will do some more digging; but I have managed to code up an ftrace
> > static probe on memcpy and record that using perf on arm64 without
> > issue.
> 
> Yeah, this can be a bug related to kprobes recursive call.
> Could you do "cat /sys/kernel/debug/tracing/kprobe_profile" (before
> run perf)?
> The first digit is # of hit, and the second is # of missed (since
> recursively called).
> 
> On x86, right after tracing by ftrace, we have no missed probe.
> 
>  # cat /sys/kernel/debug/tracing/kprobe_profile
>   memcpy                                                  4547               0
> 
> But after tracing by perf, many missed events I could see.
> 
>  # cat /sys/kernel/debug/tracing/kprobe_profile
>   memcpy                                                413983            7632
> 
> So I guess this can be related to the recursive call (which
> is correctly handled on x86).
> 

Before running perf, I got the following:

 # cat /sys/kernel/debug/tracing/kprobe_profile
   memcpy                                                   838               0

Unfortunately, after the crash, I was then unable to take any other
measurements.

I rebooted, set up the kprobe, then ran `./hackbench 100 process 1000',
to try and exacerbate things, and got the following:
 # cat /sys/kernel/debug/tracing/kprobe_profile 
   memcpy                                                100677               0

So no missed events thusfar.

Cheers,
-- 
Steve

  reply	other threads:[~2014-11-26 10:03 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-18  6:32 [PATCH v3 0/5] ARM64: Add kernel probes(Kprobes) support David Long
2014-11-18  6:32 ` David Long
2014-11-18  6:32 ` [PATCH v3 1/5] arm64: Kprobes with single stepping support David Long
2014-11-18  6:32   ` David Long
2014-11-18 13:28   ` Jon Medhurst (Tixy)
2014-11-18 13:28     ` Jon Medhurst (Tixy)
2014-11-21  4:28     ` David Long
2014-11-21  4:28       ` David Long
2014-11-18 14:38   ` William Cohen
2014-11-18 14:38     ` William Cohen
2014-11-18 14:39   ` William Cohen
2014-11-18 14:39     ` William Cohen
2014-11-18 14:56   ` Will Deacon
2014-11-18 14:56     ` Will Deacon
2014-11-19 11:21     ` Sandeepa Prabhu
2014-11-19 11:21       ` Sandeepa Prabhu
2014-11-19 11:25       ` Will Deacon
2014-11-19 11:25         ` Will Deacon
2014-11-19 14:55         ` David Long
2014-11-19 14:55           ` David Long
2014-11-20  5:10           ` Sandeepa Prabhu
2014-11-20  5:10             ` Sandeepa Prabhu
2014-11-26  6:46           ` David Long
2014-11-26  6:46             ` David Long
2014-11-26 10:09             ` Will Deacon
2014-11-26 10:09               ` Will Deacon
2014-12-22 10:10   ` Pratyush Anand
2014-12-22 10:10     ` Pratyush Anand
2014-11-18  6:32 ` [PATCH v3 2/5] arm64: Kprobes instruction simulation support David Long
2014-11-18  6:32   ` David Long
2014-11-18 14:43   ` William Cohen
2014-11-18 14:43     ` William Cohen
2014-11-18  6:32 ` [PATCH v3 3/5] arm64: Add kernel return probes support(kretprobes) David Long
2014-11-18  6:32   ` David Long
2014-11-18 14:50   ` William Cohen
2014-11-18 14:50     ` William Cohen
2014-11-18  6:32 ` [PATCH v3 4/5] kprobes: Add arm64 case in kprobe example module David Long
2014-11-18  6:32   ` David Long
2014-11-18  6:32 ` [PATCH v3 5/5] arm64: Add HAVE_REGS_AND_STACK_ACCESS_API feature David Long
2014-11-18  6:32   ` David Long
2014-11-18 14:52   ` Will Deacon
2014-11-18 14:52     ` Will Deacon
2014-11-20  7:20     ` Masami Hiramatsu
2014-11-20  7:20       ` Masami Hiramatsu
2014-11-21  6:16     ` David Long
2014-11-21  6:16       ` David Long
2014-11-20 15:02 ` [PATCH v3 0/5] ARM64: Add kernel probes(Kprobes) support Steve Capper
2014-11-20 15:02   ` Steve Capper
2014-11-26  8:33   ` Masami Hiramatsu
2014-11-26  8:33     ` Masami Hiramatsu
2014-11-26 10:03     ` Steve Capper [this message]
2014-11-26 10:03       ` Steve Capper
2014-11-26 17:46       ` David Long
2014-11-26 17:46         ` David Long
2014-11-26 18:59         ` Steve Capper
2014-11-26 18:59           ` Steve Capper
2014-11-27  6:07           ` Masami Hiramatsu
2014-11-27  6:07             ` Masami Hiramatsu
2014-11-28 16:01             ` Steve Capper
2014-11-28 16:01               ` Steve Capper
2014-12-01  9:37               ` Masami Hiramatsu
2014-12-01  9:37                 ` Re: " Masami Hiramatsu
2014-12-02 19:27                 ` William Cohen
2014-12-02 19:27                   ` William Cohen
2014-12-02 20:00                   ` William Cohen
2014-12-02 20:00                     ` William Cohen
2014-12-03  3:36                   ` Masami Hiramatsu
2014-12-03  3:36                     ` Masami Hiramatsu
2014-12-03 14:54                 ` William Cohen
2014-12-03 14:54                   ` William Cohen
2014-12-03 22:54                   ` David Long
2014-12-03 22:54                     ` David Long
2014-12-04  0:02                     ` David Long
2014-12-04  0:02                       ` David Long
2014-12-04  1:16                     ` William Cohen
2014-12-04  1:16                       ` William Cohen
2014-12-04  2:48                       ` David Long
2014-12-04  2:48                         ` David Long
2014-12-04 10:21                         ` Steve Capper
2014-12-04 10:21                           ` Steve Capper
2014-12-04 10:43                           ` Masami Hiramatsu
2014-12-04 10:43                             ` Masami Hiramatsu
2014-12-04 11:29                             ` Steve Capper
2014-12-04 11:29                               ` Steve Capper
2014-12-04 11:53                               ` Masami Hiramatsu
2014-12-04 11:53                                 ` Masami Hiramatsu
2014-12-09 13:33                                 ` Steve Capper
2014-12-09 13:33                                   ` Steve Capper
2014-12-09 14:27                                   ` David Long
2014-12-09 14:27                                     ` David Long
2014-12-10 16:38                                     ` Steve Capper
2014-12-10 16:38                                       ` Steve Capper
2014-12-12 22:42                                       ` David Long
2014-12-12 22:42                                         ` David Long
2014-12-12 23:10                                         ` Steve Capper
2014-12-12 23:10                                           ` Steve Capper
2014-12-15  5:58                                           ` Masami Hiramatsu
2014-12-15  5:58                                             ` Masami Hiramatsu
2014-12-15  6:29                                           ` David Long
2014-12-15  6:29                                             ` David Long
2014-12-05  5:08                       ` William Cohen
2014-12-05  5:08                         ` William Cohen
2014-11-27  5:13       ` Masami Hiramatsu
2014-11-27  5:13         ` Masami Hiramatsu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20141126100325.GA9157@linaro.org \
    --to=steve.capper@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.