Subject: [PATCH] remoteproc: mediatek: Zero out only remaining bytes of IPI buffer

In scp_ipi_handler(), instead of zeroing out the entire shared
buffer, which may be as large as 600 bytes, overwrite it with the
received data, then zero out only the remaining bytes.

Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
---
drivers/remoteproc/mtk_scp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c
index e5214d43181e..dc70cf7db44d 100644
--- a/drivers/remoteproc/mtk_scp.c
+++ b/drivers/remoteproc/mtk_scp.c
@@ -117,8 +117,8 @@ static void scp_ipi_handler(struct mtk_scp *scp)
return;
}

- memset(scp->share_buf, 0, scp_sizes->ipi_share_buffer_size);
memcpy_fromio(scp->share_buf, &rcv_obj->share_buf, len);
+ memset(&scp->share_buf[len], 0, scp_sizes->ipi_share_buffer_size - len);
handler(scp->share_buf, len, ipi_desc[id].priv);
scp_ipi_unlock(scp, id);

--
2.45.1



2024-05-20 15:03:02

by Mukesh Ojha

[permalink] [raw]
Subject: Re: [PATCH] remoteproc: mediatek: Zero out only remaining bytes of IPI buffer



On 5/20/2024 4:57 PM, AngeloGioacchino Del Regno wrote:
> In scp_ipi_handler(), instead of zeroing out the entire shared
> buffer, which may be as large as 600 bytes, overwrite it with the
> received data, then zero out only the remaining bytes.
>
> Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
> ---
> drivers/remoteproc/mtk_scp.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c
> index e5214d43181e..dc70cf7db44d 100644
> --- a/drivers/remoteproc/mtk_scp.c
> +++ b/drivers/remoteproc/mtk_scp.c
> @@ -117,8 +117,8 @@ static void scp_ipi_handler(struct mtk_scp *scp)
> return;
> }
>
> - memset(scp->share_buf, 0, scp_sizes->ipi_share_buffer_size);
> memcpy_fromio(scp->share_buf, &rcv_obj->share_buf, len);
> + memset(&scp->share_buf[len], 0, scp_sizes->ipi_share_buffer_size - len);

Although, it does not make any difference apart from a write of len
bytes, still a good improvement to do ..

Acked-by: Mukesh Ojha <[email protected]>

-Mukesh

> handler(scp->share_buf, len, ipi_desc[id].priv);
> scp_ipi_unlock(scp, id);
>

2024-05-21 16:47:47

by Mathieu Poirier

[permalink] [raw]
Subject: Re: [PATCH] remoteproc: mediatek: Zero out only remaining bytes of IPI buffer

On Mon, May 20, 2024 at 01:27:24PM +0200, AngeloGioacchino Del Regno wrote:
> In scp_ipi_handler(), instead of zeroing out the entire shared
> buffer, which may be as large as 600 bytes, overwrite it with the
> received data, then zero out only the remaining bytes.
>
> Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
> ---
> drivers/remoteproc/mtk_scp.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c
> index e5214d43181e..dc70cf7db44d 100644
> --- a/drivers/remoteproc/mtk_scp.c
> +++ b/drivers/remoteproc/mtk_scp.c
> @@ -117,8 +117,8 @@ static void scp_ipi_handler(struct mtk_scp *scp)
> return;
> }
>
> - memset(scp->share_buf, 0, scp_sizes->ipi_share_buffer_size);
> memcpy_fromio(scp->share_buf, &rcv_obj->share_buf, len);
> + memset(&scp->share_buf[len], 0, scp_sizes->ipi_share_buffer_size - len);

I will apply this patch when rc1 comes out next week.

Thanks,
Mathieu

> handler(scp->share_buf, len, ipi_desc[id].priv);
> scp_ipi_unlock(scp, id);
>
> --
> 2.45.1
>