From: masami.hiramatsu.pt@hitachi.com (Masami Hiramatsu)
To: linux-arm-kernel@lists.infradead.org
Subject: [RFC PATCH v3 15/26] early kprobes: x86: directly modify code.
Date: Fri, 20 Feb 2015 13:00:50 +0900 [thread overview]
Message-ID: <54E6B172.7080604@hitachi.com> (raw)
In-Reply-To: <1423806053-62111-1-git-send-email-wangnan0@huawei.com>
(2015/02/13 14:40), Wang Nan wrote:
> When registering early kprobes, SMP should has not been enabled, so
> doesn't require synchronization in text_poke_bp(). Simply memcpy is
> enough.
BTW, we've already have text_poke_early for this purpose.
Thank you,
>
> Signed-off-by: Wang Nan <wangnan0@huawei.com>
> ---
> arch/x86/kernel/kprobes/opt.c | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c
> index 0dd8d08..21847ab 100644
> --- a/arch/x86/kernel/kprobes/opt.c
> +++ b/arch/x86/kernel/kprobes/opt.c
> @@ -36,6 +36,7 @@
> #include <asm/alternative.h>
> #include <asm/insn.h>
> #include <asm/debugreg.h>
> +#include <asm/tlbflush.h>
>
> #include "common.h"
>
> @@ -397,8 +398,15 @@ void arch_optimize_kprobes(struct list_head *oplist)
> insn_buf[0] = RELATIVEJUMP_OPCODE;
> *(s32 *)(&insn_buf[1]) = rel;
>
> - text_poke_bp(op->kp.addr, insn_buf, RELATIVEJUMP_SIZE,
> - op->optinsn.insn);
> + if (unlikely(kprobes_is_early())) {
> + BUG_ON(!(op->kp.flags & KPROBE_FLAG_EARLY));
> + memcpy(op->kp.addr, insn_buf, RELATIVEJUMP_SIZE);
> + local_flush_tlb();
> + sync_core();
> + } else {
> + text_poke_bp(op->kp.addr, insn_buf, RELATIVEJUMP_SIZE,
> + op->optinsn.insn);
> + }
>
> list_del_init(&op->list);
> }
>
--
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Research 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: Wang Nan <wangnan0@huawei.com>
Cc: linux@arm.linux.org.uk, tglx@linutronix.de, mingo@redhat.com,
hpa@zytor.com, rostedt@goodmis.org, ananth@in.ibm.com,
anil.s.keshavamurthy@intel.com, davem@davemloft.net,
luto@amacapital.net, keescook@chromium.org, oleg@redhat.com,
dave.long@linaro.org, tixy@linaro.org, nico@linaro.org,
yalin.wang2010@gmail.com, catalin.marinas@arm.com,
Yalin.Wang@sonymobile.com, mark.rutland@arm.com,
dave.hansen@linux.intel.com, jkenisto@us.ibm.com,
anton@samba.org, stefani@seibold.net, JBeulich@suse.com,
akpm@linux-foundation.org, rusty@rustcorp.com.au,
peterz@infradead.org, prarit@redhat.com, fabf@skynet.be,
hannes@cmpxchg.org, x86@kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, lizefan@huawei.com,
"yrl.pp-manager.tt@hitachi.com" <yrl.pp-manager.tt@hitachi.com>
Subject: Re: [RFC PATCH v3 15/26] early kprobes: x86: directly modify code.
Date: Fri, 20 Feb 2015 13:00:50 +0900 [thread overview]
Message-ID: <54E6B172.7080604@hitachi.com> (raw)
In-Reply-To: <1423806053-62111-1-git-send-email-wangnan0@huawei.com>
(2015/02/13 14:40), Wang Nan wrote:
> When registering early kprobes, SMP should has not been enabled, so
> doesn't require synchronization in text_poke_bp(). Simply memcpy is
> enough.
BTW, we've already have text_poke_early for this purpose.
Thank you,
>
> Signed-off-by: Wang Nan <wangnan0@huawei.com>
> ---
> arch/x86/kernel/kprobes/opt.c | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kernel/kprobes/opt.c b/arch/x86/kernel/kprobes/opt.c
> index 0dd8d08..21847ab 100644
> --- a/arch/x86/kernel/kprobes/opt.c
> +++ b/arch/x86/kernel/kprobes/opt.c
> @@ -36,6 +36,7 @@
> #include <asm/alternative.h>
> #include <asm/insn.h>
> #include <asm/debugreg.h>
> +#include <asm/tlbflush.h>
>
> #include "common.h"
>
> @@ -397,8 +398,15 @@ void arch_optimize_kprobes(struct list_head *oplist)
> insn_buf[0] = RELATIVEJUMP_OPCODE;
> *(s32 *)(&insn_buf[1]) = rel;
>
> - text_poke_bp(op->kp.addr, insn_buf, RELATIVEJUMP_SIZE,
> - op->optinsn.insn);
> + if (unlikely(kprobes_is_early())) {
> + BUG_ON(!(op->kp.flags & KPROBE_FLAG_EARLY));
> + memcpy(op->kp.addr, insn_buf, RELATIVEJUMP_SIZE);
> + local_flush_tlb();
> + sync_core();
> + } else {
> + text_poke_bp(op->kp.addr, insn_buf, RELATIVEJUMP_SIZE,
> + op->optinsn.insn);
> + }
>
> list_del_init(&op->list);
> }
>
--
Masami HIRAMATSU
Software Platform Research Dept. Linux Technology Research Center
Hitachi, Ltd., Yokohama Research Laboratory
E-mail: masami.hiramatsu.pt@hitachi.com
next prev parent reply other threads:[~2015-02-20 4:00 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-13 5:39 [RFC PATCH v3 00/26] Early kprobe: enable kprobes at very early booting stage Wang Nan
2015-02-13 5:39 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 01/26] kprobes: set kprobes_all_disarmed earlier to enable re-optimization Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 02/26] kprobes: makes kprobes/enabled works correctly for optimized kprobes Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 03/26] kprobes: x86: mark 2 bytes NOP as boostable Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 04/26] ftrace: don't update record flags if code modification fail Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 05/26] ftrace/x86: Ensure rec->flags no change when failure occures Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 06/26] ftrace: sort ftrace entries earlier Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 07/26] ftrace: allow search ftrace addr before ftrace fully inited Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 08/26] ftrace: enable make ftrace nop before ftrace_init() Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 09/26] ftrace: allow fixing code update failure by notifier chain Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 10/26] ftrace: x86: try to fix ftrace when ftrace_replace_code Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 11/26] early kprobes: introduce kprobe_is_early for futher early kprobe use Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 12/26] early kprobes: Add an KPROBE_FLAG_EARLY for early kprobe Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 13/26] early kprobes: ARM: directly modify code Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 14/26] early kprobes: ARM: introduce early kprobes related code area Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 15/26] early kprobes: x86: directly modify code Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-20 4:00 ` Masami Hiramatsu [this message]
2015-02-20 4:00 ` Masami Hiramatsu
2015-02-13 5:40 ` [RFC PATCH v3 16/26] early kprobes: x86: introduce early kprobes related code area Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:40 ` [RFC PATCH v3 17/26] early kprobes: introduces macros for allocing early kprobe resources Wang Nan
2015-02-13 5:40 ` Wang Nan
2015-02-13 5:41 ` [RFC PATCH v3 18/26] early kprobes: allows __alloc_insn_slot() from early kprobes slots Wang Nan
2015-02-13 5:41 ` Wang Nan
2015-02-13 5:41 ` [RFC PATCH v3 19/26] early kprobes: perhibit probing at early kprobe reserved area Wang Nan
2015-02-13 5:41 ` Wang Nan
2015-02-13 5:41 ` [RFC PATCH v3 20/26] early kprobes: core logic of eraly kprobes Wang Nan
2015-02-13 5:41 ` Wang Nan
2015-02-13 5:41 ` [RFC PATCH v3 21/26] early kprobes: add CONFIG_EARLY_KPROBES option Wang Nan
2015-02-13 5:41 ` Wang Nan
2015-02-13 5:41 ` [RFC PATCH v3 22/26] early kprobes: introduce arch_fix_ftrace_early_kprobe() Wang Nan
2015-02-13 5:41 ` Wang Nan
2015-02-13 5:41 ` [RFC PATCH v3 23/26] early kprobes: x86: arch_restore_optimized_kprobe() Wang Nan
2015-02-13 5:41 ` Wang Nan
2015-02-13 5:41 ` [RFC PATCH v3 24/26] early kprobes: core logic to support early kprobe on ftrace Wang Nan
2015-02-13 5:41 ` Wang Nan
2015-02-13 5:41 ` [RFC PATCH v3 25/26] early kprobes: introduce kconfig option " Wang Nan
2015-02-13 5:41 ` Wang Nan
2015-02-13 5:41 ` [RFC PATCH v3 26/26] kprobes: enable 'ekprobe=' cmdline option for early kprobes Wang Nan
2015-02-13 5:41 ` Wang Nan
2015-02-20 3:59 ` [RFC PATCH v3 00/26] Early kprobe: enable kprobes at very early booting stage Masami Hiramatsu
2015-02-20 3:59 ` Masami Hiramatsu
2015-02-25 11:11 ` Wang Nan
2015-02-25 11:11 ` Wang Nan
2015-02-25 11:46 ` Wang Nan
2015-02-25 11:46 ` Wang Nan
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=54E6B172.7080604@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.