From owner-freebsd-current@FreeBSD.ORG Sun May 2 20:36:11 2004 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7853F16A4CE for ; Sun, 2 May 2004 20:36:11 -0700 (PDT) Received: from mailout2.pacific.net.au (mailout2.pacific.net.au [61.8.0.85]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9F71043D5A for ; Sun, 2 May 2004 20:36:10 -0700 (PDT) (envelope-from bde@zeta.org.au) Received: from mailproxy2.pacific.net.au (mailproxy2.pacific.net.au [61.8.0.87])i433Zx5v029731; Mon, 3 May 2004 13:35:59 +1000 Received: from gamplex.bde.org (katana.zip.com.au [61.8.7.246]) i433ZrHW024201; Mon, 3 May 2004 13:35:54 +1000 Date: Mon, 3 May 2004 13:35:51 +1000 (EST) From: Bruce Evans X-X-Sender: bde@gamplex.bde.org To: "M. Warner Losh" In-Reply-To: <20040502.111815.74057370.imp@bsdimp.com> Message-ID: <20040503131929.K3770@gamplex.bde.org> References: <20040430102504.477152ce.bm@malepartus.de> <20040502130027.O1806@gamplex.bde.org> <20040502.111815.74057370.imp@bsdimp.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: bm@malepartus.de cc: freebsd-current@freebsd.org Subject: Re: sio: lots of silo overflows on Asus K8V with Moxa Smartio C104H/PCI X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 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, 03 May 2004 03:36:11 -0000 On Sun, 2 May 2004, M. Warner Losh wrote: > In message: <20040502130027.O1806@gamplex.bde.org> > Bruce Evans writes: > : No, but siointr() doesn't go near the tty layer or almost any other > : layer. It uses pseudo-dma and schedules a SWI to transfer data between > : its buffers and the tty layer. Fast interrupt handlers cannot call > : other layers because they cannot reasonable lock other layers or > : vice versa. (Even the call to the scheduler to schedule a SWI in the > : current implementation is a layering violation.) > > So it is also safe to call the tty layer w/o giant held from the SWI? > I guess that was my question. Or is the SWI wrapped in Giant when I > wasn't looking... Unsafe. SWIs are wrapped by Giant unless they are created using swi_add(... INTR_MPSAFE ...). There are 26 calls to swi_add() in the tree, and the slow progress of Giant removal is shown by only 3 of these using INTR_MPSAFE. The ones in sio are not in the 3. The 3 are all just for multiplexors that push down deciding whether to use Giant to lower layers: - softclock: handles timeout. CALLOUT_MPSAFE specifies that Giant is not needed (or has been pushed down further) for individual timeouts. - swi_net: calls netisrs. NETISR_MPSAFE specifies that Giant is not needed (or ...) for individual netisrs. - taskqueue_swi_run: calls queued MPSAFE tasks. Non-MPSAFE tasks are on another queue. Bruce