Re: SMP Interrupt troubles....

Doug Ledford (dledford@dialnet.net)
Thu, 09 Apr 1998 22:10:49 -0500


This is a multi-part message in MIME format.
--------------F1A8F6B9D0E5943D9D60F708
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

tmuller@agora.rdrop.com wrote:
>
> Hi all,
>
> I am seeing the following SMP interrupt errors. I have 2.1.90 up and running
> smoothly, but as soon as I patch in to 2.1.91,2,3 or 4, I have see the
> following in /proc/interrupt:
>
> Kernels 2.1.91,2,3,4
>
> CPU0 CPU1
> 0: 11504 11273 IO-APIC timer
> 1: 362 348 IO-APIC keyboard
> 2: 0 0 XT PIC cascade
> 8: 1 0 IO-APIC rtc
> 9: 17361438 17358440 IO-APIC probe
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The "probe" entry on the IRQ is from the parport_pc.c driver. There is a
bug in that driver, where in if it detects IRQ activity on more than one
IRQ, after having registered them all, if fails to release the remaining
IRQs that it registered. There is a patch attached for that bug. It simply
makes sure that if more than one IRQ gets "votes", then the remaining IRQs
are also freed.

The fact that IRQ 9 is going off the wall is something I've seen also. It's
related to the IO-APIC code, but I haven't had a chance to test Ingo's
latest possible solution yet, sorry Ingo :(

-- 

Doug Ledford <dledford@dialnet.net> Opinions expressed are my own, but they should be everybody's. --------------F1A8F6B9D0E5943D9D60F708 Content-Type: text/plain; charset=us-ascii; name="parport.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="parport.patch"

--- linux/drivers/misc/parport_pc.c.save Wed Apr 1 23:25:33 1998 +++ linux/drivers/misc/parport_pc.c Wed Apr 1 23:36:30 1998 @@ -676,7 +676,7 @@ static int close_intr_election(long tmp) { int irq = PARPORT_IRQ_NONE; - int i; + int i, valid = 1; /* We ignore the timer - irq 0 */ for (i = 1; i < 16; i++) @@ -684,12 +684,15 @@ if (intr_vote[i]) { if (irq != PARPORT_IRQ_NONE) /* More than one interrupt */ - return PARPORT_IRQ_NONE; + valid=0; irq = i; } free_irq(i, intr_vote); } - return irq; + if(valid) + return irq; + else + return PARPORT_IRQ_NONE; } /* Only if supports ECP mode */

--------------F1A8F6B9D0E5943D9D60F708--

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu