Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp2733369pxb; Mon, 18 Oct 2021 00:08:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzg+Z/vxMrpAbDWdnvSq0lBI+KYcHG+FeDWHCip90RLf4syDlZjj6arE0B6cOqLrK8DGjPz X-Received: by 2002:a17:90a:7d05:: with SMTP id g5mr45208425pjl.14.1634540911597; Mon, 18 Oct 2021 00:08:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634540911; cv=none; d=google.com; s=arc-20160816; b=rzk941VkXg7TawrGtnSP4xBsqQTqDEbA3ih18Hq3zJQgk+1u2lXE1y1J9BXMq25KP/ rgFIUIw7T5IOboBPMQaMPERnGDMFVM+JIVElFXZtyokK+Mecl9+ecoG8bw1WJ1NAKbW3 2RZMPj+thN4UAmh4rQXMQH3ummrnr+BJACf/NvehbWaoXgqcTG/vuz/m3+PZzwvCRgQp GZt5MkKWu30L0iLfi1TRQBFaHxKXa21F54hU5H3w2vdie2nhzKuWApQJcRzEW/FMMupG kpKOx+1WB11l5ZB8o6+bls6UvqMezSpiaeOQtRRKiWn338qLxnZBDCiDHh0HC9UXv+k6 2hAQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=aJ+mCas4ue46Dyllwy2osDxLp7C0xDvVrHUVnT9hzpc=; b=NlWOBhGL5Ob0DmWLgqH5dGFIlQi4ayJ2osY6A3uQ5LuAeWa0pbu9n9LbagtH4hJWsk OLSzNWkYXYpN/faokVSuwhwV2+F/b9IxqP7L1BlydQTVVa+dTz8OOu1ChrJX1u0Vmqkj jGXVCfh/BQHPQkb92riOhbUIbbO1VFyTzuUOilRga0t4G4oUyRV+vPWuTwWxxNp1sjS4 p78XM+scDlR9pitfjHdOJvao9hvwfpgBx84XiuePhA69ETA6UqmCWRDbzguaO6xldtx5 iyYwvp/ophi1cQkwo4OE8dyGdVapK612NZCmDX4v7NLlj8bHaICvvJTABw+y0b5n/JFE KYhA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id w11si19921099plq.378.2021.10.18.00.08.18; Mon, 18 Oct 2021 00:08:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230236AbhJRHJ1 (ORCPT + 99 others); Mon, 18 Oct 2021 03:09:27 -0400 Received: from bhuna.collabora.co.uk ([46.235.227.227]:58514 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229533AbhJRHJ0 (ORCPT ); Mon, 18 Oct 2021 03:09:26 -0400 Received: from [IPv6:2a02:810a:880:f54:88bb:da86:4533:43d6] (unknown [IPv6:2a02:810a:880:f54:88bb:da86:4533:43d6]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: dafna) by bhuna.collabora.co.uk (Postfix) with ESMTPSA id 06E181F42612; Mon, 18 Oct 2021 08:07:13 +0100 (BST) Subject: Re: [PATCH v4] media: mtk-vpu: Ensure alignment of 8 for DTCM buffer To: Alexandre Courbot , Hans Verkuil Cc: Linux Media Mailing List , "moderated list:ARM/Mediatek SoC support" , LKML , kernel@collabora.com, Enric Balletbo i Serra , Dafna Hirschfeld , Tiffany Lin , Andrew-CT Chen , minghsiu.tsai@mediatek.com, houlong.wei@mediatek.com, Mauro Carvalho Chehab , Matthias Brugger References: <20210920170408.1561-1-dafna.hirschfeld@collabora.com> From: Dafna Hirschfeld Message-ID: <9475ac5b-79fe-da0e-ed1c-a91275cad46e@collabora.com> Date: Mon, 18 Oct 2021 09:07:11 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 18.10.21 03:16, Alexandre Courbot wrote: > Hi Hans! > > On Mon, Oct 4, 2021 at 6:37 PM Hans Verkuil wrote: >> >> On 20/09/2021 19:04, Dafna Hirschfeld wrote: >>> From: Alexandre Courbot >>> >>> 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 >> >> Why do errors appear? Is that due to a HW bug? Some other reason? > > MTK folks would be the best placed to answer this, but since the > failure is reported by the firmware I'd suspect either a firmware or > hardware limitation. > >> >>> >>> This patch ensures the copy of a multiple 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 >>> Signed-off-by: Enric Balletbo i Serra >>> Signed-off-by: Dafna Hirschfeld >>> Reviewed-by: Houlong Wei >>> --- >>> changes since v3: >>> 1. multile -> multiple >>> 2. add inline doc >>> >>> 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 | 15 ++++++++++++++- >>> 1 file changed, 14 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..1df031716c8f 100644 >>> --- a/drivers/media/platform/mtk-vpu/mtk_vpu.c >>> +++ b/drivers/media/platform/mtk-vpu/mtk_vpu.c >>> @@ -349,7 +349,20 @@ int vpu_ipi_send(struct platform_device *pdev, >>> } >>> } while (vpu_cfg_readl(vpu, HOST_TO_VPU)); >>> >>> - memcpy_toio(send_obj->share_buf, buf, len); >>> + /* >>> + * when copying data to the vpu hardware, the memcpy_toio operation must copy >>> + * a multiple of 8. Otherwise the processing fails >> >> Same here: it needs to explain why the processing fails. Is writing 'due to hardware or firmware limitation' enough? If not, then we should wait for mediatek people's response to explain if they know more >> >>> + */ >>> + if (len % 8 != 0) { >>> + unsigned char data[SHARE_BUF_SIZE]; >> >> Wouldn't it be more robust if you say: >> >> unsigned char data[sizeof(send_obj->share_buf)]; > > Definitely yes. I'll send v5 fixing this > >> >> I also think that the SHARE_BUF_SIZE define needs a comment stating that it must be a >> multiple of 8, otherwise unexpected things can happen. >> >> You also noticed that the current SHARE_BUF_SIZE define is too low, but I saw >> no patch correcting this. Shouldn't that be fixed as well? > > AFAICT the firmware expects this exact size on its end, so I don't > believe it can be changed that easily. But maybe someone from MTK can > prove me wrong. > I looked further and noted that the structs that are larger than 'SHARE_BUF_SIZE' (venc_ap_ipi_msg_enc_ext venc_ap_ipi_msg_set_param_ext) are used by drivers that don't use this vpu api, so actually SHARE_BUF_SIZE is not too low and as Corurbot worte probably not changeable. Thanks, Dafna > Cheers, > Alex. >