From owner-freebsd-bugs@FreeBSD.ORG Sun Sep 5 20:32:43 2004 Return-Path: Delivered-To: freebsd-bugs@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 18FF816A4CE; Sun, 5 Sep 2004 20:32:43 +0000 (GMT) Received: from postfix4-1.free.fr (postfix4-1.free.fr [213.228.0.62]) by mx1.FreeBSD.org (Postfix) with ESMTP id 605A643D48; Sun, 5 Sep 2004 20:32:38 +0000 (GMT) (envelope-from stephane@freebsd-fr.org) Received: from sequoia.mondomaineamoi.megalo (lns-vlq-17f-81-56-170-180.adsl.proxad.net [81.56.170.180]) by postfix4-1.free.fr (Postfix) with ESMTP id A8F1B183B41; Sun, 5 Sep 2004 22:32:36 +0200 (CEST) Received: from sequoia.mondomaineamoi.megalo (localhost.mondomaineamoi.megalo [127.0.0.1])i85KWXPT000908; Sun, 5 Sep 2004 22:32:33 +0200 (CEST) (envelope-from stephane@sequoia.mondomaineamoi.megalo) Received: (from stephane@localhost)i85KWX62000907; Sun, 5 Sep 2004 22:32:33 +0200 (CEST) (envelope-from stephane) Date: Sun, 5 Sep 2004 22:32:33 +0200 From: Stephane Legrand To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-bugs@FreeBSD.org Message-ID: <20040905203233.GA657@sequoia.mondomaineamoi.megalo> References: <200408311147.i7VBl2JJ017235@sequoia.mondomaineamoi.megalo> <200408311150.i7VBoSo0044177@freefall.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200408311150.i7VBoSo0044177@freefall.freebsd.org> User-Agent: Mutt/1.4.2.1i Subject: Re: kern/71189: Kernel panic (trace included) "recursed on non-recursive mutex" with SoundBlaster 32 (ISA port) X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: Stephane Legrand List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 05 Sep 2004 20:32:43 -0000 After looking at revision 1.84 of the sb16.c file (which corrected a similar problem), i wrote and tried the patch below. It fixes the problem, i can now play music with xmms or mplayer. --- sb16.c.original Sat Sep 4 23:47:39 2004 +++ sb16.c Sun Sep 5 22:24:52 2004 @@ -209,7 +209,7 @@ #if 0 printf("sb_cmd2: %x, %x\n", cmd, val); #endif - sb_lock(sb); + sb_lockassert(sb); r = 0; if (sb_dspwr(sb, cmd)) { if (sb_dspwr(sb, val & 0xff)) { @@ -218,7 +218,6 @@ } } } - sb_unlock(sb); return r; } @@ -243,12 +242,11 @@ { int val; - sb_lock(sb); + sb_lockassert(sb); sb_wr(sb, SB_MIX_ADDR, (u_char) (port & 0xff)); /* Select register */ DELAY(10); val = sb_rd(sb, SB_MIX_DATA); DELAY(10); - sb_unlock(sb); return val; }