diff options
author | Andrew Morton <akpm@osdl.org> | 2006-12-06 20:14:01 -0500 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-12-06 20:14:01 -0500 |
commit | bb81a09e55eaf7e5f798468ab971469b6f66a259 (patch) | |
tree | cf1ed6b0ad75137361228955535044fd4630a57b /lib/spinlock_debug.c | |
parent | e5e3a0428968dcc1f9318ce1c941a918e99f8b84 (diff) |
[PATCH] x86: all cpu backtrace
When a spinlock lockup occurs, arrange for the NMI code to emit an all-cpu
backtrace, so we get to see which CPU is holding the lock, and where.
Cc: Andi Kleen <ak@muc.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Badari Pulavarty <pbadari@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'lib/spinlock_debug.c')
-rw-r--r-- | lib/spinlock_debug.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c index b6c4f898197c..479fd462eaa9 100644 --- a/lib/spinlock_debug.c +++ b/lib/spinlock_debug.c | |||
@@ -7,6 +7,7 @@ | |||
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/spinlock.h> | 9 | #include <linux/spinlock.h> |
10 | #include <linux/nmi.h> | ||
10 | #include <linux/interrupt.h> | 11 | #include <linux/interrupt.h> |
11 | #include <linux/debug_locks.h> | 12 | #include <linux/debug_locks.h> |
12 | #include <linux/delay.h> | 13 | #include <linux/delay.h> |
@@ -117,6 +118,9 @@ static void __spin_lock_debug(spinlock_t *lock) | |||
117 | raw_smp_processor_id(), current->comm, | 118 | raw_smp_processor_id(), current->comm, |
118 | current->pid, lock); | 119 | current->pid, lock); |
119 | dump_stack(); | 120 | dump_stack(); |
121 | #ifdef CONFIG_SMP | ||
122 | trigger_all_cpu_backtrace(); | ||
123 | #endif | ||
120 | } | 124 | } |
121 | } | 125 | } |
122 | } | 126 | } |