Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Jan 1997 04:04:10 -0500 (EST)
From:      Kenneth Merry <ken@housing1.stucen.gatech.edu>
To:        smp@csn.net
Cc:        smp@freebsd.org
Subject:   success!!
Message-ID:  <199701190904.EAA20041@housing1.stucen.gatech.edu>

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

	Well, I'm writing this from my machine, running X, with all of the
cards installed an autoconfigured by the BIOS, with an APIC_IO kernel,
using version 1.4 of the MP spec.

	So what happened?  Well, I was recompiling my kernel, and noticed a
few extraneous options in the config file that I had forgotten to delete.
(just copied the generic kernel config file, and then deleted some things,
and added options I needed)  Also, I ran mptable tonight, with all the
cards installed, and noticed that NINTR=15 had changed to NINTR=17.  One of
the extraneous options that I forgot to delete was options MATH_EMULATE.
That was most likely the source of my X problems.

	So, I recompiled the kernel, booted, and then tried X, and
everything seems to work.  :)  I installed an additional ethernet card last
night, and it wasn't working properly with the SMP kernels.  That was most
likely because of the number of interrutps.

	Here is the current slot configuration, and the interrupts that the
BIOS has (automatically) assigned:

PCI Slot 1: SMC 10/100      (IRQ 14) (de1)
PCI Slot 2: TRENDnet 10/100 (IRQ 3)  (de0)
PCI Slot 3: no card installed
PCI Slot 4: Adaptec 3940UW  (channel 1 - IRQ 5, channel 2 - IRQ 14)
PCI Slot 5: Matrox Millenium (IRQ 5)

ISA Slot:  Gravis Ultrasound PnP Pro

	Here is the output of mptable -dmesg -verbose:



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

MPTable, version 2.0.5

 looking for EBDA pointer @ 0x040e, found, searching EBDA @ 0x0009fc00
 searching CMOS 'top of mem' @ 0x0009f800 (638K)
 searching default 'top of mem' @ 0x0009fc00 (639K)
 searching BIOS @ 0x000f0000

 MP FPS found in BIOS @ physical addr: 0x000f60b0

-------------------------------------------------------------------------------

MP Floating Pointer Structure:

  location:			BIOS
  physical address:		0x000f60b0
  signature:			'_MP_'
  length:			16 bytes
  version:			1.4
  checksum:			0x8b
  mode:				Virtual Wire

-------------------------------------------------------------------------------

MP Config Table Header:

  physical address:		0x000f5caa
  signature:			'PCMP'
  base table length:		268
  version:			1.4
  checksum:			0xd5
  OEM ID:			'OEM00000'
  Product ID:			'PROD00000000'
  OEM table pointer:		0x00000000
  OEM table size:		0
  entry count:			25
  local APIC address:		0xfee00000
  extended table length:	0
  extended table checksum:	0

-------------------------------------------------------------------------------

MP Config Base Table Entries:

--
Processors:	APIC ID	Version	State		Family	Model	Step	Flags
		 1	 0x11	 BSP, usable	 6	 1	 7	 0xfbff
		 0	 0x11	 AP, usable	 6	 1	 7	 0xfbff
--
Bus:		Bus ID	Type
		 0	 PCI   
		 1	 PCI   
		 2	 ISA   
--
I/O APICs:	APIC ID	Version	State		Address
		 2	 0x11	 usable		 0xfec00000
--
I/O Ints:	Type	Polarity    Trigger	Bus ID	 IRQ	APIC ID	INT#
		ExtINT	 conforms    conforms	     2	   0	      2	   0
		INT	 conforms    conforms	     2	   1	      2	   1
		INT	 conforms    conforms	     2	   0	      2	   2
		INT	 conforms    conforms	     2	   4	      2	   4
		INT	 conforms    conforms	     2	   6	      2	   6
		INT	 conforms    conforms	     2	   7	      2	   7
		INT	 conforms    conforms	     2	   8	      2	   8
		INT	 conforms    conforms	     2	   9	      2	   9
		INT	 conforms    conforms	     2	  10	      2	  10
		INT	 conforms    conforms	     2	  11	      2	  11
		INT	 conforms    conforms	     2	  12	      2	  12
		INT	 conforms    conforms	     2	  15	      2	  15
		INT	active-lo       level	     1	 4:A	      2	  19
		INT	active-lo       level	     1	 5:A	      2	  16
		INT	active-lo       level	     0	11:A	      2	  17
		INT	active-lo       level	     0	12:A	      2	  16
		INT	active-lo       level	     0	13:A	      2	  19
