mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 18:39:59 +00:00
rcu: Consolidate rcutiny_plugin.h ifdefs
This commit rearranges code in order to allow ifdefs to be consolidated in kernel/rcutiny_plugin.h, simplifying the code. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Reviewed-by: Josh Triplett <josh@joshtriplett.org>
This commit is contained in:
parent
fa2b3b0a50
commit
318bdcd959
1 changed files with 40 additions and 46 deletions
|
@ -53,54 +53,10 @@ static struct rcu_ctrlblk rcu_bh_ctrlblk = {
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||||
|
#include <linux/kernel_stat.h>
|
||||||
|
|
||||||
int rcu_scheduler_active __read_mostly;
|
int rcu_scheduler_active __read_mostly;
|
||||||
EXPORT_SYMBOL_GPL(rcu_scheduler_active);
|
EXPORT_SYMBOL_GPL(rcu_scheduler_active);
|
||||||
#endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */
|
|
||||||
|
|
||||||
#ifdef CONFIG_RCU_TRACE
|
|
||||||
|
|
||||||
static void check_cpu_stall(struct rcu_ctrlblk *rcp)
|
|
||||||
{
|
|
||||||
unsigned long j;
|
|
||||||
unsigned long js;
|
|
||||||
|
|
||||||
if (rcu_cpu_stall_suppress)
|
|
||||||
return;
|
|
||||||
rcp->ticks_this_gp++;
|
|
||||||
j = jiffies;
|
|
||||||
js = rcp->jiffies_stall;
|
|
||||||
if (*rcp->curtail && 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,
|
|
||||||
jiffies - rcp->gp_start, rcp->qlen);
|
|
||||||
dump_stack();
|
|
||||||
}
|
|
||||||
if (*rcp->curtail && ULONG_CMP_GE(j, js))
|
|
||||||
rcp->jiffies_stall = jiffies +
|
|
||||||
3 * rcu_jiffies_till_stall_check() + 3;
|
|
||||||
else if (ULONG_CMP_GE(j, js))
|
|
||||||
rcp->jiffies_stall = jiffies + rcu_jiffies_till_stall_check();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* #ifdef CONFIG_RCU_TRACE */
|
|
||||||
|
|
||||||
static void reset_cpu_stall_ticks(struct rcu_ctrlblk *rcp)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_RCU_TRACE
|
|
||||||
rcp->ticks_this_gp = 0;
|
|
||||||
rcp->gp_start = jiffies;
|
|
||||||
rcp->jiffies_stall = jiffies + rcu_jiffies_till_stall_check();
|
|
||||||
#endif /* #ifdef CONFIG_RCU_TRACE */
|
|
||||||
}
|
|
||||||
|
|
||||||
static void check_cpu_stalls(void)
|
|
||||||
{
|
|
||||||
RCU_TRACE(check_cpu_stall(&rcu_bh_ctrlblk));
|
|
||||||
RCU_TRACE(check_cpu_stall(&rcu_sched_ctrlblk));
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
|
||||||
#include <linux/kernel_stat.h>
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* During boot, we forgive RCU lockdep issues. After this function is
|
* During boot, we forgive RCU lockdep issues. After this function is
|
||||||
|
@ -179,4 +135,42 @@ MODULE_AUTHOR("Paul E. McKenney");
|
||||||
MODULE_DESCRIPTION("Read-Copy Update tracing for tiny implementation");
|
MODULE_DESCRIPTION("Read-Copy Update tracing for tiny implementation");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
||||||
|
static void check_cpu_stall(struct rcu_ctrlblk *rcp)
|
||||||
|
{
|
||||||
|
unsigned long j;
|
||||||
|
unsigned long js;
|
||||||
|
|
||||||
|
if (rcu_cpu_stall_suppress)
|
||||||
|
return;
|
||||||
|
rcp->ticks_this_gp++;
|
||||||
|
j = jiffies;
|
||||||
|
js = rcp->jiffies_stall;
|
||||||
|
if (*rcp->curtail && 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,
|
||||||
|
jiffies - rcp->gp_start, rcp->qlen);
|
||||||
|
dump_stack();
|
||||||
|
}
|
||||||
|
if (*rcp->curtail && ULONG_CMP_GE(j, js))
|
||||||
|
rcp->jiffies_stall = jiffies +
|
||||||
|
3 * rcu_jiffies_till_stall_check() + 3;
|
||||||
|
else if (ULONG_CMP_GE(j, js))
|
||||||
|
rcp->jiffies_stall = jiffies + rcu_jiffies_till_stall_check();
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* #ifdef CONFIG_RCU_TRACE */
|
#endif /* #ifdef CONFIG_RCU_TRACE */
|
||||||
|
|
||||||
|
static void reset_cpu_stall_ticks(struct rcu_ctrlblk *rcp)
|
||||||
|
{
|
||||||
|
#ifdef CONFIG_RCU_TRACE
|
||||||
|
rcp->ticks_this_gp = 0;
|
||||||
|
rcp->gp_start = jiffies;
|
||||||
|
rcp->jiffies_stall = jiffies + rcu_jiffies_till_stall_check();
|
||||||
|
#endif /* #ifdef CONFIG_RCU_TRACE */
|
||||||
|
}
|
||||||
|
|
||||||
|
static void check_cpu_stalls(void)
|
||||||
|
{
|
||||||
|
RCU_TRACE(check_cpu_stall(&rcu_bh_ctrlblk));
|
||||||
|
RCU_TRACE(check_cpu_stall(&rcu_sched_ctrlblk));
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue