All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateful.c:342:3: warning: Value stored to 'src_buf' is never read [clang-analyzer-deadcode.DeadStores]
Date: Sun, 07 Nov 2021 13:55:01 +0800	[thread overview]
Message-ID: <202111071349.M1rQdYCS-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 27575 bytes --]

CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Yunfei Dong <yunfei.dong@mediatek.com>
CC: Mauro Carvalho Chehab <mchehab@kernel.org>
CC: linux-media(a)vger.kernel.org
CC: Alexandre Courbot <acourbot@chromium.org>
CC: "Tzung-Bi Shih" <tzungbi@google.com>
CC: Hans Verkuil <hverkuil@xs4all.nl>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   b5013d084e03e82ceeab4db8ae8ceeaebe76b0eb
commit: fd00d90330d1d2a962d010fc93515e2d77739ad8 media: mtk-vcodec: vdec: move stateful ops into their own file
date:   5 weeks ago
:::::: branch date: 6 hours ago
:::::: commit date: 5 weeks ago
config: riscv-randconfig-c006-20211001 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 962e503cc8bc411f7523cc393acae8aae425b1c4)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fd00d90330d1d2a962d010fc93515e2d77739ad8
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout fd00d90330d1d2a962d010fc93515e2d77739ad8
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
   drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c:407:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
                   ret = -EBUSY;
                   ^     ~~~~~~
   drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c:407:3: note: Value stored to 'ret' is never read
                   ret = -EBUSY;
                   ^     ~~~~~~
   drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c:417:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
                   ret = -EBUSY;
                   ^     ~~~~~~
   drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c:417:3: note: Value stored to 'ret' is never read
                   ret = -EBUSY;
                   ^     ~~~~~~
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
>> drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateful.c:342:3: warning: Value stored to 'src_buf' is never read [clang-analyzer-deadcode.DeadStores]
                   src_buf = v4l2_m2m_src_buf_remove(ctx->m2m_ctx);
                   ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateful.c:342:3: note: Value stored to 'src_buf' is never read
                   src_buf = v4l2_m2m_src_buf_remove(ctx->m2m_ctx);
                   ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateful.c:405:2: warning: Value stored to 'dst_buf' is never read [clang-analyzer-deadcode.DeadStores]
           dst_buf = v4l2_m2m_dst_buf_remove(ctx->m2m_ctx);
           ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateful.c:405:2: note: Value stored to 'dst_buf' is never read
           dst_buf = v4l2_m2m_dst_buf_remove(ctx->m2m_ctx);
           ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   4 warnings generated.
   drivers/media/v4l2-core/v4l2-ioctl.c:3286:3: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores]
                   err = -EFAULT;
                   ^     ~~~~~~~
   drivers/media/v4l2-core/v4l2-ioctl.c:3286:3: note: Value stored to 'err' is never read
                   err = -EFAULT;
                   ^     ~~~~~~~
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.

vim +/src_buf +342 drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateful.c

