Make kdb CONFIG_LOCKDEP friendly.

Use of a serial line console with kdb and lockdep enabled
generates lots of lockdep warnings on kdb/entry edit.

So fix the circular locking dependency between the
kdb_printf and the 8250's port->lock, by suppressing all
use of port->lock by the 8250 serial driver when kdb_printf
is active.

This means that the allowed locking direction is:
        port->lock ---> kdb_printf_lock

Signed-off-by: Joe Korty <[email protected]>

Index: 2.6.31.3-kdb/kdb/kdb_io.c
===================================================================
--- 2.6.31.3-kdb.orig/kdb/kdb_io.c      2009-10-12 11:05:01.000000000 -0400
+++ 2.6.31.3-kdb/kdb/kdb_io.c   2009-10-12 11:06:50.000000000 -0400
@@ -540,6 +540,7 @@
        } else {
                __acquire(kdb_printf_lock);
        }
+       atomic_inc(&kdb_8250);
 
        diag = kdbgetintenv("LINES", &linecount);
        if (diag || linecount <= 1)
@@ -774,6 +775,7 @@
        if (logging) {
                console_loglevel = saved_loglevel;
        }
+       atomic_dec(&kdb_8250);
        if (KDB_STATE(PRINTF_LOCK) && got_printf_lock) {
                got_printf_lock = 0;
                spin_unlock_irqrestore(&kdb_printf_lock, flags);

_______________________________________________
kdb mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/kdb

Reply via email to