Subject: Re: uvm_pagefaults in 1.5.3 & 1.6
To: None <don+nbsdtk@resun.com>
From: Peter. Bex <Peter.Bex@student.kun.nl>
List: tech-kern
Date: 10/16/2002 16:28:24
Hello again,

Hm.. Frank van der Linden posed something interesting. (DMA bug on VIA)
I'm about to download the latest BIOS flash, then I'll give it a test run.
I'll post results.

Meanwhile, some more information about my system to play with:

dmesg output:
-------------------------------------------------------------------------------
NetBSD 1.6 (FROHIKE-DEBUG) #0: Wed Oct 16 01:52:41 GMT 2002
    airhead@vhe-382807:/usr/src/sys/arch/i386/compile/FROHIKE-DEBUG
cpu0: AMD Athlon Model 4 (Thunderbird) (686-class), 1002.32 MHz
cpu0: I-cache 64 KB 64b/line 2-way, D-cache 64 KB 64b/line 2-way
cpu0: L2 cache 256 KB 64b/line 16-way
cpu0: features 183f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR>
cpu0: features 183f9ff<PGE,MCA,CMOV,FGPAT,PSE36,MMX>
cpu0: features 183f9ff<FXSR>
total memory = 511 MB
avail memory = 468 MB
using 6144 buffers containing 26296 KB of memory
BIOS32 rev. 0 found at 0xfb3f0
mainbus0 (root)
pnpbios0 at mainbus0: nodes 15, max len 78
pckbc1 at pnpbios0 index 4 (PNP0303): kbd port
pnpbios0: length mismatch in node 7: used 66 of 78 Bytes
pckbc2 at pnpbios0 index 10 (PNP0F13): aux port
com4 at pnpbios0 index 13 (PNP0501)
com4: io 3f8-3ff, irq 4
com4: ns16550a, working fifo
com5 at pnpbios0 index 14 (PNP0501)
com5: io 2f8-2ff, irq 3
com5: ns16550a, working fifo
lpt1 at pnpbios0 index 15 (PNP0400)
lpt1: io 378-37f, irq 7
pckbd0 at pckbc1 (kbd slot)
pckbc1: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard
pms0 at pckbc1 (aux slot)
pckbc1: using irq 12 for aux slot
wsmouse0 at pms0 mux 0
pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
pchb0 at pci0 dev 0 function 0
pchb0: vendor 0x1106 product 0x0305 (rev. 0x03)
agp0 at pchb0: aperture at 0xe8000000, size 0x10000000
ppb0 at pci0 dev 1 function 0: vendor 0x1106 product 0x8305 (rev. 0x00)
pci1 at ppb0 bus 1
pci1: i/o space, memory space enabled
vga1 at pci1 dev 0 function 0: vendor 0x10de product 0x0110 (rev. 0xb2)
wsdisplay0 at vga1 kbdmux 1: console (80x25, vt100 emulation), using wskbd0
wsmux1: connecting to wsdisplay0
pcib0 at pci0 dev 7 function 0
pcib0: vendor 0x1106 product 0x0686 (rev. 0x40)
pciide0 at pci0 dev 7 function 1: VIA Technologies VT82C686A (Apollo KX133) ATA100 controller
pciide0: bus-master DMA support present
pciide0: primary channel configured to compatibility mode
atapibus0 at pciide0 channel 0: 2 targets
cd0 at atapibus0 drive 1: <AOpen   12X DVD-ROM/ASH     01112001, , R22> type 5 cdrom removable
cd0: 32-bit data port
cd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 2 (Ultra/33)
wd0 at pciide0 channel 0 drive 0: <Maxtor 33073H3>
wd0: drive supports 16-sector PIO transfers, LBA addressing
wd0: 29312 MB, 16383 cyl, 16 head, 63 sec, 512 bytes/sect x 60032448 sectors
wd0: 32-bit data port
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
pciide0: primary channel interrupting at irq 14
wd0(pciide0:0:0): using PIO mode 4, DMA mode 2 (using DMA data transfers)
cd0(pciide0:0:1): using PIO mode 4, Ultra-DMA mode 2 (Ultra/33) (using DMA data transfers)
pciide0: secondary channel configured to compatibility mode
atapibus1 at pciide0 channel 1: 2 targets
cd1 at atapibus1 drive 0: <AOPEN   CD-RW CRW1232 A, , 1.01> type 5 cdrom removable
cd1: 32-bit data port
cd1: drive supports PIO mode 4, DMA mode 2
pciide0: secondary channel interrupting at irq 15
cd1(pciide0:1:0): using PIO mode 4, DMA mode 2 (using DMA data transfers)
vendor 0x1106 product 0x3038 (USB serial bus, revision 0x16) at pci0 dev 7 function 2 not configured
vendor 0x1106 product 0x3038 (USB serial bus, revision 0x16) at pci0 dev 7 function 3 not configured
vendor 0x1106 product 0x3057 (miscellaneous bridge, revision 0x40) at pci0 dev 7 function 4 not configured
auvia0 at pci0 dev 7 function 5: VIA VT82C686A AC'97 Audio (rev 0x50)
auvia0: interrupting at irq 10
auvia0: ADS96 codec; headphone, Analog Devices Phat Stereo
audio0 at auvia0: full duplex, mmap, independent
mtd0 at pci0 dev 10 function 0: vendor 0x1516 product 0x0803 (rev. 0x00)
ukphy0 at mtd0 phy 0: Generic IEEE 802.3u media interface
ukphy0: OUI 0x00032d, model 0x0000, rev. 0
ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
mtd0: using irq 10 for interrupt
isa0 at pcib0
pcppi0 at isa0 port 0x61
sysbeep0 at pcppi0
isapnp0 at isa0 port 0x279: ISA Plug 'n Play device support
npx0 at isa0 port 0xf0-0xff: using exception 16
fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2
fd0 at fdc0 drive 0: 1.44MB, 80 cyl, 2 head, 18 sec
isapnp0: no ISA Plug 'n Play devices found
apm0 at mainbus0: Power Management spec V1.2 (slowidle)
biomask eb65 netmask ef65 ttymask ffe7
boot device: wd0
root on wd0a dumps on wd0b
mountroot: trying msdos...
mountroot: trying cd9660...
mountroot: trying ntfs...
mountroot: trying nfs...
mountroot: trying ext2fs...
mountroot: trying ffs...
root file system type: ffs
init: copying out path `/sbin/init' 11
wsdisplay0: screen 1 added (80x25, vt100 emulation)
wsdisplay0: screen 2 added (80x25, vt100 emulation)
wsdisplay0: screen 3 added (80x25, vt100 emulation)
wsdisplay0: screen 4 added (80x25, vt100 emulation)
wsdisplay0: screen 5 added (80x25, vt100 emulation)
wsdisplay0: screen 6 added (80x25, vt100 emulation)
wsdisplay0: screen 7 added (80x25, vt100 emulation)
-------------------------------------------------------------------------------

Configuration file: (Removed some comments for brevity)
-------------------------------------------------------------------------------
include 	"arch/i386/conf/std.i386"
maxusers	32		# estimated number of users

# CPU support.  At least one is REQUIRED.
options 	I686_CPU

# CPU-related options.
options 	USER_LDT	# user-settable LDT; used by WINE
options 	MTRR		# memory-type range register syscall support
options 	PERFCTRS	# performance-monitoring counters support

# Standard system options
options 	UCONSOLE	# users can use TIOCCONS (for xconsole)
options 	INSECURE	# disable kernel security levels
options 	RTC_OFFSET=0	# hardware clock is this many mins. west of GMT
options 	NTP		# NTP phase/frequency locked loop
options 	KTRACE		# system call tracing via ktrace(1)
options 	SYSVMSG		# System V-like message queues
options 	SYSVSEM		# System V-like semaphores
options 	SYSVSHM		# System V-like memory sharing
options 	LKM		# loadable kernel modules

# Diagnostic/debugging support options
options 	DIAGNOSTIC	# expensive kernel consistency checks
options 	DEBUG		# expensive debugging checks/support
options 	KMEMSTATS	# kernel memory statistics (vmstat -m)
options 	DDB		# in-kernel debugger
options 	DDB_HISTORY_SIZE=512	# enable history editing in DDB
makeoptions	DEBUG="-g"	# compile full symbol table

# Compatibility options
options 	COMPAT_15	# NetBSD 1.5,

# File systems
file-system 	FFS		# UFS
file-system 	EXT2FS		# second extended file system (linux)
file-system 	NFS		# Network File System client
file-system 	NTFS		# Windows/NT file system (experimental)
file-system 	CD9660		# ISO 9660 + Rock Ridge file system
file-system 	MSDOSFS		# MS-DOS file system
file-system 	KERNFS		# /kern
file-system 	PROCFS		# /proc
# File system options
options 	FFS_EI		# FFS Endian Independent support
options 	SOFTDEP		# FFS soft updates support.
options 	NFSSERVER	# Network File System server

# Networking options
options 	INET		# IP + ICMP + TCP + UDP
options 	NETATALK	# AppleTalk networking protocols
options 	PPP_BSDCOMP	# BSD-Compress compression support for PPP
options 	PPP_DEFLATE	# Deflate compression support for PPP
options 	PPP_FILTER	# Active filter support for PPP (requires bpf)
options 	PFIL_HOOKS	# pfil(9) packet filter hooks
options 	IPFILTER_LOG	# ipmon(8) log support
options 	NFS_BOOT_DHCP,NFS_BOOT_BOOTPARAM

# wscons options
# builtin terminal emulations
options 	WSEMUL_VT100		# VT100 / VT220 emulation
# different kernel output - see dev/wscons/wsdisplayvar.h
options 	WS_KERNEL_FG=WSCOL_GREEN
#options 	WS_KERNEL_BG=WSCOL_BLACK
# compatibility to other console drivers
options 	WSDISPLAY_COMPAT_PCVT		# emulate some ioctls
options 	WSDISPLAY_COMPAT_SYSCONS	# emulate some ioctls
options 	WSDISPLAY_COMPAT_USL		# VT handling
options 	WSDISPLAY_COMPAT_RAWKBD		# can get raw scancodes
options 	PCDISPLAY_SOFTCURSOR

# Kernel root file system and dump configuration.
config		netbsd	root on ? type ?
mainbus0 at root
apm0	at mainbus0			# Advanced power management

# Plug-and-Play BIOS and attached devices
pnpbios*	at mainbus?

# com port
com*		at pnpbios? index ?	# serial ports

# parallel port
lpt*		at pnpbios? index ?	# parallel ports

pckbc*		at pnpbios? index ?	# PC keyboard/mouse controller

# PCI bus support
pci*	at mainbus? bus ?
pci*	at pchb? bus ?
pci*	at ppb? bus ?

# PCI bridges
pchb*	at pci? dev ? function ?	# PCI-Host bridges
pceb*	at pci? dev ? function ?	# PCI-EISA bridges
pcib*	at pci? dev ? function ?	# PCI-ISA bridges
ppb*	at pci? dev ? function ?	# PCI-PCI bridges
# XXX 'puc's aren't really bridges, but there's no better place for them here
puc*	at pci? dev ? function ?	# PCI "universal" comm. cards

agp* 	at pchb?

# EISA bus support
eisa0	at mainbus?
eisa0	at pceb?

# ISA bus support
isa0	at mainbus?
isa0	at pceb?
isa0	at pcib?

# Math Coprocessor support
npx0	at isa? port 0xf0 irq 13	# x86 math coprocessor

# wscons
pckbc0		at isa?			# pc keyboard controller
pckbd*		at pckbc?		# PC keyboard
pms*		at pckbc?		# PS/2 mouse for wsmouse
vga0		at isa?
vga*		at pci? dev ? function ?
wsdisplay*	at vga? console ?
wskbd* 		at pckbd? console ?
wsmouse*	at pms? mux 0

pcppi0		at isa?
sysbeep0	at pcppi?

# Serial Devices
# PCI serial interfaces
com*	at puc? port ?			# 16x50s on "universal" comm boards
cy*	at pci? dev ? function ?	# Cyclades Cyclom-Y serial boards
cz*	at pci? dev ? function ?	# Cyclades-Z multi-port serial boards

# ISA Plug-and-Play serial interfaces
com*	at isapnp?			# Modems and serial boards

# ISA serial interfaces
com0	at isa? port 0x3f8 irq 4	# Standard PC serial ports
com1	at isa? port 0x2f8 irq 3
com2	at isa? port 0x3e8 irq 5
com3	at isa? port 0x2e8 irq 9

# PCI parallel printer interfaces
lpt*	at puc? port ?			# || ports on "universal" comm boards

# ISA parallel printer interfaces
lpt0	at isa? port 0x378 irq 7	# standard PC parallel ports

# VIA VT82C686A hardware monitor
#viapm*	at pci? dev ? function ?
#viaenv* at viapm?
# ** note: I don't use the hardware monitor at all, so it's disabled.

# IDE and related devices
# PCI IDE controllers - see pciide(4) for supported hardware.
# The 0x0001 flag force the driver to use DMA, even if the driver doesn't know
# how to set up DMA modes for this chip. This may work, or may cause
# a machine hang with some controllers.
pciide* at pci? dev ? function ? flags 0x0000

# ISA Plug-and-Play IDE controllers
wdc*	at isapnp?

# ISA ST506, ESDI, and IDE controllers
# Use flags 0x01 if you want to try to use 32bits data I/O (the driver will
# fall back to 16bits I/O if 32bits I/O are not functional).
# Some controllers pass the initial 32bit test, but will fail later.
wdc0	at isa? port 0x1f0 irq 14 flags 0x00
wdc1	at isa? port 0x170 irq 15 flags 0x00

# IDE drives
# Flags are used only with controllers that support DMA operations
# and mode settings (e.g. some pciide controllers)
# The lowest order four bits (rightmost digit) of the flags define the PIO
# mode to use, the next set of four bits the DMA mode and the third set the
# UltraDMA mode. For each set of four bits, the 3 lower bits define the mode
# to use, and the last bit must be 1 for this setting to be used.
# For DMA and UDMA, 0xf (1111) means 'disable'.
# 0x0fac means 'use PIO mode 4, DMA mode 2, disable UltraDMA'.
# (0xc=1100, 0xa=1010, 0xf=1111)
# 0x0000 means "use whatever the drive claims to support".
wd*	at wdc? channel ? drive ? flags 0x0f00
wd*	at pciide? channel ? drive ? flags 0x0f00
# ** note: See, no udma :)


# ATAPI bus support
atapibus* at wdc? channel ?
atapibus* at pciide? channel ?

# ATAPI devices
# flags have the same meaning as for IDE drives.
cd*	at atapibus? drive ? flags 0x0000	# ATAPI CD-ROM drives

# Miscellaneous mass storage devices
# ISA floppy
fdc0	at isa? port 0x3f0 irq 6 drq 2	# standard PC floppy controllers
fd*	at fdc? drive ?			# the drives themselves

# Network Interfaces
# PCI network interfaces
mtd*	at pci? dev ? function ?	# Myson MTD803 3-in-1 Ethernet
# ** note: This is my own driver, it's still to be uploaded to CVS by the tech-net people. :)

# MII/PHY support
ukphy*	at mii? phy ?			# generic unknown PHYs
# ** Needed for the MTD803

# Audio Devices
# PCI audio devices
auvia*	at pci? dev ? function ?	# VIA VT82C686A integrated AC'97 Audio

# OPL[23] FM synthesizers
opl0	at isa? port 0x388	# use only if not attached to sound card

# Audio support
audio*	at auvia?

# MPU 401 UARTs
mpu*	at isa? port 0x330 irq 9	# MPU401 or compatible card

# MIDI support
midi*	at mpu?			# MPU 401
midi*	at opl?			# OPL FM synth

# ** Note: Haven't had the time to check if these sound stuff works. There's music in Windows, but that could be emulated or so.

# Mice
# ISA busmice
lms0	at isa? port 0x23c irq 5	# Logitech bus mouse
lms1	at isa? port 0x238 irq 5
mms0	at isa? port 0x23c irq 5	# Microsoft InPort mouse
mms1	at isa? port 0x238 irq 5
wsmouse*	at lms? mux 0
wsmouse*	at mms? mux 0

# Joysticks
joy*		at pnpbios? index ?	# Game port

# ISA Plug-and-Play joysticks
joy*	at isapnp?			# Game ports (usually on audio cards)

# PCI joysticks
joy*	at pci?				# Game ports (usually on audio cards)

pseudo-device	md		1	# memory disk device (ramdisk)
pseudo-device	vnd		4	# disk-like interface to files

# network pseudo-devices
pseudo-device	bpfilter	8	# Berkeley packet filter
pseudo-device	ipfilter		# IP filter (firewall) and NAT
pseudo-device	loop			# network loopback
pseudo-device	ppp		2	# Point-to-Point Protocol
pseudo-device	pppoe			# PPP over Ethernet (RFC 2516)
pseudo-device	vlan			# IEEE 802.1q encapsulation
pseudo-device	bridge			# simple inter-network bridging

# miscellaneous pseudo-devices
pseudo-device	pty			# pseudo-terminals
pseudo-device	tb		1	# tablet line discipline
pseudo-device	sequencer	1	# MIDI sequencer
# rnd works; RND_COM does not on port i386 yet.
pseudo-device	rnd			# /dev/random and in-kernel generator
pseudo-device	clockctl		# user control of clock subsystem

# wscons pseudo-devices
pseudo-device	wsmux			# mouse & keyboard multiplexor
pseudo-device	wsfont

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

HTH

"The process of preparing programs for a digital computer
is especially attractive, not only because it can be economically
and scientifically rewarding, but also because it can be an aesthetic
experience much like composing poetry or music."
        --Donald Knuth