All of lore.kernel.org
 help / color / mirror / Atom feed
From: masami.hiramatsu.pt@hitachi.com (Masami Hiramatsu)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RFC 2/6] arm64: Kprobes with single stepping support
Date: Tue, 12 Nov 2013 19:17:39 +0900	[thread overview]
Message-ID: <52820043.6090107@hitachi.com> (raw)
In-Reply-To: <CA+b37P2EgB0toYwhLny8k-cbrziBVXURST5kHNXcY7AF-CNVLg@mail.gmail.com>

(2013/11/12 17:44), Sandeepa Prabhu wrote:
> On 12 November 2013 12:57, Masami Hiramatsu
> <masami.hiramatsu.pt@hitachi.com> wrote:
>> (2013/11/12 15:23), Sandeepa Prabhu wrote:
>>>>>> OK, I've ensured that the hw_breakpoint (from perf) can work
>>>>>> with kprobes (from ftrace) at the same address on x86.
>>>>>> So if arm64 already support hw_breakpoint on perf, kprobes should
>>>>>> work with it.
>>>>>
>>>>> Single-stepping on x86 is different to the step behaviour on arm64 afaik. On
>>>>> ARM, we have to manually remove the breakpoint, perform a single-step, then
>>>>> add the breakpoint again. If we re-enable debug exceptions in the kprobe
>>>>> handler, the step will complete early and we'll never step off the
>>>>> breakpoint.
>>>>
>>>> I'm unsure about arm64's debug feature behavior, what does happen when
>>>> it performs a single-step on sw-breakpoint?
>>>>
>>>>> Sandeepa: I think you need to retry Masami's test on the arm64 model, since
>>>>> I'm fairly sure it won't work as expected without some additional code.
>>>>
>>>> OK, anyway, for testing same one, we need to port ftrace first. So the next
>>
>> Sorry for confusion, s/next/fallback is what I meant. Making a kprobe module
>> can be done without ftrace port.
> Yes, got it, all my verification until now are done using sample
> modules only,  looking out for perf (or some other mechanism: ptrace?)
> that uses v8 hw breakpoint.

Yes, kprobe vs. perf and uprobe vs. ptrace :)


>>>> plan is to make a kprobe module to put a probe (which just printk something)
>>>> on a specific function (e.g. vfs_symlink), and run perf record with
>>>> hw-breakpoint as below
>>>>
>>>> $ perf record -e "mem:0xXXXXXX:k" ln -s /dev/null /tmp/foo
>>>>
>>>> Note that 0xXXXXXX is the address of vfs_symlink.
>>>>
>>>> After that, you can see the message in dmesg and also check the perf result
>>>> with "sudo perf script --dump" (you can find a PERF_RECORD_SAMPLE entry if
>>>> it works)
>>> Thanks for steps, ARM64 ftrace patches are under review on arm mailing
>>> list, I can contact the (linaro) developer implementing ftrace on
>>> what's supported and then figure-out a way to test this concurrency of
>>> kprobes breakpoint and hardware breakpoint.
>>
>> Would you mean this? :)
>> http://www.spinics.net/lists/arm-kernel/msg278477.html
>>
>> Wow, it seems that this also has some works around instruction
>> manipulation (and confusable filenames...)
> I referred to: http://lwn.net/Articles/572323/  which is another
> implementation and on LAKML

OK, I'll check that (and looks good at a glance).
By the way, I concern about Linaro guys who looks working a bit far
from the LKML and original feature maintainers. Please contact them,
I'm sure they don't bite your hand :)

BTW, I'm currently trying a general housecleaning of __kprobes
annotations. It may also have impact on your patch.
https://lkml.org/lkml/2013/11/8/187

Thank you,

-- 
Masami HIRAMATSU
IT Management Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt at hitachi.com

