Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 7 Nov 2011 13:45:18 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r227306 - in stable/8: . contrib/bsnmp/snmpd contrib/top contrib/xz gnu/usr.bin lib/libusb release/picobsd/floppy.tree/sbin sbin/geom/class/sched share/man/man4 share/misc sys/amd64/con...
Message-ID:  <201111071345.pA7DjIVu081689@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marius
Date: Mon Nov  7 13:45:18 2011
New Revision: 227306
URL: http://svn.freebsd.org/changeset/base/227306

Log:
  MFC: r227006, r227281, r227282
  
  Add a PCI front-end to esp(4) allowing it to support AMD Am53C974 and
  replace amd(4) with the former in the amd64, i386 and pc98 GENERIC kernel
  configuration files. Besides duplicating functionality, amd(4), which
  previously also supported the AMD Am53C974, unlike esp(4) is no longer
  maintained and has accumulated enough bit rot over time to always cause
  a panic during boot as long as at least one target is attached to it
  (see PR 124667).
  
  PR:		124667
  Obtained from:	NetBSD (based on)

Added:
  stable/8/sys/dev/esp/am53c974reg.h
     - copied unchanged from r227006, head/sys/dev/esp/am53c974reg.h
  stable/8/sys/dev/esp/esp_pci.c
     - copied unchanged from r227006, head/sys/dev/esp/esp_pci.c
Modified:
  stable/8/UPDATING   (contents, props changed)
  stable/8/share/man/man4/esp.4
  stable/8/sys/amd64/conf/GENERIC
  stable/8/sys/conf/NOTES
  stable/8/sys/conf/files
  stable/8/sys/i386/conf/GENERIC
  stable/8/sys/modules/Makefile
  stable/8/sys/modules/esp/Makefile
  stable/8/sys/pc98/conf/GENERIC
  stable/8/sys/sparc64/conf/GENERIC
Directory Properties:
  stable/8/   (props changed)
  stable/8/COPYRIGHT   (props changed)
  stable/8/LOCKS   (props changed)
  stable/8/MAINTAINERS   (props changed)
  stable/8/Makefile   (props changed)
  stable/8/Makefile.inc1   (props changed)
  stable/8/ObsoleteFiles.inc   (props changed)
  stable/8/README   (props changed)
  stable/8/bin/   (props changed)
  stable/8/bin/chio/   (props changed)
  stable/8/bin/chmod/   (props changed)
  stable/8/bin/cp/   (props changed)
  stable/8/bin/csh/   (props changed)
  stable/8/bin/date/   (props changed)
  stable/8/bin/df/   (props changed)
  stable/8/bin/echo/   (props changed)
  stable/8/bin/ed/   (props changed)
  stable/8/bin/expr/   (props changed)
  stable/8/bin/getfacl/   (props changed)
  stable/8/bin/kenv/   (props changed)
  stable/8/bin/kill/   (props changed)
  stable/8/bin/ln/   (props changed)
  stable/8/bin/ls/   (props changed)
  stable/8/bin/mv/   (props changed)
  stable/8/bin/pax/   (props changed)
  stable/8/bin/pkill/   (props changed)
  stable/8/bin/ps/   (props changed)
  stable/8/bin/pwait/   (props changed)
  stable/8/bin/setfacl/   (props changed)
  stable/8/bin/sh/   (props changed)
  stable/8/bin/sleep/   (props changed)
  stable/8/bin/stty/   (props changed)
  stable/8/bin/test/   (props changed)
  stable/8/cddl/compat/opensolaris/   (props changed)
  stable/8/cddl/contrib/dtracetoolkit/   (props changed)
  stable/8/cddl/contrib/opensolaris/   (props changed)
  stable/8/cddl/lib/   (props changed)
  stable/8/cddl/lib/libnvpair/   (props changed)
  stable/8/cddl/lib/libzpool/   (props changed)
  stable/8/cddl/sbin/   (props changed)
  stable/8/cddl/usr.bin/   (props changed)
  stable/8/cddl/usr.sbin/   (props changed)
  stable/8/contrib/   (props changed)
  stable/8/contrib/bind9/   (props changed)
  stable/8/contrib/binutils/   (props changed)
  stable/8/contrib/bsnmp/   (props changed)
  stable/8/contrib/bsnmp/snmpd/bsnmpd.1   (props changed)
  stable/8/contrib/bzip2/   (props changed)
  stable/8/contrib/com_err/   (props changed)
  stable/8/contrib/csup/   (props changed)
  stable/8/contrib/ee/   (props changed)
  stable/8/contrib/expat/   (props changed)
  stable/8/contrib/file/   (props changed)
  stable/8/contrib/gcc/   (props changed)
  stable/8/contrib/gdb/   (props changed)
  stable/8/contrib/gdtoa/   (props changed)
  stable/8/contrib/groff/   (props changed)
  stable/8/contrib/ipfilter/   (props changed)
  stable/8/contrib/less/   (props changed)
  stable/8/contrib/libpcap/   (props changed)
  stable/8/contrib/libstdc++/   (props changed)
  stable/8/contrib/lukemftp/   (props changed)
  stable/8/contrib/ncurses/   (props changed)
  stable/8/contrib/netcat/   (props changed)
  stable/8/contrib/ntp/   (props changed)
  stable/8/contrib/nvi/   (props changed)
  stable/8/contrib/one-true-awk/   (props changed)
  stable/8/contrib/openbsm/   (props changed)
  stable/8/contrib/openpam/   (props changed)
  stable/8/contrib/pf/   (props changed)
  stable/8/contrib/sendmail/   (props changed)
  stable/8/contrib/tcp_wrappers/   (props changed)
  stable/8/contrib/tcpdump/   (props changed)
  stable/8/contrib/tcsh/   (props changed)
  stable/8/contrib/telnet/   (props changed)
  stable/8/contrib/top/   (props changed)
  stable/8/contrib/top/install-sh   (props changed)
  stable/8/contrib/traceroute/   (props changed)
  stable/8/contrib/wpa/   (props changed)
  stable/8/contrib/xz/   (props changed)
  stable/8/contrib/xz/AUTHORS   (props changed)
  stable/8/contrib/xz/COPYING   (props changed)
  stable/8/contrib/xz/ChangeLog   (props changed)
  stable/8/contrib/xz/FREEBSD-Xlist   (props changed)
  stable/8/contrib/xz/FREEBSD-upgrade   (props changed)
  stable/8/contrib/xz/README   (props changed)
  stable/8/contrib/xz/THANKS   (props changed)
  stable/8/contrib/xz/TODO   (props changed)
  stable/8/contrib/xz/po/   (props changed)
  stable/8/contrib/xz/src/   (props changed)
  stable/8/crypto/heimdal/   (props changed)
  stable/8/crypto/openssh/   (props changed)
  stable/8/crypto/openssl/   (props changed)
  stable/8/etc/   (props changed)
  stable/8/games/factor/   (props changed)
  stable/8/games/fortune/   (props changed)
  stable/8/games/grdc/   (props changed)
  stable/8/games/pom/   (props changed)
  stable/8/gnu/lib/csu/   (props changed)
  stable/8/gnu/lib/libgcc/   (props changed)
  stable/8/gnu/lib/libstdc++/   (props changed)
  stable/8/gnu/usr.bin/   (props changed)
  stable/8/gnu/usr.bin/Makefile   (props changed)
  stable/8/gnu/usr.bin/binutils/ld/   (props changed)
  stable/8/gnu/usr.bin/cc/cc_tools/   (props changed)
  stable/8/gnu/usr.bin/cc/include/   (props changed)
  stable/8/gnu/usr.bin/dialog/   (props changed)
  stable/8/gnu/usr.bin/gdb/   (props changed)
  stable/8/gnu/usr.bin/gdb/arch/sparc64/   (props changed)
  stable/8/gnu/usr.bin/gdb/kgdb/   (props changed)
  stable/8/gnu/usr.bin/groff/   (props changed)
  stable/8/gnu/usr.bin/patch/   (props changed)
  stable/8/include/   (props changed)
  stable/8/kerberos5/lib/libgssapi_krb5/   (props changed)
  stable/8/kerberos5/lib/libgssapi_spnego/   (props changed)
  stable/8/kerberos5/usr.bin/kdestroy/   (props changed)
  stable/8/kerberos5/usr.bin/kpasswd/   (props changed)
  stable/8/lib/   (props changed)
  stable/8/lib/bind/   (props changed)
  stable/8/lib/csu/   (props changed)
  stable/8/lib/libarchive/   (props changed)
  stable/8/lib/libbluetooth/   (props changed)
  stable/8/lib/libc/   (props changed)
  stable/8/lib/libc/stdtime/   (props changed)
  stable/8/lib/libc_r/   (props changed)
  stable/8/lib/libcam/   (props changed)
  stable/8/lib/libcompat/   (props changed)
  stable/8/lib/libdevinfo/   (props changed)
  stable/8/lib/libdevstat/   (props changed)
  stable/8/lib/libdisk/   (props changed)
  stable/8/lib/libedit/   (props changed)
  stable/8/lib/libelf/   (props changed)
  stable/8/lib/libexpat/   (props changed)
  stable/8/lib/libfetch/   (props changed)
  stable/8/lib/libgeom/   (props changed)
  stable/8/lib/libgpib/   (props changed)
  stable/8/lib/libgssapi/   (props changed)
  stable/8/lib/libjail/   (props changed)
  stable/8/lib/libkse/   (props changed)
  stable/8/lib/libkvm/   (props changed)
  stable/8/lib/liblzma/   (props changed)
  stable/8/lib/libmagic/   (props changed)
  stable/8/lib/libmemstat/   (props changed)
  stable/8/lib/libpam/   (props changed)
  stable/8/lib/libpmc/   (props changed)
  stable/8/lib/libproc/   (props changed)
  stable/8/lib/libradius/   (props changed)
  stable/8/lib/librpcsec_gss/   (props changed)
  stable/8/lib/librtld_db/   (props changed)
  stable/8/lib/libsm/   (props changed)
  stable/8/lib/libstand/   (props changed)
  stable/8/lib/libtacplus/   (props changed)
  stable/8/lib/libthr/   (props changed)
  stable/8/lib/libthread_db/   (props changed)
  stable/8/lib/libufs/   (props changed)
  stable/8/lib/libugidfw/   (props changed)
  stable/8/lib/libusb/   (props changed)
  stable/8/lib/libusb/usb.h   (props changed)
  stable/8/lib/libusbhid/   (props changed)
  stable/8/lib/libutil/   (props changed)
  stable/8/lib/libz/   (props changed)
  stable/8/lib/libz/contrib/   (props changed)
  stable/8/lib/msun/   (props changed)
  stable/8/libexec/   (props changed)
  stable/8/libexec/comsat/   (props changed)
  stable/8/libexec/ftpd/   (props changed)
  stable/8/libexec/rshd/   (props changed)
  stable/8/libexec/rtld-elf/   (props changed)
  stable/8/libexec/tftpd/   (props changed)
  stable/8/release/   (props changed)
  stable/8/release/doc/en_US.ISO8859-1/hardware/   (props changed)
  stable/8/release/picobsd/   (props changed)
  stable/8/release/picobsd/floppy.tree/sbin/   (props changed)
  stable/8/release/picobsd/floppy.tree/sbin/dhclient-script   (props changed)
  stable/8/release/picobsd/qemu/   (props changed)
  stable/8/release/picobsd/tinyware/login/   (props changed)
  stable/8/release/powerpc/   (props changed)
  stable/8/rescue/   (props changed)
  stable/8/sbin/   (props changed)
  stable/8/sbin/atacontrol/   (props changed)
  stable/8/sbin/bsdlabel/   (props changed)
  stable/8/sbin/camcontrol/   (props changed)
  stable/8/sbin/conscontrol/   (props changed)
  stable/8/sbin/ddb/   (props changed)
  stable/8/sbin/devd/   (props changed)
  stable/8/sbin/devfs/   (props changed)
  stable/8/sbin/dhclient/   (props changed)
  stable/8/sbin/dump/   (props changed)
  stable/8/sbin/dumpfs/   (props changed)
  stable/8/sbin/fdisk/   (props changed)
  stable/8/sbin/fsck/   (props changed)
  stable/8/sbin/fsck_ffs/   (props changed)
  stable/8/sbin/fsck_msdosfs/   (props changed)
  stable/8/sbin/fsirand/   (props changed)
  stable/8/sbin/geom/   (props changed)
  stable/8/sbin/geom/class/multipath/   (props changed)
  stable/8/sbin/geom/class/part/   (props changed)
  stable/8/sbin/geom/class/sched/gsched.8   (props changed)
  stable/8/sbin/geom/class/stripe/   (props changed)
  stable/8/sbin/ggate/   (props changed)
  stable/8/sbin/growfs/   (props changed)
  stable/8/sbin/gvinum/   (props changed)
  stable/8/sbin/hastctl/   (props changed)
  stable/8/sbin/hastd/   (props changed)
  stable/8/sbin/ifconfig/   (props changed)
  stable/8/sbin/ipfw/   (props changed)
  stable/8/sbin/iscontrol/   (props changed)
  stable/8/sbin/kldload/   (props changed)
  stable/8/sbin/kldstat/   (props changed)
  stable/8/sbin/mdconfig/   (props changed)
  stable/8/sbin/mdmfs/   (props changed)
  stable/8/sbin/mknod/   (props changed)
  stable/8/sbin/mksnap_ffs/   (props changed)
  stable/8/sbin/mount/   (props changed)
  stable/8/sbin/mount_cd9660/   (props changed)
  stable/8/sbin/mount_msdosfs/   (props changed)
  stable/8/sbin/mount_nfs/   (props changed)
  stable/8/sbin/mount_unionfs/   (props changed)
  stable/8/sbin/natd/   (props changed)
  stable/8/sbin/newfs/   (props changed)
  stable/8/sbin/newfs_msdos/   (props changed)
  stable/8/sbin/ping6/   (props changed)
  stable/8/sbin/quotacheck/   (props changed)
  stable/8/sbin/rcorder/   (props changed)
  stable/8/sbin/reboot/   (props changed)
  stable/8/sbin/restore/   (props changed)
  stable/8/sbin/route/   (props changed)
  stable/8/sbin/routed/   (props changed)
  stable/8/sbin/setkey/   (props changed)
  stable/8/sbin/shutdown/   (props changed)
  stable/8/sbin/spppcontrol/   (props changed)
  stable/8/sbin/sysctl/   (props changed)
  stable/8/sbin/tunefs/   (props changed)
  stable/8/sbin/umount/   (props changed)
  stable/8/secure/   (props changed)
  stable/8/secure/lib/libcrypto/   (props changed)
  stable/8/secure/lib/libssl/   (props changed)
  stable/8/secure/usr.bin/bdes/   (props changed)
  stable/8/secure/usr.bin/openssl/   (props changed)
  stable/8/share/dict/   (props changed)
  stable/8/share/doc/papers/devfs/   (props changed)
  stable/8/share/doc/papers/jail/   (props changed)
  stable/8/share/doc/smm/01.setup/   (props changed)
  stable/8/share/examples/   (props changed)
  stable/8/share/examples/cvsup/   (props changed)
  stable/8/share/man/   (props changed)
  stable/8/share/man/man1/   (props changed)
  stable/8/share/man/man3/   (props changed)
  stable/8/share/man/man4/   (props changed)
  stable/8/share/man/man5/   (props changed)
  stable/8/share/man/man7/   (props changed)
  stable/8/share/man/man8/   (props changed)
  stable/8/share/man/man9/   (props changed)
  stable/8/share/misc/   (props changed)
  stable/8/share/misc/bsd-family-tree   (props changed)
  stable/8/share/mk/   (props changed)
  stable/8/share/skel/   (props changed)
  stable/8/share/syscons/   (props changed)
  stable/8/share/termcap/   (props changed)
  stable/8/share/timedef/   (props changed)
  stable/8/share/zoneinfo/   (props changed)
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/tools/   (props changed)
  stable/8/tools/build/mk/   (props changed)
  stable/8/tools/build/options/   (props changed)
  stable/8/tools/debugscripts/   (props changed)
  stable/8/tools/kerneldoc/subsys/   (props changed)
  stable/8/tools/regression/acct/   (props changed)
  stable/8/tools/regression/acltools/   (props changed)
  stable/8/tools/regression/aio/aiotest/   (props changed)
  stable/8/tools/regression/bin/   (props changed)
  stable/8/tools/regression/bin/date/   (props changed)
  stable/8/tools/regression/bin/sh/   (props changed)
  stable/8/tools/regression/bin/test/   (props changed)
  stable/8/tools/regression/doat/   (props changed)
  stable/8/tools/regression/fifo/   (props changed)
  stable/8/tools/regression/geom/   (props changed)
  stable/8/tools/regression/lib/libc/   (props changed)
  stable/8/tools/regression/lib/msun/test-conj.t   (props changed)
  stable/8/tools/regression/mqueue/mqtest1/   (props changed)
  stable/8/tools/regression/mqueue/mqtest2/   (props changed)
  stable/8/tools/regression/mqueue/mqtest3/   (props changed)
  stable/8/tools/regression/mqueue/mqtest4/   (props changed)
  stable/8/tools/regression/mqueue/mqtest5/   (props changed)
  stable/8/tools/regression/netinet/   (props changed)
  stable/8/tools/regression/poll/   (props changed)
  stable/8/tools/regression/posixsem/   (props changed)
  stable/8/tools/regression/priv/   (props changed)
  stable/8/tools/regression/sockets/unix_gc/   (props changed)
  stable/8/tools/regression/usr.bin/   (props changed)
  stable/8/tools/regression/usr.bin/pkill/   (props changed)
  stable/8/tools/regression/usr.bin/pkill/pgrep-_g.t   (props changed)
  stable/8/tools/regression/usr.bin/pkill/pgrep-_s.t   (props changed)
  stable/8/tools/regression/usr.bin/pkill/pkill-_g.t   (props changed)
  stable/8/tools/regression/usr.bin/sed/   (props changed)
  stable/8/tools/regression/usr.bin/tr/   (props changed)
  stable/8/tools/test/   (props changed)
  stable/8/tools/test/malloc/   (props changed)
  stable/8/tools/tools/   (props changed)
  stable/8/tools/tools/aac/   (props changed)
  stable/8/tools/tools/ath/   (props changed)
  stable/8/tools/tools/ath/common/dumpregs.h   (props changed)
  stable/8/tools/tools/ath/common/dumpregs_5210.c   (props changed)
  stable/8/tools/tools/ath/common/dumpregs_5211.c   (props changed)
  stable/8/tools/tools/ath/common/dumpregs_5212.c   (props changed)
  stable/8/tools/tools/ath/common/dumpregs_5416.c   (props changed)
  stable/8/tools/tools/cfi/   (props changed)
  stable/8/tools/tools/ether_reflect/   (props changed)
  stable/8/tools/tools/iwi/   (props changed)
  stable/8/tools/tools/mctest/   (props changed)
  stable/8/tools/tools/nanobsd/   (props changed)
  stable/8/tools/tools/netrate/   (props changed)
  stable/8/tools/tools/netrate/netblast/   (props changed)
  stable/8/tools/tools/netrate/netsend/   (props changed)
  stable/8/tools/tools/netrate/tcpp/   (props changed)
  stable/8/tools/tools/termcap/termcap.pl   (props changed)
  stable/8/tools/tools/umastat/   (props changed)
  stable/8/tools/tools/vimage/   (props changed)
  stable/8/usr.bin/   (props changed)
  stable/8/usr.bin/apply/   (props changed)
  stable/8/usr.bin/ar/   (props changed)
  stable/8/usr.bin/awk/   (props changed)
  stable/8/usr.bin/biff/   (props changed)
  stable/8/usr.bin/c89/   (props changed)
  stable/8/usr.bin/c99/   (props changed)
  stable/8/usr.bin/calendar/   (props changed)
  stable/8/usr.bin/catman/   (props changed)
  stable/8/usr.bin/checknr/   (props changed)
  stable/8/usr.bin/chpass/Makefile   (props changed)
  stable/8/usr.bin/column/   (props changed)
  stable/8/usr.bin/comm/   (props changed)
  stable/8/usr.bin/cpio/   (props changed)
  stable/8/usr.bin/cpuset/   (props changed)
  stable/8/usr.bin/csup/   (props changed)
  stable/8/usr.bin/du/   (props changed)
  stable/8/usr.bin/ee/   (props changed)
  stable/8/usr.bin/enigma/   (props changed)
  stable/8/usr.bin/fetch/   (props changed)
  stable/8/usr.bin/find/   (props changed)
  stable/8/usr.bin/finger/   (props changed)
  stable/8/usr.bin/fold/   (props changed)
  stable/8/usr.bin/fstat/   (props changed)
  stable/8/usr.bin/gcore/   (props changed)
  stable/8/usr.bin/getopt/   (props changed)
  stable/8/usr.bin/gzip/   (props changed)
  stable/8/usr.bin/hexdump/   (props changed)
  stable/8/usr.bin/indent/   (props changed)
  stable/8/usr.bin/ipcs/   (props changed)
  stable/8/usr.bin/jot/   (props changed)
  stable/8/usr.bin/kdump/   (props changed)
  stable/8/usr.bin/killall/   (props changed)
  stable/8/usr.bin/ktrace/   (props changed)
  stable/8/usr.bin/lastcomm/   (props changed)
  stable/8/usr.bin/ldd/   (props changed)
  stable/8/usr.bin/less/   (props changed)
  stable/8/usr.bin/lex/   (props changed)
  stable/8/usr.bin/limits/   (props changed)
  stable/8/usr.bin/locale/   (props changed)
  stable/8/usr.bin/locate/   (props changed)
  stable/8/usr.bin/lock/   (props changed)
  stable/8/usr.bin/lockf/   (props changed)
  stable/8/usr.bin/logger/   (props changed)
  stable/8/usr.bin/look/   (props changed)
  stable/8/usr.bin/m4/   (props changed)
  stable/8/usr.bin/mail/   (props changed)
  stable/8/usr.bin/make/   (props changed)
  stable/8/usr.bin/makewhatis/   (props changed)
  stable/8/usr.bin/minigzip/   (props changed)
  stable/8/usr.bin/ncal/   (props changed)
  stable/8/usr.bin/netstat/   (props changed)
  stable/8/usr.bin/nfsstat/   (props changed)
  stable/8/usr.bin/pathchk/   (props changed)
  stable/8/usr.bin/perror/   (props changed)
  stable/8/usr.bin/printf/   (props changed)
  stable/8/usr.bin/procstat/   (props changed)
  stable/8/usr.bin/rlogin/   (props changed)
  stable/8/usr.bin/rpcgen/   (props changed)
  stable/8/usr.bin/rpcinfo/   (props changed)
  stable/8/usr.bin/rs/   (props changed)
  stable/8/usr.bin/ruptime/   (props changed)
  stable/8/usr.bin/script/   (props changed)
  stable/8/usr.bin/sed/   (props changed)
  stable/8/usr.bin/showmount/   (props changed)
  stable/8/usr.bin/sockstat/   (props changed)
  stable/8/usr.bin/split/   (props changed)
  stable/8/usr.bin/stat/   (props changed)
  stable/8/usr.bin/su/   (props changed)
  stable/8/usr.bin/systat/   (props changed)
  stable/8/usr.bin/tail/   (props changed)
  stable/8/usr.bin/tar/   (props changed)
  stable/8/usr.bin/tftp/   (props changed)
  stable/8/usr.bin/tip/   (props changed)
  stable/8/usr.bin/top/   (props changed)
  stable/8/usr.bin/touch/   (props changed)
  stable/8/usr.bin/tr/   (props changed)
  stable/8/usr.bin/truss/   (props changed)
  stable/8/usr.bin/uname/   (props changed)
  stable/8/usr.bin/unifdef/   (props changed)
  stable/8/usr.bin/uniq/   (props changed)
  stable/8/usr.bin/unzip/   (props changed)
  stable/8/usr.bin/usbhidaction/   (props changed)
  stable/8/usr.bin/usbhidctl/   (props changed)
  stable/8/usr.bin/uudecode/   (props changed)
  stable/8/usr.bin/vmstat/   (props changed)
  stable/8/usr.bin/w/   (props changed)
  stable/8/usr.bin/wall/   (props changed)
  stable/8/usr.bin/whois/   (props changed)
  stable/8/usr.bin/xargs/   (props changed)
  stable/8/usr.bin/xinstall/   (props changed)
  stable/8/usr.bin/xlint/   (props changed)
  stable/8/usr.bin/xz/   (props changed)
  stable/8/usr.bin/yacc/   (props changed)
  stable/8/usr.sbin/   (props changed)
  stable/8/usr.sbin/Makefile   (props changed)
  stable/8/usr.sbin/acpi/   (props changed)
  stable/8/usr.sbin/arp/   (props changed)
  stable/8/usr.sbin/asf/   (props changed)
  stable/8/usr.sbin/bluetooth/   (props changed)
  stable/8/usr.sbin/bluetooth/bthidcontrol/   (props changed)
  stable/8/usr.sbin/bluetooth/bthidd/   (props changed)
  stable/8/usr.sbin/bluetooth/l2control/   (props changed)
  stable/8/usr.sbin/bluetooth/l2ping/   (props changed)
  stable/8/usr.sbin/boot0cfg/   (props changed)
  stable/8/usr.sbin/bsnmpd/   (props changed)
  stable/8/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c   (props changed)
  stable/8/usr.sbin/burncd/   (props changed)
  stable/8/usr.sbin/cdcontrol/   (props changed)
  stable/8/usr.sbin/chown/   (props changed)
  stable/8/usr.sbin/config/   (props changed)
  stable/8/usr.sbin/config/SMM.doc/   (props changed)
  stable/8/usr.sbin/cpucontrol/   (props changed)
  stable/8/usr.sbin/crashinfo/   (props changed)
  stable/8/usr.sbin/cron/   (props changed)
  stable/8/usr.sbin/crunch/examples/   (props changed)
  stable/8/usr.sbin/ctm/   (props changed)
  stable/8/usr.sbin/cxgbtool/   (props changed)
  stable/8/usr.sbin/devinfo/   (props changed)
  stable/8/usr.sbin/diskinfo/   (props changed)
  stable/8/usr.sbin/dumpcis/cardinfo.h   (props changed)
  stable/8/usr.sbin/dumpcis/cis.h   (props changed)
  stable/8/usr.sbin/faithd/   (props changed)
  stable/8/usr.sbin/fdcontrol/   (props changed)
  stable/8/usr.sbin/fdformat/   (props changed)
  stable/8/usr.sbin/fdread/   (props changed)
  stable/8/usr.sbin/fdwrite/   (props changed)
  stable/8/usr.sbin/fifolog/   (props changed)
  stable/8/usr.sbin/flowctl/   (props changed)
  stable/8/usr.sbin/freebsd-update/   (props changed)
  stable/8/usr.sbin/i2c/   (props changed)
  stable/8/usr.sbin/ifmcstat/   (props changed)
  stable/8/usr.sbin/inetd/   (props changed)
  stable/8/usr.sbin/iostat/   (props changed)
  stable/8/usr.sbin/jail/   (props changed)
  stable/8/usr.sbin/jls/   (props changed)
  stable/8/usr.sbin/kbdmap/   (props changed)
  stable/8/usr.sbin/lpr/   (props changed)
  stable/8/usr.sbin/mailwrapper/   (props changed)
  stable/8/usr.sbin/makefs/   (props changed)
  stable/8/usr.sbin/mergemaster/   (props changed)
  stable/8/usr.sbin/mfiutil/   (props changed)
  stable/8/usr.sbin/mountd/   (props changed)
  stable/8/usr.sbin/moused/   (props changed)
  stable/8/usr.sbin/mptutil/   (props changed)
  stable/8/usr.sbin/mtest/   (props changed)
  stable/8/usr.sbin/mtree/   (props changed)
  stable/8/usr.sbin/named/   (props changed)
  stable/8/usr.sbin/ndp/   (props changed)
  stable/8/usr.sbin/newsyslog/   (props changed)
  stable/8/usr.sbin/nfsd/   (props changed)
  stable/8/usr.sbin/nfsdumpstate/   (props changed)
  stable/8/usr.sbin/nfsuserd/   (props changed)
  stable/8/usr.sbin/ntp/   (props changed)
  stable/8/usr.sbin/pciconf/   (props changed)
  stable/8/usr.sbin/periodic/   (props changed)
  stable/8/usr.sbin/pkg_install/   (props changed)
  stable/8/usr.sbin/pmcannotate/   (props changed)
  stable/8/usr.sbin/pmccontrol/   (props changed)
  stable/8/usr.sbin/pmcstat/   (props changed)
  stable/8/usr.sbin/portsnap/   (props changed)
  stable/8/usr.sbin/powerd/   (props changed)
  stable/8/usr.sbin/ppp/   (props changed)
  stable/8/usr.sbin/pppctl/   (props changed)
  stable/8/usr.sbin/pstat/   (props changed)
  stable/8/usr.sbin/pw/   (props changed)
  stable/8/usr.sbin/rpc.lockd/   (props changed)
  stable/8/usr.sbin/rpc.statd/   (props changed)
  stable/8/usr.sbin/rpc.umntall/   (props changed)
  stable/8/usr.sbin/rpcbind/   (props changed)
  stable/8/usr.sbin/rtadvd/   (props changed)
  stable/8/usr.sbin/rtsold/   (props changed)
  stable/8/usr.sbin/sade/   (props changed)
  stable/8/usr.sbin/service/   (props changed)
  stable/8/usr.sbin/services_mkdb/   (props changed)
  stable/8/usr.sbin/setfmac/   (props changed)
  stable/8/usr.sbin/setpmac/   (props changed)
  stable/8/usr.sbin/smbmsg/   (props changed)
  stable/8/usr.sbin/sysinstall/   (props changed)
  stable/8/usr.sbin/syslogd/   (props changed)
  stable/8/usr.sbin/tcpdrop/   (props changed)
  stable/8/usr.sbin/traceroute/   (props changed)
  stable/8/usr.sbin/traceroute6/   (props changed)
  stable/8/usr.sbin/tzsetup/   (props changed)
  stable/8/usr.sbin/uathload/   (props changed)
  stable/8/usr.sbin/ugidfw/   (props changed)
  stable/8/usr.sbin/uhsoctl/   (props changed)
  stable/8/usr.sbin/usbconfig/   (props changed)
  stable/8/usr.sbin/usbdump/   (props changed)
  stable/8/usr.sbin/vidcontrol/   (props changed)
  stable/8/usr.sbin/watchdogd/   (props changed)
  stable/8/usr.sbin/wpa/   (props changed)
  stable/8/usr.sbin/ypserv/   (props changed)
  stable/8/usr.sbin/zic/   (props changed)

Modified: stable/8/UPDATING
==============================================================================
--- stable/8/UPDATING	Mon Nov  7 13:40:54 2011	(r227305)
+++ stable/8/UPDATING	Mon Nov  7 13:45:18 2011	(r227306)
@@ -15,6 +15,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.
 	debugging tools present in HEAD were left in place because
 	sun4v support still needs work to become production ready.
 
+20111101:
+	The broken amd(4) driver has been replaced with esp(4) in the amd64,
+	i386 and pc98 GENERIC kernel configuration files.
+
 20110606:
 	A new version of ZFS (version 28) has been merged.
 	This version does not depend on a python library and the

Modified: stable/8/share/man/man4/esp.4
==============================================================================
--- stable/8/share/man/man4/esp.4	Mon Nov  7 13:40:54 2011	(r227305)
+++ stable/8/share/man/man4/esp.4	Mon Nov  7 13:45:18 2011	(r227306)
@@ -1,5 +1,5 @@
 .\"
-.\" Copyright (c) 2004 Tom Rhodes
+.\" Copyright (c) 2011 Marius Strobl <marius@FreeBSD.org>
 .\" All rights reserved.
 .\"
 .\" Redistribution and use in source and binary forms, with or without
@@ -25,158 +25,91 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd September 18, 2005
+.Dd November 1, 2011
 .Dt ESP 4
 .Os
 .Sh NAME
 .Nm esp
