Skip to content

Commit

Permalink
ALSA: hda: Allow setting preallocation again for x86
Browse files Browse the repository at this point in the history
The commit c31427d ("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: c31427d ("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.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Takashi Iwai committed Apr 13, 2020
1 parent 3ba2111 commit f8e4ae1
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions sound/hda/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,17 @@ config SND_HDA_EXT_CORE
select SND_HDA_CORE

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
default 0 if SND_DMA_SGBUF
default 2048 if SND_DMA_SGBUF
default 64 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
for systems using PulseAudio. The default 64 is chosen just
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
via a proc file (/proc/asound/card*/pcm*/sub*/prealloc), too.
Expand Down

0 comments on commit f8e4ae1

Please sign in to comment.