[lkml]   [2001]   [Aug]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH] i386 SA_INTERRUPT logic
Herewith a patch to arch/i386/kernel/irq.c:handle_IRQ_event(). To 
belabor the obvious, the SA_INTERRUPT flag ought to affect just the
handler it's set (or not) for. The existing code can enable
interrupts for drivers that don't want them enabled, or disable them
for drivers that do. We've done cursory testing, but can't test all
possible cases; it looks straightforward enough, though.

I notice that this is fixed in alpha, broken in arm, cris, ia64,
mips, ppc, sh. The respective architecture maintainers might like to
have a closer look.

--- /usr/src/linux-2.4.9/arch/i386/kernel/irq.c Wed Jun 20 11:06:38 2001
+++ irq.c Fri Aug 31 14:29:11 2001
@@ -443,17 +443,16 @@

status = 1; /* Force the "do bottom halves" bit */

- if (!(action->flags & SA_INTERRUPT))
- __sti();
do {
status |= action->flags;
+ if (!(action->flags & SA_INTERRUPT))
+ __sti();
action->handler(irq, action->dev_id, regs);
+ __cli();
action = action->next;
} while (action);
if (status & SA_SAMPLE_RANDOM)
- __cli();

irq_exit(cpu, irq);

/Jonathan Lundell.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at
 \ /
  Last update: 2005-03-22 13:17    [W:0.092 / U:9.100 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site