Hi Wanhui,
FYI, the error/warning still remains.
tree:
https://github.com/intel/linux-intel-lts.git 5.10/yocto
head: 3ebd33d042d488ba5ca3a11f7520a6084793ba13
commit: f13978177f8c57c155d53df5f2df60f519e82e4a [10621/13492] v4l: subdev: Add support
for sub-streams
config: powerpc64-randconfig-r013-20210722 (attached as .config)
compiler: clang version 13.0.0 (
https://github.com/llvm/llvm-project
9625ca5b602616b2f5584e8a49ba93c52c141e40)
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
# install powerpc64 cross compiling tool for clang build
# apt-get install binutils-powerpc64-linux-gnu
#
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=clang make.cross ARCH=powerpc64
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 >>):
In file included from drivers/media/v4l2-core/v4l2-subdev.c:12:
In file included from include/linux/mm.h:9:
In file included from include/linux/mmdebug.h:5:
In file included from include/linux/bug.h:5:
In file included from arch/powerpc/include/asm/bug.h:109:
In file included from include/asm-generic/bug.h:20:
In file included from include/linux/kernel.h:12:
In file included from include/linux/bitops.h:29:
In file included from arch/powerpc/include/asm/bitops.h:62:
arch/powerpc/include/asm/barrier.h:49:9: warning: '__lwsync' macro redefined
[-Wmacro-redefined]
#define __lwsync() __asm__ __volatile__ (stringify_in_c(LWSYNC) : :
:"memory")
^
<built-in>:310:9: note: previous definition is here
#define __lwsync __builtin_ppc_lwsync
^
> drivers/media/v4l2-core/v4l2-subdev.c:908:5: warning: stack frame
size (1376) exceeds limit (1024) in function 'v4l2_subdev_link_validate'
[-Wframe-larger-than]
int v4l2_subdev_link_validate(struct media_link *link)
^
2 warnings generated.
vim +/v4l2_subdev_link_validate +908 drivers/media/v4l2-core/v4l2-subdev.c
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 907
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 @908
int v4l2_subdev_link_validate(struct media_link *link)
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 909 {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 910
struct v4l2_subdev *sink;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 911
struct v4l2_subdev_route sink_routes[LINK_VALIDATE_ROUTES];
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 912
struct v4l2_subdev_routing sink_routing = {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 913
.routes = sink_routes,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 914
.num_routes = ARRAY_SIZE(sink_routes),
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 915
};
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 916
struct v4l2_subdev_route src_routes[LINK_VALIDATE_ROUTES];
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 917
struct v4l2_subdev_routing src_routing = {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 918
.routes = src_routes,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 919
.num_routes = ARRAY_SIZE(src_routes),
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 920
};
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 921
unsigned int i, j;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 922
int rval;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 923
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 924
sink = media_entity_to_v4l2_subdev(link->sink->entity);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 925
if (!sink)
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 926
return -EINVAL;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 927
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 928
if (!(link->sink->flags & MEDIA_PAD_FL_MULTIPLEX &&
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 929
link->source->flags & MEDIA_PAD_FL_MULTIPLEX))
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 930
return v4l2_subdev_link_validate_one(link, link->source, 0,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 931
link->sink, 0);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 932
/*
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 933
* multiplex link cannot proceed without route information.
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 934
*/
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 935
rval = v4l2_subdev_call(sink, pad, get_routing, &sink_routing);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 936
if (rval) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 937
dev_err(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 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,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 939
sink->entity.name, link->sink->index);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 940
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 941
return rval;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 942
}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 943
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 944
rval = v4l2_subdev_call(media_entity_to_v4l2_subdev(
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 945
link->source->entity),
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 946
pad, get_routing, &src_routing);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 947
if (rval) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 948
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 949
"error %d in get_routing() on %s, source pad %u\n",
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 950
rval, sink->entity.name, link->source->index);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 951
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 952
return rval;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 953
}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 954
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 955
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 956
"validating multiplexed link \"%s\":%u -> \"%s\":%u; %u/%u
routes\n",
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 957
link->source->entity->name, link->source->index,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 958
sink->entity.name, link->sink->index,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 959
src_routing.num_routes, sink_routing.num_routes);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 960
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 961
for (i = 0; i < sink_routing.num_routes; i++) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 962
/* Get the first active route for the sink pad. */
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 963
if (sink_routes[i].sink_pad != link->sink->index ||
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 964
!(sink_routes[i].flags & V4L2_SUBDEV_ROUTE_FL_ACTIVE)) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 965
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 966
"skipping sink route %u/%u -> %u/%u[%u]\n",
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 967
sink_routes[i].sink_pad,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 968
sink_routes[i].sink_stream,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 969
sink_routes[i].source_pad,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 970
sink_routes[i].source_stream,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 971
(bool)(sink_routes[i].flags
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 972
& V4L2_SUBDEV_ROUTE_FL_ACTIVE));
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 973
continue;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 974
}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 975
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 976
/*
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 977
* Get the corresponding route for the source pad.
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 978
* It's ok for the source pad to have routes active
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 979
* where the sink pad does not, but the routes that
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 980
* are active on the source pad have to be active on
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 981
* the sink pad as well.
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 982
*/
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 983
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 984
for (j = 0; j < src_routing.num_routes; j++) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 985
if (src_routes[j].source_pad == link->source->index &&
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 986
src_routes[j].source_stream
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 987
== sink_routes[i].sink_stream)
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 988
break;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 989
}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 990
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 991
if (j == src_routing.num_routes) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 992
dev_err(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 993
"no corresponding source found.\n");
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 994
return -EINVAL;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 995
}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 996
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 997
/* The source route must be active. */
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 998
if (!(src_routes[j].flags & V4L2_SUBDEV_ROUTE_FL_ACTIVE)) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 999
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1000
"source route not active\n");
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1001
return -EINVAL;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1002
}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1003
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1004
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1005
"validating link \"%s\": %u/%u => \"%s\" %u/%u\n",
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1006
link->source->entity->name, src_routes[j].source_pad,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1007
src_routes[j].source_stream, sink->entity.name,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1008
sink_routes[i].sink_pad, sink_routes[i].sink_stream);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1009
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1010
rval = v4l2_subdev_link_validate_one(
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1011
link, link->source, src_routes[j].source_stream,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1012
link->sink, sink_routes[i].sink_stream);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1013
if (rval) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1014
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1015
"error %d in link validation\n", rval);
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1016
return rval;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1017
}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1018
}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1019
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1020
if (i < sink_routing.num_routes) {
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1021
dev_dbg(sink->entity.graph_obj.mdev->dev,
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1022
"not all sink routes verified; out of source routes\n");
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1023
return -EINVAL;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1024
}
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1025
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1026
return 0;
e822d33e27dd00 drivers/media/v4l2-core/v4l2-subdev.c wu xia 2016-06-13 1027 }
8227c92b696884 drivers/media/video/v4l2-subdev.c Sakari Ailus 2011-10-10 1028
EXPORT_SYMBOL_GPL(v4l2_subdev_link_validate);
9b02cbb3ede89b drivers/media/v4l2-core/v4l2-subdev.c Laurent Pinchart 2015-04-24 1029
:::::: The code at line 908 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