From bc9745c570a2a00a86491c713481036c429fd374 Mon Sep 17 00:00:00 2001 From: Shaun Ruffell Date: Wed, 10 Aug 2011 23:42:33 -0500 Subject: [PATCH] wcte12xp, wctdm24xxp: Force local interrupts off in the interrupt handler. r10066 "wctdm24xxp, wcte12xp: Run the ISR with interrupts disabled." requested that the interrupt handler be run in "fast" mode (disabled) but this isn't necessarily guaranteed. This change has the interrupt handler itself disable all the interrupts in the interrupt handler directly. DAHLIN-248 Reported-by: Vladimir Mikhelson Signed-off-by: Shaun Ruffell --- drivers/dahdi/voicebus/voicebus.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/drivers/dahdi/voicebus/voicebus.c b/drivers/dahdi/voicebus/voicebus.c index 16f3466..c236cba 100644 --- a/drivers/dahdi/voicebus/voicebus.c +++ b/drivers/dahdi/voicebus/voicebus.c @@ -1683,6 +1683,7 @@ vb_isr(int irq, void *dev_id) #endif { struct voicebus *vb = dev_id; + unsigned long flags; u32 int_status; int_status = __vb_getctl(vb, SR_CSR5); @@ -1693,6 +1694,8 @@ vb_isr(int irq, void *dev_id) if (!int_status) return IRQ_NONE; + local_irq_save(flags); + if (unlikely((int_status & (TX_UNAVAILABLE_INTERRUPT|RX_UNAVAILABLE_INTERRUPT)) && !test_bit(VOICEBUS_STOP, &vb->flags) && @@ -1733,6 +1736,7 @@ vb_isr(int irq, void *dev_id) /* Clear the interrupt(s) */ __vb_setctl(vb, SR_CSR5, int_status); } + local_irq_restore(flags); return IRQ_HANDLED; } -- 1.7.4.4