* [PATCH v3]: perf/x86: store user space frame-pointer value on a sample
@ 2018-05-24 14:11 Alexey Budankov
2018-05-25 9:50 ` [tip:perf/core] perf/x86: Store " tip-bot for Alexey Budankov
0 siblings, 1 reply; 2+ messages in thread
From: Alexey Budankov @ 2018-05-24 14:11 UTC (permalink / raw)
To: Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo
Cc: Alexander Shishkin, Jiri Olsa, Namhyung Kim, Andi Kleen,
linux-kernel, linux-perf-users
Store user space frame-pointer value (BP register) into Perf trace
on a sample for a process so the value becomes available when
unwinding call stacks for functions gaining event samples.
Signed-off-by: Alexey Budankov <alexey.budankov@linux.intel.com>
---
Changes in v3:
- adjusted comment regarding saved registers on system call after
recent KPTI improvements
Changes in v2:
- lifted restriction on frame pointer architecture so it's value is provided
as for i386 as for x86_64 processes
MAINTAINERS file lacks references to appropriate folks for reviewing
changes at arch/x86/kernel/perf_regs.c so probably it makes sense to
update the file as well in this respect.
---
arch/x86/kernel/perf_regs.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/arch/x86/kernel/perf_regs.c b/arch/x86/kernel/perf_regs.c
index e47b2dbbdef3..f54348a72add 100644
--- a/arch/x86/kernel/perf_regs.c
+++ b/arch/x86/kernel/perf_regs.c
@@ -151,17 +151,19 @@ void perf_get_regs_user(struct perf_regs *regs_user,
regs_user_copy->sp = user_regs->sp;
regs_user_copy->cs = user_regs->cs;
regs_user_copy->ss = user_regs->ss;
-
/*
- * Most system calls don't save these registers, don't report them.
+ * Store user space frame-pointer value on sample
+ * to facilitate stack unwinding for cases when
+ * user space executable code has such support
+ * enabled at compile time;
*/
+ regs_user_copy->bp = user_regs->bp;
+
regs_user_copy->bx = -1;
- regs_user_copy->bp = -1;
regs_user_copy->r12 = -1;
regs_user_copy->r13 = -1;
regs_user_copy->r14 = -1;
regs_user_copy->r15 = -1;
-
/*
* For this to be at all useful, we need a reasonable guess for
* the ABI. Be careful: we're in NMI context, and we're
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [tip:perf/core] perf/x86: Store user space frame-pointer value on a sample
2018-05-24 14:11 [PATCH v3]: perf/x86: store user space frame-pointer value on a sample Alexey Budankov
@ 2018-05-25 9:50 ` tip-bot for Alexey Budankov
0 siblings, 0 replies; 2+ messages in thread
From: tip-bot for Alexey Budankov @ 2018-05-25 9:50 UTC (permalink / raw)
To: linux-tip-commits
Cc: alexey.budankov, torvalds, acme, linux-kernel, namhyung, mingo,
acme, tglx, hpa, eranian, jolsa, peterz, alexander.shishkin,
vincent.weaver
Commit-ID: 10b1105004fbd81058383537b67df35cc188ab62
Gitweb: https://git.kernel.org/tip/10b1105004fbd81058383537b67df35cc188ab62
Author: Alexey Budankov <alexey.budankov@linux.intel.com>
AuthorDate: Thu, 24 May 2018 17:11:54 +0300
Committer: Ingo Molnar <mingo@kernel.org>
CommitDate: Fri, 25 May 2018 08:11:12 +0200
perf/x86: Store user space frame-pointer value on a sample
Store user space frame-pointer value (BP register) into the perf trace
on a sample for a process so the value becomes available when
unwinding call stacks for functions gaining event samples.
Signed-off-by: Alexey Budankov <alexey.budankov@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Link: http://lkml.kernel.org/r/311d4a34-f81b-5535-3385-01427ac73b41@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
arch/x86/kernel/perf_regs.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/arch/x86/kernel/perf_regs.c b/arch/x86/kernel/perf_regs.c
index e47b2dbbdef3..c06c4c16c6b6 100644
--- a/arch/x86/kernel/perf_regs.c
+++ b/arch/x86/kernel/perf_regs.c
@@ -151,17 +151,19 @@ void perf_get_regs_user(struct perf_regs *regs_user,
regs_user_copy->sp = user_regs->sp;
regs_user_copy->cs = user_regs->cs;
regs_user_copy->ss = user_regs->ss;
-
/*
- * Most system calls don't save these registers, don't report them.
+ * Store user space frame-pointer value on sample
+ * to facilitate stack unwinding for cases when
+ * user space executable code has such support
+ * enabled at compile time:
*/
+ regs_user_copy->bp = user_regs->bp;
+
regs_user_copy->bx = -1;
- regs_user_copy->bp = -1;
regs_user_copy->r12 = -1;
regs_user_copy->r13 = -1;
regs_user_copy->r14 = -1;
regs_user_copy->r15 = -1;
-
/*
* For this to be at all useful, we need a reasonable guess for
* the ABI. Be careful: we're in NMI context, and we're
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-05-25 9:51 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-24 14:11 [PATCH v3]: perf/x86: store user space frame-pointer value on a sample Alexey Budankov
2018-05-25 9:50 ` [tip:perf/core] perf/x86: Store " tip-bot for Alexey Budankov
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.