Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Oct 1997 10:46:07 -0600 (CST)
From:      "Kent S. Gordon" <kgor@inetspace.com>
To:        jak@cetlink.net
Cc:        dwhite@resnet.uoregon.edu, hackers@FreeBSD.ORG
Subject:   Re: 48 meg double fault moved to 64 meg in 2.2.5
Message-ID:  <199710271646.KAA11254@chess.inetspace.com>
In-Reply-To: <dljU0Y9zBc5e091yn@cetlink.net> (jak@cetlink.net)

next in thread | previous in thread | raw e-mail | index | archive | help
>>>>> "jak" == John Kelly <jak@cetlink.net> writes:

    > Doug White <dwhite@gdi.uoregon.edu> wrote:
    >>> I have extra parts to build a third machine identical to the
    >>> configuration which shows the problem.

    >> Keep us posted.  If you find anything consistent, you should
    >> send it using send-pr and maybe followup to
    >> hackers@freebsd.org.

    > The problem does occur with no SCSI present -- just the
    > motherboard and a video card.  When testing it this way, I had
    > to use the floppy controller on the motherboard instead of the
    > faster one on the Buslogic SCSI card.  That seems to rule out
    > either floppy controller as a cause of the problem.

What is the problem you are seeing with the Buslogic SCSI card?
Which Buslogic SCSI card do you have?
I have a machine that works fine under 2.2.2, but fails on 2.2.5 in
probing the SCSI bus.  I have attached the message that I sent to
FreeBSD-current about the problem.

Date: Wed, 22 Oct 1997 16:02:22 -0500 (CDT)
From: "Kent S. Gordon" <kgor@inetspace.com>
To: current@FreeBSD.ORG
Subject: 2.2.5 identying SCSI disk as Unknown device
X-Loop: FreeBSD.org
Precedence: bulk

I have done some additional investigation since my previous message
(2.2.5BETA hanging in Boot).
I have compiled a custom kernel using the RELENG_2_2_5_RELEASE tag
that is identifing my root disk as an unknown device and hanging in
the boot.  This is on a machines that work great with custom kernel
using the same config file on 2.2.2.  I have changed scsi/scsi_debug.h
to define DEBUGTARG to 0.  Can anyone suggest where I should look to
find out what is the probe to fail?

The following in my copy of messages (I copy by hand so some mistakes
are possible) that appear on the screen during boot

bt0: Bt445S/ 0-ISA(24bit) bus 
bt0: Your card cannot DMA above 16MB boundary. Bounce buffering enabled.
bt0: reading board settings, dma=5, int=11
bt0: version 3.36, fast sync, parity, 32 mbxs, 32 ccbs
bt0: targ 0 sync rate=10.00MB/s(100ns), offset=15
bt0: targ 1 sync rate=10.00MB/s(100ns), offset=15
bt0: Using Strict Round robin scheme

bt0: Using Strict Round robin scheme
bt0 at 0x330 irq 11 drq 5 on isa
bt0 waiting for scsi devices to settle

probe0(bt0:0:0) : scsi_cmd
probe0(bt0:0:0) : scsi_done
(bt0:0:0) command 0,0,0,0,0,0-[0 bytes]
probe0(bt0:0:0) : scsi_cmd
probe0(bt0:0:0) : scsi_done
(bt0:0:0) command 12,0,0,0,2c,0-[44 bytes]
------
0:  00 00 00 00 ..
16: 00 00 00 00 ..
32: 00 00 00 00 .. 
------
(bt0:0:0): "unknown unknown ????" type 13 fixed SCSI 0

uk0(bt0:0:0) :uk0attach:
 uk0(bt0:0:0): Unknown

bt0: not taking commands!

stopped at _Debugger 0x35

The stack trace from the debugger was (I was to lazy to write down
arguments to the function, if needed I can easily get the arguments).
Debugger
bt_time_out
bt_poll
bt_scsi_cmd
scsi_scsi_cmd
scsi_test_unit_ready
scsi_probedev
scsi_probe_bus
scsi_attachdevs
bt_attach
bt_isa_attach
config_isadev_c
config_isadev
isa_configure
configure
main

This is a copy of the kernel config file used.

#
# GGZOO -- Cyrix 586/100 with BT controller
#
# 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: CHESS,v 1.1 1997/04/07 21:35:16 kgor Exp $

