Commit 674fc922 authored by Paul E. McKenney's avatar Paul E. McKenney Committed by Neeraj Upadhyay

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: default avatar"Paul E. McKenney" <paulmck@kernel.org>
Signed-off-by: default avatarNeeraj Upadhyay <neeraj.upadhyay@kernel.org>
parent 0616f7e9
...@@ -298,6 +298,11 @@ static void tasks_scale_read_unlock(int idx) ...@@ -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 = { ...@@ -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) ...@@ -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 = { ...@@ -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) ...@@ -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 = { ...@@ -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"
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment