Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: mediatek: vcodec: Alloc DMA memory with DMA_ATTR_ALLOC_SINGLE_PAGES

As talked about in commit 14d3ae2efeed ("ARM: 8507/1: dma-mapping: Use
DMA_ATTR_ALLOC_SINGLE_PAGES hint to optimize alloc"), it doesn't
really make sense to try to allocate contiguous chunks of memory for
video encoding/decoding. Let's switch the Mediatek vcodec driver to
pass DMA_ATTR_ALLOC_SINGLE_PAGES and take some of the stress off the
memory subsystem.

Signed-off-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Fei Shao <fshao@chromium.org>
Reviewed-by: Fei Shao <fshao@chromium.org>
Reviewed-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Sebastian Fricke <sebastian.fricke@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>

authored by

Douglas Anderson and committed by
Hans Verkuil
b785ea5b 48d85de2

+2 -1
+2 -1
drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_util.c
··· 63 63 id = dec_ctx->id; 64 64 } 65 65 66 - mem->va = dma_alloc_coherent(&plat_dev->dev, mem->size, &mem->dma_addr, GFP_KERNEL); 66 + mem->va = dma_alloc_attrs(&plat_dev->dev, mem->size, &mem->dma_addr, 67 + GFP_KERNEL, DMA_ATTR_ALLOC_SINGLE_PAGES); 67 68 if (!mem->va) { 68 69 mtk_v4l2_err(plat_dev, "%s dma_alloc size=0x%zx failed!", 69 70 __func__, mem->size);