summaryrefslogtreecommitdiff
path: root/arch/s390/kernel/perf_event.c
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2019-05-20 08:32:11 -0700
committerTony Lindgren <tony@atomide.com>2019-05-20 08:32:11 -0700
commitf29f24b5568fd6169e0363c78f1a80db38d0e7e9 (patch)
tree835abaf6e1bb95b9d388f4249f355618e9da1489 /arch/s390/kernel/perf_event.c
parent1ba12322e2f0934383f111a5e695702aaf46b812 (diff)
parent34b1b8061de3215208db9accfe60cc3f5b40178f (diff)
Merge branch 'fixes-dra7' into fixes
Diffstat (limited to 'arch/s390/kernel/perf_event.c')
-rw-r--r--arch/s390/kernel/perf_event.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/arch/s390/kernel/perf_event.c b/arch/s390/kernel/perf_event.c
index 0d770e513abf..fcb6c2e92b07 100644
--- a/arch/s390/kernel/perf_event.c
+++ b/arch/s390/kernel/perf_event.c
@@ -21,6 +21,7 @@
#include <asm/lowcore.h>
#include <asm/processor.h>
#include <asm/sysinfo.h>
+#include <asm/unwind.h>
const char *perf_pmu_name(void)
{
@@ -219,20 +220,13 @@ static int __init service_level_perf_register(void)
}
arch_initcall(service_level_perf_register);
-static int __perf_callchain_kernel(void *data, unsigned long address, int reliable)
-{
- struct perf_callchain_entry_ctx *entry = data;
-
- perf_callchain_store(entry, address);
- return 0;
-}
-
void perf_callchain_kernel(struct perf_callchain_entry_ctx *entry,
struct pt_regs *regs)
{
- if (user_mode(regs))
- return;
- dump_trace(__perf_callchain_kernel, entry, NULL, regs->gprs[15]);
+ struct unwind_state state;
+
+ unwind_for_each_frame(&state, current, regs, 0)
+ perf_callchain_store(entry, state.ip);
}
/* Perf definitions for PMU event attributes in sysfs */