diff options
author | Frederic Weisbecker <frederic@kernel.org> | 2017-11-06 10:01:24 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-11-08 05:13:51 -0500 |
commit | 164446455a5d3f1402b5a0ea42acce33fd576ed7 (patch) | |
tree | 799fe721d91ba93d9af2f7facab5088601654ce7 | |
parent | 7a10e2a9190628a4024ea394ce7bd641ae40ffd1 (diff) |
perf/core: Use lockdep to assert IRQs are disabled/enabled
Use lockdep to check that IRQs are enabled or disabled as expected. This
way the sanity check only shows overhead when concurrency correctness
debug code is enabled.
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: David S . Miller <davem@davemloft.net>
Cc: Lai Jiangshan <jiangshanlai@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Tejun Heo <tj@kernel.org>
Link: http://lkml.kernel.org/r/1509980490-4285-9-git-send-email-frederic@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r-- | kernel/events/core.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c index b315aebbcc3f..c298847d4b85 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c | |||
@@ -209,7 +209,7 @@ static int event_function(void *info) | |||
209 | struct perf_event_context *task_ctx = cpuctx->task_ctx; | 209 | struct perf_event_context *task_ctx = cpuctx->task_ctx; |
210 | int ret = 0; | 210 | int ret = 0; |
211 | 211 | ||
212 | WARN_ON_ONCE(!irqs_disabled()); | 212 | lockdep_assert_irqs_disabled(); |
213 | 213 | ||
214 | perf_ctx_lock(cpuctx, task_ctx); | 214 | perf_ctx_lock(cpuctx, task_ctx); |
215 | /* | 215 | /* |
@@ -306,7 +306,7 @@ static void event_function_local(struct perf_event *event, event_f func, void *d | |||
306 | struct task_struct *task = READ_ONCE(ctx->task); | 306 | struct task_struct *task = READ_ONCE(ctx->task); |
307 | struct perf_event_context *task_ctx = NULL; | 307 | struct perf_event_context *task_ctx = NULL; |
308 | 308 | ||
309 | WARN_ON_ONCE(!irqs_disabled()); | 309 | lockdep_assert_irqs_disabled(); |
310 | 310 | ||
311 | if (task) { | 311 | if (task) { |
312 | if (task == TASK_TOMBSTONE) | 312 | if (task == TASK_TOMBSTONE) |
@@ -1006,7 +1006,7 @@ static enum hrtimer_restart perf_mux_hrtimer_handler(struct hrtimer *hr) | |||
1006 | struct perf_cpu_context *cpuctx; | 1006 | struct perf_cpu_context *cpuctx; |
1007 | int rotations = 0; | 1007 | int rotations = 0; |
1008 | 1008 | ||
1009 | WARN_ON(!irqs_disabled()); | 1009 | lockdep_assert_irqs_disabled(); |
1010 | 1010 | ||
1011 | cpuctx = container_of(hr, struct perf_cpu_context, hrtimer); | 1011 | cpuctx = container_of(hr, struct perf_cpu_context, hrtimer); |
1012 | rotations = perf_rotate_context(cpuctx); | 1012 | rotations = perf_rotate_context(cpuctx); |
@@ -1093,7 +1093,7 @@ static void perf_event_ctx_activate(struct perf_event_context *ctx) | |||
1093 | { | 1093 | { |
1094 | struct list_head *head = this_cpu_ptr(&active_ctx_list); | 1094 | struct list_head *head = this_cpu_ptr(&active_ctx_list); |
1095 | 1095 | ||
1096 | WARN_ON(!irqs_disabled()); | 1096 | lockdep_assert_irqs_disabled(); |
1097 | 1097 | ||
1098 | WARN_ON(!list_empty(&ctx->active_ctx_list)); | 1098 | WARN_ON(!list_empty(&ctx->active_ctx_list)); |
1099 | 1099 | ||
@@ -1102,7 +1102,7 @@ static void perf_event_ctx_activate(struct perf_event_context *ctx) | |||
1102 | 1102 | ||
1103 | static void perf_event_ctx_deactivate(struct perf_event_context *ctx) | 1103 | static void perf_event_ctx_deactivate(struct perf_event_context *ctx) |
1104 | { | 1104 | { |
1105 | WARN_ON(!irqs_disabled()); | 1105 | lockdep_assert_irqs_disabled(); |
1106 | 1106 | ||
1107 | WARN_ON(list_empty(&ctx->active_ctx_list)); | 1107 | WARN_ON(list_empty(&ctx->active_ctx_list)); |
1108 | 1108 | ||
@@ -3523,7 +3523,7 @@ void perf_event_task_tick(void) | |||
3523 | struct perf_event_context *ctx, *tmp; | 3523 | struct perf_event_context *ctx, *tmp; |
3524 | int throttled; | 3524 | int throttled; |
3525 | 3525 | ||
3526 | WARN_ON(!irqs_disabled()); | 3526 | lockdep_assert_irqs_disabled(); |
3527 | 3527 | ||
3528 | __this_cpu_inc(perf_throttled_seq); | 3528 | __this_cpu_inc(perf_throttled_seq); |
3529 | throttled = __this_cpu_xchg(perf_throttled_count, 0); | 3529 | throttled = __this_cpu_xchg(perf_throttled_count, 0); |