Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 18 Jan 1997 02:28:43 -0500 (EST)
From:      Kenneth Merry <ken@housing1.stucen.gatech.edu>
To:        smp@csn.net (Steve Passe)
Cc:        cbrown@aracnet.com, smp@FreeBSD.ORG
Subject:   Re: Adaptec 3940UW and SMP
Message-ID:  <199701180728.CAA07347@housing1.stucen.gatech.edu>
In-Reply-To: <199701180524.WAA22187@clem.systemsix.com> from Steve Passe at "Jan 17, 97 10:24:00 pm"

next in thread | previous in thread | raw e-mail | index | archive | help

	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.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199701180728.CAA07347>