Skip to contentSkip to conversation

perf: arm64: Record the user-mode PC in the call chain.

PATCH In review Jed Davis 3 participants 3 messages Jun 20, 2013

Subsystems (3)
lore
Share & tools
lore

Jed Davis

author
#0 lore raw

PATCH 1/1 perf: arm64: Record the user-mode PC in the call chain.

With this change, we no longer lose the innermost entry in the user-mode part of the call chain. See also the x86 port, which includes the ip, and the corresponding change in arch/arm.

---
 arch/arm64/kernel/perf_event.c |    1 +
 1 file changed, 1 insertion(+)
arch/arm64/kernel/perf_event.c +1 -0
index 1e49e5eb..9ba33c4 100644
@@ -1336,6 +1336,7 @@ void perf_callchain_user(struct perf_callchain_entry *entry,
 		return;
 	}
 
+	perf_callchain_store(entry, regs->pc);
 	tail = (struct frame_tail __user *)regs->regs[29];
 
 	while (entry->nr < PERF_MAX_STACK_DEPTH &&
Signature · 1 line
1.7.10.4
Acked-by on v1 1/1
#1 lore raw
Quoted 14 lines · Jed Davis

With this change, we no longer lose the innermost entry in the user-mode part of the call chain. See also the x86 port, which includes the ip, and the corresponding change in arch/arm.

---
 arch/arm64/kernel/perf_event.c |    1 +
 1 file changed, 1 insertion(+)
arch/arm64/kernel/perf_event.c +0 -0
index 1e49e5eb..9ba33c4 100644

arch/arm64/kernel/perf_event.c void perf_callchain_user(struct perf_callchain_entry *entry, · line 1342

Quoted 7 lines
arch/arm64/kernel/perf_event.c +1 -0
@@ -1336,6 +1336,7 @@ void perf_callchain_user(struct perf_callchain_entry *entry,
 		return;
 	}
 
+	perf_callchain_store(entry, regs->pc);
 	tail = (struct frame_tail __user *)regs->regs[29];
 
 	while (entry->nr < PERF_MAX_STACK_DEPTH &&

I suspect this goes to v3.10 via the ARM64 tree?

Thanks,

Ingo

Acked-by
#2 lore raw
Quoted 20 lines · Ingo Molnar
Quoted 17 lines · Jed Davis

With this change, we no longer lose the innermost entry in the user-mode part of the call chain. See also the x86 port, which includes the ip, and the corresponding change in arch/arm.

---
 arch/arm64/kernel/perf_event.c |    1 +
 1 file changed, 1 insertion(+)
arch/arm64/kernel/perf_event.c +0 -0
index 1e49e5eb..9ba33c4 100644
@@ -1336,6 +1336,7 @@ void perf_callchain_user(struct perf_callchain_entry *entry,
 		return;
 	}
 
Quoted 8 lines

arch/arm64/kernel/perf_event.c void perf_callchain_user(struct perf_callchain_entry *entry, · line 1342

Quoted 4 lines
arch/arm64/kernel/perf_event.c +1 -0
+	perf_callchain_store(entry, regs->pc);
 	tail = (struct frame_tail __user *)regs->regs[29];
 
 	while (entry->nr < PERF_MAX_STACK_DEPTH &&

I suspect this goes to v3.10 via the ARM64 tree?

Yup, we'll take this via the arm64 tree, thanks.

Catalin, you can add:

to this.

Cheers,

Will