Re: BUG/ spinlock lockup, 2.6.24

From: Jarek Poplawski
Date: Fri Feb 15 2008 - 17:57:31 EST


Jarek Poplawski wrote, On 02/15/2008 10:03 PM:
...

> ...On the other hand this:
>
>> Feb 15 15:50:17 217.151.X.X [1521315.068984] BUG: spinlock lockup on CPU#1,
>> ksoftirqd/1/7, f0551180
>
> seems to point just at spinlock lockup, so it's more about the full report.
> I wonder if this patch to prink could help here:
>
> author Ingo Molnar <mingo at elte.hu>
> Fri, 25 Jan 2008 20:07:58 +0000 (21:07 +0100)
> printk: make printk more robust by not allowing recursion
>
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=32a76006683f7b28ae3cc491da37716e002f198e


...or maybe a patch like this attached here?

Jarek P.
diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c
index 9c4b025..21c8aaa 100644
--- a/lib/spinlock_debug.c
+++ b/lib/spinlock_debug.c
@@ -111,8 +111,7 @@ static void __spin_lock_debug(spinlock_t *lock)
__delay(1);
}
/* lockup suspected: */
- if (print_once) {
- print_once = 0;
+ if (print_once == 1) {
printk(KERN_EMERG "BUG: spinlock lockup on CPU#%d, "
"%s/%d, %p\n",
raw_smp_processor_id(), current->comm,
@@ -122,7 +121,14 @@ static void __spin_lock_debug(spinlock_t *lock)
trigger_all_cpu_backtrace();
#endif
}
+ if (print_once++ > 1000)
+ goto out;
}
+ return;
+out:
+ panic("spinlock lockup panic #%llu\n", i);
+ // or:
+ // BUG();
}

void _raw_spin_lock(spinlock_t *lock)