-.Nd Qlogic FEPS and FAS366 SCSI driver
+.Nd Emulex ESP, NCR 53C9x and QLogic FAS families based SCSI controllers
 .Sh SYNOPSIS
-To compile this driver into the kernel,
-place the following lines in your
+To compile this driver into the kernel, place the following lines in your
 kernel configuration file:
 .Bd -ragged -offset indent
 .Cd "device scbus"
 .Cd "device esp"
 .Ed
-.Sh HARDWARE
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_esp_load="YES"
+.Ed
+.Sh DESCRIPTION
 The
 .Nm
 driver provides support for the
-.Tn Qlogic
-FAS216 and FAS408
+.Tn AMD
+Am53C974, the
+.Tn Emulex
+ESP100, ESP100A, ESP200 and ESP406, the
+.Tn NCR
+53C90, 53C94 and 53C96 as well as the
+.Tn QLogic
+FAS100A, FAS216, FAS366 and FAS408
 .Tn SCSI
 controller chips found in a wide variety of systems and peripheral boards.
-This includes the
-.Tn Qlogic
-.Tn SCSI
-cards found in most
-.Tn Sun
-.Tn Ultra 1e
-and
-.Tn Ultra 2
-machines.
-.Pp
-For
-.Tn Qlogic
-.Tn PCI
-.Tn SCSI
-host adapters, the
-.Xr isp 4
-driver should be used in place of the
-.Nm
-driver.
-.Sh IMPLEMENTATION NOTES
-During the boot sequence, the
+.Sh HARDWARE
+Controllers supported by the
 .Nm
