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 | } |
