linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/9] perf: Adding better precise_ip field handling
@ 2013-01-26 17:27 Jiri Olsa
  2013-01-26 17:27 ` [PATCH 1/9] perf x86: Add precise sysfs cpu pmu attribute Jiri Olsa
                   ` (10 more replies)
  0 siblings, 11 replies; 14+ messages in thread
From: Jiri Olsa @ 2013-01-26 17:27 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jiri Olsa, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern

hi,
adding sysfs attribute to specify the maximum allowed value
for perf_event_attr::precise_ip field.

Adding functionality for simple 'precise' term to get the
maximum allowed value for perf_event_attr::precise_ip field.

And finally adding several precise automated tests.

thanks,
jirka

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>


---
Andi Kleen (1):
      perf tools: Add a precise event qualifier

Jiri Olsa (8):
      perf x86: Add precise sysfs cpu pmu attribute
      perf tools: Add precise object to interface sysfs precise
      perf tests: Add precise event automated test
      perf tools: Read maximal precise value for 'precise' term
      perf tools: Favor 'p' modifier before 'precise' term properly
      perf tests: Add automated precise term test
      perf: Document the ABI for 'precise' sysfs attribute
      perf: Document the ABI for 'rdpmc' sysfs attribute

 Documentation/ABI/testing/sysfs-bus-event_source-cpu-precise | 10 ++++++++++
 Documentation/ABI/testing/sysfs-bus-event_source-cpu-rdpmc   |  8 ++++++++
 arch/x86/kernel/cpu/perf_event.c                             | 34 +++++++++++++++++++++++---------
 tools/perf/Makefile                                          |  2 ++
 tools/perf/tests/builtin-test.c                              |  4 ++++
 tools/perf/tests/parse-events.c                              | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 tools/perf/tests/precise.c                                   | 52 +++++++++++++++++++++++++++++++++++++++++++++++++
 tools/perf/tests/tests.h                                     |  1 +
 tools/perf/util/parse-events.c                               | 38 +++++++++++++++++++++++++++++++++++-
 tools/perf/util/parse-events.h                               |  3 +++
 tools/perf/util/parse-events.l                               |  1 +
 tools/perf/util/parse-events.y                               |  2 +-
 tools/perf/util/precise.c                                    | 45 +++++++++++++++++++++++++++++++++++++++++++
 tools/perf/util/util.h                                       |  2 ++
 14 files changed, 266 insertions(+), 11 deletions(-)

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/9] perf x86: Add precise sysfs cpu pmu attribute
  2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
@ 2013-01-26 17:27 ` Jiri Olsa
  2013-01-26 17:27 ` [PATCH 2/9] perf tools: Add precise object to interface sysfs precise Jiri Olsa
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Jiri Olsa @ 2013-01-26 17:27 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jiri Olsa, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern

Adding sysfs 'precise' attribute for cpu device
(/sys/devices/cpu/precise) to show the maximum
value for perf event precise attribute.

This will be initially used for automated precise
event perf test and could be helpful otherwise.

TODO Arnaldo suggested to use this as a guide for
default adding of precise attribute for HW events.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
---
 arch/x86/kernel/cpu/perf_event.c | 34 +++++++++++++++++++++++++---------
 1 file changed, 25 insertions(+), 9 deletions(-)

diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index 6774c17..190995e 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -377,19 +377,26 @@ static inline int precise_br_compat(struct perf_event *event)
 	return m == b;
 }
 
