rcp->ticks_this_gp++;
j = jiffies;
js = ACCESS_ONCE(rcp->jiffies_stall);
---- - if (*rcp->curtail && ULONG_CMP_GE(j, js)) {
++++ + if (rcp->rcucblist && ULONG_CMP_GE(j, js)) {
pr_err("INFO: %s stall on CPU (%lu ticks this GP) idle=%llx (t=%lu jiffies q=%ld)\n",
- ---- rcp->name, rcp->ticks_this_gp, rcu_dynticks_nesting,
+ ++++ rcp->name, rcp->ticks_this_gp, DYNTICK_TASK_EXIT_IDLE,
jiffies - rcp->gp_start, rcp->qlen);
dump_stack();
---- - }
---- - if (*rcp->curtail && ULONG_CMP_GE(j, js))
ACCESS_ONCE(rcp->jiffies_stall) = jiffies +
3 * rcu_jiffies_till_stall_check() + 3;
---- - else if (ULONG_CMP_GE(j, js))
++++ + } else if (ULONG_CMP_GE(j, js)) {
ACCESS_ONCE(rcp->jiffies_stall) = jiffies + rcu_jiffies_till_stall_check();
++++ + }
}
static void reset_cpu_stall_ticks(struct rcu_ctrlblk *rcp)
static int rcu_pending(void);
/*
----- * Return the number of RCU-sched batches processed thus far for debug & stats.
+++++ * Return the number of RCU batches started thus far for debug & stats.
+ ++ */
- - long rcu_batches_completed_sched(void)
+++++ unsigned long rcu_batches_started(void)
+++++ {
+++++ return rcu_state_p->gpnum;
+++++ }
+++++ EXPORT_SYMBOL_GPL(rcu_batches_started);
+++++
+++++ /*
+++++ * Return the number of RCU-sched batches started thus far for debug & stats.
++ + */
- - long rcu_batches_completed_sched(void)
+++++ unsigned long rcu_batches_started_sched(void)
+++++ {
+++++ return rcu_sched_state.gpnum;
+++++ }
+++++ EXPORT_SYMBOL_GPL(rcu_batches_started_sched);
+++++
+++++ /*
+++++ * Return the number of RCU BH batches started thus far for debug & stats.
+++++ */
+++++ unsigned long rcu_batches_started_bh(void)
+++++ {
+++++ return rcu_bh_state.gpnum;
+++++ }
+++++ EXPORT_SYMBOL_GPL(rcu_batches_started_bh);
+++++
+++++ /*
+++++ * Return the number of RCU batches completed thus far for debug & stats.
+++++ */
+++++ unsigned long rcu_batches_completed(void)
+++++ {
+++++ return rcu_state_p->completed;
+++++ }
+++++ EXPORT_SYMBOL_GPL(rcu_batches_completed);
+++++
+++++ /*
+++++ * Return the number of RCU-sched batches completed thus far for debug & stats.
++ ++ */
- long rcu_batches_completed_sched(void)
+++++ unsigned long rcu_batches_completed_sched(void)
{
return rcu_sched_state.completed;
}