Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 May 1998 17:03:07 -0700 (PDT)
From:      Ted Mittelstaedt the Almighty System Admin <tedm@portsoft.com>
To:        FreeBSD-gnats-submit@FreeBSD.ORG, tedm@portsoft.com
Subject:   kern/6628: Tyan Tomcat III locks SMP-GENERIC kernel on boot
Message-ID:  <199805140003.RAA00450@test.portsoft.com>

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

>Number:         6628
>Category:       kern
>Synopsis:       Tyan Tomcat III locks SMP-GENERIC kernel, 3.0-980426-SNAP
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:
>Keywords:
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed May 13 17:10:03 PDT 1998
>Last-Modified:
>Originator:     Ted Mittelstaedt
>Organization:
Portland Software Inc.
>Release:        FreeBSD 3.0-980426-SNAP i386
>Environment:

Installed FreeBSD 3.0 snapshot on a Tyan Tomcat III system, 64MB of ram,
1 Adaptec 2940 PCI Ultra SCSI card, 1 Adaptec 2940 PCI Ultra Wide SCSI
card with a 8GB Seagate Wide SCSI disk on it, motherboard BIOS version 4.01.
Output of dmesg and mptable follows:

Copyright (c) 1992-1998 FreeBSD Inc.
Copyright (c) 1982, 1986, 1989, 1991, 1993
	The Regents of the University of California. All rights reserved.
FreeBSD 3.0-980426-SNAP #0: Sun Apr 26 10:14:16 GMT 1998
    root@make.ican.net:/usr/src/sys/compile/GENERIC
Timecounter "i8254"  frequency 1193182 Hz  cost 2537 ns
CPU: Pentium (199.43-MHz 586-class CPU)
  Origin = "GenuineIntel"  Id = 0x52c  Stepping=12
  Features=0x3bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,APIC>
real memory  = 67108864 (65536K bytes)
avail memory = 62423040 (60960K bytes)
Probing for devices on PCI bus 0:
chip0: <Intel 82439> rev 0x03 on pci0.0.0
chip1: <Intel 82371SB PCI to ISA bridge> rev 0x01 on pci0.7.0
ide_pci0: <Intel PIIX3 Bus-master IDE controller> rev 0x00 on pci0.7.1
chip2: <Intel 82371SB USB host controller> rev 0x01 int d irq 15 on pci0.7.2
fxp0: <Intel EtherExpress Pro 10/100B Ethernet> rev 0x02 int a irq 15 on pci0.17.0
fxp0: Ethernet address 00:a0:c9:5a:7c:c1
vga0: <Cirrus Logic GD5446 SVGA controller> rev 0x00 int a irq 12 on pci0.18.0
ahc0: <Adaptec 2940 Ultra SCSI host adapter> rev 0x00 int a irq 9 on pci0.19.0
ahc0: aic7880 Wide Channel, SCSI Id=7, 16 SCBs
ahc0: waiting for scsi devices to settle
scbus0 at ahc0 bus 0
sd0 at scbus0 target 0 lun 0
sd0: <SEAGATE ST19171W 0023> type 0 fixed SCSI 2
sd0: Direct-Access 8683MB (17783112 512 byte sectors)
ahc1: <Adaptec 2940 Ultra SCSI host adapter> rev 0x00 int a irq 11 on pci0.20.0
ahc1: aic7880 Single Channel, SCSI Id=7, 16 SCBs
ahc1: waiting for scsi devices to settle
scbus1 at ahc1 bus 0
cd0 at scbus1 target 3 lun 0
cd0: <NEC CD-ROM DRIVE:462 1.16> type 5 removable SCSI 2
cd0: CD-ROM can't get the size
st0 at scbus1 target 6 lun 0
st0: <ARCHIVE Python 00095-001 5.45> type 1 removable SCSI 2
st0: Sequential-Access density code 0x13,  drive empty
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 flags 0x10 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
lpt0 at 0x378-0x37f irq 7 on isa
lpt0: Interrupt-driven port
lp0: TCP/IP capable interface
lpt1 at 0x378-0x37f on isa
lpt1 not probed due to I/O address conflict with lpt0 at 0x378
mse0 not found at 0x23c
psm0 not found at 0x60
fdc0 at 0x3f0-0x3f7 irq 6 drq 2 on isa
fdc0: FIFO enabled, 8 bytes threshold
fd0: 1.44MB 3.5in
wdc0 not found at 0x1f0
wdc1 not found at 0x170
npx0 on motherboard
npx0: INT 16 interface
Intel Pentium F00F detected, installing workaround
changing root device to sd0s1a
WARNING: / was not properly dismounted.



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

MPTable, version 2.0.12

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

MP Floating Pointer Structure:

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

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

