From: Andi Kleen <a...@linux.intel.com> Add a precise qualifier, like cpu/event=0x3c,precise=1/
This is needed so that the kernel can request enabling PEBS on specific events. This is useful for mem-loads/mem-stores Currently you have to known that mem-loads is a PEBS event and use perf record -e cpu/mem-loads/p ... With this patch we can export the PEBSness of events in sysfs and then allow perf record -e cpu/mem-loads/ ... or with the additional patch to automatically add cpu// perf record -e mem-loads ... Also useful for some other events added in later patches. v2: Allow 3 as value Signed-off-by: Andi Kleen <a...@linux.intel.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 995fc25..34f1470 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 > 3) + 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 8a48593..13d7c66 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.8.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/