Date: Thu, 22 Jun 2000 08:58:40 -0700 (PDT) From: Matthew Dillon <dillon@apollo.backplane.com> To: Bruce Evans <bde@zeta.org.au> Cc: Jason Evans <jasone@canonware.com>, Greg Lehey <grog@lemis.com>, Warner Losh <imp@village.org>, The Hermit Hacker <scrappy@hub.org>, freebsd-smp@FreeBSD.ORG Subject: Re: SP Patchset #1 up Message-ID: <200006221558.IAA03062@apollo.backplane.com> References: <Pine.BSF.4.21.0006221737130.418-100000@besplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
:> :Note that the low level console drivers must not use any locks or switch :> :context, since they need to work in debugger traps which may occur with :> :locks in any state. Old reentrancy bugs in syscons will probably be :> :more obvious now. :> :> Yah. That's why I replaced them all with mtx_enter_sched_quick(), :> which is the closest equivalent to those requirements. The spl*() :> calls only work if you are holding GiantMutex, and that obviously :> is not necessarily the case for the kernel printf(). : :You now have deadlock when the low level console i/o routines are :reentered for ddb i/o, since task switching is either impossible or :undesireable while ddb is active (it's essentially impossible if ddb :was entered via a breakpoint in the middle of task switching code). : :When task switching is possible to avoid deadlock on console i/o :resources, it may still be undesirable. A printf from a high priority :interrupt task shouldn't have to wait for a printf from a low priority :task to complete. I don't follow. Why do I have a deadlock? This is SchedMutex I'm talking about here, not GiantMutex. -Matt Matthew Dillon <dillon@backplane.com> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-smp" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200006221558.IAA03062>