diff options
Diffstat (limited to 'arch/powerpc/kernel/irq.c')
| -rw-r--r-- | arch/powerpc/kernel/irq.c | 5 | 
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index 57d286a78f86..c7cb8c232d2f 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c @@ -495,14 +495,15 @@ void __do_irq(struct pt_regs *regs)  void do_IRQ(struct pt_regs *regs)  {  	struct pt_regs *old_regs = set_irq_regs(regs); -	struct thread_info *curtp, *irqtp; +	struct thread_info *curtp, *irqtp, *sirqtp;  	/* Switch to the irq stack to handle this */  	curtp = current_thread_info();  	irqtp = hardirq_ctx[raw_smp_processor_id()]; +	sirqtp = softirq_ctx[raw_smp_processor_id()];  	/* Already there ? */ -	if (unlikely(curtp == irqtp)) { +	if (unlikely(curtp == irqtp || curtp == sirqtp)) {  		__do_irq(regs);  		set_irq_regs(old_regs);  		return;  | 
