diff options
Diffstat (limited to 'kernel/rcu/tree_stall.h')
| -rw-r--r-- | kernel/rcu/tree_stall.h | 34 | 
1 files changed, 27 insertions, 7 deletions
diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h index c0b8c458d8a6..55f9b84790d3 100644 --- a/kernel/rcu/tree_stall.h +++ b/kernel/rcu/tree_stall.h @@ -163,7 +163,7 @@ static void rcu_iw_handler(struct irq_work *iwp)  //  // Printing RCU CPU stall warnings -#ifdef CONFIG_PREEMPTION +#ifdef CONFIG_PREEMPT_RCU  /*   * Dump detailed information for all tasks blocking the current RCU @@ -215,7 +215,7 @@ static int rcu_print_task_stall(struct rcu_node *rnp)  	return ndetected;  } -#else /* #ifdef CONFIG_PREEMPTION */ +#else /* #ifdef CONFIG_PREEMPT_RCU */  /*   * Because preemptible RCU does not exist, we never have to check for @@ -233,7 +233,7 @@ static int rcu_print_task_stall(struct rcu_node *rnp)  {  	return 0;  } -#endif /* #else #ifdef CONFIG_PREEMPTION */ +#endif /* #else #ifdef CONFIG_PREEMPT_RCU */  /*   * Dump stacks of all tasks running on stalled CPUs.  First try using @@ -263,11 +263,9 @@ static void print_cpu_stall_fast_no_hz(char *cp, int cpu)  {  	struct rcu_data *rdp = &per_cpu(rcu_data, cpu); -	sprintf(cp, "last_accelerate: %04lx/%04lx, Nonlazy posted: %c%c%c", +	sprintf(cp, "last_accelerate: %04lx/%04lx dyntick_enabled: %d",  		rdp->last_accelerate & 0xffff, jiffies & 0xffff, -		".l"[rdp->all_lazy], -		".L"[!rcu_segcblist_n_nonlazy_cbs(&rdp->cblist)], -		".D"[!!rdp->tick_nohz_enabled_snap]); +		!!rdp->tick_nohz_enabled_snap);  }  #else /* #ifdef CONFIG_RCU_FAST_NO_HZ */ @@ -279,6 +277,28 @@ static void print_cpu_stall_fast_no_hz(char *cp, int cpu)  #endif /* #else #ifdef CONFIG_RCU_FAST_NO_HZ */ +static const char * const gp_state_names[] = { +	[RCU_GP_IDLE] = "RCU_GP_IDLE", +	[RCU_GP_WAIT_GPS] = "RCU_GP_WAIT_GPS", +	[RCU_GP_DONE_GPS] = "RCU_GP_DONE_GPS", +	[RCU_GP_ONOFF] = "RCU_GP_ONOFF", +	[RCU_GP_INIT] = "RCU_GP_INIT", +	[RCU_GP_WAIT_FQS] = "RCU_GP_WAIT_FQS", +	[RCU_GP_DOING_FQS] = "RCU_GP_DOING_FQS", +	[RCU_GP_CLEANUP] = "RCU_GP_CLEANUP", +	[RCU_GP_CLEANED] = "RCU_GP_CLEANED", +}; + +/* + * Convert a ->gp_state value to a character string. + */ +static const char *gp_state_getname(short gs) +{ +	if (gs < 0 || gs >= ARRAY_SIZE(gp_state_names)) +		return "???"; +	return gp_state_names[gs]; +} +  /*   * Print out diagnostic information for the specified stalled CPU.   *  |