tree:
https://github.com/intel/linux-intel-lts.git 5.10/yocto
head: cb7e61a3cffb19413bc9d8ad7e0b690eec519348
commit: f13978177f8c57c155d53df5f2df60f519e82e4a [9816/9862] v4l: subdev: Add support for
sub-streams
config: csky-randconfig-r015-20210709 (attached as .config)
compiler: csky-linux-gcc (GCC) 9.3.0
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
#
https://github.com/intel/linux-intel-lts/commit/f13978177f8c57c155d53df5f...
git remote add intel-linux-intel-lts
https://github.com/intel/linux-intel-lts.git
git fetch --no-tags intel-linux-intel-lts 5.10/yocto
git checkout f13978177f8c57c155d53df5f2df60f519e82e4a
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=csky
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
drivers/media/v4l2-core/v4l2-subdev.c: In function
'v4l2_subdev_link_validate':
> drivers/media/v4l2-core/v4l2-subdev.c:1027:1: warning: the frame
size of 1352 bytes is larger than 1024 bytes [-Wframe-larger-than=]
1027 | }
| ^
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for LOCKDEP
Depends on DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT && (FRAME_POINTER ||
MIPS || PPC || S390 || MICROBLAZE || ARM || ARC || X86)
Selected by
- PROVE_LOCKING && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
- LOCK_STAT && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
- DEBUG_LOCK_ALLOC && DEBUG_KERNEL && LOCK_DEBUGGING_SUPPORT
vim +1027 drivers/media/v4l2-core/v4l2-subdev.c
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 907
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 908
int v4l2_subdev_link_validate(struct media_link *link)
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 909
{
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 910
struct v4l2_subdev *sink;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 911
struct v4l2_subdev_route sink_routes[LINK_VALIDATE_ROUTES];
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 912
struct v4l2_subdev_routing sink_routing = {
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 913
.routes = sink_routes,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 914
.num_routes = ARRAY_SIZE(sink_routes),
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 915
};
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 916
struct v4l2_subdev_route src_routes[LINK_VALIDATE_ROUTES];
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 917
struct v4l2_subdev_routing src_routing = {
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 918
.routes = src_routes,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 919
.num_routes = ARRAY_SIZE(src_routes),
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 920
};
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 921
unsigned int i, j;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 922
int rval;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 923
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 924
sink = media_entity_to_v4l2_subdev(link->sink->entity);
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 925
if (!sink)
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 926
return -EINVAL;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 927
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 928
if (!(link->sink->flags & MEDIA_PAD_FL_MULTIPLEX &&
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 929
link->source->flags & MEDIA_PAD_FL_MULTIPLEX))
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 930
return v4l2_subdev_link_validate_one(link, link->source, 0,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 931
link->sink, 0);
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 932
/*
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 933
* multiplex link cannot proceed without route information.
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 934
*/
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 935
rval = v4l2_subdev_call(sink, pad, get_routing, &sink_routing);
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 936
if (rval) {
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 937
dev_err(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 938
"error %d in get_routing() on %s, sink pad %u\n", rval,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 939
sink->entity.name, link->sink->index);
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 940
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 941
return rval;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 942
}
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 943
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 944
rval = v4l2_subdev_call(media_entity_to_v4l2_subdev(
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 945
link->source->entity),
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 946
pad, get_routing, &src_routing);
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 947
if (rval) {
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 948
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 949
"error %d in get_routing() on %s, source pad %u\n",
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 950
rval, sink->entity.name, link->source->index);
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 951
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 952
return rval;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 953
}
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 954
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 955
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 956
"validating multiplexed link \"%s\":%u -> \"%s\":%u; %u/%u
routes\n",
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 957
link->source->entity->name, link->source->index,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 958
sink->entity.name, link->sink->index,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 959
src_routing.num_routes, sink_routing.num_routes);
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 960
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 961
for (i = 0; i < sink_routing.num_routes; i++) {
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 962
/* Get the first active route for the sink pad. */
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 963
if (sink_routes[i].sink_pad != link->sink->index ||
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 964
!(sink_routes[i].flags & V4L2_SUBDEV_ROUTE_FL_ACTIVE)) {
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 965
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 966
"skipping sink route %u/%u -> %u/%u[%u]\n",
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 967
sink_routes[i].sink_pad,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 968
sink_routes[i].sink_stream,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 969
sink_routes[i].source_pad,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 970
sink_routes[i].source_stream,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 971
(bool)(sink_routes[i].flags
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 972
& V4L2_SUBDEV_ROUTE_FL_ACTIVE));
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 973
continue;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 974
}
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 975
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 976
/*
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 977
* Get the corresponding route for the source pad.
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 978
* It's ok for the source pad to have routes active
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 979
* where the sink pad does not, but the routes that
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 980
* are active on the source pad have to be active on
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 981
* the sink pad as well.
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 982
*/
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 983
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 984
for (j = 0; j < src_routing.num_routes; j++) {
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 985
if (src_routes[j].source_pad == link->source->index &&
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 986
src_routes[j].source_stream
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 987
== sink_routes[i].sink_stream)
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 988
break;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 989
}
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 990
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 991
if (j == src_routing.num_routes) {
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 992
dev_err(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 993
"no corresponding source found.\n");
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 994
return -EINVAL;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 995
}
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 996
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 997
/* The source route must be active. */
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 998
if (!(src_routes[j].flags & V4L2_SUBDEV_ROUTE_FL_ACTIVE)) {
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 999
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1000
"source route not active\n");
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1001
return -EINVAL;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1002
}
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1003
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1004
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1005
"validating link \"%s\": %u/%u => \"%s\" %u/%u\n",
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1006
link->source->entity->name, src_routes[j].source_pad,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1007
src_routes[j].source_stream, sink->entity.name,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1008
sink_routes[i].sink_pad, sink_routes[i].sink_stream);
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1009
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1010
rval = v4l2_subdev_link_validate_one(
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1011
link, link->source, src_routes[j].source_stream,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1012
link->sink, sink_routes[i].sink_stream);
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1013
if (rval) {
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1014
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1015
"error %d in link validation\n", rval);
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1016
return rval;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1017
}
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1018
}
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1019
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1020
if (i < sink_routing.num_routes) {
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1021
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1022
"not all sink routes verified; out of source routes\n");
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1023
return -EINVAL;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1024
}
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1025
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1026
return 0;
e822d33e27dd00b drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 @1027
}
8227c92b6968840 drivers/media/video/v4l2-subdev.c Sakari Ailus 2011-10-10 1028
EXPORT_SYMBOL_GPL(v4l2_subdev_link_validate);
9b02cbb3ede89b5 drivers/media/v4l2-core/v4l2-subdev.c Laurent Pinchart 2015-04-24 1029
:::::: The code at line 1027 was first introduced by commit
:::::: e822d33e27dd00bb200f0e9db1811231554ce03c v4l: Take routing info into account in
link validation
:::::: TO: wu xia <xia.wu(a)intel.com>
:::::: CC: Pan, Kris <kris.pan(a)intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org