ALSA: memalloc: Allocate more contiguous pages for fallback case
authorTakashi Iwai <tiwai@suse.de>
Mon, 14 Nov 2022 14:16:58 +0000 (15:16 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 16 Nov 2022 11:54:40 +0000 (12:54 +0100)
commitcc26516374065a34e10c9a8bf3e940e42cd96e2a
treedd0dc5558593555131e8234888ca52d0a7a9ab14
parentd69d137e56304be744537fbb4ef9b0878fbc53d6
ALSA: memalloc: Allocate more contiguous pages for fallback case

Currently the fallback SG allocation tries to allocate each single
page, and this tends to result in the reverse order of memory
addresses when large space is available at boot, as the kernel takes a
free page from the top to the bottom in the zone.  The end result
looks as if non-contiguous (although it actually is).  What's worse is
that it leads to an overflow of BDL entries for HD-audio.

For avoiding such a problem, this patch modifies the allocation code
slightly; now it tries to allocate the larger contiguous chunks as
much as possible, then reduces to the smaller chunks only if the
allocation failed -- a similar strategy as the existing
snd_dma_alloc_pages_fallback() function.

Along with the trick, drop the unused address array from
snd_dma_sg_fallback object.  It was needed in the past when
dma_alloc_coherent() was used, but with the standard page allocator,
it became superfluous and never referred.

Fixes: a8d302a0b770 ("ALSA: memalloc: Revive x86-specific WC page allocations again")
Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20221114141658.29620-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/memalloc.c