WARNING: multiple messages have this Message-ID (diff)
From: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
To: Sandeepa Prabhu <sandeepa.prabhu@linaro.org>
Cc: Will Deacon <will.deacon@arm.com>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"patches@linaro.org" <patches@linaro.org>,
	"linaro-kernel@lists.linaro.org" <linaro-kernel@lists.linaro.org>,
	Catalin Marinas <Catalin.Marinas@arm.com>,
	"steve.capper@linaro.org" <steve.capper@linaro.org>,
	"nico@linaro.org" <nico@linaro.org>,
	"srikar@linux.vnet.ibm.com" <srikar@linux.vnet.ibm.com>,
	"rostedt@goodmis.org" <rostedt@goodmis.org>,
	"dsaxena@linaro.org" <dsaxena@linaro.org>,
	"Vijaya.Kumar@caviumnetworks.com"
	<Vijaya.Kumar@caviumnetworks.com>, Jiang Liu <liuj97@gmail.com>,
	"yrl.pp-manager.tt@hitachi.com" <yrl.pp-manager.tt@hitachi.com>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Ingo Molnar <mingo@redhat.com>
Subject: Re: Re: Re: Re: [PATCH RFC 2/6] arm64: Kprobes with single stepping support
Date: Tue, 12 Nov 2013 19:17:39 +0900	[thread overview]
Message-ID: <52820043.6090107@hitachi.com> (raw)
In-Reply-To: <CA+b37P2EgB0toYwhLny8k-cbrziBVXURST5kHNXcY7AF-CNVLg@mail.gmail.com>

(2013/11/12 17:44), Sandeepa Prabhu wrote:
> On 12 November 2013 12:57, Masami Hiramatsu
> <masami.hiramatsu.pt@hitachi.com> wrote:
>> (2013/11/12 15:23), Sandeepa Prabhu wrote:
>>>>>> OK, I've ensured that the hw_breakpoint (from perf) can work
>>>>>> with kprobes (from ftrace) at the same address on x86.
>>>>>> So if arm64 already support hw_breakpoint on perf, kprobes should
>>>>>> work with it.
>>>>>
>>>>> Single-stepping on x86 is different to the step behaviour on arm64 afaik. On
>>>>> ARM, we have to manually remove the breakpoint, perform a single-step, then
>>>>> add the breakpoint again. If we re-enable debug exceptions in the kprobe
>>>>> handler, the step will complete early and we'll never step off the
>>>>> breakpoint.
>>>>
>>>> I'm unsure about arm64's debug feature behavior, what does happen when
>>>> it performs a single-step on sw-breakpoint?
>>>>
>>>>> Sandeepa: I think you need to retry Masami's test on the arm64 model, since
>>>>> I'm fairly sure it won't work as expected without some additional code.
>>>>
>>>> OK, anyway, for testing same one, we need to port ftrace first. So the next
>>
>> Sorry for confusion, s/next/fallback is what I meant. Making a kprobe module
>> can be done without ftrace port.
> Yes, got it, all my verification until now are done using sample
> modules only,  looking out for perf (or some other mechanism: ptrace?)
> that uses v8 hw breakpoint.

Yes, kprobe vs. perf and uprobe vs. ptrace :)


>>>> plan is to make a kprobe module to put a probe (which just printk something)
>>>> on a specific function (e.g. vfs_symlink), and run perf record with
>>>> hw-breakpoint as below
>>>>
>>>> $ perf record -e "mem:0xXXXXXX:k" ln -s /dev/null /tmp/foo
>>>>
>>>> Note that 0xXXXXXX is the address of vfs_symlink.
>>>>
>>>> After that, you can see the message in dmesg and also check the perf result
>>>> with "sudo perf script --dump" (you can find a PERF_RECORD_SAMPLE entry if
>>>> it works)
>>> Thanks for steps, ARM64 ftrace patches are under review on arm mailing
>>> list, I can contact the (linaro) developer implementing ftrace on
>>> what's supported and then figure-out a way to test this concurrency of
>>> kprobes breakpoint and hardware breakpoint.
>>
>> Would you mean this? :)
>> http://www.spinics.net/lists/arm-kernel/msg278477.html
>>
>> Wow, it seems that this also has some works around instruction
>> manipulation (and confusable filenames...)
> I referred to: http://lwn.net/Articles/572323/  which is another
> implementation and on LAKML

