Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Feb 2004 07:27:12 -0800 (PST)
From:      Don Lewis <truckman@FreeBSD.org>
To:        kuriyama@imgsrc.co.jp
Cc:        mat@cnd.mcgill.ca
Subject:   Re: exclusive sleep mutex pcm0 (sound cdev) r = 0
Message-ID:  <200402241527.i1OFRC7E074338@gw.catspoiler.org>
In-Reply-To: <7mwu6dgn15.wl@black.imgsrc.co.jp>

next in thread | previous in thread | raw e-mail | index | archive | help
On 24 Feb, Jun Kuriyama wrote:
> 
> I got this warning on my current box:
> 
> malloc() of "256" with the following non-sleepable locks held:
> exclusive sleep mutex pcm0 (sound cdev) r = 0 (0xc73e63c0) locked @ dev/sound/pcm/dsp.c:213
> 
> I think there is no need to wait in vchan_create().  If kernel does
> not have resources to return small 256 bytes memory for sound device,
> we are not in the situation to care whether sound is played correctly
> or not...

There are a bunch more problems with the "sound cdev" mutex, many of
which can't be fixed by this type of change unless having sporadic sound
system failures due to temporary malloc() failures is acceptable.

I currently have some patches for the channel mutexes that are
undergoing testing.  Once these have been committed, I'll take another
look at the "sound cdev" mutex.  My current thought is to convert most
uses of it to a lockmgr lock.

> Index: vchan.c
> ===================================================================
> RCS file: /home/ncvs/src/sys/dev/sound/pcm/vchan.c,v
> retrieving revision 1.16
> diff -u -r1.16 vchan.c
> --- vchan.c	28 Jan 2004 08:02:15 -0000	1.16
> +++ vchan.c	24 Feb 2004 03:35:19 -0000
> @@ -255,7 +255,7 @@
>  
>     	CHN_UNLOCK(parent);
>  
> -	pce = malloc(sizeof(*pce), M_DEVBUF, M_WAITOK | M_ZERO);
> +	pce = malloc(sizeof(*pce), M_DEVBUF, M_NOWAIT | M_ZERO);
>  	if (!pce) {
>     		CHN_LOCK(parent);
>  		return ENOMEM;
> 
> 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200402241527.i1OFRC7E074338>