aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2010-05-03 03:17:46 -0400
committerIngo Molnar <mingo@elte.hu>2010-05-03 03:17:46 -0400
commit0e417fe1f247bb3ac056ee04604332005c334fac (patch)
treeb1786f5789aa015f488a834a675c20120791bce3
parent53ba4f2fa73225113a488584df0d85d3cba52943 (diff)
parent913769f24eadcd38a936ffae41d9b4895ec02e43 (diff)
Merge branch 'core/locking' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into core/locking
-rw-r--r--kernel/lockdep.c7
-rw-r--r--kernel/lockdep_internals.h10
2 files changed, 8 insertions, 9 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c
index 78325f8f1139..1b58a1bbcc87 100644
--- a/kernel/lockdep.c
+++ b/kernel/lockdep.c
@@ -2298,7 +2298,12 @@ void trace_hardirqs_on_caller(unsigned long ip)
2298 return; 2298 return;
2299 2299
2300 if (unlikely(curr->hardirqs_enabled)) { 2300 if (unlikely(curr->hardirqs_enabled)) {
2301 debug_atomic_inc(redundant_hardirqs_on); 2301 /*
2302 * Neither irq nor preemption are disabled here
2303 * so this is racy by nature but loosing one hit
2304 * in a stat is not a big deal.
2305 */
2306 this_cpu_inc(lockdep_stats.redundant_hardirqs_on);
2302 return; 2307 return;
2303 } 2308 }
2304 /* we'll do an OFF -> ON transition: */ 2309 /* we'll do an OFF -> ON transition: */
diff --git a/kernel/lockdep_internals.h b/kernel/lockdep_internals.h
index 8d7d4b6c741a..2b174762fa0e 100644
--- a/kernel/lockdep_internals.h
+++ b/kernel/lockdep_internals.h
@@ -140,19 +140,13 @@ struct lockdep_stats {
140DECLARE_PER_CPU(struct lockdep_stats, lockdep_stats); 140DECLARE_PER_CPU(struct lockdep_stats, lockdep_stats);
141 141
142#define debug_atomic_inc(ptr) { \ 142#define debug_atomic_inc(ptr) { \
143 struct lockdep_stats *__cpu_lockdep_stats; \
144 \
145 WARN_ON_ONCE(!irqs_disabled()); \ 143 WARN_ON_ONCE(!irqs_disabled()); \
146 __cpu_lockdep_stats = &__get_cpu_var(lockdep_stats); \ 144 this_cpu_inc(lockdep_stats.ptr); \
147 __cpu_lockdep_stats->ptr++; \
148} 145}
149 146
150#define debug_atomic_dec(ptr) { \ 147#define debug_atomic_dec(ptr) { \
151 struct lockdep_stats *__cpu_lockdep_stats; \
152 \
153 WARN_ON_ONCE(!irqs_disabled()); \ 148 WARN_ON_ONCE(!irqs_disabled()); \
154 __cpu_lockdep_stats = &__get_cpu_var(lockdep_stats); \ 149 this_cpu_inc(lockdep_stats.ptr); \
155 __cpu_lockdep_stats->ptr--; \
156} 150}
157 151
158#define debug_atomic_read(ptr) ({ \ 152#define debug_atomic_read(ptr) ({ \