mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-07-05 13:25:20 +02:00
rcuscale: Print detailed grace-period and barrier diagnostics
This commit uses the new rcu_tasks_torture_stats_print(), rcu_tasks_trace_torture_stats_print(), and rcu_tasks_rude_torture_stats_print() functions in order to provide detailed diagnostics on grace-period, callback, and barrier state when rcu_scale_writer() hangs. [ paulmck: Apply kernel test robot feedback. ] Signed-off-by: "Paul E. McKenney" <paulmck@kernel.org> Signed-off-by: Neeraj Upadhyay <neeraj.upadhyay@kernel.org>
This commit is contained in:
parent
0616f7e981
commit
674fc922f0
|
@ -298,6 +298,11 @@ static void tasks_scale_read_unlock(int idx)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void rcu_tasks_scale_stats(void)
|
||||||
|
{
|
||||||
|
rcu_tasks_torture_stats_print(scale_type, SCALE_FLAG);
|
||||||
|
}
|
||||||
|
|
||||||
static struct rcu_scale_ops tasks_ops = {
|
static struct rcu_scale_ops tasks_ops = {
|
||||||
.ptype = RCU_TASKS_FLAVOR,
|
.ptype = RCU_TASKS_FLAVOR,
|
||||||
.init = rcu_sync_scale_init,
|
.init = rcu_sync_scale_init,
|
||||||
|
@ -310,6 +315,7 @@ static struct rcu_scale_ops tasks_ops = {
|
||||||
.sync = synchronize_rcu_tasks,
|
.sync = synchronize_rcu_tasks,
|
||||||
.exp_sync = synchronize_rcu_tasks,
|
.exp_sync = synchronize_rcu_tasks,
|
||||||
.rso_gp_kthread = get_rcu_tasks_gp_kthread,
|
.rso_gp_kthread = get_rcu_tasks_gp_kthread,
|
||||||
|
.stats = IS_ENABLED(CONFIG_TINY_RCU) ? NULL : rcu_tasks_scale_stats,
|
||||||
.name = "tasks"
|
.name = "tasks"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -336,6 +342,11 @@ static void tasks_rude_scale_read_unlock(int idx)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void rcu_tasks_rude_scale_stats(void)
|
||||||
|
{
|
||||||
|
rcu_tasks_rude_torture_stats_print(scale_type, SCALE_FLAG);
|
||||||
|
}
|
||||||
|
|
||||||
static struct rcu_scale_ops tasks_rude_ops = {
|
static struct rcu_scale_ops tasks_rude_ops = {
|
||||||
.ptype = RCU_TASKS_RUDE_FLAVOR,
|
.ptype = RCU_TASKS_RUDE_FLAVOR,
|
||||||
.init = rcu_sync_scale_init,
|
.init = rcu_sync_scale_init,
|
||||||
|
@ -346,6 +357,7 @@ static struct rcu_scale_ops tasks_rude_ops = {
|
||||||
.sync = synchronize_rcu_tasks_rude,
|
.sync = synchronize_rcu_tasks_rude,
|
||||||
.exp_sync = synchronize_rcu_tasks_rude,
|
.exp_sync = synchronize_rcu_tasks_rude,
|
||||||
.rso_gp_kthread = get_rcu_tasks_rude_gp_kthread,
|
.rso_gp_kthread = get_rcu_tasks_rude_gp_kthread,
|
||||||
|
.stats = IS_ENABLED(CONFIG_TINY_RCU) ? NULL : rcu_tasks_rude_scale_stats,
|
||||||
.name = "tasks-rude"
|
.name = "tasks-rude"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -374,6 +386,11 @@ static void tasks_trace_scale_read_unlock(int idx)
|
||||||
rcu_read_unlock_trace();
|
rcu_read_unlock_trace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void rcu_tasks_trace_scale_stats(void)
|
||||||
|
{
|
||||||
|
rcu_tasks_trace_torture_stats_print(scale_type, SCALE_FLAG);
|
||||||
|
}
|
||||||
|
|
||||||
static struct rcu_scale_ops tasks_tracing_ops = {
|
static struct rcu_scale_ops tasks_tracing_ops = {
|
||||||
.ptype = RCU_TASKS_FLAVOR,
|
.ptype = RCU_TASKS_FLAVOR,
|
||||||
.init = rcu_sync_scale_init,
|
.init = rcu_sync_scale_init,
|
||||||
|
@ -386,6 +403,7 @@ static struct rcu_scale_ops tasks_tracing_ops = {
|
||||||
.sync = synchronize_rcu_tasks_trace,
|
.sync = synchronize_rcu_tasks_trace,
|
||||||
.exp_sync = synchronize_rcu_tasks_trace,
|
.exp_sync = synchronize_rcu_tasks_trace,
|
||||||
.rso_gp_kthread = get_rcu_tasks_trace_gp_kthread,
|
.rso_gp_kthread = get_rcu_tasks_trace_gp_kthread,
|
||||||
|
.stats = IS_ENABLED(CONFIG_TINY_RCU) ? NULL : rcu_tasks_trace_scale_stats,
|
||||||
.name = "tasks-tracing"
|
.name = "tasks-tracing"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user