-int x86_pmu_hw_config(struct perf_event *event)
+static int x86_get_precise(void)
 {
-	if (event->attr.precise_ip) {
-		int precise = 0;
+	int precise = 0;
 
-		/* Support for constant skid */
-		if (x86_pmu.pebs_active && !x86_pmu.pebs_broken) {
+	/* Support for constant skid */
+	if (x86_pmu.pebs_active && !x86_pmu.pebs_broken) {
+		precise++;
+
+		/* Support for IP fixup */
+		if (x86_pmu.lbr_nr)
 			precise++;
+	}
 
-			/* Support for IP fixup */
-			if (x86_pmu.lbr_nr)
-				precise++;
-		}
+	return precise;
+}
+
+int x86_pmu_hw_config(struct perf_event *event)
+{
+	if (event->attr.precise_ip) {
+		int precise = x86_get_precise();
 
 		if (event->attr.precise_ip > precise)
 			return -EOPNOTSUPP;
@@ -1700,6 +1707,13 @@ static int x86_pmu_event_init(struct perf_event *event)
 	return err;
 }
 
+static ssize_t get_attr_precise(struct device *cdev,
+				struct device_attribute *attr,
+				char *buf)
+{
+	return snprintf(buf, 10, "%d\n", x86_get_precise());
+}
+
 static int x86_pmu_event_idx(struct perf_event *event)
 {
 	int idx = event->hw.idx;
@@ -1752,9 +1766,11 @@ static ssize_t set_attr_rdpmc(struct device *cdev,
 }
 
 static DEVICE_ATTR(rdpmc, S_IRUSR | S_IWUSR, get_attr_rdpmc, set_attr_rdpmc);
+static DEVICE_ATTR(precise, S_IRUGO, get_attr_precise, NULL);
 
 static struct attribute *x86_pmu_attrs[] = {
 	&dev_attr_rdpmc.attr,
+	&dev_attr_precise.attr,
 	NULL,
 };
 
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/9] perf tools: Add precise object to interface sysfs precise
  2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
  2013-01-26 17:27 ` [PATCH 1/9] perf x86: Add precise sysfs cpu pmu attribute Jiri Olsa
@ 2013-01-26 17:27 ` Jiri Olsa
  2013-01-26 17:27 ` [PATCH 3/9] perf tests: Add precise event automated test Jiri Olsa
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Jiri Olsa @ 2013-01-26 17:27 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jiri Olsa, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern

Adding precise util object to get maximum value for
perf_event_attr::precise_ip. The value is exported
via sysfs file '/sys/devices/cpu/precise'.

The interface is:
  int perf_precise__get(void)

Returns:
  maximum value allowed for perf_event_attr::precise_ip
   0 if sysfs attribute is not found (supported)
  -1 if we failed to read the sysfs attribute

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
---
 tools/perf/Makefile       |  1 +
 tools/perf/util/precise.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
 tools/perf/util/util.h    |  2 ++
 3 files changed, 48 insertions(+)
 create mode 100644 tools/perf/util/precise.c

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index a84021a..541d242 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -463,6 +463,7 @@ LIB_OBJS += $(OUTPUT)util/rblist.o
 LIB_OBJS += $(OUTPUT)util/intlist.o
 LIB_OBJS += $(OUTPUT)util/vdso.o
 LIB_OBJS += $(OUTPUT)util/stat.o
+LIB_OBJS += $(OUTPUT)util/precise.o
 
 LIB_OBJS += $(OUTPUT)ui/setup.o
 LIB_OBJS += $(OUTPUT)ui/helpline.o
diff --git a/tools/perf/util/precise.c b/tools/perf/util/precise.c
new file mode 100644
index 0000000..d801f3e
--- /dev/null
+++ b/tools/perf/util/precise.c
@@ -0,0 +1,45 @@
+
+#include <linux/kernel.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdio.h>
+#include "sysfs.h"
+#include "util.h"
+
+/*
+ * Returns maximum value allowed for
+ * perf_event_attr::precise_ip, and:
+ *  0 if sysfs attribute is not found (supported)
+ * -1 if we failed to read the sysfs attribute
+ */
+int perf_precise__get(void)
+{
+	static int precise = -1;
+	struct stat st;
+	char path[PATH_MAX];
+
+	if (precise != -1)
+		return precise;
+
+	scnprintf(path, PATH_MAX, "%s/devices/cpu/precise",
+		  sysfs_find_mountpoint());
+
+	if (!lstat(path, &st)) {
+		FILE *file;
+
+		file = fopen(path, "r");
+		if (!file)
+			return -1;
+
+		if (1 != fscanf(file, "%d", &precise))
+			pr_debug("failed to read precise info\n");
+
+		fclose(file);
+	} else
+		/* Return 0 if there's no sysfs precise support. */
+		precise = 0;
+
+
+	return precise;
+}
diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
index 09b4c26..6d846e9 100644
--- a/tools/perf/util/util.h
+++ b/tools/perf/util/util.h
@@ -275,4 +275,6 @@ extern unsigned int page_size;
 struct winsize;
 void get_term_dimensions(struct winsize *ws);
 
+int perf_precise__get(void);
+
 #endif
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/9] perf tests: Add precise event automated test
  2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
  2013-01-26 17:27 ` [PATCH 1/9] perf x86: Add precise sysfs cpu pmu attribute Jiri Olsa
  2013-01-26 17:27 ` [PATCH 2/9] perf tools: Add precise object to interface sysfs precise Jiri Olsa
@ 2013-01-26 17:27 ` Jiri Olsa
  2013-01-26 17:27 ` [PATCH 4/9] perf tools: Add a precise event qualifier Jiri Olsa
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Jiri Olsa @ 2013-01-26 17:27 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jiri Olsa, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern

The test detects the precise attribute availability and try
to open perf event with each allowed precise attribute value.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
---
 tools/perf/Makefile             |  1 +
 tools/perf/tests/builtin-test.c |  4 ++++
 tools/perf/tests/precise.c      | 52 +++++++++++++++++++++++++++++++++++++++++
 tools/perf/tests/tests.h        |  1 +
 4 files changed, 58 insertions(+)
 create mode 100644 tools/perf/tests/precise.c

diff --git a/tools/perf/Makefile b/tools/perf/Makefile
index 541d242..46154f7 100644
--- a/tools/perf/Makefile
+++ b/tools/perf/Makefile
@@ -489,6 +489,7 @@ LIB_OBJS += $(OUTPUT)tests/evsel-tp-sched.o
 LIB_OBJS += $(OUTPUT)tests/pmu.o
 LIB_OBJS += $(OUTPUT)tests/hists_link.o
 LIB_OBJS += $(OUTPUT)tests/python-use.o
+LIB_OBJS += $(OUTPUT)tests/precise.o
 
 BUILTIN_OBJS += $(OUTPUT)builtin-annotate.o
 BUILTIN_OBJS += $(OUTPUT)builtin-bench.o
diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c
index acb98e0..c7649d7 100644
--- a/tools/perf/tests/builtin-test.c
+++ b/tools/perf/tests/builtin-test.c
@@ -78,6 +78,10 @@ static struct test {
 		.func = test__python_use,
 	},
 	{
+		.desc = "Test precise event attribute",
+		.func = test__precise,
+	},
+	{
 		.func = NULL,
 	},
 };
diff --git a/tools/perf/tests/precise.c b/tools/perf/tests/precise.c
new file mode 100644
index 0000000..ef01d78
--- /dev/null
+++ b/tools/perf/tests/precise.c
@@ -0,0 +1,52 @@
+#include <linux/kernel.h>
+#include <linux/perf_event.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include "perf.h"
+#include "tests.h"
+#include "util.h"
+#include "sysfs.h"
+
+static int event_open_precise(int precise)
+{
+	struct perf_event_attr attr = {
+		.type		= PERF_TYPE_HARDWARE,
+		.config		= PERF_COUNT_HW_CPU_CYCLES,
+		.precise_ip	= precise,
+	};
+	int fd;
+
+	pr_debug("open cycles event with precise %d\n", precise);
+
+	fd = sys_perf_event_open(&attr, 0, -1, -1, 0);
+	if (fd < 0) {
+		pr_debug("failed to open event, syscall returned "
+			 "with %d (%s)\n", fd, strerror(errno));
+		return -1;
+	}
+
+	close(fd);
+	return 0;
+
+}
+
+int test__precise(void)
+{
+	int precise = perf_precise__get();
+	int i;
+
+	if (!precise) {
+		pr_debug("no precise info or support\n");
+		return TEST_SKIP;
+	}
+
+	if (precise < 0)
+		return TEST_FAIL;
+
+	for (i = 1; i <= precise; i++)
+		if (event_open_precise(i))
+			return TEST_FAIL;
+
+	return TEST_OK;
+}
diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h
index 5de0be1..ff6db12 100644
--- a/tools/perf/tests/tests.h
+++ b/tools/perf/tests/tests.h
@@ -23,5 +23,6 @@ int test__dso_data(void);
 int test__parse_events(void);
 int test__hists_link(void);
 int test__python_use(void);
+int test__precise(void);
 
 #endif /* TESTS_H */
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 4/9] perf tools: Add a precise event qualifier
  2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
                   ` (2 preceding siblings ...)
  2013-01-26 17:27 ` [PATCH 3/9] perf tests: Add precise event automated test Jiri Olsa
@ 2013-01-26 17:27 ` Jiri Olsa
  2013-01-26 17:27 ` [PATCH 5/9] perf tools: Read maximal precise value for 'precise' term Jiri Olsa
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Jiri Olsa @ 2013-01-26 17:27 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jiri Olsa, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern

From: Andi Kleen <ak@linux.intel.com>

Add a precise qualifier, like cpu/event=0x3c,precise=1/

This is needed so that the kernel can request enabling PEBS
for TSX events. The parser bails out on any sysfs parse errors,
so this is needed in any case to handle any event on the TSX
perf kernel.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
[ nit: changed subject line a bit]
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
---
 tools/perf/util/parse-events.c | 6 ++++++
 tools/perf/util/parse-events.h | 1 +
 tools/perf/util/parse-events.l | 1 +
 3 files changed, 8 insertions(+)

diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 02f6421..217ce56 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -568,6 +568,12 @@ do {								\
 	case PARSE_EVENTS__TERM_TYPE_NAME:
 		CHECK_TYPE_VAL(STR);
 		break;
+	case PARSE_EVENTS__TERM_TYPE_PRECISE:
+		CHECK_TYPE_VAL(NUM);
+		if ((unsigned)term->val.num > 2)
+			return -EINVAL;
+		attr->precise_ip = term->val.num;
+		break;
 	default:
 		return -EINVAL;
 	}
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
index 2cd2c42..9d526cf 100644
--- a/tools/perf/util/parse-events.h
+++ b/tools/perf/util/parse-events.h
@@ -48,6 +48,7 @@ enum {
 	PARSE_EVENTS__TERM_TYPE_NAME,
 	PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD,
 	PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE,
+	PARSE_EVENTS__TERM_TYPE_PRECISE,
 };
 
 struct parse_events_term {
diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l
index e9d1134..32a9000 100644
--- a/tools/perf/util/parse-events.l
+++ b/tools/perf/util/parse-events.l
@@ -169,6 +169,7 @@ period			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD); }
 branch_type		{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_BRANCH_SAMPLE_TYPE); }
 ,			{ return ','; }
 "/"			{ BEGIN(INITIAL); return '/'; }
+precise			{ return term(yyscanner, PARSE_EVENTS__TERM_TYPE_PRECISE); }
 {name_minus}		{ return str(yyscanner, PE_NAME); }
 }
 
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 5/9] perf tools: Read maximal precise value for 'precise' term
  2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
                   ` (3 preceding siblings ...)
  2013-01-26 17:27 ` [PATCH 4/9] perf tools: Add a precise event qualifier Jiri Olsa
@ 2013-01-26 17:27 ` Jiri Olsa
  2013-01-26 17:27 ` [PATCH 6/9] perf tools: Favor 'p' modifier before 'precise' term properly Jiri Olsa
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Jiri Olsa @ 2013-01-26 17:27 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jiri Olsa, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern

Currently if the term is specified without any value like
-e 'cpu/...,precise,../', the number '1' is assigned as
its default value.

Adding special treatment for 'precise' term to use the
maximum allowed precise value in such case using the
perf_precise__get function.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
---
 tools/perf/util/parse-events.c | 29 ++++++++++++++++++++++++++---
 tools/perf/util/parse-events.h |  2 ++
 tools/perf/util/parse-events.y |  2 +-
 3 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index 217ce56..a92c403 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -570,9 +570,14 @@ do {								\
 		break;
 	case PARSE_EVENTS__TERM_TYPE_PRECISE:
 		CHECK_TYPE_VAL(NUM);
-		if ((unsigned)term->val.num > 2)
-			return -EINVAL;
-		attr->precise_ip = term->val.num;
+		/* No value specified, try to get it from sysfs. */
+		if (term->val.num == (u64) -1)
+			attr->precise_ip = perf_precise__get();
+		else {
+			if ((unsigned)term->val.num > 2)
+				return -EINVAL;
+			attr->precise_ip = term->val.num;
+		}
 		break;
 	default:
 		return -EINVAL;
@@ -1210,6 +1215,24 @@ int parse_events_term__num(struct parse_events_term **term,
 			config, NULL, num);
 }
 
+int parse_events_term__num_default(struct parse_events_term **term,
+				   int type_term, char *config)
+{
+	/*
+	 * If no value is specified for term, we use 1 as default.
+	 * The PRECISE term is an exception, because we force special
+	 * functionality when there's no value specified for it,
+	 * so we need to recognize it.
+	 */
+	u64 num = 1;
+
+	if (type_term == PARSE_EVENTS__TERM_TYPE_PRECISE)
+		num = (u64) -1;
+
+	return new_term(term, PARSE_EVENTS__TERM_TYPE_NUM, type_term,
+			config, NULL, num);
+}
+
 int parse_events_term__str(struct parse_events_term **term,
 			   int type_term, char *config, char *str)
 {
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h
index 9d526cf..a5c6d65 100644
--- a/tools/perf/util/parse-events.h
+++ b/tools/perf/util/parse-events.h
@@ -74,6 +74,8 @@ struct parse_events_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, u64 num);
+int parse_events_term__num_default(struct parse_events_term **term,
+				   int type_term, char *config);
 int parse_events_term__str(struct parse_events_term **_term,
 			   int type_term, char *config, char *str);
 int parse_events_term__sym_hw(struct parse_events_term **term,
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y
index 9d43c86..376e9b4 100644
--- a/tools/perf/util/parse-events.y
+++ b/tools/perf/util/parse-events.y
@@ -399,7 +399,7 @@ PE_TERM
 {
 	struct parse_events_term *term;
 
-	ABORT_ON(parse_events_term__num(&term, (int)$1, NULL, 1));
+	ABORT_ON(parse_events_term__num_default(&term, (int)$1, NULL));
 	$$ = term;
 }
 
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 6/9] perf tools: Favor 'p' modifier before 'precise' term properly
  2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
                   ` (4 preceding siblings ...)
  2013-01-26 17:27 ` [PATCH 5/9] perf tools: Read maximal precise value for 'precise' term Jiri Olsa
@ 2013-01-26 17:27 ` Jiri Olsa
  2013-01-26 17:27 ` [PATCH 7/9] perf tests: Add automated precise term test Jiri Olsa
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Jiri Olsa @ 2013-01-26 17:27 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jiri Olsa, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern

The 'p' event modifier is stronger than setting precise_ip
using the 'precise' term, like:

  'cpu/cycles,precise/'   - precise_ip = sysfs precise value
  'cpu/cycles,precise/p'  - precise_ip = 1

There's currently bug if the event modifier without 'p' is
specified the precise_ip is set to zero, like:

  'cpu/cycles,precise/u'  - precise_ip = 0

This patch makes sure that the precise_ip value is overwritten
only if any 'p' event modifier is specified, like:

  'cpu/cycles,precise/u'  - precise_ip = sysfs precise value

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
---
 tools/perf/util/parse-events.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c
index a92c403..83362f2 100644
--- a/tools/perf/util/parse-events.c
+++ b/tools/perf/util/parse-events.c
@@ -818,7 +818,14 @@ int parse_events__modifier_event(struct list_head *list, char *str, bool add)
 		evsel->attr.exclude_user   = mod.eu;
 		evsel->attr.exclude_kernel = mod.ek;
 		evsel->attr.exclude_hv     = mod.eh;
-		evsel->attr.precise_ip     = mod.precise;
+
+		/*
+		 * Change precise only if it's defined, so we don't
+		 * overwrite 'precise' term if there's no 'p' modifier.
+		 */
+		if (mod.precise)
+			evsel->attr.precise_ip = mod.precise;
+
 		evsel->attr.exclude_host   = mod.eH;
 		evsel->attr.exclude_guest  = mod.eG;
 		evsel->exclude_GH          = mod.exclude_GH;
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 7/9] perf tests: Add automated precise term test
  2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
                   ` (5 preceding siblings ...)
  2013-01-26 17:27 ` [PATCH 6/9] perf tools: Favor 'p' modifier before 'precise' term properly Jiri Olsa
@ 2013-01-26 17:27 ` Jiri Olsa
  2013-01-26 17:27 ` [PATCH 8/9] perf: Document the ABI for 'precise' sysfs attribute Jiri Olsa
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Jiri Olsa @ 2013-01-26 17:27 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jiri Olsa, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern

Adding automated test for precise term test in event:
  'cpu/cycles,precise/'
  'cpu/cycles,precise/p'
  'cpu/cycles,precise/u'

to check proper values of precise_ip driven by sysfs
precise attribute.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
---
 tools/perf/tests/parse-events.c | 75 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 75 insertions(+)

diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-events.c
index 20acaff..f92580d 100644
--- a/tools/perf/tests/parse-events.c
+++ b/tools/perf/tests/parse-events.c
@@ -5,6 +5,7 @@
 #include "sysfs.h"
 #include "debugfs.h"
 #include "tests.h"
+#include "util.h"
 #include <linux/hw_breakpoint.h>
 
 #define TEST_ASSERT_VAL(text, cond) \
@@ -445,6 +446,68 @@ static int test__checkevent_pmu_name(struct perf_evlist *evlist)
 	return 0;
 }
 
+static int test__checkevent_pmu_precise(struct perf_evlist *evlist)
+{
+	struct perf_evsel *evsel = perf_evlist__first(evlist);
+
+	/* cpu/cycles,precise/ */
+	TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->nr_entries);
+	TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->attr.type);
+	TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user);
+	TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->attr.exclude_kernel);
+	TEST_ASSERT_VAL("wrong exclude_hv", !evsel->attr.exclude_hv);
+	TEST_ASSERT_VAL("wrong exclude guest", evsel->attr.exclude_guest);
+	TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host);
+	/* precise is driven by sysfs precise attribute */
+	TEST_ASSERT_VAL("wrong precise_ip",
+		evsel->attr.precise_ip == perf_precise__get());
+	TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
+	TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel));
+
+	return 0;
+}
+
+static int test__checkevent_pmu_precise1(struct perf_evlist *evlist)
+{
+	struct perf_evsel *evsel = perf_evlist__first(evlist);
+
+	/* cpu/cycles,precise/p */
+	TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->nr_entries);
+	TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->attr.type);
+	TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user);
+	TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->attr.exclude_kernel);
+	TEST_ASSERT_VAL("wrong exclude_hv", !evsel->attr.exclude_hv);
+	TEST_ASSERT_VAL("wrong exclude guest", evsel->attr.exclude_guest);
+	TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host);
+	/* precise is driven by 'p' modifier */
+	TEST_ASSERT_VAL("wrong precise_ip", evsel->attr.precise_ip == 1);
+	TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
+	TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel));
+
+	return 0;
+}
+
+static int test__checkevent_pmu_precise2(struct perf_evlist *evlist)
+{
+	struct perf_evsel *evsel = perf_evlist__first(evlist);
+
+	/* cpu/cycles,precise/u */
+	TEST_ASSERT_VAL("wrong number of entries", 1 == evlist->nr_entries);
+	TEST_ASSERT_VAL("wrong type", PERF_TYPE_RAW == evsel->attr.type);
+	TEST_ASSERT_VAL("wrong exclude_user", !evsel->attr.exclude_user);
+	TEST_ASSERT_VAL("wrong exclude_kernel", evsel->attr.exclude_kernel);
+	TEST_ASSERT_VAL("wrong exclude_hv", evsel->attr.exclude_hv);
+	TEST_ASSERT_VAL("wrong exclude guest", !evsel->attr.exclude_guest);
+	TEST_ASSERT_VAL("wrong exclude host", !evsel->attr.exclude_host);
+	/* precise is driven by sysfs precise attribute */
+	TEST_ASSERT_VAL("wrong precise_ip",
+		evsel->attr.precise_ip == perf_precise__get());
+	TEST_ASSERT_VAL("wrong group name", !evsel->group_name);
+	TEST_ASSERT_VAL("wrong leader", perf_evsel__is_group_leader(evsel));
+
+	return 0;
+}
+
 static int test__checkevent_pmu_events(struct perf_evlist *evlist)
 {
 	struct perf_evsel *evsel;
@@ -994,6 +1057,18 @@ static struct evlist_test test__events_pmu[] = {
 		.name  = "cpu/config=1,name=krava/u,cpu/config=2/u",
 		.check = test__checkevent_pmu_name,
 	},
+	[2] = {
+		.name  = "cpu/cycles,precise/",
+		.check = test__checkevent_pmu_precise,
+	},
+	[3] = {
+		.name  = "cpu/cycles,precise/p",
+		.check = test__checkevent_pmu_precise1,
+	},
+	[4] = {
+		.name  = "cpu/cycles,precise/u",
+		.check = test__checkevent_pmu_precise2,
+	},
 };
 
 struct terms_test {
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 8/9] perf: Document the ABI for 'precise' sysfs attribute
  2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
                   ` (6 preceding siblings ...)
  2013-01-26 17:27 ` [PATCH 7/9] perf tests: Add automated precise term test Jiri Olsa
@ 2013-01-26 17:27 ` Jiri Olsa
  2013-01-26 17:27 ` [PATCH 9/9] perf: Document the ABI for 'rdpmc' " Jiri Olsa
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 14+ messages in thread
From: Jiri Olsa @ 2013-01-26 17:27 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jiri Olsa, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern

Adding ABI documentation for newly added 'precise' sysfs
attribute.  It's added under the testing section.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
---
 .../ABI/testing/sysfs-bus-event_source-devices-cpu-precise     | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 Documentation/ABI/testing/sysfs-bus-event_source-devices-cpu-precise

diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-cpu-precise b/Documentation/ABI/testing/sysfs-bus-event_source-devices-cpu-precise
new file mode 100644
index 0000000..f3ed378
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-cpu-precise
@@ -0,0 +1,10 @@
+Where:		/sys/bus/event_source/devices/cpu/precise
+Date:		January 2013
+Kernel Version:	3.7
+Contact:	Jiri Olsa <jolsa@redhat.com>
+		Linux kernel mailing list <linux-kernel@vger.kernel.org>
+Description:
+		X86 specific attribute
+
+		Attribute to specify the maximum allowed value
+		for perf_event_attr:precise_ip field.
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 9/9] perf: Document the ABI for 'rdpmc' sysfs attribute
  2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
                   ` (7 preceding siblings ...)
  2013-01-26 17:27 ` [PATCH 8/9] perf: Document the ABI for 'precise' sysfs attribute Jiri Olsa
@ 2013-01-26 17:27 ` Jiri Olsa
  2013-01-26 18:53 ` [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
  2013-01-27 12:41 ` Ingo Molnar
  10 siblings, 0 replies; 14+ messages in thread
From: Jiri Olsa @ 2013-01-26 17:27 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jiri Olsa, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern

Adding ABI documentation for newly added 'rdpmc' sysfs
attribute. It's added under the testing section.

Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: David Ahern <dsahern@gmail.com>
---
 .../ABI/testing/sysfs-bus-event_source-devices-cpu-rdpmc          | 8 ++++++++
 1 file changed, 8 insertions(+)
 create mode 100644 Documentation/ABI/testing/sysfs-bus-event_source-devices-cpu-rdpmc

diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-cpu-rdpmc b/Documentation/ABI/testing/sysfs-bus-event_source-devices-cpu-rdpmc
new file mode 100644
index 0000000..b4f5cbf
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-cpu-rdpmc
@@ -0,0 +1,8 @@
+Where:		/sys/bus/event_source/devices/cpu/rdpmc
+Date:		January 2013
+Kernel Version:	3.7
+Contact:	Linux kernel mailing list <linux-kernel@vger.kernel.org>
+Description:
+		X86 specific attribute
+
+		Attribute to enable/disable user space RDPMC instruction.
-- 
1.7.11.7


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 0/9] perf: Adding better precise_ip field handling
  2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
                   ` (8 preceding siblings ...)
  2013-01-26 17:27 ` [PATCH 9/9] perf: Document the ABI for 'rdpmc' " Jiri Olsa
@ 2013-01-26 18:53 ` Jiri Olsa
  2013-01-27 12:41 ` Ingo Molnar
  10 siblings, 0 replies; 14+ messages in thread
From: Jiri Olsa @ 2013-01-26 18:53 UTC (permalink / raw)
  To: linux-kernel
  Cc: Corey Ashford, Frederic Weisbecker, Ingo Molnar, Namhyung Kim,
	Paul Mackerras, Peter Zijlstra, Arnaldo Carvalho de Melo,
	Andi Kleen, David Ahern

On Sat, Jan 26, 2013 at 06:27:46PM +0100, Jiri Olsa wrote:
> hi,
> adding sysfs attribute to specify the maximum allowed value
> for perf_event_attr::precise_ip field.
> 
> Adding functionality for simple 'precise' term to get the
> maximum allowed value for perf_event_attr::precise_ip field.
> 
> And finally adding several precise automated tests.

Available also at:
  git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/linux.git
  perf/precise3

jirka

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 0/9] perf: Adding better precise_ip field handling
  2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
                   ` (9 preceding siblings ...)
  2013-01-26 18:53 ` [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
@ 2013-01-27 12:41 ` Ingo Molnar
  2013-01-27 12:57   ` Jiri Olsa
  10 siblings, 1 reply; 14+ messages in thread
From: Ingo Molnar @ 2013-01-27 12:41 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: linux-kernel, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern


* Jiri Olsa <jolsa@redhat.com> wrote:

> hi,
> adding sysfs attribute to specify the maximum allowed value
> for perf_event_attr::precise_ip field.
> 
> Adding functionality for simple 'precise' term to get the
> maximum allowed value for perf_event_attr::precise_ip field.
> 
> And finally adding several precise automated tests.

Ok - could we please as a next step turn on cycles:pp as the 
default in all the profiling tools (perf record, perf top), 
transparently? I.e. if the CPU supports it then use it, if not 
then don't complain, just use the highest grade profiling method 
available.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 0/9] perf: Adding better precise_ip field handling
  2013-01-27 12:41 ` Ingo Molnar
@ 2013-01-27 12:57   ` Jiri Olsa
  2013-01-27 13:02     ` Ingo Molnar
  0 siblings, 1 reply; 14+ messages in thread
From: Jiri Olsa @ 2013-01-27 12:57 UTC (permalink / raw)
  To: Ingo Molnar
  Cc: linux-kernel, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern

On Sun, Jan 27, 2013 at 01:41:33PM +0100, Ingo Molnar wrote:
> 
> * Jiri Olsa <jolsa@redhat.com> wrote:
> 
> > hi,
> > adding sysfs attribute to specify the maximum allowed value
> > for perf_event_attr::precise_ip field.
> > 
> > Adding functionality for simple 'precise' term to get the
> > maximum allowed value for perf_event_attr::precise_ip field.
> > 
> > And finally adding several precise automated tests.
> 
> Ok - could we please as a next step turn on cycles:pp as the 
> default in all the profiling tools (perf record, perf top), 
> transparently? I.e. if the CPU supports it then use it, if not 
> then don't complain, just use the highest grade profiling method 
> available.

yep, we discussed with Arnaldo this would be good to have

jirka

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 0/9] perf: Adding better precise_ip field handling
  2013-01-27 12:57   ` Jiri Olsa
