Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Jan 1997 01:10:49 -0500 (EST)
From:      Kenneth Merry <ken@housing1.stucen.gatech.edu>
To:        smp@csn.net (Steve Passe)
Cc:        matt@lkg.dec.com, kmitch@weenix.guru.org, se@zpr.uni-koeln.de, smp@freebsd.org
Subject:   Re: Adaptec 3940UW and SMP
Message-ID:  <199701160610.BAA09539@housing1.stucen.gatech.edu>
In-Reply-To: <199701160321.UAA07607@clem.systemsix.com> from Steve Passe at "Jan 15, 97 08:21:07 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
Steve Passe wrote...

[ if you want to see the good news, skip down a bit ]

> >	Sorry I took so long to get back on this.  In a nutshell, this is
> >what I have figured out:
> >
> >                           standard SMP kernel   APIC_IO SMP kernel
> >de0 in,  MP v1.1 enabled      works              hangs right before init
> >de0 in,  MP v1.4 enabled      hangs              hangs
> 
> so there is another problem here, I assume this works OK with the UNI-proc
> kernel?

	Actually, I haven't tried MP v1.4 with the uni-proc kernel.

> >de0 out, MP v1.4 enabled      works              works initially, X crashes it
>                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> as Peter just stated, this could be expected for other reasons involving
> the npx code.

	Ahh, I see.  *sigh*

> ---
> >Probing for devices on PCI bus 1:
> >ahc0 <Adaptec 3940 Ultra SCSI host adapter> rev 0 int a irq 17 on pci1:4
> >Freeing (NOT implimented) irq 11 for ISA cards.
> > ...
> >ahc1 <Adaptec 3940 Ultra SCSI host adapter> rev 0 int a irq 18 on pci1:5
> >Freeing (NOT implimented) irq 10 for ISA cards.
> 
> this is what we want to see, the code picked up the proper APIC_IO irqs
> from the MP table!
> 
> ---
> and these are what the entries should look like (1.4 made the difference)
> 
> >Bus:		Bus ID	Type
> >		 0	 PCI   
> >		 1	 PCI   
> >		 2	 ISA   
> >
> >I/O Ints:	Type	Polarity    Trigger	Bus ID	 IRQ	APIC ID	INT#
> > ...
> >		INT	active-lo       level	     1	 4:A	      2	  17
> >		INT	active-lo       level	     1	 5:A	      2	  18
> >		INT	active-lo       level	     0	13:A	      2	  19
> 
> note how the table both uses the correct PCI syntax AND 
> the 2 PCI busses between 4/5 and 13, ie 4/5 are on pci1 while 13 is on
> pci0. (although I would be curious as to whether it would still report
> 2 PCI busses without the 3940 installed...)
> 
> So the remaining question for this system is why the SMC card hangs the
> SMP kernel, both APIC_IO and non-APIC, UNLESS it is set for MP spec v1.1

	Well, I'm not entirely sure why the SMC card was hanging the system,
but I do think it had a whole lot to do with the fact that ahc1 (the second
channel on the 3940UW) was using the *same* interrupt as the SMC card.  As
Arlie Davis pointed out, the 3940 cards seem to steal an interrupt from the
next PCI slot down.  In my case, the SMC card, when it was in, was in the
next PCI slot down from the 3940UW.  

	Well, once I realized the 3940 was grabbing an interrupt, I tried
what Arlie suggested, and cleared a slot next to the 3940.  I now have the
following setup:

Slot 1: Matrox Millenium (IRQ 11)
Slot 2: Adaptec 3940UW   (IRQ 10)
Slot 3: Empty            (IRQ 9)
Slot 4: SMC 10/100 card  (IRQ 15)
Slot 5: Empty            (shares IRQ w/ slot 4)

	Well, *now* the APIC_IO/SMP_INVLTLB kernel works.  I can boot up,
turn on both processors, etc., no problem.  ahc1 now steals IRQ 9 from slot
3, but since there's nothing there, there are no conflicts.  I hard-coded
all of these interrupts to the slots in the BIOS.

	The bad thing, though, is that with this setup, it means I won't be
able to put anything in slot 3.  And if I put anything in slot 5, it'll
have to be able to share an interrupt with the SMC card.

	X still doesn't work in any case, just panics the machine.
According to Peter, it's an NPX problem.  So, I'm still running the non
APIC_IO kernel, since X works under it.

	In case it helps, here's the boot -v output from my
APIC_IO/SMP_INVLTLB kernel.  The top part is truncated, not enough room in
the kernel message buffer I guess.  (anyone know what I need to do to
increase the size of it?)

========================================================================

r> rev 2 on pci0:0
chip1 <Intel 82371SB PCI-ISA bridge> rev 1 on pci0:1:0
chip2 <Intel 82371SB IDE interface> rev 0 on pci0:1:1
	mapreg[20] type=1 addr=0000e800 size=0010.
de0 <Digital 21140 Fast Ethernet> rev 18 int a irq 19 on pci0:9
Freeing (NOT implimented) irq 12 for ISA cards.
	mapreg[10] type=1 addr=0000e000 size=0080.
	mapreg[14] type=0 addr=fa000000 size=0080.
	reg16: ioaddr=0xe000 size=0x80
