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

rcu: Remove CPU-hotplug failsafe from force-quiescent-state code path



Now that quiescent states for newly offlined CPUs are reported either
when that CPU goes offline or at the end of grace-period initialization,
the CPU-hotplug failsafe in the force-quiescent-state code path is no
longer needed.

This commit therefore removes this failsafe.

Signed-off-by: default avatarPaul E. McKenney <paulmck@linux.vnet.ibm.com>
parent 17a8212b
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -391,11 +391,11 @@ TRACE_EVENT(rcu_quiescent_state_report,

/*
 * Tracepoint for quiescent states detected by force_quiescent_state().
 * These trace events include the type of RCU, the grace-period number that
 * was blocked by the CPU, the CPU itself, and the type of quiescent state,
 * which can be "dti" for dyntick-idle mode, "ofl" for CPU offline, "kick"
 * when kicking a CPU that has been in dyntick-idle mode for too long, or
 * "rqc" if the CPU got a quiescent state via its rcu_qs_ctr.
 * These trace events include the type of RCU, the grace-period number
 * that was blocked by the CPU, the CPU itself, and the type of quiescent
 * state, which can be "dti" for dyntick-idle mode, "kick" when kicking
 * a CPU that has been in dyntick-idle mode for too long, or "rqc" if the
 * CPU got a quiescent state via its rcu_qs_ctr.
 */
TRACE_EVENT(rcu_fqs,

+1 −8
Original line number Diff line number Diff line
@@ -1188,14 +1188,6 @@ static int rcu_implicit_dynticks_qs(struct rcu_data *rdp)
		smp_store_release(ruqp, true);
	}

	/* Check for the CPU being offline. */
	if (!(rdp->grpmask & rcu_rnp_online_cpus(rnp))) {
		trace_rcu_fqs(rdp->rsp->name, rdp->gp_seq, rdp->cpu, TPS("ofl"));
		rdp->offline_fqs++;
		rcu_gpnum_ovf(rnp, rdp);
		return 1;
	}

	/*
	 * A CPU running for an extended time within the kernel can
	 * delay RCU grace periods.  When the CPU is in NO_HZ_FULL mode,
@@ -3718,6 +3710,7 @@ void rcu_cpu_starting(unsigned int cpu)
		nbits = bitmap_weight(&oldmask, BITS_PER_LONG);
		/* Allow lockless access for expedited grace periods. */
		smp_store_release(&rsp->ncpus, rsp->ncpus + nbits); /* ^^^ */
		rcu_gpnum_ovf(rnp, rdp); /* Offline-induced counter wrap? */
		if (rnp->qsmask & mask) { /* RCU waiting on incoming CPU? */
			/* Report QS -after- changing ->qsmaskinitnext! */
			rcu_report_qs_rnp(mask, rsp, rnp, rnp->gp_seq, flags);
+0 −1
Original line number Diff line number Diff line
@@ -217,7 +217,6 @@ struct rcu_data {

	/* 4) reasons this CPU needed to be kicked by force_quiescent_state */
	unsigned long dynticks_fqs;	/* Kicked due to dynticks idle. */
	unsigned long offline_fqs;	/* Kicked due to being offline. */
	unsigned long cond_resched_completed;
					/* Grace period that needs help */
					/*  from cond_resched(). */