OK, I'll check that (and looks good at a glance).
By the way, I concern about Linaro guys who looks working a bit far
from the LKML and original feature maintainers. Please contact them,
I'm sure they don't bite your hand :)

BTW, I'm currently trying a general housecleaning of __kprobes
annotations. It may also have impact on your patch.
https://lkml.org/lkml/2013/11/8/187

Thank you,

-- 
Masami HIRAMATSU
IT Management Research Dept. Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com



  reply	other threads:[~2013-11-12 10:17 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-17 11:17 [PATCH RFC v2 0/6] ARM64: Add kernel probes(Kprobes) support Sandeepa Prabhu
2013-10-17 11:17 ` Sandeepa Prabhu
2013-10-17 11:17 ` [PATCH RFC v4 1/6] arm64: support single-step and breakpoint handler hooks Sandeepa Prabhu
2013-10-17 11:17   ` Sandeepa Prabhu
2013-10-25 15:22   ` Will Deacon
2013-10-25 15:22     ` Will Deacon
2013-12-03 14:33     ` Sandeepa Prabhu
2013-12-03 14:33       ` Sandeepa Prabhu
2013-12-03 19:44       ` Will Deacon
2013-12-03 19:44         ` Will Deacon
2013-10-17 11:17 ` [PATCH RFC 2/6] arm64: Kprobes with single stepping support Sandeepa Prabhu
2013-10-17 11:17   ` Sandeepa Prabhu
2013-11-08 16:56   ` Will Deacon
2013-11-08 16:56     ` Will Deacon
2013-11-09  9:10     ` Masami Hiramatsu
2013-11-09  9:10       ` Masami Hiramatsu
2013-11-11  5:39       ` Sandeepa Prabhu
2013-11-11  5:39         ` Sandeepa Prabhu
2013-11-11  7:54         ` Masami Hiramatsu
2013-11-11  7:54           ` Masami Hiramatsu
2013-11-11 10:51           ` Masami Hiramatsu
2013-11-11 10:51             ` Masami Hiramatsu
2013-11-11 10:58             ` Will Deacon
2013-11-11 10:58               ` Will Deacon
2013-11-11 17:32               ` Masami Hiramatsu
2013-11-11 17:32                 ` Masami Hiramatsu
2013-11-12  6:23                 ` Sandeepa Prabhu
2013-11-12  6:23                   ` Sandeepa Prabhu
2013-11-12  7:27                   ` Masami Hiramatsu
2013-11-12  7:27                     ` Re: " Masami Hiramatsu
2013-11-12  8:44                     ` Sandeepa Prabhu
2013-11-12  8:44                       ` Re: " Sandeepa Prabhu
2013-11-12 10:17                       ` Masami Hiramatsu [this message]
2013-11-12 10:17                         ` Masami Hiramatsu
2013-11-12 10:55                         ` Sandeepa Prabhu
2013-11-12 10:55                           ` Re: Re: " Sandeepa Prabhu
2013-11-12 14:11                           ` Masami Hiramatsu
2013-11-12 14:11                             ` Re: Re: Re: " Masami Hiramatsu
2013-11-12 16:59                           ` Steven Rostedt
2013-11-12 16:59                             ` Steven Rostedt
2013-11-13 16:05                             ` Masami Hiramatsu
2013-11-13 16:05                               ` Masami Hiramatsu
2013-11-13  6:55                     ` Sandeepa Prabhu
2013-11-13  7:08                       ` Sandeepa Prabhu
2013-11-13  7:08                         ` Re: " Sandeepa Prabhu
2013-11-13 14:07                       ` Masami Hiramatsu
2013-11-13 14:07                         ` Re: Re: " Masami Hiramatsu
2013-11-13 14:31                       ` Will Deacon
2013-11-13 14:31                         ` Re: " Will Deacon
2013-11-13 15:55                         ` Sandeepa Prabhu
2013-11-13 15:55                           ` Re: " Sandeepa Prabhu
2013-11-15 16:39                           ` Will Deacon
2013-11-15 16:39                             ` Re: " Will Deacon
2013-11-18  6:55                             ` Sandeepa Prabhu
2013-11-18  6:55                               ` Re: " Sandeepa Prabhu
2013-11-18  8:51                               ` Sandeepa Prabhu
2013-11-18  8:51                                 ` Re: " Sandeepa Prabhu
2013-11-13 13:58               ` Peter Zijlstra
2013-11-13 13:58                 ` Peter Zijlstra
2013-11-13 14:20                 ` Will Deacon
2013-11-13 14:20                   ` Will Deacon
2013-11-11  5:35     ` Sandeepa Prabhu
2013-11-11  5:35       ` Sandeepa Prabhu
2013-11-11 11:21       ` Will Deacon
2013-11-11 11:21         ` Will Deacon
2013-11-12  6:52         ` Sandeepa Prabhu
2013-11-12  6:52           ` Sandeepa Prabhu
2013-11-15 16:37           ` Will Deacon
2013-11-15 16:37             ` Will Deacon
2013-11-18  6:43             ` Sandeepa Prabhu
2013-11-18  6:43               ` Sandeepa Prabhu
2013-10-17 11:17 ` [PATCH RFC 3/6] arm64: Kprobes instruction simulation support Sandeepa Prabhu
2013-10-17 11:17   ` Sandeepa Prabhu
2013-11-08 17:03   ` Will Deacon
2013-11-08 17:03     ` Will Deacon
2013-11-11  5:58     ` Sandeepa Prabhu
2013-11-11  5:58       ` Sandeepa Prabhu
2013-10-17 11:17 ` [PATCH RFC 4/6] arm64: Add kernel return probes support(kretprobes) Sandeepa Prabhu
2013-10-17 11:17   ` Sandeepa Prabhu
2013-11-08 17:04   ` Will Deacon
2013-11-08 17:04     ` Will Deacon
2013-11-11  4:29     ` Sandeepa Prabhu
2013-11-11  4:29       ` Sandeepa Prabhu
2013-11-11  7:53       ` AKASHI Takahiro
2013-11-11  7:53         ` AKASHI Takahiro
2013-11-11  8:55         ` Sandeepa Prabhu
2013-11-11  8:55           ` Sandeepa Prabhu
2013-10-17 11:17 ` [PATCH RFC 5/6] arm64: Enable kprobes support for arm64 platform Sandeepa Prabhu
2013-10-17 11:17   ` Sandeepa Prabhu
2013-10-17 11:17 ` [PATCH RFC 6/6] kprobes: Add cases for arm and arm64 in sample module Sandeepa Prabhu
2013-10-17 11:17   ` Sandeepa Prabhu
2013-10-25 15:24   ` Will Deacon
2013-10-25 15:24     ` Will Deacon
2013-11-06 11:05     ` Sandeepa Prabhu
2013-11-06 11:05       ` Sandeepa Prabhu
2013-10-18  8:32 ` [PATCH RFC v2 0/6] ARM64: Add kernel probes(Kprobes) support Masami Hiramatsu
2013-10-18  8:32   ` Masami Hiramatsu
2013-10-21  4:17   ` Sandeepa Prabhu
2013-10-21  4:17     ` Sandeepa Prabhu

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=52820043.6090107@hitachi.com \
    --to=masami.hiramatsu.pt@hitachi.com \
    --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.