de0: SMC 9332 21140 [10-100Mb/s] pass 1.2
de0: address 00:00:c0:53:3d:e7
de0: enabling 10baseT port
bpf: de0 attached
chip3 <DEC 21050 PCI-PCI bridge> rev 2 on pci0:11
Freeing (NOT implimented) irq 12 for ISA cards.
	bridge from pci0 to pci1 through 1.
	mapping regs: io:2280d0d0 mem:f9f0f900 pmem:fbf0fbf0
vga0 <VGA-compatible display device> rev 1 int a irq 16 on pci0:12
Freeing (NOT implimented) irq 11 for ISA cards.
	mapreg[10] type=0 addr=f8800000 size=4000.
	mapreg[14] type=0 addr=fb000000 size=800000.
pci0: uses 8405120 bytes of memory from f8800000 upto fbffffff.
pci0: uses 144 bytes of I/O space from d000 upto e80f.
pci0: subordinate busses from 1 upto 1.
Probing for devices on PCI bus 1:
ahc0 <Adaptec 3940 Ultra SCSI host adapter> rev 0 int a irq 17 on pci1:4
Freeing (NOT implimented) irq 10 for ISA cards.
	mapreg[10] type=1 addr=0000d800 size=0100.
	[pci1 uses memory from f9000000 to f9ffffff]
	mapreg[14] type=0 addr=f9800000 size=1000.
	reg20: virtual=0xf98ac000 physical=0xf9800000 size=0x1000
ahc0: Reading SEEPROM...done.
ahc0: aic7880 Wide Channel A, SCSI Id=7, 16 SCBs
ahc0: Reseting Channel A
ahc0: Downloading Sequencer Program...Done
ahc0: Probing channel A
ahc0 waiting for scsi devices to settle
ahc0: target 0 using 16Bit transfers
ahc0: target 0 synchronous at 20.0MHz, offset = 0x8
(ahc0:0:0): "QUANTUM XP34550W LXQ1" type 0 fixed SCSI 2
sd0(ahc0:0:0): Direct-Access 4341MB (8890760 512 byte sectors)
sd0(ahc0:0:0): with 5899 cyls, 10 heads, and an average 150 sectors/track
ahc1 <Adaptec 3940 Ultra SCSI host adapter> rev 0 int a irq 18 on pci1:5
Freeing (NOT implimented) irq 9 for ISA cards.
	mapreg[10] type=1 addr=0000d400 size=0100.
	[pci1 uses memory from f9000000 to f9ffffff]
	mapreg[14] type=0 addr=f9000000 size=1000.
	reg20: virtual=0xf98ad000 physical=0xf9000000 size=0x1000
ahc1: Reading SEEPROM...done.
ahc1: aic7880 Wide Channel B, SCSI Id=7, 16 SCBs
ahc1: Reseting Channel A
ahc1: Downloading Sequencer Program...Done
ahc1: Probing channel A
ahc1 waiting for scsi devices to settle
ahc1: target 4 synchronous at 10.0MHz, offset = 0xf
(ahc1:4:0): "PLEXTOR CD-ROM PX-12CS 1.00" type 5 removable SCSI 2
cd0(ahc1:4:0): CD-ROM can't get the size
pci1: uses 8192 bytes of memory from f9000000 upto f9800fff.
pci1: uses 512 bytes of I/O space from d400 upto d8ff.
Probing for devices on the ISA bus:
sc0 at 0x60-0x6f irq 1 on motherboard
sc0: VGA color <16 virtual consoles, flags=0x0>
sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
sio2: disabled, not probed.
sio3: disabled, not probed.
lpt0 at 0x378-0x37f irq 7 on isa
lpt0: Interrupt-driven port
lp0: TCP/IP capable interface
bpf: lp0 attached
lpt1 not found at 0xffffffff
psm0: disabled, not probed.
fdc0 at 0x3f0-0x3f7 irq 6 drq 2 on isa
fdc0: NEC 72065B
fd0: 1.44MB 3.5in
Checking for GUS Plug-n-Play ...
Board Vendor ID: GRV0001     Board Serial Number: 00000001
oops I didnt find gus 
gus0 not found
npx0 on motherboard
npx0: INT 16 interface
apm0: disabled, not probed.
imasks: bio c0060040, tty f008009a, net f008009a
BIOS Geometries:
 0:0228fe3f 0..552=553 cylinders, 0..254=255 heads, 1..63=63 sectors
 0 accounted for
Device configuration finished.
Considering FFS root f/s.
configure() finished.
DEVFS: ready to run
Enabled INTs: 1, 2, 3, 4, 6, 7, 8, 17, 18, 19, imen: 0x00f1fe21
bpf: tun0 attached
bpf: tun1 attached
bpf: tun2 attached
bpf: sl0 attached
bpf: lo0 attached
IP packet filtering initialized, divert enabled, logging limited to 100 packets/entry
sd0s1: type 0x7, start 63, end = 2040254, size 2040192 : OK
sd0s2: type 0xa5, start 2040255, end = 8883944, size 6843690 : OK
SMP: All idle procs online.
========================================================================

> ---
> >	If there's any more information I can supply, or testing that needs
> >to be done, just let me know.  
> 
> I'll get back to you when I have some free time (several weeks at least...)

	Well, thanks for all your work! 

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?199701160610.BAA09539>