From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============2489581301730315767==" MIME-Version: 1.0 From: kernel test robot To: kbuild-all@lists.01.org Subject: Re: [RFC PATCH 08/11] ptq: Per Thread Queues Date: Thu, 25 Jun 2020 05:20:33 +0800 Message-ID: <202006250502.Xd68ibKh%lkp@intel.com> In-Reply-To: <20200624171749.11927-9-tom@herbertland.com> List-Id: --===============2489581301730315767== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Hi Tom, [FYI, it's a private test report for your RFC patch.] [auto build test ERROR on net/master] [also build test ERROR on ipvs/master net-next/master linus/master v5.8-rc2= next-20200624] [cannot apply to cgroup/for-next] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Tom-Herbert/ptq-Per-Thread= -Queues/20200625-012135 base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git 02758= 75530f692c725c6f993aced2eca2d6ac50c config: arc-defconfig (attached as .config) compiler: arc-elf-gcc (GCC) 9.3.0 reproduce (this is a W=3D1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/= make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree COMPILER_INSTALL_PATH=3D$HOME/0day COMPILER=3Dgcc-9.3.0 make.cross = ARCH=3Darc = If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All error/warnings (new ones prefixed by >>): In file included from net/core/ptq.c:12: >> include/net/ptq.h:23:29: error: field 'css' has incomplete type 23 | struct cgroup_subsys_state css; | ^~~ net/core/ptq.c: In function 'reassign_queues_all': >> net/core/ptq.c:298:23: error: storage size of 'it' isn't known 298 | struct css_task_iter it; | ^~ >> net/core/ptq.c:314:2: error: implicit declaration of function 'css_task_= iter_start'; did you mean 'sg_miter_start'? [-Werror=3Dimplicit-function-de= claration] 314 | css_task_iter_start(&pss->css, 0, &it); | ^~~~~~~~~~~~~~~~~~~ | sg_miter_start >> net/core/ptq.c:315:17: error: implicit declaration of function 'css_task= _iter_next'; did you mean 'class_dev_iter_next'? [-Werror=3Dimplicit-functi= on-declaration] 315 | while ((task =3D css_task_iter_next(&it))) | ^~~~~~~~~~~~~~~~~~ | class_dev_iter_next >> net/core/ptq.c:317:2: error: implicit declaration of function 'css_task_= iter_end' [-Werror=3Dimplicit-function-declaration] 317 | css_task_iter_end(&it); | ^~~~~~~~~~~~~~~~~ net/core/ptq.c:298:23: warning: unused variable 'it' [-Wunused-variable] 298 | struct css_task_iter it; | ^~ net/core/ptq.c: In function 'cgrp_css_online': >> net/core/ptq.c:337:46: error: dereferencing pointer to incomplete type '= struct cgroup_subsys_state' 337 | struct cgroup_subsys_state *parent_css =3D css->parent; | ^~ net/core/ptq.c: At top level: >> net/core/ptq.c:356:64: warning: 'struct cftype' declared inside paramete= r list will not be visible outside of this definition or declaration 356 | static u64 read_ptqidx(struct cgroup_subsys_state *css, struct c= ftype *cft) | ^= ~~~~~ >> net/core/ptq.c:362:34: warning: 'struct cgroup_taskset' declared inside = parameter list will not be visible outside of this definition or declaration 362 | static int ptq_can_attach(struct cgroup_taskset *tset) | ^~~~~~~~~~~~~~ net/core/ptq.c: In function 'ptq_can_attach': >> net/core/ptq.c:373:2: error: implicit declaration of function 'cgroup_ta= skset_for_each'; did you mean 'cgroup_task_frozen'? [-Werror=3Dimplicit-fun= ction-declaration] 373 | cgroup_taskset_for_each(task, dst_css, tset) { | ^~~~~~~~~~~~~~~~~~~~~~~ | cgroup_task_frozen >> net/core/ptq.c:373:46: error: expected ';' before '{' token 373 | cgroup_taskset_for_each(task, dst_css, tset) { | ^~ | ; net/core/ptq.c:364:40: warning: unused variable 'src_css' [-Wunused-vari= able] 364 | struct cgroup_subsys_state *dst_css, *src_css; | ^~~~~~~ net/core/ptq.c: At top level: net/core/ptq.c:384:31: warning: 'struct cgroup_taskset' declared inside = parameter list will not be visible outside of this definition or declaration 384 | static void ptq_attach(struct cgroup_taskset *tset) | ^~~~~~~~~~~~~~ net/core/ptq.c: In function 'ptq_attach': >> net/core/ptq.c:393:42: error: expected ';' before 'assign_queues' 393 | cgroup_taskset_for_each(task, css, tset) | ^ | ; 394 | assign_queues(css_to_ptq_css(css), task); | ~~~~~~~~~~~~~ = net/core/ptq.c: At top level: net/core/ptq.c:400:38: warning: 'struct cgroup_taskset' declared inside = parameter list will not be visible outside of this definition or declaration 400 | static void ptq_cancel_attach(struct cgroup_taskset *tset) | ^~~~~~~~~~~~~~ net/core/ptq.c: In function 'ptq_cancel_attach': net/core/ptq.c:411:46: error: expected ';' before '{' token 411 | cgroup_taskset_for_each(task, dst_css, tset) { | ^~ | ; net/core/ptq.c:402:40: warning: unused variable 'src_css' [-Wunused-vari= able] 402 | struct cgroup_subsys_state *dst_css, *src_css; | ^~~~~~~ net/core/ptq.c: In function 'ptq_fork': >> net/core/ptq.c:424:3: error: implicit declaration of function 'task_css'= ; did you mean 'task_cpu'? [-Werror=3Dimplicit-function-declaration] 424 | task_css(task, net_queues_cgrp_id); | ^~~~~~~~ | task_cpu >> net/core/ptq.c:424:18: error: 'net_queues_cgrp_id' undeclared (first use= in this function); did you mean 'net_queue_pair'? 424 | task_css(task, net_queues_cgrp_id); | ^~~~~~~~~~~~~~~~~~ | net_queue_pair net/core/ptq.c:424:18: note: each undeclared identifier is reported only= once for each function it appears in net/core/ptq.c: In function 'ptq_exit': net/core/ptq.c:435:18: error: 'net_queues_cgrp_id' undeclared (first use= in this function); did you mean 'net_queue_pair'? 435 | task_css(task, net_queues_cgrp_id); | ^~~~~~~~~~~~~~~~~~ | net_queue_pair net/core/ptq.c: In function 'write_tx_queues': >> net/core/ptq.c:557:39: error: implicit declaration of function 'of_css' = [-Werror=3Dimplicit-function-declaration] 557 | struct ptq_css *pss =3D css_to_ptq_css(of_css(of)); | ^~~~~~ >> net/core/ptq.c:557:39: warning: passing argument 1 of 'css_to_ptq_css' m= akes pointer from integer without a cast [-Wint-conversion] 557 | struct ptq_css *pss =3D css_to_ptq_css(of_css(of)); | ^~~~~~~~~~ | | | int In file included from net/core/ptq.c:12: include/net/ptq.h:34:74: note: expected 'struct cgroup_subsys_state *' b= ut argument is of type 'int' 34 | static inline struct ptq_css *css_to_ptq_css(struct cgroup_subsy= s_state *css) | ~~~~~~~~~~~~~~~~~~~= ~~~~~~~~~^~~ In file included from include/linux/rculist.h:11, from include/linux/netdevice.h:33, from net/core/ptq.c:8: net/core/ptq.c: In function 'read_tx_queues': >> net/core/ptq.c:573:59: error: implicit declaration of function 'seq_css'= [-Werror=3Dimplicit-function-declaration] 573 | ret =3D show_queue_desc(sf, rcu_dereference(css_to_ptq_css(seq_= css(sf))-> | ^~~~~~~ include/linux/rcupdate.h:352:10: note: in definition of macro '__rcu_der= eference_check' 352 | typeof(*p) *________p1 =3D (typeof(*p) *__force)READ_ONCE(p); \ | ^ >> include/linux/rcupdate.h:549:28: note: in expansion of macro 'rcu_derefe= rence_check' 549 | #define rcu_dereference(p) rcu_dereference_check(p, 0) | ^~~~~~~~~~~~~~~~~~~~~ >> net/core/ptq.c:573:28: note: in expansion of macro 'rcu_dereference' 573 | ret =3D show_queue_desc(sf, rcu_dereference(css_to_ptq_css(seq_= css(sf))-> | ^~~~~~~~~~~~~~~ net/core/ptq.c:573:59: warning: passing argument 1 of 'css_to_ptq_css' m= akes pointer from integer without a cast [-Wint-conversion] 573 | ret =3D show_queue_desc(sf, rcu_dereference(css_to_ptq_css(seq_= css(sf))-> | ^~~~~~= ~~~~~ | | | int include/linux/rcupdate.h:352:10: note: in definition of macro '__rcu_der= eference_check' 352 | typeof(*p) *________p1 =3D (typeof(*p) *__force)READ_ONCE(p); \ | ^ >> include/linux/rcupdate.h:549:28: note: in expansion of macro 'rcu_derefe= rence_check' 549 | #define rcu_dereference(p) rcu_dereference_check(p, 0) | ^~~~~~~~~~~~~~~~~~~~~ >> net/core/ptq.c:573:28: note: in expansion of macro 'rcu_dereference' 573 | ret =3D show_queue_desc(sf, rcu_dereference(css_to_ptq_css(seq_= css(sf))-> | ^~~~~~~~~~~~~~~ In file included from net/core/ptq.c:12: include/net/ptq.h:34:74: note: expected 'struct cgroup_subsys_state *' b= ut argument is of type 'int' 34 | static inline struct ptq_css *css_to_ptq_css(struct cgroup_subsy= s_state *css) | ~~~~~~~~~~~~~~~~~~~= ~~~~~~~~~^~~ In file included from include/linux/rculist.h:11, from include/linux/netdevice.h:33, from net/core/ptq.c:8: net/core/ptq.c:573:59: warning: passing argument 1 of 'css_to_ptq_css' m= akes pointer from integer without a cast [-Wint-conversion] 573 | ret =3D show_queue_desc(sf, rcu_dereference(css_to_ptq_css(seq_= css(sf))-> | ^~~~~~= ~~~~~ | | | int include/linux/rcupdate.h:352:36: note: in definition of macro '__rcu_der= eference_check' 352 | typeof(*p) *________p1 =3D (typeof(*p) *__force)READ_ONCE(p); \ | ^ include/linux/rcupdate.h:549:28: note: in expansion of macro 'rcu_derefe= rence_check' 549 | #define rcu_dereference(p) rcu_dereference_check(p, 0) | ^~~~~~~~~~~~~~~~~~~~~ net/core/ptq.c:573:28: note: in expansion of macro 'rcu_dereference' 573 | ret =3D show_queue_desc(sf, rcu_dereference(css_to_ptq_css(seq_= css(sf))-> | ^~~~~~~~~~~~~~~ In file included from net/core/ptq.c:12: include/net/ptq.h:34:74: note: expected 'struct cgroup_subsys_state *' b= ut argument is of type 'int' 34 | static inline struct ptq_css *css_to_ptq_css(struct cgroup_subsy= s_state *css) | ~~~~~~~~~~~~~~~~~~~= ~~~~~~~~~^~~ In file included from include/linux/build_bug.h:5, from include/linux/bits.h:23, from include/linux/bitops.h:5, from include/linux/bitmap.h:8, from net/core/ptq.c:6: net/core/ptq.c:573:59: warning: passing argument 1 of 'css_to_ptq_css' m= akes pointer from integer without a cast [-Wint-conversion] 573 | ret =3D show_queue_desc(sf, rcu_dereference(css_to_ptq_css(seq_= css(sf))-> | ^~~~~~= ~~~~~ | | | int include/linux/compiler.h:372:9: note: in definition of macro '__compilet= ime_assert' 372 | if (!(condition)) \ | ^~~~~~~~~ include/linux/compiler.h:392:2: note: in expansion of macro '_compiletim= e_assert' 392 | _compiletime_assert(condition, msg, __compiletime_assert_, __CO= UNTER__) | ^~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:405:2: note: in expansion of macro 'compiletime= _assert' 405 | compiletime_assert(__native_word(t) || sizeof(t) =3D=3D sizeof(= long long), \ | ^~~~~~~~~~~~~~~~~~ include/linux/compiler.h:405:21: note: in expansion of macro '__native_w= ord' 405 | compiletime_assert(__native_word(t) || sizeof(t) =3D=3D sizeof(= long long), \ | ^~~~~~~~~~~~~ include/linux/compiler.h:291:2: note: in expansion of macro 'compiletime= _assert_rwonce_type' 291 | compiletime_assert_rwonce_type(x); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/rcupdate.h:352:48: note: in expansion of macro 'READ_ONCE' 352 | typeof(*p) *________p1 =3D (typeof(*p) *__force)READ_ONCE(p); \ | ^~~~~~~~~ include/linux/rcupdate.h:491:2: note: in expansion of macro '__rcu_deref= erence_check' 491 | __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu) | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/rcupdate.h:549:28: note: in expansion of macro 'rcu_derefe= rence_check' 549 | #define rcu_dereference(p) rcu_dereference_check(p, 0) | ^~~~~~~~~~~~~~~~~~~~~ net/core/ptq.c:573:28: note: in expansion of macro 'rcu_dereference' 573 | ret =3D show_queue_desc(sf, rcu_dereference(css_to_ptq_css(seq_= css(sf))-> | ^~~~~~~~~~~~~~~ In file included from net/core/ptq.c:12: include/net/ptq.h:34:74: note: expected 'struct cgroup_subsys_state *' b= ut argument is of type 'int' 34 | static inline struct ptq_css *css_to_ptq_css(struct cgroup_subsy= s_state *css) | ~~~~~~~~~~~~~~~~~~~= ~~~~~~~~~^~~ In file included from include/linux/build_bug.h:5, from include/linux/bits.h:23, from include/linux/bitops.h:5, from include/linux/bitmap.h:8, from net/core/ptq.c:6: net/core/ptq.c:573:59: warning: passing argument 1 of 'css_to_ptq_css' m= akes pointer from integer without a cast [-Wint-conversion] 573 | ret =3D show_queue_desc(sf, rcu_dereference(css_to_ptq_css(seq_= css(sf))-> | ^~~~~~= ~~~~~ | | | int include/linux/compiler.h:372:9: note: in definition of macro '__compilet= ime_assert' 372 | if (!(condition)) \ | ^~~~~~~~~ include/linux/compiler.h:392:2: note: in expansion of macro '_compiletim= e_assert' 392 | _compiletime_assert(condition, msg, __compiletime_assert_, __CO= UNTER__) | ^~~~~~~~~~~~~~~~~~~ include/linux/compiler.h:405:2: note: in expansion of macro 'compiletime= _assert' 405 | compiletime_assert(__native_word(t) || sizeof(t) =3D=3D sizeof(= long long), \ | ^~~~~~~~~~~~~~~~~~ include/linux/compiler.h:405:21: note: in expansion of macro '__native_w= ord' 405 | compiletime_assert(__native_word(t) || sizeof(t) =3D=3D sizeof(= long long), \ | ^~~~~~~~~~~~~ include/linux/compiler.h:291:2: note: in expansion of macro 'compiletime= _assert_rwonce_type' 291 | compiletime_assert_rwonce_type(x); \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/rcupdate.h:352:48: note: in expansion of macro 'READ_ONCE' 352 | typeof(*p) *________p1 =3D (typeof(*p) *__force)READ_ONCE(p); \ | ^~~~~~~~~ include/linux/rcupdate.h:491:2: note: in expansion of macro '__rcu_deref= erence_check' 491 | __rcu_dereference_check((p), (c) || rcu_read_lock_held(), __rcu) | ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/rcupdate.h:549:28: note: in expansion of macro 'rcu_derefe= rence_check' vim +/css +23 include/net/ptq.h 21 = 22 struct ptq_css { > 23 struct cgroup_subsys_state css; 24 = 25 struct ptq_cgroup_queue_desc __rcu *txqs; 26 struct ptq_cgroup_queue_desc __rcu *rxqs; 27 = 28 unsigned short flags; 29 #define PTQ_F_RX_ASSIGN BIT(0) 30 #define PTQ_F_TX_ASSIGN BIT(1) 31 #define PTQ_F_SYMMETRIC BIT(2) 32 }; 33 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============2489581301730315767== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 TGuOAAA= --===============2489581301730315767==--