mirror of
https://github.com/torvalds/linux.git
synced 2024-10-24 06:01:01 +00:00
rcu: Remove ->rgos_polled field from rcu_gp_oldstate structure
Because both normal and expedited grace periods increment their respective counters on their pre-scheduler early boot fastpaths, the rcu_gp_oldstate structure no longer needs its ->rgos_polled field. This commit therefore removes this field, shrinking this structure so that it is the same size as an rcu_head structure. Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
parent
43ff97cc99
commit
7ecef0871d
|
@ -44,7 +44,6 @@ bool rcu_gp_might_be_stalled(void);
|
||||||
struct rcu_gp_oldstate {
|
struct rcu_gp_oldstate {
|
||||||
unsigned long rgos_norm;
|
unsigned long rgos_norm;
|
||||||
unsigned long rgos_exp;
|
unsigned long rgos_exp;
|
||||||
unsigned long rgos_polled;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned long start_poll_synchronize_rcu_expedited(void);
|
unsigned long start_poll_synchronize_rcu_expedited(void);
|
||||||
|
|
|
@ -3526,7 +3526,6 @@ void get_completed_synchronize_rcu_full(struct rcu_gp_oldstate *rgosp)
|
||||||
{
|
{
|
||||||
rgosp->rgos_norm = RCU_GET_STATE_COMPLETED;
|
rgosp->rgos_norm = RCU_GET_STATE_COMPLETED;
|
||||||
rgosp->rgos_exp = RCU_GET_STATE_COMPLETED;
|
rgosp->rgos_exp = RCU_GET_STATE_COMPLETED;
|
||||||
rgosp->rgos_polled = RCU_GET_STATE_COMPLETED;
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(get_completed_synchronize_rcu_full);
|
EXPORT_SYMBOL_GPL(get_completed_synchronize_rcu_full);
|
||||||
|
|
||||||
|
@ -3575,7 +3574,6 @@ void get_state_synchronize_rcu_full(struct rcu_gp_oldstate *rgosp)
|
||||||
smp_mb(); /* ^^^ */
|
smp_mb(); /* ^^^ */
|
||||||
rgosp->rgos_norm = rcu_seq_snap(&rnp->gp_seq);
|
rgosp->rgos_norm = rcu_seq_snap(&rnp->gp_seq);
|
||||||
rgosp->rgos_exp = rcu_seq_snap(&rcu_state.expedited_sequence);
|
rgosp->rgos_exp = rcu_seq_snap(&rcu_state.expedited_sequence);
|
||||||
rgosp->rgos_polled = rcu_seq_snap(&rcu_state.gp_seq_polled);
|
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(get_state_synchronize_rcu_full);
|
EXPORT_SYMBOL_GPL(get_state_synchronize_rcu_full);
|
||||||
|
|
||||||
|
@ -3727,9 +3725,7 @@ bool poll_state_synchronize_rcu_full(struct rcu_gp_oldstate *rgosp)
|
||||||
if (rgosp->rgos_norm == RCU_GET_STATE_COMPLETED ||
|
if (rgosp->rgos_norm == RCU_GET_STATE_COMPLETED ||
|
||||||
rcu_seq_done_exact(&rnp->gp_seq, rgosp->rgos_norm) ||
|
rcu_seq_done_exact(&rnp->gp_seq, rgosp->rgos_norm) ||
|
||||||
rgosp->rgos_exp == RCU_GET_STATE_COMPLETED ||
|
rgosp->rgos_exp == RCU_GET_STATE_COMPLETED ||
|
||||||
rcu_seq_done_exact(&rcu_state.expedited_sequence, rgosp->rgos_exp) ||
|
rcu_seq_done_exact(&rcu_state.expedited_sequence, rgosp->rgos_exp)) {
|
||||||
rgosp->rgos_polled == RCU_GET_STATE_COMPLETED ||
|
|
||||||
rcu_seq_done_exact(&rcu_state.gp_seq_polled, rgosp->rgos_polled)) {
|
|
||||||
smp_mb(); /* Ensure GP ends before subsequent accesses. */
|
smp_mb(); /* Ensure GP ends before subsequent accesses. */
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user