Date: Tue, 22 May 2001 05:54:18 +0200 From: Tor.Egge@fast.no To: madsen@akamba.com Cc: freebsd-smp@FreeBSD.ORG Subject: Re: Supporting old-style SMP in drivers Message-ID: <200105220354.FAA73467@midten.fast.no> In-Reply-To: Your message of "Mon, 21 May 2001 16:32:31 -0700" References: <B5F5C0FDF648D311A9D700508B322DFD3C46A8@mailhost.akamba.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> The problem I'm seeing is that occasionally, the kernel will cease > delivering interrupts to my handler. I can poke the NIC and generate an > interrupt, but the handler is never invoked. I can examine the PCI > registers from a user-space application and see that the interrupt was > generated (and is not masked by the card). It just never gets handled and > cleared. Your problem might be caused by a workaround for a broken MP table on Micronics W6Li machines. The IOAPIC is programmed for the default ISA interrupt type (active-high edge-triggered) for entries in the MP table described as active-high level-triggered ISA interrupts. To disable the workaround, apply this patch. If the machine hangs during boot then you can revert the patch and change the workaround to switch polarity instead of trigger mode. Index: mpapic.c =================================================================== RCS file: /usr/ncvs/src/sys/i386/i386/mpapic.c,v retrieving revision 1.37.2.4 diff -u -r1.37.2.4 mpapic.c --- mpapic.c 2000/09/30 02:49:32 1.37.2.4 +++ mpapic.c 2001/05/22 03:15:01 @@ -234,7 +234,7 @@ (pin < IOAPIC_ISA_INTS) && (irq == pin) && (apic_polarity(apic, pin) == 0x1) && - (apic_trigger(apic, pin) == 0x3)) { + (apic_trigger(apic, pin) == 0x3) && 0) { /* * A broken BIOS might describe some ISA * interrupts as active-high level-triggered. - Tor Egge To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-smp" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200105220354.FAA73467>