@ 2013-01-27 13:02     ` Ingo Molnar
  0 siblings, 0 replies; 14+ messages in thread
From: Ingo Molnar @ 2013-01-27 13:02 UTC (permalink / raw)
  To: Jiri Olsa
  Cc: linux-kernel, Corey Ashford, Frederic Weisbecker, Ingo Molnar,
	Namhyung Kim, Paul Mackerras, Peter Zijlstra,
	Arnaldo Carvalho de Melo, Andi Kleen, David Ahern


* Jiri Olsa <jolsa@redhat.com> wrote:

> On Sun, Jan 27, 2013 at 01:41:33PM +0100, Ingo Molnar wrote:
> > 
> > * Jiri Olsa <jolsa@redhat.com> wrote:
> > 
> > > hi,
> > > adding sysfs attribute to specify the maximum allowed value
> > > for perf_event_attr::precise_ip field.
> > > 
> > > Adding functionality for simple 'precise' term to get the
> > > maximum allowed value for perf_event_attr::precise_ip field.
> > > 
> > > And finally adding several precise automated tests.
> > 
> > Ok - could we please as a next step turn on cycles:pp as the 
> > default in all the profiling tools (perf record, perf top), 
> > transparently? I.e. if the CPU supports it then use it, if not 
> > then don't complain, just use the highest grade profiling method 
> > available.
> 
> yep, we discussed with Arnaldo this would be good to have

This would be a high-profile, user visible improvement to 
profiling quality.

Thanks,

	Ingo

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2013-01-27 13:03 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-26 17:27 [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
2013-01-26 17:27 ` [PATCH 1/9] perf x86: Add precise sysfs cpu pmu attribute Jiri Olsa
2013-01-26 17:27 ` [PATCH 2/9] perf tools: Add precise object to interface sysfs precise Jiri Olsa
2013-01-26 17:27 ` [PATCH 3/9] perf tests: Add precise event automated test Jiri Olsa
2013-01-26 17:27 ` [PATCH 4/9] perf tools: Add a precise event qualifier Jiri Olsa
2013-01-26 17:27 ` [PATCH 5/9] perf tools: Read maximal precise value for 'precise' term Jiri Olsa
2013-01-26 17:27 ` [PATCH 6/9] perf tools: Favor 'p' modifier before 'precise' term properly Jiri Olsa
2013-01-26 17:27 ` [PATCH 7/9] perf tests: Add automated precise term test Jiri Olsa
2013-01-26 17:27 ` [PATCH 8/9] perf: Document the ABI for 'precise' sysfs attribute Jiri Olsa
2013-01-26 17:27 ` [PATCH 9/9] perf: Document the ABI for 'rdpmc' " Jiri Olsa
2013-01-26 18:53 ` [PATCH 0/9] perf: Adding better precise_ip field handling Jiri Olsa
2013-01-27 12:41 ` Ingo Molnar
2013-01-27 12:57   ` Jiri Olsa
2013-01-27 13:02     ` Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).