From owner-freebsd-smp Wed Jul 2 09:29:32 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id JAA12921 for smp-outgoing; Wed, 2 Jul 1997 09:29:32 -0700 (PDT) Received: from Ilsa.StevesCafe.com (Ilsa.StevesCafe.com [205.168.119.129]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id JAA12916 for ; Wed, 2 Jul 1997 09:29:29 -0700 (PDT) Received: from Ilsa.StevesCafe.com (localhost [127.0.0.1]) by Ilsa.StevesCafe.com (8.8.5/8.8.5) with ESMTP id KAA26607; Wed, 2 Jul 1997 10:29:21 -0600 (MDT) Message-Id: <199707021629.KAA26607@Ilsa.StevesCafe.com> X-Mailer: exmh version 2.0gamma 1/27/96 From: Steve Passe To: Lars Fredriksen cc: smp@freebsd.org Subject: Re: Recent (last two days) smp kernel is hanging for me In-reply-to: Your message of "Wed, 02 Jul 1997 10:52:41 CDT." <199707021552.KAA18455@fredriks-1.pr.mcs.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Wed, 02 Jul 1997 10:29:21 -0600 Sender: owner-smp@freebsd.org X-Loop: FreeBSD.org Precedence: bulk Lars, > Steve Passe writes: > > Lars, > > > > > Does irq 15 get any kind of special handling under the SMP kernel > > > ? (ie. does the APIC_IO cause irq 15 to be chained similar to 2/9 under > > > isa??) > > > > > > The reason I am asking is that my sound card doesn't work with the > > > SMP kernel. I will be trying to validate that there isn't something > > > general about the current tree that is causing this later on today. > > > > its (mostly) a MB design issue. IRQ15 is usually required for the 2nd > > onboard IDE controller. Some designs allow you to use it for other purposes, > > some don't. I haven't played with this much, but I suspect that if the > > hardware works for the UP kewrnel it should be able to be used with SMP. > > but it might need additional code (although no idea exactly what). > > track it down a little more and send me the clues... > > > > So far all I have is this: > > vmstat -i: > > interrupt total rate > clk0 irq0 15801846 100 > rtc0 irq8 20224890 127 > pci irq17 41574 0 > pci irq18 1358259 8 > pci irq19 291042 1 > sc0 irq1 138600 0 > sio0 irq4 4218518 26 > sio1 irq3 12 0 > psm0 irq12 117738 0 > Total 42192479 267 > > > dmesg says: > > Checking for GUS Plug-n-Play ... > Board Vendor ID: GRV0001 Board Serial Number: 00004e88 > gus0 at 0x220 irq 15 drq 5 flags 0x7 on isa > at 0x32c dma 7,5 > at 0x220 irq 15 dma 5,7 > > Freeing (NOT implemented) redirected ISA irq 15. OK, I think I see the problem, from your mptable: I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID INT# INT conforms conforms 1 15 2 20 ^^ ^^ this is because of the 'special' handling of the 2nd IDE I mentioned earlier. I don't have time for the whole story now, it involves the PIIX3 design among other things. Bottom line is that the 2nd IDE uses ISA INT 15, APIC INT 20. BUT the ISA bus itself DOES NOT redirect IRQ15, so this mptable entry is ONLY relevant to the 2nd IDE controller! So I would describe the problem as a "deficiency" in the mptable specification and/or board design. I'm sure that I can figure a way to code around the problem, but for now another patch will get you going: ----------------------------------- cut -------------------------------------- i386/i386/mp_machdep.c: /* * Given a traditional ISA INT mask, return an APIC mask. */ u_int isa_apic_mask(u_int isa_mask) { int isa_irq; int apic_pin; + #if defined(SKIP_IRQ15_REDIRECT) + if (isa_mask == (1 << 15)) { + printf("skipping ISA IRQ15 redirect\n"); + return isa_mask; + } + #endif /* SKIP_IRQ15_REDIRECT */ ----------------------------------- cut -------------------------------------- remember to define SKIP_IRQ15_REDIRECT somewhere. let me know how it works. -- Steve Passe | powered by smp@csn.net | Symmetric MultiProcessor FreeBSD