diff options
Diffstat (limited to 'kernel/irq/chip.c')
| -rw-r--r-- | kernel/irq/chip.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index fc275e4f629b..eebd6d5cfb44 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -275,8 +275,10 @@ void handle_nested_irq(unsigned int irq)  	kstat_incr_irqs_this_cpu(irq, desc);  	action = desc->action; -	if (unlikely(!action || irqd_irq_disabled(&desc->irq_data))) +	if (unlikely(!action || irqd_irq_disabled(&desc->irq_data))) { +		desc->istate |= IRQS_PENDING;  		goto out_unlock; +	}  	irqd_set(&desc->irq_data, IRQD_IRQ_INPROGRESS);  	raw_spin_unlock_irq(&desc->lock); @@ -324,8 +326,10 @@ handle_simple_irq(unsigned int irq, struct irq_desc *desc)  	desc->istate &= ~(IRQS_REPLAY | IRQS_WAITING);  	kstat_incr_irqs_this_cpu(irq, desc); -	if (unlikely(!desc->action || irqd_irq_disabled(&desc->irq_data))) +	if (unlikely(!desc->action || irqd_irq_disabled(&desc->irq_data))) { +		desc->istate |= IRQS_PENDING;  		goto out_unlock; +	}  	handle_irq_event(desc); | 
