Paul E. McKenney
afe24b122e
rcu: Move propagation of ->completed from rcu_start_gp() to rcu_report_qs_rsp()
...
It is possible for the CPU that noted the end of the prior grace period
to not need a new one, and therefore to decide to propagate ->completed
throughout the rcu_node tree without starting another grace period.
However, in so doing, it releases the root rcu_node structure's lock,
which can allow some other CPU to start another grace period. The first
CPU will be propagating ->completed in parallel with the second CPU
initializing the rcu_node tree for the new grace period. In theory
this is harmless, but in practice we need to keep things simple.
This commit therefore moves the propagation of ->completed to
rcu_report_qs_rsp(), and refrains from marking the old grace period
as having been completed until it has finished doing this. This
prevents anyone from starting a new grace period concurrently with
marking the old grace period as having been completed.
Of course, the optimization where a CPU needing a new grace period
doesn't bother marking the old one completed is still in effect:
In that case, the marking happens implicitly as part of initializing
the new grace period.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com >
2011-09-28 21:38:49 -07:00
..
2011-08-01 13:39:40 -10:00
2011-08-31 15:56:29 +02:00
2011-07-26 16:49:45 -07:00
2011-09-12 09:38:53 +02:00
2011-08-14 13:34:31 +02:00
2011-09-28 21:38:29 -07:00
2011-08-19 10:47:07 -07:00
2010-08-09 16:48:42 -04:00
2011-06-14 22:48:46 -04:00
2011-07-20 14:10:11 -07:00
2011-03-14 09:15:23 -04:00
2011-07-26 16:49:47 -07:00
2010-10-30 01:42:19 -04:00
2011-03-03 10:55:40 -08:00
2011-07-26 16:49:47 -07:00
2011-03-23 19:46:28 -07:00
2011-05-19 18:51:57 +10:00
2011-05-26 17:12:34 -07:00
2011-07-27 19:26:38 -07:00
2011-07-30 00:08:53 -07:00
2011-07-25 20:57:15 -07:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:47 -07:00
2011-03-23 19:47:19 -07:00
2011-08-11 11:24:42 -07:00
2011-07-14 12:59:14 +03:00
2008-10-16 11:21:30 -07:00
2010-03-06 11:26:46 -08:00
2010-08-09 20:45:05 -07:00
2011-07-26 16:49:44 -07:00
2011-05-20 08:56:56 +02:00
2011-08-11 11:24:42 -07:00
2011-05-17 23:19:17 +02:00
2011-03-23 19:47:08 -07:00
2011-08-04 09:09:27 +02:00
2011-03-23 19:47:08 -07:00
2011-05-25 15:31:58 -07:00
2011-04-28 09:13:17 +02:00
2010-12-18 15:54:48 +01:00
2009-11-18 16:32:12 +01:00
2011-06-29 09:59:17 -04:00
2011-03-25 17:52:22 -07:00
2008-10-20 08:52:34 -07:00
2008-07-28 14:37:38 +02:00
2011-04-10 17:01:05 +02:00
2011-06-10 15:15:40 +02:00
2011-06-10 14:55:36 +02:00
2010-10-01 10:50:58 -07:00
2011-08-03 22:03:29 -10:00
2011-07-15 15:11:47 -04:00
2011-04-19 16:45:51 -07:00
2011-05-28 17:02:57 +02:00
2011-03-31 11:26:23 -03:00
2010-05-04 05:38:16 +02:00
2011-03-23 13:54:47 +01:00
2009-02-14 23:27:59 +01:00
2011-09-28 21:36:37 -07:00
2011-08-05 23:57:33 +02:00
2011-07-24 22:06:04 +09:30
2011-04-14 08:52:33 +02:00
2011-04-14 08:52:33 +02:00
2011-05-25 08:39:17 -07:00
2011-04-14 08:52:33 +02:00
2011-07-25 20:57:14 -07:00
2011-07-20 01:44:07 -04:00
2011-03-31 11:26:23 -03:00
2011-07-26 16:49:45 -07:00
2011-07-24 22:06:04 +09:30
2011-03-23 19:46:58 -07:00
2011-09-28 21:36:37 -07:00
2011-07-08 14:02:53 +02:00
2011-05-23 13:59:54 +02:00
2011-05-24 12:10:51 +02:00
2011-08-25 16:25:34 -07:00
2011-05-26 17:12:37 -07:00
2011-09-25 11:02:00 -07:00
2010-11-12 07:55:31 -08:00
2011-09-28 21:38:21 -07:00
2011-09-28 21:38:12 -07:00
2011-09-28 21:38:20 -07:00
2011-09-28 21:38:21 -07:00
2011-09-28 21:38:46 -07:00
2011-09-28 21:38:48 -07:00
2011-09-28 21:38:22 -07:00
2011-09-28 21:38:49 -07:00
2011-09-28 21:38:48 -07:00
2010-11-05 08:21:34 -07:00
2011-03-23 19:46:22 -07:00
2011-07-30 21:21:39 +02:00
2011-01-27 21:13:51 -05:00
2011-01-27 21:13:51 -05:00
2011-02-22 22:07:22 +01:00
2011-09-28 21:38:43 -07:00
2011-07-26 16:49:47 -07:00
2011-03-31 11:26:23 -03:00
2011-07-01 10:39:08 +02:00
2010-11-23 10:29:08 +01:00
2010-07-17 12:06:22 +02:00
2010-07-17 12:06:22 +02:00
2011-04-24 13:18:38 +02:00
2011-07-22 12:47:22 +02:00
2011-07-24 09:07:03 -07:00
2011-04-14 08:52:36 +02:00
2011-07-01 10:39:08 +02:00
2011-05-28 17:02:54 +02:00
2011-04-14 08:52:36 +02:00
2011-09-28 21:38:29 -07:00
2009-03-02 15:41:30 -08:00
2008-08-05 14:33:47 -07:00
2011-07-27 12:53:36 -07:00
2011-06-17 10:17:12 +02:00
2011-07-20 10:50:12 -07:00
2009-12-14 23:55:33 +01:00
2011-01-14 04:56:49 -08:00
2011-06-14 22:48:52 -04:00
2011-07-26 16:49:47 -07:00
2011-08-26 15:09:58 -07:00
2011-08-25 10:17:28 -07:00
2011-08-12 16:21:35 -05:00
2011-08-12 16:21:35 -05:00
2011-07-20 14:10:18 -07:00
2011-09-19 17:04:37 -07:00
2010-10-14 08:55:27 +02:00
2011-03-15 18:53:35 -07:00
2011-06-03 15:02:32 +02:00
2011-04-04 12:48:08 -04:00
2011-09-19 17:10:57 -07:00
2011-03-23 19:47:08 -07:00
2009-01-12 16:04:37 +01:00
2011-01-13 08:03:18 -08:00
2011-03-31 11:26:23 -03:00
2011-03-23 19:46:59 -07:00
2009-11-12 02:04:55 -08:00
2011-05-10 14:35:35 -07:00
2011-03-31 11:26:23 -03:00
2011-07-14 17:25:04 -04:00
2010-06-29 10:07:14 +02:00
2011-09-14 18:09:38 -07:00