From owner-freebsd-smp Fri Jan 17 23:29:12 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.4/8.8.4) id XAA29534 for smp-outgoing; Fri, 17 Jan 1997 23:29:12 -0800 (PST) Received: from housing1.stucen.gatech.edu (ken@housing1.stucen.gatech.edu [130.207.52.71]) by freefall.freebsd.org (8.8.4/8.8.4) with ESMTP id XAA29529 for ; Fri, 17 Jan 1997 23:29:10 -0800 (PST) Received: (from ken@localhost) by housing1.stucen.gatech.edu (8.8.4/8.8.4) id CAA07347; Sat, 18 Jan 1997 02:28:44 -0500 (EST) From: Kenneth Merry Message-Id: <199701180728.CAA07347@housing1.stucen.gatech.edu> Subject: Re: Adaptec 3940UW and SMP In-Reply-To: <199701180524.WAA22187@clem.systemsix.com> from Steve Passe at "Jan 17, 97 10:24:00 pm" To: smp@csn.net (Steve Passe) Date: Sat, 18 Jan 1997 02:28:43 -0500 (EST) Cc: cbrown@aracnet.com, smp@FreeBSD.ORG X-Mailer: ELM [version 2.4ME+ PL25 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: owner-smp@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk Well, with all the talk of interrupts, I got a bit curious and did a few tests with my system to see how things would work. In summary, the way slots go on my system, according to the manual is that PCI slots 1-3 have unique interrupts, and slots 4 and 5 share the same interrupt. (Steve gave a much more detailed assessment of how things work...) Before I started these tests, my original, working (i.e. for Uniprocessor, APIC_IO and non-APIC_IO kernels) configuration looked like this: Slot 1: Adaptec 3940UW (IRQ 11) Slot 2: Matrox Millenium (IRQ 10) Slot 3: no card (IRQ 9) Slot 4: SMC 10/100 (IRQ 14) Slot 5: no card (shares IRQ 14 w/ slot 4) I hard-coded each of the above IRQ values in the BIOS for each slot. I then changed things around so that all of the interrupt assignments were autoconfigured by the BIOS. On boot, the BIOS prints out the interrupt assignments and class names of the various PCI boards. Here's the way it assigned the interrupts: Slot 1: SMC 10/100 (IRQ 5) Slot 4: Adaptec 3940UW (IRQ 14 for channel 1, IRQ 3 for channel 2) Slot 5: Matrox Millenium (IRQ 3) With the BIOS set to enable MP spec v1.4, I got the following results: Uniprocessor: works fine Non-APIC_IO SMP: hangs(1) APIC_IO SMP: hangs(1) 1) Both kernels would hang after the following (approx.) message: BIOS basemem (639K) != RTC basemem (640K), setting to BIOS value With the BIOS set to enable MP spec v1.1, I got the following results: Uniprocessor: works fine Non-APIC_IO SMP: works fine APIC_IO SMP: hangs(2) 2) The APIC_IO kernel would hang right before the kernel should go over to init. Ctrl-Alt-Del did work to reboot it at that point. The only difference between the above configuration and my old configuration was that I let the BIOS automatically configure the interrupts on the cards. So things seemed to work better when I manually configured the interrupts. Perhaps there was a conflict? I have disabled the on board second serial port (IRQ 3), and the LPT port (IRQ 7), and the on board IDE controllers (IRQ 14 + 15). I do, however, have a Gravis Ultrasound PnP Pro. Theoretically, the BIOS would be able to work out any potential interrupt conflicts, since it is a PnP card... So, just to make it interesting, I moved the cards around to the following configuration: Slot 1: SMC 10/100 (autoconfig by BIOS) Slot 2: no card (autoconfig by BIOS) Slot 3: no card (autoconfig by BIOS) Slot 4: Adaptec 3940UW (autoconfig by BIOS) Slot 5: Matrox Millenium (autoconfig, shares IRQ w/ slot 4) This was the most difficult combination of things that I could think of, or rather close to it. I guess it would be more accurate to say that this was the most practical way to assign the slots, suggested by both Steve and Chris. The BIOS assigned the interrupts like this: Slot 1: SMC 10/100 (IRQ 14) Slot 4: Adaptec 3940UW (IRQ 3 for channel 1, IRQ 14 for channel 2) Slot 5: Matrox Millenium (IRQ 3) With MP spec v1.4 enabled in the BIOS, I got the following results: Uniprocessor: works fine Non-APIC_IO SMP: hangs(1) APIC_IO SMP: hangs(1) Windows NT 4.0: works fine 1) Both kernels would hang after the following (approx.) message: BIOS basemem (639K) != RTC basemem (640K), setting to BIOS value With MP spec v1.1 enabled in the BIOS, I got the following results: Uniprocessor: works fine Non-APIC_IO SMP: works fine APIC_IO SMP: hangs(2) 2) The APIC_IO kernel would hang right before the kernel should go over to init. Ctrl-Alt-Del did work to reboot it at that point. So, in short, for the new slot configuration, I get the same results as I did for the old slot configuration. Once again, I tried hardwiring the interrupts to the various slots. here is the way I configured it: Slot 1: SMC 10/100 (IRQ 11) Slot 2: no card (IRQ 10) Slot 3: no card (IRQ 9) Slot 4: Adaptec 3940UW (IRQ 14) Slot 5: Matrox Millenium (shares IRQ 14 w/ slot 4) The BIOS printout confirmed that the interrupts were assigned as follows: Slot 1: SMC 10/100 (IRQ 11) Slot 4: Adaptec 3940UW (IRQ 14 for channel 1, IRQ 11 for channel 2) Slot 5: Matrox Millenium (IRQ 14) And with MP spec v1.4 enabled in the BIOS, I got the following results: Uniprocessor: works fine Non-APIC_IO SMP: works fine APIC_IO SMP: works fine All I can say is go figure. In all cases, the Uniprocessor kernel works without a hitch. The APIC_IO kernel has trouble with the MP v1.1 spec. Both versions of the SMP kernel didn't work when the system assigned the interrupts to the PCI cards. Things did work when I assigned interrups in the 11-10-9-14 order. Well, at least now I am fairly confident that I'll be able to add two more cards to the system and get them working. If anyone wants dmesg or mptable or whatever outputs for one (or more?) of these configurations, let me know. Perhaps this will help in understanding how this board works... Ken -- Kenneth Merry ken@ulc199.residence.gatech.edu Disclaimer: I don't speak for GTRI, GT, or Elvis.