diff options
Diffstat (limited to 'kernel/rcutree.c')
| -rw-r--r-- | kernel/rcutree.c | 7 | 
1 files changed, 6 insertions, 1 deletions
| diff --git a/kernel/rcutree.c b/kernel/rcutree.c index 7717b95c2027..9c5fa9fc57ec 100644 --- a/kernel/rcutree.c +++ b/kernel/rcutree.c | |||
| @@ -35,6 +35,7 @@ | |||
| 35 | #include <linux/rcupdate.h> | 35 | #include <linux/rcupdate.h> | 
| 36 | #include <linux/interrupt.h> | 36 | #include <linux/interrupt.h> | 
| 37 | #include <linux/sched.h> | 37 | #include <linux/sched.h> | 
| 38 | #include <linux/nmi.h> | ||
| 38 | #include <asm/atomic.h> | 39 | #include <asm/atomic.h> | 
| 39 | #include <linux/bitops.h> | 40 | #include <linux/bitops.h> | 
| 40 | #include <linux/module.h> | 41 | #include <linux/module.h> | 
| @@ -469,6 +470,8 @@ static void print_other_cpu_stall(struct rcu_state *rsp) | |||
| 469 | } | 470 | } | 
| 470 | printk(" (detected by %d, t=%ld jiffies)\n", | 471 | printk(" (detected by %d, t=%ld jiffies)\n", | 
| 471 | smp_processor_id(), (long)(jiffies - rsp->gp_start)); | 472 | smp_processor_id(), (long)(jiffies - rsp->gp_start)); | 
| 473 | trigger_all_cpu_backtrace(); | ||
| 474 | |||
| 472 | force_quiescent_state(rsp, 0); /* Kick them all. */ | 475 | force_quiescent_state(rsp, 0); /* Kick them all. */ | 
| 473 | } | 476 | } | 
| 474 | 477 | ||
| @@ -479,12 +482,14 @@ static void print_cpu_stall(struct rcu_state *rsp) | |||
| 479 | 482 | ||
| 480 | printk(KERN_ERR "INFO: RCU detected CPU %d stall (t=%lu jiffies)\n", | 483 | printk(KERN_ERR "INFO: RCU detected CPU %d stall (t=%lu jiffies)\n", | 
| 481 | smp_processor_id(), jiffies - rsp->gp_start); | 484 | smp_processor_id(), jiffies - rsp->gp_start); | 
| 482 | dump_stack(); | 485 | trigger_all_cpu_backtrace(); | 
| 486 | |||
| 483 | spin_lock_irqsave(&rnp->lock, flags); | 487 | spin_lock_irqsave(&rnp->lock, flags); | 
| 484 | if ((long)(jiffies - rsp->jiffies_stall) >= 0) | 488 | if ((long)(jiffies - rsp->jiffies_stall) >= 0) | 
| 485 | rsp->jiffies_stall = | 489 | rsp->jiffies_stall = | 
| 486 | jiffies + RCU_SECONDS_TILL_STALL_RECHECK; | 490 | jiffies + RCU_SECONDS_TILL_STALL_RECHECK; | 
| 487 | spin_unlock_irqrestore(&rnp->lock, flags); | 491 | spin_unlock_irqrestore(&rnp->lock, flags); | 
| 492 | |||
| 488 | set_need_resched(); /* kick ourselves to get things going. */ | 493 | set_need_resched(); /* kick ourselves to get things going. */ | 
| 489 | } | 494 | } | 
| 490 | 495 | ||
