Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Jan 2012 17:04:53 +0400
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        Andriy Gapon <avg@FreeBSD.org>
Cc:        current@FreeBSD.org
Subject:   Re: locks under printf(9) and WITNESS [Was: new panic in cpu_reset() with WITNESS]
Message-ID:  <20120123130453.GH16676@glebius.int.ru>
In-Reply-To: <4F1AF55F.4090803@FreeBSD.org>
References:  <20120117110242.GD12760@glebius.int.ru> <20120120154158.GD16676@FreeBSD.org> <4F1ABFF3.9090305@FreeBSD.org> <4F1ACD97.5080506@FreeBSD.org> <4F1AF55F.4090803@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Jan 21, 2012 at 07:26:55PM +0200, Andriy Gapon wrote:
A> > BTW, we have a quite strange situation with spin locks in console output path.
A> > cnputs_mtx is marked as MTX_NOWITNESS, supposedly because cnputs (printf) can be
A> > called in any locking context (even during normal operation).  But there are a
A> > number of console-specific locks (scrlock, uart_hwmtx, "syscons video lock")
A> > which are acquired under cnputs_mtx, but which are *not* marked as
A> > MTX_NOWITNESS.  More, they are specified in the witness order_lists as if we
A> > certainly know a correct order for them.
A> > I think that the msgbuf mutex also deserves mentioning in this context.
A> > 
A> > I think that all of these spin locks should be marked as MTX_NOWITNESS (as long
A> > as they stay normal spinlocks), because printf(9) should be usable wherever I
A> > stick it in the code.
A> > 
A> > P.S. The above only matters for WITNESS and !WITNESS_SKIPSPIN and I am not sure
A> > if this combination really matters.
A> > 
A> 
A> Here's my take at it:
A> diff --git a/sys/kern/kern_cons.c b/sys/kern/kern_cons.c
A> index 5346bc3..97f0f16 100644

...

This patch works.

-- 
Totus tuus, Glebius.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120123130453.GH16676>