-driver
-searches the linked list for LUN info by LUN ID.
-At this point the driver will attach on that instance,
-and then attempt to attach every sub-device.
-.Pp
-There are at least 4 variations of the
-configuration 3 register.
-A second config register must be loaded to inquire the chip revision,
-otherwise the
-.Fn ncr53c9x_reset
-function will not set the defaults correctly.
-.Pp
-The drive attach routine attempts to set the appropriate
-bit to put the chip into Fast
-.Tn SCSI
-mode so that it does not
-have to be figured out each time.
-This will then be stored in the
-.Tn NCR
-registers for later use.
+driver include:
 .Pp
-The
-.Nm
-driver makes use of the
-.Tn LSI
-64854
-.Tn DMA
-engine which contains three independent
-channels designed to interface with
-an NCR539X
-.Tn SCSI
-controller;
-an AM7990 Ethernet controller;
-and certain types of parallel port hardware.
-As such this driver may eventually replace the
-.Xr amd 4
-driver for network hardware.
-.Sh DIAGNOSTICS
-The following driver specific error messages
-may be reported:
-.Bl -diag
-.It "esp: cannot map %d segments"
-The device was unable to map segments while mapping the
-.Tn SCSI
-devices in
-.Tn DMA
-mode.
-.It "unknown variant %d, devices not attached"
-An unknown version of the card was found and devices will
-not be attached.
-.It "Unhandled function code %d"
-The device returned a function code which the driver is
-unable to handle, most likely during negotiation.
-.It "esp:%d:%d: selection failed %d left in FIFO"
-The target left the command phase prematurely.
-If a command did not reach the device then it will
-be reported as shown above.
-.It "invalid state: %d"
-The device has reached an invalid state.
-.El
-.Sh SEE ALSO
-.Xr amd 4 ,
-.Xr isp 4 ,
-.Xr scbus 4 ,
-.Xr camcontrol 8
-.Pp
-.Bl -item -compact
+.Bl -bullet -compact
+.It
+MELCO IFC-DP (PC-98)
+.It
+Sun ESP family
+.It
+Sun FAS family
 .It
-.Pa http://www.qlc.com/
+Tekram DC390
 .It
-.Pa http://www.sun.com/
+Tekram DC390T
 .El
+.Sh SEE ALSO
+.Xr cd 4 ,
+.Xr ch 4 ,
+.Xr da 4 ,
+.Xr intro 4 ,
+.Xr pci 4 ,
+.Xr sa 4 ,
+.Xr sbus 4 ,
+.Xr scsi 4 ,
+.Xr camcontrol 8
 .Sh HISTORY
 The
 .Nm
-driver was written for
-.Nx
-by
-.An Eric S. Hvozda .
+driver first appeared in
+.Nx 1.3 .
+The first
+.Fx
+version to include it was
+.Fx 5.3 .
+.Sh AUTHORS
+.An -nosplit
 The
 .Nm
-driver was then ported to
-.Fx 5.3
+driver was ported to
+.Fx
 by
-.An Scott Long Aq scottl@FreeBSD.org .
-.Sh AUTHORS
-This manual page was written by
-.An Tom Rhodes Aq trhodes@FreeBSD.org
-instead of porting the original from
-.Nx .
+.An Scott Long
+.Aq scottl@FreeBSD.org
+and later on considerably improved by
+.An Marius Strobl
+.Aq marius@FreeBSD.org .
 .Sh BUGS
 The
 .Nm
-driver includes the sbus front-end but lacks the
-.Tn PCI
-front-end.
-Thus it can only support the
-.Tn FEPS/FAS366
-.Tn SCSI
-found in
-.Tn Sun
-.Tn Ultra 1e
-and
-.Tn Ultra 2
-machines at this time.
-.Pp
-This driver should eventually replace the
-.Xr amd 4
-driver, but that requires porting the
-.Tn PCI
-front-end mentioned above.
+driver should read the EEPROM settings of
+.Tn Tekram
+controllers.

Modified: stable/8/sys/amd64/conf/GENERIC
==============================================================================
--- stable/8/sys/amd64/conf/GENERIC	Mon Nov  7 13:40:54 2011	(r227305)
+++ stable/8/sys/amd64/conf/GENERIC	Mon Nov  7 13:45:18 2011	(r227306)
@@ -108,7 +108,7 @@ options 	AHC_REG_PRETTY_PRINT	# Print re
 device		ahd		# AHA39320/29320 and onboard AIC79xx devices
 options 	AHD_REG_PRETTY_PRINT	# Print register bitfields in debug
 					# output.  Adds ~215k to driver.
-device		amd		# AMD 53C974 (Tekram DC-390(T))
+device		esp		# AMD Am53C974 (Tekram DC-390(T))
 device		hptiop		# Highpoint RocketRaid 3xxx series
 device		isp		# Qlogic family
 #device		ispfw		# Firmware for QLogic HBAs- normally a module

Modified: stable/8/sys/conf/NOTES
==============================================================================
--- stable/8/sys/conf/NOTES	Mon Nov  7 13:40:54 2011	(r227305)
+++ stable/8/sys/conf/NOTES	Mon Nov  7 13:45:18 2011	(r227306)
@@ -1434,7 +1434,9 @@ options 	TEKEN_XTERM		# xterm-style term
 #      such as the Tekram DC-390(T).
 # bt:  Most Buslogic controllers: including BT-445, BT-54x, BT-64x, BT-74x,
 #      BT-75x, BT-946, BT-948, BT-956, BT-958, SDC3211B, SDC3211F, SDC3222F
-# esp: NCR53c9x.  Only for SBUS hardware right now.
+# esp: Emulex ESP, NCR 53C9x and QLogic FAS families based controllers
+#      including the AMD Am53C974 (found on devices such as the Tekram
+#      DC-390(T)) and the Sun ESP and FAS families of controllers
 # isp: Qlogic ISP 1020, 1040 and 1040B PCI SCSI host adapters,
 #      ISP 1240 Dual Ultra SCSI, ISP 1080 and 1280 (Dual) Ultra2,
 #      ISP 12160 Ultra3 SCSI,

Modified: stable/8/sys/conf/files
==============================================================================
--- stable/8/sys/conf/files	Mon Nov  7 13:40:54 2011	(r227305)
+++ stable/8/sys/conf/files	Mon Nov  7 13:45:18 2011	(r227306)
@@ -959,6 +959,7 @@ dev/ep/if_ep_eisa.c		optional ep eisa
 dev/ep/if_ep_isa.c		optional ep isa
 dev/ep/if_ep_mca.c		optional ep mca
 dev/ep/if_ep_pccard.c		optional ep pccard
+dev/esp/esp_pci.c		optional esp pci
 dev/esp/ncr53c9x.c		optional esp
 dev/ex/if_ex.c			optional ex
 dev/ex/if_ex_isa.c		optional ex isa

Copied: stable/8/sys/dev/esp/am53c974reg.h (from r227006, head/sys/dev/esp/am53c974reg.h)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/8/sys/dev/esp/am53c974reg.h	Mon Nov  7 13:45:18 2011	(r227306, copy of r227006, head/sys/dev/esp/am53c974reg.h)
@@ -0,0 +1,72 @@
+/*	$NetBSD: pcscpreg.h,v 1.2 2008/04/28 20:23:55 martin Exp $	*/
+
+/*-
+ * Copyright (c) 1998 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Izumi Tsutsui.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/* $FreeBSD$ */
+
+#ifndef _AM53C974_H_
+#define	_AM53C974_H_
+
+/*
+ * Am53c974 DMA engine registers
+ */
+
+#define	DMA_CMD		0x40 		/* Command */
+#define	 DMACMD_RSVD	0xFFFFFF28	/* reserved */
+#define	 DMACMD_DIR	0x00000080	/* Transfer Direction (read:1) */
+#define	 DMACMD_INTE	0x00000040	/* DMA Interrupt Enable	*/
+#define	 DMACMD_MDL	0x00000010	/* Map to Memory Description List */
+#define	 DMACMD_DIAG	0x00000004	/* Diagnostic */
+#define	 DMACMD_CMD	0x00000003	/* Command Code Bit */
+#define	  DMACMD_IDLE	0x00000000	/*  Idle */
+#define	  DMACMD_BLAST	0x00000001	/*  Blast */
+#define	  DMACMD_ABORT	0x00000002	/*  Abort */
+#define	  DMACMD_START	0x00000003	/*  Start */
+
+#define	DMA_STC		0x44		/* Start Transfer Count */
+#define	DMA_SPA		0x48		/* Start Physical Address */
+#define	DMA_WBC		0x4C		/* Working Byte Counter */
+#define	DMA_WAC		0x50		/* Working Address Counter */
+
+#define	DMA_STAT	0x54		/* Status Register */
+#define	 DMASTAT_RSVD	0xFFFFFF80	/* reserved */
+#define	 DMASTAT_PABT	0x00000040	/* PCI master/target Abort */
+#define	 DMASTAT_BCMP	0x00000020	/* BLAST Complete */
+#define	 DMASTAT_SINT	0x00000010	/* SCSI Interrupt */
+#define	 DMASTAT_DONE	0x00000008	/* DMA Transfer Terminated */
+#define	 DMASTAT_ABT	0x00000004	/* DMA Transfer Aborted */
+#define	 DMASTAT_ERR	0x00000002	/* DMA Transfer Error */
+#define	 DMASTAT_PWDN	0x00000001	/* Power Down Indicator */
+
+#define	DMA_SMDLA	0x58	/* Starting Memory Descpritor List Address */
+#define	DMA_WMAC	0x5C	/* Working MDL Counter */
+#define	DMA_SBAC	0x70	/* SCSI Bus and Control */
+
+#endif /* _AM53C974_H_ */

