From: Matt Turner <mattst88@gmail.com>
To: Michael Cree <mcree@orcon.net.nz>
Cc: linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org,
Richard Henderson <rth@twiddle.net>,
Ivan Kokshaysky <ink@jurassic.park.msu.ru>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Paul Mackerras <paulus@samba.org>, Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCH] [alpha] Add minimal support for software performance events.
Date: Mon, 30 Nov 2009 23:30:16 -0500 [thread overview]
Message-ID: <b4198de60911302030v504abfb3g805da2d0b9b7ffac@mail.gmail.com> (raw)
In-Reply-To: <1256545926-6972-1-git-send-email-mcree@orcon.net.nz>
[-- Attachment #1: Type: text/plain, Size: 5088 bytes --]
On Mon, Oct 26, 2009 at 3:32 AM, Michael Cree <mcree@orcon.net.nz> wrote:
> In the kernel the patch enables configuration of the perf event
> option, adds the perf_event_open syscall, and includes a minimal
> architecture specific asm/perf_event.h header file.
>
> For the perf tool the patch implements an Alpha specific section
> in the perf.h header file and adjusts options used in the
> Makefile to allow compilation on Alpha. The -Wcast-align gives
> a "cast increases required alignment of target type" warning for
> the list_for_each_entry() macro. The -fstack-protector-all
> option generates a "not supported for this target" warning which
> with -Werror causes the compiler to abort.
>
> Signed-off-by: Michael Cree <mcree@orcon.net.nz>
> ---
> arch/alpha/Kconfig | 1 +
> arch/alpha/include/asm/perf_event.h | 9 +++++++++
> arch/alpha/include/asm/unistd.h | 3 ++-
> arch/alpha/kernel/systbls.S | 1 +
> tools/perf/Makefile | 5 ++---
> tools/perf/perf.h | 6 ++++++
> 6 files changed, 21 insertions(+), 4 deletions(-)
> create mode 100644 arch/alpha/include/asm/perf_event.h
>
> diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
> index 4434481..bd7261e 100644
> --- a/arch/alpha/Kconfig
> +++ b/arch/alpha/Kconfig
> @@ -9,6 +9,7 @@ config ALPHA
> select HAVE_IDE
> select HAVE_OPROFILE
> select HAVE_SYSCALL_WRAPPERS
> + select HAVE_PERF_EVENTS
> help
> The Alpha is a 64-bit general-purpose processor designed and
> marketed by the Digital Equipment Corporation of blessed memory,
> diff --git a/arch/alpha/include/asm/perf_event.h b/arch/alpha/include/asm/perf_event.h
> new file mode 100644
> index 0000000..3bef852
> --- /dev/null
> +++ b/arch/alpha/include/asm/perf_event.h
> @@ -0,0 +1,9 @@
> +#ifndef __ASM_ALPHA_PERF_EVENT_H
> +#define __ASM_ALPHA_PERF_EVENT_H
> +
> +/* Alpha only supports software events through this interface. */
> +static inline void set_perf_event_pending(void) { }
> +
> +#define PERF_EVENT_INDEX_OFFSET 0
> +
> +#endif /* __ASM_ALPHA_PERF_EVENT_H */
> diff --git a/arch/alpha/include/asm/unistd.h b/arch/alpha/include/asm/unistd.h
> index 17f72b7..414de17 100644
> --- a/arch/alpha/include/asm/unistd.h
> +++ b/arch/alpha/include/asm/unistd.h
> @@ -447,10 +447,11 @@
> #define __NR_preadv 489
> #define __NR_pwritev 490
> #define __NR_rt_tgsigqueueinfo 491
> +#define __NR_perf_event_open 492
>
> #ifdef __KERNEL__
>
> -#define NR_SYSCALLS 492
> +#define NR_SYSCALLS 493
>
> #define __ARCH_WANT_IPC_PARSE_VERSION
> #define __ARCH_WANT_OLD_READDIR
> diff --git a/arch/alpha/kernel/systbls.S b/arch/alpha/kernel/systbls.S
> index 78199b9..63c78e4 100644
> --- a/arch/alpha/kernel/systbls.S
> +++ b/arch/alpha/kernel/systbls.S
> @@ -510,6 +510,7 @@ sys_call_table:
> .quad sys_preadv
> .quad sys_pwritev /* 490 */
> .quad sys_rt_tgsigqueueinfo
> + .quad sys_perf_event_open
>
> .size sys_call_table, . - sys_call_table
> .type sys_call_table, @object
> diff --git a/tools/perf/Makefile b/tools/perf/Makefile
> index 742a32e..7940d66 100644
> --- a/tools/perf/Makefile
> +++ b/tools/perf/Makefile
> @@ -177,8 +177,7 @@ endif
> # Include saner warnings here, which can catch bugs:
> #
>
> -EXTRA_WARNINGS := -Wcast-align
> -EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat
> +EXTRA_WARNINGS := -Wformat
> EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-security
> EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wformat-y2k
> EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wshadow
> @@ -201,7 +200,7 @@ EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wold-style-definition
> EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wstrict-prototypes
> EXTRA_WARNINGS := $(EXTRA_WARNINGS) -Wdeclaration-after-statement
>
> -CFLAGS = $(MBITS) -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -fstack-protector-all -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS)
> +CFLAGS = $(MBITS) -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS)
> LDFLAGS = -lpthread -lrt -lelf -lm
> ALL_CFLAGS = $(CFLAGS)
> ALL_LDFLAGS = $(LDFLAGS)
> diff --git a/tools/perf/perf.h b/tools/perf/perf.h
> index 8cc4623..216bdb2 100644
> --- a/tools/perf/perf.h
> +++ b/tools/perf/perf.h
> @@ -47,6 +47,12 @@
> #define cpu_relax() asm volatile("":::"memory")
> #endif
>
> +#ifdef __alpha__
> +#include "../../arch/alpha/include/asm/unistd.h"
> +#define rmb() asm volatile("mb" ::: "memory")
> +#define cpu_relax() asm volatile("" ::: "memory")
> +#endif
> +
> #include <time.h>
> #include <unistd.h>
> #include <sys/types.h>
> --
> 1.6.3.3
>
> --
Please take a look at the attached patch and let me know if it's what
you want pushed. I wasn't sure if the last hunk (the memory barriers)
needed to be included or had already been picked up.
Thanks,
Matt
[-- Attachment #2: 0001-alpha-Add-minimal-support-for-software-performance-e.patch --]
[-- Type: application/octet-stream, Size: 3693 bytes --]
From cb58e6d37b406cdb154b34d700c9478546b1e84f Mon Sep 17 00:00:00 2001
From: Michael Cree <mcree@orcon.net.nz>
Date: Mon, 30 Nov 2009 23:27:36 -0500
Subject: [PATCH] alpha: Add minimal support for software performance events.
In the kernel the patch enables configuration of the perf event
option, adds the perf_event_open syscall, and includes a minimal
architecture specific asm/perf_event.h header file.
For the perf tool the patch implements an Alpha specific section
in the perf.h header file and adjusts options used in the
Makefile to allow compilation on Alpha. The -Wcast-align gives
a "cast increases required alignment of target type" warning for
the list_for_each_entry() macro. The -fstack-protector-all
option generates a "not supported for this target" warning which
with -Werror causes the compiler to abort.
Signed-off-by: Michael Cree <mcree@orcon.net.nz>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Matt Turner <mattst88@gmail.com>
---
arch/alpha/Kconfig | 1 +
arch/alpha/include/asm/perf_event.h | 9 +++++++++
arch/alpha/include/asm/unistd.h | 3 ++-
arch/alpha/kernel/systbls.S | 1 +
tools/perf/perf.h | 6 ++++++
5 files changed, 19 insertions(+), 1 deletions(-)
create mode 100644 arch/alpha/include/asm/perf_event.h
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 4434481..bd7261e 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -9,6 +9,7 @@ config ALPHA
select HAVE_IDE
select HAVE_OPROFILE
select HAVE_SYSCALL_WRAPPERS
+ select HAVE_PERF_EVENTS
help
The Alpha is a 64-bit general-purpose processor designed and
marketed by the Digital Equipment Corporation of blessed memory,
diff --git a/arch/alpha/include/asm/perf_event.h b/arch/alpha/include/asm/perf_event.h
new file mode 100644
index 0000000..3bef852
--- /dev/null
+++ b/arch/alpha/include/asm/perf_event.h
@@ -0,0 +1,9 @@
+#ifndef __ASM_ALPHA_PERF_EVENT_H
+#define __ASM_ALPHA_PERF_EVENT_H
+
+/* Alpha only supports software events through this interface. */
+static inline void set_perf_event_pending(void) { }
+
+#define PERF_EVENT_INDEX_OFFSET 0
+
+#endif /* __ASM_ALPHA_PERF_EVENT_H */
diff --git a/arch/alpha/include/asm/unistd.h b/arch/alpha/include/asm/unistd.h
index 17f72b7..414de17 100644
--- a/arch/alpha/include/asm/unistd.h
+++ b/arch/alpha/include/asm/unistd.h
@@ -447,10 +447,11 @@
#define __NR_preadv 489
#define __NR_pwritev 490
#define __NR_rt_tgsigqueueinfo 491
+#define __NR_perf_event_open 492
#ifdef __KERNEL__
-#define NR_SYSCALLS 492
+#define NR_SYSCALLS 493
#define __ARCH_WANT_IPC_PARSE_VERSION
#define __ARCH_WANT_OLD_READDIR
diff --git a/arch/alpha/kernel/systbls.S b/arch/alpha/kernel/systbls.S
index 78199b9..63c78e4 100644
--- a/arch/alpha/kernel/systbls.S
+++ b/arch/alpha/kernel/systbls.S
@@ -510,6 +510,7 @@ sys_call_table:
.quad sys_preadv
.quad sys_pwritev /* 490 */
.quad sys_rt_tgsigqueueinfo
+ .quad sys_perf_event_open
.size sys_call_table, . - sys_call_table
.type sys_call_table, @object
diff --git a/tools/perf/perf.h b/tools/perf/perf.h
index 8cc4623..216bdb2 100644
--- a/tools/perf/perf.h
+++ b/tools/perf/perf.h
@@ -47,6 +47,12 @@
#define cpu_relax() asm volatile("":::"memory")
#endif
+#ifdef __alpha__
+#include "../../arch/alpha/include/asm/unistd.h"
+#define rmb() asm volatile("mb" ::: "memory")
+#define cpu_relax() asm volatile("" ::: "memory")
+#endif
+
#include <time.h>
#include <unistd.h>
#include <sys/types.h>
--
1.6.4.4
next prev parent reply other threads:[~2009-12-01 4:30 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-26 8:32 Michael Cree
2009-10-26 8:48 ` Ingo Molnar
2009-10-27 8:09 ` Michael Cree
2009-11-08 12:22 ` Ingo Molnar
2009-11-08 12:27 ` Ingo Molnar
2009-11-11 7:43 ` Michael Cree
2009-11-11 7:48 ` [tip:perf/core] perf tools: Test -fstack-protector-all compiler option for inclusion in CFLAGS tip-bot for Michael Cree
2009-10-27 18:29 ` [PATCH] [alpha] Add minimal support for software performance events Matt Turner
2009-10-28 20:56 ` Sam Ravnborg
2009-10-26 11:38 ` [tip:perf/core] perf tools, Alpha: Add Alpha support to perf.h tip-bot for Michael Cree
2009-10-26 12:08 ` Pekka Enberg
2009-10-26 12:22 ` Ingo Molnar
2009-10-28 20:58 ` Sam Ravnborg
2009-11-10 21:21 ` Peter Zijlstra
2009-12-01 4:30 ` Matt Turner [this message]
2009-12-01 9:31 ` [PATCH] [alpha] Add minimal support for software performance events Michael Cree
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b4198de60911302030v504abfb3g805da2d0b9b7ffac@mail.gmail.com \
--to=mattst88@gmail.com \
--cc=a.p.zijlstra@chello.nl \
--cc=ink@jurassic.park.msu.ru \
--cc=linux-alpha@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mcree@orcon.net.nz \
--cc=mingo@elte.hu \
--cc=paulus@samba.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®