aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorAndrew Morton <akpm@osdl.org>2006-12-06 20:14:01 -0500
committerAndi Kleen <andi@basil.nowhere.org>2006-12-06 20:14:01 -0500
commitbb81a09e55eaf7e5f798468ab971469b6f66a259 (patch)
treecf1ed6b0ad75137361228955535044fd4630a57b /lib
parente5e3a0428968dcc1f9318ce1c941a918e99f8b84 (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')
-rw-r--r--lib/spinlock_debug.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c
index b6c4f898197..479fd462eaa 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}