Copied: stable/8/sys/dev/esp/esp_pci.c (from r227006, head/sys/dev/esp/esp_pci.c)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/8/sys/dev/esp/esp_pci.c	Mon Nov  7 13:45:18 2011	(r227306, copy of r227006, head/sys/dev/esp/esp_pci.c)
@@ -0,0 +1,654 @@
+/*-
+ * Copyright (c) 2011 Marius Strobl <marius@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+/*	$NetBSD: pcscp.c,v 1.45 2010/11/13 13:52:08 uebayasi Exp $	*/
+
+/*-
+ * Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software contributed to The NetBSD Foundation
+ * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
+ * NASA Ames Research Center; Izumi Tsutsui.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/*
+ * esp_pci.c: device dependent code for AMD Am53c974 (PCscsi-PCI)
+ * written by Izumi Tsutsui <tsutsui@NetBSD.org>
+ *
+ * Technical manual available at
+ * http://www.amd.com/files/connectivitysolutions/networking/archivednetworking/19113.pdf
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/endian.h>
+#include <sys/kernel.h>
+#include <sys/lock.h>
+#include <sys/module.h>
+#include <sys/mutex.h>
+#include <sys/resource.h>
+#include <sys/rman.h>
+
+#include <machine/bus.h>
+#include <machine/resource.h>
+
+#include <cam/cam.h>
+#include <cam/cam_ccb.h>
+#include <cam/scsi/scsi_all.h>
+
+#include <dev/pci/pcireg.h>
+#include <dev/pci/pcivar.h>
+
+#include <dev/esp/ncr53c9xreg.h>
+#include <dev/esp/ncr53c9xvar.h>
+
+#include <dev/esp/am53c974reg.h>
+
+#define	PCI_DEVICE_ID_AMD53C974	0x20201022
+
+struct esp_pci_softc {
+	struct ncr53c9x_softc	sc_ncr53c9x;	/* glue to MI code */
+	struct device		*sc_dev;
+
+	struct resource *sc_res[2];
+#define	ESP_PCI_RES_INTR	0
+#define	ESP_PCI_RES_IO		1
+
+	bus_dma_tag_t		sc_pdmat;
+
+	bus_dma_tag_t		sc_xferdmat;	/* DMA tag for transfers */
+	bus_dmamap_t		sc_xferdmam;	/* DMA map for transfers */
+
+	void			*sc_ih;		/* interrupt handler */
+
+	size_t			sc_dmasize;	/* DMA size */
+	void			**sc_dmaaddr;	/* DMA address */
+	size_t			*sc_dmalen;	/* DMA length */
+	int			sc_active;	/* DMA state */
+	int			sc_datain;	/* DMA Data Direction */
+};
+
+static struct resource_spec esp_pci_res_spec[] = {
+	{ SYS_RES_IRQ, 0, RF_SHAREABLE | RF_ACTIVE },	/* ESP_PCI_RES_INTR */
+	{ SYS_RES_IOPORT, PCIR_BAR(0), RF_ACTIVE },	/* ESP_PCI_RES_IO */
+	{ -1, 0 }
+};
+
+#define	READ_DMAREG(sc, reg)						\
+	bus_read_4((sc)->sc_res[ESP_PCI_RES_IO], (reg))
+#define	WRITE_DMAREG(sc, reg, var)					\
+	bus_write_4((sc)->sc_res[ESP_PCI_RES_IO], (reg), (var))
+
+#define	READ_ESPREG(sc, reg)						\
+	bus_read_1((sc)->sc_res[ESP_PCI_RES_IO], (reg) << 2)
+#define	WRITE_ESPREG(sc, reg, val)					\
+	bus_write_1((sc)->sc_res[ESP_PCI_RES_IO], (reg) << 2, (val))
+
+static int	esp_pci_probe(device_t);
+static int	esp_pci_attach(device_t);
+static int	esp_pci_detach(device_t);
+static int	esp_pci_suspend(device_t);
+static int	esp_pci_resume(device_t);
+
+static device_method_t esp_pci_methods[] = {
+	DEVMETHOD(device_probe,		esp_pci_probe),
+	DEVMETHOD(device_attach,	esp_pci_attach),
+	DEVMETHOD(device_detach,	esp_pci_detach),
+	DEVMETHOD(device_suspend,	esp_pci_suspend),
+	DEVMETHOD(device_resume,	esp_pci_resume),
+
+	KOBJMETHOD_END
+};
+
+static driver_t esp_pci_driver = {
+	"esp",
+	esp_pci_methods,
+	sizeof(struct esp_pci_softc)
+};
+
+DRIVER_MODULE(esp, pci, esp_pci_driver, esp_devclass, 0, 0);
+MODULE_DEPEND(esp, pci, 1, 1, 1);
+
+/*
+ * Functions and the switch for the MI code
+ */
+static void	esp_pci_dma_go(struct ncr53c9x_softc *);
+static int	esp_pci_dma_intr(struct ncr53c9x_softc *);
+static int	esp_pci_dma_isactive(struct ncr53c9x_softc *);
+
+static int	esp_pci_dma_isintr(struct ncr53c9x_softc *);
+static void	esp_pci_dma_reset(struct ncr53c9x_softc *);
+static int	esp_pci_dma_setup(struct ncr53c9x_softc *, void **, size_t *,
+		    int, size_t *);
+static void	esp_pci_dma_stop(struct ncr53c9x_softc *);
+static void	esp_pci_write_reg(struct ncr53c9x_softc *, int, uint8_t);
+static uint8_t	esp_pci_read_reg(struct ncr53c9x_softc *, int);
+static void	esp_pci_xfermap(void *arg, bus_dma_segment_t *segs, int nseg,
+		    int error);
+
+static struct ncr53c9x_glue esp_pci_glue = {
+	esp_pci_read_reg,
+	esp_pci_write_reg,
+	esp_pci_dma_isintr,
+	esp_pci_dma_reset,
+	esp_pci_dma_intr,
+	esp_pci_dma_setup,
+	esp_pci_dma_go,
+	esp_pci_dma_stop,
+	esp_pci_dma_isactive,
+};
+
+static int
+esp_pci_probe(device_t dev)
+{
+
+	if (pci_get_devid(dev) == PCI_DEVICE_ID_AMD53C974) {
+		device_set_desc(dev, "AMD Am53C974 Fast-SCSI");
+		return (BUS_PROBE_DEFAULT);
+	}
+
+	return (ENXIO);
+}
+
+/*
+ * Attach this instance, and then all the sub-devices
+ */
+static int
+esp_pci_attach(device_t dev)
+{
+	struct esp_pci_softc *esc;
+	struct ncr53c9x_softc *sc;
+	int error;
+
+	esc = device_get_softc(dev);
+	sc = &esc->sc_ncr53c9x;
+
+	NCR_LOCK_INIT(sc);
+
+	esc->sc_dev = dev;
+	sc->sc_glue = &esp_pci_glue;
+
+	pci_enable_busmaster(dev);
+
+	error = bus_alloc_resources(dev, esp_pci_res_spec, esc->sc_res);
+	if (error != 0) {
+		device_printf(dev, "failed to allocate resources\n");
+		bus_release_resources(dev, esp_pci_res_spec, esc->sc_res);
+		return (error);
+	}
+
+	error = bus_dma_tag_create(bus_get_dma_tag(dev), 1, 0,
+	    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
+	    BUS_SPACE_MAXSIZE_32BIT, BUS_SPACE_UNRESTRICTED,
+	    BUS_SPACE_MAXSIZE_32BIT, 0, NULL, NULL, &esc->sc_pdmat);
+	if (error != 0) {
+		device_printf(dev, "cannot create parent DMA tag\n");
+		goto fail_res;
+	}
+
+	/*
+	 * XXX More of this should be in ncr53c9x_attach(), but
+	 * XXX should we really poke around the chip that much in
+	 * XXX the MI code?  Think about this more...
+	 */
+
+	/*
+	 * Set up static configuration info.
+	 *
+	 * XXX we should read the configuration from the EEPROM.
+	 */
+	sc->sc_id = 7;
+	sc->sc_cfg1 = sc->sc_id | NCRCFG1_PARENB;
+	sc->sc_cfg2 = NCRCFG2_SCSI2 | NCRCFG2_FE;
+	sc->sc_cfg3 = NCRAMDCFG3_IDM | NCRAMDCFG3_FCLK;
+	sc->sc_cfg4 = NCRAMDCFG4_GE12NS | NCRAMDCFG4_RADE;
+	sc->sc_rev = NCR_VARIANT_AM53C974;
+	sc->sc_features = NCR_F_FASTSCSI | NCR_F_DMASELECT;
+	sc->sc_cfg3_fscsi = NCRAMDCFG3_FSCSI;
+	sc->sc_freq = 40; /* MHz */
+
+	/*
+	 * This is the value used to start sync negotiations
+	 * Note that the NCR register "SYNCTP" is programmed
+	 * in "clocks per byte", and has a minimum value of 4.
+	 * The SCSI period used in negotiation is one-fourth
+	 * of the time (in nanoseconds) needed to transfer one byte.
+	 * Since the chip's clock is given in MHz, we have the following
+	 * formula: 4 * period = (1000 / freq) * 4
+	 */
+	sc->sc_minsync = 1000 / sc->sc_freq;
+
+	sc->sc_maxxfer = DFLTPHYS;	/* see below */
+	sc->sc_maxoffset = 15;
+	sc->sc_extended_geom = 1;
+
+#define	MDL_SEG_SIZE	0x1000	/* 4kbyte per segment */
+
+	/*
+	 * Create the DMA tag and map for the data transfers.
+	 *
+	 * Note: given that bus_dma(9) only adheres to the requested alignment
+	 * for the first segment (and that also only for bus_dmamem_alloc()ed
+	 * DMA maps) we can't use the Memory Descriptor List.  However, also
+	 * when not using the MDL, the maximum transfer size apparently is
+	 * limited to 4k so we have to split transfers up, which plain sucks.
+	 */
+	error = bus_dma_tag_create(esc->sc_pdmat, PAGE_SIZE, 0,
+	    BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL,
+	    MDL_SEG_SIZE, 1, MDL_SEG_SIZE, BUS_DMA_ALLOCNOW,
+	    busdma_lock_mutex, &sc->sc_lock, &esc->sc_xferdmat);
+	if (error != 0) {
+		device_printf(dev, "cannot create transfer DMA tag\n");
+		goto fail_pdmat;
+	}
+	error = bus_dmamap_create(esc->sc_xferdmat, 0, &esc->sc_xferdmam);
+	if (error != 0) {
+		device_printf(dev, "cannnot create transfer DMA map\n");
+		goto fail_xferdmat;
+	}
+
+	error = bus_setup_intr(dev, esc->sc_res[ESP_PCI_RES_INTR],
+	    INTR_MPSAFE | INTR_TYPE_CAM, NULL, ncr53c9x_intr, sc,
+	    &esc->sc_ih);
+	if (error != 0) {
+		device_printf(dev, "cannot set up interrupt\n");
+		goto fail_xferdmam;
+	}
+
+	/* Do the common parts of attachment. */
+	sc->sc_dev = esc->sc_dev;
+	error = ncr53c9x_attach(sc);
+	if (error != 0) {
+		device_printf(esc->sc_dev, "ncr53c9x_attach failed\n");
+		goto fail_intr;
+	}
+
+	return (0);
+
+ fail_intr:
+	 bus_teardown_intr(esc->sc_dev, esc->sc_res[ESP_PCI_RES_INTR],
+	    esc->sc_ih);
+ fail_xferdmam:
+	bus_dmamap_destroy(esc->sc_xferdmat, esc->sc_xferdmam);
+ fail_xferdmat:
+	bus_dma_tag_destroy(esc->sc_xferdmat);
+ fail_pdmat:
+	bus_dma_tag_destroy(esc->sc_pdmat);
+ fail_res:
+	bus_release_resources(dev, esp_pci_res_spec, esc->sc_res);
+	NCR_LOCK_DESTROY(sc);
+
+	return (error);
+}
+
+static int
+esp_pci_detach(device_t dev)
+{
+	struct ncr53c9x_softc *sc;
+	struct esp_pci_softc *esc;
+	int error;
+
+	esc = device_get_softc(dev);
+	sc = &esc->sc_ncr53c9x;
+
+	bus_teardown_intr(esc->sc_dev, esc->sc_res[ESP_PCI_RES_INTR],
+	    esc->sc_ih);
+	error = ncr53c9x_detach(sc);
+	if (error != 0)
+		return (error);
+	bus_dmamap_destroy(esc->sc_xferdmat, esc->sc_xferdmam);
+	bus_dma_tag_destroy(esc->sc_xferdmat);
+	bus_dma_tag_destroy(esc->sc_pdmat);
+	bus_release_resources(dev, esp_pci_res_spec, esc->sc_res);
+	NCR_LOCK_DESTROY(sc);
+
+	return (0);
+}
+
+static int
+esp_pci_suspend(device_t dev)
+{
+
+	return (ENXIO);
+}
+
+static int
+esp_pci_resume(device_t dev)
+{
+
+	return (ENXIO);
+}
+
+static void
+esp_pci_xfermap(void *arg, bus_dma_segment_t *segs, int nsegs, int error)
+{
+	struct esp_pci_softc *esc = (struct esp_pci_softc *)arg;
+
+	if (error != 0)
+		return;
+
+	KASSERT(nsegs == 1, ("%s: bad transfer segment count %d", __func__,
+	    nsegs));
+	KASSERT(segs[0].ds_len <= MDL_SEG_SIZE,
+	    ("%s: bad transfer segment length %ld", __func__,
+	    (long)segs[0].ds_len));
+
+	/* Program the DMA Starting Physical Address. */
+	WRITE_DMAREG(esc, DMA_SPA, segs[0].ds_addr);
+}
+
+/*
+ * Glue functions
+ */
+
+static uint8_t
+esp_pci_read_reg(struct ncr53c9x_softc *sc, int reg)
+{
+	struct esp_pci_softc *esc = (struct esp_pci_softc *)sc;
+
+	return (READ_ESPREG(esc, reg));
+}
+
+static void
+esp_pci_write_reg(struct ncr53c9x_softc *sc, int reg, uint8_t v)
+{
+	struct esp_pci_softc *esc = (struct esp_pci_softc *)sc;
+
+	WRITE_ESPREG(esc, reg, v);
+}
+
+static int
+esp_pci_dma_isintr(struct ncr53c9x_softc *sc)
+{
+	struct esp_pci_softc *esc = (struct esp_pci_softc *)sc;
+
+	return (READ_ESPREG(esc, NCR_STAT) & NCRSTAT_INT) != 0;
+}
+
+static void
+esp_pci_dma_reset(struct ncr53c9x_softc *sc)
+{
+	struct esp_pci_softc *esc = (struct esp_pci_softc *)sc;
+
+	WRITE_DMAREG(esc, DMA_CMD, DMACMD_IDLE);
+
+	esc->sc_active = 0;
+}
+
+static int
+esp_pci_dma_intr(struct ncr53c9x_softc *sc)
+{
+	struct esp_pci_softc *esc = (struct esp_pci_softc *)sc;
+	bus_dma_tag_t xferdmat;
+	bus_dmamap_t xferdmam;
+	size_t dmasize;
+	int datain, i, resid, trans;
+	uint32_t dmastat;
+	char *p = NULL;
+
+	xferdmat = esc->sc_xferdmat;
+	xferdmam = esc->sc_xferdmam;
+	datain = esc->sc_datain;
+
+	dmastat = READ_DMAREG(esc, DMA_STAT);
+
+	if ((dmastat & DMASTAT_ERR) != 0) {
+		/* XXX not tested... */
+		WRITE_DMAREG(esc, DMA_CMD, DMACMD_ABORT | (datain != 0 ?
+		    DMACMD_DIR : 0));
+
+		device_printf(esc->sc_dev, "DMA error detected; Aborting.\n");
+		bus_dmamap_sync(xferdmat, xferdmam, datain != 0 ?
+		    BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
+		bus_dmamap_unload(xferdmat, xferdmam);
+		return (-1);
+	}
+
+	if ((dmastat & DMASTAT_ABT) != 0) {
+		/* XXX what should be done? */
+		device_printf(esc->sc_dev, "DMA aborted.\n");
+		WRITE_DMAREG(esc, DMA_CMD, DMACMD_IDLE | (datain != 0 ?
+		    DMACMD_DIR : 0));
+		esc->sc_active = 0;
+		return (0);
+	}
+
+	KASSERT(esc->sc_active != 0, ("%s: DMA wasn't active", __func__));
+
+	/* DMA has stopped. */
+
+	esc->sc_active = 0;
+
+	dmasize = esc->sc_dmasize;
+	if (dmasize == 0) {
+		/* A "Transfer Pad" operation completed. */
+		NCR_DMA(("%s: discarded %d bytes (tcl=%d, tcm=%d)\n",
+		    __func__, READ_ESPREG(esc, NCR_TCL) |
+		    (READ_ESPREG(esc, NCR_TCM) << 8),
+		    READ_ESPREG(esc, NCR_TCL), READ_ESPREG(esc, NCR_TCM)));
+		return (0);
+	}
+
+	resid = 0;
+	/*
+	 * If a transfer onto the SCSI bus gets interrupted by the device
+	 * (e.g. for a SAVEPOINTER message), the data in the FIFO counts
+	 * as residual since the ESP counter registers get decremented as
+	 * bytes are clocked into the FIFO.
+	 */
+	if (datain == 0 &&
+	    (resid = (READ_ESPREG(esc, NCR_FFLAG) & NCRFIFO_FF)) != 0)
+		NCR_DMA(("%s: empty esp FIFO of %d ", __func__, resid));
+
+	if ((sc->sc_espstat & NCRSTAT_TC) == 0) {
+		/*
+		 * "Terminal count" is off, so read the residue
+		 * out of the ESP counter registers.
+		 */
+		if (datain != 0) {
+			resid = READ_ESPREG(esc, NCR_FFLAG) & NCRFIFO_FF;
+			while (resid > 1)
+				resid =
+				    READ_ESPREG(esc, NCR_FFLAG) & NCRFIFO_FF;
+			WRITE_DMAREG(esc, DMA_CMD, DMACMD_BLAST | DMACMD_DIR);
+
+			for (i = 0; i < 0x8000; i++) /* XXX 0x8000 ? */
+				if ((READ_DMAREG(esc, DMA_STAT) &
+				    DMASTAT_BCMP) != 0)
+					break;
+
+			/* See the below comments... */
+			if (resid != 0)
+				p = *esc->sc_dmaaddr;
+		}
+
+		resid += READ_ESPREG(esc, NCR_TCL) |
+		    (READ_ESPREG(esc, NCR_TCM) << 8) |
+		    (READ_ESPREG(esc, NCR_TCH) << 16);
+	} else
+		while ((dmastat & DMASTAT_DONE) == 0)
+			dmastat = READ_DMAREG(esc, DMA_STAT);
+
+	WRITE_DMAREG(esc, DMA_CMD, DMACMD_IDLE | (datain != 0 ?
+	    DMACMD_DIR : 0));
+
+	/* Sync the transfer buffer. */
+	bus_dmamap_sync(xferdmat, xferdmam, datain != 0 ?
+	    BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE);
+	bus_dmamap_unload(xferdmat, xferdmam);
+
+	trans = dmasize - resid;
+
+	/*
+	 * From the technical manual notes:
+	 *
+	 * "In some odd byte conditions, one residual byte will be left
+	 *  in the SCSI FIFO, and the FIFO flags will never count to 0.
+	 *  When this happens, the residual byte should be retrieved
+	 *  via PIO following completion of the BLAST operation."
+	 */
+	if (p != NULL) {
+		p += trans;
+		*p = READ_ESPREG(esc, NCR_FIFO);
+		trans++;
+	}
+
+	if (trans < 0) {			/* transferred < 0 ? */
+#if 0
+		/*
+		 * This situation can happen in perfectly normal operation
+		 * if the ESP is reselected while using DMA to select
+		 * another target.  As such, don't print the warning.
+		 */
+		device_printf(dev, "xfer (%d) > req (%d)\n", trans, dmasize);
+#endif
+		trans = dmasize;
+	}
+
+	NCR_DMA(("%s: tcl=%d, tcm=%d, tch=%d; trans=%d, resid=%d\n", __func__,
+	    READ_ESPREG(esc, NCR_TCL), READ_ESPREG(esc, NCR_TCM),
+	    READ_ESPREG(esc, NCR_TCH), trans, resid));
+
+	*esc->sc_dmalen -= trans;
+	*esc->sc_dmaaddr = (char *)*esc->sc_dmaaddr + trans;
+
+	return (0);
+}
+
+static int
+esp_pci_dma_setup(struct ncr53c9x_softc *sc, void **addr, size_t *len,
+    int datain, size_t *dmasize)
+{
+	struct esp_pci_softc *esc = (struct esp_pci_softc *)sc;
+	int error;
+
+	WRITE_DMAREG(esc, DMA_CMD, DMACMD_IDLE | (datain != 0 ? DMACMD_DIR :
+	    0));
+
+	*dmasize = esc->sc_dmasize = ulmin(*dmasize, MDL_SEG_SIZE);
+	esc->sc_dmaaddr = addr;
+	esc->sc_dmalen = len;
+	esc->sc_datain = datain;
+
+	/*
+	 * There's no need to set up DMA for a "Transfer Pad" operation.
+	 */
+	if (*dmasize == 0)
+		return (0);
+
+	/* Set the transfer length. */
+	WRITE_DMAREG(esc, DMA_STC, *dmasize);
+
+	/*
+	 * Load the transfer buffer and program the DMA address.
+	 * Note that the NCR53C9x core can't handle EINPROGRESS so we set
+	 * BUS_DMA_NOWAIT.
+	 */
+	error = bus_dmamap_load(esc->sc_xferdmat, esc->sc_xferdmam,
+	    *esc->sc_dmaaddr, *dmasize, esp_pci_xfermap, sc, BUS_DMA_NOWAIT);
+
+	return (error);
+}
+
+static void
+esp_pci_dma_go(struct ncr53c9x_softc *sc)
+{
+	struct esp_pci_softc *esc = (struct esp_pci_softc *)sc;
+	int datain;
+
+	datain = esc->sc_datain;
+
+	/* No DMA transfer for a "Transfer Pad" operation */
+	if (esc->sc_dmasize == 0)
+		return;
+
+	/* Sync the transfer buffer. */
+	bus_dmamap_sync(esc->sc_xferdmat, esc->sc_xferdmam, datain != 0 ?
+	    BUS_DMASYNC_PREREAD : BUS_DMASYNC_PREWRITE);
+
+	/* Set the DMA engine to the IDLE state. */
+	/* XXX DMA Transfer Interrupt Enable bit is broken? */
+	WRITE_DMAREG(esc, DMA_CMD, DMACMD_IDLE | /* DMACMD_INTE | */
+	    (datain != 0 ? DMACMD_DIR : 0));
+
+	/* Issue a DMA start command. */
+	WRITE_DMAREG(esc, DMA_CMD, DMACMD_START | /* DMACMD_INTE | */
+	    (datain != 0 ? DMACMD_DIR : 0));
+
+	esc->sc_active = 1;
+}
+
+static void
+esp_pci_dma_stop(struct ncr53c9x_softc *sc)
+{
+	struct esp_pci_softc *esc = (struct esp_pci_softc *)sc;
+
+	/* DMA stop */
+	/* XXX what should we do here ? */
+	WRITE_DMAREG(esc, DMA_CMD,
+	    DMACMD_ABORT | (esc->sc_datain != 0 ? DMACMD_DIR : 0));
+	bus_dmamap_unload(esc->sc_xferdmat, esc->sc_xferdmam);
+
+	esc->sc_active = 0;
+}
+
+static int
+esp_pci_dma_isactive(struct ncr53c9x_softc *sc)
+{
+	struct esp_pci_softc *esc = (struct esp_pci_softc *)sc;
+

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



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