From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: Re: [PATCH 12/13] media: v4l2-mc: Introduce v4l2_mc_pipeline_enabled()
Date: Fri, 20 Jun 2025 11:32:49 +0800 [thread overview]
Message-ID: <202506201121.oifnpp7r-lkp@intel.com> (raw)
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
In-Reply-To: <20250619081546.1582969-13-sakari.ailus@linux.intel.com>
References: <20250619081546.1582969-13-sakari.ailus@linux.intel.com>
TO: Sakari Ailus <sakari.ailus@linux.intel.com>
TO: linux-media@vger.kernel.org
CC: bingbu.cao@linux.intel.com
CC: stanislaw.gruszka@linux.intel.com
CC: tian.shu.qiu@intel.com
CC: tomi.valkeinen@ideasonboard.com
CC: laurent.pinchart@ideasonboard.com
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-20250619]
[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()
:::::: branch date: 19 hours ago
:::::: commit date: 19 hours ago
config: i386-randconfig-141-20250620 (https://download.01.org/0day-ci/archive/20250620/202506201121.oifnpp7r-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
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>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202506201121.oifnpp7r-lkp@intel.com/
smatch warnings:
drivers/media/v4l2-core/v4l2-mc.c:732 v4l2_mc_downpath_enabled() error: uninitialized symbol 'source_stream'.
drivers/media/v4l2-core/v4l2-mc.c:834 v4l2_mc_pipeline_enabled() warn: variable dereferenced before IS_ERR check 'src_pad' (see line 802)
vim +/source_stream +732 drivers/media/v4l2-core/v4l2-mc.c
bc83f513f8ad94 Sakari Ailus 2025-06-19 660
bc83f513f8ad94 Sakari Ailus 2025-06-19 661 static int v4l2_mc_downpath_enabled(struct media_pad *sink_pad,
bc83f513f8ad94 Sakari Ailus 2025-06-19 662 unsigned int sink_stream,
bc83f513f8ad94 Sakari Ailus 2025-06-19 663 bool (*func)(struct video_device *vdev),
bc83f513f8ad94 Sakari Ailus 2025-06-19 664 struct media_pad **__sink_pad,
bc83f513f8ad94 Sakari Ailus 2025-06-19 665 u64 *__sink_streams)
bc83f513f8ad94 Sakari Ailus 2025-06-19 666 {
bc83f513f8ad94 Sakari Ailus 2025-06-19 667 struct v4l2_subdev_state *state;
bc83f513f8ad94 Sakari Ailus 2025-06-19 668 struct v4l2_subdev_route *route;
bc83f513f8ad94 Sakari Ailus 2025-06-19 669 struct v4l2_subdev *sd;
bc83f513f8ad94 Sakari Ailus 2025-06-19 670 struct media_pad *source_pad, *tmp_pad;
bc83f513f8ad94 Sakari Ailus 2025-06-19 671 u32 source_stream;
bc83f513f8ad94 Sakari Ailus 2025-06-19 672
bc83f513f8ad94 Sakari Ailus 2025-06-19 673 if (!is_media_entity_v4l2_subdev(sink_pad->entity))
bc83f513f8ad94 Sakari Ailus 2025-06-19 674 return -ENXIO;
bc83f513f8ad94 Sakari Ailus 2025-06-19 675
bc83f513f8ad94 Sakari Ailus 2025-06-19 676 sd = media_entity_to_v4l2_subdev(sink_pad->entity);
bc83f513f8ad94 Sakari Ailus 2025-06-19 677 dev_dbg(sd->dev, "path_enabled: found sub-device %s\n",
bc83f513f8ad94 Sakari Ailus 2025-06-19 678 sd->entity.name);
bc83f513f8ad94 Sakari Ailus 2025-06-19 679
bc83f513f8ad94 Sakari Ailus 2025-06-19 680 state = v4l2_subdev_lock_and_get_active_state(sd);
bc83f513f8ad94 Sakari Ailus 2025-06-19 681 route = v4l2_subdev_find_route(&state->routing, sink_pad->index,
bc83f513f8ad94 Sakari Ailus 2025-06-19 682 sink_stream, true, 0);
bc83f513f8ad94 Sakari Ailus 2025-06-19 683 if (IS_ERR(route)) {
bc83f513f8ad94 Sakari Ailus 2025-06-19 684 v4l2_subdev_unlock_state(state);
bc83f513f8ad94 Sakari Ailus 2025-06-19 685 dev_dbg(sd->dev,
bc83f513f8ad94 Sakari Ailus 2025-06-19 686 "path_enabled: can't find opposite route for %s:%u/%u",
bc83f513f8ad94 Sakari Ailus 2025-06-19 687 sd->entity.name, sink_pad->index, sink_stream);
bc83f513f8ad94 Sakari Ailus 2025-06-19 688 return 2;
bc83f513f8ad94 Sakari Ailus 2025-06-19 689 }
bc83f513f8ad94 Sakari Ailus 2025-06-19 690
bc83f513f8ad94 Sakari Ailus 2025-06-19 691 source_pad = &sd->entity.pads[route->source_pad];
bc83f513f8ad94 Sakari Ailus 2025-06-19 692 v4l2_subdev_unlock_state(state);
bc83f513f8ad94 Sakari Ailus 2025-06-19 693
bc83f513f8ad94 Sakari Ailus 2025-06-19 694 tmp_pad = sink_pad;
bc83f513f8ad94 Sakari Ailus 2025-06-19 695 sink_pad = media_pad_remote_pad_unique(source_pad);
bc83f513f8ad94 Sakari Ailus 2025-06-19 696 if (IS_ERR(sink_pad)) {
bc83f513f8ad94 Sakari Ailus 2025-06-19 697 dev_dbg(sd->dev,
bc83f513f8ad94 Sakari Ailus 2025-06-19 698 "path_enabled: can't find remote source for %s:%u\n",
bc83f513f8ad94 Sakari Ailus 2025-06-19 699 source_pad->entity->name, source_pad->index);
bc83f513f8ad94 Sakari Ailus 2025-06-19 700 return PTR_ERR(sink_pad);
bc83f513f8ad94 Sakari Ailus 2025-06-19 701 }
bc83f513f8ad94 Sakari Ailus 2025-06-19 702
bc83f513f8ad94 Sakari Ailus 2025-06-19 703 if (is_media_entity_v4l2_video_device(sink_pad->entity)) {
bc83f513f8ad94 Sakari Ailus 2025-06-19 704 struct video_device *vdev;
bc83f513f8ad94 Sakari Ailus 2025-06-19 705
bc83f513f8ad94 Sakari Ailus 2025-06-19 706 vdev = media_entity_to_video_device(sink_pad->entity);
bc83f513f8ad94 Sakari Ailus 2025-06-19 707 if (!vdev)
bc83f513f8ad94 Sakari Ailus 2025-06-19 708 return -ENXIO;
bc83f513f8ad94 Sakari Ailus 2025-06-19 709
bc83f513f8ad94 Sakari Ailus 2025-06-19 710 dev_dbg(vdev->dev_parent,
bc83f513f8ad94 Sakari Ailus 2025-06-19 711 "path_enabled: found video device %s\n",
bc83f513f8ad94 Sakari Ailus 2025-06-19 712 vdev->name);
bc83f513f8ad94 Sakari Ailus 2025-06-19 713
bc83f513f8ad94 Sakari Ailus 2025-06-19 714 if (!*__sink_pad) {
bc83f513f8ad94 Sakari Ailus 2025-06-19 715 *__sink_pad = tmp_pad;
bc83f513f8ad94 Sakari Ailus 2025-06-19 716 dev_dbg(sd->dev, "path_enabled: sink %u/%u\n",
bc83f513f8ad94 Sakari Ailus 2025-06-19 717 tmp_pad->index, sink_stream);
bc83f513f8ad94 Sakari Ailus 2025-06-19 718 } else if (tmp_pad != *__sink_pad) {
bc83f513f8ad94 Sakari Ailus 2025-06-19 719 dev_dbg(sd->dev,
bc83f513f8ad94 Sakari Ailus 2025-06-19 720 "path_enabled: pads %s/%u and %s/%u differ\n",
bc83f513f8ad94 Sakari Ailus 2025-06-19 721 tmp_pad->entity->name, tmp_pad->index,
bc83f513f8ad94 Sakari Ailus 2025-06-19 722 (*__sink_pad)->entity->name,
bc83f513f8ad94 Sakari Ailus 2025-06-19 723 (*__sink_pad)->index);
bc83f513f8ad94 Sakari Ailus 2025-06-19 724 return -EXDEV;
bc83f513f8ad94 Sakari Ailus 2025-06-19 725 }
bc83f513f8ad94 Sakari Ailus 2025-06-19 726
bc83f513f8ad94 Sakari Ailus 2025-06-19 727 *__sink_streams |= BIT_ULL(sink_stream);
bc83f513f8ad94 Sakari Ailus 2025-06-19 728
bc83f513f8ad94 Sakari Ailus 2025-06-19 729 return func(vdev);
bc83f513f8ad94 Sakari Ailus 2025-06-19 730 }
bc83f513f8ad94 Sakari Ailus 2025-06-19 731
bc83f513f8ad94 Sakari Ailus 2025-06-19 @732 return v4l2_mc_downpath_enabled(sink_pad, source_stream, func,
bc83f513f8ad94 Sakari Ailus 2025-06-19 733 __sink_pad, __sink_streams);
bc83f513f8ad94 Sakari Ailus 2025-06-19 734 }
bc83f513f8ad94 Sakari Ailus 2025-06-19 735
bc83f513f8ad94 Sakari Ailus 2025-06-19 736 static int v4l2_mc_source_get_streams(struct v4l2_subdev *sd, unsigned int pad,
bc83f513f8ad94 Sakari Ailus 2025-06-19 737 u64 *__streams)
bc83f513f8ad94 Sakari Ailus 2025-06-19 738 {
bc83f513f8ad94 Sakari Ailus 2025-06-19 739 struct v4l2_mbus_frame_desc desc;
bc83f513f8ad94 Sakari Ailus 2025-06-19 740 u64 streams = 0;
bc83f513f8ad94 Sakari Ailus 2025-06-19 741 int ret;
bc83f513f8ad94 Sakari Ailus 2025-06-19 742
bc83f513f8ad94 Sakari Ailus 2025-06-19 743 if (!__streams)
bc83f513f8ad94 Sakari Ailus 2025-06-19 744 return -EINVAL;
bc83f513f8ad94 Sakari Ailus 2025-06-19 745
bc83f513f8ad94 Sakari Ailus 2025-06-19 746 ret = v4l2_subdev_call(sd, pad, get_frame_desc, pad, &desc);
bc83f513f8ad94 Sakari Ailus 2025-06-19 747 if (ret == -ENOIOCTLCMD) {
bc83f513f8ad94 Sakari Ailus 2025-06-19 748 *__streams = 1ULL;
bc83f513f8ad94 Sakari Ailus 2025-06-19 749 return 0;
bc83f513f8ad94 Sakari Ailus 2025-06-19 750 }
bc83f513f8ad94 Sakari Ailus 2025-06-19 751 if (ret)
bc83f513f8ad94 Sakari Ailus 2025-06-19 752 return ret;
bc83f513f8ad94 Sakari Ailus 2025-06-19 753
bc83f513f8ad94 Sakari Ailus 2025-06-19 754 for (unsigned int i = 0; i < desc.num_entries; i++) {
bc83f513f8ad94 Sakari Ailus 2025-06-19 755 if (streams & BIT_ULL(desc.entry[i].stream))
bc83f513f8ad94 Sakari Ailus 2025-06-19 756 return -EINVAL;
bc83f513f8ad94 Sakari Ailus 2025-06-19 757
bc83f513f8ad94 Sakari Ailus 2025-06-19 758 streams |= BIT_ULL(desc.entry[i].stream);
bc83f513f8ad94 Sakari Ailus 2025-06-19 759 }
bc83f513f8ad94 Sakari Ailus 2025-06-19 760
bc83f513f8ad94 Sakari Ailus 2025-06-19 761 dev_dbg(sd->dev, "found streams %#llx based on streams %#llx\n",
bc83f513f8ad94 Sakari Ailus 2025-06-19 762 *__streams, streams);
bc83f513f8ad94 Sakari Ailus 2025-06-19 763 if (*__streams & ~streams)
bc83f513f8ad94 Sakari Ailus 2025-06-19 764 return -EINVAL;
bc83f513f8ad94 Sakari Ailus 2025-06-19 765
bc83f513f8ad94 Sakari Ailus 2025-06-19 766 *__streams = streams;
bc83f513f8ad94 Sakari Ailus 2025-06-19 767
bc83f513f8ad94 Sakari Ailus 2025-06-19 768 return 0;
bc83f513f8ad94 Sakari Ailus 2025-06-19 769 }
bc83f513f8ad94 Sakari Ailus 2025-06-19 770
bc83f513f8ad94 Sakari Ailus 2025-06-19 771 int v4l2_mc_pipeline_enabled(struct video_device *vdev,
bc83f513f8ad94 Sakari Ailus 2025-06-19 772 bool (*func)(struct video_device *vdev),
bc83f513f8ad94 Sakari Ailus 2025-06-19 773 struct media_pad **__sink_pad, u64 *__sink_streams)
bc83f513f8ad94 Sakari Ailus 2025-06-19 774 {
bc83f513f8ad94 Sakari Ailus 2025-06-19 775 u64 sink_streams = 1U;
bc83f513f8ad94 Sakari Ailus 2025-06-19 776 struct media_pad *src_pad;
bc83f513f8ad94 Sakari Ailus 2025-06-19 777 u64 src_streams;
bc83f513f8ad94 Sakari Ailus 2025-06-19 778 struct v4l2_subdev_state *state;
bc83f513f8ad94 Sakari Ailus 2025-06-19 779 struct media_pad *sink_pad = vdev->entity.pads;
bc83f513f8ad94 Sakari Ailus 2025-06-19 780 struct v4l2_subdev *sd = NULL;
bc83f513f8ad94 Sakari Ailus 2025-06-19 781 bool streaming = true;
bc83f513f8ad94 Sakari Ailus 2025-06-19 782 struct media_pad *tmp_pad;
bc83f513f8ad94 Sakari Ailus 2025-06-19 783 u64 tmp_streams;
bc83f513f8ad94 Sakari Ailus 2025-06-19 784 int ret;
bc83f513f8ad94 Sakari Ailus 2025-06-19 785
bc83f513f8ad94 Sakari Ailus 2025-06-19 786 if (!__sink_pad)
bc83f513f8ad94 Sakari Ailus 2025-06-19 787 __sink_pad = &tmp_pad;
bc83f513f8ad94 Sakari Ailus 2025-06-19 788 if (!__sink_streams)
bc83f513f8ad94 Sakari Ailus 2025-06-19 789 __sink_streams = &tmp_streams;
bc83f513f8ad94 Sakari Ailus 2025-06-19 790 *__sink_pad = NULL;
bc83f513f8ad94 Sakari Ailus 2025-06-19 791 *__sink_streams = 0;
bc83f513f8ad94 Sakari Ailus 2025-06-19 792
bc83f513f8ad94 Sakari Ailus 2025-06-19 793 do {
bc83f513f8ad94 Sakari Ailus 2025-06-19 794 src_pad = media_pad_remote_pad_unique(sink_pad);
bc83f513f8ad94 Sakari Ailus 2025-06-19 795 if (IS_ERR(src_pad)) {
bc83f513f8ad94 Sakari Ailus 2025-06-19 796 dev_dbg(sd ? sd->dev : vdev->dev_parent,
bc83f513f8ad94 Sakari Ailus 2025-06-19 797 "no unique remote pad found from %s:%u\n",
bc83f513f8ad94 Sakari Ailus 2025-06-19 798 sink_pad->entity->name, sink_pad->index);
bc83f513f8ad94 Sakari Ailus 2025-06-19 799 return PTR_ERR(src_pad);
bc83f513f8ad94 Sakari Ailus 2025-06-19 800 }
bc83f513f8ad94 Sakari Ailus 2025-06-19 801
bc83f513f8ad94 Sakari Ailus 2025-06-19 @802 sd = media_entity_to_v4l2_subdev(src_pad->entity);
bc83f513f8ad94 Sakari Ailus 2025-06-19 803 if (!sd) {
bc83f513f8ad94 Sakari Ailus 2025-06-19 804 dev_dbg(sd->dev,
bc83f513f8ad94 Sakari Ailus 2025-06-19 805 "media entity %s is not a V4L2 sub-device\n",
bc83f513f8ad94 Sakari Ailus 2025-06-19 806 src_pad->entity->name);
bc83f513f8ad94 Sakari Ailus 2025-06-19 807 return -ENXIO;
bc83f513f8ad94 Sakari Ailus 2025-06-19 808 }
bc83f513f8ad94 Sakari Ailus 2025-06-19 809
bc83f513f8ad94 Sakari Ailus 2025-06-19 810 /* Source streams match sink. */
bc83f513f8ad94 Sakari Ailus 2025-06-19 811 src_streams = sink_streams;
bc83f513f8ad94 Sakari Ailus 2025-06-19 812
bc83f513f8ad94 Sakari Ailus 2025-06-19 813 state = v4l2_subdev_lock_and_get_active_state(sd);
bc83f513f8ad94 Sakari Ailus 2025-06-19 814 ret = __v4l2_mc_pipeline_enabled(state, src_pad,
bc83f513f8ad94 Sakari Ailus 2025-06-19 815 src_streams, &sink_pad,
bc83f513f8ad94 Sakari Ailus 2025-06-19 816 &sink_streams);
bc83f513f8ad94 Sakari Ailus 2025-06-19 817 v4l2_subdev_unlock_state(state);
bc83f513f8ad94 Sakari Ailus 2025-06-19 818 if (ret)
bc83f513f8ad94 Sakari Ailus 2025-06-19 819 return ret;
bc83f513f8ad94 Sakari Ailus 2025-06-19 820 } while (sink_pad);
bc83f513f8ad94 Sakari Ailus 2025-06-19 821
bc83f513f8ad94 Sakari Ailus 2025-06-19 822 ret = v4l2_mc_source_get_streams(sd, src_pad->index, &src_streams);
bc83f513f8ad94 Sakari Ailus 2025-06-19 823 if (ret)
bc83f513f8ad94 Sakari Ailus 2025-06-19 824 return ret;
bc83f513f8ad94 Sakari Ailus 2025-06-19 825
bc83f513f8ad94 Sakari Ailus 2025-06-19 826 sd = media_entity_to_v4l2_subdev(src_pad->entity);
bc83f513f8ad94 Sakari Ailus 2025-06-19 827
bc83f513f8ad94 Sakari Ailus 2025-06-19 828 dev_dbg(sd->dev, "following %s:%u/%#llx\n", sd->entity.name,
bc83f513f8ad94 Sakari Ailus 2025-06-19 829 src_pad->index, src_streams);
bc83f513f8ad94 Sakari Ailus 2025-06-19 830
bc83f513f8ad94 Sakari Ailus 2025-06-19 831 for (unsigned int i = __ffs(src_streams); src_streams;
bc83f513f8ad94 Sakari Ailus 2025-06-19 832 src_streams &= ~BIT_ULL(i), i = __ffs(src_streams)) {
bc83f513f8ad94 Sakari Ailus 2025-06-19 833 sink_pad = media_pad_remote_pad_unique(src_pad);
bc83f513f8ad94 Sakari Ailus 2025-06-19 @834 if (IS_ERR(src_pad)) {
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next reply other threads:[~2025-06-20 3:33 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-20 3:32 kernel test robot [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-06-19 8:15 [PATCH 00/13] Streaming control for MC with metadata or streams otherwise Sakari Ailus
2025-06-19 8:15 ` [PATCH 12/13] media: v4l2-mc: Introduce v4l2_mc_pipeline_enabled() Sakari Ailus
2025-06-19 11:42 ` kernel test robot
2025-06-20 3:58 ` Dan Carpenter
2025-06-20 8:53 ` Jacopo Mondi
2025-06-21 8:10 ` Sakari Ailus
2025-07-15 10:49 ` Sakari Ailus
2025-07-15 11:25 ` Laurent Pinchart
2025-07-15 11:32 ` Sakari Ailus
2025-07-15 18:18 ` Laurent Pinchart
2025-06-23 9:48 ` kernel test robot
2025-06-26 23:07 ` Laurent Pinchart
2025-08-04 11:32 ` Sakari Ailus
2025-08-04 11:46 ` Laurent Pinchart
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=202506201121.oifnpp7r-lkp@intel.com \
--to=lkp@intel.com \
--cc=error27@gmail.com \
--cc=oe-kbuild@lists.linux.dev \
/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.