MP Config Table Header:

  physical address:		0x000f5a74
  signature:			'PCMP'
  base table length:		396
  version:			1.1
  checksum:			0x3a
  OEM ID:			'OEM00000'
  Product ID:			'PROD00000000'
  OEM table pointer:		0x00000000
  OEM table size:		0
  entry count:			28
  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
		 0	 0x11	 BSP, usable	 5	 2	 1	 0x07bf
		 1	 0x11	 AP, usable	 5	 2	 1	 0x07bf
--
Bus:		Bus ID	Type
		 0	 PCI   
		 1	 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	     1	   0	      2	   0
		INT	 conforms    conforms	     1	   1	      2	   1
		INT	 conforms    conforms	     1	   0	      2	   2
		INT	 conforms    conforms	     1	   3	      2	   3
		INT	 conforms    conforms	     1	   4	      2	   4
		INT	 conforms    conforms	     1	   5	      2	   5
		INT	 conforms    conforms	     1	   6	      2	   6
		INT	 conforms    conforms	     1	   7	      2	   7
		INT	 conforms    conforms	     1	   8	      2	   8
		INT	 conforms    conforms	     1	   9	      2	   9
		INT	 conforms    conforms	     1	  10	      2	  10
		INT	 conforms    conforms	     1	  11	      2	  11
		INT	 conforms    conforms	     1	  12	      2	  12
		INT	 conforms    conforms	     1	  13	      2	  13
		INT	 conforms    conforms	     1	  14	      2	  14
		INT	 conforms    conforms	     1	  15	      2	  15
		INT	active-lo       level	     0	20:A	      2	  16
		INT	active-lo       level	     0	19:A	      2	  17
		INT	active-lo       level	     0	18:A	      2	  18
		INT	active-lo       level	     0	17:A	      2	  19
		SMI	 conforms    conforms	     1	   0	      2	  23
--
Local Ints:	Type	Polarity    Trigger	Bus ID	 IRQ	APIC ID	INT#
		ExtINT	 conforms    conforms	     0	 0:A	    255	   0
		NMI	 conforms    conforms	     0	 0:A	    255	   1

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

# SMP kernel config file options:


# Required:
options		SMP			# Symmetric MultiProcessor Kernel
options		APIC_IO			# Symmetric (APIC) I/O

# Useful:
#options		SMP_AUTOSTART		# start the additional CPUs during boot

# Optional (built-in defaults will work in most cases):
#options		NCPU=2			# number of CPUs
#options		NBUS=2			# number of busses
#options		NAPIC=1			# number of IO APICs
#options		NINTR=24		# number of INTs

# Rogue hardware:
#
#  Tyan Tomcat II:
#options		SMP_TIMER_NC		# 
#
#  SuperMicro P6DNE:
#options		SMP_TIMER_NC		# 

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


# SMP kernel config file options:


# Required:
options		SMP			# Symmetric MultiProcessor Kernel
options		APIC_IO			# Symmetric (APIC) I/O

# Useful:
#options		SMP_AUTOSTART		# start the additional CPUs during boot

# Optional (built-in defaults will work in most cases):
#options		NCPU=2			# number of CPUs
#options		NBUS=2			# number of busses
#options		NAPIC=1			# number of IO APICs
#options		NINTR=24		# number of INTs

# Rogue hardware:
#
#  Tyan Tomcat II:
#options		SMP_TIMER_NC		# 
#
#  SuperMicro P6DNE:
#options		SMP_TIMER_NC		# 

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

>Description:


After compiling the SMP kernel and installing it, a reboot produces a list of
all the devices, then as soon as the second CPU is started the system locks up.
I cold-booted several times, once it actually started running /etc/rc but 
locked about a half-second into it.

Rebooting the system under a uniprocessor kernel that I compiled works fine
without any detected problems. 

>How-To-Repeat:


Compile the SMP kernel and restart, the kernel configuration file I used is
as follows:


#
# SMP-GENERIC -- Smp 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: SMP-GENERIC,v 1.11 1998/04/22 18:18:14 mjacob Exp $

machine		"i386"
# SMP does NOT support 386/486 CPUs.
#cpu		"I386_CPU"
#cpu		"I486_CPU"

cpu		"I586_CPU"
# cpu		"I686_CPU"
ident		TESTME
maxusers	30

# Create a SMP capable kernel (mandatory options):
options		SMP			# Symmetric MultiProcessor Kernel
options		APIC_IO			# Symmetric (APIC) I/O

# Optional, these are the defaults:
#options		NCPU=2			# number of CPUs
#options		NBUS=4			# number of busses
#options		NAPIC=1			# number of IO APICs
#options		NINTR=24		# number of INTs

# Lets always enable the kernel debugger for SMP.
options		DDB

# SMP shouldn't need x87 emulation, disable by default.
#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		BOUNCE_BUFFERS		#include support for DMA bounce buffers
options		UCONSOLE		#Allow users to grab the console
options		FAILSAFE		#Be conservative
options		USERCONFIG		#boot -c editor
options		VISUAL_USERCONFIG	#visual boot -c editor

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

