|
@@ -262,11 +262,20 @@ struct cpu_hw_events {
|
|
|
__EVENT_CONSTRAINT(c, n, INTEL_ARCH_EVENT_MASK, \
|
|
|
HWEIGHT(n), 0, PERF_X86_EVENT_PEBS_ST_HSW)
|
|
|
|
|
|
-#define EVENT_CONSTRAINT_END \
|
|
|
- EVENT_CONSTRAINT(0, 0, 0)
|
|
|
+/*
|
|
|
+ * We define the end marker as having a weight of -1
|
|
|
+ * to enable blacklisting of events using a counter bitmask
|
|
|
+ * of zero and thus a weight of zero.
|
|
|
+ * The end marker has a weight that cannot possibly be
|
|
|
+ * obtained from counting the bits in the bitmask.
|
|
|
+ */
|
|
|
+#define EVENT_CONSTRAINT_END { .weight = -1 }
|
|
|
|
|
|
+/*
|
|
|
+ * Check for end marker with weight == -1
|
|
|
+ */
|
|
|
#define for_each_event_constraint(e, c) \
|
|
|
- for ((e) = (c); (e)->weight; (e)++)
|
|
|
+ for ((e) = (c); (e)->weight != -1; (e)++)
|
|
|
|
|
|
/*
|
|
|
* Extra registers for specific events.
|