* [PATCH 0/6] perf, tools: Fixes and documentation updates
@ 2012-08-07 17:43 Robert Richter
2012-08-07 17:43 ` [PATCH 1/6] perf, tools: Fix version file for perf documentation with OUTPUT variable set Robert Richter
` (5 more replies)
0 siblings, 6 replies; 13+ messages in thread
From: Robert Richter @ 2012-08-07 17:43 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo; +Cc: Ingo Molnar, LKML, Robert Richter
Some random fixes, esp. build and 32 bit fixes. Also some
documentation updates.
Robert Richter (6):
perf, tools: Fix version file for perf documentation with OUTPUT
variable set
perf, tools: Fix lib/traceevent build dir with OUTPUT variable set
perf, tools: Fix parsing of 64 bit raw config value for 32 bit
perf, tools: Fix cast from pointer to integer for 32 bit
perf, tools: Update documentation about raw event setup
perf, tools: Document precise event sampling for AMD IBS
tools/lib/traceevent/event-parse.c | 3 +-
tools/perf/Documentation/Makefile | 6 ++--
tools/perf/Documentation/perf-list.txt | 48 ++++++++++++++++++++++++--------
tools/perf/Makefile | 8 ++--
tools/perf/util/parse-events.c | 6 ++--
tools/perf/util/parse-events.h | 6 ++--
tools/perf/util/parse-events.l | 4 +-
tools/perf/util/parse-events.y | 10 +++---
8 files changed, 58 insertions(+), 33 deletions(-)
--
1.7.8.4
^ permalink raw reply [flat|nested] 13+ messages in thread* [PATCH 1/6] perf, tools: Fix version file for perf documentation with OUTPUT variable set 2012-08-07 17:43 [PATCH 0/6] perf, tools: Fixes and documentation updates Robert Richter @ 2012-08-07 17:43 ` Robert Richter 2012-08-21 15:25 ` [tip:perf/core] perf " tip-bot for Robert Richter 2012-08-07 17:43 ` [PATCH 2/6] perf, tools: Fix lib/traceevent build dir " Robert Richter ` (4 subsequent siblings) 5 siblings, 1 reply; 13+ messages in thread From: Robert Richter @ 2012-08-07 17:43 UTC (permalink / raw) To: Arnaldo Carvalho de Melo; +Cc: Ingo Molnar, LKML, Robert Richter Fixes the following: + make OUTPUT=/.../.build/perf-user/ DESTDIR=/.../.install/perf-user/ man install-man make -C Documentation man make[1]: Entering directory `/.../.source/linux.perf/tools/perf/Documentation' make[2]: Entering directory `/.../.source/linux.perf/tools/perf' make[2]: *** No rule to make target `PERF-VERSION-FILE'. Stop. Signed-off-by: Robert Richter <robert.richter@amd.com> --- tools/perf/Documentation/Makefile | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/perf/Documentation/Makefile b/tools/perf/Documentation/Makefile index ca600e0..9f2e44f 100644 --- a/tools/perf/Documentation/Makefile +++ b/tools/perf/Documentation/Makefile @@ -195,10 +195,10 @@ install-pdf: pdf #install-html: html # '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir) -../PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE - $(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) PERF-VERSION-FILE +$(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE + $(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) $(OUTPUT)PERF-VERSION-FILE --include ../PERF-VERSION-FILE +-include $(OUTPUT)PERF-VERSION-FILE # # Determine "include::" file references in asciidoc files. -- 1.7.8.4 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [tip:perf/core] perf tools: Fix version file for perf documentation with OUTPUT variable set 2012-08-07 17:43 ` [PATCH 1/6] perf, tools: Fix version file for perf documentation with OUTPUT variable set Robert Richter @ 2012-08-21 15:25 ` tip-bot for Robert Richter 0 siblings, 0 replies; 13+ messages in thread From: tip-bot for Robert Richter @ 2012-08-21 15:25 UTC (permalink / raw) To: linux-tip-commits; +Cc: acme, linux-kernel, hpa, mingo, robert.richter, tglx Commit-ID: e6b978335424029d05edc01374744516b21b1ede Gitweb: http://git.kernel.org/tip/e6b978335424029d05edc01374744516b21b1ede Author: Robert Richter <robert.richter@amd.com> AuthorDate: Tue, 7 Aug 2012 19:43:11 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Wed, 8 Aug 2012 12:36:49 -0300 perf tools: Fix version file for perf documentation with OUTPUT variable set Fixes the following: + make OUTPUT=/.../.build/perf-user/ DESTDIR=/.../.install/perf-user/ man install-man make -C Documentation man make[1]: Entering directory `/.../.source/linux.perf/tools/perf/Documentation' make[2]: Entering directory `/.../.source/linux.perf/tools/perf' make[2]: *** No rule to make target `PERF-VERSION-FILE'. Stop. Signed-off-by: Robert Richter <robert.richter@amd.com> Cc: Ingo Molnar <mingo@kernel.org> Link: http://lkml.kernel.org/r/1344361396-7237-2-git-send-email-robert.richter@amd.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Documentation/Makefile | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/perf/Documentation/Makefile b/tools/perf/Documentation/Makefile index ca600e0..9f2e44f 100644 --- a/tools/perf/Documentation/Makefile +++ b/tools/perf/Documentation/Makefile @@ -195,10 +195,10 @@ install-pdf: pdf #install-html: html # '$(SHELL_PATH_SQ)' ./install-webdoc.sh $(DESTDIR)$(htmldir) -../PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE - $(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) PERF-VERSION-FILE +$(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE + $(QUIET_SUBDIR0)../ $(QUIET_SUBDIR1) $(OUTPUT)PERF-VERSION-FILE --include ../PERF-VERSION-FILE +-include $(OUTPUT)PERF-VERSION-FILE # # Determine "include::" file references in asciidoc files. ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 2/6] perf, tools: Fix lib/traceevent build dir with OUTPUT variable set 2012-08-07 17:43 [PATCH 0/6] perf, tools: Fixes and documentation updates Robert Richter 2012-08-07 17:43 ` [PATCH 1/6] perf, tools: Fix version file for perf documentation with OUTPUT variable set Robert Richter @ 2012-08-07 17:43 ` Robert Richter 2012-08-21 15:26 ` [tip:perf/core] perf tools: Fix lib/ traceevent " tip-bot for Robert Richter 2012-08-07 17:43 ` [PATCH 3/6] perf, tools: Fix parsing of 64 bit raw config value for 32 bit Robert Richter ` (3 subsequent siblings) 5 siblings, 1 reply; 13+ messages in thread From: Robert Richter @ 2012-08-07 17:43 UTC (permalink / raw) To: Arnaldo Carvalho de Melo; +Cc: Ingo Molnar, LKML, Robert Richter With the OUTPUT variable set the libtraceevent.a file is wrongly built in the source directory: + make -d OUTPUT=/.../.build/perf-user/ DESTDIR=/.../.install/perf-user/ ... Considering target file `../lib/traceevent//libtraceevent.a'. File `../lib/traceevent//libtraceevent.a' does not exist. Finished prerequisites of target file `../lib/traceevent//libtraceevent.a'. Must remake target `../lib/traceevent//libtraceevent.a'. Invoking recipe from Makefile:837 to update target `../lib/traceevent//libtraceevent.a'. Putting child 0x703850 (../lib/traceevent//libtraceevent.a) PID 8365 on the chain. Live child 0x703850 (../lib/traceevent//libtraceevent.a) PID 8365 SUBDIR ../lib/traceevent/ $ git clean -nxd Would remove tools/lib/traceevent/.event-parse.d Would remove tools/lib/traceevent/.parse-filter.d Would remove tools/lib/traceevent/.parse-utils.d Would remove tools/lib/traceevent/.trace-seq.d Would remove tools/lib/traceevent/event-parse.o Would remove tools/lib/traceevent/libtraceevent.a Would remove tools/lib/traceevent/parse-filter.o Would remove tools/lib/traceevent/parse-utils.o Would remove tools/lib/traceevent/trace-seq.o This patch fixes this. Note: Though this should already work with O=$outputdir we better use the OUTPUT variable directly. Signed-off-by: Robert Richter <robert.richter@amd.com> --- tools/perf/Makefile | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 35655c3..2d4bf6e 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile @@ -186,10 +186,10 @@ SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) TRACE_EVENT_DIR = ../lib/traceevent/ -ifeq ("$(origin O)", "command line") - TE_PATH=$(OUTPUT)/ +ifneq ($(OUTPUT),) + TE_PATH=$(OUTPUT) else - TE_PATH=$(TRACE_EVENT_DIR)/ + TE_PATH=$(TRACE_EVENT_DIR) endif LIBTRACEEVENT = $(TE_PATH)libtraceevent.a @@ -842,7 +842,7 @@ $(LIB_FILE): $(LIB_OBJS) # libtraceevent.a $(LIBTRACEEVENT): - $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) $(COMMAND_O) libtraceevent.a + $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) libtraceevent.a help: @echo 'Perf make targets:' -- 1.7.8.4 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [tip:perf/core] perf tools: Fix lib/ traceevent build dir with OUTPUT variable set 2012-08-07 17:43 ` [PATCH 2/6] perf, tools: Fix lib/traceevent build dir " Robert Richter @ 2012-08-21 15:26 ` tip-bot for Robert Richter 0 siblings, 0 replies; 13+ messages in thread From: tip-bot for Robert Richter @ 2012-08-21 15:26 UTC (permalink / raw) To: linux-tip-commits; +Cc: acme, linux-kernel, hpa, mingo, robert.richter, tglx Commit-ID: 2ede8303db75ead3250f95c3390e6ba200cbe7d4 Gitweb: http://git.kernel.org/tip/2ede8303db75ead3250f95c3390e6ba200cbe7d4 Author: Robert Richter <robert.richter@amd.com> AuthorDate: Tue, 7 Aug 2012 19:43:12 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Wed, 8 Aug 2012 12:37:41 -0300 perf tools: Fix lib/traceevent build dir with OUTPUT variable set With the OUTPUT variable set the libtraceevent.a file is wrongly built in the source directory: + make -d OUTPUT=/.../.build/perf-user/ DESTDIR=/.../.install/perf-user/ ... Considering target file `../lib/traceevent//libtraceevent.a'. File `../lib/traceevent//libtraceevent.a' does not exist. Finished prerequisites of target file `../lib/traceevent//libtraceevent.a'. Must remake target `../lib/traceevent//libtraceevent.a'. Invoking recipe from Makefile:837 to update target `../lib/traceevent//libtraceevent.a'. Putting child 0x703850 (../lib/traceevent//libtraceevent.a) PID 8365 on the chain. Live child 0x703850 (../lib/traceevent//libtraceevent.a) PID 8365 SUBDIR ../lib/traceevent/ $ git clean -nxd Would remove tools/lib/traceevent/.event-parse.d Would remove tools/lib/traceevent/.parse-filter.d Would remove tools/lib/traceevent/.parse-utils.d Would remove tools/lib/traceevent/.trace-seq.d Would remove tools/lib/traceevent/event-parse.o Would remove tools/lib/traceevent/libtraceevent.a Would remove tools/lib/traceevent/parse-filter.o Would remove tools/lib/traceevent/parse-utils.o Would remove tools/lib/traceevent/trace-seq.o This patch fixes this. Note: Though this should already work with O=$outputdir we better use the OUTPUT variable directly. Signed-off-by: Robert Richter <robert.richter@amd.com> Cc: Ingo Molnar <mingo@kernel.org> Link: http://lkml.kernel.org/r/1344361396-7237-3-git-send-email-robert.richter@amd.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Makefile | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/perf/Makefile b/tools/perf/Makefile index 35655c3..2d4bf6e 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile @@ -186,10 +186,10 @@ SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) TRACE_EVENT_DIR = ../lib/traceevent/ -ifeq ("$(origin O)", "command line") - TE_PATH=$(OUTPUT)/ +ifneq ($(OUTPUT),) + TE_PATH=$(OUTPUT) else - TE_PATH=$(TRACE_EVENT_DIR)/ + TE_PATH=$(TRACE_EVENT_DIR) endif LIBTRACEEVENT = $(TE_PATH)libtraceevent.a @@ -842,7 +842,7 @@ $(LIB_FILE): $(LIB_OBJS) # libtraceevent.a $(LIBTRACEEVENT): - $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) $(COMMAND_O) libtraceevent.a + $(QUIET_SUBDIR0)$(TRACE_EVENT_DIR) $(QUIET_SUBDIR1) O=$(OUTPUT) libtraceevent.a help: @echo 'Perf make targets:' ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 3/6] perf, tools: Fix parsing of 64 bit raw config value for 32 bit 2012-08-07 17:43 [PATCH 0/6] perf, tools: Fixes and documentation updates Robert Richter 2012-08-07 17:43 ` [PATCH 1/6] perf, tools: Fix version file for perf documentation with OUTPUT variable set Robert Richter 2012-08-07 17:43 ` [PATCH 2/6] perf, tools: Fix lib/traceevent build dir " Robert Richter @ 2012-08-07 17:43 ` Robert Richter 2012-08-21 15:27 ` [tip:perf/core] perf " tip-bot for Robert Richter 2012-08-07 17:43 ` [PATCH 4/6] perf, tools: Fix cast from pointer to integer " Robert Richter ` (2 subsequent siblings) 5 siblings, 1 reply; 13+ messages in thread From: Robert Richter @ 2012-08-07 17:43 UTC (permalink / raw) To: Arnaldo Carvalho de Melo; +Cc: Ingo Molnar, LKML, Robert Richter perf record fails on 32 bit with: invalid or unsupported event: 'r40000F7E0' Fixing this by parsing 64 bit num values. Signed-off-by: Robert Richter <robert.richter@amd.com> --- tools/perf/util/parse-events.c | 6 +++--- tools/perf/util/parse-events.h | 6 +++--- tools/perf/util/parse-events.l | 4 ++-- tools/perf/util/parse-events.y | 10 +++++----- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 74a5af4..8bdfa3e 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -551,7 +551,7 @@ static int config_attr(struct perf_event_attr *attr, } int parse_events_add_numeric(struct list_head **list, int *idx, - unsigned long type, unsigned long config, + u32 type, u64 config, struct list_head *head_config) { struct perf_event_attr attr; @@ -1005,7 +1005,7 @@ int parse_events__is_hardcoded_term(struct parse_events__term *term) static int new_term(struct parse_events__term **_term, int type_val, int type_term, char *config, - char *str, long num) + char *str, u64 num) { struct parse_events__term *term; @@ -1034,7 +1034,7 @@ static int new_term(struct parse_events__term **_term, int type_val, } int parse_events__term_num(struct parse_events__term **term, - int type_term, char *config, long num) + int type_term, char *config, u64 num) { return new_term(term, PARSE_EVENTS__TERM_TYPE_NUM, type_term, config, NULL, num); diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index ee9c218..163aad4 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -55,7 +55,7 @@ struct parse_events__term { char *config; union { char *str; - long num; + u64 num; } val; int type_val; int type_term; @@ -73,7 +73,7 @@ struct parse_events_data__terms { int parse_events__is_hardcoded_term(struct parse_events__term *term); int parse_events__term_num(struct parse_events__term **_term, - int type_term, char *config, long num); + int type_term, char *config, u64 num); int parse_events__term_str(struct parse_events__term **_term, int type_term, char *config, char *str); int parse_events__term_clone(struct parse_events__term **new, @@ -83,7 +83,7 @@ int parse_events_modifier(struct list_head *list, char *str); int parse_events_add_tracepoint(struct list_head **list, int *idx, char *sys, char *event); int parse_events_add_numeric(struct list_head **list, int *idx, - unsigned long type, unsigned long config, + u32 type, u64 config, struct list_head *head_config); int parse_events_add_cache(struct list_head **list, int *idx, char *type, char *op_result1, char *op_result2); diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l index 384ca74..e4abdf2 100644 --- a/tools/perf/util/parse-events.l +++ b/tools/perf/util/parse-events.l @@ -15,10 +15,10 @@ YYSTYPE *parse_events_get_lval(yyscan_t yyscanner); static int __value(YYSTYPE *yylval, char *str, int base, int token) { - long num; + u64 num; errno = 0; - num = strtoul(str, NULL, base); + num = strtoull(str, NULL, base); if (errno) return PE_ERROR; diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 2bc5fbf..423d331 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -57,7 +57,7 @@ do { \ %union { char *str; - unsigned long num; + u64 num; struct list_head *head; struct parse_events__term *term; } @@ -207,7 +207,7 @@ PE_VALUE ':' PE_VALUE struct parse_events_data__events *data = _data; struct list_head *list = NULL; - ABORT_ON(parse_events_add_numeric(&list, &data->idx, $1, $3, NULL)); + ABORT_ON(parse_events_add_numeric(&list, &data->idx, (u32)$1, $3, NULL)); $$ = list; } @@ -282,7 +282,7 @@ PE_TERM '=' PE_NAME { struct parse_events__term *term; - ABORT_ON(parse_events__term_str(&term, $1, NULL, $3)); + ABORT_ON(parse_events__term_str(&term, (int)$1, NULL, $3)); $$ = term; } | @@ -290,7 +290,7 @@ PE_TERM '=' PE_VALUE { struct parse_events__term *term; - ABORT_ON(parse_events__term_num(&term, $1, NULL, $3)); + ABORT_ON(parse_events__term_num(&term, (int)$1, NULL, $3)); $$ = term; } | @@ -298,7 +298,7 @@ PE_TERM { struct parse_events__term *term; - ABORT_ON(parse_events__term_num(&term, $1, NULL, 1)); + ABORT_ON(parse_events__term_num(&term, (int)$1, NULL, 1)); $$ = term; } -- 1.7.8.4 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [tip:perf/core] perf tools: Fix parsing of 64 bit raw config value for 32 bit 2012-08-07 17:43 ` [PATCH 3/6] perf, tools: Fix parsing of 64 bit raw config value for 32 bit Robert Richter @ 2012-08-21 15:27 ` tip-bot for Robert Richter 0 siblings, 0 replies; 13+ messages in thread From: tip-bot for Robert Richter @ 2012-08-21 15:27 UTC (permalink / raw) To: linux-tip-commits; +Cc: acme, linux-kernel, hpa, mingo, robert.richter, tglx Commit-ID: b527bab59be7ca2154f644fcc4b9e3c267a6d855 Gitweb: http://git.kernel.org/tip/b527bab59be7ca2154f644fcc4b9e3c267a6d855 Author: Robert Richter <robert.richter@amd.com> AuthorDate: Tue, 7 Aug 2012 19:43:13 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Wed, 8 Aug 2012 12:39:56 -0300 perf tools: Fix parsing of 64 bit raw config value for 32 bit perf record fails on 32 bit with: invalid or unsupported event: 'r40000F7E0' Fixing this by parsing 64 bit num values. Signed-off-by: Robert Richter <robert.richter@amd.com> Cc: Ingo Molnar <mingo@kernel.org> Link: http://lkml.kernel.org/r/1344361396-7237-4-git-send-email-robert.richter@amd.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/util/parse-events.c | 6 +++--- tools/perf/util/parse-events.h | 6 +++--- tools/perf/util/parse-events.l | 4 ++-- tools/perf/util/parse-events.y | 10 +++++----- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 74a5af4..8bdfa3e 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -551,7 +551,7 @@ static int config_attr(struct perf_event_attr *attr, } int parse_events_add_numeric(struct list_head **list, int *idx, - unsigned long type, unsigned long config, + u32 type, u64 config, struct list_head *head_config) { struct perf_event_attr attr; @@ -1005,7 +1005,7 @@ int parse_events__is_hardcoded_term(struct parse_events__term *term) static int new_term(struct parse_events__term **_term, int type_val, int type_term, char *config, - char *str, long num) + char *str, u64 num) { struct parse_events__term *term; @@ -1034,7 +1034,7 @@ static int new_term(struct parse_events__term **_term, int type_val, } int parse_events__term_num(struct parse_events__term **term, - int type_term, char *config, long num) + int type_term, char *config, u64 num) { return new_term(term, PARSE_EVENTS__TERM_TYPE_NUM, type_term, config, NULL, num); diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index ee9c218..163aad4 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -55,7 +55,7 @@ struct parse_events__term { char *config; union { char *str; - long num; + u64 num; } val; int type_val; int type_term; @@ -73,7 +73,7 @@ struct parse_events_data__terms { int parse_events__is_hardcoded_term(struct parse_events__term *term); int parse_events__term_num(struct parse_events__term **_term, - int type_term, char *config, long num); + int type_term, char *config, u64 num); int parse_events__term_str(struct parse_events__term **_term, int type_term, char *config, char *str); int parse_events__term_clone(struct parse_events__term **new, @@ -83,7 +83,7 @@ int parse_events_modifier(struct list_head *list, char *str); int parse_events_add_tracepoint(struct list_head **list, int *idx, char *sys, char *event); int parse_events_add_numeric(struct list_head **list, int *idx, - unsigned long type, unsigned long config, + u32 type, u64 config, struct list_head *head_config); int parse_events_add_cache(struct list_head **list, int *idx, char *type, char *op_result1, char *op_result2); diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l index 384ca74..e4abdf2 100644 --- a/tools/perf/util/parse-events.l +++ b/tools/perf/util/parse-events.l @@ -15,10 +15,10 @@ YYSTYPE *parse_events_get_lval(yyscan_t yyscanner); static int __value(YYSTYPE *yylval, char *str, int base, int token) { - long num; + u64 num; errno = 0; - num = strtoul(str, NULL, base); + num = strtoull(str, NULL, base); if (errno) return PE_ERROR; diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 2bc5fbf..423d331 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y @@ -57,7 +57,7 @@ do { \ %union { char *str; - unsigned long num; + u64 num; struct list_head *head; struct parse_events__term *term; } @@ -207,7 +207,7 @@ PE_VALUE ':' PE_VALUE struct parse_events_data__events *data = _data; struct list_head *list = NULL; - ABORT_ON(parse_events_add_numeric(&list, &data->idx, $1, $3, NULL)); + ABORT_ON(parse_events_add_numeric(&list, &data->idx, (u32)$1, $3, NULL)); $$ = list; } @@ -282,7 +282,7 @@ PE_TERM '=' PE_NAME { struct parse_events__term *term; - ABORT_ON(parse_events__term_str(&term, $1, NULL, $3)); + ABORT_ON(parse_events__term_str(&term, (int)$1, NULL, $3)); $$ = term; } | @@ -290,7 +290,7 @@ PE_TERM '=' PE_VALUE { struct parse_events__term *term; - ABORT_ON(parse_events__term_num(&term, $1, NULL, $3)); + ABORT_ON(parse_events__term_num(&term, (int)$1, NULL, $3)); $$ = term; } | @@ -298,7 +298,7 @@ PE_TERM { struct parse_events__term *term; - ABORT_ON(parse_events__term_num(&term, $1, NULL, 1)); + ABORT_ON(parse_events__term_num(&term, (int)$1, NULL, 1)); $$ = term; } ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 4/6] perf, tools: Fix cast from pointer to integer for 32 bit 2012-08-07 17:43 [PATCH 0/6] perf, tools: Fixes and documentation updates Robert Richter ` (2 preceding siblings ...) 2012-08-07 17:43 ` [PATCH 3/6] perf, tools: Fix parsing of 64 bit raw config value for 32 bit Robert Richter @ 2012-08-07 17:43 ` Robert Richter 2012-08-21 15:28 ` [tip:perf/core] tools lib traceevent: " tip-bot for Robert Richter 2012-08-07 17:43 ` [PATCH 5/6] perf, tools: Update documentation about raw event setup Robert Richter 2012-08-07 17:43 ` [PATCH 6/6] perf, tools: Document precise event sampling for AMD IBS Robert Richter 5 siblings, 1 reply; 13+ messages in thread From: Robert Richter @ 2012-08-07 17:43 UTC (permalink / raw) To: Arnaldo Carvalho de Melo; +Cc: Ingo Molnar, LKML, Robert Richter Fixing the integer cast reported by the following warning: tools/lib/traceevent/event-parse.c:3488:14: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] Signed-off-by: Robert Richter <robert.richter@amd.com> --- tools/lib/traceevent/event-parse.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c index 5f34aa3..b7c2c49 100644 --- a/tools/lib/traceevent/event-parse.c +++ b/tools/lib/traceevent/event-parse.c @@ -31,6 +31,7 @@ #include <stdarg.h> #include <ctype.h> #include <errno.h> +#include <stdint.h> #include "event-parse.h" #include "event-utils.h" @@ -3485,7 +3486,7 @@ process_defined_func(struct trace_seq *s, void *data, int size, if (!string->str) die("malloc str"); - args[i] = (unsigned long long)string->str; + args[i] = (uintptr_t)string->str; strings = string; trace_seq_destroy(&str); break; -- 1.7.8.4 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [tip:perf/core] tools lib traceevent: Fix cast from pointer to integer for 32 bit 2012-08-07 17:43 ` [PATCH 4/6] perf, tools: Fix cast from pointer to integer " Robert Richter @ 2012-08-21 15:28 ` tip-bot for Robert Richter 0 siblings, 0 replies; 13+ messages in thread From: tip-bot for Robert Richter @ 2012-08-21 15:28 UTC (permalink / raw) To: linux-tip-commits; +Cc: acme, linux-kernel, hpa, mingo, robert.richter, tglx Commit-ID: 0cf260131c52f681533d17db6fd07545a3dc184e Gitweb: http://git.kernel.org/tip/0cf260131c52f681533d17db6fd07545a3dc184e Author: Robert Richter <robert.richter@amd.com> AuthorDate: Tue, 7 Aug 2012 19:43:14 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Wed, 8 Aug 2012 12:40:44 -0300 tools lib traceevent: Fix cast from pointer to integer for 32 bit Fixing the integer cast reported by the following warning: tools/lib/traceevent/event-parse.c:3488:14: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] Signed-off-by: Robert Richter <robert.richter@amd.com> Cc: Ingo Molnar <mingo@kernel.org> Link: http://lkml.kernel.org/r/1344361396-7237-5-git-send-email-robert.richter@amd.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/lib/traceevent/event-parse.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/tools/lib/traceevent/event-parse.c b/tools/lib/traceevent/event-parse.c index 5f34aa3..b7c2c49 100644 --- a/tools/lib/traceevent/event-parse.c +++ b/tools/lib/traceevent/event-parse.c @@ -31,6 +31,7 @@ #include <stdarg.h> #include <ctype.h> #include <errno.h> +#include <stdint.h> #include "event-parse.h" #include "event-utils.h" @@ -3485,7 +3486,7 @@ process_defined_func(struct trace_seq *s, void *data, int size, if (!string->str) die("malloc str"); - args[i] = (unsigned long long)string->str; + args[i] = (uintptr_t)string->str; strings = string; trace_seq_destroy(&str); break; ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 5/6] perf, tools: Update documentation about raw event setup 2012-08-07 17:43 [PATCH 0/6] perf, tools: Fixes and documentation updates Robert Richter ` (3 preceding siblings ...) 2012-08-07 17:43 ` [PATCH 4/6] perf, tools: Fix cast from pointer to integer " Robert Richter @ 2012-08-07 17:43 ` Robert Richter 2012-08-21 15:29 ` [tip:perf/core] perf list: " tip-bot for Robert Richter 2012-08-07 17:43 ` [PATCH 6/6] perf, tools: Document precise event sampling for AMD IBS Robert Richter 5 siblings, 1 reply; 13+ messages in thread From: Robert Richter @ 2012-08-07 17:43 UTC (permalink / raw) To: Arnaldo Carvalho de Melo; +Cc: Ingo Molnar, LKML, Robert Richter It was missing that only certain bit fields are passed to the config value which confused users. Updating it. Signed-off-by: Robert Richter <robert.richter@amd.com> --- tools/perf/Documentation/perf-list.txt | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/tools/perf/Documentation/perf-list.txt b/tools/perf/Documentation/perf-list.txt index ddc2252..232be51 100644 --- a/tools/perf/Documentation/perf-list.txt +++ b/tools/perf/Documentation/perf-list.txt @@ -15,6 +15,7 @@ DESCRIPTION This command displays the symbolic event types which can be selected in the various perf commands with the -e option. +[[EVENT_MODIFIERS]] EVENT MODIFIERS --------------- @@ -44,6 +45,11 @@ layout of IA32_PERFEVTSELx MSRs (see [Intel® 64 and IA-32 Architectures Softwar of IA32_PERFEVTSELx MSRs) or AMD's PerfEvtSeln (see [AMD64 Architecture Programmer’s Manual Volume 2: System Programming], Page 344, Figure 13-7 Performance Event-Select Register (PerfEvtSeln)). +Note: Only the following bit fields can be set in x86 counter +registers: event, umask, edge, inv, cmask. Esp. guest/host only and +OS/user mode flags must be setup using <<EVENT_MODIFIERS, EVENT +MODIFIERS>>. + Example: If the Intel docs for a QM720 Core i7 describe an event as: -- 1.7.8.4 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [tip:perf/core] perf list: Update documentation about raw event setup 2012-08-07 17:43 ` [PATCH 5/6] perf, tools: Update documentation about raw event setup Robert Richter @ 2012-08-21 15:29 ` tip-bot for Robert Richter 0 siblings, 0 replies; 13+ messages in thread From: tip-bot for Robert Richter @ 2012-08-21 15:29 UTC (permalink / raw) To: linux-tip-commits; +Cc: acme, linux-kernel, hpa, mingo, robert.richter, tglx Commit-ID: 75bc5ca89827fe3f2399321b2920a30bcf658049 Gitweb: http://git.kernel.org/tip/75bc5ca89827fe3f2399321b2920a30bcf658049 Author: Robert Richter <robert.richter@amd.com> AuthorDate: Tue, 7 Aug 2012 19:43:15 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Wed, 8 Aug 2012 12:41:53 -0300 perf list: Update documentation about raw event setup It was missing that only certain bit fields are passed to the config value which confused users. Updating it. Signed-off-by: Robert Richter <robert.richter@amd.com> Cc: Ingo Molnar <mingo@kernel.org> Link: http://lkml.kernel.org/r/1344361396-7237-6-git-send-email-robert.richter@amd.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Documentation/perf-list.txt | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/tools/perf/Documentation/perf-list.txt b/tools/perf/Documentation/perf-list.txt index ddc2252..232be51 100644 --- a/tools/perf/Documentation/perf-list.txt +++ b/tools/perf/Documentation/perf-list.txt @@ -15,6 +15,7 @@ DESCRIPTION This command displays the symbolic event types which can be selected in the various perf commands with the -e option. +[[EVENT_MODIFIERS]] EVENT MODIFIERS --------------- @@ -44,6 +45,11 @@ layout of IA32_PERFEVTSELx MSRs (see [Intel® 64 and IA-32 Architectures Softwar of IA32_PERFEVTSELx MSRs) or AMD's PerfEvtSeln (see [AMD64 Architecture Programmer’s Manual Volume 2: System Programming], Page 344, Figure 13-7 Performance Event-Select Register (PerfEvtSeln)). +Note: Only the following bit fields can be set in x86 counter +registers: event, umask, edge, inv, cmask. Esp. guest/host only and +OS/user mode flags must be setup using <<EVENT_MODIFIERS, EVENT +MODIFIERS>>. + Example: If the Intel docs for a QM720 Core i7 describe an event as: ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 6/6] perf, tools: Document precise event sampling for AMD IBS 2012-08-07 17:43 [PATCH 0/6] perf, tools: Fixes and documentation updates Robert Richter ` (4 preceding siblings ...) 2012-08-07 17:43 ` [PATCH 5/6] perf, tools: Update documentation about raw event setup Robert Richter @ 2012-08-07 17:43 ` Robert Richter 2012-08-21 15:29 ` [tip:perf/core] perf list: " tip-bot for Robert Richter 5 siblings, 1 reply; 13+ messages in thread From: Robert Richter @ 2012-08-07 17:43 UTC (permalink / raw) To: Arnaldo Carvalho de Melo; +Cc: Ingo Molnar, LKML, Robert Richter Updating man perf-list. Signed-off-by: Robert Richter <robert.richter@amd.com> --- tools/perf/Documentation/perf-list.txt | 42 ++++++++++++++++++++++--------- 1 files changed, 30 insertions(+), 12 deletions(-) diff --git a/tools/perf/Documentation/perf-list.txt b/tools/perf/Documentation/perf-list.txt index 232be51..d1e39dc 100644 --- a/tools/perf/Documentation/perf-list.txt +++ b/tools/perf/Documentation/perf-list.txt @@ -20,20 +20,38 @@ EVENT MODIFIERS --------------- Events can optionally have a modifer by appending a colon and one or -more modifiers. Modifiers allow the user to restrict when events are -counted with 'u' for user-space, 'k' for kernel, 'h' for hypervisor. -Additional modifiers are 'G' for guest counting (in KVM guests) and 'H' -for host counting (not in KVM guests). +more modifiers. Modifiers allow the user to restrict the events to be +counted. The following modifiers exist: + + u - user-space counting + k - kernel counting + h - hypervisor counting + G - guest counting (in KVM guests) + H - host counting (not in KVM guests) + p - precise level The 'p' modifier can be used for specifying how precise the instruction -address should be. The 'p' modifier is currently only implemented for -Intel PEBS and can be specified multiple times: - 0 - SAMPLE_IP can have arbitrary skid - 1 - SAMPLE_IP must have constant skid - 2 - SAMPLE_IP requested to have 0 skid - 3 - SAMPLE_IP must have 0 skid +address should be. The 'p' modifier can be specified multiple times: + + 0 - SAMPLE_IP can have arbitrary skid + 1 - SAMPLE_IP must have constant skid + 2 - SAMPLE_IP requested to have 0 skid + 3 - SAMPLE_IP must have 0 skid + +For Intel systems precise event sampling is implemented with PEBS +which supports up to precise-level 2. + +On AMD systems it is implemented using IBS (up to precise-level 2). +The precise modifier works with event types 0x76 (cpu-cycles, CPU +clocks not halted) and 0xC1 (micro-ops retired). Both events map to +IBS execution sampling (IBS op) with the IBS Op Counter Control bit +(IbsOpCntCtl) set respectively (see AMD64 Architecture Programmer’s +Manual Volume 2: System Programming, 13.3 Instruction-Based +Sampling). Examples to use IBS: -The PEBS implementation now supports up to 2. + perf record -a -e cpu-cycles:p ... # use ibs op counting cycles + perf record -a -e r076:p ... # same as -e cpu-cycles:p + perf record -a -e r0C1:p ... # use ibs op counting micro-ops RAW HARDWARE EVENT DESCRIPTOR ----------------------------- @@ -97,4 +115,4 @@ SEE ALSO linkperf:perf-stat[1], linkperf:perf-top[1], linkperf:perf-record[1], http://www.intel.com/Assets/PDF/manual/253669.pdf[Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3B: System Programming Guide], -http://support.amd.com/us/Processor_TechDocs/24593.pdf[AMD64 Architecture Programmer’s Manual Volume 2: System Programming] +http://support.amd.com/us/Processor_TechDocs/24593_APM_v2.pdf[AMD64 Architecture Programmer’s Manual Volume 2: System Programming] -- 1.7.8.4 ^ permalink raw reply [flat|nested] 13+ messages in thread
* [tip:perf/core] perf list: Document precise event sampling for AMD IBS 2012-08-07 17:43 ` [PATCH 6/6] perf, tools: Document precise event sampling for AMD IBS Robert Richter @ 2012-08-21 15:29 ` tip-bot for Robert Richter 0 siblings, 0 replies; 13+ messages in thread From: tip-bot for Robert Richter @ 2012-08-21 15:29 UTC (permalink / raw) To: linux-tip-commits; +Cc: acme, linux-kernel, hpa, mingo, robert.richter, tglx Commit-ID: 2055fdaf8703d3101b12e0d9b7cbceaeabe35c17 Gitweb: http://git.kernel.org/tip/2055fdaf8703d3101b12e0d9b7cbceaeabe35c17 Author: Robert Richter <robert.richter@amd.com> AuthorDate: Tue, 7 Aug 2012 19:43:16 +0200 Committer: Arnaldo Carvalho de Melo <acme@redhat.com> CommitDate: Wed, 8 Aug 2012 12:42:21 -0300 perf list: Document precise event sampling for AMD IBS Updating man perf-list. Signed-off-by: Robert Richter <robert.richter@amd.com> Cc: Ingo Molnar <mingo@kernel.org> Link: http://lkml.kernel.org/r/1344361396-7237-7-git-send-email-robert.richter@amd.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> --- tools/perf/Documentation/perf-list.txt | 42 ++++++++++++++++++++++--------- 1 files changed, 30 insertions(+), 12 deletions(-) diff --git a/tools/perf/Documentation/perf-list.txt b/tools/perf/Documentation/perf-list.txt index 232be51..d1e39dc 100644 --- a/tools/perf/Documentation/perf-list.txt +++ b/tools/perf/Documentation/perf-list.txt @@ -20,20 +20,38 @@ EVENT MODIFIERS --------------- Events can optionally have a modifer by appending a colon and one or -more modifiers. Modifiers allow the user to restrict when events are -counted with 'u' for user-space, 'k' for kernel, 'h' for hypervisor. -Additional modifiers are 'G' for guest counting (in KVM guests) and 'H' -for host counting (not in KVM guests). +more modifiers. Modifiers allow the user to restrict the events to be +counted. The following modifiers exist: + + u - user-space counting + k - kernel counting + h - hypervisor counting + G - guest counting (in KVM guests) + H - host counting (not in KVM guests) + p - precise level The 'p' modifier can be used for specifying how precise the instruction -address should be. The 'p' modifier is currently only implemented for -Intel PEBS and can be specified multiple times: - 0 - SAMPLE_IP can have arbitrary skid - 1 - SAMPLE_IP must have constant skid - 2 - SAMPLE_IP requested to have 0 skid - 3 - SAMPLE_IP must have 0 skid +address should be. The 'p' modifier can be specified multiple times: + + 0 - SAMPLE_IP can have arbitrary skid + 1 - SAMPLE_IP must have constant skid + 2 - SAMPLE_IP requested to have 0 skid + 3 - SAMPLE_IP must have 0 skid + +For Intel systems precise event sampling is implemented with PEBS +which supports up to precise-level 2. + +On AMD systems it is implemented using IBS (up to precise-level 2). +The precise modifier works with event types 0x76 (cpu-cycles, CPU +clocks not halted) and 0xC1 (micro-ops retired). Both events map to +IBS execution sampling (IBS op) with the IBS Op Counter Control bit +(IbsOpCntCtl) set respectively (see AMD64 Architecture Programmer’s +Manual Volume 2: System Programming, 13.3 Instruction-Based +Sampling). Examples to use IBS: -The PEBS implementation now supports up to 2. + perf record -a -e cpu-cycles:p ... # use ibs op counting cycles + perf record -a -e r076:p ... # same as -e cpu-cycles:p + perf record -a -e r0C1:p ... # use ibs op counting micro-ops RAW HARDWARE EVENT DESCRIPTOR ----------------------------- @@ -97,4 +115,4 @@ SEE ALSO linkperf:perf-stat[1], linkperf:perf-top[1], linkperf:perf-record[1], http://www.intel.com/Assets/PDF/manual/253669.pdf[Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3B: System Programming Guide], -http://support.amd.com/us/Processor_TechDocs/24593.pdf[AMD64 Architecture Programmer’s Manual Volume 2: System Programming] +http://support.amd.com/us/Processor_TechDocs/24593_APM_v2.pdf[AMD64 Architecture Programmer’s Manual Volume 2: System Programming] ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2012-08-21 15:30 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2012-08-07 17:43 [PATCH 0/6] perf, tools: Fixes and documentation updates Robert Richter 2012-08-07 17:43 ` [PATCH 1/6] perf, tools: Fix version file for perf documentation with OUTPUT variable set Robert Richter 2012-08-21 15:25 ` [tip:perf/core] perf " tip-bot for Robert Richter 2012-08-07 17:43 ` [PATCH 2/6] perf, tools: Fix lib/traceevent build dir " Robert Richter 2012-08-21 15:26 ` [tip:perf/core] perf tools: Fix lib/ traceevent " tip-bot for Robert Richter 2012-08-07 17:43 ` [PATCH 3/6] perf, tools: Fix parsing of 64 bit raw config value for 32 bit Robert Richter 2012-08-21 15:27 ` [tip:perf/core] perf " tip-bot for Robert Richter 2012-08-07 17:43 ` [PATCH 4/6] perf, tools: Fix cast from pointer to integer " Robert Richter 2012-08-21 15:28 ` [tip:perf/core] tools lib traceevent: " tip-bot for Robert Richter 2012-08-07 17:43 ` [PATCH 5/6] perf, tools: Update documentation about raw event setup Robert Richter 2012-08-21 15:29 ` [tip:perf/core] perf list: " tip-bot for Robert Richter 2012-08-07 17:43 ` [PATCH 6/6] perf, tools: Document precise event sampling for AMD IBS Robert Richter 2012-08-21 15:29 ` [tip:perf/core] perf list: " tip-bot for Robert Richter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
Powered by JetHome