[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202505280607.OOCCyEiw-lkp@intel.com>
Date: Wed, 28 May 2025 06:09:48 +0800
From: kernel test robot <lkp@...el.com>
To: Detlev Casanova <detlev.casanova@...labora.com>,
linux-kernel@...r.kernel.org
Cc: oe-kbuild-all@...ts.linux.dev,
Ezequiel Garcia <ezequiel@...guardiasur.com.ar>,
Mauro Carvalho Chehab <mchehab@...nel.org>,
linux-media@...r.kernel.org,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
linux-rockchip@...ts.infradead.org, linux-staging@...ts.linux.dev,
kernel@...labora.com,
Detlev Casanova <detlev.casanova@...labora.com>
Subject: Re: [PATCH] media: rkvdec: Switch to using structs instead of writel
Hi Detlev,
kernel test robot noticed the following build warnings:
[auto build test WARNING on staging/staging-testing]
[also build test WARNING on staging/staging-next staging/staging-linus linuxtv-media-pending/master linus/master v6.15 next-20250527]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Detlev-Casanova/media-rkvdec-Switch-to-using-structs-instead-of-writel/20250527-230234
base: staging/staging-testing
patch link: https://lore.kernel.org/r/20250527150043.174415-1-detlev.casanova%40collabora.com
patch subject: [PATCH] media: rkvdec: Switch to using structs instead of writel
config: arm64-randconfig-002-20250528 (https://download.01.org/0day-ci/archive/20250528/202505280607.OOCCyEiw-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 7.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250528/202505280607.OOCCyEiw-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@...el.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505280607.OOCCyEiw-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/staging/media/rkvdec/rkvdec-vp9.c: In function 'config_registers':
>> drivers/staging/media/rkvdec/rkvdec-vp9.c:493:6: warning: variable 'val' set but not used [-Wunused-but-set-variable]
u32 val;
^~~
vim +/val +493 drivers/staging/media/rkvdec/rkvdec-vp9.c
483
484 static void config_registers(struct rkvdec_ctx *ctx,
485 const struct rkvdec_vp9_run *run)
486 {
487 unsigned int y_len, uv_len, yuv_len, bit_depth, aligned_height, aligned_pitch, stream_len;
488 const struct v4l2_ctrl_vp9_frame *dec_params;
489 struct rkvdec_decoded_buffer *ref_bufs[3];
490 struct rkvdec_decoded_buffer *dst, *last, *mv_ref;
491 struct rkvdec_vp9_ctx *vp9_ctx = ctx->priv;
492 struct rkvdec_regs *regs = &vp9_ctx->regs;
> 493 u32 val;
494 const struct v4l2_vp9_segmentation *seg;
495 struct rkvdec_dev *rkvdec = ctx->dev;
496 dma_addr_t addr;
497 bool intra_only;
498 unsigned int i;
499
500 dec_params = run->decode_params;
501 dst = vb2_to_rkvdec_decoded_buf(&run->base.bufs.dst->vb2_buf);
502 ref_bufs[0] = get_ref_buf(ctx, &dst->base.vb, dec_params->last_frame_ts);
503 ref_bufs[1] = get_ref_buf(ctx, &dst->base.vb, dec_params->golden_frame_ts);
504 ref_bufs[2] = get_ref_buf(ctx, &dst->base.vb, dec_params->alt_frame_ts);
505
506 if (vp9_ctx->last.valid)
507 last = get_ref_buf(ctx, &dst->base.vb, vp9_ctx->last.timestamp);
508 else
509 last = dst;
510
511 update_dec_buf_info(dst, dec_params);
512 update_ctx_cur_info(vp9_ctx, dst, dec_params);
513 seg = &dec_params->seg;
514
515 intra_only = !!(dec_params->flags &
516 (V4L2_VP9_FRAME_FLAG_KEY_FRAME |
517 V4L2_VP9_FRAME_FLAG_INTRA_ONLY));
518
519 regs->common.reg02.dec_mode = RKVDEC_MODE_VP9;
520
521 bit_depth = dec_params->bit_depth;
522 aligned_height = round_up(ctx->decoded_fmt.fmt.pix_mp.height, 64);
523
524 aligned_pitch = round_up(ctx->decoded_fmt.fmt.pix_mp.width *
525 bit_depth,
526 512) / 8;
527 y_len = aligned_height * aligned_pitch;
528 uv_len = y_len / 2;
529 yuv_len = y_len + uv_len;
530
531 regs->common.reg03.y_hor_virstride = aligned_pitch / 16;
532 regs->common.reg03.uv_hor_virstride = aligned_pitch / 16;
533 regs->common.reg08.y_virstride = y_len / 16;
534 regs->common.reg09.yuv_virstride = yuv_len / 16;
535
536 stream_len = vb2_get_plane_payload(&run->base.bufs.src->vb2_buf, 0);
537
538 regs->common.stream_len = stream_len;
539
540 /*
541 * Reset count buffer, because decoder only output intra related syntax
542 * counts when decoding intra frame, but update entropy need to update
543 * all the probabilities.
544 */
545 if (intra_only)
546 memset(vp9_ctx->count_tbl.cpu, 0, vp9_ctx->count_tbl.size);
547
548 vp9_ctx->cur.segmapid = vp9_ctx->last.segmapid;
549 if (!intra_only &&
550 !(dec_params->flags & V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT) &&
551 (!(seg->flags & V4L2_VP9_SEGMENTATION_FLAG_ENABLED) ||
552 (seg->flags & V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP)))
553 vp9_ctx->cur.segmapid++;
554
555 for (i = 0; i < ARRAY_SIZE(ref_bufs); i++)
556 config_ref_registers(ctx, run, ref_bufs[i], i);
557
558 for (i = 0; i < 8; i++)
559 config_seg_registers(ctx, i);
560
561 regs->vp9.reg28.tx_mode = vp9_ctx->cur.tx_mode;
562 regs->vp9.reg28.frame_reference_mode = dec_params->reference_mode;
563
564 if (!intra_only) {
565 const struct v4l2_vp9_loop_filter *lf;
566 s8 delta;
567
568 if (vp9_ctx->last.valid)
569 lf = &vp9_ctx->last.lf;
570 else
571 lf = &vp9_ctx->cur.lf;
572
573 val = 0;
574 for (i = 0; i < ARRAY_SIZE(lf->ref_deltas); i++) {
575 delta = lf->ref_deltas[i];
576 switch (i) {
577 case 0:
578 regs->vp9.reg32.ref_deltas_lastframe0 = delta;
579 break;
580 case 1:
581 regs->vp9.reg32.ref_deltas_lastframe1 = delta;
582 break;
583 case 2:
584 regs->vp9.reg32.ref_deltas_lastframe2 = delta;
585 break;
586 case 3:
587 regs->vp9.reg32.ref_deltas_lastframe3 = delta;
588 break;
589 }
590 }
591
592 for (i = 0; i < ARRAY_SIZE(lf->mode_deltas); i++) {
593 delta = lf->mode_deltas[i];
594 switch (i) {
595 case 0:
596 regs->vp9.reg33.mode_deltas_lastframe0 = delta;
597 break;
598 case 1:
599 regs->vp9.reg33.mode_deltas_lastframe1 = delta;
600 break;
601 }
602 }
603 }
604
605 regs->vp9.reg33.segmentation_enable_lstframe =
606 vp9_ctx->last.valid && !intra_only &&
607 vp9_ctx->last.seg.flags & V4L2_VP9_SEGMENTATION_FLAG_ENABLED;
608
609 regs->vp9.reg33.last_show_frame =
610 vp9_ctx->last.valid &&
611 vp9_ctx->last.flags & V4L2_VP9_FRAME_FLAG_SHOW_FRAME;
612
613 regs->vp9.reg33.last_intra_only =
614 vp9_ctx->last.valid &&
615 vp9_ctx->last.flags &
616 (V4L2_VP9_FRAME_FLAG_KEY_FRAME | V4L2_VP9_FRAME_FLAG_INTRA_ONLY);
617
618 regs->vp9.reg33.last_widthheight_eqcur =
619 vp9_ctx->last.valid &&
620 last->vp9.width == dst->vp9.width &&
621 last->vp9.height == dst->vp9.height;
622
623 regs->vp9.reg36.lasttile_size =
624 stream_len - dec_params->compressed_header_size -
625 dec_params->uncompressed_header_size;
626
627 for (i = 0; !intra_only && i < ARRAY_SIZE(ref_bufs); i++) {
628 unsigned int refw = ref_bufs[i]->vp9.width;
629 unsigned int refh = ref_bufs[i]->vp9.height;
630 u32 hscale, vscale;
631
632 hscale = (refw << 14) / dst->vp9.width;
633 vscale = (refh << 14) / dst->vp9.height;
634
635 regs->vp9.reg29_31[i].ref_hor_scale = hscale;
636 regs->vp9.reg29_31[i].ref_ver_scale = vscale;
637 }
638
639 addr = vb2_dma_contig_plane_dma_addr(&dst->base.vb.vb2_buf, 0);
640 regs->common.decout_base = addr;
641 addr = vb2_dma_contig_plane_dma_addr(&run->base.bufs.src->vb2_buf, 0);
642 regs->common.strm_rlc_base = addr;
643
644 regs->common.cabactbl_base = vp9_ctx->priv_tbl.dma +
645 offsetof(struct rkvdec_vp9_priv_tbl, probs);
646
647 regs->vp9.count_base = vp9_ctx->count_tbl.dma;
648
649 regs->vp9.segidlast_base = vp9_ctx->priv_tbl.dma +
650 offsetof(struct rkvdec_vp9_priv_tbl, segmap) +
651 (RKVDEC_VP9_MAX_SEGMAP_SIZE * (!vp9_ctx->cur.segmapid));
652
653 regs->vp9.segidcur_base = vp9_ctx->priv_tbl.dma +
654 offsetof(struct rkvdec_vp9_priv_tbl, segmap) +
655 (RKVDEC_VP9_MAX_SEGMAP_SIZE * vp9_ctx->cur.segmapid);
656
657 if (!intra_only &&
658 !(dec_params->flags & V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT) &&
659 vp9_ctx->last.valid)
660 mv_ref = last;
661 else
662 mv_ref = dst;
663
664 regs->vp9.refcolmv_base = get_mv_base_addr(mv_ref);
665
666 regs->vp9.performance_cycle = ctx->decoded_fmt.fmt.pix_mp.width |
667 (ctx->decoded_fmt.fmt.pix_mp.height << 16);
668
669 regs->vp9.reg44.strmd_error_e = 0xe;
670
671 rkvdec_write_regs(rkvdec, regs);
672 }
673
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
Powered by blists - more mailing lists