From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org
Subject: [chrome-os:chromeos-5.4 54/243] drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_lat_if.c:575:34: warning: Uninitialized variable: timeout [uninitvar]
Date: Tue, 20 Apr 2021 11:28:28 +0300 [thread overview]
Message-ID: <20210420082827.GC1959@kadam> (raw)
[-- Attachment #1: Type: text/plain, Size: 11554 bytes --]
tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-5.4
head: 52d269f32500581166246e0e494b2b62d979dba6
commit: 0a438b290ea431bc87156be5819e9f85fa951240 [54/243] CHROMIUM: media: mtk-vcodec: Add h264 slice api driver for mt8192
compiler: hppa-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
cppcheck possible warnings: (new ones prefixed by >>, may not real problems)
>> drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_lat_if.c:575:34: warning: Uninitialized variable: timeout [uninitvar]
if (err == SLICE_HEADER_FULL || timeout || (err == TRANS_BUFFER_FULL &&
^
vim +575 drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_lat_if.c
0a438b290ea431 Yunfei Dong 2021-01-05 473 static int vdec_h264_slice_decode(void *h_vdec, struct mtk_vcodec_mem *bs,
0a438b290ea431 Yunfei Dong 2021-01-05 474 struct vdec_fb *fb, bool *res_chg)
0a438b290ea431 Yunfei Dong 2021-01-05 475 {
0a438b290ea431 Yunfei Dong 2021-01-05 476 struct vdec_h264_slice_inst *inst = h_vdec;
0a438b290ea431 Yunfei Dong 2021-01-05 477 struct vdec_vpu_inst *vpu = &inst->vpu;
0a438b290ea431 Yunfei Dong 2021-01-05 478 struct mtk_video_dec_buf *src_buf_info;
0a438b290ea431 Yunfei Dong 2021-01-05 479 int nal_start_idx, err, timeout, i;
^^^^^^^
0a438b290ea431 Yunfei Dong 2021-01-05 480 unsigned int nal_type, data[2];
0a438b290ea431 Yunfei Dong 2021-01-05 481 struct vdec_lat_buf *lat_buf;
0a438b290ea431 Yunfei Dong 2021-01-05 482 struct vdec_h264_slice_share_info *share_info;
0a438b290ea431 Yunfei Dong 2021-01-05 483 unsigned char *buf;
0a438b290ea431 Yunfei Dong 2021-01-05 484 struct mtk_vcodec_mem *mem;
0a438b290ea431 Yunfei Dong 2021-01-05 485
0a438b290ea431 Yunfei Dong 2021-01-05 486 mtk_vcodec_debug(inst, "+ [%d] ", ++inst->num_nalu);
0a438b290ea431 Yunfei Dong 2021-01-05 487
0a438b290ea431 Yunfei Dong 2021-01-05 488 if (!inst->ctx->msg_queue.init_done) {
0a438b290ea431 Yunfei Dong 2021-01-05 489 if (vdec_msg_queue_init(inst->ctx, &inst->ctx->msg_queue,
0a438b290ea431 Yunfei Dong 2021-01-05 490 vdec_h264_slice_core_decode, sizeof(*share_info)))
0a438b290ea431 Yunfei Dong 2021-01-05 491 return -ENOMEM;
0a438b290ea431 Yunfei Dong 2021-01-05 492 }
0a438b290ea431 Yunfei Dong 2021-01-05 493
0a438b290ea431 Yunfei Dong 2021-01-05 494 /* bs NULL means flush decoder */
0a438b290ea431 Yunfei Dong 2021-01-05 495 if (!bs) {
0a438b290ea431 Yunfei Dong 2021-01-05 496 vdec_msg_queue_wait_lat_buf_full(&inst->ctx->msg_queue);
0a438b290ea431 Yunfei Dong 2021-01-05 497 return vpu_dec_reset(vpu);
0a438b290ea431 Yunfei Dong 2021-01-05 498 }
0a438b290ea431 Yunfei Dong 2021-01-05 499
0a438b290ea431 Yunfei Dong 2021-01-05 500 lat_buf = vdec_msg_queue_get_lat_buf(&inst->ctx->msg_queue);
0a438b290ea431 Yunfei Dong 2021-01-05 501 if (!lat_buf) {
0a438b290ea431 Yunfei Dong 2021-01-05 502 mtk_vcodec_err(inst, "failed to get lat buffer");
0a438b290ea431 Yunfei Dong 2021-01-05 503 return -EINVAL;
0a438b290ea431 Yunfei Dong 2021-01-05 504 }
0a438b290ea431 Yunfei Dong 2021-01-05 505 share_info = lat_buf->private_data;
0a438b290ea431 Yunfei Dong 2021-01-05 506 src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer);
0a438b290ea431 Yunfei Dong 2021-01-05 507
0a438b290ea431 Yunfei Dong 2021-01-05 508 buf = (unsigned char *)bs->va;
0a438b290ea431 Yunfei Dong 2021-01-05 509 nal_start_idx = mtk_vdec_h264_find_start_code(buf, bs->size);
0a438b290ea431 Yunfei Dong 2021-01-05 510 if (nal_start_idx < 0) {
0a438b290ea431 Yunfei Dong 2021-01-05 511 err = -EINVAL;
0a438b290ea431 Yunfei Dong 2021-01-05 512 goto err_free_fb_out;
0a438b290ea431 Yunfei Dong 2021-01-05 513 }
0a438b290ea431 Yunfei Dong 2021-01-05 514
0a438b290ea431 Yunfei Dong 2021-01-05 515 inst->vsi->dec.nal_info = buf[nal_start_idx];
0a438b290ea431 Yunfei Dong 2021-01-05 516 nal_type = NAL_TYPE(buf[nal_start_idx]);
0a438b290ea431 Yunfei Dong 2021-01-05 517 mtk_vcodec_debug(inst, "\n + NALU[%d] type %d +\n", inst->num_nalu,
0a438b290ea431 Yunfei Dong 2021-01-05 518 nal_type);
0a438b290ea431 Yunfei Dong 2021-01-05 519
0a438b290ea431 Yunfei Dong 2021-01-05 520 inst->vsi->dec.bs_buf_addr = (uint64_t)bs->dma_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 521 inst->vsi->dec.bs_buf_size = bs->size;
0a438b290ea431 Yunfei Dong 2021-01-05 522
0a438b290ea431 Yunfei Dong 2021-01-05 523 v4l2_m2m_buf_copy_metadata(&src_buf_info->m2m_buf.vb,
0a438b290ea431 Yunfei Dong 2021-01-05 524 &lat_buf->ts_info, true);
0a438b290ea431 Yunfei Dong 2021-01-05 525
0a438b290ea431 Yunfei Dong 2021-01-05 526 vdec_h264_slice_fill_decode_parameters(inst, share_info);
0a438b290ea431 Yunfei Dong 2021-01-05 527 *res_chg = inst->resolution_changed;
0a438b290ea431 Yunfei Dong 2021-01-05 528 if (inst->resolution_changed) {
0a438b290ea431 Yunfei Dong 2021-01-05 529 mtk_vcodec_debug(inst, "- resolution changed -");
0a438b290ea431 Yunfei Dong 2021-01-05 530 if (inst->realloc_mv_buf) {
0a438b290ea431 Yunfei Dong 2021-01-05 531 err = vdec_h264_slice_alloc_mv_buf(inst, &inst->ctx->picinfo);
0a438b290ea431 Yunfei Dong 2021-01-05 532 inst->realloc_mv_buf = false;
0a438b290ea431 Yunfei Dong 2021-01-05 533 if (err)
0a438b290ea431 Yunfei Dong 2021-01-05 534 goto err_free_fb_out;
0a438b290ea431 Yunfei Dong 2021-01-05 535 }
0a438b290ea431 Yunfei Dong 2021-01-05 536 inst->resolution_changed = false;
0a438b290ea431 Yunfei Dong 2021-01-05 537 }
0a438b290ea431 Yunfei Dong 2021-01-05 538 for (i = 0; i < H264_MAX_MV_NUM; i++) {
0a438b290ea431 Yunfei Dong 2021-01-05 539 mem = &inst->mv_buf[i];
0a438b290ea431 Yunfei Dong 2021-01-05 540 inst->vsi->mv_buf_dma[i] = mem->dma_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 541 }
0a438b290ea431 Yunfei Dong 2021-01-05 542 inst->vsi->wdma_start_addr = lat_buf->ctx->msg_queue.wdma_addr.dma_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 543 inst->vsi->wdma_end_addr = lat_buf->ctx->msg_queue.wdma_addr.dma_addr +
0a438b290ea431 Yunfei Dong 2021-01-05 544 lat_buf->ctx->msg_queue.wdma_addr.size;
0a438b290ea431 Yunfei Dong 2021-01-05 545 inst->vsi->wdma_err_addr = lat_buf->wdma_err_addr.dma_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 546 inst->vsi->slice_bc_start_addr = lat_buf->slice_bc_addr.dma_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 547 inst->vsi->slice_bc_end_addr = lat_buf->slice_bc_addr.dma_addr +
0a438b290ea431 Yunfei Dong 2021-01-05 548 lat_buf->slice_bc_addr.size;
0a438b290ea431 Yunfei Dong 2021-01-05 549
0a438b290ea431 Yunfei Dong 2021-01-05 550 inst->vsi->trans_end = inst->ctx->msg_queue.wdma_rptr_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 551 inst->vsi->trans_start = inst->ctx->msg_queue.wdma_wptr_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 552 mtk_vcodec_debug(inst, "lat:trans(0x%llx 0x%llx)err:0x%llx",
0a438b290ea431 Yunfei Dong 2021-01-05 553 inst->vsi->wdma_start_addr,
0a438b290ea431 Yunfei Dong 2021-01-05 554 inst->vsi->wdma_end_addr,
0a438b290ea431 Yunfei Dong 2021-01-05 555 inst->vsi->wdma_err_addr);
0a438b290ea431 Yunfei Dong 2021-01-05 556
0a438b290ea431 Yunfei Dong 2021-01-05 557 mtk_vcodec_debug(inst, "slice(0x%llx 0x%llx) rprt((0x%llx 0x%llx))",
0a438b290ea431 Yunfei Dong 2021-01-05 558 inst->vsi->slice_bc_start_addr,
0a438b290ea431 Yunfei Dong 2021-01-05 559 inst->vsi->slice_bc_end_addr,
0a438b290ea431 Yunfei Dong 2021-01-05 560 inst->vsi->trans_start,
0a438b290ea431 Yunfei Dong 2021-01-05 561 inst->vsi->trans_end);
0a438b290ea431 Yunfei Dong 2021-01-05 562 err = vpu_dec_start(vpu, data, 2);
0a438b290ea431 Yunfei Dong 2021-01-05 563 if (err) {
0a438b290ea431 Yunfei Dong 2021-01-05 564 mtk_vcodec_debug(inst, "lat decode err: %d", err);
0a438b290ea431 Yunfei Dong 2021-01-05 565 goto err_free_fb_out;
0a438b290ea431 Yunfei Dong 2021-01-05 566 }
0a438b290ea431 Yunfei Dong 2021-01-05 567
0a438b290ea431 Yunfei Dong 2021-01-05 568 if (nal_type == NAL_NON_IDR_SLICE || nal_type == NAL_IDR_SLICE) {
0a438b290ea431 Yunfei Dong 2021-01-05 569 /* wait decoder done interrupt */
0a438b290ea431 Yunfei Dong 2021-01-05 570 timeout = mtk_vcodec_wait_for_done_ctx(
0a438b290ea431 Yunfei Dong 2021-01-05 571 inst->ctx, MTK_INST_IRQ_RECEIVED, WAIT_INTR_TIMEOUT_MS);
0a438b290ea431 Yunfei Dong 2021-01-05 572 inst->vsi->dec.timeout = !!timeout;
0a438b290ea431 Yunfei Dong 2021-01-05 573 }
"timeout" not initialized for false path.
0a438b290ea431 Yunfei Dong 2021-01-05 574 err = vpu_dec_end(vpu);
0a438b290ea431 Yunfei Dong 2021-01-05 @575 if (err == SLICE_HEADER_FULL || timeout || (err == TRANS_BUFFER_FULL &&
^^^^^^^
0a438b290ea431 Yunfei Dong 2021-01-05 576 inst->ctx->msg_queue.wdma_rptr_addr ==
0a438b290ea431 Yunfei Dong 2021-01-05 577 inst->ctx->msg_queue.wdma_wptr_addr)) {
0a438b290ea431 Yunfei Dong 2021-01-05 578 err = -EINVAL;
0a438b290ea431 Yunfei Dong 2021-01-05 579 goto err_free_fb_out;
0a438b290ea431 Yunfei Dong 2021-01-05 580 } else if (err == TRANS_BUFFER_FULL){
0a438b290ea431 Yunfei Dong 2021-01-05 581 goto err_free_fb_out;
0a438b290ea431 Yunfei Dong 2021-01-05 582 }
0a438b290ea431 Yunfei Dong 2021-01-05 583
0a438b290ea431 Yunfei Dong 2021-01-05 584 share_info->trans_end = inst->ctx->msg_queue.wdma_addr.dma_addr +
0a438b290ea431 Yunfei Dong 2021-01-05 585 inst->vsi->wdma_end_addr_offset;
0a438b290ea431 Yunfei Dong 2021-01-05 586 share_info->trans_start = inst->ctx->msg_queue.wdma_wptr_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 587 share_info->nal_info = inst->vsi->dec.nal_info;
0a438b290ea431 Yunfei Dong 2021-01-05 588 vdec_msg_queue_update_ube_wptr(&lat_buf->ctx->msg_queue,
0a438b290ea431 Yunfei Dong 2021-01-05 589 share_info->trans_end);
0a438b290ea431 Yunfei Dong 2021-01-05 590
0a438b290ea431 Yunfei Dong 2021-01-05 591 memcpy(&share_info->h264_slice_params, &inst->vsi->h264_slice_params,
0a438b290ea431 Yunfei Dong 2021-01-05 592 sizeof(share_info->h264_slice_params));
0a438b290ea431 Yunfei Dong 2021-01-05 593 vdec_msg_queue_buf_to_core(inst->ctx->dev, lat_buf);
0a438b290ea431 Yunfei Dong 2021-01-05 594 mtk_vcodec_debug(inst, "- NALU[%d] type=%d -\n", inst->num_nalu,
0a438b290ea431 Yunfei Dong 2021-01-05 595 nal_type);
0a438b290ea431 Yunfei Dong 2021-01-05 596 return 0;
0a438b290ea431 Yunfei Dong 2021-01-05 597
0a438b290ea431 Yunfei Dong 2021-01-05 598 err_free_fb_out:
0a438b290ea431 Yunfei Dong 2021-01-05 599 if (lat_buf)
0a438b290ea431 Yunfei Dong 2021-01-05 600 vdec_msg_queue_buf_to_lat(lat_buf);
0a438b290ea431 Yunfei Dong 2021-01-05 601 mtk_vcodec_err(inst, "- NALU[%d] err=%d -\n", inst->num_nalu, err);
0a438b290ea431 Yunfei Dong 2021-01-05 602 return err;
0a438b290ea431 Yunfei Dong 2021-01-05 603 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org
WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: [kbuild] [chrome-os:chromeos-5.4 54/243] drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_lat_if.c:575:34: warning: Uninitialized variable: timeout [uninitvar]
Date: Tue, 20 Apr 2021 11:28:28 +0300 [thread overview]
Message-ID: <20210420082827.GC1959@kadam> (raw)
[-- Attachment #1: Type: text/plain, Size: 11554 bytes --]
tree: https://chromium.googlesource.com/chromiumos/third_party/kernel chromeos-5.4
head: 52d269f32500581166246e0e494b2b62d979dba6
commit: 0a438b290ea431bc87156be5819e9f85fa951240 [54/243] CHROMIUM: media: mtk-vcodec: Add h264 slice api driver for mt8192
compiler: hppa-linux-gcc (GCC) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
cppcheck possible warnings: (new ones prefixed by >>, may not real problems)
>> drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_lat_if.c:575:34: warning: Uninitialized variable: timeout [uninitvar]
if (err == SLICE_HEADER_FULL || timeout || (err == TRANS_BUFFER_FULL &&
^
vim +575 drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_lat_if.c
0a438b290ea431 Yunfei Dong 2021-01-05 473 static int vdec_h264_slice_decode(void *h_vdec, struct mtk_vcodec_mem *bs,
0a438b290ea431 Yunfei Dong 2021-01-05 474 struct vdec_fb *fb, bool *res_chg)
0a438b290ea431 Yunfei Dong 2021-01-05 475 {
0a438b290ea431 Yunfei Dong 2021-01-05 476 struct vdec_h264_slice_inst *inst = h_vdec;
0a438b290ea431 Yunfei Dong 2021-01-05 477 struct vdec_vpu_inst *vpu = &inst->vpu;
0a438b290ea431 Yunfei Dong 2021-01-05 478 struct mtk_video_dec_buf *src_buf_info;
0a438b290ea431 Yunfei Dong 2021-01-05 479 int nal_start_idx, err, timeout, i;
^^^^^^^
0a438b290ea431 Yunfei Dong 2021-01-05 480 unsigned int nal_type, data[2];
0a438b290ea431 Yunfei Dong 2021-01-05 481 struct vdec_lat_buf *lat_buf;
0a438b290ea431 Yunfei Dong 2021-01-05 482 struct vdec_h264_slice_share_info *share_info;
0a438b290ea431 Yunfei Dong 2021-01-05 483 unsigned char *buf;
0a438b290ea431 Yunfei Dong 2021-01-05 484 struct mtk_vcodec_mem *mem;
0a438b290ea431 Yunfei Dong 2021-01-05 485
0a438b290ea431 Yunfei Dong 2021-01-05 486 mtk_vcodec_debug(inst, "+ [%d] ", ++inst->num_nalu);
0a438b290ea431 Yunfei Dong 2021-01-05 487
0a438b290ea431 Yunfei Dong 2021-01-05 488 if (!inst->ctx->msg_queue.init_done) {
0a438b290ea431 Yunfei Dong 2021-01-05 489 if (vdec_msg_queue_init(inst->ctx, &inst->ctx->msg_queue,
0a438b290ea431 Yunfei Dong 2021-01-05 490 vdec_h264_slice_core_decode, sizeof(*share_info)))
0a438b290ea431 Yunfei Dong 2021-01-05 491 return -ENOMEM;
0a438b290ea431 Yunfei Dong 2021-01-05 492 }
0a438b290ea431 Yunfei Dong 2021-01-05 493
0a438b290ea431 Yunfei Dong 2021-01-05 494 /* bs NULL means flush decoder */
0a438b290ea431 Yunfei Dong 2021-01-05 495 if (!bs) {
0a438b290ea431 Yunfei Dong 2021-01-05 496 vdec_msg_queue_wait_lat_buf_full(&inst->ctx->msg_queue);
0a438b290ea431 Yunfei Dong 2021-01-05 497 return vpu_dec_reset(vpu);
0a438b290ea431 Yunfei Dong 2021-01-05 498 }
0a438b290ea431 Yunfei Dong 2021-01-05 499
0a438b290ea431 Yunfei Dong 2021-01-05 500 lat_buf = vdec_msg_queue_get_lat_buf(&inst->ctx->msg_queue);
0a438b290ea431 Yunfei Dong 2021-01-05 501 if (!lat_buf) {
0a438b290ea431 Yunfei Dong 2021-01-05 502 mtk_vcodec_err(inst, "failed to get lat buffer");
0a438b290ea431 Yunfei Dong 2021-01-05 503 return -EINVAL;
0a438b290ea431 Yunfei Dong 2021-01-05 504 }
0a438b290ea431 Yunfei Dong 2021-01-05 505 share_info = lat_buf->private_data;
0a438b290ea431 Yunfei Dong 2021-01-05 506 src_buf_info = container_of(bs, struct mtk_video_dec_buf, bs_buffer);
0a438b290ea431 Yunfei Dong 2021-01-05 507
0a438b290ea431 Yunfei Dong 2021-01-05 508 buf = (unsigned char *)bs->va;
0a438b290ea431 Yunfei Dong 2021-01-05 509 nal_start_idx = mtk_vdec_h264_find_start_code(buf, bs->size);
0a438b290ea431 Yunfei Dong 2021-01-05 510 if (nal_start_idx < 0) {
0a438b290ea431 Yunfei Dong 2021-01-05 511 err = -EINVAL;
0a438b290ea431 Yunfei Dong 2021-01-05 512 goto err_free_fb_out;
0a438b290ea431 Yunfei Dong 2021-01-05 513 }
0a438b290ea431 Yunfei Dong 2021-01-05 514
0a438b290ea431 Yunfei Dong 2021-01-05 515 inst->vsi->dec.nal_info = buf[nal_start_idx];
0a438b290ea431 Yunfei Dong 2021-01-05 516 nal_type = NAL_TYPE(buf[nal_start_idx]);
0a438b290ea431 Yunfei Dong 2021-01-05 517 mtk_vcodec_debug(inst, "\n + NALU[%d] type %d +\n", inst->num_nalu,
0a438b290ea431 Yunfei Dong 2021-01-05 518 nal_type);
0a438b290ea431 Yunfei Dong 2021-01-05 519
0a438b290ea431 Yunfei Dong 2021-01-05 520 inst->vsi->dec.bs_buf_addr = (uint64_t)bs->dma_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 521 inst->vsi->dec.bs_buf_size = bs->size;
0a438b290ea431 Yunfei Dong 2021-01-05 522
0a438b290ea431 Yunfei Dong 2021-01-05 523 v4l2_m2m_buf_copy_metadata(&src_buf_info->m2m_buf.vb,
0a438b290ea431 Yunfei Dong 2021-01-05 524 &lat_buf->ts_info, true);
0a438b290ea431 Yunfei Dong 2021-01-05 525
0a438b290ea431 Yunfei Dong 2021-01-05 526 vdec_h264_slice_fill_decode_parameters(inst, share_info);
0a438b290ea431 Yunfei Dong 2021-01-05 527 *res_chg = inst->resolution_changed;
0a438b290ea431 Yunfei Dong 2021-01-05 528 if (inst->resolution_changed) {
0a438b290ea431 Yunfei Dong 2021-01-05 529 mtk_vcodec_debug(inst, "- resolution changed -");
0a438b290ea431 Yunfei Dong 2021-01-05 530 if (inst->realloc_mv_buf) {
0a438b290ea431 Yunfei Dong 2021-01-05 531 err = vdec_h264_slice_alloc_mv_buf(inst, &inst->ctx->picinfo);
0a438b290ea431 Yunfei Dong 2021-01-05 532 inst->realloc_mv_buf = false;
0a438b290ea431 Yunfei Dong 2021-01-05 533 if (err)
0a438b290ea431 Yunfei Dong 2021-01-05 534 goto err_free_fb_out;
0a438b290ea431 Yunfei Dong 2021-01-05 535 }
0a438b290ea431 Yunfei Dong 2021-01-05 536 inst->resolution_changed = false;
0a438b290ea431 Yunfei Dong 2021-01-05 537 }
0a438b290ea431 Yunfei Dong 2021-01-05 538 for (i = 0; i < H264_MAX_MV_NUM; i++) {
0a438b290ea431 Yunfei Dong 2021-01-05 539 mem = &inst->mv_buf[i];
0a438b290ea431 Yunfei Dong 2021-01-05 540 inst->vsi->mv_buf_dma[i] = mem->dma_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 541 }
0a438b290ea431 Yunfei Dong 2021-01-05 542 inst->vsi->wdma_start_addr = lat_buf->ctx->msg_queue.wdma_addr.dma_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 543 inst->vsi->wdma_end_addr = lat_buf->ctx->msg_queue.wdma_addr.dma_addr +
0a438b290ea431 Yunfei Dong 2021-01-05 544 lat_buf->ctx->msg_queue.wdma_addr.size;
0a438b290ea431 Yunfei Dong 2021-01-05 545 inst->vsi->wdma_err_addr = lat_buf->wdma_err_addr.dma_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 546 inst->vsi->slice_bc_start_addr = lat_buf->slice_bc_addr.dma_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 547 inst->vsi->slice_bc_end_addr = lat_buf->slice_bc_addr.dma_addr +
0a438b290ea431 Yunfei Dong 2021-01-05 548 lat_buf->slice_bc_addr.size;
0a438b290ea431 Yunfei Dong 2021-01-05 549
0a438b290ea431 Yunfei Dong 2021-01-05 550 inst->vsi->trans_end = inst->ctx->msg_queue.wdma_rptr_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 551 inst->vsi->trans_start = inst->ctx->msg_queue.wdma_wptr_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 552 mtk_vcodec_debug(inst, "lat:trans(0x%llx 0x%llx)err:0x%llx",
0a438b290ea431 Yunfei Dong 2021-01-05 553 inst->vsi->wdma_start_addr,
0a438b290ea431 Yunfei Dong 2021-01-05 554 inst->vsi->wdma_end_addr,
0a438b290ea431 Yunfei Dong 2021-01-05 555 inst->vsi->wdma_err_addr);
0a438b290ea431 Yunfei Dong 2021-01-05 556
0a438b290ea431 Yunfei Dong 2021-01-05 557 mtk_vcodec_debug(inst, "slice(0x%llx 0x%llx) rprt((0x%llx 0x%llx))",
0a438b290ea431 Yunfei Dong 2021-01-05 558 inst->vsi->slice_bc_start_addr,
0a438b290ea431 Yunfei Dong 2021-01-05 559 inst->vsi->slice_bc_end_addr,
0a438b290ea431 Yunfei Dong 2021-01-05 560 inst->vsi->trans_start,
0a438b290ea431 Yunfei Dong 2021-01-05 561 inst->vsi->trans_end);
0a438b290ea431 Yunfei Dong 2021-01-05 562 err = vpu_dec_start(vpu, data, 2);
0a438b290ea431 Yunfei Dong 2021-01-05 563 if (err) {
0a438b290ea431 Yunfei Dong 2021-01-05 564 mtk_vcodec_debug(inst, "lat decode err: %d", err);
0a438b290ea431 Yunfei Dong 2021-01-05 565 goto err_free_fb_out;
0a438b290ea431 Yunfei Dong 2021-01-05 566 }
0a438b290ea431 Yunfei Dong 2021-01-05 567
0a438b290ea431 Yunfei Dong 2021-01-05 568 if (nal_type == NAL_NON_IDR_SLICE || nal_type == NAL_IDR_SLICE) {
0a438b290ea431 Yunfei Dong 2021-01-05 569 /* wait decoder done interrupt */
0a438b290ea431 Yunfei Dong 2021-01-05 570 timeout = mtk_vcodec_wait_for_done_ctx(
0a438b290ea431 Yunfei Dong 2021-01-05 571 inst->ctx, MTK_INST_IRQ_RECEIVED, WAIT_INTR_TIMEOUT_MS);
0a438b290ea431 Yunfei Dong 2021-01-05 572 inst->vsi->dec.timeout = !!timeout;
0a438b290ea431 Yunfei Dong 2021-01-05 573 }
"timeout" not initialized for false path.
0a438b290ea431 Yunfei Dong 2021-01-05 574 err = vpu_dec_end(vpu);
0a438b290ea431 Yunfei Dong 2021-01-05 @575 if (err == SLICE_HEADER_FULL || timeout || (err == TRANS_BUFFER_FULL &&
^^^^^^^
0a438b290ea431 Yunfei Dong 2021-01-05 576 inst->ctx->msg_queue.wdma_rptr_addr ==
0a438b290ea431 Yunfei Dong 2021-01-05 577 inst->ctx->msg_queue.wdma_wptr_addr)) {
0a438b290ea431 Yunfei Dong 2021-01-05 578 err = -EINVAL;
0a438b290ea431 Yunfei Dong 2021-01-05 579 goto err_free_fb_out;
0a438b290ea431 Yunfei Dong 2021-01-05 580 } else if (err == TRANS_BUFFER_FULL){
0a438b290ea431 Yunfei Dong 2021-01-05 581 goto err_free_fb_out;
0a438b290ea431 Yunfei Dong 2021-01-05 582 }
0a438b290ea431 Yunfei Dong 2021-01-05 583
0a438b290ea431 Yunfei Dong 2021-01-05 584 share_info->trans_end = inst->ctx->msg_queue.wdma_addr.dma_addr +
0a438b290ea431 Yunfei Dong 2021-01-05 585 inst->vsi->wdma_end_addr_offset;
0a438b290ea431 Yunfei Dong 2021-01-05 586 share_info->trans_start = inst->ctx->msg_queue.wdma_wptr_addr;
0a438b290ea431 Yunfei Dong 2021-01-05 587 share_info->nal_info = inst->vsi->dec.nal_info;
0a438b290ea431 Yunfei Dong 2021-01-05 588 vdec_msg_queue_update_ube_wptr(&lat_buf->ctx->msg_queue,
0a438b290ea431 Yunfei Dong 2021-01-05 589 share_info->trans_end);
0a438b290ea431 Yunfei Dong 2021-01-05 590
0a438b290ea431 Yunfei Dong 2021-01-05 591 memcpy(&share_info->h264_slice_params, &inst->vsi->h264_slice_params,
0a438b290ea431 Yunfei Dong 2021-01-05 592 sizeof(share_info->h264_slice_params));
0a438b290ea431 Yunfei Dong 2021-01-05 593 vdec_msg_queue_buf_to_core(inst->ctx->dev, lat_buf);
0a438b290ea431 Yunfei Dong 2021-01-05 594 mtk_vcodec_debug(inst, "- NALU[%d] type=%d -\n", inst->num_nalu,
0a438b290ea431 Yunfei Dong 2021-01-05 595 nal_type);
0a438b290ea431 Yunfei Dong 2021-01-05 596 return 0;
0a438b290ea431 Yunfei Dong 2021-01-05 597
0a438b290ea431 Yunfei Dong 2021-01-05 598 err_free_fb_out:
0a438b290ea431 Yunfei Dong 2021-01-05 599 if (lat_buf)
0a438b290ea431 Yunfei Dong 2021-01-05 600 vdec_msg_queue_buf_to_lat(lat_buf);
0a438b290ea431 Yunfei Dong 2021-01-05 601 mtk_vcodec_err(inst, "- NALU[%d] err=%d -\n", inst->num_nalu, err);
0a438b290ea431 Yunfei Dong 2021-01-05 602 return err;
0a438b290ea431 Yunfei Dong 2021-01-05 603 }
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
_______________________________________________
kbuild mailing list -- kbuild(a)lists.01.org
To unsubscribe send an email to kbuild-leave(a)lists.01.org
next reply other threads:[~2021-04-20 8:28 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-20 8:28 Dan Carpenter [this message]
2021-04-20 8:28 ` [kbuild] [chrome-os:chromeos-5.4 54/243] drivers/media/platform/mtk-vcodec/vdec/vdec_h264_req_lat_if.c:575:34: warning: Uninitialized variable: timeout [uninitvar] Dan Carpenter
-- strict thread matches above, loose matches on Subject: below --
2021-04-17 7:16 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=20210420082827.GC1959@kadam \
--to=dan.carpenter@oracle.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.