diff options
| -rw-r--r-- | arch/x86/kernel/cpu/perf_event.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/arch/x86/kernel/cpu/perf_event.h b/arch/x86/kernel/cpu/perf_event.h index fd00bb29425d..c1a861829d81 100644 --- a/arch/x86/kernel/cpu/perf_event.h +++ b/arch/x86/kernel/cpu/perf_event.h | |||
| @@ -262,11 +262,20 @@ struct cpu_hw_events { | |||
| 262 | __EVENT_CONSTRAINT(c, n, INTEL_ARCH_EVENT_MASK, \ | 262 | __EVENT_CONSTRAINT(c, n, INTEL_ARCH_EVENT_MASK, \ |
| 263 | HWEIGHT(n), 0, PERF_X86_EVENT_PEBS_ST_HSW) | 263 | HWEIGHT(n), 0, PERF_X86_EVENT_PEBS_ST_HSW) |
| 264 | 264 | ||
| 265 | #define EVENT_CONSTRAINT_END \ | 265 | /* |
| 266 | EVENT_CONSTRAINT(0, 0, 0) | 266 | * We define the end marker as having a weight of -1 |
| 267 | * to enable blacklisting of events using a counter bitmask | ||
| 268 | * of zero and thus a weight of zero. | ||
| 269 | * The end marker has a weight that cannot possibly be | ||
| 270 | * obtained from counting the bits in the bitmask. | ||
| 271 | */ | ||
| 272 | #define EVENT_CONSTRAINT_END { .weight = -1 } | ||
| 267 | 273 | ||
| 274 | /* | ||
| 275 | * Check for end marker with weight == -1 | ||
| 276 | */ | ||
| 268 | #define for_each_event_constraint(e, c) \ | 277 | #define for_each_event_constraint(e, c) \ |
| 269 | for ((e) = (c); (e)->weight; (e)++) | 278 | for ((e) = (c); (e)->weight != -1; (e)++) |
| 270 | 279 | ||
| 271 | /* | 280 | /* |
| 272 | * Extra registers for specific events. | 281 | * Extra registers for specific events. |
