|
@@ -54,8 +54,8 @@
|
|
|
|
|
|
static struct lock_class_key rcu_node_class[NUM_RCU_LVLS];
|
|
|
|
|
|
-#define RCU_STATE_INITIALIZER(name) { \
|
|
|
- .level = { &name.node[0] }, \
|
|
|
+#define RCU_STATE_INITIALIZER(structname) { \
|
|
|
+ .level = { &structname.node[0] }, \
|
|
|
.levelcnt = { \
|
|
|
NUM_RCU_LVL_0, /* root of hierarchy. */ \
|
|
|
NUM_RCU_LVL_1, \
|
|
@@ -66,13 +66,14 @@ static struct lock_class_key rcu_node_class[NUM_RCU_LVLS];
|
|
|
.signaled = RCU_GP_IDLE, \
|
|
|
.gpnum = -300, \
|
|
|
.completed = -300, \
|
|
|
- .onofflock = __RAW_SPIN_LOCK_UNLOCKED(&name.onofflock), \
|
|
|
+ .onofflock = __RAW_SPIN_LOCK_UNLOCKED(&structname.onofflock), \
|
|
|
.orphan_cbs_list = NULL, \
|
|
|
- .orphan_cbs_tail = &name.orphan_cbs_list, \
|
|
|
+ .orphan_cbs_tail = &structname.orphan_cbs_list, \
|
|
|
.orphan_qlen = 0, \
|
|
|
- .fqslock = __RAW_SPIN_LOCK_UNLOCKED(&name.fqslock), \
|
|
|
+ .fqslock = __RAW_SPIN_LOCK_UNLOCKED(&structname.fqslock), \
|
|
|
.n_force_qs = 0, \
|
|
|
.n_force_qs_ngp = 0, \
|
|
|
+ .name = #structname, \
|
|
|
}
|
|
|
|
|
|
struct rcu_state rcu_sched_state = RCU_STATE_INITIALIZER(rcu_sched_state);
|
|
@@ -483,7 +484,8 @@ static void print_other_cpu_stall(struct rcu_state *rsp)
|
|
|
|
|
|
/* OK, time to rat on our buddy... */
|
|
|
|
|
|
- printk(KERN_ERR "INFO: RCU detected CPU stalls:");
|
|
|
+ printk(KERN_ERR "INFO: %s detected stalls on CPUs/tasks: {",
|
|
|
+ rsp->name);
|
|
|
rcu_for_each_leaf_node(rsp, rnp) {
|
|
|
raw_spin_lock_irqsave(&rnp->lock, flags);
|
|
|
rcu_print_task_stall(rnp);
|
|
@@ -494,7 +496,7 @@ static void print_other_cpu_stall(struct rcu_state *rsp)
|
|
|
if (rnp->qsmask & (1UL << cpu))
|
|
|
printk(" %d", rnp->grplo + cpu);
|
|
|
}
|
|
|
- printk(" (detected by %d, t=%ld jiffies)\n",
|
|
|
+ printk("} (detected by %d, t=%ld jiffies)\n",
|
|
|
smp_processor_id(), (long)(jiffies - rsp->gp_start));
|
|
|
trigger_all_cpu_backtrace();
|
|
|
|
|
@@ -510,8 +512,8 @@ static void print_cpu_stall(struct rcu_state *rsp)
|
|
|
unsigned long flags;
|
|
|
struct rcu_node *rnp = rcu_get_root(rsp);
|
|
|
|
|
|
- printk(KERN_ERR "INFO: RCU detected CPU %d stall (t=%lu jiffies)\n",
|
|
|
- smp_processor_id(), jiffies - rsp->gp_start);
|
|
|
+ printk(KERN_ERR "INFO: %s detected stall on CPU %d (t=%lu jiffies)\n",
|
|
|
+ rsp->name, smp_processor_id(), jiffies - rsp->gp_start);
|
|
|
trigger_all_cpu_backtrace();
|
|
|
|
|
|
raw_spin_lock_irqsave(&rnp->lock, flags);
|