From owner-cvs-all@FreeBSD.ORG Wed Feb 21 18:10:06 2007 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id DAD4316F45A; Wed, 21 Feb 2007 18:10:06 +0000 (UTC) (envelope-from rizzo@icir.org) Received: from xorpc.icir.org (xorpc.icir.org [192.150.187.68]) by mx1.freebsd.org (Postfix) with ESMTP id BE4B113C481; Wed, 21 Feb 2007 18:10:06 +0000 (UTC) (envelope-from rizzo@icir.org) Received: from xorpc.icir.org (localhost [127.0.0.1]) by xorpc.icir.org (8.12.11/8.13.6) with ESMTP id l1LIA569091559; Wed, 21 Feb 2007 10:10:05 -0800 (PST) (envelope-from rizzo@xorpc.icir.org) Received: (from rizzo@localhost) by xorpc.icir.org (8.12.11/8.12.3/Submit) id l1LIA5ww091558; Wed, 21 Feb 2007 10:10:05 -0800 (PST) (envelope-from rizzo) Date: Wed, 21 Feb 2007 10:10:05 -0800 From: Luigi Rizzo To: Andrew Gallatin Message-ID: <20070221101005.A91427@xorpc.icir.org> References: <200702151721.l1FHLWno019525@repoman.freebsd.org> <20070221121302.A20229@grasshopper.cs.duke.edu> <20070221092332.A90766@xorpc.icir.org> <17884.34420.308021.423716@grasshopper.cs.duke.edu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <17884.34420.308021.423716@grasshopper.cs.duke.edu>; from gallatin@cs.duke.edu on Wed, Feb 21, 2007 at 12:50:44PM -0500 Cc: cvs-src@FreeBSD.org, Luigi Rizzo , src-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/arm/xscale/ixp425 ixp425_npe.c src/sys/dev/ipw if_ipw.c if_ipwvar.h src/sys/dev/isp isp_freebsd.h src/sys/dev/iwi if_iwi.c if_iwivar.h src/sys/dev/mxge if_mxge.c src/sys/kern subr_firmware.c src/sys/sys firmware.h src/sys/tools fw_stub.awk X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 21 Feb 2007 18:10:07 -0000 On Wed, Feb 21, 2007 at 12:50:44PM -0500, Andrew Gallatin wrote: ... > Speaking of icky, I'm really worried about the pedantic nature of > FreeBSD's WITNESS and "never, ever sleep while holding a mutex" dogma > causing as many problems as it solves. For example, iwi seems to > simply drop its lock when loading firmware (presumably to avoid > WITNESS squawking about holding a mutex while grabbing an sx). This > certainly shuts up WITNESS, but it may also introduce a race, > especially if the linker needs to sleep and wait for the disk. i am not sure i follow you here... Of course when you drop the lock you risk that the underlying data structure is manipulated (or in the worst case freed), but usually you can avoid this with something like sc->flags |= LEAVE_ME_ALONE UNLOCK do_something_blocking() LOCK sc->flags &= ~LEAVE_ME_ALONE do_something_else() if (sc->flags & I_AM_WAITING) { sc->flags &= ~I_AM_WAITING; wakeup(sc); } UNLOCK while others would do LOCK(sc->mtx) while (sc->flags & LEAVE_ME_ALONE) { sc->flags |= I_AM_WAITING; msleep(sc, &sc->mtx, ...) } to synchronize... cheers luigi