Paul E. McKenney
395d775980
rcu: Make rcu_barrier() account for offline no-CBs CPUs
...
commit 127e29815b upstream.
Currently, rcu_barrier() ignores offline CPUs, However, it is possible
for an offline no-CBs CPU to have callbacks queued, and rcu_barrier()
must wait for those callbacks. This commit therefore makes rcu_barrier()
directly invoke the rcu_barrier_func() with interrupts disabled for such
CPUs. This requires passing the CPU number into this function so that
it can entrain the rcu_barrier() callback onto the correct CPU's callback
list, given that the code must instead execute on the current CPU.
While in the area, this commit fixes a bug where the first CPU's callback
might have been invoked before rcu_segcblist_entrain() returned, which
would also result in an early wakeup.
Fixes: 5d6742b377 ("rcu/nocb: Use rcu_segcblist for no-CBs CPUs")
Signed-off-by: Paul E. McKenney <paulmck@kernel.org >
[ paulmck: Apply optimization feedback from Boqun Feng. ]
Cc: <stable@vger.kernel.org > # 5.5.x
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
2020-04-17 16:12:03 +02:00
..
2017-11-02 11:10:55 +01:00
2020-04-01 11:00:15 +02:00
2017-11-02 11:10:55 +01:00
2018-04-16 11:53:35 +01:00
2018-12-13 08:15:54 -07:00
2017-11-02 11:10:55 +01:00
2019-04-26 19:04:19 -07:00
2019-11-01 10:32:43 -07:00
2019-11-18 17:51:51 +01:00
2019-05-24 17:27:11 +02:00
2019-11-12 08:18:04 -08:00
2019-06-05 17:36:37 +02:00
2017-11-02 11:10:55 +01:00
2019-05-14 09:47:46 -07:00
2017-11-02 11:10:55 +01:00
2019-04-09 14:19:06 +02:00
2019-04-16 09:29:18 +09:00
2019-03-04 11:00:43 -08:00
2019-07-30 21:49:06 -04:00
2019-09-05 20:10:07 +02:00
2019-11-05 16:00:49 -05:00
2019-07-12 17:28:24 -07:00
2019-04-17 23:11:30 -07:00
2019-04-08 15:22:40 -07:00
2019-07-22 06:54:41 -04:00
2017-11-02 11:10:55 +01:00
2017-11-17 09:51:57 -08:00
2019-05-24 17:27:11 +02:00
2019-11-08 11:28:20 +01:00
2018-07-23 15:22:52 +10:00
2018-07-12 12:02:31 +10:00
2019-11-08 11:23:37 +01:00
2019-04-08 15:11:48 +02:00
2019-05-21 11:28:39 +02:00
2017-11-02 11:10:55 +01:00
2020-01-13 18:19:02 -08:00
2018-10-11 20:07:35 -07:00
2019-05-24 17:27:11 +02:00
2019-03-27 15:52:01 -03:00
2019-03-27 15:52:01 -03:00
2018-04-26 15:02:46 -04:00
2019-09-11 12:34:30 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-11-25 19:56:10 -07:00
2019-08-29 09:43:34 -06:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-09-25 20:38:26 +02:00
2017-11-02 11:10:55 +01:00
2018-12-20 20:03:55 -05:00
2019-11-05 16:00:49 -05:00
2019-12-01 06:29:18 -08:00
2017-12-18 12:57:01 +01:00
2018-11-12 08:28:37 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-10-02 11:31:14 +02:00
2019-03-31 11:01:23 -07:00
2018-03-15 11:15:22 +01:00
2018-10-26 16:26:32 -07:00
2017-11-02 11:10:55 +01:00
2019-07-30 21:49:06 -04:00
2019-04-26 19:04:19 -07:00
2019-05-22 17:50:24 -07:00
2018-01-02 14:27:30 -05:00
2019-05-04 00:41:41 -04:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2018-11-15 14:43:43 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-11-20 11:47:36 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-08-21 00:38:54 +02:00
2020-01-03 11:34:37 -05:00
2017-11-02 11:10:55 +01:00
2019-01-16 11:15:11 -05:00
2019-07-30 21:49:06 -04:00
2019-04-17 10:30:21 -04:00
2020-04-17 16:12:03 +02:00
2018-01-23 09:44:14 -05:00
2017-11-02 11:10:55 +01:00
2019-10-30 16:32:07 -04:00
2019-12-07 16:56:00 -08:00
2017-11-02 11:10:55 +01:00
2018-06-06 11:58:31 +02:00
2018-02-13 21:30:22 +01:00
2019-10-07 11:05:05 +01:00
2019-06-24 19:23:42 +02:00
2017-11-02 11:10:55 +01:00
2018-01-02 14:27:29 -05:00
2018-10-03 16:47:43 +02:00
2017-12-19 10:56:24 +01:00
2017-11-02 11:10:55 +01:00
2019-05-24 17:27:11 +02:00
2019-10-13 10:13:08 -07:00
2019-05-02 10:37:52 +09:00
2017-11-02 11:10:55 +01:00
2019-12-07 16:56:00 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-04-05 09:26:43 -04:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-11-09 19:41:50 -08:00
2019-07-30 21:49:06 -04:00
2017-11-02 11:10:55 +01:00
2017-12-07 22:52:01 +01:00
2017-11-02 11:10:55 +01:00
2019-12-01 14:00:59 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-06-05 17:36:37 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-05-14 09:47:51 -07:00
2017-11-02 11:10:55 +01:00
2019-10-07 08:31:59 -06:00
2019-04-09 14:19:06 +02:00
2020-02-11 04:36:43 -08:00
2019-11-16 12:39:10 -08:00
2020-01-14 15:55:57 -05:00