* Re: [PATCH 12/13] media: v4l2-mc: Introduce v4l2_mc_pipeline_enabled()
[not found] <20250619081546.1582969-13-sakari.ailus@linux.intel.com>
@ 2025-06-19 11:42 ` kernel test robot
2025-06-23 9:48 ` kernel test robot
1 sibling, 0 replies; 2+ messages in thread
From: kernel test robot @ 2025-06-19 11:42 UTC (permalink / raw)
To: Sakari Ailus, linux-media
Cc: llvm, oe-kbuild-all, bingbu.cao, stanislaw.gruszka, tian.shu.qiu,
tomi.valkeinen, laurent.pinchart
Hi Sakari,
kernel test robot noticed the following build warnings:
[auto build test WARNING on linuxtv-media-pending/master]
[also build test WARNING on linus/master media-tree/master v6.16-rc2 next-20250618]
[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/Sakari-Ailus/media-ipu6-Use-correct-pads-for-xlate_streams/20250619-161847
base: https://git.linuxtv.org/media-ci/media-pending.git master
patch link: https://lore.kernel.org/r/20250619081546.1582969-13-sakari.ailus%40linux.intel.com
patch subject: [PATCH 12/13] media: v4l2-mc: Introduce v4l2_mc_pipeline_enabled()
config: x86_64-buildonly-randconfig-003-20250619 (https://download.01.org/0day-ci/archive/20250619/202506191934.t9FEXlhl-lkp@intel.com/config)
compiler: clang version 20.1.2 (https://github.com/llvm/llvm-project 58df0ef89dd64126512e4ee27b4ac3fd8ddf6247)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250619/202506191934.t9FEXlhl-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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506191934.t9FEXlhl-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/media/v4l2-core/v4l2-mc.c:622:6: warning: variable 'src_streams' set but not used [-Wunused-but-set-variable]
622 | u64 src_streams = 0, sink_streams = 0;
| ^
>> drivers/media/v4l2-core/v4l2-mc.c:732:44: warning: variable 'source_stream' is uninitialized when used here [-Wuninitialized]
732 | return v4l2_mc_downpath_enabled(sink_pad, source_stream, func,
| ^~~~~~~~~~~~~
drivers/media/v4l2-core/v4l2-mc.c:671:19: note: initialize the variable 'source_stream' to silence this warning
671 | u32 source_stream;
| ^
| = 0
2 warnings generated.
vim +/src_streams +622 drivers/media/v4l2-core/v4l2-mc.c
615
616 static int
617 __v4l2_mc_pipeline_enabled(struct v4l2_subdev_state *state,
618 struct media_pad *src_pad, u64 __src_streams,
619 struct media_pad **__sink_pad, u64 *__sink_streams)
620 {
621 struct v4l2_subdev_route *route;
> 622 u64 src_streams = 0, sink_streams = 0;
623 bool has_sink_pad = false;
624 unsigned int sink_pad;
625
626 dev_dbg(state->sd->dev, "%s: source enabled, pad/streams %u/%#llx\n",
627 state->sd->entity.name, src_pad->index, __src_streams);
628 for_each_active_route(&state->routing, route) {
629 dev_dbg(state->sd->dev, "%s: %u/%u -> %u/%u, flags %x\n",
630 state->sd->entity.name,
631 route->sink_pad, route->sink_stream, route->source_pad,
632 route->source_stream, route->flags);
633 if (route->source_pad != src_pad->index)
634 continue;
635
636 if (!(BIT_ULL(route->source_stream) & __src_streams))
637 continue;
638
639 if (!has_sink_pad) {
640 has_sink_pad = true;
641 sink_pad = route->sink_pad;
642 }
643
644 if (route->sink_pad != sink_pad) {
645 dev_dbg(state->sd->dev,
646 "sink pads (%u vs. %u) differ\n",
647 route->sink_pad, sink_pad);
648 return -EMLINK;
649 }
650
651 sink_streams |= BIT_ULL(route->sink_stream);
652 src_streams |= BIT_ULL(route->source_stream);
653 }
654
655 *__sink_pad = has_sink_pad ? &state->sd->entity.pads[sink_pad] : NULL;
656 *__sink_streams = sink_streams;
657
658 return 0;
659 }
660
661 static int v4l2_mc_downpath_enabled(struct media_pad *sink_pad,
662 unsigned int sink_stream,
663 bool (*func)(struct video_device *vdev),
664 struct media_pad **__sink_pad,
665 u64 *__sink_streams)
666 {
667 struct v4l2_subdev_state *state;
668 struct v4l2_subdev_route *route;
669 struct v4l2_subdev *sd;
670 struct media_pad *source_pad, *tmp_pad;
671 u32 source_stream;
672
673 if (!is_media_entity_v4l2_subdev(sink_pad->entity))
674 return -ENXIO;
675
676 sd = media_entity_to_v4l2_subdev(sink_pad->entity);
677 dev_dbg(sd->dev, "path_enabled: found sub-device %s\n",
678 sd->entity.name);
679
680 state = v4l2_subdev_lock_and_get_active_state(sd);
681 route = v4l2_subdev_find_route(&state->routing, sink_pad->index,
682 sink_stream, true, 0);
683 if (IS_ERR(route)) {
684 v4l2_subdev_unlock_state(state);
685 dev_dbg(sd->dev,
686 "path_enabled: can't find opposite route for %s:%u/%u",
687 sd->entity.name, sink_pad->index, sink_stream);
688 return 2;
689 }
690
691 source_pad = &sd->entity.pads[route->source_pad];
692 v4l2_subdev_unlock_state(state);
693
694 tmp_pad = sink_pad;
695 sink_pad = media_pad_remote_pad_unique(source_pad);
696 if (IS_ERR(sink_pad)) {
697 dev_dbg(sd->dev,
698 "path_enabled: can't find remote source for %s:%u\n",
699 source_pad->entity->name, source_pad->index);
700 return PTR_ERR(sink_pad);
701 }
702
703 if (is_media_entity_v4l2_video_device(sink_pad->entity)) {
704 struct video_device *vdev;
705
706 vdev = media_entity_to_video_device(sink_pad->entity);
707 if (!vdev)
708 return -ENXIO;
709
710 dev_dbg(vdev->dev_parent,
711 "path_enabled: found video device %s\n",
712 vdev->name);
713
714 if (!*__sink_pad) {
715 *__sink_pad = tmp_pad;
716 dev_dbg(sd->dev, "path_enabled: sink %u/%u\n",
717 tmp_pad->index, sink_stream);
718 } else if (tmp_pad != *__sink_pad) {
719 dev_dbg(sd->dev,
720 "path_enabled: pads %s/%u and %s/%u differ\n",
721 tmp_pad->entity->name, tmp_pad->index,
722 (*__sink_pad)->entity->name,
723 (*__sink_pad)->index);
724 return -EXDEV;
725 }
726
727 *__sink_streams |= BIT_ULL(sink_stream);
728
729 return func(vdev);
730 }
731
> 732 return v4l2_mc_downpath_enabled(sink_pad, source_stream, func,
733 __sink_pad, __sink_streams);
734 }
735
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH 12/13] media: v4l2-mc: Introduce v4l2_mc_pipeline_enabled()
[not found] <20250619081546.1582969-13-sakari.ailus@linux.intel.com>
2025-06-19 11:42 ` [PATCH 12/13] media: v4l2-mc: Introduce v4l2_mc_pipeline_enabled() kernel test robot
@ 2025-06-23 9:48 ` kernel test robot
1 sibling, 0 replies; 2+ messages in thread
From: kernel test robot @ 2025-06-23 9:48 UTC (permalink / raw)
To: Sakari Ailus; +Cc: llvm, oe-kbuild-all
Hi Sakari,
kernel test robot noticed the following build errors:
[auto build test ERROR on linuxtv-media-pending/master]
[also build test ERROR on linus/master media-tree/master v6.16-rc3 next-20250623]
[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/Sakari-Ailus/media-ipu6-Use-correct-pads-for-xlate_streams/20250619-161847
base: https://git.linuxtv.org/media-ci/media-pending.git master
patch link: https://lore.kernel.org/r/20250619081546.1582969-13-sakari.ailus%40linux.intel.com
patch subject: [PATCH 12/13] media: v4l2-mc: Introduce v4l2_mc_pipeline_enabled()
config: arm-imx_v4_v5_defconfig (https://download.01.org/0day-ci/archive/20250623/202506231722.jPtC2RyB-lkp@intel.com/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project 875b36a8742437b95f623bab1e0332562c7b4b3f)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250623/202506231722.jPtC2RyB-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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506231722.jPtC2RyB-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/media/v4l2-core/v4l2-mc.c:628:2: error: call to undeclared function 'for_each_active_route'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
628 | for_each_active_route(&state->routing, route) {
| ^
drivers/media/v4l2-core/v4l2-mc.c:628:47: error: expected ';' after expression
628 | for_each_active_route(&state->routing, route) {
| ^
| ;
drivers/media/v4l2-core/v4l2-mc.c:634:4: error: 'continue' statement not in loop statement
634 | continue;
| ^
drivers/media/v4l2-core/v4l2-mc.c:637:4: error: 'continue' statement not in loop statement
637 | continue;
| ^
>> drivers/media/v4l2-core/v4l2-mc.c:681:10: error: call to undeclared function 'v4l2_subdev_find_route'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
681 | route = v4l2_subdev_find_route(&state->routing, sink_pad->index,
| ^
>> drivers/media/v4l2-core/v4l2-mc.c:681:8: error: incompatible integer to pointer conversion assigning to 'struct v4l2_subdev_route *' from 'int' [-Wint-conversion]
681 | route = v4l2_subdev_find_route(&state->routing, sink_pad->index,
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
682 | sink_stream, true, 0);
| ~~~~~~~~~~~~~~~~~~~~~
6 errors generated.
vim +/for_each_active_route +628 drivers/media/v4l2-core/v4l2-mc.c
615
616 static int
617 __v4l2_mc_pipeline_enabled(struct v4l2_subdev_state *state,
618 struct media_pad *src_pad, u64 __src_streams,
619 struct media_pad **__sink_pad, u64 *__sink_streams)
620 {
621 struct v4l2_subdev_route *route;
622 u64 src_streams = 0, sink_streams = 0;
623 bool has_sink_pad = false;
624 unsigned int sink_pad;
625
626 dev_dbg(state->sd->dev, "%s: source enabled, pad/streams %u/%#llx\n",
627 state->sd->entity.name, src_pad->index, __src_streams);
> 628 for_each_active_route(&state->routing, route) {
629 dev_dbg(state->sd->dev, "%s: %u/%u -> %u/%u, flags %x\n",
630 state->sd->entity.name,
631 route->sink_pad, route->sink_stream, route->source_pad,
632 route->source_stream, route->flags);
633 if (route->source_pad != src_pad->index)
634 continue;
635
636 if (!(BIT_ULL(route->source_stream) & __src_streams))
637 continue;
638
639 if (!has_sink_pad) {
640 has_sink_pad = true;
641 sink_pad = route->sink_pad;
642 }
643
644 if (route->sink_pad != sink_pad) {
645 dev_dbg(state->sd->dev,
646 "sink pads (%u vs. %u) differ\n",
647 route->sink_pad, sink_pad);
648 return -EMLINK;
649 }
650
651 sink_streams |= BIT_ULL(route->sink_stream);
652 src_streams |= BIT_ULL(route->source_stream);
653 }
654
655 *__sink_pad = has_sink_pad ? &state->sd->entity.pads[sink_pad] : NULL;
656 *__sink_streams = sink_streams;
657
658 return 0;
659 }
660
661 static int v4l2_mc_downpath_enabled(struct media_pad *sink_pad,
662 unsigned int sink_stream,
663 bool (*func)(struct video_device *vdev),
664 struct media_pad **__sink_pad,
665 u64 *__sink_streams)
666 {
667 struct v4l2_subdev_state *state;
668 struct v4l2_subdev_route *route;
669 struct v4l2_subdev *sd;
670 struct media_pad *source_pad, *tmp_pad;
671 u32 source_stream;
672
673 if (!is_media_entity_v4l2_subdev(sink_pad->entity))
674 return -ENXIO;
675
676 sd = media_entity_to_v4l2_subdev(sink_pad->entity);
677 dev_dbg(sd->dev, "path_enabled: found sub-device %s\n",
678 sd->entity.name);
679
680 state = v4l2_subdev_lock_and_get_active_state(sd);
> 681 route = v4l2_subdev_find_route(&state->routing, sink_pad->index,
682 sink_stream, true, 0);
683 if (IS_ERR(route)) {
684 v4l2_subdev_unlock_state(state);
685 dev_dbg(sd->dev,
686 "path_enabled: can't find opposite route for %s:%u/%u",
687 sd->entity.name, sink_pad->index, sink_stream);
688 return 2;
689 }
690
691 source_pad = &sd->entity.pads[route->source_pad];
692 v4l2_subdev_unlock_state(state);
693
694 tmp_pad = sink_pad;
695 sink_pad = media_pad_remote_pad_unique(source_pad);
696 if (IS_ERR(sink_pad)) {
697 dev_dbg(sd->dev,
698 "path_enabled: can't find remote source for %s:%u\n",
699 source_pad->entity->name, source_pad->index);
700 return PTR_ERR(sink_pad);
701 }
702
703 if (is_media_entity_v4l2_video_device(sink_pad->entity)) {
704 struct video_device *vdev;
705
706 vdev = media_entity_to_video_device(sink_pad->entity);
707 if (!vdev)
708 return -ENXIO;
709
710 dev_dbg(vdev->dev_parent,
711 "path_enabled: found video device %s\n",
712 vdev->name);
713
714 if (!*__sink_pad) {
715 *__sink_pad = tmp_pad;
716 dev_dbg(sd->dev, "path_enabled: sink %u/%u\n",
717 tmp_pad->index, sink_stream);
718 } else if (tmp_pad != *__sink_pad) {
719 dev_dbg(sd->dev,
720 "path_enabled: pads %s/%u and %s/%u differ\n",
721 tmp_pad->entity->name, tmp_pad->index,
722 (*__sink_pad)->entity->name,
723 (*__sink_pad)->index);
724 return -EXDEV;
725 }
726
727 *__sink_streams |= BIT_ULL(sink_stream);
728
729 return func(vdev);
730 }
731
732 return v4l2_mc_downpath_enabled(sink_pad, source_stream, func,
733 __sink_pad, __sink_streams);
734 }
735
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread