Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Jul 1999 00:53:08 -0400
From:      Christopher Masto <chris@netmonger.net>
To:        current@freebsd.org
Cc:        julian@whistle.com
Subject:   ide_pci.c DMA broken
Message-ID:  <19990722005308.A14871@netmonger.net>

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

Revision 1.36 of sys/pci/ide_pci.c causes DMA problems and a panic on
my laptop:

[...]
Considering FFS root f/s.
changing root device to wd0s1a
Card inserted, slot 0
wd0s1: type 0xa5, start 63, end = 12398399, size 12398337 : OK
wd0s4: type 0xa0, start 12398400, end = 12670559, size 272160 : OK
wd0: DMA failure, DMA status 5<active>
wd0: DMA failure, DMA status 5<active>
start_init: trying /sbin/init
wd0: DMA failure, DMA status 5<active>
wd0: DMA failure, DMA status 5<active>
wd0: DMA failure, DMA status 5<active>
wd0: DMA failure, DMA status 5<active>
wd0: DMA failure, DMA status 5<active>
spec_getpages: preposterous offset 0xffffff1c19d3fc00
vm_fault: pager read error, pid 1 (\M^P\M^A\M-b)
wd0: DMA failure, DMA status 5<active>

Fatal trap 12: page fault while in kernel mode
fault virtual address	= 0x768d2d
fault code		= supervisor read, page not present
instruction pointer	= 0x8:0x768d2d
stack pointer	        = 0x10:0xc63ddd04
frame pointer	        = 0x10:0xeb000000
code segment		= base 0x0, limit 0xfffff, type 0x1b
			= DPL 0, pres 1, def32 1, gran 1
processor eflags	= interrupt enabled, resume, IOPL = 0
current process		= 1 (\M^P\M^A\M-b)
interrupt mask		= net tty bio cam 


Unfortunately, I don't have a serial console attached and the dmesg
buffer is cut off after any ide_pci messages on the bad boot.  I'll be
able to get that information tomorrow if the cause of this problem
isn't clear without it.  I do have the full messages from a successful
boot (the only change was backing ide_pci.c to 1.35):

Copyright (c) 1992-1999 The FreeBSD Project.
Copyright (c) 1982, 1986, 1989, 1991, 1993
	The Regents of the University of California. All rights reserved.
FreeBSD 4.0-CURRENT #0: Thu Jul 22 00:22:46 EDT 1999
    root@habanero.netmonger.net:/usr/local/usr-src/sys/compile/HABANERO
Calibrating clock(s) ... TSC clock: 298385463 Hz, i8254 clock: 1193041 Hz
CLK_USE_I8254_CALIBRATION not specified - using default frequency
Timecounter "i8254"  frequency 1193182 Hz
CLK_USE_TSC_CALIBRATION not specified - using old calibration method
CPU: Pentium/P55C (quarter-micron) (298.42-MHz 586-class CPU)
  Origin = "GenuineIntel"  Id = 0x582  Stepping = 2
  Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX>
real memory  = 67043328 (65472K bytes)
Physical memory chunk(s):
0x00001000 - 0x0009efff, 647168 bytes (158 pages)
0x00314000 - 0x03febfff, 63799296 bytes (15576 pages)
sio0: gdb debugging port
avail memory = 61865984 (60416K bytes)
Found BIOS32 Service Directory header at 0xc00f6d60
Entry = 0xfd7f0 (0xc00fd7f0)  Rev = 0  Len = 1
PCI BIOS entry at 0x214
Other BIOS signatures found:
ACPI: 00000000
$PnP: 000f6d90
Preloaded elf kernel "kernel" at 0xc02fb000.
Intel Pentium detected, installing workaround for F00F bug
Math emulator present
Initializing PnP override table
Probing for PnP devices:
Trying Read_Port at 203
Trying Read_Port at 243
Trying Read_Port at 283
Trying Read_Port at 2c3
Trying Read_Port at 303
Trying Read_Port at 343
Trying Read_Port at 383
Trying Read_Port at 3c3
No Plug-n-Play devices were found
pci_open(1):	mode 1 addr port (0x0cf8) is 0x80000058
pci_open(1a):	mode1res=0x80000000 (0x80000000)
pci_cfgcheck:	device 0 [class=060000] [hdr=00] is there (id=71008086)
npx0: <math processor> on motherboard
npx0: INT 16 interface
i586_bzero() bandwidth = 174155346 bytes/sec
bzero() bandwidth = 719942404 bytes/sec
apm0: <APM BIOS> on motherboard
apm: found APM BIOS version 1.2
pci_open(1):	mode 1 addr port (0x0cf8) is 0x80003b54
pci_open(1a):	mode1res=0x80000000 (0x80000000)
pci_cfgcheck:	device 0 [class=060000] [hdr=00] is there (id=71008086)
pcib0: <Host to PCI bridge> on motherboard
found->	vendor=0x8086, dev=0x7100, revid=0x01
	class=06-00-00, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
found->	vendor=0x8086, dev=0x7110, revid=0x02
	class=06-80-00, hdrtype=0x00, mfdev=1
	subordinatebus=0 	secondarybus=0
found->	vendor=0x8086, dev=0x7111, revid=0x01
	class=01-01-80, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
	map[0]: type 4, range 32, base 0000fcd0, size  4
found->	vendor=0x8086, dev=0x7112, revid=0x01
	class=0c-03-00, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
	intpin=d, irq=9
	map[0]: type 4, range 32, base 0000fce0, size  5
found->	vendor=0x8086, dev=0x7113, revid=0x02
	class=06-80-00, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
found->	vendor=0x10c8, dev=0x0004, revid=0x01
	class=03-00-00, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
	intpin=a, irq=9
	map[0]: type 3, range 32, base fd000000, size 24
	map[1]: type 1, range 32, base fea00000, size 21
	map[2]: type 1, range 32, base fed00000, size 20
found->	vendor=0x104d, dev=0x8009, revid=0x01
	class=0c-00-00, hdrtype=0x00, mfdev=0
	subordinatebus=0 	secondarybus=0
	intpin=a, irq=9
	map[0]: type 1, range 32, base fecffc00, size  9
found->	vendor=0x1180, dev=0x0475, revid=0x00
	class=06-07-00, hdrtype=0x02, mfdev=0
	subordinatebus=0 	secondarybus=0
	intpin=a, irq=255
pci0: <PCI bus> on pcib0
isab0: <Intel 82371AB PCI to ISA bridge> at device 7.0 on pci0
ide_pci0: <Intel PIIX4 Bus-master IDE controller> at device 7.1 on pci0
intel_piix_status: primary master/slave sample = 3, master/slave recovery = 1
intel_piix_status: primary master fastDMAonly disabled, pre/post enabled,
intel_piix_status:  IORDY sampling enabled,
intel_piix_status:  fast PIO enabled
intel_piix_status: primary master/slave sample = 3, master/slave recovery = 1
intel_piix_status: primary slave fastDMAonly disabled, pre/post disabled,
intel_piix_status:  IORDY sampling disabled,
intel_piix_status:  fast PIO disabled
ide_pci: busmaster 0 status: 24 from port: 0000fcd2
ide_pci: ide0:0 has been configured for DMA by BIOS
intel_piix_status: secondary master/slave sample = 5, master/slave recovery = 4
intel_piix_status: secondary master fastDMAonly disabled, pre/post disabled,
intel_piix_status:  IORDY sampling disabled,
intel_piix_status:  fast PIO disabled
intel_piix_status: secondary master/slave sample = 5, master/slave recovery = 4
intel_piix_status: secondary slave fastDMAonly disabled, pre/post disabled,
intel_piix_status:  IORDY sampling disabled,
intel_piix_status:  fast PIO disabled
ide_pci: busmaster 1 status: 04 from port: 0000fcda
uhci0: <Intel 82371AB/EB (PIIX4) USB controller> irq 9 at device 7.2 on pci0
uhci0: USB version 1.0, chip rev. 1
usb0: <Intel 82371AB/EB (PIIX4) USB controller> on uhci0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
intpm0: <Intel 82371AB Power management controller> at device 7.3 on pci0
intpm0: I/O mapped 2180
intpm0: intr IRQ 9 enabled revision 0
	using shared irq9.
intsmb0: <Intel PIIX4 SMBUS Interface>
smbus0: <System Management Bus> on intsmb0
smb0: <SMBus general purpose I/O> on smbus0
intpm0: PM I/O mapped 8000 
vga-pci0: <NeoMagic NM2160 laptop SVGA controller> irq 9 at device 8.0 on pci0
pcic0: <Ricoh RL5C475 PCI-CardBus Brige> at device 10.0 on pci0
PCI Config space:
00:  04751180 02100007 06070000 00020000
10:  00000000 020000dc 00000000 00000000
20:  00000000 00000000 00000000 00000000
30:  00000000 00000000 00000000 008001ff
40:  8030104d 000003e1 00000000 00000000
50:  00000000 00000000 00000000 00000000
60:  00000000 00000000 00000000 00000000
70:  00000000 00000000 00000000 00000000
80:  00000000 00000000 04630463 00000000
90:  00000000 00000000 00000000 00000000
Cardbus Socket registers:
00:  f000ff53: f000ff53: f000e2c3: f000ff53:
10:  f000ff53: f000ff54: f000ac16: f000ff53:
ExCa registers:
00: fb 77 c5 86 c4 c0 c8 02 08 e8 40 91 88 fe 28 e0
10: 8a 66 03 38 e0 72 02 88 e0 bf 05 00 c4 5e 04 50
20: b4 02 cd 13 5b 73 0a 4f 74 1c 30 e4 cd 13 93 eb
30: eb 0f b6 c3 01 46 08 73 03 ff 46 0a d0 e3 00 5e
isa0: <ISA bus> on motherboard
fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f7 irq 6 drq 2 on isa0
fdc0: FIFO enabled, 8 bytes threshold
fd0: <1440-KB 3.5" drive> at fdc0 drive 0
wdc0 at port 0x1f0-0x1f7 irq 14 flags 0xa0ffa0ff on isa0
wdc0: unit 0 (wd0): <TOSHIBA MK6412MAT>, DMA, 32-bit, multi-block-16
wd0: 6194MB (12685680 sectors), 13424 cyls, 15 heads, 63 S/T, 512 B/S
wd0: ATA INQUIRE valid = 0007, dmamword = 0007, apio = 0003, udma = 0407
wdc1: not probed (disabled)
atkbdc0: <keyboard controller (i8042)> at port 0x60-0x6f on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
atkbd: the current kbd controller command byte 0047
atkbd: keyboard ID 0x41ab (2)
kbdc: RESET_KBD return code:00fa
kbdc: RESET_KBD status:00aa
kbd0: atkbd0, AT 101/102 (2), config:0x0, flags:0x3d0000
psm0: current command byte:0047
kbdc: TEST_AUX_PORT status:0000
kbdc: RESET_AUX return code:00fa
kbdc: RESET_AUX status:00aa
kbdc: RESET_AUX ID:0000
psm: status 00 02 64
psm: status 00 00 64
psm: status 00 03 64
psm: status 00 03 64
psm: status 10 00 64
psm: data 08 00 00
psm: data 08 00 00
psm: status 00 02 64
psm0: <PS/2 Mouse> irq 12 on atkbdc0
psm0: model Generic PS/2 mouse, device ID 0-00, 2 buttons
psm0: config:00000000, flags:00000000, packet size:3
psm0: syncmask:c0, syncbits:00
vga0: <Generic ISA VGA> at port 0x3b0-0x3df iomem 0xa0000-0xbffff on isa0
fb0: vga0, vga, type:VGA (5), flags:0x7007f
fb0: port:0x3b0-0x3df, crtc:0x3d4, mem:0xa0000 0x20000
fb0: init mode:24, bios mode:3, current mode:24
fb0: window:0xc00b8000 size:32k gran:32k, buf:0 size:32k
VGA parameters upon power-up
50 18 10 00 00 00 03 00 02 67 5f 4f 50 82 55 81 
bf 1f 00 4f 0d 0e 00 00 05 f0 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 
VGA parameters in BIOS 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 
EGA/VGA parameters to be used 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: <System console> on isa0
sc0: VGA <16 virtual consoles, flags=0x200>
sc0: fb0 kbd0
sio0: irq maps: 0x449 0x459 0x449 0x449
sio0 at port 0x3f8-0x3ff irq 4 flags 0x90 on isa0
sio0: type 16550A
sio1: irq maps: 0x441 0x449 0x441 0x441
sio1 at port 0x2f8-0x2ff irq 3 on isa0
sio1: type 16550A
sio2: irq maps: 0x41 0x441 0x41 0x41
sio2 at port 0x3e8-0x3ef irq 10 on isa0
sio2: type 16550A
ppc: parallel port found at 0x378
ppc: chipset forced to generic
ppc0: ECP SPP ECP+EPP SPP
ppc0 at port 0x378-0x37f irq 7 flags 0x40 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/8 bytes threshold
plip: irq 7
plip0: <PLIP network interface> on ppbus 0
bpf: lp0 attached
lpt0: <generic printer> on ppbus 0
lpt0: Interrupt-driven port
ppi0: <generic parallel i/o> on ppbus 0
mss_probe: no address supplied, try default 0x530
mss_detect error, busy still set (0xff)
sb_probe: no address supplied, try defaults (0x220,0x240)
pcm0 at port 0x220 irq 5 drq 1 on isa0
ESS1868 (rev 11)
	device combination doesn't support shared irq3
	intr_connect(irq3) failed, result=-1
	device combination doesn't support shared irq4
	intr_connect(irq4) failed, result=-1
	device combination doesn't support shared irq5
	intr_connect(irq5) failed, result=-1
	device combination doesn't support shared irq7
	intr_connect(irq7) failed, result=-1
	device combination doesn't support shared irq9
	intr_connect(irq9) failed, result=-1
	device combination doesn't support shared irq10
	intr_connect(irq10) failed, result=-1
	device combination doesn't support shared irq12
	intr_connect(irq12) failed, result=-1
	device combination doesn't support shared irq14
	intr_connect(irq14) failed, result=-1
