On Mon, Jun 22, 2020 at 01:30:31AM +0530, Neeraj Upadhyay wrote: > Hi Paul, > > On 6/22/2020 1:20 AM, Paul E. McKenney wrote: > > On Mon, Jun 22, 2020 at 12:07:27AM +0530, Neeraj Upadhyay wrote: > > > On callback overload, we want to force quiescent state immediately, > > > for the first and second fqs. Enforce the same, by including > > > RCU_GP_FLAG_OVLD flag, in fqsstart check. > > > > > > Signed-off-by: Neeraj Upadhyay <neer...@codeaurora.org> > > > > Good catch! > > > > But what did you do to verify that this change does the right thing? > > > > Thanx, Paul > > > > I haven't done a runtime verification of this code path; I posted this, > based on review of this code.
My concern is that under overload, the FQS scans would happen continuously rather than accelerating only the first such scan in a given grace period. This would of course result in a CPU-bound grace-period kthread, which users might not be all that happy with. Or am I missing something subtle that prevents this? But yes, it does look like the current mainline code fails to do the first scan immediately, so again, good catch! Thanx, Paul > Thanks > Neeraj > > > > --- > > > kernel/rcu/tree.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c > > > index d0988a1..6226bfb 100644 > > > --- a/kernel/rcu/tree.c > > > +++ b/kernel/rcu/tree.c > > > @@ -1865,7 +1865,7 @@ static void rcu_gp_fqs_loop(void) > > > break; > > > /* If time for quiescent-state forcing, do it. */ > > > if (!time_after(rcu_state.jiffies_force_qs, jiffies) || > > > - (gf & RCU_GP_FLAG_FQS)) { > > > + (gf & (RCU_GP_FLAG_FQS | RCU_GP_FLAG_OVLD))) { > > > trace_rcu_grace_period(rcu_state.name, > > > rcu_state.gp_seq, > > > TPS("fqsstart")); > > > rcu_gp_fqs(first_gp_fqs); > > > -- > > > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > > > a Linux Foundation Collaborative Project > > > > > -- > QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of > the Code Aurora Forum, hosted by The Linux Foundation