From: Paul E. McKenney Date: Fri, 16 Jan 2015 07:34:34 +0000 (-0800) Subject: Merge branches 'doc.2015.01.07a', 'fixes.2015.01.15a', 'preempt.2015.01.06a', 'srcu... X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=78e691f4ae2d5edea0199ca802bb505b9cdced88;p=sagit-ice-cold%2Fkernel_xiaomi_msm8998.git Merge branches 'doc.2015.01.07a', 'fixes.2015.01.15a', 'preempt.2015.01.06a', 'srcu.2015.01.06a', 'stall.2015.01.16a' and 'torture.2015.01.11a' into HEAD doc.2015.01.07a: Documentation updates. fixes.2015.01.15a: Miscellaneous fixes. preempt.2015.01.06a: Changes to handling of lists of preempted tasks. srcu.2015.01.06a: SRCU updates. stall.2015.01.16a: RCU CPU stall-warning updates and fixes. torture.2015.01.11a: RCU torture-test updates and fixes. --- 78e691f4ae2d5edea0199ca802bb505b9cdced88 diff --cc kernel/rcu/tiny_plugin.h index 858c56569127,b5fc5e5fc85d,858c56569127,858c56569127,80f908afe348,858c56569127..f94e209a10d6 --- a/kernel/rcu/tiny_plugin.h +++ b/kernel/rcu/tiny_plugin.h @@@@@@@ -145,17 -145,17 -145,17 -145,17 -145,16 -145,17 +145,16 @@@@@@@ static void check_cpu_stall(struct rcu_ 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) diff --cc kernel/rcu/tree.c index 4c106fcc0d54,5b9f3b972a79,febd0f72a3c9,4c106fcc0d54,e335f33d0b9f,c0faad51ae87..48d640ca1a05 --- a/kernel/rcu/tree.c +++ b/kernel/rcu/tree.c @@@@@@@ -315,9 -315,9 -315,9 -315,9 -338,9 -315,45 +338,45 @@@@@@@ static void force_quiescent_state(struc 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; }