Phew, the last changelog is the most careless... On Thu, Sep 30, 2021 at 05:37:37PM +0200, Sebastian Andrzej Siewior wrote: > On 2021-09-30 00:10:12 [+0200], Frederic Weisbecker wrote: > > rcu_core() tries to ensure that its self-invocation in case of callbacks > > overload only happen in softirq/rcuc mode. Indeed it doesn't make sense > > to trigger local RCU core from nocb_cb kthread since it can execute > > on a CPU different from the target rdp. Also in case of overload, the > > nocb_cb kthread simply iterates a new loop of callbacks processing. > > > > However the "offloaded" check that aims at preventing that is wrong. > - that? Rephrasing the changelog: "However the "offloaded" check that aims at preventing misplaced rcu_core() invocations is wrong." > > > First of all that state is volatile and second: softirq/rcuc can > > execute while the target rdp is offloaded. As a result rcu_core() can > > can what? "As a result rcu_core() can be invoked on the wrong CPU while in the process of (de-offloading)." Thanks! > > > Fix that with moving the rcu_core() self-invocation to rcu_core() itself, > > irrespective of the rdp offloaded state. > > Sebastian