tree: https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git core/softirq head: bb1de969c6773e2882e3c156c4cf0f8410e563e5 commit: bb1de969c6773e2882e3c156c4cf0f8410e563e5 [8/8] softirq,rcu: Use softirq_needs_break() config: mips-randconfig-r003-20221128 compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 6e4cea55f0d1104408b26ac574566a0e4de48036) 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 mips cross compiling tool for clang build # apt-get install binutils-mipsel-linux-gnu # https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?id=bb1de969c6773e2882e3c156c4cf0f8410e563e5 git remote add peterz-queue https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git git fetch --no-tags peterz-queue core/softirq git checkout bb1de969c6773e2882e3c156c4cf0f8410e563e5 # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=mips SHELL=/bin/bash kernel/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All errors (new ones prefixed by >>): In file included from kernel/rcu/tree.c:4788: >> kernel/rcu/tree_nocb.h:849:18: error: too few arguments to function call, expected 2, have 1 rcu_do_batch(rdp); ~~~~~~~~~~~~ ^ kernel/rcu/tree.c:2184:13: note: 'rcu_do_batch' declared here static void rcu_do_batch(struct softirq_action *h, struct rcu_data *rdp) ^ 1 error generated. vim +849 kernel/rcu/tree_nocb.h dfcb27540213e80 Frederic Weisbecker 2021-05-19 812 dfcb27540213e80 Frederic Weisbecker 2021-05-19 813 /* dfcb27540213e80 Frederic Weisbecker 2021-05-19 814 * Invoke any ready callbacks from the corresponding no-CBs CPU, dfcb27540213e80 Frederic Weisbecker 2021-05-19 815 * then, if there are no more, wait for more to appear. dfcb27540213e80 Frederic Weisbecker 2021-05-19 816 */ dfcb27540213e80 Frederic Weisbecker 2021-05-19 817 static void nocb_cb_wait(struct rcu_data *rdp) dfcb27540213e80 Frederic Weisbecker 2021-05-19 818 { dfcb27540213e80 Frederic Weisbecker 2021-05-19 819 struct rcu_segcblist *cblist = &rdp->cblist; dfcb27540213e80 Frederic Weisbecker 2021-05-19 820 unsigned long cur_gp_seq; dfcb27540213e80 Frederic Weisbecker 2021-05-19 821 unsigned long flags; dfcb27540213e80 Frederic Weisbecker 2021-05-19 822 bool needwake_state = false; dfcb27540213e80 Frederic Weisbecker 2021-05-19 823 bool needwake_gp = false; dfcb27540213e80 Frederic Weisbecker 2021-05-19 824 bool can_sleep = true; dfcb27540213e80 Frederic Weisbecker 2021-05-19 825 struct rcu_node *rnp = rdp->mynode; dfcb27540213e80 Frederic Weisbecker 2021-05-19 826 8d9703964697340 Frederic Weisbecker 2021-11-23 827 do { 8d9703964697340 Frederic Weisbecker 2021-11-23 828 swait_event_interruptible_exclusive(rdp->nocb_cb_wq, 8d9703964697340 Frederic Weisbecker 2021-11-23 829 nocb_cb_wait_cond(rdp)); 8d9703964697340 Frederic Weisbecker 2021-11-23 830 8d9703964697340 Frederic Weisbecker 2021-11-23 831 // VVV Ensure CB invocation follows _sleep test. 8d9703964697340 Frederic Weisbecker 2021-11-23 832 if (smp_load_acquire(&rdp->nocb_cb_sleep)) { // ^^^ 8d9703964697340 Frederic Weisbecker 2021-11-23 833 WARN_ON(signal_pending(current)); 8d9703964697340 Frederic Weisbecker 2021-11-23 834 trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("WokeEmpty")); 8d9703964697340 Frederic Weisbecker 2021-11-23 835 } 8d9703964697340 Frederic Weisbecker 2021-11-23 836 } while (!nocb_cb_can_run(rdp)); 8d9703964697340 Frederic Weisbecker 2021-11-23 837 8d9703964697340 Frederic Weisbecker 2021-11-23 838 dfcb27540213e80 Frederic Weisbecker 2021-05-19 839 local_irq_save(flags); dfcb27540213e80 Frederic Weisbecker 2021-05-19 840 rcu_momentary_dyntick_idle(); dfcb27540213e80 Frederic Weisbecker 2021-05-19 841 local_irq_restore(flags); dfcb27540213e80 Frederic Weisbecker 2021-05-19 842 /* dfcb27540213e80 Frederic Weisbecker 2021-05-19 843 * Disable BH to provide the expected environment. Also, when dfcb27540213e80 Frederic Weisbecker 2021-05-19 844 * transitioning to/from NOCB mode, a self-requeuing callback might dfcb27540213e80 Frederic Weisbecker 2021-05-19 845 * be invoked from softirq. A short grace period could cause both dfcb27540213e80 Frederic Weisbecker 2021-05-19 846 * instances of this callback would execute concurrently. dfcb27540213e80 Frederic Weisbecker 2021-05-19 847 */ dfcb27540213e80 Frederic Weisbecker 2021-05-19 848 local_bh_disable(); dfcb27540213e80 Frederic Weisbecker 2021-05-19 @849 rcu_do_batch(rdp); dfcb27540213e80 Frederic Weisbecker 2021-05-19 850 local_bh_enable(); dfcb27540213e80 Frederic Weisbecker 2021-05-19 851 lockdep_assert_irqs_enabled(); dfcb27540213e80 Frederic Weisbecker 2021-05-19 852 rcu_nocb_lock_irqsave(rdp, flags); dfcb27540213e80 Frederic Weisbecker 2021-05-19 853 if (rcu_segcblist_nextgp(cblist, &cur_gp_seq) && dfcb27540213e80 Frederic Weisbecker 2021-05-19 854 rcu_seq_done(&rnp->gp_seq, cur_gp_seq) && dfcb27540213e80 Frederic Weisbecker 2021-05-19 855 raw_spin_trylock_rcu_node(rnp)) { /* irqs already disabled. */ dfcb27540213e80 Frederic Weisbecker 2021-05-19 856 needwake_gp = rcu_advance_cbs(rdp->mynode, rdp); dfcb27540213e80 Frederic Weisbecker 2021-05-19 857 raw_spin_unlock_rcu_node(rnp); /* irqs remain disabled. */ dfcb27540213e80 Frederic Weisbecker 2021-05-19 858 } dfcb27540213e80 Frederic Weisbecker 2021-05-19 859 dfcb27540213e80 Frederic Weisbecker 2021-05-19 860 if (rcu_segcblist_test_flags(cblist, SEGCBLIST_OFFLOADED)) { dfcb27540213e80 Frederic Weisbecker 2021-05-19 861 if (!rcu_segcblist_test_flags(cblist, SEGCBLIST_KTHREAD_CB)) { dfcb27540213e80 Frederic Weisbecker 2021-05-19 862 rcu_segcblist_set_flags(cblist, SEGCBLIST_KTHREAD_CB); dfcb27540213e80 Frederic Weisbecker 2021-05-19 863 if (rcu_segcblist_test_flags(cblist, SEGCBLIST_KTHREAD_GP)) dfcb27540213e80 Frederic Weisbecker 2021-05-19 864 needwake_state = true; dfcb27540213e80 Frederic Weisbecker 2021-05-19 865 } dfcb27540213e80 Frederic Weisbecker 2021-05-19 866 if (rcu_segcblist_ready_cbs(cblist)) dfcb27540213e80 Frederic Weisbecker 2021-05-19 867 can_sleep = false; dfcb27540213e80 Frederic Weisbecker 2021-05-19 868 } else { dfcb27540213e80 Frederic Weisbecker 2021-05-19 869 /* dfcb27540213e80 Frederic Weisbecker 2021-05-19 870 * De-offloading. Clear our flag and notify the de-offload worker. dfcb27540213e80 Frederic Weisbecker 2021-05-19 871 * We won't touch the callbacks and keep sleeping until we ever dfcb27540213e80 Frederic Weisbecker 2021-05-19 872 * get re-offloaded. dfcb27540213e80 Frederic Weisbecker 2021-05-19 873 */ dfcb27540213e80 Frederic Weisbecker 2021-05-19 874 WARN_ON_ONCE(!rcu_segcblist_test_flags(cblist, SEGCBLIST_KTHREAD_CB)); dfcb27540213e80 Frederic Weisbecker 2021-05-19 875 rcu_segcblist_clear_flags(cblist, SEGCBLIST_KTHREAD_CB); dfcb27540213e80 Frederic Weisbecker 2021-05-19 876 if (!rcu_segcblist_test_flags(cblist, SEGCBLIST_KTHREAD_GP)) dfcb27540213e80 Frederic Weisbecker 2021-05-19 877 needwake_state = true; dfcb27540213e80 Frederic Weisbecker 2021-05-19 878 } dfcb27540213e80 Frederic Weisbecker 2021-05-19 879 dfcb27540213e80 Frederic Weisbecker 2021-05-19 880 WRITE_ONCE(rdp->nocb_cb_sleep, can_sleep); dfcb27540213e80 Frederic Weisbecker 2021-05-19 881 dfcb27540213e80 Frederic Weisbecker 2021-05-19 882 if (rdp->nocb_cb_sleep) dfcb27540213e80 Frederic Weisbecker 2021-05-19 883 trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("CBSleep")); dfcb27540213e80 Frederic Weisbecker 2021-05-19 884 dfcb27540213e80 Frederic Weisbecker 2021-05-19 885 rcu_nocb_unlock_irqrestore(rdp, flags); dfcb27540213e80 Frederic Weisbecker 2021-05-19 886 if (needwake_gp) dfcb27540213e80 Frederic Weisbecker 2021-05-19 887 rcu_gp_kthread_wake(); dfcb27540213e80 Frederic Weisbecker 2021-05-19 888 dfcb27540213e80 Frederic Weisbecker 2021-05-19 889 if (needwake_state) dfcb27540213e80 Frederic Weisbecker 2021-05-19 890 swake_up_one(&rdp->nocb_state_wq); dfcb27540213e80 Frederic Weisbecker 2021-05-19 891 } dfcb27540213e80 Frederic Weisbecker 2021-05-19 892 :::::: The code at line 849 was first introduced by commit :::::: dfcb27540213e8061ecffacd4bd8ed54a310a7b0 rcu/nocb: Start moving nocb code to its own plugin file :::::: TO: Frederic Weisbecker :::::: CC: Paul E. McKenney -- 0-DAY CI Kernel Test Service https://01.org/lkp