X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=kernel%2Firq%2Fspurious.c;h=c66d3f10e85326ab1041a29202047734769b9b10;hb=2a5f2e3e6cd1ce9fb3f8b186b6bc9aa1f1497a92;hp=a6b2bc831dd05be5ee9cbff347566bf410870c26;hpb=9e094c17ee2b85130ab7b2ea37456f6867eb687a;p=deliverable%2Flinux.git diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c index a6b2bc831dd0..c66d3f10e853 100644 --- a/kernel/irq/spurious.c +++ b/kernel/irq/spurious.c @@ -6,6 +6,7 @@ * This file contains spurious interrupt handling. */ +#include #include #include #include @@ -179,7 +180,7 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc, * otherwise the couter becomes a doomsday timer for otherwise * working systems */ - if (jiffies - desc->last_unhandled > HZ/10) + if (time_after(jiffies, desc->last_unhandled + HZ/10)) desc->irqs_unhandled = 1; else desc->irqs_unhandled++; @@ -208,8 +209,8 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc, * Now kill the IRQ */ printk(KERN_EMERG "Disabling IRQ #%d\n", irq); - desc->status |= IRQ_DISABLED; - desc->depth = 1; + desc->status |= IRQ_DISABLED | IRQ_SPURIOUS_DISABLED; + desc->depth++; desc->chip->disable(irq); } desc->irqs_unhandled = 0;