ALSA: memalloc: Let IOMMU handle S/G primarily
authorTakashi Iwai <tiwai@suse.de>
Thu, 1 Aug 2024 06:48:06 +0000 (08:48 +0200)
committerTakashi Iwai <tiwai@suse.de>
Thu, 1 Aug 2024 10:45:49 +0000 (12:45 +0200)
commite469e2045f1b78418f39a2461a9fdf73c2789a1a
treeeeddafc9b9605c68f4bb6320d1208fe1a1fa66c5
parent9c27301342a53fdf349e4c630d75c7c12bbbc580
ALSA: memalloc: Let IOMMU handle S/G primarily

The recent changes in IOMMU made the non-contiguous page allocations
as default, hence we can simply use the standard DMA allocation for
the S/G pages as well.  In this patch, we simplify the code by trying
the standard DMA allocation at first, instead of
dma_alloc_noncontiguous().

For the case without IOMMU, we still need to manage the S/G pages
manually, so we keep the same fallback routines like before.

The fallback types (SNDRV_DMA_TYPE_DEV_SG_FALLBACK & co) are dropped /
folded into SNDRV_DMA_TYPE_DEV_SG and co now.  The allocation via the
standard DMA call overrides the type accordingly, hence we don't have
to have extra fallback types any longer.  OTOH, SNDRV_DMA_TYPE_DEV_SG
is no longer an alias but became its own type back again.

Note that this patch requires another prerequisite fix for memmalloc
helper to use the DMA API for WC pages on x86.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=219087
Link: https://patch.msgid.link/20240801064808.31205-2-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/memalloc.h
sound/core/memalloc.c