|
@@ -1459,8 +1459,12 @@ static void rcu_gp_cleanup(struct rcu_state *rsp)
|
|
|
rsp->fqs_state = RCU_GP_IDLE;
|
|
|
rdp = this_cpu_ptr(rsp->rda);
|
|
|
rcu_advance_cbs(rsp, rnp, rdp); /* Reduce false positives below. */
|
|
|
- if (cpu_needs_another_gp(rsp, rdp))
|
|
|
+ if (cpu_needs_another_gp(rsp, rdp)) {
|
|
|
rsp->gp_flags = 1;
|
|
|
+ trace_rcu_grace_period(rsp->name,
|
|
|
+ ACCESS_ONCE(rsp->gpnum),
|
|
|
+ TPS("newreq"));
|
|
|
+ }
|
|
|
raw_spin_unlock_irq(&rnp->lock);
|
|
|
}
|
|
|
|
|
@@ -1584,6 +1588,8 @@ rcu_start_gp_advanced(struct rcu_state *rsp, struct rcu_node *rnp,
|
|
|
return;
|
|
|
}
|
|
|
rsp->gp_flags = RCU_GP_FLAG_INIT;
|
|
|
+ trace_rcu_grace_period(rsp->name, ACCESS_ONCE(rsp->gpnum),
|
|
|
+ TPS("newreq"));
|
|
|
|
|
|
/*
|
|
|
* We can't do wakeups while holding the rnp->lock, as that
|