[alsa-devel] ASoC: davinci-mcasp: Set rule constraints if implicit BCLK divider is used
Dan Carpenter
dan.carpenter at oracle.com
Mon Apr 13 15:58:20 CEST 2015
On Mon, Apr 13, 2015 at 04:32:24PM +0300, Jyri Sarha wrote:
> On 04/13/15 15:16, Dan Carpenter wrote:
> >Thanks for looking at this. I haven't double checked your analysis, but
> >512 means the stack is 2k and that's too high. I think there is
> >supposed to be a build warning if we use more than 1k of stack in a
> >function?
> >
> >It's better to allocate it with kmalloc() and free it at the end.
> >
> >regards,
> >dan carpenter
> >
>
> The function may get called hundreds or even thousands of times when
> an audio stream is started. How heavy is kmalloc/free cycle?
>
> Using kmalloc just feels a bit stupid since in any remotely feasible
> case the maximum number of channels is 8. But maybe I just should
> not care.
I'm a total newbie to this specific so I can't really advise you. I
did find the limit where GCC prints a warning:
home/kisskb/slave/src/net/rds/iw_rdma.c: warning: the frame size of 1052 bytes is larger than 1024 bytes [-Wframe-larger-than=]: 200:1 =>
Since this could go up to 2k that's pretty huge. One idea is to just
say:
int small_buffer[64];
int size = ci->max - ci->min + 1;
int *list = &small_buffer;
if (size > 64)
list = kmalloc();
...
free:
if (size > 64)
kfree(list);
If you've looked at the call trees which call this function and we can't
actually run out of space then that's probably fine too. I don't think
there are any arches which still use 4k stacks.
regards,
dan carpenter
More information about the Alsa-devel
mailing list