Re: exclusive sleep mutex pcm0 (sound cdev) r = 0

From: Don Lewis <truckman_at_FreeBSD.org>
Date: Tue, 24 Feb 2004 07:27:12 -0800 (PST)
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 _at_ 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
> _at__at_ -255,7 +255,7 _at__at_
>  
>     	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;
> 
> 
Received on Tue Feb 24 2004 - 06:27:30 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:44 UTC