tree:
https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git core/softirq
head: 63b8d46d609dc61be3e1fe8c46f56b7f2350f6d2
commit: 444494ab87f33eb9582dd3bc54c488b55ed601a2 [7/8] softirq,rcu: Use
softirq_needs_break()
config: x86_64-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
git checkout 444494ab87f33eb9582dd3bc54c488b55ed601a2
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
In file included from kernel/rcu/tree.c:4458:
kernel/rcu/tree_plugin.h: In function 'nocb_cb_wait':
> kernel/rcu/tree_plugin.h:2070:15: error: passing argument 1 of
'rcu_do_batch' from incompatible pointer type [-Werror=incompatible-pointer-types]
2070 | rcu_do_batch(rdp);
| ^~~
| |
| struct rcu_data *
kernel/rcu/tree.c:2371:49: note: expected 'struct softirq_action *' but
argument is of type 'struct rcu_data *'
2371 | static void rcu_do_batch(struct softirq_action *h, struct rcu_data *rdp)
| ~~~~~~~~~~~~~~~~~~~~~~~^
In file included from kernel/rcu/tree.c:4458:
> kernel/rcu/tree_plugin.h:2070:2: error: too few arguments to
function 'rcu_do_batch'
2070 | rcu_do_batch(rdp);
| ^~~~~~~~~~~~
kernel/rcu/tree.c:2371:13: note: declared here
2371 | static void rcu_do_batch(struct softirq_action *h, struct rcu_data *rdp)
| ^~~~~~~~~~~~
cc1: some warnings being treated as errors
#
https://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git/commit/?...
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 444494ab87f33eb9582dd3bc54c488b55ed601a2
vim +/rcu_do_batch +2070 kernel/rcu/tree_plugin.h
fbce7497ee5af80 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-06-24 2054
fbce7497ee5af80 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-06-24 2055 /*
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2056 * Invoke any
ready callbacks from the corresponding no-CBs CPU,
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2057 * then, if
there are no more, wait for more to appear.
fbce7497ee5af80 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-06-24 2058 */
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2059 static void
nocb_cb_wait(struct rcu_data *rdp)
fbce7497ee5af80 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-06-24 2060 {
1d5a81c18dc68fc kernel/rcu/tree_plugin.h Paul E. McKenney 2019-07-15 2061 unsigned long
cur_gp_seq;
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2062 unsigned long
flags;
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2063 bool
needwake_gp = false;
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2064 struct
rcu_node *rnp = rdp->mynode;
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2065
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2066
local_irq_save(flags);
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2067
rcu_momentary_dyntick_idle();
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2068
local_irq_restore(flags);
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2069
local_bh_disable();
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 @2070
rcu_do_batch(rdp);
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2071
local_bh_enable();
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2072
lockdep_assert_irqs_enabled();
81c0b3d724f419c kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-28 2073
rcu_nocb_lock_irqsave(rdp, flags);
1d5a81c18dc68fc kernel/rcu/tree_plugin.h Paul E. McKenney 2019-07-15 2074 if
(rcu_segcblist_nextgp(&rdp->cblist, &cur_gp_seq) &&
1d5a81c18dc68fc kernel/rcu/tree_plugin.h Paul E. McKenney 2019-07-15 2075
rcu_seq_done(&rnp->gp_seq, cur_gp_seq) &&
1d5a81c18dc68fc kernel/rcu/tree_plugin.h Paul E. McKenney 2019-07-15 2076
raw_spin_trylock_rcu_node(rnp)) { /* irqs already disabled. */
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2077 needwake_gp
= rcu_advance_cbs(rdp->mynode, rdp);
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2078
raw_spin_unlock_rcu_node(rnp); /* irqs remain disabled. */
523bddd553c09a2 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-06-01 2079 }
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2080 if
(rcu_segcblist_ready_cbs(&rdp->cblist)) {
81c0b3d724f419c kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-28 2081
rcu_nocb_unlock_irqrestore(rdp, flags);
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2082 if
(needwake_gp)
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2083
rcu_gp_kthread_wake();
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2084 return;
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2085 }
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2086
f7c9a9b664fb32a kernel/rcu/tree_plugin.h Paul E. McKenney 2019-04-01 2087
trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("CBSleep"));
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2088
WRITE_ONCE(rdp->nocb_cb_sleep, true);
81c0b3d724f419c kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-28 2089
rcu_nocb_unlock_irqrestore(rdp, flags);
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2090 if
(needwake_gp)
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2091
rcu_gp_kthread_wake();
12f54c3a8410102 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-03-29 2092
swait_event_interruptible_exclusive(rdp->nocb_cb_wq,
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2093
!READ_ONCE(rdp->nocb_cb_sleep));
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2094 if
(!smp_load_acquire(&rdp->nocb_cb_sleep)) { /* VVV */
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2095 /* ^^^
Ensure CB invocation follows _sleep test. */
5d6742b37727e11 kernel/rcu/tree_plugin.h Paul E. McKenney 2019-05-15 2096 return;
69a79bb12a81024 kernel/rcutree_plugin.h Paul E. McKenney 2013-08-15 2097 }
73a860cd58a1eb2 kernel/rcu/tree_plugin.h Paul E. McKenney 2014-08-14 2098
WARN_ON(signal_pending(current));
88d1bead858d88c kernel/rcu/tree_plugin.h Paul E. McKenney 2018-07-04 2099
trace_rcu_nocb_wake(rcu_state.name, rdp->cpu, TPS("WokeEmpty"));
3fbfbf7a3b66ec4 kernel/rcutree_plugin.h Paul E. McKenney 2012-08-19 2100 }
3fbfbf7a3b66ec4 kernel/rcutree_plugin.h Paul E. McKenney 2012-08-19 2101
:::::: The code at line 2070 was first introduced by commit
:::::: 5d6742b37727e111f4755155e59c5319cf5caa7b rcu/nocb: Use rcu_segcblist for no-CBs
CPUs
:::::: TO: Paul E. McKenney <paulmck(a)linux.ibm.com>
:::::: CC: Paul E. McKenney <paulmck(a)linux.ibm.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org