Messages in this thread | | | Date | Sat, 14 Jun 2014 15:05:50 +0200 | From | Frederic Weisbecker <> | Subject | Re: [PATCH] rcu: Only pin GP kthread when full dynticks is actually used |
| |
On Fri, Jun 13, 2014 at 10:06:06PM -0700, Paul E. McKenney wrote: > One complication... So if the grace period has gone on for a long time, > and you are returning to kernel mode, RCU will need the scheduling-clock > tick. However, in that very same situation, if you are returning to > idle or to NO_HZ_FULL userspace execution, RCU does -not- need the > scheduling-clock tick set.
Right.
> One way I could do this is to have rcu_needs_cpu() return three values: > Zero for RCU doesn't need a scheduling-clock tick for any reason, > one if RCU needs a scheduling-clock tick only if returning to kernel > mode, and two if RCU unconditionally needs the scheduling-clock tick. > Would that work, or is there a better approach?
For an interrupt, based on the context tracking state, I can check where we return afterward if we are in an interrupt using context_tracking_in_user().
Now probably rcu_needs_cpu() should check that by itself and, depending on where we return, only tell if we keep the tick or not.
What do you think?
| |