diff options
| -rw-r--r-- | kernel/rcu/tree.c | 2 | ||||
| -rw-r--r-- | kernel/rcu/tree.h | 12 |
2 files changed, 10 insertions, 4 deletions
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c index a2503ef1bbe2..ee218d743226 100644 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c | |||
| @@ -1891,6 +1891,7 @@ static bool rcu_gp_init(struct rcu_state *rsp) | |||
| 1891 | * for subsequent online CPUs, and that quiescent-state forcing | 1891 | * for subsequent online CPUs, and that quiescent-state forcing |
| 1892 | * will handle subsequent offline CPUs. | 1892 | * will handle subsequent offline CPUs. |
| 1893 | */ | 1893 | */ |
| 1894 | rsp->gp_state = RCU_GP_ONOFF; | ||
| 1894 | rcu_for_each_leaf_node(rsp, rnp) { | 1895 | rcu_for_each_leaf_node(rsp, rnp) { |
| 1895 | spin_lock(&rsp->ofl_lock); | 1896 | spin_lock(&rsp->ofl_lock); |
| 1896 | raw_spin_lock_irq_rcu_node(rnp); | 1897 | raw_spin_lock_irq_rcu_node(rnp); |
| @@ -1950,6 +1951,7 @@ static bool rcu_gp_init(struct rcu_state *rsp) | |||
| 1950 | * The grace period cannot complete until the initialization | 1951 | * The grace period cannot complete until the initialization |
| 1951 | * process finishes, because this kthread handles both. | 1952 | * process finishes, because this kthread handles both. |
| 1952 | */ | 1953 | */ |
| 1954 | rsp->gp_state = RCU_GP_INIT; | ||
| 1953 | rcu_for_each_node_breadth_first(rsp, rnp) { | 1955 | rcu_for_each_node_breadth_first(rsp, rnp) { |
| 1954 | rcu_gp_slow(rsp, gp_init_delay); | 1956 | rcu_gp_slow(rsp, gp_init_delay); |
| 1955 | raw_spin_lock_irqsave_rcu_node(rnp, flags); | 1957 | raw_spin_lock_irqsave_rcu_node(rnp, flags); |
diff --git a/kernel/rcu/tree.h b/kernel/rcu/tree.h index f52bc059bfec..8077aff7ab40 100644 --- a/kernel/rcu/tree.h +++ b/kernel/rcu/tree.h | |||
| @@ -380,16 +380,20 @@ struct rcu_state { | |||
| 380 | #define RCU_GP_IDLE 0 /* Initial state and no GP in progress. */ | 380 | #define RCU_GP_IDLE 0 /* Initial state and no GP in progress. */ |
| 381 | #define RCU_GP_WAIT_GPS 1 /* Wait for grace-period start. */ | 381 | #define RCU_GP_WAIT_GPS 1 /* Wait for grace-period start. */ |
| 382 | #define RCU_GP_DONE_GPS 2 /* Wait done for grace-period start. */ | 382 | #define RCU_GP_DONE_GPS 2 /* Wait done for grace-period start. */ |
| 383 | #define RCU_GP_WAIT_FQS 3 /* Wait for force-quiescent-state time. */ | 383 | #define RCU_GP_ONOFF 3 /* Grace-period initialization hotplug. */ |
| 384 | #define RCU_GP_DOING_FQS 4 /* Wait done for force-quiescent-state time. */ | 384 | #define RCU_GP_INIT 4 /* Grace-period initialization. */ |
| 385 | #define RCU_GP_CLEANUP 5 /* Grace-period cleanup started. */ | 385 | #define RCU_GP_WAIT_FQS 5 /* Wait for force-quiescent-state time. */ |
| 386 | #define RCU_GP_CLEANED 6 /* Grace-period cleanup complete. */ | 386 | #define RCU_GP_DOING_FQS 6 /* Wait done for force-quiescent-state time. */ |
| 387 | #define RCU_GP_CLEANUP 7 /* Grace-period cleanup started. */ | ||
| 388 | #define RCU_GP_CLEANED 8 /* Grace-period cleanup complete. */ | ||
| 387 | 389 | ||
| 388 | #ifndef RCU_TREE_NONCORE | 390 | #ifndef RCU_TREE_NONCORE |
| 389 | static const char * const gp_state_names[] = { | 391 | static const char * const gp_state_names[] = { |
| 390 | "RCU_GP_IDLE", | 392 | "RCU_GP_IDLE", |
| 391 | "RCU_GP_WAIT_GPS", | 393 | "RCU_GP_WAIT_GPS", |
| 392 | "RCU_GP_DONE_GPS", | 394 | "RCU_GP_DONE_GPS", |
| 395 | "RCU_GP_ONOFF", | ||
| 396 | "RCU_GP_INIT", | ||
| 393 | "RCU_GP_WAIT_FQS", | 397 | "RCU_GP_WAIT_FQS", |
| 394 | "RCU_GP_DOING_FQS", | 398 | "RCU_GP_DOING_FQS", |
| 395 | "RCU_GP_CLEANUP", | 399 | "RCU_GP_CLEANUP", |
