Commit f8e4ae10 authored by Takashi Iwai's avatar Takashi Iwai

ALSA: hda: Allow setting preallocation again for x86

The commit c31427d0 ("ALSA: hda: No preallocation on x86
platforms") changed CONFIG_SND_HDA_PREALLOC_SIZE setup and its default
to zero for x86, as the preallocation should work almost all cases.
However, this expectation was too naive; some applications try to
allocate as the max buffer size as possible, and it leads to the
memory exhaustion.  More badly, the commit changed the kconfig no
longer adjustable for x86, so you can't fix it statically (although it
can be still adjusted via procfs).

So, practically seen, it's more recommended to set a reasonable limit
for x86, too.  This patch follows to that experience, and changes the
default to 2048 and allow the kconfig adjustable again.

Fixes: c31427d0 ("ALSA: hda: No preallocation on x86 platforms")
Cc: <stable@vger.kernel.org>
BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=207223
Link: https://lore.kernel.org/r/20200413201919.24241-1-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 3ba21113
...@@ -21,16 +21,17 @@ config SND_HDA_EXT_CORE ...@@ -21,16 +21,17 @@ config SND_HDA_EXT_CORE
select SND_HDA_CORE select SND_HDA_CORE
config SND_HDA_PREALLOC_SIZE config SND_HDA_PREALLOC_SIZE
int "Pre-allocated buffer size for HD-audio driver" if !SND_DMA_SGBUF int "Pre-allocated buffer size for HD-audio driver"
range 0 32768 range 0 32768
default 0 if SND_DMA_SGBUF default 2048 if SND_DMA_SGBUF
default 64 if !SND_DMA_SGBUF default 64 if !SND_DMA_SGBUF
help help
Specifies the default pre-allocated buffer-size in kB for the Specifies the default pre-allocated buffer-size in kB for the
HD-audio driver. A larger buffer (e.g. 2048) is preferred HD-audio driver. A larger buffer (e.g. 2048) is preferred
for systems using PulseAudio. The default 64 is chosen just for systems using PulseAudio. The default 64 is chosen just
for compatibility reasons. for compatibility reasons.
On x86 systems, the default is zero as we need no preallocation. On x86 systems, the default is 2048 as a reasonable value for
most of modern systems.
Note that the pre-allocation size can be changed dynamically Note that the pre-allocation size can be changed dynamically
via a proc file (/proc/asound/card*/pcm*/sub*/prealloc), too. via a proc file (/proc/asound/card*/pcm*/sub*/prealloc), too.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment