2013-06-20 03:07:17

by Jed Davis

[permalink] [raw]
Subject: [PATCH] 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.

Signed-off-by: Jed Davis <[email protected]>
---
arch/arm64/kernel/perf_event.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/arm64/kernel/perf_event.c b/arch/arm64/kernel/perf_event.c
index 1e49e5eb..9ba33c4 100644
--- a/arch/arm64/kernel/perf_event.c
+++ b/arch/arm64/kernel/perf_event.c
@@ -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 &&
--
1.7.10.4


2013-06-20 08:33:35

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] perf: arm64: Record the user-mode PC in the call chain.


* Jed Davis <[email protected]> wrote:

> 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.
>
> Signed-off-by: Jed Davis <[email protected]>
> ---
> arch/arm64/kernel/perf_event.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/arm64/kernel/perf_event.c b/arch/arm64/kernel/perf_event.c
> index 1e49e5eb..9ba33c4 100644
> --- a/arch/arm64/kernel/perf_event.c
> +++ b/arch/arm64/kernel/perf_event.c
> @@ -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 &&

Acked-by: Ingo Molnar <[email protected]>

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

Thanks,

Ingo

2013-06-20 09:12:23

by Will Deacon

[permalink] [raw]
Subject: Re: [PATCH] perf: arm64: Record the user-mode PC in the call chain.

On Thu, Jun 20, 2013 at 09:33:28AM +0100, Ingo Molnar wrote:
>
> * Jed Davis <[email protected]> wrote:
>
> > 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.
> >
> > Signed-off-by: Jed Davis <[email protected]>
> > ---
> > arch/arm64/kernel/perf_event.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/arch/arm64/kernel/perf_event.c b/arch/arm64/kernel/perf_event.c
> > index 1e49e5eb..9ba33c4 100644
> > --- a/arch/arm64/kernel/perf_event.c
> > +++ b/arch/arm64/kernel/perf_event.c
> > @@ -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 &&
>
> Acked-by: Ingo Molnar <[email protected]>
>
> 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:

Acked-by: Will Deacon <[email protected]>

to this.

Cheers,

Will