From: Takashi Iwai <tiwai@suse.de>
To: Eliot Blennerhassett <bigblen@icqmail.com>
Cc: alsa-devel@lists.sourceforge.net, linux@blennerhassett.gen.nz
Subject: Re: Upgrade driver to 1.0.6, memory allocation?
Date: Thu, 19 Aug 2004 11:53:59 +0200 [thread overview]
Message-ID: <s5h7jrvv4g8.wl@alsa2.suse.de> (raw)
In-Reply-To: <2f2201c48598$401d6d10$2701010a@mail2world.com>
At Wed, 18 Aug 2004 19:57:23 -0700,
Eliot Blennerhassett wrote:
>
> 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.
Oh sorry, my last clean-up hits you...
>
> 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?
This doesn't matter. snd_pcm_lib_malloc_pages() allocates the pages
automatically when no preallocated buffer exists or the request buffer
size exceeds the preallocated buffer.
Just call snd_pcm_preallocate_pages_for_all() for the all pcm
instances to use snd_pcm_lib_malloc_pages().
> 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.
Well but in your old code you allocated pages in the open callback,
right? So it shouldn't be different. The buffer allocation in
hw_params callback is usually also done only once per open.
> 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?
Yes. The error in preallocation isn't critical since
snd_pcm_lib_malloc_pages() itself allocates the buffer, too.
Takashi
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
next prev parent reply other threads:[~2004-08-19 9:53 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-08-19 2:57 Upgrade driver to 1.0.6, memory allocation? Eliot Blennerhassett
2004-08-19 9:53 ` Takashi Iwai [this message]
-- 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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=s5h7jrvv4g8.wl@alsa2.suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@lists.sourceforge.net \
--cc=bigblen@icqmail.com \
--cc=linux@blennerhassett.gen.nz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.