[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250411121756.567274-1-jolsa@kernel.org>
Date: Fri, 11 Apr 2025 14:17:55 +0200
From: Jiri Olsa <jolsa@...nel.org>
To: Oleg Nesterov <oleg@...hat.com>,
Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...nel.org>,
Andrii Nakryiko <andrii@...nel.org>
Cc: bpf@...r.kernel.org,
linux-kernel@...r.kernel.org,
linux-trace-kernel@...r.kernel.org,
x86@...nel.org,
Song Liu <songliubraving@...com>,
Yonghong Song <yhs@...com>,
John Fastabend <john.fastabend@...il.com>,
Hao Luo <haoluo@...gle.com>,
Steven Rostedt <rostedt@...dmis.org>,
Masami Hiramatsu <mhiramat@...nel.org>,
Alan Maguire <alan.maguire@...cle.com>
Subject: [PATCHv2 perf/core 1/2] uprobes/x86: Add support to emulate nop instructions
Adding support to emulate all nop instructions as the original uprobe
instruction.
This change speeds up uprobe on top of all nop instructions and is a
preparation for usdt probe optimization, that will be done on top of
nop5 instruction.
With this change the usdt probe on top of nop5 won't take the performance
hit compared to usdt probe on top of standard nop instruction.
Suggested-by: Oleg Nesterov <oleg@...hat.com>
Suggested-by: Andrii Nakryiko <andrii@...nel.org>
Signed-off-by: Jiri Olsa <jolsa@...nel.org>
---
v2 changes:
- follow Adndrii/Oleg's suggestion and emulate all the nops
arch/x86/kernel/uprobes.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/arch/x86/kernel/uprobes.c b/arch/x86/kernel/uprobes.c
index 9194695662b2..262960189a1c 100644
--- a/arch/x86/kernel/uprobes.c
+++ b/arch/x86/kernel/uprobes.c
@@ -840,6 +840,12 @@ static int branch_setup_xol_ops(struct arch_uprobe *auprobe, struct insn *insn)
insn_byte_t p;
int i;
+ /* x86_nops[i]; same as jmp with .offs = 0 */
+ for (i = 1; i <= ASM_NOP_MAX; ++i) {
+ if (!memcmp(insn->kaddr, x86_nops[i], i))
+ goto setup;
+ }
+
switch (opc1) {
case 0xeb: /* jmp 8 */
case 0xe9: /* jmp 32 */
--
2.49.0
Powered by blists - more mailing lists