Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28728dd3 authored by Paul E. McKenney's avatar Paul E. McKenney
Browse files

rcu: Make expedited RCU-sched grace period immediately detect idle



Currently, sync_sched_exp_handler() will force a reschedule unless
this CPU has already checked in or unless a reschedule has already
been called for.  This is clearly wasteful if sync_sched_exp_handler()
interrupted an idle CPU, so this commit immediately reports the
quiescent state in that case.

Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent 274529ba
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -3649,6 +3649,11 @@ static void sync_sched_exp_handler(void *data)
	if (!(READ_ONCE(rnp->expmask) & rdp->grpmask) ||
	    __this_cpu_read(rcu_sched_data.cpu_no_qs.b.exp))
		return;
	if (rcu_is_cpu_rrupt_from_idle()) {
		rcu_report_exp_rdp(&rcu_sched_state,
				   this_cpu_ptr(&rcu_sched_data), true);
		return;
	}
	__this_cpu_write(rcu_sched_data.cpu_no_qs.b.exp, true);
	resched_cpu(smp_processor_id());
}