From owner-freebsd-current@FreeBSD.ORG Tue May 24 05:07:13 2005 Return-Path: X-Original-To: freebsd-current@FreeBSD.org Delivered-To: freebsd-current@FreeBSD.org Received: by hub.freebsd.org (Postfix, from userid 618) id 0935F16A41F; Tue, 24 May 2005 05:07:13 +0000 (GMT) In-Reply-To: <20050524030802.GD61461@cell.sick.ru> from Gleb Smirnoff at "May 24, 2005 07:08:02 am" To: glebius@FreeBSD.org (Gleb Smirnoff) Date: Tue, 24 May 2005 05:07:13 +0000 (GMT) X-Mailer: ELM [version 2.4ME+ PL54 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Message-Id: <20050524050713.0935F16A41F@hub.freebsd.org> From: wpaul@FreeBSD.ORG (Bill Paul) Cc: mikej@rogers.com, freebsd-current@FreeBSD.org Subject: Re: non-sleepable locks held (xl0) 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: Tue, 24 May 2005 05:07:13 -0000 > Mike, Bill, > > On Mon, May 23, 2005 at 04:55:34PM -0400, Mike Jakubik wrote: > M> Not sure if this is reported already, but i got this on a recently cvsuped > M> -current system while booting. > > ACK, my fault. > > We can't just zero ta_pending flag, since task may have alredy been > triggered, and now is being waiting on driver lock at xl_rxeof_task(). > > Probably we need to run taskqueue_drain() before locking driver > mutex, that is before call to xl_lock(). > > Bill, what is your opinion? You can't sleep in taskqueue_drain() with a lock held (clowns will eat you). Wait for the taskqueue to drain first, then lock. -Bill -- ============================================================================= -Bill Paul (510) 749-2329 | Senior Engineer, Master of Unix-Fu wpaul@windriver.com | Wind River Systems ============================================================================= you're just BEGGING to face the moose =============================================================================