Lock depth checking allows panicy prints
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 9 Jan 2013 01:00:01 +0000 (17:00 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 9 Jan 2013 01:19:38 +0000 (17:19 -0800)
commit25259ef6a645b249b5089a583c32472c9ab13c3c
tree4338ae8cc7b028ac2926f4e8e3c0c3af9f6a7cc7
parentf26ff85cb51e78428cb3c87336eabf246547db47
Lock depth checking allows panicy prints

We use locks when printing, so once one lock failed, it would
recursively fail if the condition remained true (such as having a bad
kernel stack depth).  This would happen for any kernel trap or trace
coretf, or any other place where I don't care about the deadlock but
want to get the printf.

Note that there are a couple locks involved in printing - two on the
printk path.  If we fail (e.g. for IRQSAVE reasons) on the SECOND lock
(after grabbing the first lock), we will still deadlock, since we
basically grabbed lock 1, failed when getting 2, then attempted to get 1
again for another printk.  In lieu of making this debug code more
robust, we just will leave those locks as irqsave for a long time.
kern/arch/i686/trap.c
kern/include/smp.h
kern/src/atomic.c
kern/src/init.c