PC-Card Intel 82365 (5 mem & 2 I/O windows)
pcic: controller irq 11
Initializing PC-card drivers: ep
BIOS Geometries:
 0:0345ef3f 0..837=838 cylinders, 0..239=240 heads, 1..63=63 sectors
 0 accounted for
Device configuration finished.
Considering MFS root f/s.
No MFS image available as root f/s.
IP packet filtering initialized, divert disabled, rule-based forwarding enabled, logging limited to 100 packets/entry
DUMMYNET initialized (990504)
bpf: tun0 attached
bpf: sl0 attached
bpf: ppp0 attached
new masks: bio 40084240, tty 4003149a, net 4007149a
bpf: lo0 attached
Considering FFS root f/s.
changing root device to wd0s1a
Card inserted, slot 0
wd0s1: type 0xa5, start 63, end = 12398399, size 12398337 : OK
wd0s4: type 0xa0, start 12398400, end = 12670559, size 272160 : OK
start_init: trying /sbin/init


And here's the config file:

machine		i386
cpu		I586_CPU
ident		HABANERO
maxusers	64

makeoptions	DEBUG=-g		#Build kernel with gdb(1) debug symbols

options		MATH_EMULATE		#Support for x87 emulation
options		INET			#InterNETworking
options		FFS			#Berkeley Fast Filesystem
options		FFS_ROOT		#FFS usable as root device [keep this!]
options		MFS			#Memory Filesystem
options		MFS_ROOT		#MFS usable as root device, "MFS" req'ed
options		NFS			#Network Filesystem
options		NFS_ROOT		#NFS usable as root device, "NFS" req'ed
options		MSDOSFS			#MSDOS Filesystem
options		CD9660			#ISO 9660 Filesystem
options		CD9660_ROOT		#CD-ROM usable as root. "CD9660" req'ed
options		PROCFS			#Process filesystem
options		COMPAT_43		#Compatible with BSD 4.3 [KEEP THIS!]
options		SCSI_DELAY=15000	#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

controller	isa0
controller	pnp0			# PnP support for ISA
controller	pci0
#controller	pccard0