machine		"i386"
#cpu		"I386_CPU"
cpu		"I486_CPU"
cpu		"I586_CPU"
#cpu		"I686_CPU"
ident		GGZOO
maxusers	10

options		DDB
options		DIAGNOSTIC
options		SCSIDEBUG

#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		SCSI_DELAY=5		#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
options		SYSVSHM
options		SYSVSEM
options		SYSVMSG
options		"AUTO_EOI_1"		#faster interrupts


config		kernel	root on wd0

controller	isa0
#I have a VLB, but no aha28xx cards, that think they are on a eisa bus.
#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

#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) is sufficient
# for any number of installed devices.
#controller	ncr0
#controller	ahb0
#controller	ahc0

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		ch0	#SCSI media changers

#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

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

#
# Laptop support (see LINT for more options)
#
#device		apm0    at isa?	disable	# Advanced Power Management
#options		APM_BROKEN_STATCLOCK	# Workaround some buggy APM BIOS
# PCCARD (PCMCIA) support
#controller	crd0
#device		pcic0	at crd?
#device		pcic1	at crd?

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 ed0 at isa? port 0x300 net irq  5 iomem 0xd8000 vector edintr
#device ie0 at isa? port 0x360 net irq  7 iomem 0xd0000 vector ieintr
#device ep0 at isa? port 0x300 net irq 10 vector epintr
#device fe0 at isa? port 0x300 net irq ? vector feintr
#device ix0 at isa? port 0x300 net irq 10 iomem 0xd0000 iosiz 32768 vector ixintr
#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	log
#pseudo-device	sl	1
# ijppp uses tun instead of ppp device
#pseudo-device	ppp	1
pseudo-device	tun	1
pseudo-device	pty	32
pseudo-device	bpfilter	4	#Berkeley packet filter
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


This is a copy of the dmesg output from a kernel using
RELENG_2_2_2_RELEASE.

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

FreeBSD 2.2.2-RELEASE #0: Thu Oct  9 08:43:27 CDT 1997
    kgor@chess.inetspace.com:/usr/src/sys/compile/CHESS
Calibrating clock(s) ... i8254 clock: 1193747 Hz
CLK_USE_I8254_CALIBRATION not specified - using default frequency
CPU: i486DX (486-class CPU)
real memory  = 33554432 (32768K bytes)
avail memory = 30666752 (29948K bytes)
Probing for devices on the ISA bus:
sc0: the current keyboard controller command byte 0045
kbdio: RESET_KBD return code:00fa
kbdio: RESET_KBD status:00aa
sc0 at 0x60-0x6f irq 1 on motherboard
sc0: BIOS video mode:3
sc0: VGA registers upon power-up
50 18 10 00 10 00 03 00 02 67 5f 4f 50 82 55 81 
bf 1f 00 4f 0d 0e 00 00 ff ff 9c 8e 8f 28 1f 96 
b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c 
3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff 
sc0: video mode:24
sc0: VGA registers for mode:24
50 18 10 00 10 00 03 00 02 67 5f 4f 50 82 55 81 
bf 1f 00 4f 0d 0e 00 00 00 00 9c 8e 8f 28 1f 96 
b9 a3 ff 00 01 02 03 04 05 14 07 38 39 3a 3b 3c 
3d 3e 3f 0c 00 0f 08 00 00 00 00 00 10 0e 00 ff 
sc0: VGA color <16 virtual consoles, flags=0x0>
ed0 at 0x300-0x31f irq 5 on isa
ed0: address 00:00:e8:cb:ac:1a, type NE2000 (16 bit) 
bpf: ed0 attached
sio0 at 0x3f8-0x3ff irq 4 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
bpf: lp0 attached
fdc0 at 0x3f0-0x3f7 irq 6 drq 2 on isa
fdc0: NEC 765
fd0: 1.44MB 3.5in
fd1: 1.2MB 5.25in
bt0: Bt445S/ 0-ISA(24bit) bus
bt0: Your card cannot DMA above 16MB boundary. Bounce buffering enabled.
bt0: reading board settings, dma=5, int=11
bt0: version 3.36, fast sync, parity, 32 mbxs, 32 ccbs
bt0: targ 0 sync rate=10.00MB/s(100ns), offset=15
bt0: targ 1 sync rate=10.00MB/s(100ns), offset=15
bt0: Using Strict Round robin scheme
bt0 at 0x330 irq 11 drq 5 on isa
bt0 waiting for scsi devices to settle
(bt0:0:0): "DEC DSP5200S T392" type 0 fixed SCSI 2
sd0(bt0:0:0): Direct-Access 1908MB (3907911 512 byte sectors)
sd0(bt0:0:0): with 2621 cyls, 21 heads, and an average 71 sectors/track
(bt0:1:0): "SEAGATE ST31200N 8648" type 0 fixed SCSI 2
sd1(bt0:1:0): Direct-Access 1006MB (2061108 512 byte sectors)
sd1(bt0:1:0): with 2700 cyls, 9 heads, and an average 84 sectors/track
npx0 on motherboard
npx0: INT 16 interface
imasks: bio c0000840, tty c003009a, net c0020020
BIOS Geometries:
 0:03ff3f20 0..1023=1024 cylinders, 0..63=64 heads, 1..32=32 sectors
 1:03ed3f20 0..1005=1006 cylinders, 0..63=64 heads, 1..32=32 sectors
 0 accounted for
