From: Takashi Iwai <tiwai@suse.de>
To: Keyon Jie <yang.jie@linux.intel.com>
Cc: alsa-devel@alsa-project.org
Subject: Re: [alsa-devel] [PATCH] ALSA: pcm: fix buffer_bytes max constrained by preallocated bytes issue
Date: Thu, 16 Jan 2020 12:50:37 +0100 [thread overview]
Message-ID: <s5hh80v7h82.wl-tiwai@suse.de> (raw)
In-Reply-To: <3c0a0067043d614cd4491b28acf6d49640746b15.camel@linux.intel.com>
On Thu, 16 Jan 2020 12:25:38 +0100,
Keyon Jie wrote:
>
> On Thu, 2020-01-16 at 11:27 +0100, Takashi Iwai wrote:
> > On Thu, 16 Jan 2020 10:50:33 +0100,
> >
> > Oh, you're right, and I completely misread the patch.
> >
> > Now I took a coffee and can tell you the story behind the scene.
> >
> > I believe the current code is intentionally limiting the size to the
> > preallocated size. This limitation was brought for not trying to
> > allocate a larger buffer when the buffer has been preallocated. In
> > the past, most hardware allocated the continuous pages for a buffer
> > and the allocation of a large buffer fails quite likely. This was
> > the
> > reason of the buffer preallocation. So, the driver wanted to tell
> > the
> > user-space the limit. If user needs to have an extra large buffer,
> > they are supposed to fiddle with prealloc procfs (either setting zero
> > to clear the preallocation or setting a large enough buffer
> > beforehand).
>
> Thank you for the sharing, it is interesting and knowledge learned to
> me.
>
> >
> > For SG-buffers, though, limitation makes less sense than continuous
> > pages. e.g. a patch below removes the limitation for SG-buffers.
> > But changing this would definitely cause the behavior difference, and
> > I don't know whether it's a reasonable move -- I'm afraid that apps
> > would start hogging too much memory if the limitation is gone.
>
> I just went through all invoking to snd_pcm_lib_preallocate_pages*(),
> for those SNDRV_DMA_TYPE_DEV, some of them set the *size* equal to the
> *max*, some set the *max* several times to the *size*, IMHO, the *max*s
> are matched to those hardware's limiatation, comparing to the *size*s,
> aren't they?
>
> In this case, I still think my patch hanle all
> TYPE_DEV/SNDRV_DMA_TYPE_DEV/TYPE_SG/SNDRV_DMA_TYPE_DEV cases more
> gracefully, we will still take the limitation from the specific driver
> set, from the *max* param, and the test results looks very nice here,
> we will take what the user space wanted for buffer-bytes via aply
> exactly, as long as it is suitable for the interval and constraints.
Well, I have a mixed feeling. Certainly we'd need some better way to
allow a larger buffer allocation, especially for HDA. OTOH, if the
buffer was preallocated, it's meant to be used actually. That's the
point of the hw_constraint setup.
And now thinking again after another cup of coffee, I wonder why we do
preallocate for HDA at all. For HD-audio, the allocation of any large
buffer would succeed very likely because of SG-buffer.
So, just setting 0 to the preallocation size (but keeping else) would
work, e.g. something like below? The help text needs adjustment, but
you can see the rough idea.
thanks,
Takashi
--- a/sound/hda/Kconfig
+++ b/sound/hda/Kconfig
@@ -21,9 +21,10 @@ config SND_HDA_EXT_CORE
select SND_HDA_CORE
config SND_HDA_PREALLOC_SIZE
- int "Pre-allocated buffer size for HD-audio driver"
+ int "Pre-allocated buffer size for HD-audio driver" if !SND_DMA_SGBUF
range 0 32768
- default 64
+ default 64 if !SND_DMA_SGBUF
+ default 0 if SND_DMA_SGBUF
help
Specifies the default pre-allocated buffer-size in kB for the
HD-audio driver. A larger buffer (e.g. 2048) is preferred
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
next prev parent reply other threads:[~2020-01-16 11:51 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-16 4:53 [alsa-devel] [PATCH] ALSA: pcm: fix buffer_bytes max constrained by preallocated bytes issue Keyon Jie
2020-01-16 7:15 ` Takashi Iwai
2020-01-16 9:50 ` Keyon Jie
2020-01-16 10:27 ` Takashi Iwai
2020-01-16 11:25 ` Keyon Jie
2020-01-16 11:50 ` Takashi Iwai [this message]
2020-01-16 14:14 ` Jie, Yang
2020-01-16 15:31 ` Jie, Yang
2020-01-16 16:07 ` Takashi Iwai
2020-01-16 16:39 ` Pierre-Louis Bossart
2020-01-16 17:25 ` Rajwa, Marcin
2020-01-16 17:40 ` Pierre-Louis Bossart
2020-01-16 20:37 ` Takashi Iwai
2020-01-17 5:30 ` Keyon Jie
2020-01-17 7:57 ` Takashi Iwai
2020-01-17 10:13 ` Keyon Jie
2020-01-17 10:30 ` Takashi Iwai
2020-01-17 10:56 ` Keyon Jie
2020-01-17 11:15 ` Takashi Iwai
2020-01-17 5:37 ` Keyon Jie
2020-01-17 8:00 ` Takashi Iwai
2020-01-17 10:43 ` Keyon Jie
2020-01-17 11:12 ` Takashi Iwai
2020-01-19 3:52 ` Keyon Jie
2020-01-19 7:09 ` Takashi Iwai
2020-01-19 8:11 ` Keyon Jie
2020-01-19 9:04 ` Takashi Iwai
2020-01-19 10:14 ` Keyon Jie
2020-01-19 10:43 ` Takashi Iwai
2020-01-20 2:23 ` Keyon Jie
2020-01-16 15:45 ` Takashi Iwai
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=s5hh80v7h82.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@alsa-project.org \
--cc=yang.jie@linux.intel.com \
/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.