All of lore.kernel.org
 help / color / mirror / Atom feed
* Upgrade driver to 1.0.6, memory allocation?
@ 2004-08-19  2:57 Eliot Blennerhassett
  2004-08-19  9:53 ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Eliot Blennerhassett @ 2004-08-19  2:57 UTC (permalink / raw)
  To: alsa-devel; +Cc: linux

[-- Attachment #1: Type: text/plain, Size: 2056 bytes --]

Hello all,

with the upgrade to 1.0.6, my alsa driver broke. (asihpi)
Now I'm trying to put it together again, and could do with some tips...
Mostly it still contained lots of easy to fix snd_magic_cast() but
Can anybody confirm that the following update is the 'correct' thing to
do?

(My) old code:
call snd_malloc_pages_fallback in the open callback.

New code:
call snd_pcm_lib_malloc_pages() in the hw_params callback

and call snd_pcm_lib_preallocate_pages_for_all() in the sound card pcm
init function (in my case snd_card_asihpi_pcm()
================================
By default according to pcm_memory.c, only a maximum of 4 substreams are
allowed.
My cards have up to 16 substreams.

Chapter 10 of "Writing an alsa driver" says
"snd_pcm_lib_malloc_pages(substream, size);
Note that you have to pre-allocate to use this function. "

Does this only mean that you have to preallocate at least one buffer to
use the function?

If I read it correctly, snd_pcm_lib_malloc_pages will still try to
allocate some memory for substreams> 4, this just becomes less likely as
the system mem becomes fragmented.

Is there a rationale for making the substreams limit 4 as opposed to any
other number?
I guess I can change the max_substreams by providing a module parameter
to snd-pcm module.
============================
snd_pcm_lib_preallocate_pages1()
...
if (size> 0 && preallocate_dma && substream->number <maximum_substreams)
preallocate_pcm_pages(substream, size);
...
Maybe I'm missing something, but it seems the possible error return
value from preallocate_pcm_pages is ignored - is this intentional?
===========================
TIA for any enligtenment about the above.

-- Eliot



<P><font face="Arial, Helvetica, sans-serif" size="2" style="font-size:13.5px">_______________________________________________________________<BR><font face="Arial, Helvetica, sans-serif" size="2" style="font-size:13.5px">ICQ - You get the message, anywhere!<br>Get it @ <a href="http://www.icq.com" target=new>http://www.icq.com</a></font><br><br>&nbsp;</font></font>

[-- Attachment #2: Type: text/html, Size: 2249 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread
* Upgrade driver to 1.0.6, memory allocation?
@ 2004-08-19  2:57 Eliot Blennerhassett
  2004-08-19  7:49 ` Giuliano Pochini
  2004-08-19 13:01 ` Fred Gleason
  0 siblings, 2 replies; 6+ messages in thread
From: Eliot Blennerhassett @ 2004-08-19  2:57 UTC (permalink / raw)
  To: alsa-devel; +Cc: linux

[-- Attachment #1: Type: text/plain, Size: 2056 bytes --]

Hello all,

with the upgrade to 1.0.6, my alsa driver broke. (asihpi)
Now I'm trying to put it together again, and could do with some tips...
Mostly it still contained lots of easy to fix snd_magic_cast() but
Can anybody confirm that the following update is the 'correct' thing to
do?

(My) old code:
call snd_malloc_pages_fallback in the open callback.

New code:
call snd_pcm_lib_malloc_pages() in the hw_params callback

and call snd_pcm_lib_preallocate_pages_for_all() in the sound card pcm
init function (in my case snd_card_asihpi_pcm()
================================
By default according to pcm_memory.c, only a maximum of 4 substreams are
allowed.
My cards have up to 16 substreams.

Chapter 10 of "Writing an alsa driver" says
"snd_pcm_lib_malloc_pages(substream, size);
Note that you have to pre-allocate to use this function. "

Does this only mean that you have to preallocate at least one buffer to
use the function?

If I read it correctly, snd_pcm_lib_malloc_pages will still try to
allocate some memory for substreams> 4, this just becomes less likely as
the system mem becomes fragmented.

Is there a rationale for making the substreams limit 4 as opposed to any
other number?
I guess I can change the max_substreams by providing a module parameter
to snd-pcm module.
============================
snd_pcm_lib_preallocate_pages1()
...
if (size> 0 && preallocate_dma && substream->number <maximum_substreams)
preallocate_pcm_pages(substream, size);
...
Maybe I'm missing something, but it seems the possible error return
value from preallocate_pcm_pages is ignored - is this intentional?
===========================
TIA for any enligtenment about the above.

-- Eliot



<P><font face="Arial, Helvetica, sans-serif" size="2" style="font-size:13.5px">_______________________________________________________________<BR><font face="Arial, Helvetica, sans-serif" size="2" style="font-size:13.5px">ICQ - You get the message, anywhere!<br>Get it @ <a href="http://www.icq.com" target=new>http://www.icq.com</a></font><br><br>&nbsp;</font></font>

[-- Attachment #2: Type: text/html, Size: 2249 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread
* Upgrade driver to 1.0.6, memory allocation?
@ 2004-08-19  2:57 Eliot Blennerhassett
  0 siblings, 0 replies; 6+ messages in thread
From: Eliot Blennerhassett @ 2004-08-19  2:57 UTC (permalink / raw)
  To: alsa-devel; +Cc: linux

[-- Attachment #1: Type: text/plain, Size: 2056 bytes --]

Hello all,

with the upgrade to 1.0.6, my alsa driver broke. (asihpi)
Now I'm trying to put it together again, and could do with some tips...
Mostly it still contained lots of easy to fix snd_magic_cast() but
Can anybody confirm that the following update is the 'correct' thing to
do?

(My) old code:
call snd_malloc_pages_fallback in the open callback.

New code:
call snd_pcm_lib_malloc_pages() in the hw_params callback

and call snd_pcm_lib_preallocate_pages_for_all() in the sound card pcm
init function (in my case snd_card_asihpi_pcm()
================================
By default according to pcm_memory.c, only a maximum of 4 substreams are
allowed.
My cards have up to 16 substreams.

Chapter 10 of "Writing an alsa driver" says
"snd_pcm_lib_malloc_pages(substream, size);
Note that you have to pre-allocate to use this function. "

Does this only mean that you have to preallocate at least one buffer to
use the function?

If I read it correctly, snd_pcm_lib_malloc_pages will still try to
allocate some memory for substreams> 4, this just becomes less likely as
the system mem becomes fragmented.

Is there a rationale for making the substreams limit 4 as opposed to any
other number?
I guess I can change the max_substreams by providing a module parameter
to snd-pcm module.
============================
snd_pcm_lib_preallocate_pages1()
...
if (size> 0 && preallocate_dma && substream->number <maximum_substreams)
preallocate_pcm_pages(substream, size);
...
Maybe I'm missing something, but it seems the possible error return
value from preallocate_pcm_pages is ignored - is this intentional?
===========================
TIA for any enligtenment about the above.

-- Eliot



<P><font face="Arial, Helvetica, sans-serif" size="2" style="font-size:13.5px">_______________________________________________________________<BR><font face="Arial, Helvetica, sans-serif" size="2" style="font-size:13.5px">ICQ - You get the message, anywhere!<br>Get it @ <a href="http://www.icq.com" target=new>http://www.icq.com</a></font><br><br>&nbsp;</font></font>

[-- Attachment #2: Type: text/html, Size: 2249 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2004-08-19 13:01 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-19  2:57 Upgrade driver to 1.0.6, memory allocation? Eliot Blennerhassett
2004-08-19  9:53 ` Takashi Iwai
  -- strict thread matches above, loose matches on Subject: below --
2004-08-19  2:57 Eliot Blennerhassett
2004-08-19  7:49 ` Giuliano Pochini
2004-08-19 13:01 ` Fred Gleason
2004-08-19  2:57 Eliot Blennerhassett

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.