Received: by 2002:a05:6a10:8395:0:0:0:0 with SMTP id n21csp145634pxh; Tue, 9 Nov 2021 08:32:45 -0800 (PST) X-Google-Smtp-Source: ABdhPJy82Wy5Wg0GsogNx/J8z9cwC2Gq0iBdCPn2U+L3rp50b7aja1k8mnIkyD6ldjDz/spHIoHc X-Received: by 2002:a05:6402:31eb:: with SMTP id dy11mr12038715edb.20.1636475564853; Tue, 09 Nov 2021 08:32:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1636475564; cv=none; d=google.com; s=arc-20160816; b=wn9aFYJZCtBrtCC1BS6AnkNS+RJGqlOVe6N/QfiSOngc8g6uty3DgN8ryu6jnaxi3k 7Cn/hJCJrh51J9VS95CgC7IQ9c49FmTj6hGBlVsMSuY2ORP2KB6nFhEvehnNA7xvPzxx X08J+a01kpJLBqtHPoz2pwIjNdHv8vVjKpS90yy9VqFCTYGrXBO7Ljn3uEQcT0CZVo8a oo4N8ILhLricMDF0Hpeh3PRQi9xpOAJuSm13afLF0P6kpjI2po7IkJYD9iyt3E1345dX i8d2lRecFCAKoRATpmw3aPDY3D5TjXZ+wPoG94ZslglIRlHmhHvnXXWDIejN7KbaDYSP DXuQ== 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:references:cc :to:from:subject:dkim-signature; bh=9lGPxr1s72cNUqGlkjwQ2xgkqwAbN7LDxnGKRO4LrL8=; b=JEh7U9y767Pr+wspa7tejGgZ/GQxNkBEjkglVRSAjr7+v7Dv2xisCUaoYf1BTbREy9 vf6MV95LfEY46C3gB+dCoqrtwXTgS9f7j0moDylZsBdi9g5hhRWMtFfMS7ivU29fgzRp OkJmCjRtpvQfcF03T2ijYX38Z/Ju0GesCa78Y5fjklNyrMHrnBDHAawfj8dJZf4P8rSJ kq0Q8xE5FHv4PxdWQosRfGC3uU+KdMfUSFUP58ASoqa/pHG0d4twF60Git82I+CxjZ7d G2PUZKDij2QJxikipn2GcqF927hVsTYvl0wXihqVpP0XLksflYCWY24neW7bOlkACVtc 68TQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@collabora.com header.s=mail header.b=Bso2Z5D1; 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 dd5si48352232ejc.375.2021.11.09.08.32.18; Tue, 09 Nov 2021 08:32:44 -0800 (PST) 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; dkim=fail header.i=@collabora.com header.s=mail header.b=Bso2Z5D1; 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 S244487AbhKIItp (ORCPT + 99 others); Tue, 9 Nov 2021 03:49:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34960 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244481AbhKIIto (ORCPT ); Tue, 9 Nov 2021 03:49:44 -0500 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A0EBC061764; Tue, 9 Nov 2021 00:46:58 -0800 (PST) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: dafna) with ESMTPSA id 1D8A11F44A93 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=collabora.com; s=mail; t=1636447617; bh=GySPsgHaKHrbESaRknpPqJF3dfnlOanZggmDxueWuAY=; h=Subject:From:To:Cc:References:Date:In-Reply-To:From; b=Bso2Z5D1IbJa9dLWHgk6/zlDzpD6MXQzyRIT2GOEbs9Qi31+WEwrythdC2Ao7Iabh Rt8akCUOB+Y9tWDh05UKiLlh6SBVzEW5ofb+twAyF1VVTHn3hbd6DmFY3AzhnTbqCx 7S9hJ4GfBN7k5gWGJw+7KbM7J/1GdGDkMoDN0O5Qa/E52Ikjzm9qh5cm4dmZRwY/AU 32BXQ6CzxvgmuAHriZGVppDWpxP7ffl5xIGXsY9c43hC9Jlj3jax2dPKClktF+01iY zPlZqLXAhYI5wSW/MAvQ7yPm5slnJ60U4Ki1Ub5CGuqLOdRGlAtErZo5+zsngvgGiy +QHrr+RO6+EjQ== Subject: Re: [PATCH v4] media: mtk-vpu: Ensure alignment of 8 for DTCM buffer From: Dafna Hirschfeld To: Irui Wang , houlong wei , Alexandre Courbot , Hans Verkuil Cc: Linux Media Mailing List , "moderated list:ARM/Mediatek SoC support" , LKML , "kernel@collabora.com" , Dafna Hirschfeld , =?UTF-8?B?VGlmZmFueSBMaW4gKOael+aFp+ePiik=?= , =?UTF-8?B?QW5kcmV3LUNUIENoZW4gKOmZs+aZuui/qik=?= , =?UTF-8?B?TWluZ2hzaXUgVHNhaSAo6JSh5piO5L+uKQ==?= , Mauro Carvalho Chehab , Matthias Brugger References: <20210920170408.1561-1-dafna.hirschfeld@collabora.com> <9475ac5b-79fe-da0e-ed1c-a91275cad46e@collabora.com> <8dfc07306b853126e8109fc953fd6388b63c65d2.camel@mediatek.com> <4e7ff420-f67d-5d4a-8733-f4b83d80af13@collabora.com> Message-ID: <428f216d-cdff-e22d-b96e-f9dd9cc158e3@collabora.com> Date: Tue, 9 Nov 2021 10:46:50 +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: <4e7ff420-f67d-5d4a-8733-f4b83d80af13@collabora.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03.11.21 13:04, Dafna Hirschfeld wrote: > > > On 03.11.21 10:19, Irui Wang wrote: >> Hi, >> >> The "len" of share_buf copied should be always 8 alignment; >> do you have other logs to prove the len is not 8 alignment when errors >> appear? > > Hi, I found out that "sizeof(mdp_ipi_comm) = 20" > this is due to the macro #pragma pack(push, 4) in mtk_mdp_ipi.h > > see [1] > > [1] http://lkml.iu.edu/hypermail/linux/kernel/2109.2/04978.html > Hi Irui Wang, Any update regarding that patch? Can you give more explanation for that errors that we see when the buffer size is not a multiple of 8? Thanks, Dafna > Thanks, > Dafna > >>>> [58.350841] mtk-mdp 14001000.rdma: processing failed: -22 >> >> On Wed, 2021-11-03 at 16:03 +0800, houlong wei wrote: >>> Add mtk-vpu driver expert irui.wang in the loop. >>> >>> On Mon, 2021-10-18 at 15:07 +0800, Dafna Hirschfeld wrote: >>>> >>>> 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 < >>>>>>> enric.balletbo@collabora.com> >>>>>>> Signed-off-by: Dafna Hirschfeld < >>>>>>> dafna.hirschfeld@collabora.com >>>>>>>> >>>>>>> >>>>>>> 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. >>>>> >>> >>>