--
Local Ints:	Type	Polarity    Trigger	Bus ID	 IRQ	APIC ID	INT#
		ExtINT	active-hi        edge	     2	   0	    255	   0
		NMI	active-hi        edge	     2	   0	    255	   1

-------------------------------------------------------------------------------

# SMP kernel config file options:

options		SMP			# Symmetric MultiProcessor Kernel
options		APIC_IO			# Symmetric (APIC) I/O
options		NCPU=2			# number of CPUs
options		NBUS=3			# number of busses
options		NAPIC=1			# number of IO APICs
options		NINTR=17		# number of INTs
options		SMP_INVLTLB		# 
#options		SMP_PRIVPAGES		# BROKEN, DO NOT use!
#options		SMP_AUTOSTART		# BROKEN, DO NOT use!
#options		SERIAL_DEBUG		# com port debug output

-------------------------------------------------------------------------------

dmesg output:

Copyright (c) 1992-1996 FreeBSD Inc.
Copyright (c) 1982, 1986, 1989, 1991, 1993
	The Regents of the University of California.  All rights reserved.

FreeBSD 3.0-SMP #0: Sun Jan 19 03:25:32 EST 1997
    ken@panzer.res.gatech.edu:/usr/src/sys-SMP/compile/panzer
FreeBSD/SMP: Multiprocessor motherboard
 cpu0 (BSP): apic id: 1, version: 0x00040011
 cpu1 (AP):  apic id: 0, version: 0x00040011
 io0 (APIC): apic id: 2, version: 0x00170011
Calibrating clock(s) relative to mc146818A clock ... i8254 clock: 1193160 Hz
CLK_USE_I8254_CALIBRATION not specified - using default frequency
CPU: Pentium Pro (686-class CPU)
  Origin = "GenuineIntel"  Id = 0x617  Stepping=7
  Features=0xfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,<b11>,MTRR,PGE,MCA,CMOV>
real memory  = 134217728 (131072K bytes)
avail memory = 129282048 (126252K bytes)
DEVFS: ready for devices
pcibus_setup(1):	mode 1 addr port (0x0cf8) is 0x8000005c
pcibus_setup(1a):	mode1res=0x80000000 (0x80000000)
pcibus_check:	device 0 is there (id=12378086)
Probing for devices on PCI bus 0:
	configuration mode 1 allows 32 devices.
chip0 <Intel 82440FX (Natoma) PCI and memory controller> 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.
chip3 <DEC 21050 PCI-PCI bridge> rev 2 on pci0:9
	bridge from pci0 to pci1 through 1.
	mapping regs: io:2280d0d0 mem:fae0f980 pmem:fbf0fbf0
de0 <Digital 21140A Fast Ethernet> rev 32 int a irq 17 on pci0:11
Freeing (NOT implimented) irq 3 for ISA cards.
	mapreg[10] type=1 addr=0000c800 size=0080.
	mapreg[14] type=0 addr=f9000000 size=0080.
	reg16: ioaddr=0xc800 size=0x80
de0: 21140A [10-100Mb/s] pass 2.0
de0: address 00:40:05:2f:cf:ec
de0: enabling 100baseTX port
bpf: de0 attached
de1 <Digital 21140 Fast Ethernet> rev 18 int a irq 16 on pci0:12
Freeing (NOT implimented) irq 14 for ISA cards.
	mapreg[10] type=1 addr=0000c400 size=0080.
	mapreg[14] type=0 addr=f8800000 size=0080.
	reg16: ioaddr=0xc400 size=0x80
