From owner-freebsd-current@FreeBSD.ORG Mon Jan 23 13:59:40 2012 Return-Path: Delivered-To: current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E738A1065672; Mon, 23 Jan 2012 13:59:40 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 11C098FC1E; Mon, 23 Jan 2012 13:59:39 +0000 (UTC) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id PAA04965; Mon, 23 Jan 2012 15:59:38 +0200 (EET) (envelope-from avg@FreeBSD.org) Message-ID: <4F1D67CA.8010809@FreeBSD.org> Date: Mon, 23 Jan 2012 15:59:38 +0200 From: Andriy Gapon User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120111 Thunderbird/9.0 MIME-Version: 1.0 To: Gleb Smirnoff References: <20120117110242.GD12760@glebius.int.ru> <20120120154158.GD16676@FreeBSD.org> <4F1ABFF3.9090305@FreeBSD.org> <4F1ACD97.5080506@FreeBSD.org> <4F1AF55F.4090803@FreeBSD.org> <20120123130453.GH16676@glebius.int.ru> In-Reply-To: <20120123130453.GH16676@glebius.int.ru> X-Enigmail-Version: undefined Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: current@FreeBSD.org Subject: Re: locks under printf(9) and WITNESS [Was: new panic in cpu_reset() with WITNESS] X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 23 Jan 2012 13:59:41 -0000 on 23/01/2012 15:04 Gleb Smirnoff said the following: > 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. > Thank you for testing! -- Andriy Gapon