Index: linux-acpica/kernel/rcu/tree_exp.h
===================================================================
--- linux-acpica.orig/kernel/rcu/tree_exp.h
+++ linux-acpica/kernel/rcu/tree_exp.h
@@ -297,16 +297,22 @@ fastpath:
 	return false;
 }
 
-/* Invoked on each online non-idle CPU for expedited quiescent state. */
-static void sync_sched_exp_handler(void *data)
+static bool sync_sched_exp_is_required(struct rcu_state *rsp)
 {
 	struct rcu_data *rdp;
 	struct rcu_node *rnp;
-	struct rcu_state *rsp = data;
 
 	rdp = this_cpu_ptr(rsp->rda);
 	rnp = rdp->mynode;
-	if (!(READ_ONCE(rnp->expmask) & rdp->grpmask) ||
+	return !!(READ_ONCE(rnp->expmask) & rdp->grpmask);
+}
+
+/* Invoked on each online non-idle CPU for expedited quiescent state. */
+static void sync_sched_exp_handler(void *data)
+{
+	struct rcu_state *rsp = data;
+
+	if (!sync_sched_exp_is_requierd(rsp) ||
 	    __this_cpu_read(rcu_sched_data.cpu_no_qs.b.exp))
 		return;
 	if (rcu_is_cpu_rrupt_from_idle()) {
@@ -610,6 +616,8 @@ void synchronize_sched_expedited(void)
 	/* If only one CPU, this is automatically a grace period. */
 	if (rcu_blocking_is_gp())
 		return;
+	if (!sync_sched_exp_is_required(rsp))
+		return;
 
 	_synchronize_rcu_expedited(rsp, sync_sched_exp_handler);
 }
