2010-06-23 00:18:15

by Nobuhiro Iwamatsu

[permalink] [raw]
Subject: [PATCH] perf: Fix argument of perf_arch_fetch_caller_regs

"struct regs" was set to argument of perf_arch_fetch_caller_regs.
"struct pt_regs" is correct.

Cc: Frederic Weisbecker <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: David Miller <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Signed-off-by: Nobuhiro Iwamatsu <[email protected]>
---
include/linux/perf_event.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 9073bde..b65736d 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -934,7 +934,7 @@ extern void __perf_sw_event(u32, u64, int, struct
pt_regs *, u64);

#ifndef perf_arch_fetch_caller_regs
static inline void
-perf_arch_fetch_caller_regs(struct regs *regs, unsigned long ip) { }
+perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip) { }
#endif

/*
--
1.7.1


2010-06-23 03:08:10

by Frederic Weisbecker

[permalink] [raw]
Subject: Re: [PATCH] perf: Fix argument of perf_arch_fetch_caller_regs

On Wed, Jun 23, 2010 at 09:17:53AM +0900, Nobuhiro Iwamatsu wrote:
> "struct regs" was set to argument of perf_arch_fetch_caller_regs.
> "struct pt_regs" is correct.
>
> Cc: Frederic Weisbecker <[email protected]>
> Cc: Paul Mackerras <[email protected]>
> Cc: David Miller <[email protected]>
> Cc: Ingo Molnar <[email protected]>
> Cc: Peter Zijlstra <[email protected]>
> Cc: Arnaldo Carvalho de Melo <[email protected]>
> Signed-off-by: Nobuhiro Iwamatsu <[email protected]>



Acked-by: Frederic Weisbecker <[email protected]>

This may fix CONFIG_PERF_EVENTS=y with archs that don't implement
perf_arch_fetch_caller_regs, namely ARM, alpha, frv, parisc, s390 and sh.

Ingo, can you please queue this for .36? (it only fixes perf/core)

Thanks.




> ---
> include/linux/perf_event.h | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
> index 9073bde..b65736d 100644
> --- a/include/linux/perf_event.h
> +++ b/include/linux/perf_event.h
> @@ -934,7 +934,7 @@ extern void __perf_sw_event(u32, u64, int, struct
> pt_regs *, u64);
>
> #ifndef perf_arch_fetch_caller_regs
> static inline void
> -perf_arch_fetch_caller_regs(struct regs *regs, unsigned long ip) { }
> +perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip) { }
> #endif
>
> /*
> --
> 1.7.1

2010-06-23 17:51:27

by Frederic Weisbecker

[permalink] [raw]
Subject: Re: [PATCH] perf: Fix argument of perf_arch_fetch_caller_regs

On Wed, Jun 23, 2010 at 09:17:53AM +0900, Nobuhiro Iwamatsu wrote:
> "struct regs" was set to argument of perf_arch_fetch_caller_regs.
> "struct pt_regs" is correct.
>
> Cc: Frederic Weisbecker <[email protected]>
> Cc: Paul Mackerras <[email protected]>
> Cc: David Miller <[email protected]>
> Cc: Ingo Molnar <[email protected]>
> Cc: Peter Zijlstra <[email protected]>
> Cc: Arnaldo Carvalho de Melo <[email protected]>
> Signed-off-by: Nobuhiro Iwamatsu <[email protected]>



Actually I'm queuing it, as I have other patches for perf in queue.

Thanks.

2010-06-25 13:26:38

by Nobuhiro Iwamatsu

[permalink] [raw]
Subject: [tip:perf/core] perf: Fix argument of perf_arch_fetch_caller_regs

Commit-ID: 5cfaf214856eb934759ae500a0b812dd06a00bd9
Gitweb: http://git.kernel.org/tip/5cfaf214856eb934759ae500a0b812dd06a00bd9
Author: Nobuhiro Iwamatsu <[email protected]>
AuthorDate: Wed, 23 Jun 2010 09:17:53 +0900
Committer: Frederic Weisbecker <[email protected]>
CommitDate: Thu, 24 Jun 2010 23:34:58 +0200

perf: Fix argument of perf_arch_fetch_caller_regs

"struct regs" was set to argument of perf_arch_fetch_caller_regs
off-case. It should be "struct pt_regs".

This fixes various build errors in archs that have CONFIG_PERF_EVENTS=y
but no overriden implementation of perf_arch_fetch_caller_regs.

cc1: warnings being treated as errors
In file included from include/linux/ftrace_event.h:8,
from include/trace/syscall.h:6,
from include/linux/syscalls.h:75,
from arch/sh/kernel/sys_sh32.c:9:
include/linux/perf_event.h:937: error: 'struct regs' declared inside parameter list
include/linux/perf_event.h:937: error: its scope is only this definition or declaration, which is probably not what you want
include/linux/perf_event.h: In function 'perf_fetch_caller_regs':
include/linux/perf_event.h:952: error: passing argument 1 of 'perf_arch_fetch_caller_regs' from incompatible pointer type

Signed-off-by: Nobuhiro Iwamatsu <[email protected]>
Reported-by: Stephen Rothwell <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: David Miller <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
LKML-Reference: <[email protected]>
Signed-off-by: Frederic Weisbecker <[email protected]>
---
include/linux/perf_event.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 0dd5f8a..937495c 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -936,7 +936,7 @@ extern void __perf_sw_event(u32, u64, int, struct pt_regs *, u64);

#ifndef perf_arch_fetch_caller_regs
static inline void
-perf_arch_fetch_caller_regs(struct regs *regs, unsigned long ip) { }
+perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip) { }
#endif

/*