perf/x86/intel: Introduce PMU flag for Extended PEBS
authorKan Liang <kan.liang@linux.intel.com>
Fri, 9 Mar 2018 02:15:39 +0000 (18:15 -0800)
committerIngo Molnar <mingo@kernel.org>
Wed, 25 Jul 2018 09:50:49 +0000 (11:50 +0200)
The Extended PEBS feature, introduced in the Goldmont Plus
microarchitecture, supports all events as "Extended PEBS".

Introduce flag PMU_FL_PEBS_ALL to indicate the platforms which support
extended PEBS.

To support all events, it needs to support all constraints for PEBS. To
avoid duplicating all the constraints in the PEBS table, making the PEBS
code search the normal constraints too.

Based-on-code-from: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Cc: acme@kernel.org
Link: http://lkml.kernel.org/r/20180309021542.11374-1-kan.liang@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/events/intel/ds.c
arch/x86/events/perf_event.h

index 8dbba77e05184263daaeca280a1fe79853617ca0..9fd9cb1d2cc8afd067352c9030c93ffe1bc94032 100644 (file)
@@ -871,6 +871,13 @@ struct event_constraint *intel_pebs_constraints(struct perf_event *event)
                }
        }
 
+       /*
+        * Extended PEBS support
+        * Makes the PEBS code search the normal constraints.
+        */
+       if (x86_pmu.flags & PMU_FL_PEBS_ALL)
+               return NULL;
+
        return &emptyconstraint;
 }
 
index 2430398befd8be45b1c56ae2f1aa99cb38dc7f1c..156286335351a43b6692ab07747e97e1fb97b3b2 100644 (file)
@@ -673,6 +673,7 @@ do {                                                                        \
 #define PMU_FL_HAS_RSP_1       0x2 /* has 2 equivalent offcore_rsp regs   */
 #define PMU_FL_EXCL_CNTRS      0x4 /* has exclusive counter requirements  */
 #define PMU_FL_EXCL_ENABLED    0x8 /* exclusive counter active */
+#define PMU_FL_PEBS_ALL                0x10 /* all events are valid PEBS events */
 
 #define EVENT_VAR(_id)  event_attr_##_id
 #define EVENT_PTR(_id) &event_attr_##_id.attr.attr