svn commit: r276626 - head/sys/kern
Hans Petter Selasky
hselasky at FreeBSD.org
Sat Jan 3 17:21:20 UTC 2015
Author: hselasky
Date: Sat Jan 3 17:21:19 2015
New Revision: 276626
URL: https://svnweb.freebsd.org/changeset/base/276626
Log:
Rework r276532 a bit. Always avoid recursing into the console drivers
clients, hence they might not handle it very well. This change allows
debugging mutex problems with kernel console drivers when
"debug.witness.skipspin=0" is set in the boot environment.
MFC after: 1 week
Modified:
head/sys/kern/kern_cons.c
Modified: head/sys/kern/kern_cons.c
==============================================================================
--- head/sys/kern/kern_cons.c Sat Jan 3 16:48:08 2015 (r276625)
+++ head/sys/kern/kern_cons.c Sat Jan 3 17:21:19 2015 (r276626)
@@ -512,6 +512,13 @@ cnputs(char *p)
int unlock_reqd = 0;
if (use_cnputs_mtx) {
+ /*
+ * NOTE: Debug prints and/or witness printouts in
+ * console driver clients can cause the "cnputs_mtx"
+ * mutex to recurse. Simply return if that happens.
+ */
+ if (mtx_owned(&cnputs_mtx))
+ return;
mtx_lock_spin(&cnputs_mtx);
unlock_reqd = 1;
}
@@ -601,13 +608,7 @@ static void
cn_drvinit(void *unused)
{
- /*
- * NOTE: Debug prints and/or witness printouts in console
- * driver clients can cause the "cnputs_mtx" mutex to
- * recurse. Make sure the "MTX_RECURSE" flags is set!
- */
- mtx_init(&cnputs_mtx, "cnputs_mtx", NULL, MTX_SPIN |
- MTX_NOWITNESS | MTX_RECURSE);
+ mtx_init(&cnputs_mtx, "cnputs_mtx", NULL, MTX_SPIN | MTX_NOWITNESS);
use_cnputs_mtx = 1;
}
More information about the svn-src-head
mailing list