diff options
Diffstat (limited to 'kernel/irq/spurious.c')
| -rw-r--r-- | kernel/irq/spurious.c | 18 | 
1 files changed, 4 insertions, 14 deletions
diff --git a/kernel/irq/spurious.c b/kernel/irq/spurious.c index 114e704760fe..e49ea1c5232d 100644 --- a/kernel/irq/spurious.c +++ b/kernel/irq/spurious.c  | |||
| @@ -104,7 +104,7 @@ static int misrouted_irq(int irq) | |||
| 104 | return ok; | 104 | return ok; | 
| 105 | } | 105 | } | 
| 106 | 106 | ||
| 107 | static void poll_all_shared_irqs(void) | 107 | static void poll_spurious_irqs(unsigned long dummy) | 
| 108 | { | 108 | { | 
| 109 | struct irq_desc *desc; | 109 | struct irq_desc *desc; | 
| 110 | int i; | 110 | int i; | 
| @@ -121,25 +121,15 @@ static void poll_all_shared_irqs(void) | |||
| 121 | if (!(status & IRQ_SPURIOUS_DISABLED)) | 121 | if (!(status & IRQ_SPURIOUS_DISABLED)) | 
| 122 | continue; | 122 | continue; | 
| 123 | 123 | ||
| 124 | local_irq_disable(); | ||
| 124 | try_one_irq(i, desc); | 125 | try_one_irq(i, desc); | 
| 126 | local_irq_enable(); | ||
| 125 | } | 127 | } | 
| 126 | } | ||
| 127 | |||
| 128 | static void poll_spurious_irqs(unsigned long dummy) | ||
| 129 | { | ||
| 130 | poll_all_shared_irqs(); | ||
| 131 | 128 | ||
| 132 | mod_timer(&poll_spurious_irq_timer, | 129 | mod_timer(&poll_spurious_irq_timer, | 
| 133 | jiffies + POLL_SPURIOUS_IRQ_INTERVAL); | 130 | jiffies + POLL_SPURIOUS_IRQ_INTERVAL); | 
| 134 | } | 131 | } | 
| 135 | 132 | ||
| 136 | #ifdef CONFIG_DEBUG_SHIRQ | ||
| 137 | void debug_poll_all_shared_irqs(void) | ||
| 138 | { | ||
| 139 | poll_all_shared_irqs(); | ||
| 140 | } | ||
| 141 | #endif | ||
| 142 | |||
| 143 | /* | 133 | /* | 
| 144 | * If 99,900 of the previous 100,000 interrupts have not been handled | 134 | * If 99,900 of the previous 100,000 interrupts have not been handled | 
| 145 | * then assume that the IRQ is stuck in some manner. Drop a diagnostic | 135 | * then assume that the IRQ is stuck in some manner. Drop a diagnostic | 
| @@ -230,7 +220,7 @@ void note_interrupt(unsigned int irq, struct irq_desc *desc, | |||
| 230 | /* | 220 | /* | 
| 231 | * If we are seeing only the odd spurious IRQ caused by | 221 | * If we are seeing only the odd spurious IRQ caused by | 
| 232 | * bus asynchronicity then don't eventually trigger an error, | 222 | * bus asynchronicity then don't eventually trigger an error, | 
| 233 | * otherwise the couter becomes a doomsday timer for otherwise | 223 | * otherwise the counter becomes a doomsday timer for otherwise | 
| 234 | * working systems | 224 | * working systems | 
| 235 | */ | 225 | */ | 
| 236 | if (time_after(jiffies, desc->last_unhandled + HZ/10)) | 226 | if (time_after(jiffies, desc->last_unhandled + HZ/10)) | 
