On 9/3/2022 8:39 AM, Paul E. McKenney wrote: > On Sat, Sep 03, 2022 at 12:48:28AM +0800, kernel test robot wrote: >> Hi "Joel, >> >> Thank you for the patch! Yet something to improve: >> >> [auto build test ERROR on paulmck-rcu/dev] >> [also build test ERROR on pcmoore-selinux/next drm-intel/for-linux-next linus/master v6.0-rc3] >> [cannot apply to vbabka-slab/for-next rostedt-trace/for-next tip/timers/core next-20220901] >> [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/Joel-Fernandes-Google/Implement-call_rcu_lazy-and-miscellaneous-fixes/20220902-062156 >> base: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git dev >> config: mips-allyesconfig (https://download.01.org/0day-ci/archive/20220903/202209030052.20CJhjTX-lkp@xxxxxxxxx/config) >> compiler: mips-linux-gcc (GCC) 12.1.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-lab-lkp/linux/commit/c0f09b1d42d06649680f74a78ca363e7f1c158b2 >> git remote add linux-review https://github.com/intel-lab-lkp/linux >> git fetch --no-tags linux-review Joel-Fernandes-Google/Implement-call_rcu_lazy-and-miscellaneous-fixes/20220902-062156 >> git checkout c0f09b1d42d06649680f74a78ca363e7f1c158b2 >> # save the config file >> mkdir build_dir && cp config build_dir/.config >> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash >> >> If you fix the issue, kindly add following tag where applicable >> Reported-by: kernel test robot <lkp@xxxxxxxxx> >> >> All errors (new ones prefixed by >>): >> >> In file included from <command-line>: >> In function 'dst_hold', >> inlined from 'dst_clone' at include/net/dst.h:251:3, >> inlined from '__skb_dst_copy' at include/net/dst.h:284:3, >> inlined from 'ovs_vport_output' at net/openvswitch/actions.c:787:2: >>>> include/linux/compiler_types.h:354:45: error: call to '__compiletime_assert_490' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct dst_entry, __refcnt) & 63 >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^ >> include/linux/compiler_types.h:335:25: note: in definition of macro '__compiletime_assert' >> 335 | prefix ## suffix(); \ >> | ^~~~~~ >> include/linux/compiler_types.h:354:9: note: in expansion of macro '_compiletime_assert' >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^~~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' >> 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) >> | ^~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' >> 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) >> | ^~~~~~~~~~~~~~~~ >> include/net/dst.h:230:9: note: in expansion of macro 'BUILD_BUG_ON' >> 230 | BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); >> | ^~~~~~~~~~~~ > > This looks like fallout from the rcu_head structure changing size, > given that __refcnt comes after rcu_head on 32-bit systems. > Yes, I also thought of that as the likely cause. > It looks like the per-CB tracing code needs to be kept on the side for > the time being rather than being sent to -next (let alone mainline). True, that should be Ok. It is a debug patch and can make it a bit later. > Any reason I cannot just move this one to the end of the stack, after > "fork: Move thread_stack_free_rcu() to call_rcu_lazy()"? No reason, it is an independent patch. - Joel > > Thanx, Paul > >> In function 'dst_hold', >> inlined from 'execute_set_action' at net/openvswitch/actions.c:1093:3, >> inlined from 'do_execute_actions' at net/openvswitch/actions.c:1377:10: >>>> include/linux/compiler_types.h:354:45: error: call to '__compiletime_assert_490' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct dst_entry, __refcnt) & 63 >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^ >> include/linux/compiler_types.h:335:25: note: in definition of macro '__compiletime_assert' >> 335 | prefix ## suffix(); \ >> | ^~~~~~ >> include/linux/compiler_types.h:354:9: note: in expansion of macro '_compiletime_assert' >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^~~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' >> 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) >> | ^~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' >> 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) >> | ^~~~~~~~~~~~~~~~ >> include/net/dst.h:230:9: note: in expansion of macro 'BUILD_BUG_ON' >> 230 | BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); >> | ^~~~~~~~~~~~ >> -- >> In file included from <command-line>: >> In function 'dst_hold', >> inlined from 'dst_hold_and_use' at include/net/dst.h:244:2, >> inlined from 'dn_insert_route.constprop.isra' at net/decnet/dn_route.c:334:4: >>>> include/linux/compiler_types.h:354:45: error: call to '__compiletime_assert_490' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct dst_entry, __refcnt) & 63 >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^ >> include/linux/compiler_types.h:335:25: note: in definition of macro '__compiletime_assert' >> 335 | prefix ## suffix(); \ >> | ^~~~~~ >> include/linux/compiler_types.h:354:9: note: in expansion of macro '_compiletime_assert' >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^~~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' >> 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) >> | ^~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' >> 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) >> | ^~~~~~~~~~~~~~~~ >> include/net/dst.h:230:9: note: in expansion of macro 'BUILD_BUG_ON' >> 230 | BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); >> | ^~~~~~~~~~~~ >> In function 'dst_hold', >> inlined from 'dst_hold_and_use' at include/net/dst.h:244:2, >> inlined from 'dn_insert_route.constprop.isra' at net/decnet/dn_route.c:347:2: >>>> include/linux/compiler_types.h:354:45: error: call to '__compiletime_assert_490' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct dst_entry, __refcnt) & 63 >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^ >> include/linux/compiler_types.h:335:25: note: in definition of macro '__compiletime_assert' >> 335 | prefix ## suffix(); \ >> | ^~~~~~ >> include/linux/compiler_types.h:354:9: note: in expansion of macro '_compiletime_assert' >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^~~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' >> 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) >> | ^~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' >> 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) >> | ^~~~~~~~~~~~~~~~ >> include/net/dst.h:230:9: note: in expansion of macro 'BUILD_BUG_ON' >> 230 | BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); >> | ^~~~~~~~~~~~ >> In function 'dst_hold', >> inlined from 'dst_hold_and_use' at include/net/dst.h:244:2, >> inlined from 'dn_route_input' at net/decnet/dn_route.c:1535:4: >>>> include/linux/compiler_types.h:354:45: error: call to '__compiletime_assert_490' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct dst_entry, __refcnt) & 63 >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^ >> include/linux/compiler_types.h:335:25: note: in definition of macro '__compiletime_assert' >> 335 | prefix ## suffix(); \ >> | ^~~~~~ >> include/linux/compiler_types.h:354:9: note: in expansion of macro '_compiletime_assert' >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^~~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' >> 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) >> | ^~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' >> 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) >> | ^~~~~~~~~~~~~~~~ >> include/net/dst.h:230:9: note: in expansion of macro 'BUILD_BUG_ON' >> 230 | BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); >> | ^~~~~~~~~~~~ >> In function 'dst_hold', >> inlined from 'dst_hold_and_use' at include/net/dst.h:244:2, >> inlined from '__dn_route_output_key.isra' at net/decnet/dn_route.c:1257:5: >>>> include/linux/compiler_types.h:354:45: error: call to '__compiletime_assert_490' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct dst_entry, __refcnt) & 63 >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^ >> include/linux/compiler_types.h:335:25: note: in definition of macro '__compiletime_assert' >> 335 | prefix ## suffix(); \ >> | ^~~~~~ >> include/linux/compiler_types.h:354:9: note: in expansion of macro '_compiletime_assert' >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^~~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' >> 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) >> | ^~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' >> 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) >> | ^~~~~~~~~~~~~~~~ >> include/net/dst.h:230:9: note: in expansion of macro 'BUILD_BUG_ON' >> 230 | BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); >> | ^~~~~~~~~~~~ >> In function 'dst_hold', >> inlined from 'dst_clone' at include/net/dst.h:251:3, >> inlined from 'dn_cache_dump' at net/decnet/dn_route.c:1752:4: >>>> include/linux/compiler_types.h:354:45: error: call to '__compiletime_assert_490' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct dst_entry, __refcnt) & 63 >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^ >> include/linux/compiler_types.h:335:25: note: in definition of macro '__compiletime_assert' >> 335 | prefix ## suffix(); \ >> | ^~~~~~ >> include/linux/compiler_types.h:354:9: note: in expansion of macro '_compiletime_assert' >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^~~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' >> 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) >> | ^~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' >> 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) >> | ^~~~~~~~~~~~~~~~ >> include/net/dst.h:230:9: note: in expansion of macro 'BUILD_BUG_ON' >> 230 | BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); >> | ^~~~~~~~~~~~ >> -- >> In file included from <command-line>: >> In function 'dst_hold', >> inlined from 'dst_clone' at include/net/dst.h:251:3, >> inlined from 'ip6_copy_metadata' at net/ipv6/ip6_output.c:654:2: >>>> include/linux/compiler_types.h:354:45: error: call to '__compiletime_assert_490' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct dst_entry, __refcnt) & 63 >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^ >> include/linux/compiler_types.h:335:25: note: in definition of macro '__compiletime_assert' >> 335 | prefix ## suffix(); \ >> | ^~~~~~ >> include/linux/compiler_types.h:354:9: note: in expansion of macro '_compiletime_assert' >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^~~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' >> 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) >> | ^~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' >> 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) >> | ^~~~~~~~~~~~~~~~ >> include/net/dst.h:230:9: note: in expansion of macro 'BUILD_BUG_ON' >> 230 | BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); >> | ^~~~~~~~~~~~ >> In function 'dst_hold', >> inlined from 'ip6_append_data' at net/ipv6/ip6_output.c:1838:3: >>>> include/linux/compiler_types.h:354:45: error: call to '__compiletime_assert_490' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct dst_entry, __refcnt) & 63 >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^ >> include/linux/compiler_types.h:335:25: note: in definition of macro '__compiletime_assert' >> 335 | prefix ## suffix(); \ >> | ^~~~~~ >> include/linux/compiler_types.h:354:9: note: in expansion of macro '_compiletime_assert' >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^~~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' >> 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) >> | ^~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' >> 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) >> | ^~~~~~~~~~~~~~~~ >> include/net/dst.h:230:9: note: in expansion of macro 'BUILD_BUG_ON' >> 230 | BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); >> | ^~~~~~~~~~~~ >> In function 'dst_hold', >> inlined from 'dst_clone' at include/net/dst.h:251:3, >> inlined from 'ip6_sk_dst_lookup_flow' at net/ipv6/ip6_output.c:1262:3: >>>> include/linux/compiler_types.h:354:45: error: call to '__compiletime_assert_490' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct dst_entry, __refcnt) & 63 >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^ >> include/linux/compiler_types.h:335:25: note: in definition of macro '__compiletime_assert' >> 335 | prefix ## suffix(); \ >> | ^~~~~~ >> include/linux/compiler_types.h:354:9: note: in expansion of macro '_compiletime_assert' >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^~~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' >> 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) >> | ^~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' >> 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) >> | ^~~~~~~~~~~~~~~~ >> include/net/dst.h:230:9: note: in expansion of macro 'BUILD_BUG_ON' >> 230 | BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); >> | ^~~~~~~~~~~~ >> -- >> In file included from <command-line>: >> In function 'dst_hold', >> inlined from 'dst_clone' at include/net/dst.h:251:3, >> inlined from '__skb_dst_copy' at include/net/dst.h:284:3, >> inlined from 'skb_dst_copy' at include/net/dst.h:289:2, >> inlined from 'ip6_list_rcv_finish.constprop' at net/ipv6/ip6_input.c:128:4: >>>> include/linux/compiler_types.h:354:45: error: call to '__compiletime_assert_490' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct dst_entry, __refcnt) & 63 >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^ >> include/linux/compiler_types.h:335:25: note: in definition of macro '__compiletime_assert' >> 335 | prefix ## suffix(); \ >> | ^~~~~~ >> include/linux/compiler_types.h:354:9: note: in expansion of macro '_compiletime_assert' >> 354 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> | ^~~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' >> 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) >> | ^~~~~~~~~~~~~~~~~~ >> include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG' >> 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) >> | ^~~~~~~~~~~~~~~~ >> include/net/dst.h:230:9: note: in expansion of macro 'BUILD_BUG_ON' >> 230 | BUILD_BUG_ON(offsetof(struct dst_entry, __refcnt) & 63); >> | ^~~~~~~~~~~~ >> >> >> vim +/__compiletime_assert_490 +354 include/linux/compiler_types.h >> >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 340 >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 341 #define _compiletime_assert(condition, msg, prefix, suffix) \ >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 342 __compiletime_assert(condition, msg, prefix, suffix) >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 343 >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 344 /** >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 345 * compiletime_assert - break build and emit msg if condition is false >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 346 * @condition: a compile-time constant condition to check >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 347 * @msg: a message to emit if condition is false >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 348 * >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 349 * In tradition of POSIX assert, this macro will break the build if the >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 350 * supplied condition is *false*, emitting the supplied error message if the >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 351 * compiler has support to do so. >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 352 */ >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 353 #define compiletime_assert(condition, msg) \ >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 @354 _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) >> eb5c2d4b45e3d2 Will Deacon 2020-07-21 355 >> >> -- >> 0-DAY CI Kernel Test Service >> https://01.org/lkp