Thank you Yunfei for the update. Looks good to me.
As mentioned earlier, I tested to verify that this fix resolved the corruption issue on Kukui.
Thanks,
Steve
On Wed, Nov 3, 2021 at 8:23 AM Nicolas Dufresne <nicolas@xxxxxxxxxxxx> wrote:
Le mercredi 03 novembre 2021 à 11:37 +0800, Yunfei Dong a écrit :
> Width and height need to 64 bytes aligned when setting the format.
> Need to make sure all is 64 bytes align when use width and height to
> calculate buffer size.
>
> Signed-off-by: Yunfei Dong <yunfei.dong@xxxxxxxxxxxx>
> Change-Id: I39886b1a6b433c92565ddbf297eb193456eec1d2
Perhaps avoid this tag later ? Another perhaps, there is a tag to indicate which
patch introduce that bug, if you add this tag, the patch will be automatically
backported into relevant stable kernel. The format is:
> Fixes: <short-hash> ("<short commit description")
Acked-by: Nicolas Dufresne <nicolas.dufresne@xxxxxxxxxxxxx>
> ---
> drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h | 1 +
> drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c | 4 ++--
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h
> index e30806c1faea..66cd6d2242c3 100644
> --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h
> +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.h
> @@ -11,6 +11,7 @@
> #include <media/videobuf2-core.h>
> #include <media/v4l2-mem2mem.h>
>
> +#define VCODEC_DEC_ALIGNED_64 64
> #define VCODEC_CAPABILITY_4K_DISABLED 0x10
> #define VCODEC_DEC_4K_CODED_WIDTH 4096U
> #define VCODEC_DEC_4K_CODED_HEIGHT 2304U
> diff --git a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c
> index d402fc4bda69..e1a3011772a9 100644
> --- a/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c
> +++ b/drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_if.c
> @@ -562,8 +562,8 @@ static void get_pic_info(struct vdec_h264_slice_inst *inst,
> {
> struct mtk_vcodec_ctx *ctx = inst->ctx;
>
> - ctx->picinfo.buf_w = (ctx->picinfo.pic_w + 15) & 0xFFFFFFF0;
> - ctx->picinfo.buf_h = (ctx->picinfo.pic_h + 31) & 0xFFFFFFE0;
> + ctx->picinfo.buf_w = ALIGN(ctx->picinfo.pic_w, VCODEC_DEC_ALIGNED_64);
> + ctx->picinfo.buf_h = ALIGN(ctx->picinfo.pic_h, VCODEC_DEC_ALIGNED_64);
> ctx->picinfo.fb_sz[0] = ctx->picinfo.buf_w * ctx->picinfo.buf_h;
> ctx->picinfo.fb_sz[1] = ctx->picinfo.fb_sz[0] >> 1;
> inst->vsi_ctx.dec.cap_num_planes =