de1: SMC 9332 21140 [10-100Mb/s] pass 1.2
de1: address 00:00:c0:53:3d:e7
de1: enabling 10baseT port
bpf: de1 attached
vga0 <VGA-compatible display device> rev 1 int a irq 19 on pci0:13
Freeing (NOT implimented) irq 5 for ISA cards.
	mapreg[10] type=0 addr=f8000000 size=4000.
	mapreg[14] type=0 addr=fb000000 size=800000.
pci0: uses 8405248 bytes of memory from f8000000 upto fbffffff.
pci0: uses 272 bytes of I/O space from c400 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 19 on pci1:4
Freeing (NOT implimented) irq 5 for ISA cards.
	mapreg[10] type=1 addr=0000d800 size=0100.
	[pci1 uses memory from f9800000 to faefffff]
	mapreg[14] type=0 addr=fa000000 size=1000.
	reg20: virtual=0xf98a9000 physical=0xfa000000 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 16 on pci1:5
Freeing (NOT implimented) irq 14 for ISA cards.
	mapreg[10] type=1 addr=0000d400 size=0100.
	[pci1 uses memory from f9800000 to faefffff]
	mapreg[14] type=0 addr=f9800000 size=1000.
	reg20: virtual=0xf98aa000 physical=0xf9800000 size=0x1000
	using shared irq 16.
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 f9800000 upto fa000fff.
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: disabled, not probed.
lpt0: disabled, not probed.
lpt1: disabled, not probed.
psm0: current command byte:0047
psm0: status after reset 00 02 64
psm: status b1 03 c8 (get_mouse_buttons)
psm0: status 00 02 64
psm0 at 0x60-0x64 irq 12 on motherboard
psm0: device ID 0, 3 buttons?
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
gus0 at 0x220 irq 11 drq 5 flags 0x6 on isa
 at 0x32c dma 6,5
 at 0x220 irq 11 dma 5,6

npx0 on motherboard
npx0: INT 16 interface
imasks: bio c0090040, tty f0031012, net f0031012
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, 4, 6, 8, 11, 12, 16, 17, 19, imen: 0x00f4e6a9
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
WARNING: / was not properly dismounted.
SMP: All idle procs online.
SMP: Starting 1st AP!
SMP: AP CPU #1 LAUNCHED!!  Starting Scheduling...
SMP: TADA! CPU #1 made it into the scheduler!.
SMP: All 2 CPU's are online!

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

	And here is my kernel config file.  If anyone sees any stupid
options in here, please tell me!  :)


===============================================================================
#
# GENERIC -- Generic machine with WD/AHx/NCR/BTx family disks
#
# For more information read the handbook part System Administration -> 
# Configuring the FreeBSD Kernel -> The Configuration File. 
# The handbook is available in /usr/share/doc/handbook or online as
# latest version from the FreeBSD World Wide Web server 
# <URL:http://www.FreeBSD.ORG/>;
#
# An exhaustive list of options and more detailed explanations of the 
# device lines is present in the ./LINT configuration file. If you are 
# in doubt as to the purpose or necessity of a line, check first in LINT.
#
#	$Id: GENERIC,v 1.77.2.1 1996/12/21 02:10:50 se Exp $

machine		"i386"
# cpu		"I386_CPU"
# cpu		"I486_CPU"
cpu		"I586_CPU"
cpu		"I686_CPU"
ident		panzer
maxusers	128