controller	fdc0	at isa? port IO_FD1 irq 6 drq 2
disk		fd0	at fdc0 drive 0

#controller	ata0
#device		atadisk0	# ATA disk drives
#device		atapicd0	# ATAPI CDROM drives
#device		atapist0	# ATAPI tape drives

controller	wdc0	at isa? port IO_WD1 irq 14 flags 0xa0ffa0ff
disk		wd0	at wdc0 drive 0
disk		wd1	at wdc0 drive 1
controller	wdc1	at isa? disable port IO_WD2 irq 15
disk		wd2	at wdc1 drive 0
disk		wd3	at wdc1 drive 1

# atkbdc0 controls both the keyboard and the PS/2 mouse
controller	atkbdc0	at isa? port IO_KBD
device		atkbd0	at atkbdc? irq 1
device		psm0	at atkbdc? irq 12

# Options for psm:
#options		PSM_HOOKAPM
#options		PSM_RESETAFTERSUSPEND

device		vga0	at isa? port ? conflicts

# splash screen/screen saver
pseudo-device	splash

# syscons is the default console driver, resembling an SCO console
device		sc0	at isa?

device		npx0	at nexus? port IO_NPX irq 13

device		apm0    at nexus? flags 0x20 # Advanced Power Management

device		sio0	at isa? port IO_COM1 flags 0x90 irq 4
device		sio1	at isa? port IO_COM2 irq 3
device		sio2	at isa? port 0x3e8 irq 10

# Parallel port
device		ppc0	at isa? port? flags 0x40 irq 7
controller	ppbus0
device		lpt0	at ppbus?
device		plip0	at ppbus?
device		ppi0	at ppbus?

device ep0 at isa? port 0x300 irq 10

# SMB Bus
controller smbus0
controller intpm0
controller alpm0

device smb0	at smbus?

# PCCARD
controller	card0
device		pcic0 at card?
#device		pcic0

options		PCIC_RESUME_RESET

# Sound
device pcm0 at isa? port ? irq 5 drq 1 flags 0x0
#controller	snd0
#device sb0      at isa? port 0x220 irq 5 drq 1
#device sbxvi0   at isa? drq 5
#device sbmidi0  at isa? port 0x330
#device awe0     at isa? port 0x620

# USB
controller	uhci0
controller	ohci0
controller	usb0

#controller	umass0
device		ums0
device		ukbd0
device		ulpt0
device		uhid0
device		ugen0

pseudo-device	loop
pseudo-device	ether
pseudo-device	sl	1
pseudo-device	ppp	1
pseudo-device	tun	1
pseudo-device	pty	32
pseudo-device	gzip		# Exec gzipped a.out's
pseudo-device	snp	3

# 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 provides support for System V shared memory and message queues.
#
options         SYSVSHM
options         SYSVMSG
options         SYSVSEM

#  The `bpfilter' pseudo-device enables the Berkeley Packet Filter.  Be
#  aware of the legal and administrative consequences of enabling this
#  option.  The number of devices determines the maximum number of
#  simultaneous BPF clients programs runnable.
pseudo-device	bpf	 4	#Berkeley packet filter

#options		NETATALK

options		MSGBUF_SIZE=16384

options		DDB
#options		DDB_UNATTENDED
options		BREAK_TO_DEBUGGER

options		SOFTUPDATES

options		IPFIREWALL
options		IPFIREWALL_VERBOSE
options		IPFIREWALL_FORWARD
options		IPFIREWALL_VERBOSE_LIMIT=100

options		ICMP_BANDLIM
options		DUMMYNET

options		USER_LDT
#options		VM86
#options		VESA

options		P1003_1B
options		_KPOSIX_PRIORITY_SCHEDULING
options		_KPOSIX_VERSION=199309L


I really don't know crap about what's going on in that part of the
kernel, but I'll do whatever I can to help track this down.  Or
perhaps it will be intuitively obvious from this report.
-- 
Christopher Masto         Senior Network Monkey      NetMonger Communications
chris@netmonger.net        info@netmonger.net        http://www.netmonger.net

Free yourself, free your machine, free the daemon -- http://www.freebsd.org/


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




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