Re: [PATCH v3] media: mtk-vpu: Ensure alignment of 8 for DTCM buffer
From: houlong wei <houlong.wei@mediatek.com>
Date: 2021-08-25 10:28:41
Also in:
linux-media, lkml
On Wed, 2021-08-25 at 18:17 +0800, Dafna Hirschfeld wrote:
From: Alexandre Courbot <redacted>
When running memcpy_toio:
memcpy_toio(send_obj->share_buf, buf, len);
it was found that errors appear if len is not a multiple of 8:
[58.350841] mtk-mdp 14001000.rdma: processing failed: -22
This patch ensures the copy of a multile of 8 size by calling
round_up(len, 8) when copying
Fixes: e6599adfad30 ("media: mtk-vpu: avoid unaligned access to DTCM buffer.")
Signed-off-by: Alexandre Courbot <redacted>
Signed-off-by: Enric Balletbo i Serra <redacted>
Signed-off-by: Dafna Hirschfeld <redacted>
---Reviewed-by: Houlong Wei <houlong.wei@mediatek.com>
quoted hunk ↗ jump to hunk
changes since v2: 1. do the extra copy only if len is not multiple of 8 changes since v1: 1. change sign-off-by tags 2. change values to memset drivers/media/platform/mtk-vpu/mtk_vpu.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)diff --git a/drivers/media/platform/mtk-vpu/mtk_vpu.c b/drivers/media/platform/mtk-vpu/mtk_vpu.c index ec290dde59cf..658161ee3e4e 100644 --- a/drivers/media/platform/mtk-vpu/mtk_vpu.c +++ b/drivers/media/platform/mtk-vpu/mtk_vpu.c@@ -349,7 +349,16 @@ int vpu_ipi_send(struct platform_device *pdev, } } while (vpu_cfg_readl(vpu, HOST_TO_VPU)); - memcpy_toio(send_obj->share_buf, buf, len); + if (len % 8 != 0) { + unsigned char data[SHARE_BUF_SIZE]; + + memset(data + len, 0, sizeof(data) - len); + memcpy(data, buf, len); + memcpy_toio(send_obj->share_buf, data, round_up(len, 8)); + } else { + memcpy_toio(send_obj->share_buf, buf, len); + } + writel(len, &send_obj->len); writel(id, &send_obj->id);
_______________________________________________ Linux-mediatek mailing list Linux-mediatek@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-mediatek