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.
Unified · Split
| @@ -63,7 +63,8 @@ int mtk_vcodec_mem_alloc(void *priv, struct mtk_vcodec_mem *mem) · 62 unmodified lines | |||
| 63 | id = dec_ctx->id; | 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 | if (!mem->va) { | 68 | if (!mem->va) { |
| 68 | mtk_v4l2_err(plat_dev, "%s dma_alloc size=0x%zx failed!", | 69 | mtk_v4l2_err(plat_dev, "%s dma_alloc size=0x%zx failed!", |
| 69 | __func__, mem->size); | 70 | __func__, mem->size); |