Interrupts and kmalloc in alsa modules

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,
I am working with an ARM embedded system and I porting
an alsa application to that system. 

Cirrus (the manufacturer of the board) wrote a generic
alsa driver for "their" kernel (a kernel based on the
2.6.8 with some patches) and I ported the module to
the vanilla kernel 2.6.19.

The module works fine (play and capture both work),
but the function that allocates the memory prints a
strange message in the kernel log when the buffers are
allocated (the module calls kmalloc, which prints
"sleeping function called from invalid context" to the
log).

The buffers are allocated when the streams are
started,   not when the module is loaded, I think this
is standard...

The buffers are allocated with the following line:

s->buffers = (audio_buf_t *)
kmalloc(sizeof(audio_buf_t) * s->nbfrags, GFP_KERNEL);

When the line here above is executed, slab.c prints
the error the kernel log. The error comes from the
"might_sleep_if" line:

static inline void
cache_alloc_debugcheck_before(struct kmem_cache
*cachep, gfp_t flags)
{
	might_sleep_if(flags & __GFP_WAIT);
#if DEBUG
	kmem_flagcheck(cachep, flags);
#endif
}

Playing with the module, I discovered that if I enable
the interrupts before calling kmalloc, the error
disappears. I wonder if this is correct, or if
something is wrong...

Could someone of you explain to me why I have to
enable the interrupts before calling kmalloc? The
strange thing is that the module never explicitly
turns them off (I attached the file to the mail)

Any help is greatly appreciated ;-)
Bye
Andrea


       
____________________________________________________________________________________
Food fight? Enjoy some healthy debate 
in the Yahoo! Answers Food & Drink Q&A.
http://answers.yahoo.com/dir/?link=list&sid=396545367
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux