From 2d243f431a42b085de9af692b068eb2a7b1d0e84 Mon Sep 17 00:00:00 2001 From: Cai YiWei Date: Wed, 14 Apr 2021 18:35:25 +0800 Subject: [PATCH] media: rockchip: isp: dma buf alloc limit to DMA32 Change-Id: Ibc1f4afc45a031714ee4cabfc70b38f930706d46 Signed-off-by: Cai YiWei --- drivers/media/platform/rockchip/isp/capture_v1x.c | 1 + drivers/media/platform/rockchip/isp/capture_v20.c | 1 + drivers/media/platform/rockchip/isp/capture_v21.c | 1 + drivers/media/platform/rockchip/isp/common.c | 4 ++-- drivers/media/platform/rockchip/isp/dmarx.c | 2 +- 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/rockchip/isp/capture_v1x.c b/drivers/media/platform/rockchip/isp/capture_v1x.c index 98e1695ee793..67fff9c34e60 100644 --- a/drivers/media/platform/rockchip/isp/capture_v1x.c +++ b/drivers/media/platform/rockchip/isp/capture_v1x.c @@ -853,6 +853,7 @@ static int rkisp_init_vb2_queue(struct vb2_queue *q, q->allow_cache_hints = 1; if (stream->ispdev->hw_dev->is_dma_contig) q->dma_attrs = DMA_ATTR_FORCE_CONTIGUOUS; + q->gfp_flags = GFP_DMA32; return vb2_queue_init(q); } diff --git a/drivers/media/platform/rockchip/isp/capture_v20.c b/drivers/media/platform/rockchip/isp/capture_v20.c index 4987edce1902..e3607fde30c3 100644 --- a/drivers/media/platform/rockchip/isp/capture_v20.c +++ b/drivers/media/platform/rockchip/isp/capture_v20.c @@ -1972,6 +1972,7 @@ static int rkisp_init_vb2_queue(struct vb2_queue *q, q->bidirectional = 1; if (stream->ispdev->hw_dev->is_dma_contig) q->dma_attrs = DMA_ATTR_FORCE_CONTIGUOUS; + q->gfp_flags = GFP_DMA32; return vb2_queue_init(q); } diff --git a/drivers/media/platform/rockchip/isp/capture_v21.c b/drivers/media/platform/rockchip/isp/capture_v21.c index 9c033e1b6b13..cc873144f863 100644 --- a/drivers/media/platform/rockchip/isp/capture_v21.c +++ b/drivers/media/platform/rockchip/isp/capture_v21.c @@ -1264,6 +1264,7 @@ static int rkisp_init_vb2_queue(struct vb2_queue *q, q->bidirectional = 1; if (stream->ispdev->hw_dev->is_dma_contig) q->dma_attrs = DMA_ATTR_FORCE_CONTIGUOUS; + q->gfp_flags = GFP_DMA32; return vb2_queue_init(q); } diff --git a/drivers/media/platform/rockchip/isp/common.c b/drivers/media/platform/rockchip/isp/common.c index 3fd2af6329e7..f4d641e8e79a 100644 --- a/drivers/media/platform/rockchip/isp/common.c +++ b/drivers/media/platform/rockchip/isp/common.c @@ -87,7 +87,7 @@ int rkisp_alloc_buffer(struct rkisp_device *dev, attrs |= DMA_ATTR_FORCE_CONTIGUOUS; buf->size = PAGE_ALIGN(buf->size); mem_priv = g_ops->alloc(dev->hw_dev->dev, attrs, buf->size, - DMA_BIDIRECTIONAL, GFP_KERNEL); + DMA_BIDIRECTIONAL, GFP_KERNEL | GFP_DMA32); if (IS_ERR_OR_NULL(mem_priv)) { ret = -ENOMEM; goto err; @@ -209,7 +209,7 @@ static int rkisp_alloc_page_dummy_buf(struct rkisp_device *dev, u32 size) struct sg_table *sg = NULL; int ret = -ENOMEM; - page = alloc_pages(GFP_KERNEL, 0); + page = alloc_pages(GFP_KERNEL | GFP_DMA32, 0); if (!page) goto err; diff --git a/drivers/media/platform/rockchip/isp/dmarx.c b/drivers/media/platform/rockchip/isp/dmarx.c index 50ef1475c505..e14c7d3e8bdb 100644 --- a/drivers/media/platform/rockchip/isp/dmarx.c +++ b/drivers/media/platform/rockchip/isp/dmarx.c @@ -616,7 +616,7 @@ static int rkisp_init_vb2_queue(struct vb2_queue *q, q->dev = stream->ispdev->hw_dev->dev; q->allow_cache_hints = 1; q->bidirectional = 1; - + q->gfp_flags = GFP_DMA32; return vb2_queue_init(q); }