# options		MATH_EMULATE		#Support for x87 emulation
options		INET			#InterNETworking
options		FFS			#Berkeley Fast Filesystem
options		NFS			#Network Filesystem
options		MSDOSFS			#MSDOS Filesystem
options		"CD9660"		#ISO 9660 Filesystem
options		PROCFS			#Process filesystem
options		"COMPAT_43"		#Compatible with BSD 4.3 [KEEP THIS!]
options		SCSI_DELAY=15		#Be pessimistic about Joe SCSI device
options		UCONSOLE		#Allow users to grab the console
options		USERCONFIG		#boot -c editor
options		VISUAL_USERCONFIG	#visual boot -c editor
options		CHILD_MAX=128
options		OPEN_MAX=128
options		SYSVSHM
options		SYSVSEM
options		SYSVMSG
options		KTRACE
options		MROUTING
options		IPFIREWALL
options		IPFIREWALL_VERBOSE
options		"IPFIREWALL_VERBOSE_LIMIT=100"
options		IPDIVERT
options		DEVFS
options		"MAXMEM=(128*1024)"
options		MAXCONS=16
# options		AHC_TAGENABLE
# options		AHC_SCBPAGING_ENABLE
options		AHC_ALLOW_MEMIO
options		SMP                     # Symmetric MultiProcessor Kernel
options		APIC_IO                 # Symmetric (APIC) I/O
options		NCPU=2                  # number of CPUs
options		NBUS=3                  # number of busses
options		NAPIC=1                 # number of IO APICs
options		NINTR=17                # number of INTs
options		SMP_INVLTLB             # 
#options                SMP_PRIVPAGES           # BROKEN, DO NOT use!
#options                SMP_AUTOSTART           # BROKEN, DO NOT use!
#options                SERIAL_DEBUG            # com port debug output


config		kernel	root on sd0

controller	isa0
# controller	eisa0
controller	pci0

controller	fdc0	at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
disk		fd0	at fdc0 drive 0
disk		fd1	at fdc0 drive 1
# tape		ft0	at fdc0 drive 2

# controller	wdc0	at isa? port "IO_WD1" bio irq 14 vector wdintr
# disk		wd0	at wdc0 drive 0
# disk		wd1	at wdc0 drive 1

# A single entry for any of these controllers (ncr, ahb, ahc, amd) is
# sufficient for any number of installed devices.
controller	ahc0
#options		"AHC_FORCE_PIO"		# Some motherboards choke on MemI/O,
					# so use PIO in the ahc driver in the
					# generic kernel.


controller	scbus0

device		sd0

device		od0	#See LINT for possible `od' options.

device		st0

device		cd0	#Only need one of these, the code dynamically grows

controller	snd0
device		gus0 at isa? vector gusintr
# device		gus0 at isa? port 0x220 irq 11 drq 1 flags 0x3 vector gusintr

# syscons is the default console driver, resembling an SCO console
device		sc0	at isa? port "IO_KBD" tty irq 1 vector scintr

# Mandatory, don't remove
device		npx0	at isa? port "IO_NPX" irq 13 vector npxintr

device		sio0	at isa? port "IO_COM1" tty irq 4 vector siointr
device		sio1	at isa? disable port "IO_COM2" tty irq 3 vector siointr

device		lpt0	at isa? disable port? tty irq 7 vector lptintr
device		lpt1	at isa? disable port? tty

device		psm0	at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr

# Order is important here due to intrusive probes, do *not* alphabetize
# this list of network interfaces until the probes have been fixed.
# Right now it appears that the ie0 must be probed before ep0. See
# revision 1.20 of this file.
device de0
# device fxp0
# device vx0

# device ed0 at isa? port 0x280 net irq  5 iomem 0xd8000 vector edintr

pseudo-device	loop
pseudo-device	ether
pseudo-device	log
pseudo-device	sl	1
# ijppp uses tun instead of ppp device
#pseudo-device	ppp	1
pseudo-device	tun	3
pseudo-device	pty	128
pseudo-device	gzip		# Exec gzipped a.out's
pseudo-device	bpfilter	4
pseudo-device	snp	3
===============================================================================

	Well, I'm glad everything is working, and sorry I didn't realize
what was going on a little sooner.  The PCI bus explanations by Steve,
Terry, Doug, and others have been most helpful.  If there are any more
tests I can run, just lemme know.  :)

Thanks,

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?199701190904.EAA20041>