fd00d90330d1d2 Yunfei Dong 2021-08-06  292  
fd00d90330d1d2 Yunfei Dong 2021-08-06  293  static void mtk_vdec_worker(struct work_struct *work)
fd00d90330d1d2 Yunfei Dong 2021-08-06  294  {
fd00d90330d1d2 Yunfei Dong 2021-08-06  295  	struct mtk_vcodec_ctx *ctx =
fd00d90330d1d2 Yunfei Dong 2021-08-06  296  		container_of(work, struct mtk_vcodec_ctx, decode_work);
fd00d90330d1d2 Yunfei Dong 2021-08-06  297  	struct mtk_vcodec_dev *dev = ctx->dev;
fd00d90330d1d2 Yunfei Dong 2021-08-06  298  	struct vb2_v4l2_buffer *src_buf, *dst_buf;
fd00d90330d1d2 Yunfei Dong 2021-08-06  299  	struct mtk_vcodec_mem buf;
fd00d90330d1d2 Yunfei Dong 2021-08-06  300  	struct vdec_fb *pfb;
fd00d90330d1d2 Yunfei Dong 2021-08-06  301  	bool res_chg = false;
fd00d90330d1d2 Yunfei Dong 2021-08-06  302  	int ret;
fd00d90330d1d2 Yunfei Dong 2021-08-06  303  	struct mtk_video_dec_buf *dst_buf_info, *src_buf_info;
fd00d90330d1d2 Yunfei Dong 2021-08-06  304  
fd00d90330d1d2 Yunfei Dong 2021-08-06  305  	src_buf = v4l2_m2m_next_src_buf(ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  306  	if (!src_buf) {
fd00d90330d1d2 Yunfei Dong 2021-08-06  307  		v4l2_m2m_job_finish(dev->m2m_dev_dec, ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  308  		mtk_v4l2_debug(1, "[%d] src_buf empty!!", ctx->id);
fd00d90330d1d2 Yunfei Dong 2021-08-06  309  		return;
fd00d90330d1d2 Yunfei Dong 2021-08-06  310  	}
fd00d90330d1d2 Yunfei Dong 2021-08-06  311  
fd00d90330d1d2 Yunfei Dong 2021-08-06  312  	dst_buf = v4l2_m2m_next_dst_buf(ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  313  	if (!dst_buf) {
fd00d90330d1d2 Yunfei Dong 2021-08-06  314  		v4l2_m2m_job_finish(dev->m2m_dev_dec, ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  315  		mtk_v4l2_debug(1, "[%d] dst_buf empty!!", ctx->id);
fd00d90330d1d2 Yunfei Dong 2021-08-06  316  		return;
fd00d90330d1d2 Yunfei Dong 2021-08-06  317  	}
fd00d90330d1d2 Yunfei Dong 2021-08-06  318  
fd00d90330d1d2 Yunfei Dong 2021-08-06  319  	dst_buf_info =
fd00d90330d1d2 Yunfei Dong 2021-08-06  320  		container_of(dst_buf, struct mtk_video_dec_buf, m2m_buf.vb);
fd00d90330d1d2 Yunfei Dong 2021-08-06  321  
fd00d90330d1d2 Yunfei Dong 2021-08-06  322  	pfb = &dst_buf_info->frame_buffer;
fd00d90330d1d2 Yunfei Dong 2021-08-06  323  	pfb->base_y.va = vb2_plane_vaddr(&dst_buf->vb2_buf, 0);
fd00d90330d1d2 Yunfei Dong 2021-08-06  324  	pfb->base_y.dma_addr =
fd00d90330d1d2 Yunfei Dong 2021-08-06  325  		vb2_dma_contig_plane_dma_addr(&dst_buf->vb2_buf, 0);
fd00d90330d1d2 Yunfei Dong 2021-08-06  326  	pfb->base_y.size = ctx->picinfo.fb_sz[0];
fd00d90330d1d2 Yunfei Dong 2021-08-06  327  
fd00d90330d1d2 Yunfei Dong 2021-08-06  328  	pfb->base_c.va = vb2_plane_vaddr(&dst_buf->vb2_buf, 1);
fd00d90330d1d2 Yunfei Dong 2021-08-06  329  	pfb->base_c.dma_addr =
fd00d90330d1d2 Yunfei Dong 2021-08-06  330  		vb2_dma_contig_plane_dma_addr(&dst_buf->vb2_buf, 1);
fd00d90330d1d2 Yunfei Dong 2021-08-06  331  	pfb->base_c.size = ctx->picinfo.fb_sz[1];
fd00d90330d1d2 Yunfei Dong 2021-08-06  332  	pfb->status = 0;
fd00d90330d1d2 Yunfei Dong 2021-08-06  333  	mtk_v4l2_debug(3, "===>[%d] vdec_if_decode() ===>", ctx->id);
fd00d90330d1d2 Yunfei Dong 2021-08-06  334  
fd00d90330d1d2 Yunfei Dong 2021-08-06  335  	mtk_v4l2_debug(3,
fd00d90330d1d2 Yunfei Dong 2021-08-06  336  		       "id=%d Framebuf  pfb=%p VA=%p Y_DMA=%pad C_DMA=%pad Size=%zx",
fd00d90330d1d2 Yunfei Dong 2021-08-06  337  		       dst_buf->vb2_buf.index, pfb, pfb->base_y.va,
fd00d90330d1d2 Yunfei Dong 2021-08-06  338  		       &pfb->base_y.dma_addr, &pfb->base_c.dma_addr, pfb->base_y.size);
fd00d90330d1d2 Yunfei Dong 2021-08-06  339  
fd00d90330d1d2 Yunfei Dong 2021-08-06  340  	if (src_buf == &ctx->empty_flush_buf.vb) {
fd00d90330d1d2 Yunfei Dong 2021-08-06  341  		mtk_v4l2_debug(1, "Got empty flush input buffer.");
fd00d90330d1d2 Yunfei Dong 2021-08-06 @342  		src_buf = v4l2_m2m_src_buf_remove(ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  343  
fd00d90330d1d2 Yunfei Dong 2021-08-06  344  		/* update dst buf status */
fd00d90330d1d2 Yunfei Dong 2021-08-06  345  		dst_buf = v4l2_m2m_dst_buf_remove(ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  346  		mutex_lock(&ctx->lock);
fd00d90330d1d2 Yunfei Dong 2021-08-06  347  		dst_buf_info->used = false;
fd00d90330d1d2 Yunfei Dong 2021-08-06  348  		mutex_unlock(&ctx->lock);
fd00d90330d1d2 Yunfei Dong 2021-08-06  349  
fd00d90330d1d2 Yunfei Dong 2021-08-06  350  		vdec_if_decode(ctx, NULL, NULL, &res_chg);
fd00d90330d1d2 Yunfei Dong 2021-08-06  351  		clean_display_buffer(ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  352  		vb2_set_plane_payload(&dst_buf->vb2_buf, 0, 0);
fd00d90330d1d2 Yunfei Dong 2021-08-06  353  		if (ctx->q_data[MTK_Q_DATA_DST].fmt->num_planes == 2)
fd00d90330d1d2 Yunfei Dong 2021-08-06  354  			vb2_set_plane_payload(&dst_buf->vb2_buf, 1, 0);
fd00d90330d1d2 Yunfei Dong 2021-08-06  355  		dst_buf->flags |= V4L2_BUF_FLAG_LAST;
fd00d90330d1d2 Yunfei Dong 2021-08-06  356  		v4l2_m2m_buf_done(dst_buf, VB2_BUF_STATE_DONE);
fd00d90330d1d2 Yunfei Dong 2021-08-06  357  		clean_free_buffer(ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  358  		v4l2_m2m_job_finish(dev->m2m_dev_dec, ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  359  		return;
fd00d90330d1d2 Yunfei Dong 2021-08-06  360  	}
fd00d90330d1d2 Yunfei Dong 2021-08-06  361  
fd00d90330d1d2 Yunfei Dong 2021-08-06  362  	src_buf_info =
fd00d90330d1d2 Yunfei Dong 2021-08-06  363  		container_of(src_buf, struct mtk_video_dec_buf, m2m_buf.vb);
fd00d90330d1d2 Yunfei Dong 2021-08-06  364  
fd00d90330d1d2 Yunfei Dong 2021-08-06  365  	buf.va = vb2_plane_vaddr(&src_buf->vb2_buf, 0);
fd00d90330d1d2 Yunfei Dong 2021-08-06  366  	buf.dma_addr = vb2_dma_contig_plane_dma_addr(&src_buf->vb2_buf, 0);
fd00d90330d1d2 Yunfei Dong 2021-08-06  367  	buf.size = (size_t)src_buf->vb2_buf.planes[0].bytesused;
fd00d90330d1d2 Yunfei Dong 2021-08-06  368  	if (!buf.va) {
fd00d90330d1d2 Yunfei Dong 2021-08-06  369  		v4l2_m2m_job_finish(dev->m2m_dev_dec, ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  370  		mtk_v4l2_err("[%d] id=%d src_addr is NULL!!", ctx->id,
fd00d90330d1d2 Yunfei Dong 2021-08-06  371  			     src_buf->vb2_buf.index);
fd00d90330d1d2 Yunfei Dong 2021-08-06  372  		return;
fd00d90330d1d2 Yunfei Dong 2021-08-06  373  	}
fd00d90330d1d2 Yunfei Dong 2021-08-06  374  	mtk_v4l2_debug(3, "[%d] Bitstream VA=%p DMA=%pad Size=%zx vb=%p",
fd00d90330d1d2 Yunfei Dong 2021-08-06  375  		       ctx->id, buf.va, &buf.dma_addr, buf.size, src_buf);
fd00d90330d1d2 Yunfei Dong 2021-08-06  376  	dst_buf->vb2_buf.timestamp = src_buf->vb2_buf.timestamp;
fd00d90330d1d2 Yunfei Dong 2021-08-06  377  	dst_buf->timecode = src_buf->timecode;
fd00d90330d1d2 Yunfei Dong 2021-08-06  378  	mutex_lock(&ctx->lock);
fd00d90330d1d2 Yunfei Dong 2021-08-06  379  	dst_buf_info->used = true;
fd00d90330d1d2 Yunfei Dong 2021-08-06  380  	mutex_unlock(&ctx->lock);
fd00d90330d1d2 Yunfei Dong 2021-08-06  381  	src_buf_info->used = true;
fd00d90330d1d2 Yunfei Dong 2021-08-06  382  
fd00d90330d1d2 Yunfei Dong 2021-08-06  383  	ret = vdec_if_decode(ctx, &buf, pfb, &res_chg);
fd00d90330d1d2 Yunfei Dong 2021-08-06  384  
fd00d90330d1d2 Yunfei Dong 2021-08-06  385  	if (ret) {
fd00d90330d1d2 Yunfei Dong 2021-08-06  386  		mtk_v4l2_err(" <===[%d], src_buf[%d] sz=0x%zx pts=%llu dst_buf[%d] vdec_if_decode() ret=%d res_chg=%d===>",
fd00d90330d1d2 Yunfei Dong 2021-08-06  387  			     ctx->id, src_buf->vb2_buf.index, buf.size,
fd00d90330d1d2 Yunfei Dong 2021-08-06  388  			     src_buf->vb2_buf.timestamp, dst_buf->vb2_buf.index, ret, res_chg);
fd00d90330d1d2 Yunfei Dong 2021-08-06  389  		src_buf = v4l2_m2m_src_buf_remove(ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  390  		if (ret == -EIO) {
fd00d90330d1d2 Yunfei Dong 2021-08-06  391  			mutex_lock(&ctx->lock);
fd00d90330d1d2 Yunfei Dong 2021-08-06  392  			src_buf_info->error = true;
fd00d90330d1d2 Yunfei Dong 2021-08-06  393  			mutex_unlock(&ctx->lock);
fd00d90330d1d2 Yunfei Dong 2021-08-06  394  		}
fd00d90330d1d2 Yunfei Dong 2021-08-06  395  		v4l2_m2m_buf_done(src_buf, VB2_BUF_STATE_ERROR);
fd00d90330d1d2 Yunfei Dong 2021-08-06  396  	} else if (!res_chg) {
fd00d90330d1d2 Yunfei Dong 2021-08-06  397  		/*
fd00d90330d1d2 Yunfei Dong 2021-08-06  398  		 * we only return src buffer with VB2_BUF_STATE_DONE
fd00d90330d1d2 Yunfei Dong 2021-08-06  399  		 * when decode success without resolution change
fd00d90330d1d2 Yunfei Dong 2021-08-06  400  		 */
fd00d90330d1d2 Yunfei Dong 2021-08-06  401  		src_buf = v4l2_m2m_src_buf_remove(ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  402  		v4l2_m2m_buf_done(src_buf, VB2_BUF_STATE_DONE);
fd00d90330d1d2 Yunfei Dong 2021-08-06  403  	}
fd00d90330d1d2 Yunfei Dong 2021-08-06  404  
fd00d90330d1d2 Yunfei Dong 2021-08-06 @405  	dst_buf = v4l2_m2m_dst_buf_remove(ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  406  	clean_display_buffer(ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  407  	clean_free_buffer(ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  408  
fd00d90330d1d2 Yunfei Dong 2021-08-06  409  	if (!ret && res_chg) {
fd00d90330d1d2 Yunfei Dong 2021-08-06  410  		mtk_vdec_pic_info_update(ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  411  		/*
fd00d90330d1d2 Yunfei Dong 2021-08-06  412  		 * On encountering a resolution change in the stream.
fd00d90330d1d2 Yunfei Dong 2021-08-06  413  		 * The driver must first process and decode all
fd00d90330d1d2 Yunfei Dong 2021-08-06  414  		 * remaining buffers from before the resolution change
fd00d90330d1d2 Yunfei Dong 2021-08-06  415  		 * point, so call flush decode here
fd00d90330d1d2 Yunfei Dong 2021-08-06  416  		 */
fd00d90330d1d2 Yunfei Dong 2021-08-06  417  		mtk_vdec_flush_decoder(ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  418  		/*
fd00d90330d1d2 Yunfei Dong 2021-08-06  419  		 * After all buffers containing decoded frames from
fd00d90330d1d2 Yunfei Dong 2021-08-06  420  		 * before the resolution change point ready to be
fd00d90330d1d2 Yunfei Dong 2021-08-06  421  		 * dequeued on the CAPTURE queue, the driver sends a
fd00d90330d1d2 Yunfei Dong 2021-08-06  422  		 * V4L2_EVENT_SOURCE_CHANGE event for source change
fd00d90330d1d2 Yunfei Dong 2021-08-06  423  		 * type V4L2_EVENT_SRC_CH_RESOLUTION
fd00d90330d1d2 Yunfei Dong 2021-08-06  424  		 */
fd00d90330d1d2 Yunfei Dong 2021-08-06  425  		mtk_vdec_queue_res_chg_event(ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  426  	}
fd00d90330d1d2 Yunfei Dong 2021-08-06  427  	v4l2_m2m_job_finish(dev->m2m_dev_dec, ctx->m2m_ctx);
fd00d90330d1d2 Yunfei Dong 2021-08-06  428  }
fd00d90330d1d2 Yunfei Dong 2021-08-06  429  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 30915 bytes --]

             reply	other threads:[~2021-11-07  5:55 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-07  5:55 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2021-12-15  0:21 drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_stateful.c:342:3: warning: Value stored to 'src_buf' is never read [clang-analyzer-deadcode.DeadStores] kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202111071349.M1rQdYCS-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.