Device configuration finished.
Considering FFS root f/s.
changing root device to sd0a
configure() finished.
bpf: tun0 attached
bpf: lo0 attached
sd0s1: type 0xa5, start 32, end = 3907583, size 3907552 : OK
sd1s1: type 0xa5, start 32, end = 2060287, size 2060256 : OK

Thanks,

Kent S. Gordon
Senior Software Engineer
iNetSpace Co.
voice: (972)851-3494 fax:(972)702-0384 e-mail:kgor@inetspace.com


    > I found a CMOS option called "DRAM Hole for UNIX(64MB)" which I
    > enabled to see what would happen.

    > With 64 meg and 2.2.5, the problem disappeared.  But with 48 meg
    > and 2.2.2 it had no effect, and the double fault still occurred.
      > I'm guessing that's because the BIOS does not try to create that
    > DRAM hole unless you fill the board with 64 meg of memory -- as
    > they do say in parentheses "(64MB)."

    > Unfortunately, I can't keep the "DRAM hole" enabled, because
    > after a reboot the memory test fails, and the only cure is the
    > hardware reset button.  Even if I could leave it enabled, it's
    > of no help at all with 48 meg and the 2.2.2 boot floppy.

    > The memory test failure after a reboot may happen because this
    > motherboard does not have address line 26 wired to the chipset,
    > and thus anything over 64 meg cannot be addressed properly.
    > Presumably, to create the "DRAM hole," the BIOS remaps some
    > memory from below the 64 meg line to above 64 meg, and once it's
    > put there, it can no longer be seen, since A26 is unusable -- at
    > least not by the chipset (although A26 is wired between the CPU
    > and the local bus).

    > I learned about the A26 problem on this motherboard when I tried
    > using the linear addressing feature of XFree86 with my Cirrus
    > 5430 video card.  Although the video card tries to use the A26
    > line to remap its memory above the 64 meg line, the motherboard
    > could not handle it.  The XFree docs have a good explanation of
    > this situation in X11R6/lib/X11/doc/README.cirrus.

    > But as for the motherboard and the boot floppy problem, I don't
    > understand the purpose of the "DRAM hole for UNIX," although it
    > clearly does have a positive effect on the boot floppy problem
    > when it's activated with 64 meg in the machine.

    > Is it true that this problem only occurs with the boot floppy?
    > The last good message I see with the 2.2.2 boot floppy and 48
    > meg is "changing root device to fd0c," and then immediately the
    > "panic: double fault" appears.

    > Since floppy controllers use DMA, perhaps DMA and the bounce
    > buffers are an issue?  Addressing memory remapped above 64 meg
    > may also be part of the problem, at least on this motherboard.

    > I did find an interesting tidbit in Messmer's "Indispensable PC
    > Hardware Book" (second edition).  On page 621 he says:

    >     "DMA transfer is not a trivial job, especially when paging
    > is enabled, even for the operating system ... as the DMA
    > controller overwrites the physical memory contents mercilessly
    > without any care for the protection mechanisms of the protected
    > mode ... an incorrectly initialized DMA chip may ...  crash
    > ... the complete computer system."

    > Hmmm... sounds familiar.

    > Oh well, I've reached the limits of my knowledge in these areas.
    > I hope my report is of some help to the experts.

    > John

Kent S. Gordon
Senior Software Engineer
iNetSpace Co.
voice: (972)851-3494 fax:(972)702-0384 e-mail:kgor@inetspace.com





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