patch-2.4.23 linux-2.4.23/arch/ppc/kernel/irq.c
Next file: linux-2.4.23/arch/ppc/kernel/misc.S
Previous file: linux-2.4.23/arch/ppc/kernel/indirect_pci.c
Back to the patch index
Back to the overall index
- Lines: 40
- Date:
2003-11-28 10:26:19.000000000 -0800
- Orig file:
linux-2.4.22/arch/ppc/kernel/irq.c
- Orig date:
2003-08-25 04:44:40.000000000 -0700
diff -urN linux-2.4.22/arch/ppc/kernel/irq.c linux-2.4.23/arch/ppc/kernel/irq.c
@@ -429,7 +429,7 @@
int status;
struct irqaction *action;
int cpu = smp_processor_id();
- irq_desc_t *desc = irq_desc + irq;
+ irq_desc_t *desc = &irq_desc[irq];
kstat.irqs[cpu][irq]++;
spin_lock(&desc->lock);
@@ -501,12 +501,25 @@
* The ->end() handler has to deal with interrupts which got
* disabled while the handler was running.
*/
- if (irq_desc[irq].handler) {
- if (irq_desc[irq].handler->end)
- irq_desc[irq].handler->end(irq);
- else if (irq_desc[irq].handler->enable)
- irq_desc[irq].handler->enable(irq);
+ if (desc->handler) {
+ if (desc->handler->end)
+ desc->handler->end(irq);
+ else if (desc->handler->enable)
+ desc->handler->enable(irq);
}
+
+#ifdef CONFIG_DBOX2
+ /*
+ * Interrupts marked as oneshot are level
+ * triggered. We disable them here for onboard
+ * hardware which can not be configured to
+ * generate edge triggered interrupts due to
+ * lack of documentation.
+ */
+ if ((action) && (action->flags & SA_ONESHOT))
+ disable_irq_nosync(irq);
+#endif
+
spin_unlock(&desc->lock);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)