/* This does the RCU processing work from softirq context for the specified rcu_state and rcu_data structures. This may be called only from the CPU to whom the rdp belongs.  */
static void __rcu_process_callbacks(struct rcu_state *rsp, struct rcu_data *rdp)
/* This does the RCU processing work from softirq context for the specified rcu_state and rcu_data structures. This may be called only from the CPU to whom the rdp belongs.  */
static void __rcu_process_callbacks(struct rcu_state *rsp, struct rcu_data *rdp)
{
	unsigned long flags;
	WARN_ON_ONCE(rdp->beenonline == 0);
	if ((long)(ACCESS_ONCE(rsp->jiffies_force_qs) - jiffies) < 0)
		force_quiescent_state(rsp, 1);
	rcu_process_gp_end(rsp, rdp);
	rcu_check_quiescent_state(rsp, rdp);
	if (cpu_needs_another_gp(rsp, rdp)) {
		spin_lock_irqsave(&rcu_get_root(rsp)->lock, flags);
		rcu_start_gp(rsp, flags);
	}
	rcu_do_batch(rsp, rdp);
}