# options		"CMD640"	# work around CMD640 chip deficiency
# controller	wdc0	at isa? port "IO_WD1" bio irq 14 vector wdintr
# disk		wd0	at wdc0 drive 0
# disk		wd1	at wdc0 drive 1

# controller	wdc1	at isa? port "IO_WD2" bio irq 15 vector wdintr
# disk		wd2	at wdc1 drive 0
# disk		wd3	at wdc1 drive 1

# options		ATAPI		#Enable ATAPI support for IDE bus
# options		ATAPI_STATIC	#Don't do it as an LKM
# device		wcd0	#IDE CD-ROM

# A single entry for any of these controllers (ncr, ahb, ahc, amd) is
# sufficient for any number of installed devices.
# controller	ncr0
# controller	amd0
# controller	ahb0
controller	ahc0
# controller	isp0

# controller	bt0	at isa? port "IO_BT0" bio irq ? vector bt_isa_intr
# controller	uha0	at isa? port "IO_UHA0" bio irq ? drq 5 vector uhaintr
# controller	aha0	at isa? port "IO_AHA0" bio irq ? drq 5 vector ahaintr
# controller	aic0	at isa? port 0x340 bio irq 11 vector aicintr
# controller	nca0	at isa? port 0x1f88 bio irq 10 vector ncaintr
# controller	nca1	at isa? port 0x350 bio irq 5 vector ncaintr
# controller	sea0	at isa? bio irq 5 iomem 0xc8000 iosiz 0x2000 vector seaintr

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

# device		wt0	at isa? port 0x300 bio irq 5 drq 1 vector wtintr
# device		mcd0	at isa? port 0x300 bio irq 10 vector mcdintr

# controller	matcd0	at isa? port 0x230 bio

# device		scd0	at isa? port 0x230 bio

# syscons is the default console driver, resembling an SCO console
device		sc0	at isa? port "IO_KBD" tty irq 1 vector scintr
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device		vt0	at isa? port "IO_KBD" tty irq 1 vector pcrint
#options		PCVT_FREEBSD=210	# pcvt running on FreeBSD >= 2.0.5
options		XSERVER			# include code for XFree86
#options		FAT_CURSOR		# start with block cursor
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options		PCVT_SCANSET=2		# IBM keyboards are non-std

device		npx0	at isa? port "IO_NPX" irq 13 vector npxintr

#
# Laptop support (see LINT for more options)
#
# device		apm0    at isa?	disable	flags 0x31 # Advanced Power Management

# PCCARD (PCMCIA) support
#controller	card0
#device		pcic0	at card?
#device		pcic1	at card?

device		sio0	at isa? port "IO_COM1" tty irq 4 vector siointr
device		sio1	at isa? port "IO_COM2" tty irq 3 vector siointr
device		sio2	at isa? disable port "IO_COM3" tty irq 5 vector siointr
device		sio3	at isa? disable port "IO_COM4" tty irq 9 vector siointr

device		lpt0	at isa? port? tty irq 7 vector lptintr
# device		lpt1	at isa? port? tty
# device		mse0	at isa? port 0x23c tty irq 5 vector mseintr

# device		psm0	at isa? disable 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
# device ed1 at isa? port 0x300 net irq  5 iomem 0xd8000 vector edintr
# device ie0 at isa? port 0x300 net irq 10 iomem 0xd0000 vector ieintr
# device ie1 at isa? port 0x360 net irq  7 iomem 0xd0000 vector ieintr
# device ep0 at isa? port 0x300 net irq 10 vector epintr
# device ex0 at isa? port? net irq? vector exintr
# device fe0 at isa? port 0x300 net irq ? vector feintr
# device le0 at isa? port 0x300 net irq 5 iomem 0xd0000 vector le_intr
# device lnc0 at isa? port 0x280 net irq 10 drq 0 vector lncintr
# device ze0 at isa? port 0x300 net irq 5 iomem 0xd8000 vector zeintr
# device zp0 at isa? port 0x300 net irq 10 iomem 0xd8000 vector zpintr

pseudo-device	loop
pseudo-device	ether
pseudo-device	sl	1
# iijppp uses tun instead of ppp device
#pseudo-device	ppp	1
pseudo-device	tun	1
pseudo-device	pty	16
pseudo-device	gzip		# Exec gzipped a.out's

# KTRACE enables the system-call tracing facility ktrace(2).
# This adds 4 KB bloat to your kernel, and slightly increases
# the costs of each syscall.
options		KTRACE		#kernel tracing


>Fix:

Maybe bring back the option "SMP_TIMER_NC" to fix it?  It looks like an
earlier SMP kernel did work on this hardware until the APIC_IO became
required.

Unfortunately, I only had about 4 hours to test on this machine - if 3.0
had run SMP we would have used this as a server, but since it won't the
system is consigned to use as an NT system and won't be generally available
in the future.  Oh well.
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



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