diff -ur --new-file old/linux/CREDITS new/linux/CREDITS
--- old/linux/CREDITS Thu Jan 28 20:25:04 1999
+++ new/linux/CREDITS Tue May 11 18:57:14 1999
@@ -256,6 +256,10 @@
D: Configuration help text support
D: Linux CD and Support Giveaway List
+N: Zoltan Boszormenyi
+E: zboszor@mol.hu
+D: MTRR emulation with Cyrix style ARR registers
+
N: John Boyd
E: boyd@cis.ohio-state.edu
D: Co-author of wd7000 SCSI driver
@@ -779,6 +783,15 @@
S: Mountain View, California 94043
S: USA
+N: Benjamin Herrenschmidt
+E: bh40@calva.net
+E: benh@mipsys.com
+D: PowerMac booter (BootX)
+D: Additional PowerBook support
+S: 22, rue des Marguettes
+S: 75012 Paris
+S: France
+
N: Sebastian Hetze
E: she@lunetix.de
D: German Linux Documentation,
@@ -801,12 +814,13 @@
D: Transmeta BOFH in my copius free time
N: Dirk Hohndel
-E: hohndel@aib.com
+E: hohndel@suse.de
D: The XFree86[tm] Project
-S: AIB Software Corporation
-S: 46030 Manekin Plaza, Suite 160
-S: Dulles, Virginia 20166
-S: USA
+D: USB mouse maintainer
+S: SuSE Rhein/Main AG
+S: Mergenthalerallee 45-47
+S: 65760 Eschborn
+S: Germany
N: Kenji Tsutomu Hollis
E: khollis@bitgate.com
@@ -1061,6 +1075,14 @@
S: L3R 8B2
S: Canada
+N: Russell Kroll
+E: rkroll@exploits.org
+W: http://www.exploits.org/
+D: V4L Aztech radio card driver, mods to Aimslab driver
+S: Post Office Box 49458
+S: Colorado Springs, Colorado 80949-9458
+S: USA
+
N: Gero Kuhlmann
E: gero@gkminix.han.de
D: mounting root via NFS
@@ -1403,6 +1425,13 @@
S: FIN-00330 Helsingfors
S: Finland
+N: Trond Myklebust
+E: trond.myklebust@fys.uio.no
+D: current NFS client hacker.
+S: Dagaliveien 31e
+S: N-0391 Oslo
+S: Norway
+
N: Matija Nalis
E: mnalis@jagor.srce.hr
E: mnalis@voyager.hr
@@ -1745,7 +1774,7 @@
N: Jaspreet Singh
E: jaspreet@sangoma.com
W: www.sangoma.com
-D: WANPIPE driver for Sangoma S508/FT1 cards
+D: WANPIPE drivers & API Support for Sangoma S508/FT1 cards
S: Sangoma Technologies Inc.,
S: 1001 Denison Street
S: Suite 101
@@ -1850,7 +1879,7 @@
N: Linus Torvalds
E: torvalds@transmeta.com
-W: http://www.cs.helsinki.fi/~torvalds/
+W: http://www.cs.helsinki.fi/Linus.Torvalds
P: 1024/A86B35C5 96 54 50 29 EC 11 44 7A BE 67 3C 24 03 13 62 C8
D: Original kernel hacker
S: 1050 Woodduck Avenue
@@ -1997,6 +2026,14 @@
S: 10200 Prague 10, Hostivar
S: Czech Republic
+N: James R. Van Zandt
+E: jrv@vanzandt.mv.com
+P: 1024/E298966D F0 37 4F FD E5 7E C5 E6 F1 A0 1E 22 6F 46 DA 0C
+D: Author and maintainer of the Double Talk speech synthesizer driver
+S: 27 Spencer Drive
+S: Nashua, New Hampshire 03062
+S: USA
+
N: Andrew Veliath
E: andrewtv@usa.net
D: Turtle Beach MultiSound sound driver
@@ -2184,6 +2221,12 @@
S: 1507 145th Place SE #B5
S: Bellevue, Washington 98007
S: USA
+
+N: Richard Zidlicky
+E: rdzidlic@geocities.com,rdzidlic@cip.informatik.uni-erlangen.de
+W: http://www.geocities.com/SiliconValley/Bay/2602/
+D: Q40 port - see arch/m68k/q40/README
+S: Germany
N: Werner Zimmermann
E: Werner.Zimmermann@fht-esslingen.de
diff -ur --new-file old/linux/Documentation/00-INDEX new/linux/Documentation/00-INDEX
--- old/linux/Documentation/00-INDEX Fri Dec 18 23:01:48 1998
+++ new/linux/Documentation/00-INDEX Thu Apr 29 20:53:41 1999
@@ -38,7 +38,7 @@
digiepca.txt
- info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards.
exception.txt
- - how linux v2.1 handles exceptions without verify_area etc.
+ - how Linux v2.2 handles exceptions without verify_area etc.
filesystems/
- directory with info on the various filesystems that Linux supports.
ftape.txt
@@ -52,11 +52,13 @@
ioctl-number.txt
- how to implement and register device/driver ioctl calls.
isdn/
- - directory with info on the linux ISDN support, and supported cards.
+ - directory with info on the Linux ISDN support, and supported cards.
java.txt
- info on the in-kernel binary support for Java(tm)
joystick.txt
- - info on using joystick devices (and driver) with linux.
+ - info on using joystick devices (and driver) with Linux.
+kbuild/
+ - directory with info about the kernel build process
kmod.txt
- - info on the kernel module loader/unloader (kerneld replacement)
locks.txt
@@ -70,7 +72,7 @@
magic-number.txt
- list of magic numbers used to mark/protect kernel data structures.
mandatory.txt
- - info on the linux implementation of Sys V mandatory file locking.
+ - info on the Linux implementation of Sys V mandatory file locking.
mca.txt
- info on supporting Micro Channel Architecture (e.g. PS/2) systems.
md.txt
@@ -98,7 +100,7 @@
pcwd-watchdog.txt
- info and sample code for using with the PC Watchdog reset card.
powerpc/
- - directory with info on using linux with the PowerPC.
+ - directory with info on using Linux with the PowerPC.
ramdisk.txt
- short guide on how to set up and use the RAM disk.
riscom8.txt
@@ -108,7 +110,7 @@
scsi.txt
- short blurb on using SCSI support as a module.
serial-console.txt
- - how to set up linux with a serial line console as the default.
+ - how to set up Linux with a serial line console as the default.
smart-config.txt
- description of the Smart Config makefile feature.
smp.tex
diff -ur --new-file old/linux/Documentation/ARM-README new/linux/Documentation/ARM-README
--- old/linux/Documentation/ARM-README Thu May 21 03:54:33 1998
+++ new/linux/Documentation/ARM-README Thu Apr 29 20:53:41 1999
@@ -70,8 +70,8 @@
a 'make zImage' instead of 'make all'.
-Bug reports etc
----------------
+Bug reports etc.
+----------------
Please send patches, bug reports and code for the ARM Linux project
to linux@arm.uk.linux.org. Patches will not be included into future
@@ -116,7 +116,7 @@
at the top of the screen. The colours have the following significance
when run in a 16 colour mode with the default palette:
- Stripes of White,Red,Yellow,Green:
+ Stripes of white, red, yellow, and green:
Kernel does not support the processor architecture detected.
@@ -142,11 +142,11 @@
HDC base to the source.
As of 31/3/96 it works with two drives (you should get the ADFS
- *configure harddrive set to 2). I've got an internal 20MB and a great
- big external 5.25" FH 64MB drive (who could ever want more :-) ).
+ *configure hard drive set to 2). I've got an internal 20 MB and a great
+ big external 5.25" FH 64 MB drive (who could ever want more :-) ).
- I've just got 240K/s off it (a dd with bs=128k); thats about half of what
- RiscOS gets; but it's a heck of a lot better than the 50K/s I was getting
+ I've just got 240 K/s off it (a dd with bs=128k); that's about half of what
+ RiscOS gets, but it's a heck of a lot better than the 50 K/s I was getting
last week :-)
Known bug: Drive data errors can cause a hang; including cases where
diff -ur --new-file old/linux/Documentation/Changes new/linux/Documentation/Changes
--- old/linux/Documentation/Changes Tue Jan 19 18:48:01 1999
+++ new/linux/Documentation/Changes Fri May 7 18:31:25 1999
@@ -19,10 +19,6 @@
texinfo so a diff is useless anyway (though I can incorporate one by
hand if you insist upon sending it that way ;-).
- Check out
-http://www.mindspring.com/~nunez/info/linux/LinuxBleed.html for an
-HTML-ized shopping list.
-
For those of you in Europe,
http://www.datanet.hu/generations/linux/Changes2.html is an
English-language HTML version.
@@ -30,10 +26,14 @@
The most current version should always be available from
http://cyberbuzz.gatech.edu/kaboom/linux/ as well.
+ Voir
+http://www.linux-france.com/article/sys/Changes-2.2/Changes-2.2.1.html
+pour la traduction français.
+
Also, don't forget http://www.linuxhq.com/ for all your Linux kernel
needs.
-Last updated: January 18, 1999
+Last updated: March 16, 1999
Current Author: Chris Ricker (kaboom@gatech.edu or chris.ricker@m.cc.utah.edu).
Current Minimal Requirements
@@ -43,17 +43,17 @@
encountered a bug! If you're unsure what version you're currently
running, the suggested command should tell you.
-- Kernel modules 2.1.121 ; insmod -V
+- Kernel modutils 2.1.121 ; insmod -V
- Gnu C 2.7.2.3 ; gcc --version
- Binutils 2.8.1.0.23 ; ld -v
-- Linux libc5 C Library 5.4.46 ; ls -l /lib/libc.so.*
-- Linux libc6 C Library 2.0.7pre6 ; ls -l /lib/libc.so.*
+- Linux libc5 C Library 5.4.46 ; ls -l /lib/libc*
+- Linux libc6 C Library 2.0.7pre6 ; ls -l /lib/libc*
- Dynamic Linker (ld.so) 1.9.9 ; ldd --version or ldd -v
- Linux C++ Library 2.7.2.8 ; ls -l /usr/lib/libg++.so.*
- Procps 1.2.9 ; ps --version
-- Procinfo 15 ; procinfo -v
+- Procinfo 16 ; procinfo -v
- Psmisc 17 ; pstree -V
-- Net-tools 1.49 ; hostname -V
+- Net-tools 1.50 ; hostname -V
- Loadlin 1.6a
- Sh-utils 1.16 ; basename --v
- Autofs 3.1.1 ; automount --version
@@ -61,8 +61,8 @@
- Bash 1.14.7 ; bash -version
- Ncpfs 2.2.0 ; ncpmount -v
- Pcmcia-cs 3.0.7 ; cardmgr -V
-- PPP 2.3.5 ; pppd -v
-- Util-linux 2.9g ; chsh -v
+- PPP 2.3.5 ; pppd --version
+- Util-linux 2.9i ; chsh -v
Upgrade notes
*************
@@ -105,7 +105,7 @@
none /dev/pts devpts gid=5,mode=620 0 0
- (Note: gid=5 is applicable for RedHat systems for which group "tty" has
+ (Note: gid=5 is applicable for Red Hat systems for which group "tty" has
gid 5. Adjust according to your distribution. Use mode=600 if you want
"mesg n" to be default.)
- Mount /dev/pts
@@ -142,7 +142,9 @@
unless you're running glibc2 / libc6.
If you upgrade to libc-5.4.x, you may also need to upgrade ypbind if
-you're using NIS.
+you're using NIS. For ypbind and glibc, you'll probably need the
+ypbind-3.3-glibc5.diff patch available in the same place as the ypbind
+source.
If you upgrade to libc-5.4.46, please read and pay attention to its
accompanying release notes. The section about it breaking make is not a
@@ -189,6 +191,12 @@
users should especially try to use the 2.9.1.0.x releases, as they
resolve known issues with glibc2 and binutils-2.8.x releases.
+ libbfd, libiberty, and /usr/include/bfd.h, which are part of recent
+binutils packages, are also required to compile ksymoops. Depending
+upon your distribution, this may require you to install both binutils
+and binutils-development packages (Debian puts bfd.h in binutils-dev,
+for example).
+
Gnu C
=====
@@ -247,9 +255,14 @@
DHCP clients for 2.0 do not work with the new networking code in the
2.2 kernel. You will need to upgrade your dhcpcd / dhcpclient.
- The ISDN code in the stock 2.0 kernel may not work for you. If it
+ The ISDN code in the stock 2.2 kernel may not work for you. If it
doesn't, look in ftp://ftp.suse.com/pub/isdn4linux for updated versions.
+ In 2.0.x the kernel could be configured to drop source routed IP
+packets via a compile time configuration option. In 2.2.x, this has
+been replaced by a sysctl. See Documentation/networking/ip-sysctl.txt
+for more information.
+
Memory
======
@@ -274,11 +287,25 @@
larger swap spaces, you need the new mkswap found in util-linux. You
also need to upgrade util-linux to get the latest version of mount.
+ Partitions on 2048 byte sectored media (certain magneto opticals
+most prominently) were broken throughout the whole of 2.1 kernel
+series, meaning that you will be unable to use 2.1-partitioned media on
+Linux 2.2. This is not a 2.2 bug - 2.2 finally does the right thing!
+[If you have to interchange media between Linux 2.1 and 2.2, your best
+bet is to not use partitions at all but create the filesystem on the
+raw device (e.g. /dev/sda) instead. This is also known as the
+superfloppy format.]
+
+ To properly create partitions on 2048 byte sectored media with Linux
+2.2, be sure to use no less than fdisk version 2.9i and invoke fdisk
+using '-b 2048' as an option.
+
+
RPM
===
If you run Red Hat Linux or any other distribution that uses RPM,
-you need to upgrade RPM to version 2.2.7 or later.
+you need to upgrade RPM to a 2.5.x or later version.
DOSEMU
======
@@ -324,7 +351,7 @@
When you build your kernel with Syncookie support
(CONFIG_SYN_COOKIES) the syncookie code still defaults to off (unlike
the 2.0.30+ behavior). You have to explicitly enable it by issuing the
-following command: echo 1 > /proc/sys/net/ipv4/tcp_syncookies
+following command: echo 1 > /proc/sys/net/ipv4/tcp_syncookies
Bash
====
@@ -406,7 +433,7 @@
Xosview
=======
- /proc interface changes require a recent xosview.
+ Changes to the /proc interface require a recent xosview.
RealPlayer
==========
@@ -417,8 +444,8 @@
software available shortly. In the mean time, you can always try
backing up your copy of rvplayer, and then editing it by:
- dd if=/dev/zero of=rvplayer bs=1 count=1 seek=657586 conv=notrunc dd
-if=/dev/zero of=rvplayer bs=1 count=1 seek=665986 conv=notrunc
+ dd if=/dev/zero of=rvplayer bs=1 count=1 seek=657586 conv=notrunc
+ dd if=/dev/zero of=rvplayer bs=1 count=1 seek=665986 conv=notrunc
If you're lucky, you'll then have sound....
@@ -444,6 +471,30 @@
Most distributed ping clients are buggy. Get an updated one from the
iputils package.
+Patch
+=====
+
+ Really old versions of patch cannot delete files. This can be a
+problem if you try to upgrade via patches. If, for example, you are
+unable to compile Linux 2.2, you may have an outdated version of patch.
+Upgrade, re-patch the kernel, and try again.
+
+Process accounting
+==================
+
+ If you use process accounting, you need to recompile the package
+against 2.2 kernel includes for it to work properly. Furthermore, when
+you do so, watch out for a quirky configure script. Your generated
+config.h file needs to
+
+ #define HAVE_LINUX_ACCT_H
+
+ but instead it often has
+
+ /* #undef HAVE_LINUX_ACCT_H */
+
+ so be sure to check that when you recompile.
+
Where to get the files
**********************
@@ -481,7 +532,7 @@
ftp://metalab.unc.edu/pub/Linux/GCC/release.egcs-1.0.3
Gnu C 2.7.2.3 source:
-ftp://prep.ai.mit.edu/pub/gnu/gcc-2.7.2.3.tar.gz
+ftp://ftp.gnu.org/gnu/gcc/gcc-2.7.2.3.tar.gz
ftp://metalab.unc.edu/pub/gnu/gcc-2.7.2.3.tar.gz
Linux C Library
@@ -501,12 +552,8 @@
Linux C++ Library
=================
-The 2.7.2.8 release:
-ftp://tsx-11.mit.edu/pub/linux/packages/GCC/libg++-2.7.2.8.bin.tar.gz
-ftp://metalab.unc.edu/pub/Linux/GCC/libg++-2.7.2.8.bin.tar.gz
-Installation notes:
-ftp://tsx-11.mit.edu/pub/linux/packages/GCC/release.libg++-2.7.2.8
-ftp://metalab.unc.edu/pub/Linux/GCC/release.libg++-2.7.2.8
+The 2.7.2 release:
+ftp://ftp.gnu.org/gnu/libg++/libg++-2.7.2.tar.gz
Dynamic Linker
==============
@@ -531,8 +578,8 @@
Procinfo utilities
==================
-The 15 release:
-ftp://ftp.cistron.nl/pub/people/svm/procinfo-15.tar.gz
+The 16 release:
+ftp://ftp.cistron.nl/pub/people/svm/procinfo-16.tar.gz
Psmisc utilities
================
@@ -544,15 +591,9 @@
RPM utilities
=============
-The 2.2.7 release for Intel:
-ftp://ftp.redhat.com/pub/redhat/old-releases/redhat-4.0/updates/i386/rpm-2.2.7-1.i386.rpm
-ftp://ftp.redhat.com/pub/redhat/old-releases/redhat-4.0/updates/i386/rpm-devel-2.2.7-1.i386.rpm
-The 2.2.7 release for Alpha:
-ftp://ftp.redhat.com/pub/redhat/old-releases/redhat-4.0/updates/axp/rpm-2.2.7-1.axp.rpm
-ftp://ftp.redhat.com/pub/redhat/old-releases/redhat-4.0/updates/axp/rpm-devel-2.2.7-1.axp.rpm
-The 2.2.7 release for SPARC:
-ftp://ftp.redhat.com/pub/redhat/old-releases/redhat-4.0/updates/sparc/rpm-2.2.7-1.sparc.rpm
-ftp://ftp.redhat.com/pub/redhat/old-releases/redhat-4.0/updates/sparc/rpm-devel-2.2.7-1.sparc.rpm
+The 2.5.1 source release:
+ftp://ftp.rpm.org/pub/rpm/dist/rpm-2.5.x/rpm-2.5.1-1.src.rpm
+ftp://ftp.rpm.org/pub/rpm/dist/rpm-2.5.x/rpm-2.5.1.tar.gz
DOSEMU
======
@@ -573,26 +614,26 @@
The 1.16 release:
ftp://metalab.unc.edu/pub/gnu/sh-utils-1.16.tar.gz
-ftp://prep.ai.mit.edu/pub/gnu/sh-utils-1.16.tar.gz
+ftp://ftp.gnu.org/gnu/sh-utils/sh-utils-1.16.tar.gz
Util-linux
==========
The 2.9 release:
-ftp://ftp.win.tue.nl/pub/linux/util/util-linux-2.9g.tar.gz
+ftp://ftp.win.tue.nl/pub/linux/utils/util-linux/util-linux-2.9i.tar.gz
Autofs
======
-The 3.1.1 release:
-ftp://ftp.kernel.org/pub/linux/daemons/autofs/autofs-3.1.1.tar.gz
+The 3.1.3 release:
+ftp://ftp.kernel.org/pub/linux/daemons/autofs/autofs-3.1.3.tar.gz
NFS
===
The user-land 2.2beta40 release:
-ftp://ftp.mathematik.th-darmstadt.de/pub/linux/okir/nfs-server-2.2beta40.tar.gz
-ftp://linux.nrao.edu/mirrors/fb0429.mathematik.th-darmstadt.de/pub/linux/okir/nfs-server-2.2beta40.tar.gz
+ftp://ftp.mathematik.th-darmstadt.de/pub/linux/okir/dontuse/nfs-server-2.2beta40.tar.gz
+ftp://linux.nrao.edu/mirrors/fb0429.mathematik.th-darmstadt.de/pub/linux/okir/dontuse/nfs-server-2.2beta40.tar.gz
The kernel-level 12/04/98 release:
ftp://ftp.yggdrasil.com/private/hjl/knfsd-981204.tar.gz
@@ -601,30 +642,30 @@
Net-tools
=========
-The 1.49 release:
-ftp://ftp.cs-ipv6.lancs.ac.uk/pub/Code/Linux/Net_Tools/net-tools-1.49.tar.gz
-http://www.tazenda.demon.co.uk/phil/net-tools/net-tools-1.49.tar.gz
+The 1.50 release:
+ftp://ftp.cs-ipv6.lancs.ac.uk/pub/Code/Linux/Net_Tools/net-tools-1.50.tar.gz
+http://www.tazenda.demon.co.uk/phil/net-tools/net-tools-1.50.tar.gz
Ypbind
======
The 3.3 release:
-ftp://ftp.uni-paderborn.de/pub/linux/local/yp/ypbind-3.3.tar.gz
+ftp://ftp.kernel.org/pub/linux/utils/net/NIS/ypbind-3.3.tar.gz
Sysklogd
========
-The 1.3-30 release:
-ftp://metalab.unc.edu/pub/Linux/system/daemons/sysklogd-1.3-30.tar.gz
+The 1.3-31 release:
+ftp://metalab.unc.edu/pub/Linux/system/daemons/sysklogd-1.3-31.tar.gz
Bash
====
The 1.14.7 release:
-ftp://prep.ai.mit.edu/pub/gnu/bash-1.14.7.tar.gz
+ftp://ftp.gnu.org/gnu/bash/bash-1.14.7.tar.gz
The 2.02.1 release:
-ftp://prep.ai.mit.edu/pub/gnu/bash-2.02.1.tar.gz
+ftp://ftp.gnu.org/gnu/bash/bash-2.02.1.tar.gz
Ncpfs
=====
@@ -726,8 +767,14 @@
IP utils
========
-The 11/01/98 release:
-ftp://ftp.inr.ac.ru/pub/ip-routing/iputils-ss981101.tar.gz
+The 03/01/99 release:
+ftp://ftp.inr.ac.ru/ip-routing/iproute2-2.1.99-now-ss990301.tar.gz
+
+Patch
+=====
+
+The 2.5 release:
+ftp://ftp.gnu.org/gnu/patch/patch-2.5.tar.gz
Other Info
==========
@@ -744,7 +791,7 @@
your favorite Red Hat mirror site before installing the non-RPM
version. Remember, you might need to use the --force option to get the
upgrade to install. ftp://contrib.redhat.com/ ,
-ftp://developer.redhat.com/ , or ftp://rawhide.redhat.com/ will have
+ftp://developer.redhat.com/ , or ftp://updates.redhat.com/ will have
almost everything you need, and Red Hat 5.2 ships with most necessary
software.
diff -ur --new-file old/linux/Documentation/Configure.help new/linux/Documentation/Configure.help
--- old/linux/Documentation/Configure.help Thu Jun 3 02:11:11 1999
+++ new/linux/Documentation/Configure.help Thu Jun 3 02:12:04 1999
@@ -17,6 +17,8 @@
# ftp://ftp-pavia1.linux.it/pub/linux/Configure.help
# - Polish, by Cezar Cichocki (cezar@cs.net.pl), at
# http://www.cs.net.pl/~cezar/Kernel
+# - German, by Jörg Strebel (jstrebel@suse.de) and Karl Eichwalder
+# (ke@suse.de), at http://www.suse.de/~ke/kernel/Configure.de.help.gz
#
# Information about what a kernel is, what it does, how to patch and
# compile it and much more is contained in the Kernel-HOWTO, available
@@ -51,7 +53,7 @@
# All this was shamelessly stolen from several different sources. Many
# thanks to all the contributors. Feel free to use these help texts in
# your own kernel configuration tools. The texts are copyrighted (c)
-# 1995-1998 by Axel Boldt and many others and are governed by the GNU
+# 1995-1999 by Axel Boldt and many others and are governed by the GNU
# General Public License.
Prompt for development and/or incomplete code/drivers
@@ -69,7 +71,7 @@
in some special cases. Detailed bug reports from people familiar
with the kernel internals are usually welcomed by the developers
(before submitting bug reports, please read the documents README,
- MAINTAINERS, Documentation/BUG-HUNTING, and
+ MAINTAINERS, REPORTING_BUGS, Documentation/BUG-HUNTING, and
Documentation/oops-tracing.txt in the kernel source).
Unless you intend to help test and develop a feature or driver that
@@ -81,30 +83,33 @@
Symmetric Multi Processing
CONFIG_SMP
- This enables support for systems with more than one CPU. If you have a
- system with only one CPU, like most personal computers, say N. If you
- have a system with more than one CPU, say Y.
-
- A non-SMP kernel will run on any machine, but will use only one CPU of
- a multi-CPU machine. An SMP kernel will run on many, but not all,
- single-CPU machines. On a single-CPU machine, a non-SMP kernel
- will run faster than an SMP kernel.
-
- i486 based SMP boards don't boot CONFIG_M586/M686 kernels. CONFIG_M686
- SMP kernels might not work on all Pentium based boards.
-
- People using multiprocessor machines should also say Y to "Enhanced
- Real Time Clock Support", below. The "Advanced Power Management"
- code will be disabled in an SMP kernel.
+ This enables support for systems with more than one CPU. If you have
+ a system with only one CPU, like most personal computers, say N. If
+ you have a system with more than one CPU, say Y.
+
+ If you say N here, the kernel will run on single and multiprocessor
+ machines, but will use only one CPU of a multiprocessor machine. If
+ you say Y here, the kernel will run on many, but not all,
+ singleprocessor machines. On a singleprocessor machine, the kernel
+ will run faster if you say N here.
+
+ Note that if you say Y here and choose architecture "586" or
+ "Pentium" under "Processor family", the kernel will not work on 486
+ architectures. Similarly, multiprocessor kernels for the "PPro"
+ architecture may not work on all Pentium based boards.
+
+ People using multiprocessor machines who say Y here should also say
+ Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
+ Management" code will be disabled if you say Y here.
- If you don't know what to do here, say N.
-
See also: Documentation/SMP.txt, Documentation/smp.tex,
Documentation/smp.txt, and Documentation/IO-APIC.txt. Also see the
SMP-FAQ on the WWW at http://www.irisa.fr/prive/mentre/smp-faq/ (to
browse the WWW, you need to have access to a machine on the Internet
that has a program like lynx or netscape).
+ If you don't know what to do here, say N.
+
Kernel math emulation
CONFIG_MATH_EMULATION
Linux can emulate a math coprocessor (used for floating point
@@ -124,19 +129,44 @@
available via FTP (user: anonymous) in
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.) This means that it is a
good idea to say Y here if you intend to use this kernel on
- different machines. More information about the internals of Linux
- math coprocessor emulation can be found in
- arch/i386/math-emu/README.
+ different machines.
+
+ More information about the internals of the Linux math coprocessor
+ emulation can be found in arch/i386/math-emu/README.
If you are not sure, say Y; apart from resulting in a 45 KB bigger
kernel, it won't hurt.
+
+Timer and CPU usage LEDs
+CONFIG_LEDS
+ If you define this option, the LEDs on your machine will be used
+ to provide useful information about your current system status.
+
+ If you are compiling a kernel for a NetWinder or EBSA-285, you
+ will be able to select which LEDs are active using the options
+ below. If you are compiling a kernel for the EBSA-110 however,
+ the red LED will simply flash regularly to indicate that the
+ system is still functional. It is still safe to say yes here if
+ you have a CATS system, but the driver will do nothing.
+
+Timer LED
+CONFIG_LEDS_TIMER
+ If you say yes here, one of the system LEDs (the green one on the
+ NetWinder or the amber one on the EBSA285) will flash regularly to
+ indicate that the system is still operational. This is mainly
+ useful to kernel hackers who are debugging unstable kernels.
+
+CPU usage LED
+CONFIG_LEDS_CPU
+ If you say yes here, the red LED will be used to give a good real
+ time indication of CPU usage, by lighting whenever the idle task
+ is not currently executing.
Kernel FP software completion
CONFIG_MATHEMU
This option is required for IEEE compliant floating point arithmetic
- on the Alpha. The only time you would ever not say Y is to say M
- in order to debug the code. Do not say anything but Y unless you
- know what you are doing.
+ on the Alpha. The only time you would ever not say Y is to say M in
+ order to debug the code. Say Y unless you know what you are doing.
Normal PC floppy disk support
CONFIG_BLK_DEV_FD
@@ -216,8 +246,8 @@
To use the loop device, you need the losetup utility and a recent
version of the mount program, both contained in the util-linux
- package (available via FTP (user: anonymous) from
- ftp://ftp.win.tue.nl/pub/linux/util/).
+ package. The location and current version number of util-linux is
+ contained in the file Documentation/Changes.
Note that this loop device has nothing to do with the loopback
device used for network connections from the machine to itself.
@@ -274,12 +304,19 @@
To fine-tune IDE drive/interface parameters for improved
performance, look for the hdparm package at
- ftp://metalab.unc.edu:/pub/Linux/kernel/patches/diskdrives/
+ ftp://metalab.unc.edu/pub/Linux/kernel/patches/diskdrives/
- If you have one or more IDE drives, say Y here. If your system has
- no IDE drives, or if memory requirements are really tight, you could
- say N here, and select the "Old hard disk driver" instead to save
- about 13 KB of memory in the kernel.
+ If you want to compile this driver as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want),
+ say M here and read Documentation/modules.txt and
+ Documentation/ide.txt. The module will be called ide.o. Do not
+ compile this driver as a module if your root filesystem (the one
+ containing the directory /) is located on an IDE device.
+
+ If you have one or more IDE drives, say Y or M here. If your system
+ has no IDE drives, or if memory requirements are really tight, you
+ could say N here, and select the "Old hard disk driver" below
+ instead to save about 13 KB of memory in the kernel.
Old hard disk (MFM/RLL/IDE) driver
CONFIG_BLK_DEV_HD_ONLY
@@ -382,10 +419,12 @@
CONFIG_BLK_DEV_IDEFLOPPY
If you have an IDE floppy drive which uses the ATAPI protocol,
answer Y. ATAPI is a newer protocol used by IDE CDROM/tape/floppy
- drives, similar to the SCSI protocol. IDE floppy drives include the
- LS-120 and the ATAPI ZIP (ATAPI PD-CD/CDR drives are not supported
- by this driver; support for PD-CD/CDR drives is available if you
- answer Y to "SCSI emulation support", below).
+ drives, similar to the SCSI protocol.
+
+ The LS-120 and the IDE/ATAPI Iomega ZIP drive are also supported by
+ this driver. (ATAPI PD-CD/CDR drives are not supported by this
+ driver; support for PD-CD/CDR drives is available if you answer Y to
+ "SCSI emulation support", below).
If you say Y here, the FLOPPY drive will be identified along with
other IDE devices, as "hdb" or "hdc", or something similar (check
@@ -464,7 +503,7 @@
Generic PCI IDE chipset support
CONFIG_BLK_DEV_IDEPCI
- Enable this for PCI systems which use IDE drive(s).
+ Say Y here for PCI systems which use IDE drive(s).
This option helps the IDE driver to automatically detect and
configure all PCI-based IDE interfaces in your system.
@@ -519,7 +558,8 @@
If you suspect your hardware is at all flakey, say N here.
Do NOT email the IDE kernel people regarding this issue!
- It is nearly always safe to say Y to this question.
+ It is normally safe to answer Y to this question unless your
+ motherboard uses a VIA VP2 chipset, in which case you should say N.
Other IDE chipset support
CONFIG_IDE_CHIPSETS
@@ -548,15 +588,16 @@
This driver is enabled at runtime using the "ide0=dtc2278" kernel
boot parameter. It enables support for the secondary IDE interface
of the DTC-2278 card, and permits faster I/O speeds to be set as
- well. See the Documentation/ide.txt and dtc2278.c files for more
- info.
+ well. See the Documentation/ide.txt and drivers/block/dtc2278.c
+ files for more info.
Holtek HT6560B support
CONFIG_BLK_DEV_HT6560B
This driver is enabled at runtime using the "ide0=ht6560b" kernel
boot parameter. It enables support for the secondary IDE interface
of the Holtek card, and permits faster I/O speeds to be set as well.
- See the Documentation/ide.txt and ht6560b.c files for more info.
+ See the Documentation/ide.txt and drivers/block/ht6560b.c files for
+ more info.
PROMISE DC4030 support (EXPERIMENTAL)
CONFIG_BLK_DEV_PDC4030
@@ -572,6 +613,11 @@
CONFIG_BLK_DEV_PS2
Say Y here if you have a PS/2 machine with a MCA bus and an ESDI
hard disk.
+
+ If you want to compile the driver as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want),
+ say M here and read Documentation/modules.txt. The module will be
+ called ps2esdi.o.
Tekram TRM290 chipset support (EXPERIMENTAL)
CONFIG_BLK_DEV_TRM290
@@ -601,36 +647,26 @@
If you say Y here, you also need to say Y to "Use DMA by default
when available", above.
- Please read the comments at the top of drivers/block/via82C586.c
-
If unsure, say N.
CMD646 chipset support (EXPERIMENTAL)
CONFIG_BLK_DEV_CMD646
Say Y here if you have an IDE controller like this.
-HPT343 chipset support (EXPERIMENTAL)
-CONFIG_BLK_DEV_HPT343
- This driver adds up to 4 more EIDE devices sharing a single
- interrupt. The HPT343 chipset in its current form is a non-bootable
- PCI UDMA controller. This driver requires dynamic tuning of the
- chipset during the ide-probe at boot. It is reported to support DVD
- II drives, by the manufacturer.
-
- Please read the comments at the top of drivers/block/hpt343.c
-
QDI QD6580 support
CONFIG_BLK_DEV_QD6580
This driver is enabled at runtime using the "ide0=qd6580" kernel
boot parameter. It permits faster I/O speeds to be set. See the
- files Documentation/ide.txt and qd6580.c for more info.
+ files Documentation/ide.txt and drivers/block/qd6580.c for more
+ info.
UMC 8672 support
CONFIG_BLK_DEV_UMC8672
This driver is enabled at runtime using the "ide0=umc8672" kernel
boot parameter. It enables support for the secondary IDE interface
of the UMC-8672, and permits faster I/O speeds to be set as well.
- See the files Documentation/ide.txt and umc8672.c for more info.
+ See the files Documentation/ide.txt and drivers/block/umc8672.c for
+ more info.
ALI M14xx support
CONFIG_BLK_DEV_ALI14XX
@@ -638,7 +674,7 @@
boot parameter. It enables support for the secondary IDE interface
of the ALI M1439/1443/1445/1487/1489 chipsets, and permits faster
I/O speeds to be set as well. See the files Documentation/ide.txt
- and ali14xx.c for more info.
+ and drivers/block/ali14xx.c for more info.
XT hard disk support
CONFIG_BLK_DEV_XD
@@ -1017,6 +1053,24 @@
board uses the R4300 and a R5230 CPUs. For more information about
this board see http://www.algor.co.uk.
+IDE card support
+CONFIG_BLK_DEV_IDE_CARDS
+ On Acorn systems, enable this if you wish to use an IDE interface
+ expansion card. If you do not or are unsure, say N to this.
+
+ICS IDE interface
+CONFIG_BLK_DEV_IDE_ICS
+ On Acorn systems, enable this if you wish to use the ICS IDE
+ interface card. This is not required for ICS partition support.
+ If you are unsure, say N to this.
+
+ADFS partition support
+CONFIG_BLK_DEV_PART
+ This allows Linux on Acorn systems to determine its partitions in
+ the 'non-ADFS' partition area of the hard disk - usually located
+ after the ADFS partition. You are probably using this system, so
+ you should enable it.
+
Support for Mips Magnum 4000
CONFIG_MIPS_MAGNUM_4000
This is a machine with a R4000 100 MHz CPU. To compile a Linux
@@ -1068,24 +1122,9 @@
contained in the package net-tools, the location and version number
of which are given in Documentation/Changes.
-Network aliasing
-CONFIG_NET_ALIAS
- If you say Y here, you will be able to set multiple network
- addresses on the same low-level network device driver. This is
- typically used for services that act differently based on the
- address they listen on (e.g. "multihosting" or "virtual domains" or
- "virtual hosting services" on the web server apache and the ftp
- server wuftpd -- read the Virtual-Services-HOWTO, available via FTP
- (user: anonymous) from ftp://metalab.unc.edu/pub/Linux/docs/HOWTO)
- or for connecting to different logical networks through the same
- physical interface (most commonly an Ethernet networking card). See
- Documentation/networking/alias.txt for more info.
-
- This is the generic part, later when configuring network protocol
- options you will be asked for protocol-specific aliasing support,
- and you will have to say Y to at least one of them, most likely to
- "IP: aliasing support". If you need this feature (for any protocol,
- like IP) say Y; if unsure, say N.
+ For a general introduction to Linux networking, it is highly
+ recommended to read the NET-3-HOWTO, available via FTP (user:
+ anonymous) from ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
Socket filtering
CONFIG_FILTER
@@ -1178,12 +1217,12 @@
Alpha system type
CONFIG_ALPHA_GENERIC
This is the system type of your hardware. A "generic" kernel will
- run on any supported Alpha system. Configuring a kernel for one
- specific system can save about 200K and operate more efficiently.
+ run on any supported Alpha system. However, if you configure a
+ kernel for your specific system, it will be faster and smaller.
To find out what type of Alpha system you have, you may want to
check out the Linux/Alpha FAQ, accessible on the WWW from
- http://www.azstarnet.com/~axplinux/ (To browse the WWW, you need to
+ http://www.alphalinux.org (To browse the WWW, you need to
have access to a machine on the Internet that has a program like
lynx or netscape). In summary:
@@ -1197,7 +1236,8 @@
EB64+ EB64+ 21064 evaluation board
EB66 EB66 21066 evaluation board
EB66+ EB66+ 21066 evaluation board
- Jensen DECpc 150, DEC 2000 model 300, DEC 2000 model 500
+ Jensen DECpc 150, DEC 2000 model 300,
+ DEC 2000 model 500
LX164 AlphaPC164-LX
Miata Personal Workstation 433a, 433au, 500a,
500au, 600a, or 600au
@@ -1227,7 +1267,7 @@
which is command line driven, and ARC, which uses menus and arrow
keys. Details about the Linux/Alpha booting process are contained in
the Linux/Alpha FAQ, accessible on the WWW from
- http://www.azstarnet.com/~axplinux/ (To browse the WWW, you need to
+ http://www.alphalinux.org (To browse the WWW, you need to
have access to a machine on the Internet that has a program like
lynx or netscape).
@@ -1333,34 +1373,26 @@
Find out whether you have a PCI motherboard. PCI is the name of a
bus system, i.e. the way the CPU talks to the other stuff inside
your box. Other bus systems are ISA, EISA, Microchannel (MCA) or
- VESA. If you have PCI, say Y, otherwise N. The PCI-HOWTO, available
- via FTP (user: anonymous) in
+ VESA. If you have PCI, say Y, otherwise N.
+
+ The PCI-HOWTO, available via FTP (user: anonymous) in
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO, contains valuable
information about which PCI hardware does work under Linux and which
doesn't.
- If some of your PCI devices don't work and you get a warning during
- boot time ("man dmesg"), please follow the instructions at the top
- of include/linux/pci.h.
-
PCI access mode
CONFIG_PCI_GOBIOS
- If you have enabled PCI bus support above, you probably want to
- allow Linux to use your PCI BIOS to detect the PCI devices and
- determine their configuration. Note: some old PCI motherboards have
- BIOS bugs and may crash if you say Y here -- for such motherboards,
- you should say N here and say Y to "PCI direct access support"
- instead.
-
- Except for some special cases (embedded systems with no BIOS), you
- probably should say Y here.
-
- If you don't want to use the PCI BIOS (e.g., because you run some
- embedded system with no BIOS at all) or Linux says it cannot use
- your PCI BIOS, you can enable direct PCI hardware here. It might
- fail if your machine is based on some unusual chipset, but it
- usually works. If both PCI BIOS and direct PCI access are enabled,
- the use of BIOS is preferred. If unsure, say Y.
+ On PCI systems, the BIOS can be used to detect the PCI devices and
+ determine their configuration. However, some old PCI motherboards
+ have BIOS bugs and may crash if this is done. Also, some embedded
+ PCI-based systems don't have any BIOS at all. Linux can also try to
+ detect the PCI hardware directly without using the BIOS.
+
+ With this option, you can specify how Linux should detect the PCI
+ devices. If you choose "BIOS", the BIOS will be used, if you choose
+ "Direct", the BIOS won't be used, and if you choose "Any", the
+ kernel will try the direct access method and falls back to the BIOS
+ if that doesn't work. If unsure, go with the default.
PCI quirks
CONFIG_PCI_QUIRKS
@@ -1385,11 +1417,8 @@
PCI (/proc/bus/pci) has been implemented and the old one is
supported for compatibility reasons only; you'll get the old one (in
addition to the new one) if you say Y here and to "/proc filesystem
- support", below. If unsure, say Y.
-
-If you say Y here and to the "/proc filesystem support" below, you
- will get a directory /proc/pci with information about your PCI
- hardware. If unsure, say Y.
+ support", below. If unsure, say Y. If you say N, you'll only get the
+ new /proc/bus/pci interface.
MCA support
CONFIG_MCA
@@ -1398,7 +1427,7 @@
Documentation/mca.txt (and especially the web page given there)
before attempting to build an MCA bus kernel.
-SGI Visal Workstation support
+SGI Visual Workstation support
CONFIG_VISWS
The SGI Visual Workstation series is an IA32-based workstation
based on SGI systems chips with some legacy PC hardware attached.
@@ -1407,6 +1436,10 @@
PC boards and vice versa.
See Documentation/sgi-visws.txt for more.
+SGI Visual Workstation framebuffer support
+CONFIG_FB_SGIVW
+ SGI Visual Workstation support for framebuffer graphics.
+
System V IPC
CONFIG_SYSVIPC
Inter Process Communication is a suite of library functions and
@@ -1593,19 +1626,21 @@
all x86 CPU types (albeit not optimally fast), you can specify
"386" here.
- If you specify one of "486" or "Pentium" or "PPro", then the kernel
- will not necessarily run on earlier architectures (ie a Pentium
- optimized kernel will run on a PPro, but not necessarily on a i486).
+ If you specify one of "486" or "586" or "Pentium" or "PPro", then
+ the kernel will not necessarily run on earlier architectures (e.g. a
+ Pentium optimized kernel will run on a PPro, but not necessarily on
+ a i486).
Here are the settings recommended for greatest speed:
- - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX and
- Cyrix/TI 486DLC/DLC2. Only "386" kernels will run on a 386 class
- machine.
+ - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
+ 486DLC/DLC2 and UMC 486SX-S. Only "386" kernels will run on a 386
+ class machine.
- "486" for the AMD/Cyrix/IBM/Intel DX4 or 486DX/DX2/SL/SX/SX2,
AMD/Cyrix 5x86, NexGen Nx586 and UMC U5D or U5S.
- - "586" for generic Pentium CPU's, possibly lacking the TSC register.
- - "Pentium" for the Intel Pentium/Pentium MMX, AMD K5, K6 and K6-3D.
- This option will assume that you have a time stamp counter.
+ - "586" for generic Pentium CPUs, possibly lacking the TSC
+ (time stamp counter) register.
+ - "Pentium" for the Intel Pentium/Pentium MMX, AMD K5, K6 and
+ K6-3D.
- "PPro" for the Cyrix/IBM/National Semiconductor 6x86MX, MII and
Intel Pentium II/Pentium Pro.
@@ -1667,9 +1702,9 @@
If you are compiling for the x86 architecture, you can say Y if you
want to play with it, but it is not essential. Please note that
- running graphical applications that directly touch the hardware (e.g.
- and accelerated X server) and that are not frame buffer device-aware
- may cause unexpected results. If unsure, say N.
+ running graphical applications that directly touch the hardware
+ (e.g. an accelerated X server) and that are not frame buffer
+ device-aware may cause unexpected results. If unsure, say N.
Acorn VIDC support
CONFIG_FB_ACORN
@@ -1807,65 +1842,72 @@
This is the frame buffer device driver for generic VESA 2.0
compliant graphic cards. The older VESA 1.2 cards are not supported.
You will get a boot time penguin logo at no additional cost. Please
- read Documentation/fb/vesafb.txt and the . If unsure, say Y.
+ read Documentation/fb/vesafb.txt. If unsure, say Y.
Backward compatibility mode for Xpmac
CONFIG_FB_COMPAT_XPMAC
- If you use the Xpmac X server (common with mklinux), you'll need
- to enable this to use X. You should consider changing to XFree86
- which includes a server that supports the frame buffer device
- directly (XF68_FBDev).
+ If you use the Xpmac X server (common with mklinux), you'll need to
+ say Y here to use X. You should consider changing to XFree86 which
+ includes a server that supports the frame buffer device directly
+ (XF68_FBDev).
Matrox unified accelerated driver
CONFIG_FB_MATROX
- Say Y here if you have Matrox Millennium, Matrox Millennium II,
+ Say Y here if you have Matrox Millennium, Matrox Millennium II,
Matrox Mystique, Matrox Mystique 220, Matrox Productiva G100, Matrox
- Mystique G200, Matrox Millennium G200 or Matrox Marvel G200 in your
- box. At this time, G100, Mystique G200 and Marvel G200 support is
- untested. If you want, you can select M, in this case module
- matroxfb.o will be created. You can pass parameters into driver if
- it is compiled into kernel by specifying "video=matrox:XXX", where
- meaning of XXX you can found at the end of main source file
- (drivers/video/matroxfb.c) at boot time. Same parameters can be
- passed into insmod if driver is used as module.
+ Mystique G200, Matrox Millennium G200 or Matrox Marvel G200 video
+ card in your box. At this time, support for the G100, Mystique G200
+ and Marvel G200 is untested.
+
+ This driver is also available as a module ( = code which can be
+ inserted and removed from the running kernel whenever you want).
+ The module will be called matroxfb.o. If you want to compile it as
+ a module, say M here and read Documentation/modules.txt.
+
+ You can pass several parameters to the driver at boot time or at
+ module load time. The parameters look like "video=matrox:XXX", where
+ the meaning of XXX can be found at the end of the main source file
+ (drivers/video/matroxfb.c). Please see the file
+ Documentation/fb/matroxfb.txt.
Matrox Millennium support
CONFIG_FB_MATROX_MILLENIUM
- Say Y here if you have Matrox Millennium or Matrox Millennium II in
- the box. If you select "Advanced lowlevel driver options", you should
- check 4 bpp packed pixel, 8 bpp packed pixel, 16 bpp packed pixel, 24
- bpp packed pixel and 32 bpp packed pixel. You can also use font
- widths different from 8.
+ Say Y here if you have a Matrox Millennium or Matrox Millennium II
+ video card. If you select "Advanced lowlevel driver options" below,
+ you should check 4 bpp packed pixel, 8 bpp packed pixel, 16 bpp
+ packed pixel, 24 bpp packed pixel and 32 bpp packed pixel. You can
+ also use font widths different from 8.
Matrox Mystique support
CONFIG_FB_MATROX_MYSTIQUE
- Say Y here if you have Matrox Mystique or Matrox Mystique 220 in the
- box. If you select "Advanced lowlevel driver options", you should
- check 8 bpp packed pixel, 16 bpp packed pixel, 24 bpp packed pixel
- and 32 bpp packed pixel. You can also use font widths different
- from 8.
+ Say Y here if you have a Matrox Mystique or Matrox Mystique 220
+ video card. If you select "Advanced lowlevel driver options" below,
+ you should check 8 bpp packed pixel, 16 bpp packed pixel, 24 bpp
+ packed pixel and 32 bpp packed pixel. You can also use font widths
+ different from 8.
Matrox G100/G200 support
CONFIG_FB_MATROX_G100
- Say Y here if you have Matrox Productiva G100, Matrox Mystique G200,
- Matrox Marvel G200 or Matrox Millennium G200 in the box. If you
- select "Advanced lowlevel driver options", you should check 8 bpp
- packed pixel, 16 bpp packed pixel, 24 bpp packed pixel and 32 bpp
- packed pixel. You can also use font widths different from 8.
+ Say Y here if you have a Matrox Productiva G100, Matrox Mystique
+ G200, Matrox Marvel G200 or Matrox Millennium G200 video card. If
+ you select "Advanced lowlevel driver options", you should check 8
+ bpp packed pixel, 16 bpp packed pixel, 24 bpp packed pixel and 32
+ bpp packed pixel. You can also use font widths different from 8.
Matrox unified driver multihead support
CONFIG_FB_MATROX_MULTIHEAD
- Say Y here if you have more than one (supported) Matrox device in
- computer and you want to use all of them. If you have only one
- device, you should say N because of driver compiled with Y is larger
- and a bit slower, especially on ia32 (ix86).
- If you compiled driver as module, you are VERY interested in speed
- and you can use 40KB of memory per each Matrox device, you can
- compile driver without multihead support and instead of it insmod
- more module instances. In this case, you MUST specify parameter dev=N
- to insmod, where N is sequential number of Matrox device (0 = first,
- 1 = second and so on).
-
+ Say Y here if you have more than one (supported) Matrox device in
+ your computer and you want to use all of them. If you have only one
+ device, you should say N because the driver compiled with Y is
+ larger and a bit slower, especially on ia32 (ix86).
+
+ If you said M to "Matrox unified accelerated driver" and N here, you
+ will still be able to use several Matrox devices simultaneously.
+ This is slightly faster but uses 40 KB of kernel memory per Matrox
+ card. You do this by inserting several instances of the module
+ matroxfb.o into the kernel with insmod, supplying the parameter
+ "dev=N" where N is 0, 1, etc. for the different Matrox devices.
+
MDA text console (dual-headed)
CONFIG_MDA_CONSOLE
Say Y here if you have an old MDA or monochrome Hercules graphics
@@ -2025,7 +2067,7 @@
Parallel-port support
CONFIG_PARPORT
If you want to use devices connected to your machine's parallel port
- (the connector at the computer with 25 holes), e.g. printer, Zip
+ (the connector at the computer with 25 holes), e.g. printer, ZIP
drive, PLIP link (Parallel Line Internet Protocol is mainly used to
create a mini network by connecting the parallel ports of two local
machines) etc., then you need to say Y here; please read
@@ -2052,10 +2094,13 @@
CONFIG_PARPORT_PC
You should say Y here if you have a PC-style parallel port. All IBM
PC compatible computers and some Alphas have PC-style parallel
- ports. This code is also available as a module. If you want to it as
- a module ( = code which can be inserted in and removed from the
+ ports.
+
+ This code is also available as a module. If you want to compile it
+ as a module ( = code which can be inserted in and removed from the
running kernel whenever you want), say M here and read
Documentation/modules.txt. The module will be called parport_pc.o.
+
If unsure, say Y.
Support foreign hardware
@@ -2079,7 +2124,7 @@
CONFIG_PNP_PARPORT
Some IEEE-1284 conforming parallel-port devices can identify
themselves when requested. Say Y to enable this feature, or M to
- compile it as a module (parport_ieee1284.o). If in doubt, say N.
+ compile it as a module (parport_probe.o). If in doubt, say N.
Enable loadable module support
CONFIG_MODULES
@@ -2145,15 +2190,20 @@
TCP/IP networking
CONFIG_INET
These are the protocols used on the Internet and on most local
- Ethernets. The safest is to say Y here (which will enlarge your
- kernel by about 35 kB), since some programs (e.g. the X window
+ Ethernets. It is highly recommended to say Y here (this will enlarge
+ your kernel by about 35 KB), since some programs (e.g. the X window
system) use TCP/IP even if your machine is not connected to any
other computer. You will get the so-called loopback device which
- allows you to ping yourself (great fun, that!). This option is
- also necessary if you want to use the full power of term (term
- is a program which gives you almost full Internet connectivity
- if you have a regular dial up shell account on some Internet
- connected Unix computer; for more information, read
+ allows you to ping yourself (great fun, that!).
+
+ For an excellent introduction to Linux networking, please read the
+ NET-3-HOWTO, available via FTP (user: anonymous) from
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
+
+ This option is also necessary if you want to use the full power of
+ term (term is a program which gives you almost full Internet
+ connectivity if you have a regular dial up shell account on some
+ Internet connected Unix computer; for more information, read
http://www.bart.nl/~patrickr/term-howto/Term-HOWTO.html).
If you say Y here and also to "/proc filesystem support" and "Sysctl
@@ -2221,8 +2271,18 @@
the Linux router will also be able to take the packet's source
address into account. Furthermore, if you also say Y to "IP: use TOS
value as routing key" below, the TOS (Type-Of-Service) field of the
- packet can be used for routing decisions as well.
-
+ packet can be used for routing decisions as well. In addition, if
+ you say Y here and to "IP: fast network address translation" below,
+ the router will also be able to modify source and destination
+ addresses of forwarded packets.
+
+ If you are interested in this, please see the preliminary
+ documentation at http://www.compendium.com.ar/policy-routing.txt and
+ ftp://post.tepkom.ru/pub/vol2/Linux/docs/advanced-routing.tex. You
+ will need supporting software from ftp://ftp.inr.ac.ru/ip-routing/
+
+ If unsure, say N.
+
IP: equal cost multipath
CONFIG_IP_ROUTE_MULTIPATH
Normally, the routing tables specify a single action to be taken in
@@ -2241,6 +2301,12 @@
you say Y here, you will be able to specify different routes for
packets with different TOS values.
+IP: use FWMARK value as routing key
+CONFIG_IP_ROUTE_FWMARK
+ If you say Y here, you will be able to specify different routes for
+ packets with different FWMARK ("firewalling mark") values
+ (see ipchains(8), "-m" argument).
+
IP: verbose route monitoring
CONFIG_IP_ROUTE_VERBOSE
If you say Y here, which is recommended, then the kernel will print
@@ -2259,7 +2325,9 @@
CONFIG_IP_ROUTE_NAT
If you say Y here, your router will be able to modify source and
destination addresses of packets that pass through it, in a manner
- you specify.
+ you specify. General information about Network Address Translation
+ can be gotten from the document
+ http://www.csn.tu-chemnitz.de/~mha/linux-ip-nat/diplom/nat.html
IP: optimize as router not host
CONFIG_IP_ROUTER
@@ -2293,7 +2361,7 @@
http://www.rustcorp.com/linux/ipchains/) to allow selective blocking
of Internet traffic based on type, origin and destination.
Note that the Linux firewall code has changed and the old program
- called ipfwadm won't work anymore.
+ called ipfwadm won't work anymore. Please read the IPCHAINS-HOWTO.
The type of firewall provided by ipchains and this kernel support is
called a "packet filter". The other type of firewall, a
@@ -2330,19 +2398,16 @@
IP: firewall packet netlink device
CONFIG_IP_FIREWALL_NETLINK
- If you say Y here, then the first 128 bytes of each packet that hit
- your Linux firewall and was blocked are passed on to optional user
- space monitoring software that can then look for attacks and take
- actions such as paging the administrator of the site.
+ If you say Y here, you can use the ipchains tool to copy all or part
+ of any packet you specify that hits your Linux firewall to optional
+ user space monitoring software that can then look for attacks and
+ take actions such as paging the administrator of the site.
To use this, you need to create a character special file under /dev
with major number 36 and minor number 3 using mknod ("man mknod"),
and you need (to write) a program that reads from that device and
takes appropriate action.
- With the ipchains tool you can specify which packets you want to go
- to this device, as well as how many bytes from each packet.
-
IP: kernel level autoconfiguration
CONFIG_IP_PNP
This enables automatic configuration of IP addresses of devices and
@@ -2433,7 +2498,7 @@
host replies, the Linux firewall will silently forward the traffic
to the corresponding local computer. This way, the computers on your
local net are completely invisible to the outside world, even though
- they can reach the outside and can be reached. This makes it
+ they can reach the outside and can receive replies. This makes it
possible to have the computers on the local network participate on
the Internet even if they don't have officially registered IP
addresses. (This last problem can also be solved by connecting the
@@ -2480,8 +2545,8 @@
IP: masquerading special modules support
CONFIG_IP_MASQUERADE_MOD
This provides support for special modules that can modify the
- rewriting rules used when masquerading. Please note that this feature
- adds a little overhead in the input packet processing chain.
+ rewriting rules used when masquerading. Please note that this
+ feature adds a little overhead in the input packet processing chain.
Examples of such modules are ipautofw (allowing the masquerading of
protocols which don't have their own protocol helpers) and port
@@ -2521,15 +2586,15 @@
forwarding of packets from outside to inside a firewall on given
ports. This could be useful if, for example, you want to run a web
server behind the firewall or masquerading host and that web server
- should be visible to the outside world. An external client connects
- to port 80 of the firewall, the firewall forwards requests to this
- port to the web server, the web server handles the request and the
- results are sent through the firewall to the original client. The
- client thinks that the firewall machine itself is running the web
- server. This can also be used for load balancing if you have a farm
- of identical web servers behind the firewall.
+ should be accessible from the outside world. An external client
+ sends a request to port 80 of the firewall, the firewall forwards
+ this request to the web server, the web server handles the request
+ and the results are sent through the firewall to the original
+ client. The client thinks that the firewall machine itself is
+ running the web server. This can also be used for load balancing if
+ you have a farm of identical web servers behind the firewall.
- Information about it is available from
+ Information about this feature is available from
http://www.monmouth.demon.co.uk/ipsubs/portforwarding.html (to
browse the WWW, you need to have access to a machine on the Internet
that has a program like lynx or netscape). For general info, please
@@ -2548,12 +2613,14 @@
IP: ipmarkfw masquerade support
CONFIG_IP_MASQUERADE_MFW
- This provides functionality similar to port forwarding, the
- difference is that Firewall Mark Forwarding uses "firewalling mark"
- to select which packets must forward (see ipchains(8), "-m" argument).
+ Firewall Mark Forwarding provides functionality similar to port
+ forwarding (see "IP: ipportfw masquerade support", above), the
+ difference being that Firewall Mark Forwarding uses "firewalling
+ mark" to select which packets must be forwarded (see ipchains(8),
+ "-m" argument).
- The ip_masq_mfw code is still under development and so is currently
- marked EXPERIMENTAL. If you want to try it, say Y.
+ This code is still under development and so is currently marked
+ EXPERIMENTAL. If you want to try it, say Y.
This code is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
@@ -2584,12 +2651,12 @@
Sometimes it is useful to give several IP addresses to a single
physical network interface (serial port or Ethernet card). The most
common case is that you want to serve different WWW or ftp documents
- to the outside according to which of your host names was used to
+ to the outside depending on which of your host names was used to
connect to you. This is called "multihosting" or "virtual domains"
or "virtual hosting services" and is explained in detail on the WWW
at http://www.thesphere.com/~dlp/TwoServers/ (to browse the WWW, you
need to have access to a machine on the Internet that has a program
- like lynx or netscape) and also in the Virtual-Hosting-HOWTO,
+ like lynx or netscape) and also in the Virtual-Services-HOWTO,
available via FTP (user: anonymous) from
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
@@ -2709,20 +2776,6 @@
enabled. Those programs that would benefit from disabling this
facility can do it on a per connection basis themselves.
-IP: Drop source routed frames
-CONFIG_IP_NOSR
- Usually, the originator of an IP frame (packet) specifies only the
- destination, and the hosts along the way do the routing, i.e. they
- decide how to forward the frame. However, there is a feature of the
- IP protocol that allows to specify the full route for a given frame
- already at its origin. A frame with such a fully specified route is
- called "source routed". The question now is whether we should honour
- these route requests when such frames arrive, or if we should drop
- all those frames instead. Honouring them can introduce security
- problems (and is rarely a useful feature), and hence it is
- recommended that you say Y here unless you really know what you're
- doing.
-
IP: Allow large windows (not recommended if <16 MB of memory)
CONFIG_SKB_LARGE
On high speed, long distance networks the performance limit on
@@ -2739,22 +2792,25 @@
Unix domain sockets
CONFIG_UNIX
- This includes Unix domain sockets, the standard Unix mechanism for
- establishing and accessing network connections. Many commonly used
- programs such as the X Window system and syslog use these sockets
- even if your machine is not connected to any network. Unless you are
- working on an embedded system or something similar, you therefore
- definitely want to say Y here.
+ If you say Y here, you will include support for Unix domain sockets;
+ sockets are the standard Unix mechanism for establishing and
+ accessing network connections. Many commonly used programs such as
+ the X Window system and syslog use these sockets even if your
+ machine is not connected to any network. Unless you are working on
+ an embedded system or something similar, you therefore definitely
+ want to say Y here.
- The socket support is also available as a module ( = code which can
- be inserted in and removed from the running kernel whenever you
- want). The module will be called unix.o. If you want to compile it
- as a module, say M here and read Documentation/modules.txt. If you
- try building this as a module and you have said Y to "Kernel module
- loader support" above, be sure to add 'alias net-pf-1 unix' to your
- /etc/conf.modules file.
+ However, the socket support is also available as a module ( = code
+ which can be inserted in and removed from the running kernel
+ whenever you want). If you want to compile it as a module, say M
+ here and read Documentation/modules.txt. The module will be called
+ unix.o. If you try building this as a module and you have said Y to
+ "Kernel module loader support" above, be sure to add 'alias net-pf-1
+ unix' to your /etc/conf.modules file. Note that several important
+ services won't work correctly if you say M here and then neglect to
+ load the module.
- If unsure, say Y.
+ Say Y unless you know what you are doing.
The IPv6 protocol
CONFIG_IPV6
@@ -2894,14 +2950,14 @@
for details (to browse the WWW, you need to have access to a machine
on the Internet that has a program like lynx or netscape). EtherTalk
is the name used for AppleTalk over Ethernet and the cheaper and
- slower LocalTalk is AppleTalk over a proprietary apple network using
+ slower LocalTalk is AppleTalk over a proprietary Apple network using
serial links. EtherTalk and LocalTalk are fully supported by Linux.
- The NET-2-HOWTO, available via FTP (user: anonymous) in
- ftp://metalab.unc.edu/pub/Linux/docs/HOWTO contains valuable
- information as well.
General information about how to connect Linux, Windows machines and
Macs is on the WWW at http://www.eats.com/linux_mac_win.html
+ The NET-3-HOWTO, available via FTP (user: anonymous) in
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO contains valuable
+ information as well.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
@@ -2914,36 +2970,45 @@
CONFIG_IPDDP
This allows IP networking for users who only have AppleTalk
networking available. This feature is experimental. With this
- driver, you can either encapsulate IP inside AppleTalk (e.g. if your
- Linux box is stuck on an AppleTalk only network) or decapsulate
- (e.g. if you want your Linux box to act as an Internet gateway for a
- zoo of AppleTalk connected Macs). You decide which one of the two
- you want in the following two questions; you can say Y to only one
- of them. Please see Documentation/networking/ipddp.txt for more
- information.
+ driver, you can encapsulate IP inside AppleTalk (e.g. if your Linux
+ box is stuck on an AppleTalk only network) or decapsulate (e.g. if
+ you want your Linux box to act as an Internet gateway for a zoo of
+ AppleTalk connected Macs). Please see the file
+ Documentation/networking/ipddp.txt for more information.
+
+ If you say Y here, the AppleTalk-IP support will be compiled into
+ the kernel. In this case, you can either use encapsulation or
+ decapsulation, but not both. With the following two questions, you
+ decide which one you want.
- This driver is also available as a module ( = code which can be
- inserted in and removed from the running kernel whenever you want).
- The module is called ipddp.o. If you want to compile it as a module,
- say M here and read Documentation/modules.txt.
+ If you say M here, the AppleTalk-IP support will be compiled as a
+ module ( = code which can be inserted in and removed from the
+ running kernel whenever you want, read Documentation/modules.txt).
+ The module is called ipddp.o. In this case, you will be able to use
+ both encapsulation and decapsulation simultaneously, by loading two
+ copies of the module and specifying different values for the module
+ option ipddp_mode.
IP to AppleTalk-IP Encapsulation support
CONFIG_IPDDP_ENCAP
- If you say Y here, the kernel will be able to encapsulate IP packets
- inside AppleTalk frames; this is useful if your Linux box is stuck
- on an AppleTalk network (which hopefully contains a decapsulator
- somewhere). Please see Documentation/networking/ipddp.txt for more
- information. If you say Y here, you cannot say Y to "AppleTalk-IP to
- IP Decapsulation support", below.
+ If you say Y here, the AppleTalk-IP code will be able to encapsulate
+ IP packets inside AppleTalk frames; this is useful if your Linux box
+ is stuck on an AppleTalk network (which hopefully contains a
+ decapsulator somewhere). Please see
+ Documentation/networking/ipddp.txt for more information. If you said
+ Y to "AppleTalk-IP driver support" above and you say Y here, then
+ you cannot say Y to "AppleTalk-IP to IP Decapsulation support",
+ below.
AppleTalk-IP to IP Decapsulation support
CONFIG_IPDDP_DECAP
- If you say Y here, the kernel will be able to decapsulate
+ If you say Y here, the AppleTalk-IP code will be able to decapsulate
AppleTalk-IP frames to IP packets; this is useful if you want your
- Linux box to act as an Internet gateway for an AppleTalk
- network. Please see Documentation/networking/ipddp.txt for more
- information. If you say Y here, you cannot say Y to "IP to
- AppleTalk-IP Encapsulation support", above.
+ Linux box to act as an Internet gateway for an AppleTalk network.
+ Please see Documentation/networking/ipddp.txt for more information.
+ If you said Y to "AppleTalk-IP driver support" above and you say Y
+ here, then you cannot say Y to "IP to AppleTalk-IP Encapsulation
+ support", above.
Apple/Farallon LocalTalk PC card support
CONFIG_LTPC
@@ -3686,7 +3751,7 @@
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. The
SCSI-Programming-HOWTO contains information about how to add or
remove an SCSI device from a running Linux machine without
- rebooting.
+ rebooting.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
@@ -3731,7 +3796,7 @@
CONFIG_BLK_DEV_SR
If you want to use a SCSI CDROM under Linux, say Y and read the
SCSI-HOWTO and the CDROM-HOWTO from
- ftp://metalab.unc.edu:/pub/Linux/docs/HOWTO. Also make sure to say Y
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. Also make sure to say Y
or M to "ISO 9660 CDROM filesystem support" later.
This driver is also available as a module ( = code which can be
@@ -3759,7 +3824,8 @@
other devices, it's possible that you'll have to write the driver
software yourself, so have a look at the SCSI-HOWTO and at the
SCSI-Programming-HOWTO, both available via FTP (user: anonymous) in
- ftp://metalab.unc.edu:/pub/Linux/docs/HOWTO.
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. Please read the file
+ Documentation/scsi-generic.txt for more information.
If you want to compile this as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
@@ -3819,11 +3885,13 @@
Adaptec AHA152X/2825 support
CONFIG_SCSI_AHA152X
- This is support for the AVA-1505 (irq etc must be manually specified),
- AHA-1510, AHA-1520, AHA-1522, and AHA-2825 SCSI host adapters. It is
- explained in section 3.3 of the SCSI-HOWTO, available via FTP
- (user: anonymous) at ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. You
- might also want to read the comments at the top of
+ This is a driver for the AHA-1510, AHA-1520, AHA-1522, and AHA-2825
+ SCSI host adapters. It also works for the AVA-1505, but the IRQ etc.
+ must be manually specified in this case.
+
+ It is explained in section 3.3 of the SCSI-HOWTO, available via FTP
+ (user: anonymous) at ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. You
+ might also want to read the comments at the top of
drivers/scsi/aha152x.c.
This driver is also available as a module ( = code which can be
@@ -3861,25 +3929,31 @@
Adaptec AIC7xxx chipset SCSI controller support
CONFIG_SCSI_AIC7XXX
This is support for the various aic7xxx based Adaptec SCSI
- controllers. These include the 274x EISA cards; 284x VLB cards; 2902,
- 2910, 293x, 294x, 394x, 3985 and several other PCI and motherboard based
- SCSI controllers from Adaptec. It does not support the AAA-13x RAID
- controllers from Adaptec, nor will it likely ever support them. It
- does not support the 2920 cards from Adaptec that use the Future Domain
- SCSI controller chip. For those cards, you need the "Future Domain
- 16xx SCSI support" driver.
+ controllers. These include the 274x EISA cards; 284x VLB cards;
+ 2902, 2910, 293x, 294x, 394x, 3985 and several other PCI and
+ motherboard based SCSI controllers from Adaptec. It does not support
+ the AAA-13x RAID controllers from Adaptec, nor will it likely ever
+ support them. It does not support the 2920 cards from Adaptec that
+ use the Future Domain SCSI controller chip. For those cards, you
+ need the "Future Domain 16xx SCSI support" driver.
In general, if the controller is based on an Adaptec SCSI controller
- chip from the aic777x series or the aic78xx series, it should work. The
- only exception is the 7810 which is specifically not supported (that's the
- RAID controller chip on the AAA-13x cards).
+ chip from the aic777x series or the aic78xx series, this driver
+ should work. The only exception is the 7810 which is specifically
+ not supported (that's the RAID controller chip on the AAA-13x
+ cards).
+
+ Note that the AHA2920 SCSI host adapter is *not* supported by this
+ driver; choose "Future Domain 16xx SCSI support" instead if you have
+ one of those.
Information on the configuration options for this controller can be
found by checking the help file for each of the available
configuration options. You should read drivers/scsi/README.aic7xxx
at a minimum before contacting the maintainer with any questions.
The SCSI-HOWTO, available via FTP (user: anonymous) at
- ftp://metalab.unc.edu/pub/Linux/docs/HOWTO can also be of great help.
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO can also be of great
+ help.
If you want to compile this driver as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
@@ -3980,16 +4054,15 @@
EATA-DMA [Obsolete] (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) support
CONFIG_SCSI_EATA_DMA
- This driver is obsolete. You should normally be using the generic EATA
- driver for this hardware.
-
This is support for the EATA-DMA protocol compliant SCSI Host
Adapters like the SmartCache III/IV, SmartRAID controller families
- and the DPT PM2011B and PM2012B controllers. Note that there is
- also another driver for the same hardware: "EATA ISA/EISA/PCI
- support". You should only say Y to one of them. Please read the
- SCSI-HOWTO, available via FTP (user: anonymous) at
- ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
+ and the DPT PM2011B and PM2012B controllers.
+
+ Note that this driver is obsolete; if you have one of the above SCSI
+ Host Adapters, you should normally say N here and Y to "EATA
+ ISA/EISA/PCI support", below. Please read the SCSI-HOWTO, available
+ via FTP (user: anonymous) at
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
@@ -4032,19 +4105,19 @@
CONFIG_SCSI_U14_34F_LINKED_COMMANDS
This option enables elevator sorting for all probed SCSI disks and
CDROMs. It definitely reduces the average seek distance when doing
- random seeks, but this does not necessarily results in a noticeable
+ random seeks, but this does not necessarily result in a noticeable
performance improvement: your mileage may vary...
+
The safe answer is N.
maximum number of queued commands
CONFIG_SCSI_U14_34F_MAX_TAGS
- This specifies how many SCSI commands can be maximally queued for each
- probed SCSI device. You should reduce the default value of 8 only if
- you have disks with buggy or limited tagged command support.
+ This specifies how many SCSI commands can be maximally queued for
+ each probed SCSI device. You should reduce the default value of 8
+ only if you have disks with buggy or limited tagged command support.
Minimum is 2 and maximum is 14. This value is also the window size
- used by the elevator sorting option above.
- The effective value used by the driver for each probed SCSI device is
- reported at boot time.
+ used by the elevator sorting option above. The effective value used
+ by the driver for each probed SCSI device is reported at boot time.
Future Domain 16xx SCSI/AHA-2920A support
CONFIG_SCSI_FUTURE_DOMAIN
@@ -4055,10 +4128,10 @@
It is explained in section 3.7 of the SCSI-HOWTO, available via FTP
(user: anonymous) at ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
- NOTE: Newer Adaptec AHA-2920C boards use the Adaptec AIC-7850 chip and
- should use the aic7xxx driver (CONFIG_SCSI_AIC7XXX). The Future Domain
- driver works with the older Adaptec AHA-2920A boards with a Future Domain
- chip on them.
+ NOTE: Newer Adaptec AHA-2920C boards use the Adaptec AIC-7850 chip
+ and should use the aic7xxx driver ("Adaptec AIC7xxx chipset SCSI
+ controller support"). This Future Domain driver works with the older
+ Adaptec AHA-2920A boards with a Future Domain chip on them.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
@@ -4068,9 +4141,10 @@
Future Domain MCS-600/700 SCSI support
CONFIG_SCSI_FD_MCS
This is support for Future Domain MCS 600/700 MCA SCSI adapters. Some
- PS/2s are also equipped with IBM Fast SCSI Adapter/A which is an OEM
- of the MCS 700. This driver also supports Reply SB16/SCSI card (the
- SCSI part). It supports multiple adapters in the same system.
+ PS/2 computers are equipped with IBM Fast SCSI Adapter/A which is
+ identical to the MCS 700 and hence also supported by this driver.
+ This driver also supports the Reply SB16/SCSI card (the SCSI part).
+ It supports multiple adapters in the same system.
Generic NCR5380/53c400 SCSI support
CONFIG_SCSI_GENERIC_NCR5380
@@ -4103,16 +4177,17 @@
NCR53c7,8xx SCSI support
CONFIG_SCSI_NCR53C7xx
- This is the 53c7 and 8xx NCR family of SCSI controllers, not to be
- confused with the NCR 5380 controllers. It is explained in section
- 3.8 of the SCSI-HOWTO, available via FTP (user: anonymous) at
- ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. If it doesn't work out
- of the box, you may have to change some settings in
- drivers/scsi/53c7,8xx.h.
+ This is a driver for the 53c7 and 8xx NCR family of SCSI
+ controllers, not to be confused with the NCR 5380 controllers. It is
+ explained in section 3.8 of the SCSI-HOWTO, available via FTP (user:
+ anonymous) at ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. If it
+ doesn't work out of the box, you may have to change some settings in
+ drivers/scsi/53c7,8xx.h. Please read drivers/scsi/README.ncr53c7xx
+ for the available boot time command line options.
Note: there is another driver for the 53c8xx family of controllers
- ("NCR53C8XX SCSI support" below). You cannot say Y to both of them;
- you can say M to both and build them as modules, but only one may be
+ ("NCR53C8XX SCSI support" below). If you want to use them both, you
+ need to say M to both and build them as modules, but only one may be
active at a time. If you have a 53c8xx board, it's better to use the
other driver.
@@ -4152,17 +4227,41 @@
tagged command queuing and fast synchronous data transfers up to 80
MB/s with wide FAST-40 LVD devices and controllers.
- The NCR53C860 and NCR53C875 support FAST-20 transfers. The NCR53C895
- supports FAST-40 transfers with Ultra2 LVD devices.
+ Recent versions of the 53C8XX chips are better supported by the
+ option "SYM53C8XX SCSI support", below.
- Note: there is another driver for the 53c8xx family of controllers
- ("NCR53c7,8xx SCSI support" above). You cannot say Y to both of
- them; you can say M to both and build them as modules, but only one
- may be active at a time. If you have a 53c8xx board, it's best to
- use this driver.
+ Note: there is yet another driver for the 53c8xx family of controllers
+ ("NCR53c7,8xx SCSI support" above). If you want to use them both,
+ you need to say M to both and build them as modules, but only one
+ may be active at a time. If you have a 53c8xx board, you probably do
+ not want to use the "NCR53c7,8xx SCSI support".
Please read drivers/scsi/README.ncr53c8xx for more information.
+SYM53C8XX SCSI support
+CONFIG_SCSI_SYM53C8XX
+ This driver supports all the features of recent 53C8XX chips (used
+ in PCI SCSI controllers), notably the hardware phase mismatch
+ feature of the SYM53C896.
+
+ Older versions of the 53C8XX chips are not supported by this
+ driver. If your system uses either a 810 rev. < 16, a 815, or a 825
+ rev. < 16 PCI SCSI processor, you must use the generic NCR53C8XX
+ driver ("NCR53C8XX SCSI support" above) or configure both the
+ NCR53C8XX and this SYM53C8XX drivers either as module or linked to
+ the kernel image.
+
+ When both drivers are linked to the kernel, the SYM53C8XX driver is
+ called first at initialization and you can use the 'excl=ioaddr'
+ driver boot option to exclude attachment of adapters by the SYM53C8XX
+ driver. For instance, entering 'sym53c8xx=excl:0xb400,excl=0xc000' at
+ lilo prompt prevents adapters at io address 0xb400 and 0xc000 from
+ being attached by the SYM53C8XX driver, thus allowing the NCR53C8XX
+ driver to attach them. The 'excl' option is also supported by the
+ NCR53C8XX driver.
+
+ Please read drivers/scsi/README.ncr53c8xx for more information.
+
synchronous data transfers frequency
CONFIG_SCSI_NCR53C8XX_SYNC
The SCSI Parallel Interface-2 Standard defines 4 classes of transfer
@@ -4275,6 +4374,16 @@
The normal answer therefore is N.
+include support for the NCR PQS/PDS SCSI card
+CONFIG_SCSI_NCR53C8XX_PQS_PDS
+ Say Y here if you have a special SCSI adapter produced by NCR
+ corporation called a PCI Quad SCSI or PCI Dual SCSI. You do not need
+ this if you do not have one of these adapters. However, since this
+ device is detected as a specific PCI device, this option is quite
+ safe.
+
+ The common answer here is N, but answering Y is safe.
+
IBMMCA SCSI support
CONFIG_SCSI_IBMMCA
This is support for the IBM SCSI adapter found in many of the PS/2
@@ -4348,10 +4457,10 @@
controller based on the NCR 53C94. This driver will allow use of
the controller on the 3550, and very possibly others.
- If you want to compile this as a module (= code which can be inserted
- and removed from the running kernel whenever you want),
- say M here and read Documentation/modules.txt. The module will be
- called mca_53c9x.o.
+ If you want to compile this as a module (= code which can be
+ inserted and removed from the running kernel whenever you want), say
+ M here and read Documentation/modules.txt. The module will be called
+ mca_53c9x.o.
Always IN2000 SCSI support
CONFIG_SCSI_IN2000
@@ -4369,18 +4478,7 @@
CONFIG_SCSI_INITIO
This is support for the Initio 91XXU(W) SCSI host adapter.
Please read the SCSI-HOWTO, available via FTP (user: anonymous) at
- ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO.
-
- If you want to compile this as a module ( = code which can be
- inserted in and removed from the running kernel whenever you want),
- say M here and read Documentation/modules.txt. The module will be
- called initio.o
-
-Initio 91XXU(W) SCSI support
-CONFIG_SCSI_INITIO
- This is support for the Initio 91XXU(W) SCSI host adapter.
- Please read the SCSI-HOWTO, available via FTP (user: anonymous) at
- ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO.
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
If you want to compile this as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
@@ -4400,6 +4498,17 @@
The module will be called pas16.o. If you want to compile it as a
module, say M here and read Documentation/modules.txt.
+Initio INI-A100U2W SCSI support
+CONFIG_SCSI_INIA100
+ This is support for the Initio INI-A100U2W SCSI host adapter.
+ Please read the SCSI-HOWTO, available via FTP (user: anonymous) at
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
+
+ If you want to compile this as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want),
+ say M here and read Documentation/modules.txt. The module will be
+ called a100u2w.o
+
PCI2000 support
CONFIG_SCSI_PCI2000
This is support for the PCI2000I EIDE interface card which acts as a
@@ -4435,14 +4544,18 @@
Qlogic FAS SCSI support
CONFIG_SCSI_QLOGIC_FAS
- This driver works only with the ISA, VLB, and PCMCIA versions of the
- Qlogic FastSCSI! cards as well as any other card based on the FASXX
- chip (including the Control Concepts SCSI/IDE/SIO/PIO/FDC cards); it
- does NOT support the PCI version. The PCI versions are supported by
- the Qlogic ISP driver though. Information about this driver is
- contained in drivers/scsi/README.qlogicfas. You should also read
- the SCSI-HOWTO, available via FTP (user: anonymous) at
- ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
+ This is a driver for the ISA, VLB, and PCMCIA versions of the Qlogic
+ FastSCSI! cards as well as any other card based on the FASXX chip
+ (including the Control Concepts SCSI/IDE/SIO/PIO/FDC cards).
+
+ This driver does NOT support the PCI versions of these cards. The
+ PCI versions are supported by the Qlogic ISP driver ("Qlogic ISP
+ SCSI support"), below.
+
+ Information about this driver is contained in
+ drivers/scsi/README.qlogicfas. You should also read the SCSI-HOWTO,
+ available via FTP (user: anonymous) at
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
@@ -4455,7 +4568,8 @@
IQ-PCI-10, IQ_PCI-D) except for the PCI-basic card. (This latter
card is supported by the "AM53/79C974 PCI SCSI" driver).
- If you say Y here, make sure to say Y to "PCI BIOS support" as well.
+ If you say Y here, make sure to choose "BIOS" at the question "PCI
+ access mode".
Please read the file drivers/scsi/README.qlogicisp. You should also
read the SCSI-HOWTO, available via FTP (user: anonymous) at
@@ -4466,6 +4580,15 @@
The module will be called qlogicisp.o. If you want to compile it as
a module, say M here and read Documentation/modules.txt.
+Qlogic ISP FC SCSI support
+CONFIG_SCSI_QLOGIC_FC
+ This is a driver for the QLogic ISP2100 SCSI-FCP host adapter.
+
+ This driver is also available as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want).
+ The module will be called qlogicfc.o. If you want to compile it as
+ a module, say M here and read Documentation/modules.txt.
+
Seagate ST-02 and Future Domain TMC-8xx SCSI support
CONFIG_SCSI_SEAGATE
These are 8-bit SCSI controllers; the ST-01 is also supported by
@@ -4521,14 +4644,25 @@
want). The module will be called wd7000.o. If you want to compile it
as a module, say M here and read Documentation/modules.txt.
+ACARD SCSI support
+CONFIG_SCSI_ACARD
+ This driver supports the ACARD 870U/W SCSI host adapter.
+
+ This driver is also available as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want).
+ The module will be called atp870u.o. If you want to compile it as a
+ module, say M here and read Documentation/modules.txt.
+
EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) support
CONFIG_SCSI_EATA
- This driver supports all the EATA/DMA-compliant SCSI host adapters.
- DPT ISA and all EISA i/o addresses are probed looking for the "EATA"
- signature. If you said Y to "PCI support", the addresses of all the
- PCI SCSI controllers reported by the PCI subsystem are probed as well.
- You want to read the start of drivers/scsi/eata.c and the SCSI-HOWTO,
- available via FTP (user: anonymous) at
+ This driver supports all EATA/DMA-compliant SCSI host adapters. DPT
+ ISA and all EISA i/o addresses are probed looking for the "EATA"
+ signature. If you chose "BIOS" at the question "PCI access mode",
+ the addresses of all the PCI SCSI controllers reported by the PCI
+ subsystem are probed as well.
+
+ You want to read the start of drivers/scsi/eata.c and the
+ SCSI-HOWTO, available via FTP (user: anonymous) at
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
Note that there is also another driver for the same hardware
@@ -4544,26 +4678,25 @@
This is a feature of SCSI-2 which improves performance: the host
adapter can send several SCSI commands to a device's queue even if
previous commands haven't finished yet. Most EATA adapters negotiate
- this feature automatically with the device, even if your answer is N.
- The safe answer is N.
+ this feature automatically with the device, even if your answer is
+ N. The safe answer is N.
enable elevator sorting
CONFIG_SCSI_EATA_LINKED_COMMANDS
This option enables elevator sorting for all probed SCSI disks and
- CDROMs. It definetly reduces the average seek distance when doing
+ CDROMs. It definitely reduces the average seek distance when doing
random seeks, but this does not necessarily result in a noticeable
performance improvement: your mileage may vary...
The safe answer is N.
maximum number of queued commands
CONFIG_SCSI_EATA_MAX_TAGS
- This specifies how many SCSI commands can be maximally queued for each
- probed SCSI device. You should reduce the default value of 16 only if
- you have disks with buggy or limited tagged command support.
+ This specifies how many SCSI commands can be maximally queued for
+ each probed SCSI device. You should reduce the default value of 16
+ only if you have disks with buggy or limited tagged command support.
Minimum is 2 and maximum is 62. This value is also the window size
- used by the elevator sorting option above.
- The effective value used by the driver for each probed SCSI device is
- reported at boot time.
+ used by the elevator sorting option above. The effective value used
+ by the driver for each probed SCSI device is reported at boot time.
NCR53c406a SCSI support
CONFIG_SCSI_NCR53C406A
@@ -4577,6 +4710,25 @@
say M here and read Documentation/modules.txt. The module will be
called NCR53c406.o.
+Symbios Logic sym53c416 support
+CONFIG_SCSI_SYM53C416
+ This is support for the sym53c416 SCSI host adapter, the SCSI
+ adapter that comes with some HP scanners. This driver requires that
+ the sym53c416 is configured first using some sort of pnp
+ configuration program (e.g. isapnp) or by a PnP aware BIOS. If you
+ are using isapnp then you need to compile this driver as a module
+ and then load it using insmod after isapnp has run. The parameters
+ of the configured card(s) should be passed to the driver. The format
+ is:
+
+ insmod sym53c416 sym53c416=, [sym53c416_1=,]
+
+ There is support for up to four adapters. If you want to compile
+ this driver as a module ( = code which can be inserted in and
+ removed from the running kernel whenever you want), say M here and
+ read Documentation/modules.txt. The module will be called
+ sym53c416.o.
+
Tekram DC390(T) and Am53/79C974 (PCscsi) SCSI support
CONFIG_SCSI_DC390T
This driver supports PCI SCSI host adapters based on the Am53C974A
@@ -4587,7 +4739,8 @@
Note that this driver does NOT support Tekram DC390W/U/F, which are
based on NCR/Symbios chips. Use "NCR53C8XX SCSI support" for those.
- Also note that there is another generic Am53C974 driver.
+ Also note that there is another generic Am53C974 driver,
+ "AM53/79C974 PCI SCSI support" below. You can pick either one.
If you want to compile this driver as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
@@ -4617,13 +4770,30 @@
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO, is for you.
Note that there is another driver for AM53C974 based adapters:
- "Tekram DC390(T) and Am53/79C974 (PCscsi) SCSI support", above.
+ "Tekram DC390(T) and Am53/79C974 (PCscsi) SCSI support", above. You
+ can pick either one.
If you want to compile this driver as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
say M here and read Documentation/modules.txt. The module will be
called AM53C974.o.
+AMI MegaRAID support
+CONFIG_SCSI_MEGARAID
+ This driver supports the AMI MegaRAID 428 and 438 (and maybe 466)
+ SCSI host adapters.
+
+ If you want to compile this driver as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want),
+ say M here and read Documentation/modules.txt. The module will be
+ called megaraid.o.
+
+###
+### What is this?
+###
+#Concurrent IO commands on MegaRAID
+#CONFIG_MEGARAID_MULTI_IO
+
GDT SCSI Disk Array Controller support
CONFIG_SCSI_GDTH
This is a driver for all SCSI Disk Array Controllers (EISA/ISA/PCI)
@@ -4635,36 +4805,59 @@
If you want to compile it as a module, say M here and read
Documentation/modules.txt.
-IOMEGA Parallel Port ZIP drive SCSI support
+IOMEGA parallel port (ppa - older drives)
CONFIG_SCSI_PPA
- This driver supports the parallel port version of IOMEGA's ZIP drive
- (a 100 MB removable media device). For more information about this
- driver and how to use it you should read the file
- drivers/scsi/README.ppa. You should also read the SCSI-HOWTO, which
- is available via FTP (user: anonymous) from
+ This driver supports older versions of IOMEGA's parallel port ZIP
+ drive (a 100 MB removable media device).
+
+ Note that you can say N here if you have the SCSI version of the ZIP
+ drive: it will be supported automatically if you said Y to the
+ generic "SCSI disk support", above.
+
+ If you have the ZIP Plus drive or a more recent parallel port ZIP
+ drive (if the supplied cable with the drive is labeled "AutoDetect")
+ then you should say N here and Y to "IOMEGA parallel port (imm -
+ newer drives)", below.
+
+ For more information about this driver and how to use it you should
+ read the file drivers/scsi/README.ppa. You should also read the
+ SCSI-HOWTO, which is available via FTP (user: anonymous) from
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. If you use this driver,
you will still be able to use the parallel port for other tasks,
such as a printer; it is safe to compile both drivers into the
kernel.
+ This driver is also available as a module which can be inserted in
+ and removed from the running kernel whenever you want. To compile
+ this driver as a module, say M here and read
+ Documentation/modules.txt. The module will be called ppa.o.
+
+IOMEGA parallel port (imm - newer drives)
+CONFIG_SCSI_IMM
+ This driver supports newer versions of IOMEGA's parallel port ZIP
+ drive (a 100 MB removable media device).
+
Note that you can say N here if you have the SCSI version of the ZIP
drive: it will be supported automatically if you said Y to the
generic "SCSI disk support", above.
- The ZIP Plus drive is supported by the imm driver, also more recent
- parallel port ZIP drives use an imm compatible interface. If the
- supplied cable with the drive is labeled "AutoDetect" then you will
- need the imm driver.
+ If you have the ZIP Plus drive or a more recent parallel port ZIP
+ drive (if the supplied cable with the drive is labeled "AutoDetect")
+ then you should say Y here; if you have an older ZIP drive, say N
+ here and Y to "IOMEGA Parallel Port (ppa - older drives)", above.
+
+ For more information about this driver and how to use it you should
+ read the file drivers/scsi/README.ppa. You should also read the
+ SCSI-HOWTO, which is available via FTP (user: anonymous) from
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. If you use this driver,
+ you will still be able to use the parallel port for other tasks,
+ such as a printer; it is safe to compile both drivers into the
+ kernel.
This driver is also available as a module which can be inserted in
and removed from the running kernel whenever you want. To compile
this driver as a module, say M here and read
- Documentation/modules.txt. The module will be called ppa.o.
-
-IOMEGA Parallel Port ZIP drive SCSI support
-CONFIG_SCSI_IMM
- All "new and improved" parallel port to SCSI interface from Iomega.
- Please read the comments for the ppa driver for further information
+ Documentation/modules.txt. The module will be called imm.o.
Force the Iomega ZIP drivers to use EPP-16
CONFIG_SCSI_IZIP_EPP16
@@ -4674,19 +4867,20 @@
Some parallel port chipsets are slower than their motherboard, and
so we have to control the state of the chipset's FIFO queue every
- now and then to avoid data loss. This will be done if you say Y here.
+ now and then to avoid data loss. This will be done if you say Y
+ here.
Generally, saying Y is the safe option and slows things down a bit.
Assume slow parallel port control register
CONFIG_SCSI_IZIP_SLOW_CTR
- Some parallel ports are known to have excessive delays between changing
- the parallel port control register and good data being available on
- the parallel port data/status register. This option forces a small delay
- (1.0 usec to be exact) after changing the control register to let things
- settle out. Enabling this option may result in a big drop in performance
- but some very old parallel ports (found in 386 vintage machines) will
- not work properly.
+ Some parallel ports are known to have excessive delays between
+ changing the parallel port control register and good data being
+ available on the parallel port data/status register. This option
+ forces a small delay (1.0 usec to be exact) after changing the
+ control register to let things settle out. Enabling this option may
+ result in a big drop in performance but some very old parallel ports
+ (found in 386 vintage machines) will not work properly.
Generally, saying N is fine.
@@ -4775,11 +4969,11 @@
Network device support?
CONFIG_NETDEVICES
- You can say N here if you don't intend to connect to any other
- computer at all or if all your connections will be over a telephone
- line with a modem either via UUCP (UUCP is a protocol to forward
- mail and news between unix hosts over telephone lines; read the
- UUCP-HOWTO, available via FTP (user: anonymous) in
+ You can say N here if you don't intend to connect your Linux box to
+ any other computer at all or if all your connections will be over a
+ telephone line with a modem either via UUCP (UUCP is a protocol to
+ forward mail and news between unix hosts over telephone lines; read
+ the UUCP-HOWTO, available via FTP (user: anonymous) in
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO) or dialing up a shell
account or a BBS, even using term (term is a program which gives you
almost full Internet connectivity if you have a regular dial up
@@ -4792,18 +4986,18 @@
you want to use under Linux (make sure you know its name because you
will be asked for it and read the Ethernet-HOWTO (especially if you
plan to use more than one network card under Linux), available from
- ftp://metalab.unc.edu:/pub/Linux/docs/HOWTO/mini) or if you want to
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/mini) or if you want to
use SLIP (Serial Line Internet Protocol is the protocol used to send
Internet traffic over telephone lines or null modem cables) or CSLIP
(compressed SLIP) or PPP (Point to Point Protocol, a better and
newer replacement for SLIP) or PLIP (Parallel Line Internet Protocol
is mainly used to create a mini network by connecting the parallel
ports of two local machines) or AX.25/KISS (protocol for sending
- Internet traffic over radio links).
+ Internet traffic over amateur radio links).
- Make sure to read the NET-2-HOWTO. Eventually, you will have to read
+ Make sure to read the NET-3-HOWTO. Eventually, you will have to read
Olaf Kirch's excellent and free book "Network Administrator's
- Guide", to be found in ftp://metalab.unc.edu:/pub/Linux/docs/LDP. If
+ Guide", to be found in ftp://metalab.unc.edu/pub/Linux/docs/LDP. If
unsure, say Y.
Dummy net driver support
@@ -4842,7 +5036,7 @@
ftp://metalab.unc.edu/pub/Linux/system/network/serial/ ) which
allows you to use SLIP over a regular dial up shell connection. If
you plan to use SLiRP, make sure to say Y to CSLIP, below. The
- NET-2-HOWTO, available via FTP (user: anonymous) in
+ NET-3-HOWTO, available via FTP (user: anonymous) in
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO, explains how to
configure SLIP. Note that you don't need this option if you just
want to run term (term is a program which gives you almost full
@@ -4869,7 +5063,7 @@
anonymous) from
ftp://metalab.unc.edu/pub/Linux/system/network/serial/) which allows
you to use SLIP over a regular dial up shell connection, you
- definitely want to say Y here. The NET-2-HOWTO, available via FTP
+ definitely want to say Y here. The NET-3-HOWTO, available via FTP
(user: anonymous) in ftp://metalab.unc.edu/pub/Linux/docs/HOWTO,
explains how to configure CSLIP. This won't enlarge your kernel.
@@ -4909,7 +5103,7 @@
To use PPP, you need an additional program called pppd as described
in Documentation/networking/ppp.txt and in the PPP-HOWTO, available
- from ftp://metalab.unc.edu:/pub/Linux/docs/HOWTO. If you upgrade
+ from ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. If you upgrade
from an older kernel, you might need to upgrade pppd as well. The
PPP option enlarges your kernel by about 16 KB.
@@ -4971,8 +5165,9 @@
radio frequencies 900 MHz and 2.4 GHz.
This driver support the ISA version of the WaveLAN card. A separate
- driver for the pcmcia hardware is available in David Hinds'
- pcmcia-cs package (see the file Documentation/Changes for location).
+ driver for the PCMCIA (PC-card) hardware is available in David
+ Hinds' pcmcia-cs package (see the file Documentation/Changes for
+ location).
If you want to use an ISA WaveLAN card under Linux, say Y and read
the Ethernet-HOWTO, available via FTP (user: anonymous) in
@@ -5062,7 +5257,7 @@
If you want to use PLIP, say Y and read the PLIP mini-HOWTO,
available via FTP (user: anonymous) in
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/mini as well as the
- NET-2-HOWTO in ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. Note that
+ NET-3-HOWTO in ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. Note that
the PLIP protocol was changed and this PLIP driver won't work
together with the PLIP support in Linux versions 1.0.x. This option
enlarges your kernel by about 8 KB.
@@ -5078,11 +5273,15 @@
If you have two serial connections to some other computer (this
usually requires two modems and two telephone lines) and you use
SLIP (the protocol for sending Internet traffic over telephone
- lines) or PPP (a better SLIP) on them, you can make them behave
- like one double speed connection using this driver. Naturally, this
- has to be supported at the other end as well, either with a similar
- EQL Linux driver or with a Livingston Portmaster 2e. Say Y if you
- want this and read Documentation/networking/eql.txt.
+ lines) or PPP (a better SLIP) on them, you can make them behave like
+ one double speed connection using this driver. Naturally, this has
+ to be supported at the other end as well, either with a similar EQL
+ Linux driver or with a Livingston Portmaster 2e.
+
+ Say Y if you want this and read Documentation/networking/eql.txt.
+ You may also want to read section 6.2 of the NET-3-HOWTO, available
+ via FTP (user: anonymous) from
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
This driver is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
@@ -5199,16 +5398,18 @@
With relatively inexpensive WAN interface cards available on the
market, a perfectly usable router can be built for less than half
the price of an external router. If you have one of those cards and
- wish to use your Linux box as a WAN router, say Y here and to the
- WAN driver for your card, below. You will also need a wan-tools
- package available via FTP (user: anonymous) from
+ wish to use your Linux box as a WAN router, say Y here and also to
+ the WAN driver for your card, below. You will then need the
+ wan-tools package which is available via FTP (user: anonymous) from
ftp://ftp.sangoma.com. Read Documentation/networking/wan-router.txt
for more information.
- WAN routing support is always built as a module ( = code which can
- be inserted in and removed from the running kernel whenever you
- want). The module is called wanrouter.o. For general information
- about modules read Documentation/modules.txt.
+ The WAN routing support is also available as a module called
+ wanrouter.o ( = code which can be inserted in and removed from the
+ running kernel whenever you want). If you want to compile it as a
+ module, say M here and read Documentation/modules.txt.
+
+ If unsure, say N.
Fast switching (read help!)
CONFIG_NET_FASTROUTE
@@ -5217,11 +5418,13 @@
*** This option is NOT COMPATIBLE with several important ***
*** networking options: especially CONFIG*FIREWALL. ***
+ *** Say N here if you intend to use Linux as a firewall. ***
However, it will work with all options in CONFIG_IP_ADVANCED_ROUTER
- section (except for CONFIG_IP_ROUTE_TOS). At the moment, few devices
- support fast switching (tulip is one of them, modified 8390 can be
- found at ftp://ftp.inr.ac.ru/ip-routing/fastroute-8390.tar.gz).
+ section (except for CONFIG_IP_ROUTE_TOS and CONFIG_IP_ROUTE_FWMARK).
+ At the moment, few devices support fast switching (tulip is one of
+ them, modified 8390 can be found at
+ ftp://ftp.inr.ac.ru/ip-routing/fastroute-8390.tar.gz).
If unsure, say N.
@@ -5414,30 +5617,42 @@
Comtrol Hostess SV-11 support
CONFIG_HOSTESS_SV11
This is a network card for low speed synchronous serial links, at
- up to 256Kbits. It supports both PPP and Cisco HDLC
+ up to 256Kbps. It supports both PPP and Cisco HDLC.
+
At this point, the driver can only be compiled as a module.
COSA/SRP sync serial boards support
CONFIG_COSA
- This is a driver for COSA and SRP synchronous serial boards.
- These boards enable to connect synchronous serial devices (for
- example base-band modems, or any other device with the X.21, V.24,
- V.35 or V.36 interface) to your Linux box. The cards can work
- as the character device, synchronous PPP network device, or the Cisco
- HDLC network device.
+ This is a driver for COSA and SRP synchronous serial boards. These
+ boards allow to connect synchronous serial devices (for example
+ base-band modems, or any other device with the X.21, V.24, V.35 or
+ V.36 interface) to your Linux box. The cards can work as the
+ character device, synchronous PPP network device, or the Cisco HDLC
+ network device.
To actually use the COSA or SRP board, you will need user-space
- utilities for downloading the firmware to the cards and to set
- them up. Look at the http://www.fi.muni.cz/~kas/cosa/ for more
+ utilities for downloading the firmware to the cards and to set them
+ up. Look at the http://www.fi.muni.cz/~kas/cosa/ for more
information about the cards (including the pointer to the user-space
utilities). You can also read the comment at the top of the
- drivers/net/cosa.c for details about the cards and the driver itself.
+ drivers/net/cosa.c for details about the cards and the driver
+ itself.
The driver will be compiled as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
The module will be called cosa.o. For general information about
modules read Documentation/modules.txt.
+Red Creek Hardware VPN (EXPERIMENTAL)
+CONFIG_RCPCI
+ This is a driver for hardware which provides a Virtual Private
+ Network (VPN). Say Y if you have it.
+
+ This code is also available as a module called rcpci.o ( = code
+ which can be inserted in and removed from the running kernel
+ whenever you want). If you want to compile it as a module, say M
+ here and read Documentation/modules.txt.
+
WAN Drivers
CONFIG_WAN_DRIVERS
Say Y to this option if your Linux box contains a WAN card and you
@@ -5728,7 +5943,6 @@
say M here and read Documentation/modules.txt. This is recommended.
The module will be called acenic.o.
-
AMD LANCE and PCnet (AT1500 and NE2100) support
CONFIG_LANCE
If you have a network (Ethernet) card of this type, say Y and read
@@ -5736,6 +5950,11 @@
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. Some LinkSys cards are
of this type.
+ If you want to compile this driver as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want),
+ say M here and read Documentation/modules.txt. This is recommended.
+ The module will be called lance.o.
+
3COM cards
CONFIG_NET_VENDOR_3COM
If you have a network (Ethernet) card belonging to this class, say Y
@@ -5811,6 +6030,18 @@
module, say M here and read Documentation/modules.txt as well as
Documentation/networking/net-modules.txt.
+3c527 support
+CONFIG_ELMC_II
+ If you have a network (Ethernet) card of this type, say Y and read
+ the Ethernet-HOWTO, available via FTP (user: anonymous) in
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
+
+ This driver is also available as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want).
+ The module will be called 3c527.o. If you want to compile it as a
+ module, say M here and read Documentation/modules.txt as well as
+ Documentation/networking/net-modules.txt.
+
3c509/3c579 support
CONFIG_EL3
If you have a network (Ethernet) card belonging to the 3Com
@@ -6362,11 +6593,11 @@
one of those, say Y and read the Ethernet-HOWTO, available via FTP
(user: anonymous) from ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
- If you want to plug a network card into the PCMCIA slot of your
- laptop instead (PCMCIA is the standard for credit card size
- extension cards used by all modern laptops), look on the FTP site
- (user: anonymous) ftp://cb-iris.stanford.edu/pub/pcmcia and say N
- here.
+ If you want to plug a network (or some other) card into the PCMCIA
+ (or PC-card) slot of your laptop instead (PCMCIA is the standard for
+ credit card size extension cards used by all modern laptops), you
+ need the pcmcia-cs package (location contained in the file
+ Documentation/Changes) and you can say N here.
Laptop users should read the Linux Laptop home page at
http://www.cs.utexas.edu/users/kharker/linux-laptop/ (to browse the
@@ -6497,6 +6728,16 @@
under Linux, say Y here (you must also remember to enable the driver
for your HIPPI card below). Most people will say N here.
+CERN HIPPI PCI adapter support
+CONFIG_CERN_HIPPI
+ Say Y here if this is your PCI HIPPI network card.
+
+ This driver is also available as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want).
+ The module will be called cern_hippi.o. If you want to compile it as
+ a module, say M here and read Documentation/modules.txt. If unsure,
+ say N.
+
Essential RoadRunner HIPPI PCI adapter support
CONFIG_ROADRUNNER
Say Y here if this is your PCI HIPPI network card.
@@ -6609,6 +6850,20 @@
The module will be called mcd.o. If you want to compile it as a
module, say M here and read Documentation/modules.txt.
+IRQ channel for Mitsumi CD-ROM
+CONFIG_MCD_IRQ
+ This allows you to specify the default value of the IRQ used by the
+ driver. This setting can be overridden by passing the "mcd="
+ parameter to the kernel at boot time (or at module load time if you
+ said M to "Standard Mitsumi CDROM support").
+
+I/O base address for Mitsumi CD-ROM
+CONFIG_MCD_BASE
+ This allows you to specify the default value of the I/O base address
+ used by the driver. This setting can be overridden by passing the
+ "mcd=" parameter to the kernel at boot time (or at module load time
+ if you said M to "Standard Mitsumi CDROM support").
+
Mitsumi [XA/MultiSession] support
CONFIG_MCDX
Use this driver if you want to be able to read XA or MultiSession
@@ -6799,6 +7054,13 @@
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/mini. Probably the quota
support is only useful for multi user systems. If unsure, say N.
+Acorn's ADFS filesystem support (read only) (EXPERIMENTAL)
+CONFIG_ADFS_FS
+ The Advanced Disk File System is the filesystem used on floppy and
+ hard disks by Acorn Systems. Currently in development, as a read-
+ only driver for hard disks. These should be the first partition
+ (eg. /dev/[sh]d?1) on each of your drives. If unsure, say N.
+
Minix fs support
CONFIG_MINIX_FS
Minix is a simple operating system used in many classes about OS's.
@@ -6959,7 +7221,7 @@
vfat fs support
CONFIG_VFAT_FS
This option provides support for normal Windows filesystems with
- long filenames. That includes noncompressed FAT-based filesystems
+ long filenames. That includes non-compressed FAT-based filesystems
used by Windows 95, Windows 98, Windows NT 4.0, and mtools.
You cannot use the VFAT filesystem for your Linux root partition
@@ -7006,21 +7268,24 @@
of the system. "Virtual" means that it doesn't take up any space on
your hard disk: the files are created on the fly by the kernel when
you try to access them. Also, you cannot read the files with older
- version of the program less: you need to use more or cat. The
- filesystem is explained in the Kernel Hacker's Guide at
- http://www.redhat.com:8080/HyperNews/get/khg.html on the WWW (to
- browse the WWW, you need to have access to a machine on the Internet
- that has a program like lynx or netscape), and also on the proc(8)
- manpage ("man 8 proc").
+ version of the program less: you need to use more or cat.
It's totally cool; for example, "cat /proc/interrupts" gives
information about what the different IRQs are used for at the moment
(there is a small number of Interrupt ReQuest lines in your computer
that are used by the attached devices to gain the CPU's attention --
often a source of trouble if two devices are mistakenly configured
- to use the same IRQ). This option will enlarge your kernel by about
- 18 kB. Several programs depend on this, so everyone should say Y
- here.
+ to use the same IRQ).
+
+ The /proc filesystem is explained in the file
+ Documentation/proc.txt, in the Kernel Hacker's Guide at
+ http://www.redhat.com:8080/HyperNews/get/khg.html on the WWW (to
+ browse the WWW, you need to have access to a machine on the Internet
+ that has a program like lynx or netscape), and also on the proc(8)
+ manpage ("man 8 proc").
+
+ This option will enlarge your kernel by about 18 KB. Several
+ programs depend on this, so everyone should say Y here.
NFS filesystem support
CONFIG_NFS_FS
@@ -7048,11 +7313,11 @@
say M here and read Documentation/modules.txt.
If you are configuring a diskless machine which will mount its root
- filesystem over NFS at boot time, say Y here and to "Root file
- system on NFS" and to "IP: kernel level autoconfiguration". You
- cannot compile this driver as a module in this case. There are two
- packages designed for booting diskless machines over the net:
- netboot and etherboot, both available via FTP (user: anonymous) from
+ filesystem over NFS at boot time, say Y here and to "IP: kernel
+ level autoconfiguration" above and to "Root file system on NFS"
+ below. You cannot compile this driver as a module in this case.
+ There are two packages designed for booting diskless machines over
+ the net: netboot and etherboot, both available via FTP from
ftp://metalab.unc.edu/pub/Linux/system/boot/ethernet/ .
If you don't know what all this is about, say N.
@@ -7078,10 +7343,13 @@
should say N here, or you can say Y and use this new experimental
kernel based NFS server. The advantage of the kernel based solution
is that it is faster; it might not be completely stable yet, though.
- You will need the support software from the linux-nfs package
- available at ftp://ftp.mathematik.th-darmstadt.de/pub/linux/okir/.
+
+ In either case, you will need support software; the respective
+ locations are given in the file Documentation/Changes in the NFS
+ section.
+
Please read the NFS-HOWTO, available via FTP (user: anonymous) from
- ftp://metalab.unc.edu:/pub/Linux/docs/HOWTO.
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
The NFS server is also available as a module ( = code which can be
inserted in and removed from the running kernel whenever you want).
@@ -7156,7 +7424,7 @@
tar" or preferably "info tar"). Note also that this option has
nothing whatsoever to do with the option "System V IPC". Read about
the System V filesystem in Documentation/filesystems/sysv-fs.txt.
- Saying Y here will enlarge your kernel by about 34 kB.
+ Saying Y here will enlarge your kernel by about 34 KB.
If you want to compile this as a module ( = code which can be
inserted in and removed from the running kernel whenever you want),
@@ -7218,7 +7486,9 @@
QNX filesystem support (EXPERIMENTAL)
CONFIG_QNX4FS_FS
This is the filesystem used by the operating system QNX 4. Say Y if
- you intend to mount QNX hard disks or floppies.
+ you intend to mount QNX hard disks or floppies. Unless you say Y to
+ "QNXFS read-write support" below, you will only be able to read
+ these filesystems.
This filesystem support is also available as a module ( = code which
can be inserted in and removed from the running kernel whenever you
@@ -7227,6 +7497,10 @@
If unsure, say N.
+QNXFS read-write support (FOR TESTING ONLY)
+CONFIG_QNX4FS_RW
+ Say Y if you want to test write support for QNX filesystems.
+
Kernel automounter support
CONFIG_AUTOFS_FS
The automounter is a tool to automatically mount remote filesystems
@@ -7252,7 +7526,9 @@
OpenBSD and NeXTstep) use a filesystem called UFS. Some System V
Unixes can create and mount hard disk partitions and diskettes using
this filesystem as well. Saying Y here will allow you to read from
- these partitions and diskettes.
+ these partitions; if you also want to write to them, say Y to the
+ experimental "UFS filesystem write support", below. Please read the
+ file Documentation/filesystems/ufs.txt for more information.
If you only intend to mount files from some other Unix over the
network using NFS, you don't need the UFS filesystem support (but
@@ -7274,44 +7550,42 @@
If you haven't heard about all of this before, it's safe to say N.
-UFS filesystem write support
+UFS filesystem write support (experimental)
CONFIG_UFS_FS_WRITE
- You will be able to write to 4.4BSD (e.g. FreeBSD, NetBSD and
- OpenBSD) and SunOS partitions and diskettes if you say Y to this
- option in addition to "UFS filesystem support", above.
+ Say Y here if you want to try writing to UFS partitions. This is
+ experimental, so you should back up your UFS partitions beforehand.
BSD disklabel (FreeBSD partition tables) support
CONFIG_BSD_DISKLABEL
FreeBSD uses its own hard disk partition scheme on your PC. It
requires only one entry in the primary partition table of your disk
and manages it similarly to DOS extended partitions, putting in its
- first sector a new partition table in disklabel format. Saying Y
+ first sector a new partition table in BSD disklabel format. Saying Y
here allows you to read these disklabels and further mount FreeBSD
- partitions read-only from within Linux if you have also said Y to
- "UFS filesystem support", above. If you don't know what all this
- is about, say N.
+ partitions from within Linux if you have also said Y to "UFS
+ filesystem support", above. If you don't know what all this is
+ about, say N.
SMD disklabel (Sun partition tables) support
CONFIG_SMD_DISKLABEL
Like most systems, SunOS uses its own hard disk partition table
format, incompatible with all others. Saying Y here allows you to
- read these partition tables and further mount SunOS disks read-only
- from within Linux if you have also said Y to "UFS filesystem
- support", above. This is mainly used to carry data from a SPARC
- under SunOS to your Linux box via a removable medium like
- magneto-optical or ZIP drives; note however that a good portable way
- to transport files and directories between unixes (and even other
- operating systems) is given by the tar program ("man tar" or
- preferably "info tar"). If you don't know what all this is about,
- say N.
+ read these partition tables and further mount SunOS disks from
+ within Linux if you have also said Y to "UFS filesystem support",
+ above. This is mainly used to carry data from a SPARC under SunOS to
+ your Linux box via a removable medium like magneto-optical or ZIP
+ drives; note however that a good portable way to transport files and
+ directories between unixes (and even other operating systems) is
+ given by the tar program ("man tar" or preferably "info tar"). If
+ you don't know what all this is about, say N.
Solaris (x86) partition table support
CONFIG_SOLARIS_X86_PARTITION
Like most systems, Solaris x86 uses its own hard disk partition
table format, incompatible with all others. Saying Y here allows you
to read these partition tables and further mount Solaris x86 disks
- read-only from within Linux if you have also said Y to "UFS
- filesystem support", above.
+ from within Linux if you have also said Y to "UFS filesystem
+ support", above.
ADFS filesystem support (read only) (EXPERIMENTAL)
CONFIG_ADFS_FS
@@ -7341,27 +7615,29 @@
to acquire a pseudo terminal, a process opens /dev/ptmx; the number
of the pseudo terminal is then made available to the process and the
pseudo terminal slave can be accessed as /dev/pts/. What was
- traditionally /dev/ttyp2 will then be /dev/pts/2, for example. The
- GNU C library glibc 2.1 contains the requisite support for this mode
- of operation; you also need clients that use the Unix98 API.
+ traditionally /dev/ttyp2 will then be /dev/pts/2, for example.
+
+ The GNU C library glibc 2.1 contains the requisite support for this
+ mode of operation; you also need client programs that use the Unix98
+ API.
-Unixware slices support (EXPERIMENTAL)
+UnixWare slices support (EXPERIMENTAL)
CONFIG_UNIXWARE_DISKLABEL
- Like some systems, Unixware uses, except DOS-like partition table,
- its own slice table inside a partition (VTOC - Virtual Table of
- Contents). Its format is incompatible with all other OSes. Saying Y
- here allows you to read VTOC and further mount Unixware partitions
- read-only from within Linux if you have also said Y to "UFS
- filesystem support" or "System V and Coherent filesystem support",
- above.
+ Like some systems, UnixWare uses its own slice table inside a
+ partition (VTOC - Virtual Table of Contents). Its format is
+ incompatible with all other OSes. Saying Y here allows you to read
+ VTOC and further mount UnixWare partitions read-only from within
+ Linux if you have also said Y to "UFS filesystem support" or "System
+ V and Coherent filesystem support", above.
- This is mainly used to carry data from a Unixware box to your
+ This is mainly used to carry data from a UnixWare box to your
Linux box via a removable medium like magneto-optical, ZIP or
removable IDE drives. Note, however, that a good portable way to
transport files and directories between unixes (and even other
operating systems) is given by the tar program ("man tar" or
- preferably "info tar"). If you don't know what all this is about,
- say N.
+ preferably "info tar").
+
+ If you don't know what all this is about, say N.
Macintosh partition map support
CONFIG_MAC_PARTITION
@@ -7372,7 +7648,7 @@
SMB filesystem support (to mount Windows shares etc...)
CONFIG_SMB_FS
SMB (Server Message Block) is the protocol Windows for Workgroups
- (WfW), Windows 95, Windows NT and OS/2 Lan Manager use to share
+ (WfW), Windows 95/98, Windows NT and OS/2 Lan Manager use to share
files and printers over local networks. Saying Y here allows you to
mount their filesystems (often called "shares" in this context) and
access them just like any other Unix directory. Currently, this
@@ -7436,7 +7712,7 @@
mount NetWare file server volumes and to access them just like any
other Unix directory. For details, please read the file
Documentation/filesystems/ncpfs.txt in the kernel source and the
- IPX-HOWTO on ftp://metalab.unc.edu:/pub/Linux/docs/howto.
+ IPX-HOWTO on ftp://metalab.unc.edu/pub/Linux/docs/howto.
You do not have to say Y here if you want your Linux box to act as a
file *server* for Novell NetWare clients.
@@ -7482,6 +7758,25 @@
case insensitive, and case in names is preserved. Say Y. You can
disable it at mount time with the -N os2 parameter of ncpmount.
+Lowercase DOS filenames on LONG namespace volume
+CONFIG_NCPFS_SMALLDOS
+ If you say Y here, every filename on a NetWare server volume using
+ the OS2/LONG namespace will be converted to lowercase characters.
+ (For regular NetWare file server volumes with DOS namespace, this is
+ done automatically, even if you say N here.) Saying N here will give
+ you these filenames in uppercase.
+
+ This is only a cosmetic option since the OS2/LONG namespace is case
+ insensitive. The only major reason for this option is backward
+ compatibility when moving from DOS to OS2/LONG namespace support.
+ Long filenames (created by Win95) will not be affected.
+
+ This option does not solve the problem that filenames appear
+ differently under Linux and under Windows, since Windows does an
+ additional conversions on the client side. You can achieve similar
+ effects by saying Y to "Allow using of Native Language Support"
+ below.
+
Allow mounting of volume subdirectories
CONFIG_NCPFS_MOUNT_SUBDIR
Allows you to mount not only whole servers or whole volumes, but
@@ -7500,28 +7795,23 @@
servers. Do not say Y if security is primary for you because root
can read your session key (from /proc/kcore).
-nls: Native language codepages and Unicode support
-CONFIG_NLS
- This is required by the FAT and NTFS filesystems and by the ISO 9660
- filesystem when it is compiled with Joliet support. Joliet is a
- Microsoft extension for CDROMs that supports Unicode. This allows
- translation between different character sets.
-
- When dealing with the FAT based filesystems, there are two character
- sets that are important. The first is the codepage. Codepages are
- character sets that are used by DOS to allow filenames to have
- native language characters when character sets were limited to 256
- characters. The codepage is the character set that is used to store
- native language characters on disk. The two most common codepages
- are 437 in the United States and 850 in much of Europe.
-
- The second important character set is the input/output character
- set. This is the character set that is displayed on the screen. In
- the United States, this will almost always be the ISO 8859-1
- character set. This is the default.
+Allow using of Native Language Support
+CONFIG_NCPFS_NLS
+ Allows you to use codepages and I/O charsets for file name
+ translation between the server file system and input/output. This
+ may be useful, if you want to access the server with other operating
+ systems, e.g. Windows 95. See also NLS for more Information.
+
+ To select codepages and I/O charsets use ncpfs-2.2.0.13 or newer.
+
+Symbolic links and mode permission bits
+CONFIG_NCPFS_EXTRAS
+ This enables the use of symbolic links and an execute permission
+ bit on NCPFS. The file server need not have long name space or NFS
+ name space loaded for these to work.
- Linux will only translate the FAT filenames, not the contents of the
- files.
+ To use the new attributes, it is recommended to use the flags
+ '-f 600 -d 755' on the ncpmount command line.
nls codepage 437
CONFIG_NLS_CODEPAGE_437
@@ -7710,8 +8000,7 @@
set, which covers most West European languages such as Albanian,
Catalan, Danish, Dutch, English, Faeroese, Finnish, French, German,
Galician, Irish, Icelandic, Italian, Norwegian, Portuguese, Spanish,
- Swedish, and Valencian. It is also the default for the US. If
- unsure, say Y.
+ and Swedish. It is also the default for the US. If unsure, say Y.
nls iso8859-2
CONFIG_NLS_ISO8859_2
@@ -7803,7 +8092,7 @@
set, which covers most West European languages such as Albanian,
Catalan, Danish, Dutch, English, Estonian, Faeroese, Finnish,
French, German, Galician, Irish, Icelandic, Italian, Norwegian,
- Portuguese, Spanish, Swedish, and Valencian. Latin 9 is an update to
+ Portuguese, Spanish, and Swedish. Latin 9 is an update to
Latin 1 (ISO 8859-1) that removes a handful of rarely used
characters and instead adds support for Estonian, corrects the
support for French and Finnish, and adds the new Euro character. If
@@ -8054,6 +8343,29 @@
read Documentation/modules.txt. The module will be called
istallion.o.
+Microgate SyncLink adapter support
+CONFIG_SYNCLINK
+ Provides support for the SyncLink ISA and PCI
+ multiprotocol serial adapters. These adapters
+ support asynchronous and HDLC bit synchronous
+ communication up to 10Mbps (PCI adapter).
+
+ This driver can only be built as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want).
+ The module will be called synclink.o. If you want to do that, say M
+ here.
+
+Synchronous HDLC line discipline support
+CONFIG_N_HDLC
+ Allows synchronous HDLC communications with
+ tty device drivers that support synchronous
+ HDLC such as the Microgate SyncLink adapter.
+
+ This driver can only be built as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want).
+ The module will be called n_hdlc.o. If you want to do that, say M
+ here.
+
Hayes ESP serial port support
CONFIG_ESPSERIAL
This is a driver which supports Hayes ESP serial ports. Both single
@@ -8065,14 +8377,22 @@
and read Documentation/modules.txt. The module will be called esp.o.
If unsure, say N.
+Multi-Tech multiport card support
+CONFIG_ISI
+ This is a driver for the Multi-Tech cards which provide several
+ serial ports. The driver is experimental and can currently only be
+ built as a module ( = code which can be inserted in and removed from
+ the running kernel whenever you want). Please read
+ Documentation/modules.txt. The module will be called isicom.o
+
Unix98 PTY support
CONFIG_UNIX98_PTYS
A pseudo terminal (PTY) is a software device consisting of two
halves: a master and a slave. The slave device behaves identical to
a physical terminal; the master device is used by a process to
read data from and write data to the slave, thereby emulating a
- terminal. Typical programs for the master side are xterm and telnet
- servers.
+ terminal. Typical programs for the master side are telnet servers
+ and xterms.
Linux has traditionally used the BSD-like names /dev/ptyxx for
masters and /dev/ttyxx for slaves of pseudo terminals. This scheme
@@ -8087,9 +8407,10 @@
filesystem; therefore, if you say Y here you should say Y to
"/dev/pts filesystem for Unix98 PTYs" as well.
- You should say Y here only if your C library is glibc 2.1 or later
- (equal to libc-6.1, check with "ls -l /lib/libc.so.*"). Read the
- instructions in Documentation/Changes.
+ If you want to say Y here, you need to have the C library glibc 2.1
+ or later (equal to libc-6.1, check with "ls -l /lib/libc.so.*").
+ Read the instructions in Documentation/Changes pertaining to pseudo
+ terminals. It's safe to say N.
Maximum number of Unix98 PTYs in use (0-2048)
CONFIG_UNIX98_PTY_COUNT
@@ -8117,15 +8438,14 @@
removed from the running kernel whenever you want), say M here and
read Documentation/modules.txt. The module will be called lp.o.
- If you have several parallel ports, you should specify the base
- address for the port to be used by the printer with the "lp" kernel
- command line option. (Try "man bootparam" or see the documentation
- of your boot loader (lilo or loadlin) about how to pass options to
- the kernel at boot time. The lilo procedure is also explained in the
- SCSI-HOWTO, available via FTP (user: anonymous) in
- ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.) The standard base
- addresses as well as the syntax of the "lp" command line option can
- be found in drivers/char/lp.c.
+ If you have several parallel ports, you can specify which ports to
+ use with the "lp" kernel command line option. (Try "man bootparam"
+ or see the documentation of your boot loader (lilo or loadlin)
+ about how to pass options to the kernel at boot time. The lilo
+ procedure is also explained in the SCSI-HOWTO, available via FTP
+ (user: anonymous) in ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.)
+ The syntax of the "lp" command line option can be found in
+ drivers/char/lp.c.
If you have more than 3 printers, you need to increase the LP_NO
variable in lp.c.
@@ -8186,7 +8506,7 @@
When using a PS/2 mouse, you can get problems if you want to use the
mouse both on the Linux console and under X. Using the "-R" option
of the Linux mouse managing program gpm (available from
- ftp://metalab.unc.edu:/pub/Linux/system/Daemons) solves this
+ ftp://metalab.unc.edu/pub/Linux/system/Daemons) solves this
problem, or you can get the "mconv" utility also from metalab.
C&T 82C710 mouse port support (as on TI Travelmate)
@@ -8397,7 +8717,7 @@
Ftape can print lots of debugging messages to the system console
resp. kernel log files. Reducing the amount of possible debugging
- output reduces the size of the kernel module by some kb, so it might
+ output reduces the size of the kernel module by some KB, so it might
be a good idea to use "None" for emergency boot floppies.
If you want to save memory then the following strategy is
@@ -8557,17 +8877,24 @@
MTRR control and configuration
CONFIG_MTRR
- On Intel Pentium Pro and Pentium II systems the Memory Type Range
- Registers (MTRRs) may be used to control processor access to memory
- ranges. This is most useful when you have a video (VGA) card on a
- PCI or AGP bus. Enabling write-combining allows bus write transfers
- to be combined into a larger transfer before bursting over the
- PCI/AGP bus. This can increase performance of image write operations
- 2.5 times or more. This option creates a /proc/mtrr file which may
- be used to manipulate your MTRRs. Typically the X server should use
- this. This should have a reasonably generic interface so that
- similar control registers on other processors can be easily
- supported.
+ On Intel P6 family processors (Pentium Pro, Pentium II and later)
+ the Memory Type Range Registers (MTRRs) may be used to control
+ processor access to memory ranges. This is most useful when you have
+ a video (VGA) card on a PCI or AGP bus. Enabling write-combining
+ allows bus write transfers to be combined into a larger transfer
+ before bursting over the PCI/AGP bus. This can increase performance
+ of image write operations 2.5 times or more. This option creates a
+ /proc/mtrr file which may be used to manipulate your
+ MTRRs. Typically the X server should use this. This should have a
+ reasonably generic interface so that similar control registers on
+ other processors can be easily supported.
+
+ The Cyrix 6x86, 6x86MX and M II processors have Address Range
+ Registers (ARRs) which provide a similar functionality to MTRRs. For
+ these, the ARRs are used to emulate the MTRRs.
+
+ The AMD K6-2 (stepping 8 and above) and K6-3 processors have two
+ MTRRs. These are supported.
Saying Y here also fixes a problem with buggy SMP BIOSes which only
set the MTRRs for the boot CPU and not the secondary CPUs. This can
@@ -8589,6 +8916,15 @@
This driver does not exist at this point, so you might as well
say N.
+Double Talk PC internal speech card support
+CONFIG_DTLK
+ This driver is for the DoubleTalk PC, a speech synthesizer
+ manufactured by RC Systems (http://www.rcsys.com/). It is also
+ called the `internal DoubleTalk'. If you want to compile this as a
+ module ( = code which can be inserted in and removed from the
+ running kernel whenever you want), say M here and read
+ Documentation/modules.txt. The module will be called dtlk.o.
+
Advanced Power Management
CONFIG_APM
APM is a BIOS specification for saving power using several different
@@ -8712,36 +9048,28 @@
CONFIG_APM_IGNORE_SUSPEND_BOUNCE
This option is necessary on the Dell Inspiron 3200 and others, but
should be safe for all other laptops. When enabled, a system suspend
- event that occurs within three seconds of a resume is ignored. Without
- this the Inspiron will shut itself off a few seconds after you open
- the lid, requiring you to press the power button to resume it a
- second time.
- Say Y.
+ event that occurs within three seconds of a resume is ignored.
+ Without this the Inspiron will shut itself off a few seconds after
+ you open the lid, requiring you to press the power button to resume
+ it a second time. Say Y.
RTC stores time in GMT
CONFIG_APM_RTC_IS_GMT
- This option can be used when your RTC (Real Time Clock aka. Hardware
- Clock) stores the time in GMT (Greenwich Mean Time) rather than
- localtime. When suspending/resuming, the kernel needs to know what
- is stored in the RTC so it can update the system clock (which is
- always GMT). Without this option the kernel attempts to measure
- the offset between the RTC and the system clock. This means you
- can loose one second on each suspend/resume cycle.
- Also, on the Dell Inspiron 3200, the hardware slows down the system
- even before the kernel can measure the RTC/system clock offset. It
- can then take 15 seconds to do this measurement and it can be
- incorrect by several seconds.
- Say Y if GMT is stored in your RTC.
- GMT is usually the best anyway, because you don't have to worry about
- daylight savings time changes. The only reason to not use GMT in
- your RTC is if you also run a broken OS that doesn't understand GMT.
+ Say Y here if your RTC (Real Time Clock a.k.a. hardware clock)
+ stores the time in GMT (Greenwich Mean Time). Say N if your RTC
+ stores localtime.
+
+ It is in fact recommended to store GMT in your RTC, because then you
+ don't have to worry about daylight savings time changes. The only
+ reason not to use GMT in your RTC is if you also run a broken OS
+ that doesn't understand GMT.
Allow interrupts during APM BIOS calls
CONFIG_APM_ALLOW_INTS
Normally we disable external interrupts while we are making calls to
the APM BIOS as a measure to lessen the effects of a badly behaving
- BIOS implementation. The BIOS should reeanble interrupts if it
- needs to. Unfortunately, some BIOS's do not - especially those in
+ BIOS implementation. The BIOS should reenable interrupts if it
+ needs to. Unfortunately, some BIOSes do not - especially those in
many of the newer IBM Thinkpads. If you experience hangs when you
suspend, try setting this to Y. Otherwise, say N.
@@ -8854,8 +9182,9 @@
24 hour alarm. It reports status information via the file /proc/rtc
and its behaviour is set by various ioctls on /dev/rtc.
- If you enabled CONFIG_SMP, you should say Y here to read and set the
- RTC clock in an SMP compatible fashion.
+ If you run Linux on a multiprocessor machine and said Y to
+ "Symmetric Multi Processing" above, you should say Y here to read
+ and set the RTC clock in an SMP compatible fashion.
If you think you have a use for such a device (such as periodic data
sampling), then say Y here, and read Documentation/rtc.txt for
@@ -8875,14 +9204,16 @@
with major number 10 and minor number 144 using mknod ("man mknod"),
you get read and write access to the 50 bytes of non-volatile memory
in the real time clock (RTC), which is contained in every PC and
- most Ataris. This memory is conventionally called "CMOS RAM" on PCs
- and "NVRAM" on Ataris. /dev/nvram may be used to view settings
- there, or to change them (with some utility). It could also be used
- to frequently save a few bits of very important data that may not be
- lost over power-off and for which writing to disk is too insecure. Note
- however that most NVRAM space in a PC belongs to the BIOS and you should
- NEVER idly tamper with it. See Ralf Browns interrupt list for a guide to
- the use of CMOS bytes by your BIOS.
+ most Ataris.
+
+ This memory is conventionally called "CMOS RAM" on PCs and "NVRAM"
+ on Ataris. /dev/nvram may be used to view settings there, or to
+ change them (with some utility). It could also be used to frequently
+ save a few bits of very important data that may not be lost over
+ power-off and for which writing to disk is too insecure. Note
+ however that most NVRAM space in a PC belongs to the BIOS and you
+ should NEVER idly tamper with it. See Ralf Brown's interrupt list
+ for a guide to the use of CMOS bytes by your BIOS.
On Atari machines, /dev/nvram is always configured and does not need
to be selected.
@@ -8892,6 +9223,17 @@
The module will be called nvram.o. If you want to compile it as a
module, say M here and read Documentation/modules.txt.
+Atomwide Serial Support
+CONFIG_ATOMWIDE_SERIAL
+ If you have an Atomwide Serial card for an Acorn system, say Y to
+ this option. The driver can handle 1, 2, or 3 port cards.
+ If unsure, say N
+
+The Serial Port Dual Serial Port
+CONFIG_DUALSP_SERIAL
+ If you have the Serial Port's dual serial card for an Acorn system,
+ say Y to this option. If unsure, say N
+
Joystick support
CONFIG_JOYSTICK
If you have a joystick, you can say Y here to enable generic
@@ -8975,7 +9317,7 @@
Say Y here if you have the TurboGraFX interface by Steffen Schwenke,
and want to use it with Multiststem -- Atari, Amiga, Commodore,
Amstrad CPC joystick. For more information on how to use the driver
- please read Documentation/joystick-parport.txt and
+ please read Documentation/joystick.txt and
Documentation/joystick-parport.txt
Amiga joysticks
@@ -8995,17 +9337,48 @@
If you have the Serial Port's dual serial card for an Acorn system,
say Y to this option. If unsure, say N
+NetWinder Button
+CONFIG_NWBUTTON
+ If you enable this driver and create a character device node
+ /dev/nwbutton with major and minor numbers 10 and 158 ("man mknod"),
+ then every time the orange button is pressed a number of times, the
+ number of times the button was pressed will be written to that device.
+ This is most useful for applications, as yet unwritten, which perform
+ actions based on how many times the button is pressed in a row.
+ Do not hold the button down for too long, as the driver does not alter
+ the behaviour of the hardware reset circuitry attached to the button;
+ it will still execute a hard reset if the button is held down for
+ longer than approximately five seconds.
+ This driver is also available as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want).
+ If you want to compile it as a module, say M here and read
+ Documentation/modules.txt. The module will be called nwbutton.o.
+ Most people will answer Y to this question and "Reboot Using Button"
+ below to be able to initiate a system shutdown from the button.
+
+Reboot Using Button
+CONFIG_NWBUTTON_REBOOT
+ If you enable this option, then you will be able to initiate a system
+ shutdown and reboot by pressing the orange button a number of times.
+ The number of presses to initiate the shutdown is two by default, but
+ this can be altered by modifying the value of NUM_PRESSES_REBOOT in
+ nwbutton.h and recompiling the driver or, if you compile the driver as
+ a module, you can specify the number of presses at load time with
+ "insmod button reboot_count=".
+
Sound card support
CONFIG_SOUND
If you have a sound card in your computer, i.e. if it can say more
than an occasional beep, say Y. Be sure to have all the information
about your sound card and its configuration down (I/O port,
- interrupt and DMA channel), because you will be asked for it. You
- want to read the Sound-HOWTO, available via FTP (user: anonymous)
- from ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. There is also some
- information in various README files in drivers/sound, esp. in
- Readme.cards which you should read first to find out whether your
- card is supported by Linux, and, if yes, which driver to use.
+ interrupt and DMA channel), because you will be asked for it.
+
+ You want to read the Sound-HOWTO, available via FTP (user:
+ anonymous) from ftp://metalab.unc.edu/pub/Linux/docs/HOWTO. General
+ information about the modular sound system is contained in the files
+ Documentation/sound/Introduction. The file
+ Documentation/sound/README.OSS contains some slightly outdated but
+ still useful information as well.
If you have a PnP sound card and you want to configure it at boot
time using the ISA PnP tools (read
@@ -9016,7 +9389,8 @@
from the running kernel whenever you want) and load that module
after the PnP configuration is finished. To do this, say M here and
read Documentation/modules.txt as well as
- drivers/sound/Readme.modules; the module will be called sound.o.
+ Documentation/sound/README.modules; the module will be called
+ sound.o.
I'm told that even without a sound card, you can make your computer
say more than an occasional beep, by programming the PC speaker.
@@ -9030,7 +9404,22 @@
here (the module will be called sound.o) if you haven't found a
driver for your sound card above, then pick your driver from the
list below.
-
+
+Persistent DMA buffers
+CONFIG_SOUND_DMAP
+ Linux can often have problems allocating DMA buffers for ISA sound
+ cards on machines with more than 16MB of RAM. This is because ISA
+ DMA buffers must exist below the 16MB boundary and it is quite
+ possible that a large enough free block in this region cannot be
+ found after the machine has been running for a while. If you say Y
+ here the DMA buffers (64Kb) will be allocated at boot time and kept
+ until the shutdown. This option is only useful if you said Y to
+ "OSS sound modules", above. If you said M to "OSS sound modules"
+ then you can get the persistent DMA buffer functionality by passing
+ the command-line argument "dmabuf=1" to the sound.o module.
+
+ Say Y unless you have 16MB or less RAM or a PCI sound card.
+
Support for Aztech Sound Galaxy (non-PnP) cards
CONFIG_SOUND_SGALAXY
This module initializes the older non Plug and Play sound galaxy
@@ -9039,7 +9428,7 @@
Support for AD1816(A) based cards (EXPERIMENTAL)
CONFIG_SOUND_AD1816
- Say M here if you have a soundcard based on the Analog Devices
+ Say M here if you have a sound card based on the Analog Devices
AD1816(A) chip.
NOTE: This driver is still EXPERIMENTAL.
@@ -9060,25 +9449,23 @@
100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support
CONFIG_SOUND_SB
- Answer Y if you have an original Sound Blaster card made by
- Creative Labs or a 100% hardware compatible clone (like the
- Thunderboard or SM Games). If your card was in the list of supported
- cards look at the card specific instructions in the
- drivers/sound/Readme.cards file before answering this question. For
- an unknown card you may answer Y if the card claims to be
- Sound Blaster-compatible.
+ Answer Y if you have an original Sound Blaster card made by Creative
+ Labs or a 100% hardware compatible clone (like the Thunderboard or
+ SM Games). For an unknown card you may answer Y if the card claims
+ to be Sound Blaster-compatible.
- You can say M here to compile this driver as a module; the module is
- called sb.o.
+ Please read the file Documentation/sound/Soundblaster.
You should also say Y here for cards based on the Avance Logic
- ALS-007 chip (read Documentation/sound/ALS007) and for ESS1688 and
- ESS1868 cards (read Documentation/sound/ESS1868). If you have an SB
- AWE 32 or SB AWE 64, say Y here and also to "Additional lowlevel
- drivers" and to "SB32/AWE support" below. If you have an IBM Mwave
- card, say Y here and read Documentation/sound/mwave.
+ ALS-007 chip (read Documentation/sound/ALS007) and for cards based
+ on ESS chips (read Documentation/sound/ESS1868 and
+ Documentation/sound/ESS). If you have an SB AWE 32 or SB AWE 64, say
+ Y here and also to "Additional lowlevel drivers" and to "SB32/AWE
+ support" below and read Documentation/sound/INSTALL.awe. If you have
+ an IBM Mwave card, say Y here and read Documentation/sound/mwave.
- Please read Documentation/sound/Soundblaster.
+ You can say M here to compile this driver as a module; the module is
+ called sb.o.
Generic OPL2/OPL3 FM synthesizer support
CONFIG_SOUND_ADLIB
@@ -9379,19 +9766,20 @@
ACI mixer (miroPCM12/PCM20)
CONFIG_ACI_MIXER
- Audio Command Interface (ACI) driver. ACI is a protocol used to
- communicate with the microcontroller on some sound cards produced by
- miro, e.g. the miroSOUND PCM12 and PCM20. The main function of the
- ACI is to control the mixer and to get a product identification.
+ ACI (Audio Command Interface) is a protocol used to communicate with
+ the microcontroller on some sound cards produced by miro, e.g. the
+ miroSOUND PCM12 and PCM20. The main function of the ACI is to
+ control the mixer and to get a product identification.
+
This Voxware ACI driver currently only supports the ACI functions on
the miroSOUND PCM12 and PCM20 cards. On the PCM20, ACI also controls
- the radio tuner. This is supported in the video4linux radio-miropcm20
- driver.
+ the radio tuner. This is supported in the video4linux
+ radio-miropcm20 driver.
SB32/AWE support
CONFIG_AWE32_SYNTH
Say Y here if you have a Sound Blaster SB32, AWE32-PnP, SB AWE64 or
- similar sound card. See drivers/sound/lowlevel/README.awe,
+ similar sound card. See Documentation/sound/README.awe,
Documentation/sound/AWE32 and the Soundblaster-AWE mini-HOWTO,
available via FTP (user: anonymous) from
ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/mini for more info.
@@ -9454,9 +9842,9 @@
Audio Excel DSP 16 DMA
CONFIG_AEDSP16_MSS_DMA
- This is the IRQ of the Audio Excel DSP 16 card. It must be 0, 1 or 3.
- If you compiled aedsp16.o as a module you can specify this parameter
- as 'dma=NN'.
+ This is the IRQ of the Audio Excel DSP 16 card. It must be 0, 1
+ or 3. If you compiled aedsp16.o as a module you can specify this
+ parameter as 'dma=NN'.
SC-6600 based audio cards (new Audio Excel DSP 16)
CONFIG_SC6600
@@ -9466,28 +9854,30 @@
SC-6600 Joystick Interface
CONFIG_SC6600_JOY
- This option activate the Joystick interface of Audio Excel DSP 16 card.
+ Say Y here in order to use the joystick interface of the Audio Excel
+ DSP 16 card.
SC-6600 CDROM Interface
CONFIG_SC6600_CDROM
- This option activate the CDROM interface of Audio Excel DSP 16 card.
- Required parameter can be: 0 for Sony, 1 for Panasonic, 2 for IDE, 4 for
- no CDROM present.
+ This is used to activate the the CDROM interface of the Audio Excel
+ DSP 16 card. Enter: 0 for Sony, 1 for Panasonic, 2 for IDE, 4 for no
+ CDROM present.
Audio Excel DSP 16 (MPU401 emulation)
CONFIG_AEDSP16_MPU401
Answer Y if you want your audio card to emulate the MPU-401 midi
- interface. You should then say Y to "MPU-401 support".
- You have to note that the I/O base for MPU-401 support of aedsp16 is
- the same you have selected for "MPU-401 support". If you are using
- this driver as a module you have to specify the MPU I/O base address
- with the parameter 'mpu_base=0xNNN'.
+ interface. You should then also say Y to "MPU-401 support".
+
+ Note that the I/O base for MPU-401 support of aedsp16 is the same
+ you have selected for "MPU-401 support". If you are using this
+ driver as a module you have to specify the MPU I/O base address with
+ the parameter 'mpu_base=0xNNN'.
MPU401 IRQ for Audio Excel DSP 16
CONFIG_AEDSP16_MPU_IRQ
- This is the IRQ of the MPU-401 emulation of Audio Excel DSP 16 card.
- It must be 5, 7, 9, 10 or 0 (to disable MPU-401 interface). If you
- compiled aedsp16.o as a module you can specify this parameter as
+ This is the IRQ of the MPU-401 emulation of your Audio Excel DSP 16
+ card. It must be 5, 7, 9, 10 or 0 (to disable MPU-401 interface). If
+ you compiled aedsp16.o as a module you can specify this parameter as
'mpu_irq=NN'.
Ensoniq ES1370 based PCI sound cards
@@ -9515,14 +9905,18 @@
models are either ES1370 or ES1371 based. This driver differs
slightly from OSS/Free, so PLEASE READ Documentation/sound/es1371.
+Joystick support at boot time
+CONFIG_SOUND_ES1371_JOYPORT_BOOT
+ Say Y here to use the joystick port of your sound card.
+
Gameport I/O-range selection
CONFIG_SOUND_ES1371_GAMEPORT
- Select the I/O-range of the gameport on a ES1371 based soundcard.
+ Select the I/O-range of the gameport on a ES1371 based sound card.
The card uses 8 ioports and the gameport is available at all eight
ioports. Legal hexadecimal values are 200, 208, 210 and 218.
The joystick driver will by default use 0x201.
Leave the default 200 unless you have a joystick not attached
- to your soundcard.
+ to your sound card.
S3 SonicVibes based PCI sound cards
CONFIG_SOUND_SONICVIBES
@@ -9533,6 +9927,11 @@
differs slightly from OSS/Free, so PLEASE READ
Documentation/sound/sonicvibes.
+Rockwell WaveArtist
+CONFIG_SOUND_WAVEARTIST
+ Say Y here to include support for the Rockwell WaveArtist sound
+ system. This driver is mainly for the NetWinder.
+
Are you using a crosscompiler
CONFIG_CROSSCOMPILE
Say Y here if you are compiling the kernel on a different
@@ -9958,12 +10357,10 @@
HP9000/300 support
CONFIG_HP300
- This option enables support for the HP9000/300 series of workstations.
- Support for these machines is still very experimental. If you plan to
- try to use the kernel on such a machine say Y here. Everybody else
- says N.
-
-# CONFIG_APOLLO, etc. coming soon (?)
+ This option enables support for the HP9000/300 series of
+ workstations. Support for these machines is still very experimental.
+ If you plan to try to use the kernel on such a machine say Y here.
+ Everybody else says N.
68020 support
CONFIG_M68020
@@ -9984,27 +10381,11 @@
MC68EC040 will not work, as it does not include an MMU (Memory
Management Unit).
-Use -m68040 flag for 68040 specific optimizations
-CONFIG_OPTIMIZE_040
- If you will only be running this kernel on a 68040-series processor,
- this will make the kernel run somewhat faster. However, it will no
- longer run on a 68020 or 68030, no matter whether you included 68020
- and 68030 support or not. Say N unless the only processor you are
- compiling support for is the 68040 (or 68LC040).
-
68060 support
CONFIG_M68060
If you anticipate running this kernel on a computer with a MC68060
processor, say Y. Otherwise, say N.
-Use -m68060 flag for 68060 specific optimizations
-CONFIG_OPTIMIZE_060
- If you will only be running this kernel on a 68060-series processor,
- this will make the kernel run somewhat faster. However, it will no
- longer run on a 68020, 68030 or 68040, no matter whether you
- included support for those processors or not. Say N unless the only
- processor you are compiling support for is the 68060.
-
Advanced processor options
CONFIG_ADVANCED_CPU
This gives you access to some advanced options for the CPU. The
@@ -10037,25 +10418,9 @@
Note that even if you say N here, you can still use your expansion
cards. If in doubt, say Y.
-Amiga OCS chipset support
-CONFIG_AMIFB_OCS
- This enables support for the original Agnus and Denise video chips,
- found in the Amiga 1000 and most A500's and A2000's. If you intend
- to run Linux on any of these systems, say Y; otherwise say N.
-
-Amiga ECS chipset support
-CONFIG_AMIFB_ECS
- This enables support for the Enhanced Chip Set, found in later
- A500's, later A2000's, the A600, the A3000, the A3000T and CDTV. If
- you intend to run Linux on any of these systems, say Y; otherwise
- say N.
-
-Amiga AGA chipset support
-CONFIG_AMIFB_AGA
- This enables support for the Advanced Graphics Architecture (also
- known as the AGA or AA) Chip Set, found in the A1200, A4000, A4000T
- and CD32. If you intend to run Linux on any of these systems, say Y;
- otherwise say N.
+CONFIG_AMIGA_PCMCIA
+ Include support in the kernel for pcmcia on Amiga 1200 and Amiga 600.
+ If you intend to use pcmcia cards say Y; otherwise say N.
Amiga GSP (TMS340x0) support
CONFIG_AMIGA_GSP
@@ -10261,6 +10626,16 @@
want). The module is called hydra.o. If you want to compile it as a
module, say M here and read Documentation/modules.txt.
+Pcmcia NE2000 compatible support
+CONFIG_APNE
+ If you have a pcmcia ne2000 compatible adapter, say Y. Otherwise,
+ say N.
+
+ This driver is also available as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you
+ want). The module is called apne.o. If you want to compile it as a
+ module, say M here and read Documentation/modules.txt.
+
Atari Lance support
CONFIG_ATARILANCE
Say Y to include support for several Atari Ethernet adapters based
@@ -10413,13 +10788,14 @@
HP on-board LANCE support
CONFIG_HPLANCE
- If you want to use the builtin "LANCE" Ethernet controller on an HP300
- machine, say Y here.
+ If you want to use the builtin "LANCE" Ethernet controller on an
+ HP300 machine, say Y here.
DIO bus support
CONFIG_DIO
- Say Y here to enable support for the "DIO" expansion bus used in HP300
- machines. If you are using such a system you almost certainly want this.
+ Say Y here to enable support for the "DIO" expansion bus used in
+ HP300 machines. If you are using such a system you almost certainly
+ want this.
MSDOS partition support
CONFIG_MSDOS_PARTITION
@@ -10491,11 +10867,21 @@
motherboard will usually use a MACE (Medium Access Control for
Ethernet) interface. Say Y to include support for the MACE chip.
+ This driver is also available as a module called mace.o ( = code
+ which can be inserted in and removed from the running kernel
+ whenever you want). If you want to compile it as a module, say M
+ here and read Documentation/modules.txt.
+
BMAC (G3 ethernet) support
CONFIG_BMAC
Say Y for support of BMAC Ethernet interfaces. These are used on G3
computers.
+ This driver is also available as a module called bmac.o ( = code
+ which can be inserted in and removed from the running kernel
+ whenever you want). If you want to compile it as a module, say M
+ here and read Documentation/modules.txt.
+
Video For Linux
CONFIG_VIDEO_DEV
Support for audio/video capture and overlay devices and FM radio
@@ -10605,6 +10991,44 @@
CONFIG_RADIO_SF16FMI_PORT
Enter the I/O port of your SF16FMI radio card.
+Typhoon Radio
+CONFIG_RADIO_TYPHOON
+ Choose Y here if you have one of these FM radio cards, and then fill
+ in the port address and the frequency used for muting below.
+
+ In order to control your radio card, you will need to use programs
+ that are compatible with the Video for Linux API. Information on
+ this API and pointers to "v4l" programs may be found on the WWW at
+ http://roadrunner.swansea.uk.linux.org/v4l.shtml; to browse the WWW,
+ you need to have access to a machine on the Internet that has a
+ program like lynx or netscape.
+
+ If you want to compile this driver as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want),
+ say M here and read Documentation/modules.txt. The module will be
+ called radio-typhoon.o
+
+Support for /proc/radio-typhoon
+CONFIG_RADIO_TYPHOON_PROC_FS
+ Say Y here if you want the typhoon radio card driver to write
+ status information (frequency, volume, muted, mute frequency,
+ base address) to /proc/radio-typhoon. The file can be viewed with
+ your favorite pager (i.e. use "more /proc/radio-typhoon" or "less
+ /proc/radio-typhoon" or simply "cat /proc/radio-typhoon").
+
+Typhoon I/O port (0x316 or 0x336)
+CONFIG_RADIO_TYPHOON_PORT
+ Enter the I/O port of your Typhoon or EcoRadio radio card.
+
+Typhoon frequency set when muting the device (kHz)
+CONFIG_RADIO_TYPHOON_MUTEFREQ
+ Enter the frequency used for muting the radio. The device is never
+ completely silent. If the volume is just turned down, you can still
+ hear silent voices and music. For that reason, the frequency of the
+ radio device is set to the frequency you can enter here whenever
+ the device is muted. There should be no local radio station at that
+ frequency.
+
Zoltrix Radio
CONFIG_RADIO_ZOLTRIX
Choose Y here if you have one of these FM radio cards, and then fill
@@ -10626,11 +11050,27 @@
CONFIG_RADIO_ZOLTRIX_PORT
Enter the I/O port of your Zoltrix radio card.
+ADS Cadet AM/FM Tuner
+CONFIG_RADIO_CADET
+ Say Y here if this is your AM/FM radio card.
+
+ In order to control your radio card, you will need to use programs
+ that are compatible with the Video for Linux API. Information on
+ this API and pointers to "v4l" programs may be found on the WWW at
+ http://roadrunner.swansea.uk.linux.org/v4l.shtml; to browse the WWW,
+ you need to have access to a machine on the Internet that has a
+ program like lynx or netscape.
+
+ If you want to compile this driver as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want),
+ say M here and read Documentation/modules.txt. The module will be
+ called radio-cadet.o
+
Miro PCM20 Radio
CONFIG_RADIO_MIROPCM20
- Choose Y here if you have this FM radio card. You also need the
- PCM12/PCM20 ACI mixer in additional low level sound drivers for this
- to work.
+ Choose Y here if you have this FM radio card. You also need to say Y
+ to "ACI mixer (miroPCM12/PCM20)" (in "additional low level sound
+ drivers") for this to work.
In order to control your radio card, you will need to use programs
that are compatible with the Video for Linux API. Information on
@@ -10712,6 +11152,9 @@
from the running kernel whenever you want). If you want to compile
it as a module, say M here and read Documentation/modules.txt.
+#
+# ARM options
+#
CPU Optimization
CONFIG_CPU_ARM2
This selects the processor type of your CPU. This is only used to
@@ -10728,57 +11171,177 @@
to set this option to, please consult any information supplied with
your system.
-Include support for CATS boards
+Include support for Chalice CATS boards
CONFIG_CATS
- Say Y here if you wish to include support for the extra hardware found
- in Chalice CATS machines. The resulting kernel will still run on an
- EBSA-285 but will be slightly larger. If in doubt say N.
+ Say Y here if you intend to run this kernel on a CATS system.
+
+Include support for Intel EBSA285
+CONFIG_ARCH_EBSA285
+ Say Y here if you intend to run this kernel on an EBSA-285 evaluation
+ board.
-Debug kernel errors
+Include support for the NetWinder
+CONFIG_ARCH_NETWINDER
+ Say Y here if you intend to run this kernel on the NetWinder.
+
+Math emulation
+CONFIG_NWFPE
+ Say Y to include the NWFPE floating point emulator in the kernel. This
+ is necessary to run most binaries. Linux does not currently support
+ floating point hardware so you need to say Y here even if your machine
+ has an FPA or floating point co-processor podule.
+
+ It is also possible to say M to build the emulator as a module
+ (nwfpe.o) or indeed to leave it out altogether. However, unless you
+ know what you are doing this can easily render your machine unbootable.
+ Saying Y is the safe option.
+
+ You may say N here if you are going to load the Acorn FPEmulator
+ early in the bootup.
+
+DS1620 Thermometer support
+CONFIG_DS1620
+ Say Y here to include support for the thermal management hardware
+ found in the NetWinder. This driver allows the user to control the
+ temperature set points and to read the current temperature.
+
+ It is also possible to say M here to build it as a module (ds1620.o)
+ It is recommended to be used on a NetWinder, but it is not a
+ necessity.
+
+Verbose kernel error messages
CONFIG_DEBUG_ERRORS
- This option controls verbose debugging information which can be printed
- when the kernel detects an internal error. Verbose debugging information
- is useful when tracking down kernel problems, but it will be meaning less
- for non-kernel hackers. It's safe for everyone to say Y.
-
-Build Tools Selection
-CONFIG_BINUTILS_NEW
- Say Y here if and only if you're using GCC 2.8.1/EGCS with a
- binutils version >= 2.8.1 to compile the kernel (check with "gcc
- --version" and "ld -v").
+ This option controls verbose debugging information which can be
+ printed when the kernel detects an internal error. This debugging
+ information is useful to kernel hackers when tracking down problems,
+ but mostly meaningless to other people. It's safe to say Y unless
+ you are concerned with the code size or don't want to see these
+ messages.
Compile kernel with frame pointer
CONFIG_FRAME_POINTER
- If you say Y here, the resulting kernel will be slightly larger, but
- it will give useful debugging/error results. If you don't debug the
- kernel, you can say N.
+ If you say Y here, the resulting kernel will be slightly larger and
+ slower, but it will give useful debugging information. If you don't
+ debug the kernel, you can say N.
+
+User fault debugging
+CONFIG_DEBUG_USER
+ When a user program crashes due to an exception, the kernel can print
+ a brief message explaining what the problem was. This is sometimes
+ helpful for debugging but serves no purpose on a production system.
+ Most people should say N here.
+
+Include gdb debugging information in kernel binary
+CONFIG_DEBUG_INFO
+ Say Y here to include source-level debugging information in the
+ `vmlinux' binary image. This is handy if you want to use gdb or
+ addr2line to debug the kernel. It has no impact on the in-memory
+ footprint of the running kernel but it can increase the amount of
+ time and disk space needed for compilation. If in doubt say N.
+
+Split initialisation functions into discardable section
+CONFIG_TEXT_SECTIONS
+ Normally code that is only used during initialisation is collected
+ into a special area of the kernel so that it can be discarded and
+ the memory reclaimed when initialisation is complete. In addition,
+ if the kernel you wish to build is able to run on multiple
+ architectures, it allows the unused code to be discarded. Some
+ versions of binutils, however, have a bug that causes the kernel
+ to crash during startup when this option is enabled. Say Y unless
+ you experience problems that you suspect may be caused by this.
+
+Disable pgtable cache
+CONFIG_NO_PGT_CACHE
+ Normally the kernel maintains a `quicklist' of preallocated pagetable
+ structures in order to increase performance. On machines with very
+ few pages this may however be a loss. Say Y here to disable the pgtable
+ cache.
+
+RISC OS personality
+CONFIG_ARTHUR
+ Say Y here to include the kernel code necessary if you want to run
+ Acorn RISC OS/Arthur binaries under Linux. This code is still very
+ experimental; if this sounds frightening, say N and sleep in peace.
+ You can also say M here to compile this support as a module (which
+ will be called arthur.o).
Initial kernel command line
CONFIG_CMDLINE
- On some architectures (EBSA285, EBSA110 and Corel NetWinder), there is
- currently no way for the boot loader to pass arguments to the kernel.
- For these architectures, you should supply some command-line options
- at build time by entering them here. As a minimum, you should specify
- the memory size and the root device (eg, mem=64M root=/dev/nfs)
+ On some architectures (EBSA110 and CATS), there is currently no way
+ for the boot loader to pass arguments to the kernel. For these
+ architectures, you should supply some command-line options at build
+ time by entering them here. As a minimum, you should specify the
+ memory size and the root device (eg, mem=64M root=/dev/nfs)
+
+Hardware alignment trap
+CONFIG_ALIGNMENT_TRAP
+ ARM processors can not fetch/store information which is not naturally
+ aligned on the bus, ie, a 4 byte fetch must start at an address divisable
+ by 4. On 32-bit ARM processors, these instructions can be emulated in
+ software with a severe performance impact. This is necessary for correct
+ operation of some network protocols. With an IP-only configuration
+ it is safe to say N, otherwise say Y.
+
+21285 serial port support
+CONFIG_SERIAL_21285
+ If you have a machine based on a 21285 (Footbridge) StrongARM/PCI
+ bridge you can enable its onboard serial port by enabling this
+ option. The device has major ID 4, minor 64.
+
+Console on 21285 serial port
+CONFIG_SERIAL_21285_CONSOLE
+ If you have enabled the serial port on the 21285 footbridge you can
+ make it the console by answering 'Y' to this option.
+
+Footbridge Mode
+CONFIG_HOST_FOOTBRIDGE
+ The 21285 Footbridge chip can operate in either `host mode' or
+ `add-in' mode. Say Y if your 21285 is in host mode, and therefore
+ is the configuration master, otherwise say N.
+
+MFM harddisk support
+CONFIG_BLK_DEV_MFM
+ Support the MFM hard drives on the Acorn Archimedes both
+ on-board the A4x0 motherboards and via the Acorn MFM podules.
+ Drives upto 64MB are supported. If you haven't got one of these
+ machines or drives just say 'N'.
+
+Old Archimedes floppy (1772) support
+CONFIG_BLK_DEV_FD1772
+ Support the floppy drive on the Acorn Archimedes (A300, A4x0, A540,
+ R140 and R260) series of computers; it supports only 720K floppies
+ at the moment. If you don't have one of these machines just answer
+ 'N'.
+
+Autodetect hard drive geometry
+CONFIG_BLK_DEV_MFM_AUTODETECT
+ If you answer 'Y' the MFM code will attempt to automatically detect
+ the cylinders/heads/sectors count on your hard drive. WARNING: This
+ sometimes doesn't work and it also does some dodgy stuff which
+ potentially might damage your drive.
IrDA Protocols
CONFIG_IRDA
- Say Y here if you want to build support for the IrDA (TM)
- protocols. The Infrared Data Associations (tm) specifies standards
- for wireless infrared communication and is supported by most laptops
- and PDA's If you want to compile it as a module, say M here and read
- Documentation/modules.txt.
+ Say Y here if you want to build support for the IrDA (TM) protocols.
+ The Infrared Data Associations (tm) specifies standards for wireless
+ infrared communication and is supported by most laptops and PDA's.
To use Linux support for the IrDA (tm) protocols, you will also need
some user-space utilities like the irmanager and probably irattach
- as well. For more information, visit
- http://www.cs.uit.no/~dagb/irda/
+ as well. For more information, see the file
+ Documentation/networking/irda.txt. You also want to read the
+ IR-HOWTO, available from
+ ftp://metalab.unc.edu/pub/Linux/docs/HOWTO.
+
+ This support is also available as a module. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. The
+ module will be called
IrDA Cache last LSAP
CONFIG_IRDA_CACHE_LAST_LSAP
Say Y here if you want IrLMP to cache the last LSAP used. This makes
- sense since most frames will be sent/received on the same connection.
- Enabling this option will save a hash-lookup per frame.
+ sense since most frames will be sent/received on the same
+ connection. Enabling this option will save a hash-lookup per frame.
If unsure, say Y.
@@ -10786,8 +11349,8 @@
CONFIG_IRDA_FAST_RR
Say Y here is you want IrLAP to send fast RR (Receive Ready) frames
when acting as a primary station. This will make IrLAP send out a RR
- frame immediately when receiving a frame if its own transmit queue is
- currently empty. This will give a lot of speed improvement when
+ frame immediately when receiving a frame if its own transmit queue
+ is currently empty. This will give a lot of speed improvement when
receiving much data since the secondary station will not have to
wait the max. turn around time before it is allowed to transmit the
next time. If the transmit queue of the secondary is also empty the
@@ -10798,21 +11361,10 @@
If unsure, say N.
-IrDA Recycle RR's
-CONFIG_IRDA_RECYCLE_RR
- In the normal life of the IrLAP protocol, it sends a lot of small RR
- (Receive Ready) frames over the link (at least when it has nothing
- else to do). Saying Y to this option will make IrLAP recycle these
- frames thus avoiding many alloc_skb's and kfree_skb's. To do this it
- will only buffer one of these frame which is enough for the normal
- case.
-
- If unsure, say Y.
-
IrDA Debug
CONFIG_IRDA_DEBUG
- Say Y here if you want the IrDA subsystem to write debug information to
- your syslog. You can change the debug level in
+ Say Y here if you want the IrDA subsystem to write debug information
+ to your syslog. You can change the debug level in
/proc/sys/net/irda/debug
If unsure, say Y (since it makes it easier to find the bugs).
@@ -10822,54 +11374,32 @@
Compression is _not_ part of the IrDA(tm) protocol specification,
but it's working great! Linux is the first to try out compression
support at the IrLAP layer. This means that you will only benefit
- from compression if you are running a Linux <-> Linux configuration
+ from compression if you are running a Linux <-> Linux configuration.
+
+ If you say Y here, you also need to say Y or M to a compression
+ protocol below.
IrLAP Deflate Compression Protocol
CONFIG_IRDA_DEFLATE
Say Y here if you want to build support for the Deflate compression
- protocol. If you want to compile it as a module, say M here and read
- Documentation/modules.txt. The deflate compression (GZIP) is exactly
- the same as used by the PPP protocol. Enabling this option will
- build a module called irda_deflate.o
+ protocol. The deflate compression (GZIP) is exactly
+ the same as the one used by the PPP protocol.
+
+ If you want to compile this compression support as a module, say M
+ here and read Documentation/modules.txt. The module will be called
+ irda_deflate.o.
IrLAN Protocol
CONFIG_IRLAN
Say Y here if you want to build support for the IrLAN protocol. If
you want to compile it as a module, say M here and read
Documentation/modules.txt. IrLAN emulates an Ethernet and makes it
- possible to put up an wireless LAN using infrared beams.
+ possible to put up a wireless LAN using infrared beams.
-IrLAN Client Protocol
-CONFIG_IRLAN_CLIENT
- Say Y here if you want to build support for the IrLAN client
- protocol. If you want to compile it as a module, say M here and read
- Documentation/modules.txt. The IrLAN client protocol can be used to
- talk with infrared access points like the HP NetbeamIR, or the ESI
- JetEye NET. You can also connect to another Linux machine running
- the IrLAN server protocol for ac-hoc networking!
-
-IrLAN Server Protocol
-CONFIG_IRLAN_SERVER
- Say Y here if you want to build support for infrared LAN access. If
- you want to compile it as a module, say M here and read
- Documentation/modules.txt. The IrLAN server protocol makes it
- possible to set up a wireless LAN with a machine running the IrLAN
- client protocol. Notice that the IrLAN server protocol currently
- only emulates an access point and does not implement the ad-hoc
- specification of IrLAN, but this will not be noticeable for the
- user.
-
-IrOBEX Protocol
-CONFIG_IROBEX
- Say Y here if you want to build support for the IrOBEX protocol. If
- you want to compile it as a module, say M here and read
- Documentation/modules.txt. The module does not actually implement
- the IrOBEX protocol since that protocol lives in userspace, but it
- contains the necessary functions to interface the user-space stuff
- with the kernel. So you will need to have the user-space library and
- programs that can use this library installed as well to be able to
- use the IrOBEX protocol. This module will hopefully be replaced by
- IrDA sockets in the future.
+ The IrLAN protocol can be used to talk with infrared access points
+ like the HP NetbeamIR, or the ESI JetEye NET. You can also connect
+ to another Linux machine running the IrLAN protocol for ad-hoc
+ networking!
IrCOMM Protocol
CONFIG_IRCOMM
@@ -10921,11 +11451,11 @@
Winbond W83977AF IrDA Device Driver
CONFIG_WINBOND_FIR
- Say Y here if you want to build IrDA support for the Winbond W83977AF
- super-io chipset. If you want to compile it as a module, say M here
- and read Documentation/modules.txt. This driver should be used for
- the IrDA chipset in the Corel NetWinder. The driver supports SIR,
- MIR and FIR (4Mbps) speeds.
+ Say Y here if you want to build IrDA support for the Winbond
+ W83977AF super-io chipset. If you want to compile it as a module,
+ say M here and read Documentation/modules.txt. This driver should be
+ used for the IrDA chipset in the Corel NetWinder. The driver
+ supports SIR, MIR and FIR (4Mbps) speeds.
NSC PC87108 IrDA Device Driver
CONFIG_NSC_FIR
@@ -10970,6 +11500,15 @@
used by IrTTY. To activate support for Tekram dongles you will have
to insert "irattach -d tekram" in the /etc/irda/drivers script.
+Greenwich GIrBIL dongle
+CONFIG_GIRBIL_DONGLE
+ Say Y here if you want to build support for the Greenwich GIrBIL
+ dongle. If you want to compile it as a module, say M here and read
+ Documentation/modules.txt. The Greenwich dongle attaches to the
+ normal 9-pin serial port connector, and can currently only be used
+ by IrTTY. To activate support for Greenwich dongles you will have to
+ insert "irattach -d girbil" in the /etc/irda/drivers script.
+
VME (Motorola and BVM) support
CONFIG_VME
Say Y here if you want to build a kernel for a 680x0 based VME
@@ -11050,11 +11589,13 @@
#
# A couple of things I keep forgetting:
-# capitalize: AppleTalk, Ethernet, DMA, FTP, Internet, Intel, IRQ,
-# Linux, NetWare, NFS, PCI, SCSI, SPARC
+# capitalize: AppleTalk, Ethernet, DOS, DMA, FAT, FTP, Internet,
+# Intel, IRQ, Linux, MSDOS, NetWare, NetWinder, NFS,
+# PCI, SCSI, SPARC
# two words: hard drive, hard disk, sound card, home page
# other: it's safe to save; daemon; use --, not - or ---
#
+#
# This is used by Emacs' spell checker ispell.el:
#
# LocalWords: CONFIG coprocessor DX Pentium SX lilo loadlin HOWTO ftp metalab
@@ -11077,7 +11618,7 @@
# LocalWords: COM ELPLUS Com EtherLinkIII VLB Arcnet Cabletron DEPCA DE carlos
# LocalWords: depca EtherWorks EWRK ewrk SEEQ EtherExpress EEXPRESS NI xxx dia
# LocalWords: EtherExpress WaveLAN wavelan PCLAN HPLAN VG SK Ansel Xen de ZNET
-# LocalWords: PCMCIA cb stanford pcmcia LAN TEC RealTek ATP atp DLINK NetTools
+# LocalWords: PCMCIA cb stanford LAN TEC RealTek ATP atp DLINK NetTools VISWS
# LocalWords: TR Sony CDU caddyless cdu Mitsumi MCD cd mcd XA MultiSession CDA
# LocalWords: Matsushita Panasonic SBPCD Soundblaster Longshine sbpcd Aztech
# LocalWords: Okano Wearnes AZTCD CDD SE aztcd sonycd Goldstar GSCD Philips fs
@@ -11107,7 +11648,7 @@
# LocalWords: PMAX MILO Alphas Multia Tseng linuxelf endian mipsel mips drv HT
# LocalWords: kerneld callouts AdvanSys advansys Admin WDT DataStor EP verden
# LocalWords: wdt hdb hdc bugfix SiS vlb Acculogic CSA DTC dtc Holtek ht QDI
-# LocalWords: QD qd UMC umc ALI ali lena fnet fr azstarnet axplinux cdr fb MDA
+# LocalWords: QD qd UMC umc ALI ali lena fnet fr azstarnet cdr fb MDA ps esdi
# LocalWords: Avanti XL AlphaStations Jensen DECpc AXPpci UDB Cabriolet MCA RC
# LocalWords: AlphaPC mca AOUT OUTput PPro sipx gwdg lo nwe FourPort Boca unm
# LocalWords: Keepalive linefill RELCOM keepalive analogue CDR conf CDI INIT
@@ -11256,4 +11797,21 @@
# LocalWords: PowerMacs Winbond Algorithmics ALGOR algor ECOFF IRIX SGI SGI's
# LocalWords: gfx virtualized Xpmac mklinux XFree FBDev Woodhouse mvhi Seeq fp
# LocalWords: SGISEEQ HIgh ADB ADBMOUSE crosscompiler CROSSCOMPILE FPE GDB gdb
-# LocalWords: JOYPORT rp spoofing DawiControl NOGENSUPP EEPROM HSSI
+# LocalWords: JOYPORT rp spoofing DawiControl NOGENSUPP EEPROM HSSI Alessandro
+# LocalWords: singleprocessor tex MATHEMU FRIQ Maxell friq Alcor XLT AlphaBook
+# LocalWords: AlphaPCI DP LX Miata Mikasa Noritake RPX UX BX Takara EV PRIMO
+# LocalWords: TSC Matrox Productiva matroxfb matrox multihead ia linuxhq MFW
+# LocalWords: mfw AAA MCS Initio XXU initio imm AutoDetect IZIP CTR usec HDLC
+# LocalWords: COSA SRP muni cz kas cosa Alteon AceNIC acenic VTOC OSes GMT SAx
+# LocalWords: Inspiron localtime INTS Thinkpads Ralf Brown's Flightstick NNN
+# LocalWords: Xterminator Blackhawk NN mpu ioports DCA HPDCA HPLANCE DIO Corel
+# LocalWords: GemTek gemtek CMDLINE IrDA PDA's irmanager irattach RR AVA DN rg
+# LocalWords: uit dagb irda LSAP IrLMP RR's IrLAP IR alloc skb's kfree skb's
+# LocalWords: GZIP IrLAN NetbeamIR ESI JetEye IrOBEX IrCOMM TTY's minicom dti
+# LocalWords: ircomm ircomm pluto thiguchi IrTTY Linux's bps NetWinder MIR NSC
+# LocalWords: ACTiSYS Dongle dongle dongles esi actisys IrMate tekram BVM MVME
+# LocalWords: BVME BVME WRITETHROUGH copyback writethrough fwmark syncookie tu
+# LocalWords: alphalinux GOBIOS csn chemnitz nat ACARD AMI MegaRAID megaraid
+# LocalWords: QNXFS ISI isicom xterms Apollos VPN RCPCI rcpci sgi visws pcmcia
+# LocalWords: IrLPT UIRCC Tecra
+
diff -ur --new-file old/linux/Documentation/arm/Netwinder new/linux/Documentation/arm/Netwinder
--- old/linux/Documentation/arm/Netwinder Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/arm/Netwinder Sun May 2 18:51:16 1999
@@ -0,0 +1,78 @@
+NetWinder specific documentation
+================================
+
+The NetWinder is a small low-power computer, primarily designed
+to run Linux. It is based around the StrongARM RISC processor,
+DC21285 PCI bridge, with PC-type hardware glued around it.
+
+Port usage
+==========
+
+Min - Max Description
+---------------------------
+0x0000 - 0x000f DMA1
+0x0020 - 0x0021 PIC1
+0x0060 - 0x006f Keyboard
+0x0070 - 0x007f RTC
+0x0080 - 0x0087 DMA1
+0x0088 - 0x008f DMA2
+0x00a0 - 0x00a3 PIC2
+0x00c0 - 0x00df DMA2
+0x0180 - 0x0187 IRDA
+0x01f0 - 0x01f6 ide0
+0x0201 Game port
+0x0203 RWA010 configuration read
+0x0220 - ? SoundBlaster
+0x0250 - ? WaveArtist
+0x0279 RWA010 configuration index
+0x02f8 - 0x02ff Serial ttyS1
+0x0300 - 0x031f Ether10
+0x0338 GPIO1
+0x033a GPIO2
+0x0370 - 0x0371 W83977F configuration registers
+0x0388 - ? AdLib
+0x03c0 - 0x03df VGA
+0x03f6 ide0
+0x03f8 - 0x03ff Serial ttyS0
+0x0400 - 0x0408 DC21143
+0x0480 - 0x0487 DMA1
+0x0488 - 0x048f DMA2
+0x0a79 RWA010 configuration write
+0xe800 - 0xe80f ide0/ide1 BM DMA
+
+
+Interrupt usage
+===============
+
+IRQ type Description
+---------------------------
+ 0 ISA 100Hz timer
+ 1 ISA Keyboard
+ 2 ISA cascade
+ 3 ISA Serial ttyS1
+ 4 ISA Serial ttyS0
+ 5 ISA PS/2 mouse
+ 6 ISA IRDA
+ 7 ISA Printer
+ 8 ISA RTC alarm
+ 9 ISA
+10 ISA GP10 (Orange reset button)
+11 ISA
+12 ISA WaveArtist
+13 ISA
+14 ISA hda1
+15 ISA
+
+DMA usage
+=========
+
+DMA type Description
+---------------------------
+ 0 ISA IRDA
+ 1 ISA
+ 2 ISA cascade
+ 3 ISA WaveArtist
+ 4 ISA
+ 5 ISA
+ 6 ISA
+ 7 ISA WaveArtist
diff -ur --new-file old/linux/Documentation/arm/README new/linux/Documentation/arm/README
--- old/linux/Documentation/arm/README Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/arm/README Sun May 2 18:51:16 1999
@@ -0,0 +1,139 @@
+ ARM Linux 2.2.3
+ ===============
+
+ * NOTE * The ARM support in the mainstream Linux kernel sources
+ is not up to date. Please check ftp.arm.uk.linux.org:/pub/armlinux
+ for latest updates.
+
+Compilation of kernel
+---------------------
+
+ In order to compile ARM Linux, you will need a compiler capable of
+ generating ARM ELF code with GNU extensions. GCC-2.7.2.2 ELF, GCC 2.8.1
+ and EGCS are good compilers. Note that GCC-2.7.2.2 ELF is rare, and
+ you probably don't have it.
+
+ To build ARM Linux natively, you shouldn't have to alter the ARCH = line in
+ the top level Makefile. However, if you don't have the ARM Linux ELF tools
+ installed as default, then you should change the CROSS_COMPILE line as
+ detailed below.
+
+ If you wish to cross-compile, then alter the following lines in the top
+ level make file:
+
+ ARCH =
+ with
+ ARCH = arm
+
+ and
+
+ CROSS_COMPILE=
+ to
+ CROSS_COMPILE=
+ eg.
+ CROSS_COMPILE=arm-linux-
+
+ Do a 'make config', followed by 'make dep', and finally 'make Image' to
+ build the kernel (arch/arm/boot/Image). A compressed image can be built
+ by doing a 'make zImage' instead of 'make Image'.
+
+
+Bug reports etc
+---------------
+
+ Please send patches, bug reports and code for the ARM Linux project
+ to linux@arm.linux.org.uk Patches will not be included into future
+ kernels unless they come to me (or the relevant person concerned).
+
+ When sending bug reports, please ensure that they contain all relevant
+ information, eg. the kernel messages that were printed before/during
+ the problem, what you were doing, etc.
+
+ For patches, please include some explanation as to what the patch does
+ and why (if relevant).
+
+
+Modules
+-------
+
+ Although modularisation is supported (and required for the FP emulator),
+ each module on an arm2/arm250/arm3 machine when is loaded will take
+ memory up to the next 32k boundary due to the size of the pages. Hence is
+ modularisation on these machines really worth it?
+
+ However, arm6 and up machines allow modules to take multiples of 4k, and
+ as such Acorn RiscPCs and other architectures using these processors can
+ make good use of modularisation.
+
+
+ADFS Image files
+----------------
+
+ You can access image files on your ADFS partitions by mounting the ADFS
+ partition, and then using the loopback device driver. You must have
+ losetup installed.
+
+ Please note that the PCEmulator DOS partitions have a partition table at
+ the start, and as such, you will have to give '-o offset' to losetup.
+
+
+Request to developers
+---------------------
+
+ When writing device drivers which include a separate assembler file, please
+ include it in with the C file, and not the arch/arm/lib directory. This
+ allows the driver to be compiled as a loadable module without requiring
+ half the code to be compiled into the kernel image.
+
+ In general, try to avoid using assembler unless it is really necessary. It
+ makes drivers far less easy to port to other hardware.
+
+
+ST506 hard drives
+-----------------
+
+ The ST506 hard drive controllers seem to be working fine (if a little
+ slowly). At the moment they will only work off the controllers on an
+ A4x0's motherboard, but for it to work off a Podule just requires
+ someone with a podule to add the addresses for the IRQ mask and the
+ HDC base to the source.
+
+ As of 31/3/96 it works with two drives (you should get the ADFS
+ *configure harddrive set to 2). I've got an internal 20MB and a great
+ big external 5.25" FH 64MB drive (who could ever want more :-) ).
+
+ I've just got 240K/s off it (a dd with bs=128k); thats about half of what
+ RiscOS gets; but it's a heck of a lot better than the 50K/s I was getting
+ last week :-)
+
+ Known bug: Drive data errors can cause a hang; including cases where
+ the controller has fixed the error using ECC. (Possibly ONLY
+ in that case...hmm).
+
+
+1772 Floppy
+-----------
+ This also seems to work OK, but hasn't been stressed much lately. It
+ hasn't got any code for disc change detection in there at the moment which
+ could be a bit of a problem! Suggestions on the correct way to do this
+ are welcome.
+
+
+Kernel entry (head-armv.S)
+--------------------------
+ The initial entry into the kernel made via head-armv.S uses architecture
+ independent code. The architecture is selected by the value of 'r1' on
+ entry, which must be kept unique. You can register a new architecture
+ by mailing the following details to rmk@arm.uk.linux.org. Please give
+ the mail a subject of 'Register new architecture':
+
+ Name:
+ ARCHDIR:
+ Description:
+
+
+ Please follow this format - it is an automated system. You should
+ receive a reply the next day.
+
+---
+Russell King (27/03/1999)
diff -ur --new-file old/linux/Documentation/arm/nwfpe/NOTES new/linux/Documentation/arm/nwfpe/NOTES
--- old/linux/Documentation/arm/nwfpe/NOTES Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/arm/nwfpe/NOTES Sun May 2 18:51:16 1999
@@ -0,0 +1,29 @@
+There seems to be a problem with exp(double) and our emulator. I haven't
+been able to track it down yet. This does not occur with the emulator
+supplied by Russell King.
+
+I also found one oddity in the emulator. I don't think it is serious but
+will point it out. The ARM calling conventions require floating point
+registers f4-f7 to be preserved over a function call. The compiler quite
+often uses an stfe instruction to save f4 on the stack upon entry to a
+function, and an ldfe instruction to restore it before returning.
+
+I was looking at some code, that calculated a double result, stored it in f4
+then made a function call. Upon return from the function call the number in
+f4 had been converted to an extended value in the emulator.
+
+This is a side effect of the stfe instruction. The double in f4 had to be
+converted to extended, then stored. If an lfm/sfm combination had been used,
+then no conversion would occur. This has performance considerations. The
+result from the function call and f4 were used in a multiplication. If the
+emulator sees a multiply of a double and extended, it promotes the double to
+extended, then does the multiply in extended precision.
+
+This code will cause this problem:
+
+double x, y, z;
+z = log(x)/log(y);
+
+The result of log(x) (a double) will be calculated, returned in f0, then
+moved to f4 to preserve it over the log(y) call. The division will be done
+in extended precision, due to the stfe instruction used to save f4 in log(y).
diff -ur --new-file old/linux/Documentation/arm/nwfpe/README new/linux/Documentation/arm/nwfpe/README
--- old/linux/Documentation/arm/nwfpe/README Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/arm/nwfpe/README Sun May 2 18:51:16 1999
@@ -0,0 +1,70 @@
+This directory contains the version 0.92 test release of the NetWinder
+Floating Point Emulator.
+
+The majority of the code was written by me, Scott Bambrough It is
+written in C, with a small number of routines in inline assembler
+where required. It was written quickly, with a goal of implementing a
+working version of all the floating point instructions the compiler
+emits as the first target. I have attempted to be as optimal as
+possible, but there remains much room for improvement.
+
+I have attempted to make the emulator as portable as possible. One of
+the problems is with leading underscores on kernel symbols. Elf
+kernels have no leading underscores, a.out compiled kernels do. I
+have attempted to use the C_SYMBOL_NAME macro wherever this may be
+important.
+
+Another choice I made was in the file structure. I have attempted to
+contain all operating system specfic code in one module (fpmodule.*).
+All the other files contain emulator specific code. This should allow
+others to port the emulator to NetBSD for instance relatively easily.
+
+The floating point operations are based on SoftFloat Release 2, by
+John Hauser. SoftFloat is a software implementation of floating-point
+that conforms to the IEC/IEEE Standard for Binary Floating-point
+Arithmetic. As many as four formats are supported: single precision,
+double precision, extended double precision, and quadruple precision.
+All operations required by the standard are implemented, except for
+conversions to and from decimal. We use only the single precision,
+double precision and extended double precision formats. The port of
+SoftFloat to the ARM was done by Phil Blundell, based on an earlier
+port of SoftFloat version 1 by Neil Carson for NetBSD/arm32.
+
+The file README.FPE contains a description of what has been implemented
+so far in the emulator. The file TODO contains a information on what
+remains to be done, and other ideas for the emulator.
+
+Bug reports, comments, suggestions should be directed to me at
+. General reports of "this program doesn't
+work correctly when your emulator is installed" are useful for
+determining that bugs still exist; but are virtually useless when
+attempting to isolate the problem. Please report them, but don't
+expect quick action. Bugs still exist. The problem remains in isolating
+which instruction contains the bug. Small programs illustrating a specific
+problem are a godsend.
+
+Legal Notices
+-------------
+
+The NetWinder Floating Point Emulator is free software. Everything Corel
+has written is provided under the GNU GPL. See the file COPYING for copying
+conditions. Excluded from the above is the SoftFloat code. John Hauser's
+legal notice for SoftFloat is included below.
+
+-------------------------------------------------------------------------------
+SoftFloat Legal Notice
+
+SoftFloat was written by John R. Hauser. This work was made possible in
+part by the International Computer Science Institute, located at Suite 600,
+1947 Center Street, Berkeley, California 94704. Funding was partially
+provided by the National Science Foundation under grant MIP-9311980. The
+original version of this code was written as part of a project to build
+a fixed-point vector processor in collaboration with the University of
+California at Berkeley, overseen by Profs. Nelson Morgan and John Wawrzynek.
+
+THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort
+has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
+TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO
+PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
+AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
+-------------------------------------------------------------------------------
diff -ur --new-file old/linux/Documentation/arm/nwfpe/README.FPE new/linux/Documentation/arm/nwfpe/README.FPE
--- old/linux/Documentation/arm/nwfpe/README.FPE Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/arm/nwfpe/README.FPE Sun May 2 18:51:16 1999
@@ -0,0 +1,156 @@
+The following describes the current state of the NetWinder's floating point
+emulator.
+
+In the following nomenclature is used to describe the floating point
+instructions. It follows the conventions in the ARM manual.
+
+ = , no default
+{P|M|Z} = {round to +infinity,round to -infinity,round to zero},
+ default = round to nearest
+
+Note: items enclosed in {} are optional.
+
+Floating Point Coprocessor Data Transfer Instructions (CPDT)
+------------------------------------------------------------
+
+LDF/STF - load and store floating
+
+{cond} Fd, Rn
+{cond} Fd, [Rn, #]{!}
+{cond} Fd, [Rn], #
+
+These instructions are fully implemented.
+
+LFM/SFM - load and store multiple floating
+
+Form 1 syntax:
+{cond} Fd, , [Rn]
+{cond} Fd, , [Rn, #]{!}
+{cond} Fd, , [Rn], #
+
+Form 2 syntax:
+{cond} Fd, , [Rn]{!}
+
+These instructions are fully implemented. They store/load three words
+for each floating point register into the memory location given in the
+instruction. The format in memory is unlikely to be compatible with
+other implementations, in particular the actual hardware. Specific
+mention of this is made in the ARM manuals.
+
+Floating Point Coprocessor Register Transfer Instructions (CPRT)
+----------------------------------------------------------------
+
+Conversions, read/write status/control register instructions
+
+FLT{cond}{P,M,Z} Fn, Rd Convert integer to floating point
+FIX{cond}{P,M,Z} Rd, Fn Convert floating point to integer
+WFS{cond} Rd Write floating point status register
+RFS{cond} Rd Read floating point status register
+WFC{cond} Rd Write floating point control register
+RFC{cond} Rd Read floating point control register
+
+FLT/FIX are fully implemented.
+
+RFS/WFS are fully implemented.
+
+RFC/WFC are fully implemented. RFC/WFC are supervisor only instructions, and
+presently check the CPU mode, and do an invalid instruction trap if not called
+from supervisor mode.
+
+Compare instructions
+
+CMF{cond} Fn, Fm Compare floating
+CMFE{cond} Fn, Fm Compare floating with exception
+CNF{cond} Fn, Fm Compare negated floating
+CNFE{cond} Fn, Fm Compare negated floating with exception
+
+These are fully implemented.
+
+Floating Point Coprocessor Data Instructions (CPDT)
+---------------------------------------------------
+
+Dyadic operations:
+
+ADF{cond}{P,M,Z} Fd, Fn, - add
+SUF{cond}{P,M,Z} Fd, Fn, - subtract
+RSF{cond}{P,M,Z} Fd, Fn, - reverse subtract
+MUF{cond}{P,M,Z} Fd, Fn, - multiply
+DVF{cond}{P,M,Z} Fd, Fn, - divide
+RDV{cond}{P,M,Z} Fd, Fn, - reverse divide
+
+These are fully implemented.
+
+FML{cond}{P,M,Z} Fd, Fn, - fast multiply
+FDV{cond}{P,M,Z} Fd, Fn, - fast divide
+FRD{cond}{P,M,Z} Fd, Fn, - fast reverse divide
+
+These are fully implemented as well. They use the same algorithm as the
+non-fast versions. Hence, in this implementation their performance is
+equivalent to the MUF/DVF/RDV instructions. This is acceptable according
+to the ARM manual. The manual notes these are defined only for single
+operands, on the actual FPA11 hardware they do not work for double or
+extended precision operands. The emulator currently does not check
+the requested permissions conditions, and performs the requested operation.
+
+RMF{cond}{P,M,Z} Fd, Fn, - IEEE remainder
+
+This is fully implemented.
+
+Monadic operations:
+
+MVF{cond}{P,M,Z} Fd, - move
+MNF{cond}{P,M,Z} Fd, - move negated
+
+These are fully implemented.
+
+ABS{cond}{P,M,Z} Fd, - absolute value
+SQT{cond}{P,M,Z} Fd, - square root
+RND{cond}{P,M,Z} Fd, - round
+
+These are fully implemented.
+
+URD{cond}{P,M,Z} Fd, - unnormalized round
+NRM{cond}{P,M,Z} Fd, - normalize
+
+These are implemented. URD is implemented using the same code as the RND
+instruction. Since URD cannot return a unnormalized number, NRM becomes
+a NOP.
+
+Library calls:
+
+POW{cond}{P,M,Z} Fd, Fn, - power
+RPW{cond}{P,M,Z} Fd, Fn, - reverse power
+POL{cond}{P,M,Z} Fd, Fn, - polar angle (arctan2)
+
+LOG{cond}{P,M,Z} Fd, - logarithm to base 10
+LGN{cond}{P,M,Z} Fd, - logarithm to base e
+EXP{cond}{P,M,Z} Fd, - exponent
+SIN{cond}{P,M,Z} Fd, - sine
+COS{cond}{P,M,Z} Fd, - cosine
+TAN{cond}{P,M,Z} Fd, - tangent
+ASN{cond}{P,M,Z} Fd, - arcsine
+ACS{cond}{P,M,Z} Fd, - arccosine
+ATN{cond}{P,M,Z} Fd, - arctangent
+
+These are not implemented. They are not currently issued by the compiler,
+and are handled by routines in libc. These are not implemented by the FPA11
+hardware, but are handled by the floating point support code. They should
+be implemented in future versions.
+
+Signalling:
+
+Signals are implemented. However current ELF kernels produced by Corel
+Computer have a bug in them that prevents the module from generating a
+SIGFPE. This is caused by a failure to alias fp_current to the kernel
+variable current_set[0] correctly.
+
+The kernel provided with this distribution (vmlinux-nwfpe-0.93) contains
+a fix for this problem and also incorporates the current version of the
+emulator directly. It is possible to run with no floating point module
+loaded with this kernel. It is provided as a demonstration of the
+technology and for those who want to do floating point work that depends
+on signals. It is not strictly necessary to use the module.
+
+A module (either the one provided by Russell King, or the one in this
+distribution) can be loaded to replace the functionality of the emulator
+built into the kernel.
diff -ur --new-file old/linux/Documentation/arm/nwfpe/TODO new/linux/Documentation/arm/nwfpe/TODO
--- old/linux/Documentation/arm/nwfpe/TODO Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/arm/nwfpe/TODO Sun May 2 18:51:16 1999
@@ -0,0 +1,67 @@
+TODO LIST
+---------
+
+POW{cond}{P,M,Z} Fd, Fn, - power
+RPW{cond}{P,M,Z} Fd, Fn, - reverse power
+POL{cond}{P,M,Z} Fd, Fn, - polar angle (arctan2)
+
+LOG{cond}{P,M,Z} Fd, - logarithm to base 10
+LGN{cond}{P,M,Z} Fd, - logarithm to base e
+EXP{cond}{P,M,Z} Fd, - exponent
+SIN{cond}{P,M,Z} Fd, - sine
+COS{cond}{P,M,Z} Fd, - cosine
+TAN{cond}{P,M,Z} Fd, - tangent
+ASN{cond}{P,M,Z} Fd, - arcsine
+ACS{cond}{P,M,Z} Fd, - arccosine
+ATN{cond}{P,M,Z} Fd, - arctangent
+
+These are not implemented. They are not currently issued by the compiler,
+and are handled by routines in libc. These are not implemented by the FPA11
+hardware, but are handled by the floating point support code. They should
+be implemented in future versions.
+
+There are a couple of ways to approach the implementation of these. One
+method would be to use accurate table methods for these routines. I have
+a couple of papers by S. Gal from IBM's research labs in Haifa, Israel that
+seem to promise extreme accuracy (in the order of 99.8%) and reasonable speed.
+These methods are used in GLIBC for some of the transcendental functions.
+
+Another approach, which I know little about is CORDIC. This stands for
+Coordinate Rotation Digital Computer, and is a method of computing
+transcendental functions using mostly shifts and adds and a few
+multiplications and divisions. The ARM excels at shifts and adds,
+so such a method could be promising, but requires more research to
+determine if it is feasible.
+
+Rounding Methods
+
+The IEEE standard defines 4 rounding modes. Round to nearest is the
+default, but rounding to + or - infinity or round to zero are also allowed.
+Many architectures allow the rounding mode to be specified by modifying bits
+in a control register. Not so with the ARM FPA11 architecture. To change
+the rounding mode one must specify it with each instruction.
+
+This has made porting some benchmarks difficult. It is possible to
+introduce such a capability into the emulator. The FPCR contains
+bits describing the rounding mode. The emulator could be altered to
+examine a flag, which if set forced it to ignore the rounding mode in
+the instruction, and use the mode specified in the bits in the FPCR.
+
+This would require a method of getting/setting the flag, and the bits
+in the FPCR. This requires a kernel call in ArmLinux, as WFC/RFC are
+supervisor only instructions. If anyone has any ideas or comments I
+would like to hear them.
+
+[NOTE: pulled out from some docs on ARM floating point, specifically
+ for the Acorn FPE, but not limited to it:
+
+ The floating point control register (FPCR) may only be present in some
+ implementations: it is there to control the hardware in an implementation-
+ specific manner, for example to disable the floating point system. The user
+ mode of the ARM is not permitted to use this register (since the right is
+ reserved to alter it between implementations) and the WFC and RFC
+ instructions will trap if tried in user mode.
+
+ Hence, the answer is yes, you could do this, but then you will run a high
+ risk of becoming isolated if and when hardware FP emulation comes out
+ -- Russell].
diff -ur --new-file old/linux/Documentation/cdrom/cdrom-standard.tex new/linux/Documentation/cdrom/cdrom-standard.tex
--- old/linux/Documentation/cdrom/cdrom-standard.tex Mon Jan 18 21:47:33 1999
+++ new/linux/Documentation/cdrom/cdrom-standard.tex Mon Mar 22 03:37:56 1999
@@ -25,7 +25,7 @@
\author{David van Leeuwen\\{\normalsize\tt david@ElseWare.cistron.nl}
\\{\footnotesize updated by Erik Andersen {\tt(andersee@debian.org)}}
\\{\footnotesize updated by Jens Axboe {\tt(axboe@image.dk)}}}
-\date{11 January 1999}
+\date{12 March 1999}
\maketitle
@@ -549,7 +549,9 @@
CDROMREADAUDIO, CDROMREADRAW, CDROMREADCOOKED, CDROMSEEK,
CDROMPLAY\-BLK and CDROM\-READALL}.
+
\subsection{\cdrom\ capabilities}
+\label{capability}
Instead of just implementing some $ioctl$ calls, the interface in
\cdromc\ supplies the possibility to indicate the {\em capabilities\/}
@@ -944,6 +946,13 @@
\item[CDROM_CHANGER_NSLOTS] Returns the number of slots in a
juke-box.
\item[CDROMRESET] Reset the drive.
+\item[CDROM_GET_CAPABILITY] Returns the $capability$ flags for the
+ drive. Refer to section \ref{capability} for more information on
+ these flags.
+\item[CDROM_LOCKDOOR] Locks the door of the drive. $arg == \rm0$
+ unlocks the door, any other value locks it.
+\item[CDROM_DEBUG] Turns on debugging info. Only root is allowed
+ to do this. Same semantics as CDROM_LOCKDOOR.
\end{description}
\subsubsection{Device dependent $ioctl$s}
diff -ur --new-file old/linux/Documentation/digiboard.txt new/linux/Documentation/digiboard.txt
--- old/linux/Documentation/digiboard.txt Thu Jan 7 17:41:54 1999
+++ new/linux/Documentation/digiboard.txt Thu Apr 29 20:53:41 1999
@@ -111,7 +111,7 @@
Boot-time configuration when linked into the kernel
---------------------------------------------------
-Per Board to be configured, pass a digi= commandline parameter to the
+Per board to be configured, pass a digi= command-line parameter to the
kernel using lilo or loadlin. It consists of a string of comma separated
identifiers or integers. The 6 values in order are:
@@ -142,7 +142,7 @@
append="digi=1,0,0,16,512,851968"
-If you don't give a digi= commandline, the compiled-in defaults of
+If you don't give a digi= command line, the compiled-in defaults of
board 1: io=0x200, membase=0xd0000, altpin=off and numports=16 are used.
If you have the resources (io&mem) free for use, configure your board to
@@ -153,9 +153,9 @@
Sources of Information
----------------------
-Webpage: http://private.fuller.edu/clameter/digi.html
+Web page: http://private.fuller.edu/clameter/digi.html
-Mailing List: digiboard@list.fuller.edu
+Mailing list: digiboard@list.fuller.edu
(Write e-mail to that address to subscribe. Common ListServ commands work.
Archive of messages available)
diff -ur --new-file old/linux/Documentation/digiepca.txt new/linux/Documentation/digiepca.txt
--- old/linux/Documentation/digiepca.txt Thu Jan 7 17:41:54 1999
+++ new/linux/Documentation/digiepca.txt Thu Apr 29 20:53:41 1999
@@ -11,7 +11,7 @@
The Linux MAKEDEV command does not support generating the Digiboard
Devices. Users executing digiConfig to setup EISA and PC series cards
-will have their device nodes automaticly constructed (cud?? for ~CLOCAL,
+will have their device nodes automatically constructed (cud?? for ~CLOCAL,
and ttyD?? for CLOCAL). Users wishing to boot their board from the LILO
prompt, or those users booting PCI cards may use buildDIGI to construct
the necessary nodes.
@@ -19,7 +19,7 @@
Notes:
------
This driver may be configured via LILO. For users who have already configured
-their driver using digiConfig, configuring from lilo will override previous
+their driver using digiConfig, configuring from LILO will override previous
settings. Multiple boards may be configured by issuing multiple LILO command
lines. For examples see the bottom of this document.
diff -ur --new-file old/linux/Documentation/fb/matroxfb.txt new/linux/Documentation/fb/matroxfb.txt
--- old/linux/Documentation/fb/matroxfb.txt Fri Jan 15 22:56:49 1999
+++ new/linux/Documentation/fb/matroxfb.txt Thu Apr 29 20:53:41 1999
@@ -1,6 +1,6 @@
[This file is cloned from VesaFB. Thanks go to Gerd Knorr]
-what is matroxfb?
+What is matroxfb?
=================
This is a driver for a graphic framebuffer for Matrox devices on
@@ -95,11 +95,11 @@
=======
Driver contains SVGALib compatibility code. It is turned on by choosing textual
-mode for console. You can do it at boottime by using videomode
+mode for console. You can do it at boot time by using videomode
2,3,7,0x108-0x10C or 0x1C0. At runtime, `fbset -depth 0' does this work.
Unfortunately, after SVGALib application exits, screen contents is corrupted.
-Switching to another console and back fixes it. I hope that it is SVGALib and
-not mine problem, but I'm not sure.
+Switching to another console and back fixes it. I hope that it is SVGALib's
+problem and not mine, but I'm not sure.
Configuration
@@ -113,7 +113,7 @@
mem:X - size of memory (X can be in megabytes, kilobytes or bytes)
You can only decrease value determined by driver because of
it always probe for memory. Default is to use whole detected
- memory usable for on-screen display (i.e. max. 8MB).
+ memory usable for on-screen display (i.e. max. 8 MB).
disabled - do not load driver; you can use also `off', but `disabled'
is here too.
enabled - load driver, if you have `video=matrox:disabled' in LILO
@@ -159,7 +159,7 @@
inv24 - change timings parameters for 24bpp modes on Millenium and
Millenium II. Specify this if you see strange color shadows around
characters.
-noinv24 - use standard timmings. It is default.
+noinv24 - use standard timings. It is the default.
inverse - invert colors on screen (for LCD displays)
noinverse - show true colors on screen. It is default.
dev:X - bind driver to device X. Driver numbers device from 0 up to N,
@@ -221,6 +221,8 @@
sync:X - sync. pulse - bit 0 inverts HSYNC polarity, bit 1 VSYNC polarity.
If bit 3 (value 0x08) is set, composite sync instead of HSYNC is
generated. If bit 5 (value 0x20) is set, sync on green is turned on.
+ Do not forget that if you want sync on green, you also probably
+ want composite sync.
Default depends on `vesa'.
depth:X - Bits per pixel: 0=text, 4,8,15,16,24 or 32. Default depends on
`vesa'.
@@ -250,25 +252,25 @@
access to /dev/fb* - everyone with access to this device can destroy
your monitor, believe me...).
+ 24bpp does not support correctly XF-FBDev on big-endian architectures.
- + interlaced text mode is not supported; it looks like hardware limitiation,
+ + interlaced text mode is not supported; it looks like hardware limitation,
but I'm not sure.
+ G200 SGRAM/SDRAM is not autodetected.
+ maybe more...
And following misfeatures:
+ SVGALib does not restore screen on exit.
+ pixclock for text modes is limited by hardware to
- 83MHz on G200
- 66MHz on Millenium I
- 60MHz on Millenium II
- Because of I have not access to other devices, I do not know specific
+ 83 MHz on G200
+ 66 MHz on Millennium I
+ 60 MHz on Millennium II
+ Because I have no access to other devices, I do not know specific
frequencies for them. So driver does not check this and allows you to
- set frequency higher that this. It cause sparks, black holes and other
- pretty effects on screen. Device was not destroyed during tests :-)
- + my Millenium G200 oscillator has frequency range from 35MHz to 380MHz
- (and it works with 8bpp on about 320MHz dotclocks (and changed mclk)).
- But Matrox says on product sheet that VCO limit is 50-250MHz, so I believe
- them (maybe that chip overheates, but it has very big cooler (G100 has
- not one), so it should work).
+ set frequency higher that this. It causes sparks, black holes and other
+ pretty effects on screen. Device was not destroyed during tests. :-)
+ + my Millennium G200 oscillator has frequency range from 35 MHz to 380 MHz
+ (and it works with 8bpp on about 320 MHz dotclocks (and changed mclk)).
+ But Matrox says on product sheet that VCO limit is 50-250 MHz, so I believe
+ them (maybe that chip overheats, but it has a very big cooler (G100 has
+ none), so it should work).
+ special mixed video/graphics videomodes of Mystique and Gx00 - 2G8V16 and
G16V16 are not supported
+ color keying is not supported
@@ -279,16 +281,14 @@
specify vslen=4000 and so on).
+ maybe more...
And following features:
- + 4bpp is available only on Millenium I and Millenium II. It is hardware
- limitiation.
+ + 4bpp is available only on Millennium I and Millennium II. It is hardware
+ limitation.
+ current fbset is not able to set 15bpp videomode: you must specify
depth==16 and green.length==5. fbset does not allow you to set
green.length.
- + hardware cursor is available only in accelerated videomodes. Maybe that
- this is misfeature and not feature.
+ text mode uses 6 bit VGA palette instead of 8 bit (one of 262144 colors
instead of one of 16M colors). It is due to hardware limitation of
- MilleniumI/II and SVGALib compatibility.
+ Millennium I/II and SVGALib compatibility.
Benchmarks
@@ -296,14 +296,14 @@
It is time to redraw whole screen 1000 times in 1024x768, 60Hz. It is
time for draw 6144000 characters on screen through /dev/vcsa
(for 32bpp it is about 3GB of data (exactly 3000 MB); for 8x16 font in
-16 seconds, i.e. 187MBps).
+16 seconds, i.e. 187 MBps).
Times were obtained from one older version of driver, now they are about 3%
-faster, it is kernel-space only time on P-II/350MHz, Millenium I in 33MHz
+faster, it is kernel-space only time on P-II/350 MHz, Millennium I in 33 MHz
PCI slot, G200 in AGP 2x slot. I did not test vgacon.
NOACCEL
8x16 12x22
- MilleniumI G200 MilleniumI G200
+ Millennium I G200 Millennium I G200
8bpp 16.42 9.54 12.33 9.13
16bpp 21.00 15.70 19.11 15.02
24bpp 36.66 36.66 35.00 35.00
@@ -311,7 +311,7 @@
ACCEL, nofastfont
8x16 12x22 6x11
- MilleniumI G200 MilleniumI G200 MilleniumI G200
+ Millennium I G200 Millennium I G200 Millennium I G200
8bpp 7.79 7.24 13.55 7.78 30.00 21.01
16bpp 9.13 7.78 16.16 7.78 30.00 21.01
24bpp 14.17 10.72 18.69 10.24 34.99 21.01
@@ -319,7 +319,7 @@
ACCEL, fastfont
8x16 12x22 6x11
- MilleniumI G200 MilleniumI G200 MilleniumI G200
+ Millennium I G200 Millennium I G200 Millennium I G200
8bpp 8.41 6.01 6.54 4.37 16.00 10.51
16bpp 9.54 9.12 8.76 6.17 17.52 14.01
24bpp 15.00 12.36 11.67 10.00 22.01 18.32
@@ -327,10 +327,10 @@
TEXT
8x16
- MilleniumI G200
+ Millennium I G200
TEXT 3.29 1.50
-* Yes, it is slower than Millenium I.
+* Yes, it is slower than Millennium I.
--
Petr Vandrovec
diff -ur --new-file old/linux/Documentation/fb/vesafb.txt new/linux/Documentation/fb/vesafb.txt
--- old/linux/Documentation/fb/vesafb.txt Fri Jan 15 07:53:02 1999
+++ new/linux/Documentation/fb/vesafb.txt Thu Apr 29 20:53:41 1999
@@ -10,8 +10,8 @@
This means we decide at boot time whenever we want to run in text or
graphics mode. Switching mode later on (in protected mode) is
-impossible; BIOS calls work in real mode only. VESA BIOS Extentions
-Version 2.0 are required, becauce we need a linear frame buffer.
+impossible; BIOS calls work in real mode only. VESA BIOS Extensions
+Version 2.0 are required, because we need a linear frame buffer.
Advantages:
@@ -66,16 +66,16 @@
mode at the "vga=ask" prompt. For example if you like to use
1024x768x256 colors you have to say "305" at this prompt.
-If this does not work, this might be becauce your BIOS does not support
-linear framebuffers or becauce it does not support this mode at all.
+If this does not work, this might be because your BIOS does not support
+linear framebuffers or because it does not support this mode at all.
Even if your board does, it might be the BIOS which does not. VESA BIOS
-Extentions v2.0 are required, 1.2 is NOT sufficient. You will get a
+Extensions v2.0 are required, 1.2 is NOT sufficient. You will get a
"bad mode number" message if something goes wrong.
1. Note: LILO cannot handle hex, for booting directly with
"vga=mode-number" you have to transform the numbers to decimal.
2. Note: Some newer versions of LILO appear to work with those hex values,
- if you set the 0x infront of the numbers.
+ if you set the 0x in front of the numbers.
X11
===
@@ -88,25 +88,63 @@
with a broken console (and vesafb cannot do anything about this).
+Refresh rates
+=============
+
+There is no way to change the vesafb video mode and/or timings after
+booting linux. If you are not happy with the 60 Hz refresh rate, you
+have these options:
+
+ * configure and load the DOS-Tools for your the graphics board (if
+ available) and boot linux with loadlin.
+ * use a native driver (matroxfb/atyfb) instead if vesafb. If none
+ is available, write a new one!
+ * VBE 3.0 might work too. I have neither a gfx board with VBE 3.0
+ support nor the specs, so I have not checked this yet.
+
+
Configuration
=============
-You can pass kernel command line options to vesafb with
-"video=vesa:option1". Multiple options should be separated
-by comma. Accepted options:
-
-invers - no comment...
-redraw - scroll by redrawing the affected part of the screen
-ypan - enable display panning using the VESA protected mode
- interface. This enables the Shift-PgUp scrollback
- thing and greatly speeds up fullscreen scrolling.
- It is slower than "redraw" when scrolling only a halve
- screen. This is the default.
-ywrap - If your gfx board supports wrap-around, use this one
- instead of ypan.
-nopal - Don't use the protected mode interface for palette
- changes. vesafb will try the standard vga registers
- instead.
+The VESA BIOS provides protected mode interface for changing
+some parameters. vesafb can use it for palette changes and
+to pan the display. It is turned off by default because it
+seems not to work with some BIOS versions, but there are options
+to turn it on.
+
+You can pass options to vesafb using "video=vesa:option" on
+the kernel command line. Multiple options should be separated
+by comma, like this: "video=vesa:ypan,invers"
+
+Accepted options:
+
+invers no comment...
+
+ypan enable display panning using the VESA protected mode
+ interface. The visible screen is just a window of the
+ video memory, console scrolling is done by changing the
+ start of the window.
+ pro: * scrolling (fullscreen) is fast, because there is
+ no need to copy around data.
+ * You'll get scrollback (the Shift-PgUp thing),
+ the video memory can be used as scrollback buffer
+ kontra: * scrolling only parts of the screen causes some
+ ugly flicker effects (boot logo flickers for
+ example).
+
+ywrap Same as ypan, but assumes your gfx board can wrap-around
+ the video memory (i.e. starts reading from top if it
+ reaches the end of video memory). Faster than ypan.
+
+redraw scroll by redrawing the affected part of the screen, this
+ is the safe (and slow) default.
+
+
+vgapal Use the standard vga registers for palette changes.
+ This is the default.
+pmipal Use the protected mode interface for palette changes.
+
+mtrr setup memory type range registers for the vesafb framebuffer.
Have fun!
@@ -114,7 +152,7 @@
Gerd
--
-Gerd Knorr
+Gerd Knorr
Minor (mostly typo) changes
by Nico Schmoigl
diff -ur --new-file old/linux/Documentation/filesystems/00-INDEX new/linux/Documentation/filesystems/00-INDEX
--- old/linux/Documentation/filesystems/00-INDEX Wed Jun 24 23:30:07 1998
+++ new/linux/Documentation/filesystems/00-INDEX Sun May 2 18:51:16 1999
@@ -1,5 +1,7 @@
00-INDEX
- this file (info on some of the filesystems supported by linux).
+adfs.txt
+ - info and mount options for the Acorn Advanced Disc Filing System.
affs.txt
- info and mount options for the Amiga Fast File System.
coda.txt
@@ -20,6 +22,8 @@
- info on using filesystems with the SMB protocol (Windows 3.11 and NT)
sysv-fs.txt
- info on the SystemV/Coherent filesystem.
+ufs.txt
+ - info on the ufs filesystem.
umsdos.txt
- info on the umsdos extensions to the msdos filesystem.
vfat.txt
diff -ur --new-file old/linux/Documentation/filesystems/adfs.txt new/linux/Documentation/filesystems/adfs.txt
--- old/linux/Documentation/filesystems/adfs.txt Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/filesystems/adfs.txt Sun May 2 18:51:16 1999
@@ -0,0 +1,57 @@
+Mount options for ADFS
+----------------------
+
+ uid=nnn All files in the partition will be owned by
+ user id nnn. Default 0 (root).
+ gid=nnn All files in the partition willbe in group
+ nnn. Default 0 (root).
+ ownmask=nnn The permission mask for ADFS 'owner' permissions
+ will be nnn. Default 0700.
+ othmask=nnn The permission mask for ADFS 'other' permissions
+ will be nnn. Default 0077.
+
+Mapping of ADFS permissions to Linux permissions
+------------------------------------------------
+
+ ADFS permissions consist of the following:
+
+ Owner read
+ Owner write
+ Other read
+ Other write
+
+ (In older versions, an 'execute' permission did exist, but this
+ does not hold the same meaning as the Linux 'execute' permission
+ and is now obsolete).
+
+ The mapping is performed as follows:
+
+ Owner read -> -r--r--r--
+ Owner write -> --w--w---w
+ Owner read and filetype UnixExec -> ---x--x--x
+ These are then masked by ownmask, eg 700 -> -rwx------
+ Possible owner mode permissions -> -rwx------
+
+ Other read -> -r--r--r--
+ Other write -> --w--w--w-
+ Other read and filetype UnixExec -> ---x--x--x
+ These are then masked by othmask, eg 077 -> ----rwxrwx
+ Possible other mode permissions -> ----rwxrwx
+
+ Hence, with the default masks, if a file is owner read/write, and
+ not a UnixExec filetype, then the permissions will be:
+
+ -rw-------
+
+ However, if the masks were ownmask=0770,othmask=0007, then this would
+ be modified to:
+ -rw-rw----
+
+ There is no restriction on what you can do with these masks. You may
+ wish that either read bits give read access to the file for all, but
+ keep the default write protection (ownmask=0755,othmask=0577):
+
+ -rw-r--r--
+
+ You can therefore tailor the permission translation to whatever you
+ desire the permissions should be under Linux.
diff -ur --new-file old/linux/Documentation/filesystems/affs.txt new/linux/Documentation/filesystems/affs.txt
--- old/linux/Documentation/filesystems/affs.txt Wed Jun 24 23:30:07 1998
+++ new/linux/Documentation/filesystems/affs.txt Sun Mar 21 16:11:36 1999
@@ -151,6 +151,28 @@
/etc/fstab entry:
/dev/sdb5 /amiga/Workbench affs noauto,user,exec,verbose 0 0
+IMPORTANT NOTE
+==============
+
+If you boot Windows 95 (don't know about 3.x, 98 and NT) while you
+have an Amiga harddisk connected to your PC, it will overwrite
+the bytes 0x00dc..0x00df of block 0 with garbage, thus invalidating
+the Rigid Disk Block. Sheer luck has it that this is an unused
+area of the RDB, so only the checksum doesn's match anymore.
+Linux will ignore this garbage and recognize the RDB anyway, but
+before you connect that drive to your Amiga again, you must
+restore or repair your RDB. So please do make a backup copy of it
+before booting Windows!
+
+If the damage is already done, the following should fix the RDB
+(where is the device name).
+DO AT YOUR OWN RISK:
+
+ dd if=/dev/ of=rdb.tmp count=1
+ cp rdb.tmp rdb.fixed
+ dd if=/dev/zero of=rdb.fixed bs=1 seek=220 count=4
+ dd if=rdb.fixed of=/dev/
+
Bugs, Restrictions, Caveats
===========================
@@ -185,9 +207,8 @@
no way to fix a garbled filesystem without an Amiga (disk validator)
or manually (who would do this?). Maybe later.
-A fsck.affs and mkfs.affs will probably be available in the future.
-If you mount them on system startup, you may want to tell fsck
-that the fs should not be checked (place a '0' in the sixth field
+If you mount affs partitions on system startup, you may want to tell
+fsck that the fs should not be checked (place a '0' in the sixth field
of /etc/fstab).
It's not possible to read floppy disks with a normal PC or workstation
diff -ur --new-file old/linux/Documentation/filesystems/coda.txt new/linux/Documentation/filesystems/coda.txt
--- old/linux/Documentation/filesystems/coda.txt Wed Jun 24 23:30:07 1998
+++ new/linux/Documentation/filesystems/coda.txt Thu Apr 29 20:53:41 1999
@@ -776,7 +776,7 @@
indicate confusion between the system call creat and the VFS operation
create. The VFS operation create is only called to create new objects.
This create call differs from the Unix one in that it is not invoked
- to return a file descriptor. The trunctate and exclusive options,
+ to return a file descriptor. The truncate and exclusive options,
together with the mode, could simply be part of the mode as it is
under Unix. There should be no flags argument; this is used in open
(2) to return a file descriptor for READ or WRITE mode.
diff -ur --new-file old/linux/Documentation/filesystems/fat_cvf.txt new/linux/Documentation/filesystems/fat_cvf.txt
--- old/linux/Documentation/filesystems/fat_cvf.txt Wed Jun 24 23:30:07 1998
+++ new/linux/Documentation/filesystems/fat_cvf.txt Sun Feb 28 18:47:37 1999
@@ -1,4 +1,4 @@
-This is the main documentation for the CVF-FAT filesystem extension. 31DEC1997
+This is the main documentation for the CVF-FAT filesystem extension. 18Nov1998
Table of Contents:
@@ -37,14 +37,9 @@
CVF filesystems cannot do bmap. It's impossible in principle. Thus
all actions that require bmap do not work (swapping, writable mmapping).
Read-only mmapping works because the FAT driver has a hack for this
- situation :) Well, with some tricks writable mmapping could work,
- (proof: they did under old dmsdos), but..... (hint: readpage/writepage
- interface functions) ...... but the FAT driver has to support them
- first without bmap :-)
-
- We'll see. If someone points me to an application that needs this, I
- might be persuaded to implement it :). CVF-FAT is already prepared
- for using readpage.
+ situation :) Well, writable mmapping should now work using the readpage
+ interface function which has been hacked into the FAT driver just for
+ CVF-FAT :)
- attention, DOSEmu users
@@ -66,11 +61,28 @@
cvf_format=xxx
Forces the driver to use the CVF module "xxx" instead of auto-detection.
- This is only necessary if the CVF format is not recognized correctly
+ Without this option, the CVF-FAT interface asks all currently loaded
+ CVF modules whether they recognize the CVF. Therefore, this option is
+ only necessary if the CVF format is not recognized correctly
because of bugs or incompatibilities in the CVF modules. (It skips
the detect_cvf call.) "xxx" may be the text "none" (without the quotes)
to inhibit using any of the loaded CVF modules, just in case a CVF
- module insists on mounting plain FAT filesystems by misunderstanding :)
+ module insists on mounting plain FAT filesystems by misunderstanding.
+ "xxx" may also be the text "autoload", which has a special meaning for
+ a module loader, but does not skip auto-detection.
+
+ If the kernel supports kmod, the cvf_format=xxx option also controls
+ on-demand CVF module loading. Without this option, nothing is loaded
+ on demand. With cvf_format=xxx, a module "xxx" is requested automatically
+ before mounting the compressed filesystem (unless "xxx" is "none"). In
+ case there is a difference between the CVF format name and the module
+ name, setup aliases in your modules configuration. If the string "xxx"
+ is "autoload", a non-existent module "cvf_autoload" is requested which
+ can be used together with a special modules configuration (alias and
+ pre-install statements) in order to load more than one CVF module, let
+ them detect automatically which kind of CVF is to be mounted, and only
+ keep the "right" module in memory. For examples please refer to the
+ dmsdos documentation (ftp and http addresses see below).
cvf_options=yyy
Option string passed to the CVF module. I.e. only the "yyy" is passed
@@ -80,8 +92,8 @@
misinterpretation by the FAT driver, which would recognize the text
after a comma as a FAT driver option and might get confused or print
strange error messages. The documentation for the CVF module should
- offer a different separation symbol, for example the dot ".", which
- is only valid inside the string "yyy".
+ offer a different separation symbol, for example the dot "." or the
+ plus sign "+", which is only valid inside the string "yyy".
4. Description of the CVF-FAT interface
@@ -120,11 +132,11 @@
is set, mmap is set to generic_file_mmap and readpage is caught
and redirected to the cvf_readpage function. If it is not set,
readpage is set to generic_readpage and mmap is caught and redirected
- to cvf_mmap.
+ to cvf_mmap. (If you want writable mmap use the readpage interface.)
- detect_cvf:
A function that is called to decide whether the filesystem is a CVF of
the type the module supports. The detect_cvf function must return 0
- for "NO, I DON'T KNOW THIS GARBAGE" or anything !=0 for "YES, THIS IS
+ for "NO, I DON'T KNOW THIS GARBAGE" or anything >0 for "YES, THIS IS
THE KIND OF CVF I SUPPORT". The function must maintain the module
usage counters for safety, i.e. do MOD_INC_USE_COUNT at the beginning
and MOD_DEC_USE_COUNT at the end. The function *must not* assume that
@@ -180,11 +192,19 @@
that has not been previously registered. The code uses the version id
to distinguish the modules, so be sure to keep it unique.
-5. CVS Modules
+5. CVF Modules
------------------------------------------------------------------------------
Refer to the dmsdos module (the successor of the dmsdos filesystem) for a
sample implementation. It can currently be found at
- ftp://fb9nt.uni-duisburg.de/pub/linux/dmsdos
+ ftp://fb9nt.uni-duisburg.de/pub/linux/dmsdos/dmsdos-x.y.z.tgz
+ ftp://sunsite.unc.edu/pub/Linux/system/Filesystems/dosfs/dmsdos-x.y.z.tgz
+ ftp://ftp.uni-stuttgart.de/pub/systems/linux/local/system/dmsdos-x.y.z.tgz
+
+(where x.y.z is to be replaced with the actual version number). Full
+documentation about dmsdos is included in the dmsdos package, but can also
+be found at
+ http://fb9nt.uni-duisburg.de/mitarbeiter/gockel/software/dmsdos/index.html
+ http://www.yk.rim.or.jp/~takafumi/dmsdos/index.html (in Japanese).
diff -ur --new-file old/linux/Documentation/filesystems/smbfs.txt new/linux/Documentation/filesystems/smbfs.txt
--- old/linux/Documentation/filesystems/smbfs.txt Wed Jan 21 19:09:31 1998
+++ new/linux/Documentation/filesystems/smbfs.txt Thu Apr 29 20:53:41 1999
@@ -1,7 +1,7 @@
Smbfs is a filesystem that implements the SMB protocol, which is the
protocol used by Windows for Workgroups, Windows 95 and Windows NT.
Smbfs was inspired by Samba, the program written by Andrew Tridgell
-that turns any unix host into a file server for DOS or Windows clients.
+that turns any Unix host into a file server for DOS or Windows clients.
See ftp://nimbus.anu.edu.au/pub/tridge/samba/ for this interesting
program suite and much more information on SMB, NetBIOS over TCP/IP,
and explanations for concepts like netbios name or share.
diff -ur --new-file old/linux/Documentation/filesystems/ufs.txt new/linux/Documentation/filesystems/ufs.txt
--- old/linux/Documentation/filesystems/ufs.txt Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/filesystems/ufs.txt Fri Apr 16 17:20:23 1999
@@ -0,0 +1,49 @@
+USING UFS
+=========
+
+mount -t ufs -o ufstype=type_of_ufs device dir
+
+
+UFS OPTIONS
+===========
+
+ufstype=type_of_ufs
+ UFS is a file system widely used in different operating systems.
+ The problem are differencies among implementations. Features of
+ some implementations are undocumented, so its hard to recognize
+ type of ufs automatically. That's why user must specify type of
+ ufs manually by mount option ufstype. Possible values are:
+
+ old old format of ufs
+ default value, supported os read-only
+
+ 44bsd used in FreeBSD, NetBSD, OpenBSD
+ supported os read-write
+
+ sun used in SunOS (Solaris)
+ supported as read-write
+
+ sunx86 used in SunOS for Intel (Solarisx86)
+ supported as read-write
+
+ nextstep
+ used in NextStep
+ supported as read-only
+
+ openstep
+ used in OpenStep
+ supported as read-only
+
+
+POSSIBLE PROBLEMS
+=================
+
+There is still bug in reallocation of fragment, in file fs/ufs/balloc.c,
+line 364. But it seem working on current buffer cache configuration.
+
+
+BUG REPORTS
+===========
+
+Any ufs bug report you can send to daniel.pirkl@email.cz (do not send
+partition tables bug reports.)
diff -ur --new-file old/linux/Documentation/filesystems/vfat.txt new/linux/Documentation/filesystems/vfat.txt
--- old/linux/Documentation/filesystems/vfat.txt Wed Jun 24 23:30:07 1998
+++ new/linux/Documentation/filesystems/vfat.txt Thu Apr 29 20:53:41 1999
@@ -177,7 +177,7 @@
Because the extended FAT system is backward compatible, it is
possible for old software to modify directory entries. Measures must
-be taken to insure the validity of slots. An extended FAT system can
+be taken to ensure the validity of slots. An extended FAT system can
verify that a slot does in fact belong to an 8.3 directory entry by
the following:
diff -ur --new-file old/linux/Documentation/filesystems/vfs.txt new/linux/Documentation/filesystems/vfs.txt
--- old/linux/Documentation/filesystems/vfs.txt Sat Jun 27 09:11:52 1998
+++ new/linux/Documentation/filesystems/vfs.txt Tue Apr 27 18:24:34 1999
@@ -4,7 +4,7 @@
Richard Gooch
- 27-JUN-1998
+ 23-APR-1999
Conventions used in this document
@@ -129,7 +129,7 @@
name: the name of the filesystem type, such as "ext2", "iso9660",
"msdos" and so on
- fs_flags: various flags (i.e. if it is a read-only FS)
+ fs_flags: various flags (i.e. FS_REQUIRES_DEV, FS_NO_DCACHE, etc.)
read_super: the method to call when a new instance of this
filesystem should be mounted
diff -ur --new-file old/linux/Documentation/ftape.txt new/linux/Documentation/ftape.txt
--- old/linux/Documentation/ftape.txt Thu May 21 03:54:34 1998
+++ new/linux/Documentation/ftape.txt Mon May 10 22:00:10 1999
@@ -267,9 +267,9 @@
ii. Hardware setup
BASE is the base address of your floppy disk controller,
- IRQ and DMA give its interrupt and dma channel, respectively.
- BOOL is an integer, "0" means: "NO!", any other value means:
- "YES!". You don't need to specify anything if connecting your tape
+ IRQ and DMA give its interrupt and DMA channel, respectively.
+ BOOL is an integer, "0" means "no"; any other value means
+ "yes". You don't need to specify anything if connecting your tape
drive to the standard floppy disk controller. All of these
values have reasonable defaults. The defaults can be modified
during kernel configuration, i.e. while running "make config",
diff -ur --new-file old/linux/Documentation/kbuild/00-INDEX new/linux/Documentation/kbuild/00-INDEX
--- old/linux/Documentation/kbuild/00-INDEX Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/kbuild/00-INDEX Mon Feb 1 21:03:20 1999
@@ -0,0 +1,8 @@
+00-INDEX
+ - this file: info on the kernel build process
+bug-list.txt
+ - known bugs in kbuild programs
+commands.txt
+ - overview of kbuild commands
+config-language.txt
+ - specification of Config Language, the language in Config.in files
diff -ur --new-file old/linux/Documentation/kbuild/bug-list.txt new/linux/Documentation/kbuild/bug-list.txt
--- old/linux/Documentation/kbuild/bug-list.txt Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/kbuild/bug-list.txt Mon Feb 1 21:03:20 1999
@@ -0,0 +1,22 @@
+Bug List
+21 January 1999
+Michael Elizabeth Chastain,
+
+- If a variable has a value of "m" in the previous .config file,
+ and a type of bool in the Config script, then all the interpreters
+ get confused. This happens frequently when someone changes a
+ tristate option to a bool option and people in the field have
+ .config files with a value of 'm'. For example: CONFIG_PSMOUSE.
+
+- CONFIG_MODVERSIONS has incorrect dependencies. If you have a
+ problem building the kernel, and you have CONFIG_MODVERSIONS turned
+ on, do a 'make dep' followed by 'make clean' before you try anything
+ else.
+
+- 'make dep' uses multistage dependencies, so the .hdepend file contains
+ 'touch' commands. As a result, building a kernel often touches files
+ in include/linux/*.h. This messes up CVS and other systems which like
+ to rely on file dates.
+
+- 'make dep' fails for C files which include other C files, such as
+ drivers/cdrom/sbpcd2.c.
diff -ur --new-file old/linux/Documentation/kbuild/commands.txt new/linux/Documentation/kbuild/commands.txt
--- old/linux/Documentation/kbuild/commands.txt Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/kbuild/commands.txt Mon Feb 1 21:03:20 1999
@@ -0,0 +1,113 @@
+Overview of Kbuild Commands
+24 January 1999
+Michael Elizabeth Chastain,
+
+
+
+=== Introduction
+
+Someday we'll get our arms around all this stuff and clean it up
+a little! Meanwhile, this file describes the system as it is today.
+
+
+
+=== Quick Start
+
+If you are building a kernel for the first time, here are the commands
+you need:
+
+ make config
+ make dep
+ make bzImage
+
+Instead of 'make config', you can run 'make menuconfig' for a full-screen
+text interface, or 'make xconfig' for an X interface using TCL/TK.
+
+'make bzImage' will leave your new kernel image in arch/i386/boot/bzImage.
+You can also use 'make bzdisk' or 'make bzlilo'.
+
+See the lilo documentation for more information on how to use lilo.
+You can also use the 'loadlin' program to boot Linux from MS-DOS.
+
+Some computers won't work with 'make bzImage', either due to hardware
+problems or very old versions of lilo or loadlin. If your kernel image
+is small, you may use 'make zImage', 'make zdisk', or 'make zlilo'
+on theses systems.
+
+If you find a file name 'vmlinux' in the top directory of the source tree,
+just ignore it. This is an intermediate file and you can't boot from it.
+
+Other architectures: the information above is oriented towards the
+i386. On other architectures, there are no 'bzImage' files; simply
+use 'zImage' or 'vmlinux' as appropriate for your architecture.
+
+Note: the difference between 'zImage' files and 'bzImage' files is that
+'bzImage' uses a different layout and a different loading algorithm,
+and thus has a larger capacity. Both files use gzip compression.
+The 'bz' in 'bzImage' stands for 'big zImage', not for 'bzip'!
+
+
+
+=== Top Level Makefile targets
+
+Here are the targets available at the top level:
+
+ make config, make oldconfig, make menuconfig, make xconfig
+
+ Configure the Linux kernel. You must do this before almost
+ anything else.
+
+ config line-oriented interface
+ oldconfig line-oriented interface, re-uses old values
+ menuconfig curses-based full-screen interface
+ xconfig X window system interface
+
+ make checkconfig
+
+ This runs a little perl script that checks the source tree for
+ missing instances of #include . Someone needs to
+ do this occasionally, because the C preprocessor will silently give
+ bad results if these symbols haven't been included (it treats
+ undefined symbols in preprocessor directives as defined to 0).
+ Superfluous uses of #include are also reported,
+ but you can ignore these, because smart CONFIG_* dependencies
+ make them harmless.
+
+ You can run 'make checkconfig' without configuring the kernel.
+ Also, 'make checkconfig' does not modify any files.
+
+ make checkhelp
+
+ This runs another little perl script that checks the source tree
+ for options that are in Config.in files but are not documented
+ in scripts/Configure.help. Again, someone needs to do this
+ occasionally. If you are adding configuration options, it's
+ nice if you do it before you publish your patch!
+
+ You can run 'make checkhelp' withoug configuring the kernel.
+ Also, 'make checkhelp' does not modify any files.
+
+ make dep, make depend
+
+ 'make dep' is a synonym for the long form, 'make depend'.
+
+ This command does two things. First, it computes dependency
+ information about which .o files depend on which .h files.
+ It records this information in a top-level file named .hdepend
+ and in one file per source directory named .depend.
+
+ Second, if you have CONFIG_MODVERSIONS enabled, 'make dep'
+ computes symbol version information for all of the files that
+ export symbols (note that both resident and modular files may
+ export symbols).
+
+ If you do not enable CONFIG_MODVERSIONS, you only have to run
+ 'make dep' once, right after the first time you configure
+ the kernel. The .hdepend files and the .depend file are
+ independent of your configuration.
+
+ If you do enable CONFIG_MODVERSIONS, you must run 'make dep'
+ every time you change your configuration, because the module
+ symbol version information depends on the configuration.
+
+[to be continued ...]
diff -ur --new-file old/linux/Documentation/kbuild/config-language.txt new/linux/Documentation/kbuild/config-language.txt
--- old/linux/Documentation/kbuild/config-language.txt Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/kbuild/config-language.txt Mon Feb 1 21:03:20 1999
@@ -0,0 +1,630 @@
+Config Language Specification
+21 January 1999
+Michael Elizabeth Chastain,
+
+
+
+=== Introduction
+
+Config Language is not 'bash'.
+
+This document describes Config Language, the Linux Kernel Configuration
+Language. config.in and Config.in files are written in this language.
+
+Although it looks, and usually acts, like a subset of the 'sh' language,
+Config Language has a restricted syntax and different semantics.
+
+Here is a basic guideline for Config Language programming: use only the
+programming idioms that you see in existing Config.in files. People often
+draw on their shell programming experience to invent idioms that look
+reasonable to shell programmers, but silently fail in Config Language.
+
+Config Language is not 'bash'.
+
+
+
+=== Interpreters
+
+Four different configuration programs read Config Language:
+
+ scripts/Configure make config, make oldconfig
+ scripts/Menuconfig make menuconfig
+ scripts/tkparse make xconfig
+ mconfig (in development)
+
+'Configure' is a bash script which interprets Config.in files by sourcing
+them. Some of the Config Language commands are native bash commands;
+simple bash functions implement the rest of the commands.
+
+'Menuconfig' is another bash script. It scans the input files with a
+small awk script, builds a shell function for each menu, sources the
+shell functions that it builds, and then executes the shell functions
+in a user-driven order. Menuconfig uses 'lxdialog', a back-end utility
+program, to perform actual screen output. 'lxdialog' is a C program
+which uses curses.
+
+'scripts/tkparse' is a C program with an ad hoc parser which translates
+a Config Language script to a huge TCL/TK program. 'make xconfig'
+then hands this TCL/TK program to 'wish', which executes it.
+
+'mconfig' is the next generation of Config Language interpreters. It is a
+C program with a bison parser which translates a Config Language script
+into an internal syntax tree and then hands the syntax tree to one of
+several user-interface front ends.
+
+This document describes the behaviour of all four interpreters, even though
+mconfig has not been released at the time of writing.
+
+
+
+=== Statements
+
+A Config Language script is a list of statements. There are 21 simple
+statements; an 'if' statement; menu blocks; and a 'source' statement.
+
+A '\' at the end of a line marks a line continuation.
+
+'#' usually introduces a comment, which continues to the end of the line.
+Lines of the form '# ... is not set', however, are not comments. They
+are semantically meaningful, and all four config interpreters implement
+this meaning.
+
+Newlines are significant. You may not substitute semicolons for newlines.
+The 'if' statement does accept a semicolon in one position; you may use
+a newline in that position instead.
+
+Here are the basic grammar elements.
+
+ A /prompt/ is a single-quoted string or a double-quoted string.
+ If the word is double-quoted, it may not have any $ substitutions.
+
+ A /word/ is a single unquoted word, a single-quoted string, or a
+ double-quoted string. If the word is unquoted or double quoted,
+ then $-substition will be performed on the word.
+
+ A /symbol/ is a single unquoted word.
+
+ A /dep/ is a dependency. Syntactically, it is a /word/. At run
+ time, a /dep/ must evaluate to "y", "m", "n", or "".
+
+ An /expr/ is a bash-like expression using the operators
+ '=', '!=', '-a', '-o', and '!'.
+
+Here are all the statements:
+
+ Text statements:
+
+ mainmenu_name /prompt/
+ comment /prompt/
+ text /prompt/
+
+ Ask statements:
+
+ bool /prompt/ /symbol/
+ hex /prompt/ /symbol/ /word/
+ int /prompt/ /symbol/ /word/
+ string /prompt/ /symbol/ /word/
+ tristate /prompt/ /symbol/
+
+ Define statements:
+
+ define_bool /symbol/ /word/
+ define_hex /symbol/ /word/
+ define_int /symbol/ /word/
+ define_string /symbol/ /word/
+ define_tristate /symbol/ /word/
+
+ Dependent statements:
+
+ dep_bool /prompt/ /symbol/ /dep/ ...
+ dep_hex /prompt/ /symbol/ /word/ /dep/ ...
+ dep_int /prompt/ /symbol/ /word/ /dep/ ...
+ dep_string /prompt/ /symbol/ /word/ /dep/ ...
+ dep_tristate /prompt/ /symbol/ /dep/ ...
+
+ Unset statement:
+
+ unset /symbol/ ...
+
+ Choice statements:
+
+ choice /prompt/ /word/ /word/
+ nchoice /prompt/ /symbol/ /prompt/ /symbol/ ...
+
+ If statements:
+
+ if [ /expr/ ] ; then
+ /statement/
+ ...
+ fi
+
+ if [ /expr/ ] ; then
+ /statement/
+ ...
+ else
+ /statement/
+ ...
+ fi
+
+ Menu block:
+
+ mainmenu_option next_comment
+ comment /prompt/
+ /statement/
+ ...
+ endmenu
+
+ Source statement:
+
+ source /word/
+
+
+
+=== mainmenu_name /prompt/
+
+This verb is a lot less important than it looks. It specifies the top-level
+name of this Config Language file.
+
+Configure: ignores this line
+Menuconfig: ignores this line
+Xconfig: uses /prompt/ for the label window.
+mconfig: ignores this line (mconfig does a better job without it).
+
+Example:
+
+ # arch/sparc/config.in
+ mainmenu_name "Linux/SPARC Kernel Configuration"
+
+
+
+=== comment /prompt/
+
+This verb displays its prompt to the user during the configuration process
+and also echoes it to the output files during output. Note that the
+prompt, like all prompts, is a quoted string with no dollar substitution.
+
+The 'comment' verb is not a Config Language comment. It causes the
+user interface to display text, and it causes output to appear in the
+output files.
+
+Configure: implemented
+Menuconfig: implemented
+Xconfig: does not display, but writes to output files
+mconfig: implemented
+
+Example:
+
+ # drivers/net/Config.in
+ comment 'CCP compressors for PPP are only built as modules.'
+
+
+
+=== text /prompt/
+
+This verb displays the prompt to the user with no adornment whatsoever.
+It does not echo the prompt to the output file. mconfig uses this verb
+internally for its help facility.
+
+Configure: not implemented
+Menuconfig: not implemented
+Xconfig: not implemented
+mconfig: implemented
+
+Example:
+
+ # mconfig internal help text
+ text 'Here are all the mconfig command line options.'
+
+
+
+=== bool /prompt/ /symbol/
+
+This verb displays /prompt/ to the user, accepts a value from the user,
+and assigns that value to /symbol/. The legal input values are "n" and
+"y".
+
+Note that the bool verb does not have a default value. People keep
+trying to write Config Language scripts with a default value for bool,
+but *all* of the existing language interpreters discard additional values.
+Feel free to submit a multi-interpreter patch to linux-kbuild if you
+want to implement this as an enhancment.
+
+Configure: implemented
+Menuconfig: implemented
+Xconfig: implemented
+mconfig: implemented
+
+Example:
+
+ # arch/i386/config.in
+ bool 'Symmetric multi-processing support' CONFIG_SMP
+
+
+
+=== hex /prompt/ /symbol/ /word/
+
+This verb displays /prompt/ to the user, accepts a value from the user,
+and assigns that value to /symbol/. Any hexadecimal number is a legal
+input value. /word/ is the default value.
+
+The hex verb does not accept range parameters.
+
+Configure: implemented
+Menuconfig: implemented
+Xconfig: implemented
+mconfig: implemented
+
+Example:
+
+ # drivers/sound/Config.in
+ hex 'I/O base for SB Check from manual of the card' CONFIG_SB_BASE 220
+
+
+
+=== int /prompt/ /symbol/ /word/
+
+This verb displays /prompt/ to the user, accepts a value from the user,
+and assigns that value to /symbol/. /word/ is the default value.
+Any decimal number is a legal input value.
+
+The int verb does not accept range parameters.
+
+Configure: implemented
+Menuconfig: implemented
+Xconfig: implemented
+mconfig: implemented
+
+Example:
+
+ # drivers/char/Config.in
+ int 'Maximum number of Unix98 PTYs in use (0-2048)' \
+ CONFIG_UNIX98_PTY_COUNT 256
+
+
+
+=== string /prompt/ /symbol/ /word/
+
+This verb displays /prompt/ to the user, accepts a value from the user,
+and assigns that value to /symbol/. /word/ is the default value. Legal
+input values are any ASCII string, except for the characters '"' and '\\'.
+
+The default value is mandatory.
+
+Configure: implemented
+Menuconfig: implemented
+Xconfig: implemented
+mconfig: implemented
+
+Example:
+
+ # drivers/sound/Config.in
+ string ' Full pathname of DSPxxx.LD firmware file' \
+ CONFIG_PSS_BOOT_FILE /etc/sound/dsp001.ld
+
+
+
+=== tristate /prompt/ /symbol/
+
+This verb displays /prompt/ to the user, accepts a value from the user,
+and assigns that value to /symbol/. Legal values are "n", "m", or "y".
+
+The value "m" stands for "module"; it indicates that /symbol/ should
+be built as a kernel module. The value "m" is legal only if the symbol
+CONFIG_MODULES currently has the value "y".
+
+The tristate verb does not have a default value.
+
+Configure: implemented
+Menuconfig: implemented
+Xconfig: implemented
+mconfig: implemented
+
+Example:
+
+ # fs/Config.in
+ tristate 'NFS filesystem support' CONFIG_NFS_FS
+
+
+
+=== define_bool /symbol/ /word/
+
+This verb the value of /word/ to /symbol/. Legal values are "n" or "y".
+
+For compatibility reasons, the value of "m" is also legal, because it
+will be a while before define_tristate is implemented everywhere.
+
+Configure: implemented
+Menuconfig: implemented
+Xconfig: implemented
+mconfig: implemented
+
+Example:
+
+ # arch/alpha/config.in
+ if [ "$CONFIG_ALPHA_GENERIC" = "y" ]
+ then
+ define_bool CONFIG_PCI y
+ define_bool CONFIG_ALPHA_NEED_ROUNDING_EMULATION y
+ fi
+
+
+
+=== define_hex /symbol/ /word/
+
+This verb assigns the value of /word/ to /symbol/. Any hexadecimal
+number is a legal value.
+
+Configure: implemented
+Menuconfig: not implemented
+Xconfig: not implemented
+mconfig: implemented
+
+Example:
+
+ # Not from the corpus
+ bool 'Specify custom serial port' CONFIG_SERIAL_PORT_CUSTOM
+ if [ "$CONFIG_SERIAL_PORT_CUSTOM" = "y" ]; then
+ hex 'Serial port number' CONFIG_SERIAL_PORT
+ else
+ define_hex CONFIG_SERIAL_PORT 0x3F8
+ fi
+
+
+
+=== define_int /symbol/ /word/
+
+This verb assigns /symbol/ the value /word/. Any decimal number is a
+legal value.
+
+Configure: implemented
+Menuconfig: not implemented
+Xconfig: not implemented
+mconfig: implemented
+
+Example:
+
+ # Not from the corpus
+ define_int CONFIG_UID_TORVALDS 2026
+
+
+
+=== define_string /symbol/ /word/
+
+This verb assigns the value of /word/ to /symbol/. Legal input values
+are any ASCII string, except for the characters '"' and '\\'.
+
+Configure: implemented
+Menuconfig: not implemented
+Xconfig: not implemented
+mconfig: implemented
+
+Example
+
+ # Not from the corpus
+ define_string CONFIG_VERSION "2.2.0"
+
+
+
+=== define_tristate /symbol/ /word/
+
+This verb assigns the value of /word/ to /symbol/. Legal input values
+are "n", "m", and "y".
+
+As soon as this verb is implemented in all interpreters, please use it
+instead of define_bool to define tristate values. This aids in static
+type checking.
+
+Configure: not implemented
+Menuconfig: not implemented
+Xconfig: not implemented
+mconfig: implemented
+
+Example:
+
+ # not from the corpus
+ if [ "$CONFIG_ZFTAPE" != "n" ]; then
+ comment 'The compressor will be built as a module only!'
+ define_tristate CONFIG_ZFT_COMPRESSOR m
+ fi
+
+
+
+=== dep_bool /prompt/ /symbol/ /dep/ ...
+
+This verb evaluates all of the dependencies in the dependency list.
+Any dependency which has a value of "y" does not restrict the input
+range. Any dependency which has a value of "n", or which has some
+other value, restricts the input range to "n".
+
+If the input range is restricted to the single choice "n", dep_bool
+silently assigns "n" to /symbol/. If the input range has more than
+one choice, dep_bool displays /prompt/ to the user, accepts a value
+from the user, and assigns that value to /symbol/.
+
+Configure: not implemented
+Menuconfig: not implemented
+XConfig: not implemented
+mconfig: implemented
+
+ # not from the corpus
+ dep_bool 'RZ1000 chipset bugfix/support' CONFIG_BLK_DEV_RZ1000 $CONFIG_PCI
+
+
+
+=== dep_hex /prompt/ /symbol/ /word/ /dep/ ...
+=== dep_int /prompt/ /symbol/ /word/ /dep/ ...
+=== dep_string /prompt/ /symbol/ /word/ /dep/ ...
+
+I am still thinking about the semantics of these verbs.
+
+Configure: not implemented
+Menuconfig: not implemented
+XConfig: not implemented
+mconfig: not implemented
+
+
+
+=== dep_tristate /prompt/ /symbol /dep/ ...
+
+This verb evaluates all of the dependencies in the dependency list.
+Any dependency which as a value of "y" does not restrict the input range.
+Any dependency which has a value of "m" restricts the input range to
+"m" or "n". Any dependency which has a value of "n", or which has some
+other value, restricts the input range to "n".
+
+If the input range is restricted to the single choice "n", dep_tristate
+silently assigns "n" to /symbol/. If the input range has more than
+one choice, dep_tristate displays /prompt/ to the user, accepts a value
+from the user, and assigns that value to /symbol/.
+
+Configure: implemented
+Menuconfig: implemented (but silently ignores dependencies after the first)
+Xconfig: implemented (but silently ignores dependencies after the first)
+mconfig: implemented
+
+
+
+=== unset /symbol/ ...
+
+This verb assigns the value "" to /symbol/, but does not cause /symbol/
+to appear in the output. The existence of this verb is a hack; it covers
+up deeper problems with variable semantics in a random-execution language.
+
+Configure: implemented
+Menuconfig: implemented
+Xconfig: not implemented
+mconfig: implemented
+
+
+
+=== choice /prompt/ /word/ /word/
+
+This verb implements a choice list or "radio button list" selection.
+It displays /prompt/ to the user, as well as a group of sub-prompts
+which have corresponding symbols.
+
+When the user selects a value, the choice verb sets the corresponding
+symbol to "y" and sets all the other symbols in the choice list to "n".
+
+The second argument is a single-quoted or double-quoted word that
+describes a series of sub-prompts and symbol names. The interpreter
+breaks up the word at white space boundaries into a list of sub-words.
+The first sub-word is the first prompt; the second sub-word is the
+first symbol. The third sub-word is the second prompt; the fourth
+sub-word is the second symbol. And so on, for all the sub-words.
+
+The third word is a literal word. Its value must be a unique abbreviation
+for exactly one of the prompts. The symbol corresponding to this prompt
+is the default enabled symbol.
+
+Note that because of the syntax of the choice verb, the sub-prompts
+may not have spaces in them.
+
+Configure: implemented
+Menuconfig: implemented
+Xconfig: implemented
+mconfig: implemented
+
+
+
+=== nchoice /prompt/ /symbol/ /prompt/ /symbol/ ...
+
+This verb has the same semantics as the choice verb, but with a sensible
+syntax.
+
+The first /prompt/ is the master prompt for the entire choice list.
+
+The first /symbol/ is the default symbol to enable (notice that this
+is a symbol, not a unique prompt abbreviation).
+
+The subsequent /prompt/ and /symbol/ pairs are the prompts and symbols
+for the choice list.
+
+Configure: not implemented
+Menuconfig: not implemented
+XConfig: not implemented
+mconfig: implemented
+
+
+
+=== if [ /expr/ ] ; then
+
+This is a conditional statement, with an optional 'else' clause. You may
+substitute a newline for the semicolon if you choose.
+
+/expr/ may contain the following atoms and operators. Note that, unlike
+shell, you must use double quotes around every atom.
+
+ "..." a literal
+ "$..." a variable
+
+ /atom/ = /atom/ true if atoms have identical value
+ /atom/ != /atom/ true if atoms have different value
+
+ /expr/ -o /expr/ true if either expression is true
+ /expr/ -a /expr/ true if both expressions are true
+ ! /expr/ true if expression is not true
+
+Configure: implemented
+Menuconfig: implemented
+XConfig: implemented, with bugs
+mconfig: implemented
+
+Xconfig has several known bugs, and probably some unknown bugs too:
+
+- In a comparison, if the left-hand atom is a variable and that variable
+ is from a choice list, the right-hand atom must be "y".
+
+- In a comparison, if the right-hand atom is a variable and that variable
+ is from a choice list, you lose. tkparse will throw a segmentation
+ violation, silently generate bizarre TCL code, or something else.
+
+- tkparse gives the wrong precedence to -o, -a, and !. Don't use both
+ -o and -a in an expression. Don't use ! at all.
+
+
+
+=== mainmenu_option next_comment
+
+This verb introduces a new menu. The next statement must have a comment
+verb. The /prompt/ of that comment verb becomes the title of the menu.
+(I have no idea why the original designer didn't create a 'menu ...' verb).
+
+Statements outside the scope of any menu are in the implicit top menu.
+The title of the top menu comes from a variety of sources, depending on
+the interpreter.
+
+Configure: implemented
+Menuconfig: implemented
+Xconfig: implemented
+mconfig: implemented
+
+
+
+=== endmenu
+
+This verb closes the scope of a menu.
+
+Configure: implemented
+Menuconfig: implemented
+Xconfig: implemented
+mconfig: implemented
+
+
+
+=== source /word/
+
+This verb interprets the literal /word/ as a filename, and interpolates
+the contents of that file. The word must be a single unquoted literal
+word.
+
+Some interpreters interpret this verb at run time; some interpreters
+interpret it at parse time.
+
+Inclusion is textual inclusion, like the C preprocessor #include facility.
+The source verb does not imply a submenu or any kind of block nesting.
+
+Configure: implemented (run time)
+Menuconfig: implemented (parse time)
+Xconfig: implemented (parse time)
+mconfig: implemented (parse time)
diff -ur --new-file old/linux/Documentation/kernel-docs.txt new/linux/Documentation/kernel-docs.txt
--- old/linux/Documentation/kernel-docs.txt Mon Jan 4 20:37:29 1999
+++ new/linux/Documentation/kernel-docs.txt Mon May 10 22:00:10 1999
@@ -18,7 +18,7 @@
Fortunately, as more and more people get to GNU/Linux, more and more
get interested in the Kernel. But reading the sources is not always
enough. It is easy to understand the code, but miss the concepts, the
- philosophy and design decissions behind this code.
+ philosophy and design decisions behind this code.
Unfortunately, not many documents are available for beginners to
start. And, even if they exist, there was no "well-known" place which
@@ -33,7 +33,7 @@
The papers that follow are listed in no particular order. All are
catalogued with the following fields: the document's "Title", the
"Author"/s, the "URL" where they can be found, some "Keywords"
- helpfull when searching for specific topics, and a brief "Description"
+ helpful when searching for specific topics, and a brief "Description"
of the Document.
Enjoy!
@@ -170,9 +170,9 @@
http://anchor.cs.binghamton.edu/courses/cs628/linux-net.html
Keywords: files, sk_buffs.
Description: A short description of files under the net/
- directory. Each file has a one or two lines paragrahp
- description. sk_buffs explained, too, with some beatiful
- pictures. A little bit outdated.
+ directory. Each file has a one- or two-line paragraph to
+ describe it. Also, sk_buffs is explained with some
+ beautiful pictures. A little bit outdated.
+ Title: "Linux ioctl() Primer"
Author: Vipul Gupta.
@@ -222,7 +222,7 @@
ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/dr
ivers.ps.gz
Keywords: character device drivers, I/O, signals, DMA,
- accesing ports in user space, kernel environment.
+ accessing ports in user space, kernel environment.
Description: 68 pages paper on writing character drivers. A
little bit old (1.993, 1.994) although still useful.
@@ -298,7 +298,7 @@
Description: The title says it all. There's a fixed kernel
section summarizing developers' work, bug fixes, new features
and versions produced during the week. Published every
- thursday.
+ Thursday.
+ Name: CuTTiNG.eDGe.LiNuX.
URL: http://edge.linuxhq.com
diff -ur --new-file old/linux/Documentation/m68k/kernel-options.txt new/linux/Documentation/m68k/kernel-options.txt
--- old/linux/Documentation/m68k/kernel-options.txt Thu Jan 7 17:41:54 1999
+++ new/linux/Documentation/m68k/kernel-options.txt Tue May 11 18:57:14 1999
@@ -3,10 +3,10 @@
Command Line Options for Linux/m68k
===================================
-Last Update: Nov 28, 1997
-Linux/m68k version: 2.1.64
+Last Update: 2 May 1999
+Linux/m68k version: 2.2.6
Author: Roman.Hodek@informatik.uni-erlangen.de (Roman Hodek)
-Update: jds@kom.auc.dk (Jes Sorensen)
+Update: jds@kom.auc.dk (Jes Sorensen) and faq@linux-m68k.org (Chris Lawrence)
0) Introduction
===============
@@ -145,7 +145,7 @@
These two options tell the kernel whether it should mount the root
filesystem read-only or read-write. The default is read-only, except
-for ramdisks which are read-write.
+for ramdisks, which default to read-write.
2.3) debug
@@ -216,23 +216,10 @@
2.7) swap=
------------
-
-Syntax: swap=,,,,,,\
- ,
-(All optional)
-
-TODO
-
-
2.8) buff=
-----------
-Syntax: buff=,,,,,
-(All optional)
-
-TODO
-
+ I can't find any sign of these options in 2.2.6.
3) General Device Options (Amiga and Atari)
@@ -311,7 +298,7 @@
=========================
4.1) video=
---------------
+-----------
Syntax: video=:
@@ -322,8 +309,8 @@
NB: Please notice that this option was renamed from `atavideo' to
`video' during the development of the 1.3.x kernels, thus you
- might need to update your boot-scripts if upgrading to 2.0.x from
- an 1.2.13ply kernel.
+ might need to update your boot-scripts if upgrading to 2.x from
+ an 1.2.x kernel.
NBB: The behavior of video= was changed in 2.1.57 so the recommended
option is to specify the name of the frame buffer.
@@ -705,10 +692,11 @@
Syntax: video=:
The parameter specifies the name of the frame buffer, valid
-options are `amifb', `cyberfb', `retz3' and `clgen', provided that the
-respective frame buffer devices have been compiled into the kernel (or
-compiled as loadable modules). The behavior of the option was
-changed in 2.1.57 so it is now recommended to specify this option.
+options are `amifb', `cyber', 'virge', `retz3' and `clgen', provided
+that the respective frame buffer devices have been compiled into the
+kernel (or compiled as loadable modules). The behavior of the
+option was changed in 2.1.57 so it is now recommended to specify this
+option.
The is a comma-separated list of the sub-options listed
below. This option is organized similar to the Atari version of the
@@ -762,8 +750,8 @@
5.1.3) inverse
--------------
-Use inverted display. Functionally the same as the "inverse"
-sub-option for the Atari.
+Use inverted display (black on white). Functionally the same as the
+"inverse" sub-option for the Atari.
5.1.4) font
-----------
@@ -787,7 +775,7 @@
your monitor can work with, in Hz. and are the same for
the horizontal frequency, in kHz.
- The defaults are 50;90;15;38 (Generic Amiga monitor).
+ The defaults are 50;90;15;38 (Generic Amiga multisync monitor).
5.2) fd_def_df0=
@@ -804,6 +792,9 @@
Syntax: wd33c93=
+These options affect the A590/A2091, A3000 and GVP Series II SCSI
+controllers.
+
The is a comma-separated list of the sub-options listed
below.
@@ -861,7 +852,7 @@
-----------
No argument. Used to separate blocks of keywords when there's more
-than one host adapter in the system.
+than one wd33c93-based host adapter in the system.
5.3.7) nodma
------------
@@ -903,6 +894,69 @@
32 bit address range for DMA. The correct setting depends on your
controller and should be autodetected by the driver. An example is the
24 bit region which is specified by a mask of 0x00fffffe.
+
+
+5.5) 53c7xx=
+------------
+
+Syntax: 53c7xx=
+
+These options affect the A4000T, A4091, WarpEngine, Blizzard 603e+,
+and GForce 040/060 SCSI controllers on the Amiga, as well as the
+builtin MVME 16x SCSI controller.
+
+The is a comma-separated list of the sub-options listed
+below.
+
+5.5.1) nosync
+-------------
+
+Syntax: nosync:0
+
+ Disables sync negotiation for all devices. Any value after the
+ colon is acceptable (and has the same effect).
+
+5.5.2) noasync
+--------------
+
+Syntax: noasync:0
+
+ Disables async and sync negotiation for all devices. Any value
+ after the colon is acceptable (and has the same effect).
+
+5.5.3) nodisconnect
+-------------------
+
+Syntax: nodisconnect:0
+
+ Disables SCSI disconnects. Any value after the colon is acceptable
+ (and has the same effect).
+
+5.5.4) validids
+---------------
+
+Syntax: validids:0xNN
+
+ Specify which SCSI ids the driver should pay attention to. This is
+ a bitmask (i.e. to only pay attention to ID#4, you'd use 0x10).
+ Default is 0x7f (devices 0-6).
+
+5.5.5) opthi
+5.5.6) optlo
+------------
+
+Syntax: opthi:M,optlo:N
+
+ Specify options for "hostdata->options". The acceptable definitions
+ are listed in drivers/scsi/53c7xx.h; the 32 high bits should be in
+ opthi and the 32 low bits in optlo. They must be specified in the
+ order opthi=M,optlo=N.
+
+5.5.7) next
+-----------
+
+ No argument. Used to separate blocks of keywords when there's more
+ than one 53c7xx host adapter in the system.
/* Local Variables: */
diff -ur --new-file old/linux/Documentation/mtrr.txt new/linux/Documentation/mtrr.txt
--- old/linux/Documentation/mtrr.txt Sun May 3 02:42:08 1998
+++ new/linux/Documentation/mtrr.txt Mon May 10 19:32:45 1999
@@ -62,6 +62,23 @@
ioctl() interface, so users won't have to do anything. If you use a
commercial X server, lobby your vendor to add support for MTRRs.
===============================================================================
+Creating overlapping MTRRs:
+
+%echo "base=0xfb000000 size=0x1000000 type=write-combining" >/proc/mtrr
+%echo "base=0xfb000000 size=0x1000 type=uncachable" >/proc/mtrr
+
+And the results: cat /proc/mtrr
+reg00: base=0x00000000 ( 0MB), size= 64MB: write-back, count=1
+reg01: base=0xfb000000 (4016MB), size= 16MB: write-combining, count=1
+reg02: base=0xfb000000 (4016MB), size= 4kB: uncachable, count=1
+
+Some cards (especially Voodoo Graphics boards) need this 4 kB area
+excluded from the beginning of the region because it is used for
+registers.
+
+NOTE: You can only create type=uncachable region, if the first
+region that you created is type=write-combining.
+===============================================================================
Removing MTRRs from the shell:
% echo "disable=2" >! /proc/mtrr
===============================================================================
diff -ur --new-file old/linux/Documentation/networking/filter.txt new/linux/Documentation/networking/filter.txt
--- old/linux/Documentation/networking/filter.txt Fri Jun 5 07:53:50 1998
+++ new/linux/Documentation/networking/filter.txt Thu Apr 29 20:53:41 1999
@@ -12,7 +12,7 @@
attach a filter onto any socket and allow or disallow certain
types of data to come through the socket. LSF follows exactly
the same filter code structure as the BSD Berkeley Packet Filter
-(BPF), so refering to the BSD bpf.4 manpage is very helpful in
+(BPF), so referring to the BSD bpf.4 manpage is very helpful in
creating filters.
LSF is much simpler than BPF. One does not have to worry about
diff -ur --new-file old/linux/Documentation/networking/ip-sysctl.txt new/linux/Documentation/networking/ip-sysctl.txt
--- old/linux/Documentation/networking/ip-sysctl.txt Tue Jan 5 00:31:35 1999
+++ new/linux/Documentation/networking/ip-sysctl.txt Mon May 10 18:55:25 1999
@@ -96,7 +96,7 @@
Enable timestamps as defined in RFC1323.
tcp_sack - BOOLEAN
- Enable select acknowledgements.
+ Enable select acknowledgments.
tcp_retrans_collapse - BOOLEAN
Bug-to-bug compatibility with some broken printers.
@@ -119,7 +119,7 @@
icmp_paramprob_rate - INTEGER
icmp_timeexceed_rate - INTEGER
icmp_echoreply_rate - INTEGER (not enabled per default)
- Limit the maximal rates for sending ICMP packets to specifc targets.
+ Limit the maximal rates for sending ICMP packets to specific targets.
0 to disable any limiting, otherwise the maximal rate in jiffies(1)
See the source for more information.
@@ -173,7 +173,7 @@
bootp_relay - BOOLEAN
Accept packets with source address 0.b.c.d destined
not to this host as local ones. It is supposed, that
- BOOTP relay deamon will catch and forward such packets.
+ BOOTP relay daemon will catch and forward such packets.
default FALSE
Not Implemented Yet.
@@ -211,4 +211,4 @@
Updated by:
Andi Kleen
ak@muc.de
-$Id: ip-sysctl.txt,v 1.8 1999/01/02 16:37:06 davem Exp $
+$Id: ip-sysctl.txt,v 1.9 1999/05/08 02:58:44 davem Exp $
diff -ur --new-file old/linux/Documentation/networking/ipddp.txt new/linux/Documentation/networking/ipddp.txt
--- old/linux/Documentation/networking/ipddp.txt Tue Apr 28 23:22:04 1998
+++ new/linux/Documentation/networking/ipddp.txt Thu Apr 29 20:53:41 1999
@@ -14,7 +14,7 @@
IP over an AppleTalk network or you can provide IP gatewaying functions
for your AppleTalk users.
-You can currently Encapsulate or Decapsulate AppleTalk-IP on LocalTalk,
+You can currently encapsulate or decapsulate AppleTalk-IP on LocalTalk,
EtherTalk and PPPTalk. The only limit on the protocol is that of what
kernel AppleTalk layer and drivers are available.
@@ -23,22 +23,22 @@
Compiling AppleTalk-IP Decapsulation/Encapsulation
=================================================
-AppleTalk-IP Decapsulation needs to be compiled into your kernel. You
-will need to turn on Appletalk-IP driver support. Then you will need to
-select ONE of the two options; IP to AppleTalk-IP Encapsulation support or
-AppleTalk-IP to IP Decapsulation support. If you compile the driver
+AppleTalk-IP decapsulation needs to be compiled into your kernel. You
+will need to turn on AppleTalk-IP driver support. Then you will need to
+select ONE of the two options; IP to AppleTalk-IP encapsulation support or
+AppleTalk-IP to IP decapsulation support. If you compile the driver
statically you will only be able to use the driver for the function you have
enabled in the kernel. If you compile the driver as a module you can
select what mode you want it to run in via a module loading param.
-ipddp_mode=1 for AppleTalk-IP Encapsulation and ipddp_mode=2 for
-AppleTalk-IP to IP Decapsulation.
+ipddp_mode=1 for AppleTalk-IP encapsulation and ipddp_mode=2 for
+AppleTalk-IP to IP decapsulation.
Basic instructions for user space tools
=======================================
-To enable AppleTalk-IP Decapsulation/Encapsulation you will need the
-proper tools. You can get the tools for Decapsulation from
-http://spacs1.spacs.k12.wi.us/~jschlst/MacGate and for Encapsulation
+To enable AppleTalk-IP decapsulation/encapsulation you will need the
+proper tools. You can get the tools for decapsulation from
+http://spacs1.spacs.k12.wi.us/~jschlst/MacGate and for encapsulation
from http://www.maths.unm.edu/~bradford/ltpc.html
I will briefly describe the operation of the tools, but you will
@@ -61,8 +61,8 @@
Common Uses of ipddp.c
----------------------
-Of course AppleTalk-IP Decapsulation and Encapsulation, but specificly
-Decapsulation is being used most for connecting LocalTalk networks to
+Of course AppleTalk-IP decapsulation and encapsulation, but specifically
+decapsulation is being used most for connecting LocalTalk networks to
IP networks. Although it has been used on EtherTalk networks to allow
Macs that are only able to tunnel IP over EtherTalk.
@@ -73,6 +73,6 @@
Further Assistance
-------------------
You can contact me (Jay Schulist ) with any
-questions reguarding Decapsulation or Encapsulation. Bradford W. Johnson
+questions regarding decapsulation or encapsulation. Bradford W. Johnson
originally wrote the ipddp.c driver for IP
encapsulation in AppleTalk.
diff -ur --new-file old/linux/Documentation/networking/lapb-module.txt new/linux/Documentation/networking/lapb-module.txt
--- old/linux/Documentation/networking/lapb-module.txt Thu May 21 03:54:34 1998
+++ new/linux/Documentation/networking/lapb-module.txt Mon May 10 22:00:10 1999
@@ -216,7 +216,7 @@
This is called by the LAPB module when an event occurs after the device
driver has called lapb_disconnect_request (see above). The reason indicates
-what has happended. In all cases the LAPB link can be regarded as being
+what has happened. In all cases the LAPB link can be regarded as being
terminated. The values for reason are:
LAPB_OK The LAPB link was terminated normally.
diff -ur --new-file old/linux/Documentation/networking/pt.txt new/linux/Documentation/networking/pt.txt
--- old/linux/Documentation/networking/pt.txt Tue Apr 28 23:22:04 1998
+++ new/linux/Documentation/networking/pt.txt Mon May 10 22:00:10 1999
@@ -2,7 +2,7 @@
ALPHA for Linux 1.3.43.
These files will allow you to talk to the PackeTwin (now know as PT) and
-connect through it just like a pair of TNC's. To do this you will also
+connect through it just like a pair of TNCs. To do this you will also
require the AX.25 code in the kernel enabled.
There are four files in this archive; this readme, a patch file, a .c file
diff -ur --new-file old/linux/Documentation/networking/routing.txt new/linux/Documentation/networking/routing.txt
--- old/linux/Documentation/networking/routing.txt Thu May 14 19:26:22 1998
+++ new/linux/Documentation/networking/routing.txt Mon May 10 22:00:10 1999
@@ -1,6 +1,6 @@
The directory ftp.inr.ac.ru:/ip-routing contains:
-- iproute.c - "professional" routing table maintainance utility.
+- iproute.c - "professional" routing table maintenance utility.
- rdisc.tar.gz - rdisc daemon, ported from Sun.
STRONGLY RECOMMENDED FOR ALL HOSTS.
diff -ur --new-file old/linux/Documentation/parport.txt new/linux/Documentation/parport.txt
--- old/linux/Documentation/parport.txt Mon Jul 20 05:40:43 1998
+++ new/linux/Documentation/parport.txt Fri Mar 26 22:23:24 1999
@@ -87,7 +87,7 @@
If you have configured the /proc filesystem into your kernel, you will
see a new directory entry: /proc/parport. In there will be a
directory entry for each parallel port for which parport is
-configured. In each of those directories are three files describing
+configured. In each of those directories are four files describing
that parallel port. For example:
File: Contents:
diff -ur --new-file old/linux/Documentation/powerpc/ppc_htab.txt new/linux/Documentation/powerpc/ppc_htab.txt
--- old/linux/Documentation/powerpc/ppc_htab.txt Wed Apr 15 02:33:40 1998
+++ new/linux/Documentation/powerpc/ppc_htab.txt Thu Mar 11 06:49:10 1999
@@ -114,10 +114,5 @@
3. Bugs
- Doing a 'less' or 'more' on ppc_htab results in a segmentation violation.
- I'm not sure of the cause but in the mean time 'cat' works adequately for
- reading the file.
-
The PMC1 and PMC2 counters can overflow and give no indication of that
in /proc/ppc_htab.
-
diff -ur --new-file old/linux/Documentation/powerpc/smp.txt new/linux/Documentation/powerpc/smp.txt
--- old/linux/Documentation/powerpc/smp.txt Sat Oct 10 18:53:24 1998
+++ new/linux/Documentation/powerpc/smp.txt Thu Apr 29 21:39:07 1999
@@ -5,11 +5,10 @@
(Cort Dougan, cort@cs.nmt.edu) please email me if you have questions,
comments or corrections.
-Last Change: 10.8.98
+Last Change: 3.31.99
-SMP support for Linux/PPC is still in its early stages and likely to
-be buggy for a while. If you want to help by writing code or testing
-different hardware please email me!
+If you want to help by writing code or testing different hardware please
+email me!
1. State of Supported Hardware
@@ -29,3 +28,7 @@
BeBox
BeBox support hasn't been added to the 2.1.X kernels from 2.0.X
but work is being done and SMP support for BeBox is in the works.
+
+ CHRP
+ CHRP SMP works and is fairly solid. It's been tested on the IBM F50
+ with 4 processors for quite some time now.
diff -ur --new-file old/linux/Documentation/proc.txt new/linux/Documentation/proc.txt
--- old/linux/Documentation/proc.txt Thu Jan 28 21:16:40 1999
+++ new/linux/Documentation/proc.txt Sat Feb 6 21:46:20 1999
@@ -50,7 +50,7 @@
the work back to the Linux community. This work is based on the
2.1.132 and 2.2.0-pre-kernel versions. I'm afraid it's still far from
complete, but we hope it will be useful. As far as we know, it is the
-first 'all-in-one’ document about the /proc file system. It is
+first 'all-in-one' document about the /proc file system. It is
focused on the Intel x86 hardware, so if you are looking for PPC, ARM,
SPARC, APX, etc., features, you probably won't find what you are
looking for. It also only covers IPv4 networking, not IPv6 nor other
@@ -657,7 +657,7 @@
sg-big-buff
This file shows the size of the generic SCSI (sg) buffer. At this
- point, you can’t tune it yet, but you can change it at compile time
+ point, you can't tune it yet, but you can change it at compile time
by editing include/scsi/sg.h and changing the value of
SG_BIG_BUFF.
@@ -794,9 +794,9 @@
swap_cluster
This is probably the greatest influence on system
performance. swap_cluster is the number of pages kswapd writes in
- one turn. You’ll want this value to be large so that kswapd does
- its I/O in large chunks and the disk doesn’t have to seek as
- often., but you don’t want it to be too large since that would
+ one turn. You'll want this value to be large so that kswapd does
+ its I/O in large chunks and the disk doesn't have to seek as
+ often., but you don't want it to be too large since that would
flood the request queue.
overcommit_memory
@@ -1140,7 +1140,7 @@
accept_source_route
Should source routed packages be accepted or declined. The
default is dependent on the kernel configuration. It's 'yes' for
- routers and 'np' for hosts.
+ routers and 'no' for hosts.
bootp_relay
Accept packets with source address 0.b.c.d destined not to this
diff -ur --new-file old/linux/Documentation/scsi-generic.txt new/linux/Documentation/scsi-generic.txt
--- old/linux/Documentation/scsi-generic.txt Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/scsi-generic.txt Sun Apr 25 02:49:37 1999
@@ -0,0 +1,636 @@
+ Notes on Linux's SG driver version 2.1.30
+ -----------------------------------------
+ 990328
+
+Introduction
+============
+These are notes on the Linux SCSI generic packet device driver (sg)
+describing version 2.1.30 . The original driver was written by Lawrence
+Foard and has remained in place with minimal changes since circa 1992.
+Version 2 of this driver remains backward compatible (binary and
+source **) with the original. It adds scatter gather, command queuing,
+per file descriptor sequencing, asynchronous notification and better
+error reporting.
+
+Sg is one of the four "high level" SCSI device drivers along with
+sd, st and sr (disk, tape and CDROM respectively). Sg is more generalized
+(but lower level) than its sibling and tends to be used on SCSI devices
+that don't fit into the already serviced categories. Thus sg is used for
+scanners, cd writers and reading audio cds amongst other things.
+
+The interface and usage of the original sg driver has been documented
+by Heiko Eissfeldt in a HOWTO called SCSI-Programming-HOWTO. My copy
+of the document is version 1.5 dated 7th May 1996. It can found at
+ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/SCSI-Programming-HOWTO .
+Amongst other things it has a lot of tables from the SCSI-2 standard
+that are very useful for programming this interface.
+
+** It is possible to write applications that perform differently
+depending on whether they are using the original or this version of
+the sg device driver. The author is not aware of any useful applications
+that have problems with version 2 (yet).
+
+
+Architecture
+============
+The SCSI generic packet device driver (sg) is a character based device.
+It is one of the four high level device driver in the SCSI sub-system;
+the others are sd (for direct-access devices - disks), st (for tapes)
+and sr (for data cdroms). The other three devices are block devices.
+
+The unifying layer of the SCSI sub-system in the so-called mid-level.
+Below that are all the drivers for the various adapters supported by
+Linux.
+
+Since sg is a character device it supports the traditional Unix
+system calls of open(), close(), read(), write() and ioctl(). Two other
+related system calls: poll() and fcntl() are added to this list and
+how they interact with the sg device driver is documented later.
+
+An SG device is accessed by write()ing SCSI commands plus any associated
+outgoing data to it; the resulting status codes and any incoming data are
+then obtained by a read() call. The device can be opened O_NONBLOCK
+(non-blocking) and poll() used to monitor its progress. The device may be
+opened O_EXCL which excludes other "sg" users from this device (but not
+"sd", "st" or "sr" users). The buffer given to the write() call is made
+up as follows:
+ - struct sg_header image (see below)
+ - scsi command (6, 10 or 12 bytes long)
+ - data to be written to the device (if any)
+
+The buffer received from the corresponding read() call contains:
+ - struct sg_header image (check status/errors + sense_buffer)
+ - data read back from device (if any)
+
+The given SCSI command has its LUN field overwritten by the LUN value of
+the associated sg device that has been open()ed.
+
+
+sg_header
+=========
+This is the name of the control structure that conveys information
+about the length of data to be read/written by the associated SCSI
+command. It also conveys error and status information from the
+read() call. An instance of this structure is the first thing that
+is placed in the data buffers of both write() and read().
+
+In its original form it looked like this:
+struct sg_header {
+ int pack_len;
+ int reply_len;
+ int pack_id;
+ int result;
+ unsigned int twelve_byte:1;
+ unsigned int other_flags:31;
+ unsigned char sense_buffer[16];
+}; /* this structure is 36 bytes long */
+
+The 'pack_len' is bizzare and ends up having the 'reply_len' put in it
+(perhaps it had a use at some stage).
+
+The 'reply_len' is the length of the data the corresponding read()
+will/should request (including the sg_header).
+
+The 'pack_id' is not acted upon by the sg device driver but is conveyed
+back to the corresponding read() so it can be used for sequencing by an
+application.
+
+The 'result' is also bizzare, turning certain types of host codes it 0 (no
+error), EBUSY or EIO. With better error reporting now available, the
+'result' is best ignored.
+
+The 'twelve_byte' field overrides the internal SCSI command length "guessing"
+algorithm for group 6 and 7 commands (ie when 1st byte >= 0xc0) and forces
+a command lenth of 12 bytes.
+The command length "guessing" algorithm is as follows:
+Group: 0 1 2 3 4 5 6 7
+Length: 6 10 10 12 12 12 10 10
+
+'other_flags' was originally documented as "not used" but some current
+applications assume it has 0 placed in it.
+
+The 'sense_buffer' is the first 16 bytes of SCSI sense buffer that is
+returned when the target returns a SCSI status code of CHECK_CONDITION
+or COMMAND_TERMINATED [or (driver_status & DRIVER_SENSE) is true]. This
+buffer should be at least 18 bytes long and arguably 32 bytes; unfortunately
+this is unlikely to happen in the 2.2.x series of kernels.
+
+The new sg_header offered in this driver is:
+#define SG_MAX_SENSE 16
+struct sg_header
+{
+ int pack_len; /* [o] reply_len (ie useless) ignored as input */
+ int reply_len; /* [i] max length of expected reply (inc. sg_header) */
+ int pack_id; /* [io] id number of packet (use ints >= 0) */
+ int result; /* [o] 0==ok, else (+ve) Unix errno code (e.g. EIO) */
+ unsigned int twelve_byte:1;
+ /* [i] Force 12 byte command length for group 6 & 7 commands */
+ unsigned int target_status:5; /* [o] scsi status from target */
+ unsigned int host_status:8; /* [o] host status (see "DID" codes) */
+ unsigned int driver_status:8; /* [o] driver status+suggestion */
+ unsigned int other_flags:10; /* unused */
+ unsigned char sense_buffer[SG_MAX_SENSE]; /* [o] when target_status is
+ CHECK_CONDITION or COMMAND_TERMINATED this is output. */
+}; /* This structure is 36 bytes long on i386 */
+
+Firstly the new header is binary compatible with the original. This is
+important for keeping existing apps working without recompilation.
+
+Only those elements (or fields) that are new or in some way different
+from the original are documented below.
+
+'pack_id' becomes input to a read() when ioctl(sg_fd, SG_SET_FORCE_PACK_ID,
+&one) is active. A 'pack_id' of -1 is interpreted as fetch the oldest
+waiting packet; any other value will cause the read() to wait (or yield
+EAGAIN) until a packet with that 'pack_id' becomes available. In all cases
+the value of 'pack_id' available after a read() is the value given to that
+variable in the prior, corresponding write().
+
+The 'target_status' field is always output and is the (masked and shifted
+1 bit right) SCSI status code from the target device. The allowable
+values are (found in ):
+/* N.B. 1 bit offset from usual SCSI status values */
+#define GOOD 0x00
+#define CHECK_CONDITION 0x01
+#define CONDITION_GOOD 0x02
+#define BUSY 0x04
+#define INTERMEDIATE_GOOD 0x08
+#define INTERMEDIATE_C_GOOD 0x0a
+#define RESERVATION_CONFLICT 0x0c
+#define COMMAND_TERMINATED 0x11
+#define QUEUE_FULL 0x14
+When the 'target_status' is CHECK_CONDITION or COMMAND_TERMINATED the
+'sense_buffer' is output. Note that when (driver_status & DRIVER_SENSE)
+is true then the 'sense_buffer' is also output (this seems to occur when
+the scsi ide emulation is used). When the 'sense_buffer' is output the
+SCSI Sense Key can be found at (sense_buffer[2] & 0x0f) .
+
+The 'host_status' field is always output and has the following values
+whose "defines" are not visible outside the kernel (unfortunately):
+#define DID_OK 0x00 /* NO error */
+#define DID_NO_CONNECT 0x01 /* Couldn't connect before timeout period */
+#define DID_BUS_BUSY 0x02 /* BUS stayed busy through time out period */
+#define DID_TIME_OUT 0x03 /* TIMED OUT for other reason */
+#define DID_BAD_TARGET 0x04 /* BAD target. */
+#define DID_ABORT 0x05 /* Told to abort for some other reason */
+#define DID_PARITY 0x06 /* Parity error */
+#define DID_ERROR 0x07 /* Internal error */
+#define DID_RESET 0x08 /* Reset by somebody. */
+#define DID_BAD_INTR 0x09 /* Got an interrupt we weren't expecting. */
+#define DID_PASSTHROUGH 0x0a /* Force command past mid-layer */
+#define DID_SOFT_ERROR 0x0b /* The low level driver just wish a retry */
+
+The 'driver_status' field is always output. When ('driver_status' &
+DRIVER_SENSE) is true the 'sense_buffer' is also output. The following
+values whose "defines" are not visible outside the kernel (unfortunately)
+can occur:
+#define DRIVER_OK 0x00 /* Typically no suggestion */
+#define DRIVER_BUSY 0x01
+#define DRIVER_SOFT 0x02
+#define DRIVER_MEDIA 0x03
+#define DRIVER_ERROR 0x04
+#define DRIVER_INVALID 0x05
+#define DRIVER_TIMEOUT 0x06
+#define DRIVER_HARD 0x07
+#define DRIVER_SENSE 0x08
+/* above status 'or'ed with one of the following suggestions */
+#define SUGGEST_RETRY 0x10
+#define SUGGEST_ABORT 0x20
+#define SUGGEST_REMAP 0x30
+#define SUGGEST_DIE 0x40
+#define SUGGEST_SENSE 0x80
+
+'other_flags' still remains as a 10 bit field, so code that places 0 in it
+will still be happy. It is not used.
+
+
+memory
+======
+Memory is a scarce resource in any computer. Sg needs to reserve memory
+suitable for DMA roughly equal in size to the maximum of the write and
+read data buffers for each packet. This DMA memory is obtained at the time
+of a write() and released when the corresponding read() is called (although
+if memory is tight it may be using the buffer reserved by the open() ).
+
+Linux obtaining memory a challenge for several reasons. The memory pool
+that sg uses is in common with all other device drivers and all user
+processes. In this environment the only way to 99.9% guarantee a driver
+will have memory in Linux is to build it into the kernel (ie not as a
+module) and then reserve it on initialization before user processes get
+a chance. [Of course, another driver initialized before sg could take
+all available memory ...] Another problem is the biggest contiguous
+chunk of memory that can be obtained from the kernel is 32 * PAGE_SIZE
+(which is 128KBytes on i386). As memory gets "splintered" there is a good
+chance that buffers won't be available (my machine has 64 MBytes of RAM
+and has 3 available at the moment).
+
+The original sg driver used the following technique: grab a SG_BIG_BUFF
+sized buffer at driver initialization and use it for all requests greater
+than PAGE_SIZE (4096 bytes on i386). By default SG_BIG_BUFF is set to
+32 KBytes in the origianl driver but many applications suggest that the
+user increases this number. Linux limits the biggest single buffer of
+this type to 32 * PAGE_SIZE (128KBytes on i386). Unfortunately if the
+sg driver is a module then there is a high chance a contiguous block of
+that large size will not be available at module initialization.
+
+The author has found no "silver bullet" solution but uses multiple
+techniques hoping that at least one is able provide memory at the critical
+time. Listed below are some of these techniques:
+ - use scatter gather: then instead of one large buffer needing to
+ be found, multiple smaller buffer can be used
+ - use memory above the 16MByte level: the original driver limited
+ itself to obtaining memory below the 16MByte level (on the i386)
+ due to the shortcomings of DMA on ISA adapters. Yet more and more
+ people use PCI adapters that don't have this problem. So make
+ the decision based on the capabilities of the host adpater
+ associated with the current SCSI device
+ - reserve some memory at open() for emergencies but otherwise
+ fetch and release it on a per packet basis
+ - if the kernel is short of memory then dip into the SCSI DMA
+ pool (maintained by the mid-level driver) to a limited amount
+
+
+
+System Calls
+============
+What follows are descriptions of the characteristics of the standard
+Unix operating system calls when applied to a SCSI generic device
+using this version of the device driver.
+
+open
+----
+The filename should be an 'sg' device such as
+/dev/sg[a-z]
+/dev/sg[0,1,2,...]
+or a symbolic link to one of these. [Devfs has its own sub-directory for
+sg devices.] It seems as though SCSI devices are allocated to sg minor
+numbers in the same order as they appear in 'cat /proc/scsi/scsi'.
+Sg is a "character" based Linux device driver. This means it has an
+open/close/read/write/ioctl type interface.
+
+Flags can be either O_RDONLY or O_RDWR or-ed with either
+O_EXCL waits for other opens on sg device to be closed before
+ proceeding. If O_NONBLOCK is set then yields EBUSY when
+ someone else has the sg device open. The combination of
+ O_RDONLY and O_EXCL is disallowed.
+O_NONBLOCK Sets non-blocking mode. Calls that would otherwise block
+ yield EAGAIN (eg read() ) or EBUSY (eg open() ).
+
+The original version of sg did not allow the O_RDONLY (yielding a EACCES
+error). This version allows it for accessing ioctls (e.g. doing an sg
+device scan with the SG_GET_SCSI_ID ioctl) but write()s will not be
+allowed.
+
+By default, sequencing is per file descriptor in this version of sg. This
+means, for example that 2 processes can independently manipulate the same
+sg device at the same time. This may or may not make sense depending on
+the application: 2 processes (logically) reading from the same direct access
+device (ie a disk) is ok while running 2 instances of cd writing software
+on the same device at the same time probably wouldn't be a good idea. The
+previous version of sg supported only per device sequencing and this can
+still be selected with the SG_SET_MERGE_FD,1 ioctl().
+
+The driver will attempt to reserve SG_SCATTER_SZ bytes (32KBytes in the
+current sg.h) on open() for "emergency" situations. If this is unavailable
+it will halve its request and try again. It gives up if PAGE_SIZE bytes
+(4096 bytes on i386) cannot be obtained so no memory is reserved. In this
+case open() will still return successfully. The actual amount of memory
+reserved can be found with the SG_GET_RESERVED_SIZE ioctl().
+
+Returns a file descriptor if >= 0 , otherwise -1 implies an error.
+
+Error codes (value in 'errno' after -1 returned):
+ENODEV sg not compiled into kernel or the kernel cannot find the
+ sg module (or it can't initialize itself (low memory??))
+ENXIO either scsi sub-system is currently processing some error
+ (eg doing a device reset) or the sg driver/module removed
+ or corrupted
+EBUSY O_NONBLOCK set and some user of this sg device has O_EXCL
+ set while someone is already using this device
+EINTR while waiting for an "exclusive" lock to clear, a signal
+ is received, just try again ...
+ENOMEM An attempt to get memory to store this open's context
+ failed (this was _not_ a request to reserve DMA memory)
+EACCES An attempt to use both O_RDONLY and O_EXCL
+
+
+write
+-----
+Even though sg is a character-based device driver it sends and receives
+packets to/from the associated scsi device. Write() is used to send a
+packet containing 2 mandatory parts and 1 optional part. The mandatory
+parts are:
+ - a control block (an instance of struct sg_header)
+ - a SCSI command (6, 10 or 12 bytes long)
+The optional part is:
+ - outgoing data (eg if a SCSI write command is being sent)
+These should appear as one contiguous string in the buffer given to
+write() in the above order with no pad characters.
+
+If a write() accepts this packet then at some later time the user should
+call a read() to get the result of the SCSI command. The previous sg
+driver enforced a strict write()/read()/write()/read() regime so that a
+second write() would block until first read() was finished. This sg
+driver relaxes that condition and thereby allows command queuing
+(limit is SG_MAX_QUEUE (16) outstanding packets per file descriptor).
+However, for backward compatibility, command queuing is turned off
+by default (#define SG_DEF_COMMAND_Q 0 in sg.h). This can be changed
+via the the SG_SET_COMMAND_Q ioctl() [or by recompiling after changing
+the above define to 1].
+
+In this sg driver a write() should return more or less immediately.
+
+Returns number of bytes written if > 0 , otherwise -1 implies an error.
+
+Error codes (value in 'errno' after -1 returned):
+ENXIO either scsi sub-system is currently processing some error
+ (eg doing a device reset) or the sg driver/module removed
+ or corrupted
+EACCES opened with RD_ONLY flag
+EIO incoming buffer too short. It should be at least (6 +
+ sizeof(struct sg_header))==42 bytes long
+EDOM a) command queuing off: a packet is already queued
+ b) command queuing on: too many packets queued
+ (SG_MAX_QUEUE exceeded)
+EAGAIN SCSI mid-level out of command blocks (rare), try again.
+ This is more likely to happen when queuing commands,
+ so wait a bit (eg usleep(10000) ) before trying again
+ENOMEM can't get memory for DMA. Take evasive action ...
+ (see section on memory)
+
+
+read
+----
+Read() is used to receive a packet containing 1 mandatory part and 1
+optional part. The mandatory part is:
+ - a control block (an instance of struct sg_header)
+The optional part is:
+ - incoming data (eg if a SCSI read command was sent by earlier write() )
+The buffer given to a read() and its corresponding count should be
+sufficient to accommodate this packet to avoid truncation. Truncation has
+occurred if count < sg_header::replylen .
+
+By default, read() will return the oldest packet queued up. If the
+SG_SET_FORCE_PACK_ID,1 ioctl() is active then read() will attempt to
+fetch the packet whose pack_id (given earlier to write()) matches the
+sg_header::pack_id given to this read(). If not available it will either
+wait or yield EAGAIN. As a special case, -1 in sg_header::pack_id given
+to read() will match the oldest packet.
+
+
+Returns number of bytes read if > 0 , otherwise -1 implies an error.
+Unfortunately the return value in the non-error case is simply the
+same as the count argument. It is not the actual number of bytes
+DMA-ed by the SCSI device. This driver is currently unable to provide
+such an underrun indication.
+
+Error codes (value in 'errno' after -1 returned):
+ENXIO either scsi sub-system is currently processing some error
+ (eg doing a device reset) or the sg driver/module removed
+ or corrupted
+EAGAIN either no waiting packet or requested packet is not
+ available while O_NONBLOCK flag was set
+EINTR while waiting for a packet, a signal is received, just
+ try again ...
+EIO if the 'count' given to read() is < sizeof(struct sg_header)
+ and the 'result' element in sg_header is non-zero. Not a
+ recommended error reporting technique
+
+
+close
+-----
+Preferably a close() should be done after all issued write()s have had
+their corresponding read() calls completed. Unfortunately this is not
+always possible. The semantics of close() in Unix are to return more
+or less immediately (ie not wait on any event) so the driver needs to
+arrange to an orderly cleanup of those packets that are still "in
+flight".
+
+A process that has an open file descriptor to an sg device may be aborted
+(eg by a kill signal). In this case, the kernel automatically calls close
+(which is called 'sg_release()' in the version 2 driver) to facilitate
+the cleanup mentioned above.
+
+A problem persists in version 2.1.8 if the sg driver is a module and is
+removed while packets are still "in flight". Hopefully this will be soon
+fixed.
+
+Returns 0 if successful, otherwise -1 implies an error.
+
+Error codes (value in 'errno' after -1 returned):
+ENXIO sg driver/module removed or corrupted
+
+ioctl (sg specific)
+-------------------
+Ken Thompson (or perhaps some other Unix luminary) described ioctl() as
+the "garbage bin of Unix". This driver compounds the situation by adding
+around 18 more commands. These commands either yield state information (10
+of them), change the driver's characteristics (8 of them) or allow direct
+communication with the common SCSI mid-level driver.
+
+Those commands with an appended "+" are new in version 2.
+
+Those commands with an appended "W" are only accessible from file
+descriptors opened with O_RDWR. They will yield EACCES otherwise.
+
+SG_GET_TIMEOUT:
+Ignores its 3rd argument and _returns_ the timeout value (which will be
+>= 0 ). The unit of this timeout is "jiffies" which are currently 10
+millisecond intervals on i386 (less on an alpha). Linux supplies
+a manifest constant HZ which is the number of "jiffies" in 1 second.
+
+SG_SET_TIMEOUT:
+Assumes 3rd argument points to an int containing the new timeout value
+for this file descriptor. The unit is a "jiffy". Packets that are
+already "in flight" will not be effected. The default value is set
+on open() and is SG_DEFAULT_TIMEOUT (defined in sg.h).
+
+SG_EMULATED_HOST:
+Assumes 3rd argument points to an int and outputs a flag indicating
+whether the host (adapter) is connected to a real SCSI bus or is
+emulated one (eg ide-scsi device driver). A value of 1 means emulated
+while 0 is not.
+
+SG_SET_FORCE_LOW_DMA +:
+Assumes 3rd argument points to an int containing 0 or 1. 0 (default)
+means sg decides whether to use memory above 16 Mbyte level (on i386)
+based on the host adapter being used by this SCSI device. Typically
+PCI SCSI adapters will indicate they can DMA to the whole 32 bit address
+space.
+If 1 is given then the host adapter is overridden and only memory below
+the 16MB level is used for DMA. A requirement for this should be
+extremely rare. If the "reserve" buffer allocated on open() is not in
+use then it will be de-allocated and re-allocated under the 16MB level
+(and the latter operation could fail yielding ENOMEM).
+Only the current file descriptor is effected.
+
+SG_GET_LOW_DMA +:
+Assumes 3rd argument points to an int and places 0 or 1 in it. 0
+indicates the whole 32 bit address space is being used for DMA transfers
+on this file descriptor. 1 indicates the memory below the 16MB level
+(on i386) is being used (and this may be the case because the host
+adapters setting has been overridden by SG_SET_FORCE_LOW_DMA,1 .
+
+SG_GET_SCSI_ID +:
+Assumes 3rd argument is pointing to an object of type Sg_scsi_id and
+populates it. That structure contains ints for host_no, channel,
+scsi_id, lun and scsi_type. Most of this information is available from
+other sources (eg SCSI_IOCTL_GET_IDLUN and SCSI_IOCTL_GET_BUS_NUMBER)
+but tends to be awkward to collect.
+
+SG_SET_FORCE_PACK_ID +:
+Assumes 3rd argument is pointing to an int. 0 (default) instructs read()
+to return the oldest (written) packet if multiple packets are
+waiting to be read (when command queuing is being used).
+1 instructs read() to view the sg_header::pack_id as input and return the
+oldest packet matching that pack_id or wait until it arrives (or yield
+EAGAIN if O_NONBLOCK is in force). As a special case the pack_id of -1
+given to read() in the mode will match the oldest packet.
+Only the current file descriptor is effected by this command.
+
+SG_GET_LOW_DMA +:
+Assumes 3rd argument points to an int and places the pack_id of the
+oldest (written) packet in it. If no packet is waiting to be read then
+yields -1.
+
+SG_GET_NUM_WAITING +:
+Assumes 3rd argument points to an int and places the number of packets
+waiting to be read in it.
+
+SG_GET_SG_TABLESIZE +:
+Assumes 3rd argument points to an int and places the maximum number of
+scatter gather elements supported by the host adapter. 0 indicates that
+the adapter does support scatter gather.
+
+SG_SET_RESERVED_SIZE +W:
+This is not currently implemented. It is intended for reserving either a
+large buffer or scatter gather list that will be available until the
+current file descriptor is closed. The requested amount of memory may
+not be available so SG_GET_RESERVED_SIZE should be used after this call
+to see how much was reserved. (EBUSY error possible)
+
+SG_GET_RESERVED_SIZE +:
+Assumes 3rd argument points to an int and places the size in bytes of
+the DMA buffer reserved on open() for emergencies. If this is 0 then it
+is probably not wise to attempt on operation like burning a CD on this
+file descriptor.
+
+SG_SET_MERGE_FD +W:
+Assumes 3rd argument is pointing to an int. 0 (the default) causes all
+subsequent sequencing to be per file descriptor. 1 causes all subsequent
+sequencing to be per device. If this command tries to change the current
+state and the is one or more _other_ file descriptors using this sg
+device then an EBUSY error occurs. Also if this file descriptor was not
+open()ed with the O_RDWR flag then an EACCES error occurs.
+Per device sequencing was the original semantics and allowed, for example
+different processes to "share" the device, one perhaps write()ing with
+the other one read()ing. This command is supplied if anyone needs those
+semantics. Per file descriptor sequencing, perhaps with the usage of
+the O_EXCL flag, seems more sensible.
+
+SG_GET_MERGE_FD +:
+Assumes 3rd argument points to an int and places 0 or 1 in it. 0 implies
+sequencing is per file descriptor. 1 implies sequencing is per device
+(original sg driver's semantics).
+
+SG_SET_COMMAND_Q +:
+Assumes 3rd argument is pointing to an int. 0 (current default, set by
+SG_DEF_COMMAND_Q in sg.h) disables command queuing. Attempts to write()
+a packet while one is already queued will result in a EDOM error.
+1 turns command queuing on.
+Changing the queuing state only effects write()s done after the change.
+Only the current file descriptor is effected by this command.
+
+SG_GET_COMMAND_Q +:
+Assumes 3rd argument points to an int and places 0 or 1 in it. 0 implies
+that command queuing is off on this file descriptor. 1 implies command
+queuing is on.
+
+SG_SET_DEBUG +:
+Assumes 3rd argument is pointing to an int. 0 (default) turns debugging
+off. Values > 0 cause the SCSI sense buffer to be decoded and output
+to the console/log when a SCSI device error occurs. Values > 8 cause
+the current sg device driver's state to be output to the console/log
+(this is a "one off" effect).
+If you need a _lot_ of the SCSI sub-system debug information (mainly from
+the mid-level) then try 'echo "scsi dump 0" > /proc/scsi/scsi' and lots of
+debug will appear in your console/log.
+
+ioctl (in common with sd, st + sr)
+----------------------------------
+The following ioctl()s can be called from any high-level scsi device
+driver (ie sd, st, sr + sg). Access permissions may differ a bit from
+one device to another, the access information given below is specific to
+the sg device driver.
+
+SCSI_IOCTL_GET_IDLUN:
+SCSI_IOCTL_GET_BUS_NUMBER:
+
+SCSI_IOCTL_SEND_COMMAND: W
+If open()ed O_RDONLY yields an EACCESS error. Otherwise is forwarded onto
+the SCSI mid-level driver for processing.
+Don't know much about this one but it looks pretty powerful and
+dangerous. Some comments says it is also deprecated.
+
+: W
+If open()ed O_RDONLY yields an EACCESS error. Otherwise is forwarded onto
+the SCSI mid-level driver for processing.
+
+
+poll
+----
+This is a native call in Linux 2.2 but most of its capabilities are available
+through the older select() call. Given a choice poll() should probably be
+used. Typically poll() is used when a sg scsi device is open()ed O_NONBLOCK
+for polling; or alternatively with asynchronous notification using the
+fcntl() system call (below) and the SIGPOLL (aka SIGIO) signal.
+Only if something drastically is wrong (eg file handle gone stale) will
+POLLERR ever be set. POLLPRI, POLLHUP and POLLNVAL are never set.
+POLLIN is set when there is one or more packets waiting to be read.
+When POLLIN is set it implies that a read() will not block (or yield
+EAGAIN in non-blocking mode) but return a packet immediately.
+POLLOUT (aka POLLWRNORM) is set when write() is able to accept a packet
+(ie will _not_ yield an EDOM error). The setting of POLLOUT is effected
+by the SG_SET_COMMAND_Q state: if the state is on then POLLOUT will remain
+set until the number of queued packets reaches SG_MAX_QUEUE, if the
+state is off then POLLOUT is only set when no packets are queued.
+Note that a packet can be queued after write()ing but not available to be
+read(); this typically happens when a SCSI read command is issued while
+the data is being retreaved.
+Poll() is per file descriptor unless SG_SET_MERGE_FD is set in which case
+it is per device.
+
+
+fcntl
+-----
+There are several uses for this system call in association with a sg
+file descriptor. The first pseudo code shows code that is useful for
+scanning the sg devices, taking care not to be caught in a wait for
+an O_EXCL lock by another process, and when the appropriate device is
+found switching to normal blocked io. A working example of this logic
+is in the sg_scan.c utility program.
+
+open("/dev/sga", O_RDONLY | O_NONBLOCK)
+/* check device, EBUSY means some other process has O_EXCL lock on it */
+/* one the device you want is found then ... */
+flags = fcntl(sg_fd, F_GETFL)
+fcntl(sg_fd, F_SETFL, flags & (~ O_NONBLOCK))
+/* for simple apps is is easier to use normal blocked io */
+
+
+Some work has to be done in Linux to set up for asynchronous notification.
+This is a non-blocking mode of operation in which when the driver receives
+data back from a device so that a read() can be done, it sends a SIGPOLL
+(aka SIGIO) signal to the owning process. A working example of this logic
+is in the sg_poll.c test program.
+
+sigemptyset(&sig_set)
+sigaddset(&sig_set, SIGPOLL)
+sigaction(SIGPOLL, &s_action, 0)
+fcntl(sg_fd, F_SETOWN, getpid())
+flags = fcntl(sg_fd, F_GETFL);
+fcntl(sg_fd, F_SETFL, flags | O_ASYNC)
+
+
+Utility and Test Programs
+=========================
diff -ur --new-file old/linux/Documentation/sound/AD1816 new/linux/Documentation/sound/AD1816
--- old/linux/Documentation/sound/AD1816 Wed Dec 16 21:52:00 1998
+++ new/linux/Documentation/sound/AD1816 Mon May 10 22:00:10 1999
@@ -70,7 +70,16 @@
- Acer FX-3D
- SY-1816
- Highscreen Sound-Boostar 32 Wave 3D
-- ...
+- Highscreen Sound-Boostar 16
+- AVM Apex Pro card
+- (Aztech SC-16 3D)
+- (Newcom SC-16 3D)
+- (Terratec EWS64S)
+
+Cards listed in brackets are not supported reliable. If you have such a card
+you should add the extra parameter:
+ options=1
+when loading the ad1816 module via modprobe.
Troubleshooting:
@@ -105,7 +114,7 @@
As the driver is still experimental and under development, you should
watch out for updates. Updates of the driver are available on the
-internet from one of my home pages:
+Internet from one of my home pages:
http://www.student.informatik.tu-darmstadt.de/~tek/projects/linux.html
or:
http://www.tu-darmstadt.de/~tek01/projects/linux.html
@@ -115,4 +124,4 @@
Thorsten Knabe
- Last modified: 1998/11/06
+ Last modified: 1999/05/02
diff -ur --new-file old/linux/Documentation/sound/AWE32 new/linux/Documentation/sound/AWE32
--- old/linux/Documentation/sound/AWE32 Mon Jan 4 21:01:19 1999
+++ new/linux/Documentation/sound/AWE32 Thu Apr 29 20:53:41 1999
@@ -53,7 +53,7 @@
(IO 2 (BASE 0x0E20)) (ACT Y) ))"
Resources 0x0620, 0x0A20 and 0x0E20 should work. Other on-board devices:
-Gameport and StereoEnhance are not required to be inited.
+Gameport and StereoEnhance are not required to be initialized.
Now you can execute "isapnp /etc/isapnp.conf". No errors should be reported.
If you correctly installed isapnptools, then isapnp will run every boot time.
diff -ur --new-file old/linux/Documentation/sound/AudioExcelDSP16 new/linux/Documentation/sound/AudioExcelDSP16
--- old/linux/Documentation/sound/AudioExcelDSP16 Thu Jan 7 17:41:55 1999
+++ new/linux/Documentation/sound/AudioExcelDSP16 Thu Apr 29 20:53:41 1999
@@ -80,7 +80,7 @@
2) Install your new kernel as the default boot kernel.
3) Boot MS-DOS and configure the audio card with the boot time device
driver, for MSS irq10 dma3 in our example.
-4) -- and boot Linux. This will mantain the DOS configuration
+4) -- and boot Linux. This will maintain the DOS configuration
and will boot the new kernel with sound driver. The sound driver will find
the audio card and will recognize and attach it.
diff -ur --new-file old/linux/Documentation/sound/CMI8330 new/linux/Documentation/sound/CMI8330
--- old/linux/Documentation/sound/CMI8330 Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/sound/CMI8330 Mon Mar 8 00:22:06 1999
@@ -0,0 +1,86 @@
+How to enable CMI 8330 soundchip on Linux
+------------------------------------------
+Stefan Laudat
+
+Hello folks,
+
+ The CMI8330 soundchip is a very small chip found on many recent
+ motherboards. In order to use it you just have to use a proper
+ isapnp.conf and a little bit of patience.
+
+ Of course you will have to compile kernel sound support as module,
+ as shown below:
+
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS=m
+CONFIG_SOUND_SB=m
+CONFIG_SOUND_ADLIB=m
+CONFIG_SOUND_MPU401=m
+# Just for fun :)
+CONFIG_SOUND_MSS=m
+
+ The /etc/isapnp.conf file will be:
+
+
+
+(READPORT 0x0203)
+(ISOLATE PRESERVE)
+(IDENTIFY *)
+(VERBOSITY 2)
+(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
+(VERIFYLD N)
+# WSS
+
+(CONFIGURE CMI0001/16777472 (LD 0
+(IO 0 (SIZE 8) (BASE 0x0530))
+(IO 1 (SIZE 8) (BASE 0x0388))
+(INT 0 (IRQ 5 (MODE +E)))
+(DMA 0 (CHANNEL 0))
+(NAME "CMI0001/16777472[0]{CMI8330/C3D Audio Adapter}")
+(ACT Y)
+))
+
+# Control device ?
+
+(CONFIGURE CMI0001/16777472 (LD 1
+(IO 0 (SIZE 2) (BASE 0x0330))
+(INT 0 (IRQ 11 (MODE +E)))
+(NAME "CMI0001/16777472[1]{CMI8330/C3D Audio Adapter}")
+(ACT Y)
+))
+
+# Joystick
+
+(CONFIGURE CMI0001/16777472 (LD 2
+(IO 0 (SIZE 8) (BASE 0x0200))
+(NAME "CMI0001/16777472[2]{CMI8330/C3D Audio Adapter}")
+(ACT Y)
+))
+
+# SB...
+(CONFIGURE CMI0001/16777472 (LD 3
+(IO 0 (SIZE 16) (BASE 0x0220))
+(INT 0 (IRQ 7 (MODE +E)))
+(DMA 0 (CHANNEL 1))
+(DMA 1 (CHANNEL 5))
+(NAME "CMI0001/16777472[3]{CMI8330/C3D Audio Adapter}")
+(ACT Y)
+))
+
+
+(WAITFORKEY)
+
+
+
+ The module sequence is trivial:
+
+/sbin/modprobe sound
+# You need to load the ad1848 module first. That matters, otherwise the
+# chip falls into soundblaster compatibility and you won't get it back out
+/sbin/insmod ad1848 io=0x530 dma=0 irq=5 soundpro=1
+/sbin/insmod uart401
+/sbin/insmod sb io=0x220 irq=5 dma=1 dma16=-1
+/sbin/insmod mpu401 io=0x330
+/sbin/insmod opl3 io=0x388
+
+ The soundchip is now fully initialized. Enjoy it.
diff -ur --new-file old/linux/Documentation/sound/ChangeLog.awe new/linux/Documentation/sound/ChangeLog.awe
--- old/linux/Documentation/sound/ChangeLog.awe Wed Dec 16 21:52:00 1998
+++ new/linux/Documentation/sound/ChangeLog.awe Thu Apr 29 20:53:41 1999
@@ -81,7 +81,7 @@
ver.0.3.3b
- Fix version number in awe_version.h
- - Fix a small bug in noteoff/relese all
+ - Fix a small bug in noteoff/release all
ver.0.3.3a
- Fix all notes/sounds off
diff -ur --new-file old/linux/Documentation/sound/ESS new/linux/Documentation/sound/ESS
--- old/linux/Documentation/sound/ESS Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/sound/ESS Mon Feb 1 23:04:39 1999
@@ -0,0 +1,33 @@
+Documentation for the ESS AudioDrive chips
+
+In 2.2 kernels the SoundBlaster driver not only tries to detect an ESS chip, it
+tries to detect the type of ESS chip too. The correct detection of the chip
+doesn't always succeed however, so the default behaviour is 2.0 behaviour
+which means: only detect ES688 and ES1688.
+
+All ESS chips now have a recording level setting. This is a need-to-have for
+people who want to use their ESS for recording sound.
+
+Every chip that's detected as a later-than-es1688 chip has a 6 bits logarithmic
+master volume control.
+
+Every chip that's detected as a ES1887 now has Full Duplex support. Made a
+little testprogram that showes that is works, haven't seen a real program that
+needs this however.
+
+For ESS chips an additional parameter "esstype" can be specified. This controls
+the (auto) detection of the ESS chips. It can have 3 kinds of values:
+
+-1 Act like 2.0 kernels: only detect ES688 or ES1688.
+0 Try to auto-detect the chip (may fail for ES1688)
+688 The chip will be treated as ES688
+1688 ,, ,, ,, ,, ,, ,, ES1688
+1868 ,, ,, ,, ,, ,, ,, ES1868
+1869 ,, ,, ,, ,, ,, ,, ES1869
+1788 ,, ,, ,, ,, ,, ,, ES1788
+1887 ,, ,, ,, ,, ,, ,, ES1887
+1888 ,, ,, ,, ,, ,, ,, ES1888
+
+Because Full Duplex is supported for ES1887 you can specify a second DMA
+channel by specifying module parameter dma16. It can be one of: 0, 1, 3 or 5.
+
diff -ur --new-file old/linux/Documentation/sound/INSTALL.awe new/linux/Documentation/sound/INSTALL.awe
--- old/linux/Documentation/sound/INSTALL.awe Wed Dec 16 21:52:00 1998
+++ new/linux/Documentation/sound/INSTALL.awe Thu Apr 29 20:53:41 1999
@@ -17,7 +17,7 @@
http://www-jcr.lmh.ox.ac.uk/~pnp/
----------------------------------------------------------------
-* Installation on RedHat 5.0 Sound Driver
+* Installation on Red Hat 5.0 Sound Driver
Please use install-rh.sh under RedHat5.0 directory.
DO NOT USE install.sh below.
@@ -31,7 +31,7 @@
% su
2. If you have never configured the kernel tree yet, run make config
- once (to make depencies and symlinks).
+ once (to make dependencies and symlinks).
# cd /usr/src/linux
# make xconfig
@@ -40,7 +40,7 @@
# sh ./install.sh
- 4. Configure your kenrel
+ 4. Configure your kernel
(for Linux 2.[01].x user)
# cd /usr/src/linux
@@ -77,7 +77,7 @@
do it by isapnp tools. Otherwise, skip to 8.
This section described only a brief explanation. For more
- detaills, please see AWE64-Mini-HOWTO or isapnp tools FAQ.
+ details, please see the AWE64-Mini-HOWTO or isapnp tools FAQ.
7a. If you have no isapnp.conf file, generate it by pnpdump.
Otherwise, skip to 7d.
diff -ur --new-file old/linux/Documentation/sound/Introduction new/linux/Documentation/sound/Introduction
--- old/linux/Documentation/sound/Introduction Wed Dec 16 21:52:00 1998
+++ new/linux/Documentation/sound/Introduction Thu Apr 29 20:53:41 1999
@@ -214,7 +214,7 @@
3) In /etc/conf.modules when using modprobe.
-4) Via RedHat's /usr/sbin/sndconfig program (text based).
+4) Via Red Hat's /usr/sbin/sndconfig program (text based).
5) Via the OSS soundconf program (with the commercial version
of the OSS driver.
@@ -240,7 +240,7 @@
6) The comments and code in linux/drivers/sound.
-7) The sndconfig and rhsound documentation from RedHat.
+7) The sndconfig and rhsound documentation from Red Hat.
8) The Linux-sound mailing list: sound-list@redhat.com
diff -ur --new-file old/linux/Documentation/sound/MAD16 new/linux/Documentation/sound/MAD16
--- old/linux/Documentation/sound/MAD16 Thu Apr 9 00:34:23 1998
+++ new/linux/Documentation/sound/MAD16 Thu Apr 29 20:53:41 1999
@@ -23,3 +23,12 @@
alias char-major-14 mad16
options sb mad16=1
options mad16 io=0x530 irq=7 dma=0 dma16=1 && /usr/local/bin/aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0
+
+
+To get the built in mixer to work this needs to be:
+
+options adlib_card io=0x388 # FM synthesizer
+options sb mad16=1
+options mad16 io=0x530 irq=7 dma=0 dma16=1 mpu_io=816 mpu_irq=5 && /usr/local/bin/aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0
+
+The addition of the "mpu_io=816 mpu_irq=5" to the mad16 options line is
diff -ur --new-file old/linux/Documentation/sound/OPL3-SA new/linux/Documentation/sound/OPL3-SA
--- old/linux/Documentation/sound/OPL3-SA Sun Aug 9 21:15:49 1998
+++ new/linux/Documentation/sound/OPL3-SA Thu Apr 29 20:53:41 1999
@@ -2,8 +2,7 @@
---
Note: This howto only describes how to setup the OPL3-SA1 chip; this info
-does not apply to the SA2, SA3, or SA4. Contact hannu@opensound.com for
-the support details of these other SAx chips.
+does not apply to the SA2, SA3, or SA4.
---
The Yamaha OPL3-SA1 sound chip is usually found built into motherboards, and
@@ -16,7 +15,7 @@
You'll need to know all of the relevant info (irq, dma, and io port) for the
chip's WSS mode, since that is the mode the kernel sound driver uses, and of
course you'll also need to know about where the MPU401 and OPL3 ports and
-irq's are if you want to use those.
+IRQs are if you want to use those.
Here's the skinny on how to load it as a module:
@@ -25,14 +24,14 @@
Module options in detail:
io: This is the WSS's port base.
- irq: This is the WSS's irq.
- dma: This is the WSS's dma line. In my BIOS setup screen this was
+ irq: This is the WSS's IRQ.
+ dma: This is the WSS's DMA line. In my BIOS setup screen this was
listed as "WSS Play DMA"
- dma2: This is the WSS's secondary dma line. My BIOS calls it the
+ dma2: This is the WSS's secondary DMA line. My BIOS calls it the
"WSS capture DMA"
mpu_io: This is the MPU401's port base.
- mpu_irq: This is the MPU401's irq.
+ mpu_irq: This is the MPU401's IRQ.
If you'd like to use the OPL3 FM Synthesizer, make sure you enable
CONFIG_YM3812 (in 'make config'). That'll build the opl3.o module.
@@ -44,7 +43,7 @@
Say 'y' or 'm' to "SoftOSS software wave table engine" in make config.
-If you said yes, the software synth is availible once you boot your new
+If you said yes, the software synth is available once you boot your new
kernel.
If you chose to build it as a module, just insmod the resulting softoss2.o
diff -ur --new-file old/linux/Documentation/sound/PCM1-pro new/linux/Documentation/sound/PCM1-pro
--- old/linux/Documentation/sound/PCM1-pro Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/sound/PCM1-pro Tue Apr 13 01:18:27 1999
@@ -0,0 +1,17 @@
+In Documentation/sound/README.OSS was a remark saying noone was sure the
+mixer on the PCM1-pro worked with the ACI driver. Well, it does.
+I've been using the drivers for the MAD16 and the driver for the mixer
+since kernel 2.0.32 with a MiroSound PCM1-pro and it works great.
+
+I've got it working with the following configuration:
+
+MAD16 audio I/O base = 530
+MAD16 audio IRQ = 7
+MAD16 Audio DMA = 1
+MAD16 MIDI I/O = 330
+MAD16 MIDI IRQ = 9
+
+And I've enabled the ACI mixer (miro PCM12) .
+
+
+Bas van der Linden.
diff -ur --new-file old/linux/Documentation/sound/README.OSS new/linux/Documentation/sound/README.OSS
--- old/linux/Documentation/sound/README.OSS Mon Jan 18 03:23:01 1999
+++ new/linux/Documentation/sound/README.OSS Thu Apr 29 20:53:41 1999
@@ -58,7 +58,7 @@
Mika Liljeberg uLaw encoding and decoding routines
Jeff Tranter Linux SOUND HOWTO document
Greg Lee Volume computation algorithm for the GUS and
- lot's of valuable suggestions.
+ lots of valuable suggestions.
Andy Warner ISC port
Jim Lowe,
Amancio Hasty Jr FreeBSD/NetBSD port
@@ -96,7 +96,7 @@
or before even starting to do any work. Tell me what you suggest to be
changed or what you have planned to do. Also ensure you are using the
very latest (development) version of OSS/Free since the change may already be
-implemented there. In general it's major waste of time to try to improve
+implemented there. In general it's a major waste of time to try to improve a
several months old version. Information about the latest version can be found
from http://www.opensound.com/ossfree. In general there is no point in
sending me patches relative to production kernels.
@@ -1314,8 +1314,8 @@
This ESS proprietary feature is supported only by OSS/Linux.
There are ES1688 based cards which use different interrupt pin assignment than
-recommended by ESS (5, 7, 9/2 and 10). In this case all IRQ's don't work.
-At least a card called (Pearl?) Hypersound 16 supports IRQ15 but it doesn't
+recommended by ESS (5, 7, 9/2 and 10). In this case all IRQs don't work.
+At least a card called (Pearl?) Hypersound 16 supports IRQ 15 but it doesn't
work.
ES1868 is a PnP chip which is (supposed to be) compatible with ESS1688
diff -ur --new-file old/linux/Documentation/sound/README.awe new/linux/Documentation/sound/README.awe
--- old/linux/Documentation/sound/README.awe Wed Dec 16 21:52:00 1998
+++ new/linux/Documentation/sound/README.awe Thu Apr 29 20:53:41 1999
@@ -9,8 +9,8 @@
This is a sound driver extension for SoundBlaster AWE32 and other
compatible cards (AWE32-PnP, SB32, SB32-PnP, AWE64 & etc) to enable
-the wave synth operations. The driver is provided for both Linux
-1.2.x and 2.[01].x kernels, and also FreeBSD, on Intel x86 and DEC
+the wave synth operations. The driver is provided for Linux 1.2.x
+and 2.[012].x kernels, as well as FreeBSD, on Intel x86 and DEC
Alpha systems.
This driver was written by Takashi Iwai ,
@@ -76,7 +76,7 @@
% sfxload synthgm
% drvmidi -L 2mbgmgs foo.mid
-This makes a big differece (believe me)! For more details, please
+This makes a big difference (believe me)! For more details, please
refer to the FAQ list which is available on the URL above.
The current chorus, reverb and equalizer status can be changed by
@@ -97,14 +97,14 @@
shell script.
- AWE_MODULE_SUPPORT
- indicates your linux kernel supports module for each soundcard
- (in recent 2.1 kernels and unofficial patched 2.0 kernels as
- distributed in the RH5.0 package).
+ indicates your Linux kernel supports module for each sound card
+ (in recent 2.1 or 2.2 kernels and unofficial patched 2.0 kernels
+ as distributed in the RH5.0 package).
This flag is automatically set when you're using 2.1.x kernels.
You can pass the base address and memory size via the following
module options,
io = base I/O port address (eg. 0x620)
- memsize = DRAM size in Kbyes (eg. 512)
+ memsize = DRAM size in kilobytes (eg. 512)
As default, AWE driver probes these values automatically.
@@ -117,15 +117,15 @@
0 means to autodetect the address.
- AWE_DEFAULT_MEM_SIZE (default: not defined)
- specifies the memory size of your AWE32 card in kilo bytes.
+ specifies the memory size of your AWE32 card in kilobytes.
-1 means to autodetect its size.
[Sample Table Size]
From ver.0.4.0, sample tables are allocated dynamically (except
Linux-1.2.x system), so you need NOT to touch these parameters.
-Linux-1.2.x users may need to increase these values to apropriate size
-if larger DRAM is equipped with the soundcard.
+Linux-1.2.x users may need to increase these values to appropriate size
+if the sound card is equipped with more DRAM.
- AWE_MAX_SF_LISTS, AWE_MAX_SAMPLES, AWE_MAX_INFOS
@@ -139,7 +139,7 @@
passthrough channels.
- AWE_DEBUG_ON (default: defined)
- turns on debuggin messages if defined.
+ turns on debugging messages if defined.
- AWE_HAS_GUS_COMPATIBILITY (default: defined)
Enables GUS compatibility mode if defined, reading GUS patches and
@@ -170,7 +170,7 @@
- AWE_ALLOW_SAMPLE_SHARING (default: defined)
Allow sample sharing for differently loaded patches.
This function is available only together with awesfx-0.4.3p3.
- Note that this is still an experimantal option.
+ Note that this is still an experimental option.
- DEF_FM_CHORUS_DEPTH (default: 0x10)
The default strength to be sent to the chorus effect engine.
@@ -183,8 +183,8 @@
* ACKNOWLEDGMENTS
-Thanks to Witold Jachimczyk (witek@xfactor.wpi.edu) for many advices
-to programming of AWE32. Many codes are brought from his AWE32-native
+Thanks to Witold Jachimczyk (witek@xfactor.wpi.edu) for much advice
+on programming of AWE32. Much code is brought from his AWE32-native
MOD player, ALMP.
The port of awedrv to FreeBSD is done by Randall Hopper
(rhh@ct.picker.com).
diff -ur --new-file old/linux/Documentation/sound/VIBRA16 new/linux/Documentation/sound/VIBRA16
--- old/linux/Documentation/sound/VIBRA16 Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/sound/VIBRA16 Mon Mar 8 00:22:06 1999
@@ -0,0 +1,80 @@
+Sound Blaster 16X Vibra addendum
+--------------------------------
+by Marius Ilioaea
+ Stefan Laudat
+
+Sat Mar 6 23:55:27 EET 1999
+
+ Hello again,
+
+ Playing with a SB Vibra 16x soundcard we found it very difficult
+to setup because the kernel reported a lot of DMA errors and wouldn't
+simply play any sound.
+ A good starting point is that the vibra16x chip full-duplex facility
+is neither still exploited by the sb driver found in the linux kernel
+(tried it with a 2.2.2-ac7), nor in the commercial OSS package (it reports
+it as half-duplex soundcard). Oh, I almost forgot, the RedHat sndconfig
+failed detecting it ;)
+ So, the big problem still remains, because the sb module wants a
+8-bit and a 16-bit dma, which we could not allocate for vibra... it supports
+only two 8-bit dma channels, the second one will be passed to the module
+as a 16 bit channel, the kernel will yield about that but everything will
+be okay, trust us.
+ The only inconvenient you may find is that you will have
+some sound playing jitters if you have HDD dma support enabled - but this
+will happen with almost all soundcards...
+
+ A fully working isapnp.conf is just here:
+
+
+
+(READPORT 0x0203)
+(ISOLATE PRESERVE)
+(IDENTIFY *)
+(VERBOSITY 2)
+(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
+# SB 16 and OPL3 devices
+(CONFIGURE CTL00f0/-1 (LD 0
+(INT 0 (IRQ 5 (MODE +E)))
+(DMA 0 (CHANNEL 1))
+(DMA 1 (CHANNEL 3))
+(IO 0 (SIZE 16) (BASE 0x0220))
+(IO 2 (SIZE 4) (BASE 0x0388))
+(NAME "CTL00f0/-1[0]{Audio }")
+(ACT Y)
+))
+
+# Joystick device - only if you need it :-/
+
+(CONFIGURE CTL00f0/-1 (LD 1
+(IO 0 (SIZE 1) (BASE 0x0200))
+(NAME "CTL00f0/-1[1]{Game }")
+(ACT Y)
+))
+(WAITFORKEY)
+
+
+
+ So, after a good kernel modules compilation and a 'depmod -a kernel_ver'
+you may want to:
+
+modprobe sb io=0x220 irq=5 dma=1 dma16=3
+
+ Or, take the hard way:
+
+insmod souncore
+insmod sound
+insmod uart401
+insmod sb io=0x220 irq=5 dma=1 dma16=3
+# do you need MIDI?
+insmod opl3=0x388
+
+ Just in case, the kernel sound support should be:
+
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS=m
+CONFIG_SOUND_SB=m
+
+ Enjoy your new noisy Linux box! ;)
+
+
diff -ur --new-file old/linux/Documentation/sound/Wavefront new/linux/Documentation/sound/Wavefront
--- old/linux/Documentation/sound/Wavefront Fri Sep 11 01:37:25 1998
+++ new/linux/Documentation/sound/Wavefront Thu Apr 29 20:53:41 1999
@@ -149,7 +149,7 @@
.
.
.
- make modules_isntall
+ make modules_install
Here's my autoconf.h SOUND section:
diff -ur --new-file old/linux/Documentation/sound/mwave new/linux/Documentation/sound/mwave
--- old/linux/Documentation/sound/mwave Fri Jul 10 23:03:35 1998
+++ new/linux/Documentation/sound/mwave Tue Apr 13 01:18:27 1999
@@ -1,14 +1,8 @@
How to try to survive an IBM Mwave under Linux SB drivers
-* IBM refuses to provide documentation. If anyone can ever find out what
- MWD50430.EXE actually does to load firmware then this comedy could go
- away.
-
-* If you'd like to ask IBM why they don't release Mwave information.
- phone IBM (425-556-8822) and ask them why they still haven't
- released any documentation.
- [http://204.200.238.31/cgi-bin/link.pl?co=i&cl=/ts/ibm/contact.html]
++ IBM have now released documentation of sorts and Torsten is busy
+ trying to make the Mwave work. This is not however a trivial task.
----------------------------------------------------------------------------
diff -ur --new-file old/linux/Documentation/stallion.txt new/linux/Documentation/stallion.txt
--- old/linux/Documentation/stallion.txt Fri Oct 23 17:26:03 1998
+++ new/linux/Documentation/stallion.txt Sun Mar 28 19:02:27 1999
@@ -2,10 +2,10 @@
Stallion Multiport Serial Driver Readme
---------------------------------------
-Copyright (C) 1994-1998, Stallion Technologies (support@stallion.com).
+Copyright (C) 1994-1999, Stallion Technologies (support@stallion.com).
-Version: 5.4.7
-Date: 23OCT98
+Version: 5.5.1
+Date: 28MAR99
@@ -15,28 +15,28 @@
multiport serial boards. One is for the Stallion smart boards - that is
EasyIO, EasyConnection 8/32 and EasyConnection 8/64-PCI, the other for
the true Stallion intelligent multiport boards - EasyConnection 8/64
-(ISA and EISA), ONboard and Brumby.
+(ISA, EISA, MCA), EasyConnection/RA-PCI, ONboard and Brumby.
If you are using any of the Stallion intelligent multiport boards (Brumby,
-ONboard, EasyConnection 8/64 (ISA or EISA)) with Linux you will need to
-get the driver utility package. This package is available at most of the
-Linux archive sites (and on CD-ROMs that contain these archives). The file
-will be called stallion-X.X.X.tar.gz where X.X.X will be the version
-number. In particular this package contains the board embedded executable
-images that are required for these boards. It also contains the downloader
-program. These boards cannot be used without this.
+ONboard, EasyConnection 8/64 (ISA, EISA, MCA), EasyConnection/RA-PCI) with
+Linux you will need to get the driver utility package. This package is
+available at most of the Linux archive sites (and on CD-ROMs that contain
+these archives). The file will be called stallion-X.X.X.tar.gz where X.X.X
+will be the version number. In particular this package contains the board
+embedded executable images that are required for these boards. It also
+contains the downloader program. These boards cannot be used without this.
The Stallion Technologies ftp site, ftp.stallion.com, will always have
the latest version of the driver utility package. Other sites that usually
have the latest version are tsx-11.mit.edu, sunsite.unc.edu and their
mirrors.
-ftp.stallion.com:/drivers/ata5/Linux/v544.tar.gz
-tsx-11.mit.edu:/pub/linux/packages/stallion/stallion-5.4.4.tar.gz
-sunsite.unc.edu:/pub/Linux/kernel/patches/serial/stallion-5.4.4.tar.gz
+ftp.stallion.com:/drivers/ata5/Linux/v550.tar.gz
+tsx-11.mit.edu:/pub/linux/packages/stallion/stallion-5.5.0.tar.gz
+sunsite.unc.edu:/pub/Linux/kernel/patches/serial/stallion-5.5.0.tar.gz
As of the printing of this document the latest version of the driver
-utility package is 5.4.4. If a later version is now available then you
+utility package is 5.5.0. If a later version is now available then you
should use the latest version.
If you are using the EasyIO, EasyConnection 8/32 or EasyConnection 8/64-PCI
@@ -44,7 +44,7 @@
script to create the /dev device nodes for these boards, and a serial stats
display program.
-If you require DIP switch settings, EISA/MCA configuration files, or any
+If you require DIP switch settings, EISA or MCA configuration files, or any
other information related to Stallion boards then have a look at Stallion's
web pages at http://www.stallion.com.
@@ -55,12 +55,101 @@
The drivers can be used as loadable modules or compiled into the kernel.
You can choose which when doing a "config" on the kernel.
-All ISA, EISA and MCA boards that you want to use need to be entered into
-the driver(s) configuration structures. All PCI boards will be automatically
-detected when you load the driver - so they do not need to be entered into
-the driver(s) configuration structure. (Note that kernel PCI BIOS32 support
-is required to use PCI boards.)
+All ISA, EISA and MCA boards that you want to use need to be configured into
+the driver(s). All PCI boards will be automatically detected when you load
+the driver - so they do not need to be entered into the driver(s)
+configuration structure. Note that kernel PCI support is required to use PCI
+boards.
+There are two methods of configuring ISA, EISA and MCA boards into the drivers.
+If using the driver as a loadable module then the simplist method is to pass
+the driver configuration as module arguments. The other method is to modify
+the driver source to add configuration lines for each board in use.
+
+If you have pre-built Stallion driver modules then the module argument
+configuration method should be used. A lot of Linux distributions come with
+pre-built driver modules in /lib/modules/X.Y.Z/misc for the kernel in use.
+That makes things pretty simple to get going.
+
+
+2.1 MODULE DRIVER CONFIGURATION:
+
+The simplest configuration for modules is to use the module load arguments
+to configure any ISA, EISA or MCA boards. PCI boards are automatically
+detected, so do not need any additional configuration at all.
+
+If using EasyIO, EasyConnection 8/32 ISA or MCA, or EasyConnection 8/63-PCI
+boards then use the "stallion" driver module, Otherwise if you are using
+an EasyConnection 8/64 ISA, EISA or MCA, EasyConnection/RA-PCI, ONboard,
+Brumby or original Stallion board then use the "istallion" driver module.
+
+Typically to load up the smart board driver use:
+
+ insmod stallion.o
+
+This will load the EasyIO and EasyConnection 8/32 driver. It will output a
+message to say that it loaded and print the driver version number. It will
+also print out whether it found the configured boards or not. These messages
+may not appear on the console, but typically are always logged to
+/var/adm/messages or /var/log/syslog files - depending on how the klogd and
+syslogd daemons are setup on your system.
+
+To load the intelligent board driver use:
+
+ insmod istallion.o
+
+It will output similar messages to the smart board driver.
+
+If not using an auto-detectable board type (that is a PCI board) then you
+will also need to supply command line arguments to the "insmod" command
+when loading the driver. The general form of the configuration argument is
+
+ board?=[,[,][,]]
+
+where:
+
+ board? -- specifies the arbitary board number of this board,
+ can be in the range 0 to 3.
+
+ name -- textual name of this board. The board name is the comman
+ board name, or any "shortened" version of that. The board
+ type number may also be used here.
+
+ ioaddr -- specifies the I/O address of this board. This argument is
+ optional, but should generally be specified.
+
+ addr -- optional second address argument. Some board types require
+ a second I/O address, some require a memory address. The
+ exact meaning of this argument depends on the board type.
+
+ irq -- optional IRQ line used by this board.
+
+Up to 4 board configuration arguments can be specified on the load line.
+Here is some examples:
+
+ insmod stallion.o board0=easyio,0x2a0,5
+
+This configures an EasyIO board as board 0 at I/O address 0x2a0 and IRQ 5.
+
+ insmod istallion.o board3=ec8/64,0x2c0,0xcc000
+
+This configures an EasyConnection 8/64 ISA as board 3 at I/O address 0x2c0 at
+memory address 0xcc000.
+
+ insmod stallion.o board1=ec8/32-at,0x2a0,0x280,10
+
+This configures an EasyConnection 8/32 ISA board at primary I/O address 0x2a0,
+secondary address 0x280 and IRQ 10.
+
+You will probably want to enter this module load and configuration information
+into your system startup scripts so that the drivers are loaded and configured
+on each system boot. Typically the start up script would be something line
+/etc/rc.d/rc.modules.
+
+
+2.2 STATIC DRIVER CONFIGURATION:
+
+For static driver configuration you need to modify the driver source code.
Entering ISA, EISA and MCA boards into the driver(s) configuration structure
involves editing the driver(s) source file. It's pretty easy if you follow
the instructions below. Both drivers can support up to 4 boards. The smart
@@ -96,14 +185,16 @@
driver will emit some kernel trace messages about whether the configured
boards were detected or not. Depending on how your system logger is set
up these may come out on the console, or just be logged to
-/var/adm/messages. You should check the messages to confirm that all is well.
+/var/adm/messages or /var/log/syslog. You should check the messages to
+confirm that all is well.
-2.1 SHARING INTERRUPTS
+2.3 SHARING INTERRUPTS
It is possible to share interrupts between multiple EasyIO and
-EasyConnection 8/32 boards in an EISA system. To do this you will need to
-do a couple of things:
+EasyConnection 8/32 boards in an EISA system. To do this you must be using
+static driver configuration, modifying the driver source code to add driver
+configuration. Then a couple of extra things are required:
1. When entering the board resources into the stallion.c file you need to
mark the boards as using level triggered interrupts. Do this by replacing
@@ -130,7 +221,7 @@
sharing interrupts.
-2.2 USING HIGH SHARED MEMORY
+2.4 USING HIGH SHARED MEMORY
The EasyConnection 8/64-EI, ONboard and Stallion boards are capable of
using shared memory addresses above the usual 640K - 1Mb range. The ONboard
@@ -145,16 +236,18 @@
-2.3 TROUBLE SHOOTING
+2.5 TROUBLE SHOOTING
If a board is not found by the driver but is actually in the system then the
-most likely problem is that the I/O address is wrong. Change it in the driver
-stallion.c or istallion.c configuration structure and rebuild the kernel or
-modules, or change it on the board. On EasyIO and EasyConnection 8/32 boards
-the IRQ is software programmable, so if there is a conflict you may need to
-change the IRQ used for a board in the stallion.c configuration structure.
-There are no interrupts to worry about for ONboard, Brumby or EasyConnection
-8/64 (ISA, EISA and MCA) boards. The memory region on EasyConnection 8/64 and
+most likely problem is that the I/O address is wrong. Change the module load
+argument for the loadable module form. Or change it in the driver stallion.c
+or istallion.c configuration structure and rebuild the kernel or modules, or
+change it on the board.
+
+On EasyIO and EasyConnection 8/32 boards the IRQ is software programmable, so
+if there is a conflict you may need to change the IRQ used for a board. There
+are no interrupts to worry about for ONboard, Brumby or EasyConnection 8/64
+(ISA, EISA and MCA) boards. The memory region on EasyConnection 8/64 and
ONboard boards is software programmable, but not on the Brumby boards.
@@ -167,9 +260,13 @@
to them. This is done via a user level application supplied in the driver
utility package called "stlload". Compile this program wherever you dropped
the package files, by typing "make". In its simplest form you can then type
+
./stlload -i cdk.sys
+
in this directory and that will download board 0 (assuming board 0 is an
-EasyConnection 8/64 board). To download to an ONboard, Brumby or Stallion do:
+EasyConnection 8/64 or EasyConnection/RA board). To download to an
+ONboard, Brumby or Stallion do:
+
./stlload -i 2681.sys
Normally you would want all boards to be downloaded as part of the standard
@@ -182,6 +279,7 @@
and put the cdk.sys and 2681.sys files in it. (It's a convenient place to put
them anyway). As an example your /etc/rc.d/rc.S file might have the
following lines added to it (if you had 3 boards):
+
/usr/sbin/stlload -b 0 -i /usr/lib/stallion/cdk.sys
/usr/sbin/stlload -b 1 -i /usr/lib/stallion/2681.sys
/usr/sbin/stlload -b 2 -i /usr/lib/stallion/2681.sys
diff -ur --new-file old/linux/Documentation/sysctl/README new/linux/Documentation/sysctl/README
--- old/linux/Documentation/sysctl/README Thu Jan 7 17:41:55 1999
+++ new/linux/Documentation/sysctl/README Mon Apr 12 19:10:27 1999
@@ -1,5 +1,5 @@
-Documentation for /proc/sys/ kernel version 2.1.128
- (c) 1998, Rik van Riel
+Documentation for /proc/sys/ kernel version 2.2.5
+ (c) 1998, 1999, Rik van Riel
'Why', I hear you ask, 'would anyone even _want_ documentation
for them sysctl files? If anybody really needs it, it's all in
@@ -12,9 +12,6 @@
Furthermore, the programmers who built sysctl have built it to
be actually used, not just for the fun of programming it :-)
-If you prefer HTML, feel free to visit the Linux-MM homepage
-...
-
==============================================================
Legal blurb:
@@ -34,7 +31,7 @@
you're the last RTFMing person to screw up.
In short, e-mail your suggestions, corrections and / or horror
-stories to:
+stories to:
Rik van Riel.
@@ -68,6 +65,7 @@
net/ networking stuff, for documentation look in:
proc/
+sunrpc/ SUN Remote Procedure Call (NFS)
vm/ memory management tuning
buffer and cache management
diff -ur --new-file old/linux/Documentation/sysctl/fs.txt new/linux/Documentation/sysctl/fs.txt
--- old/linux/Documentation/sysctl/fs.txt Fri Nov 13 19:07:26 1998
+++ new/linux/Documentation/sysctl/fs.txt Mon Apr 12 19:10:27 1999
@@ -1,12 +1,12 @@
-Documentation for /proc/sys/fs/* kernel version 2.1.128
- (c) 1998, Rik van Riel
+Documentation for /proc/sys/fs/* kernel version 2.2.5
+ (c) 1998, 1999, Rik van Riel
For general info and legal blurb, please look in README.
==============================================================
This file contains documentation for the sysctl files in
-/proc/sys/fs/ and is valid for Linux kernel version 2.1.
+/proc/sys/fs/ and is valid for Linux kernel version 2.2.
The files in this directory can be used to tune and monitor
miscellaneous and general things in the operation of the Linux
@@ -23,6 +23,8 @@
- inode-max
- inode-nr
- inode-state
+- super-max
+- super-nr
Documentation for the files in /proc/sys/fs/binfmt_misc is
in Documentation/binfmt_misc.txt.
@@ -113,4 +115,12 @@
system needs to prune the inode list instead of allocating
more.
+==============================================================
+
+super-max & super-nr:
+These numbers control the maximum number of superblocks, and
+thus the maximum number of mounted filesystems the kernel
+can have. You only need to increase super-max if you need to
+mount more filesystems than the current value in super-max
+allows you to.
diff -ur --new-file old/linux/Documentation/sysctl/kernel.txt new/linux/Documentation/sysctl/kernel.txt
--- old/linux/Documentation/sysctl/kernel.txt Thu Dec 31 20:55:19 1998
+++ new/linux/Documentation/sysctl/kernel.txt Mon Apr 12 19:10:27 1999
@@ -1,12 +1,12 @@
-Documentation for /proc/sys/kernel/* kernel version 2.1.128
- (c) 1998, Rik van Riel
+Documentation for /proc/sys/kernel/* kernel version 2.2.5
+ (c) 1998, 1999, Rik van Riel
For general info and legal blurb, please look in README.
==============================================================
This file contains documentation for the sysctl files in
-/proc/sys/kernel/ and is valid for Linux kernel version 2.1.
+/proc/sys/kernel/ and is valid for Linux kernel version 2.2.
The files in this directory can be used to tune and monitor
miscellaneous and general things in the operation of the Linux
@@ -24,6 +24,7 @@
- htab-reclaim [ PPC only ]
- java-appletviewer [ binfmt_java, obsolete ]
- java-interpreter [ binfmt_java, obsolete ]
+- l2cr [ PPC only ]
- modprobe ==> Documentation/kmod.txt
- osrelease
- ostype
@@ -32,6 +33,8 @@
- printk
- real-root-dev ==> Documentation/initrd.txt
- reboot-cmd [ SPARC only ]
+- rtsig-nr
+- rtsig-max
- sg-big-buff [ generic SCSI device (sg) ]
- shmmax [ sysv ipc ]
- version
@@ -90,6 +93,13 @@
==============================================================
+l2cr: (PPC only)
+
+This flag controls the L2 cache of G3 processor boards. If
+0, the cache is disabled. Enabled if nonzero.
+
+==============================================================
+
osrelease, ostype & version:
# cat osrelease
@@ -152,6 +162,16 @@
??? This seems to be a way to give an argument to the Sparc
ROM/Flash boot loader. Maybe to tell it what to do after
rebooting. ???
+
+==============================================================
+
+rtsig-max & rtsig-nr:
+
+The file rtsig-max can be used to tune the maximum number
+of POSIX realtime (queued) signals that can be outstanding
+in the system.
+
+Rtsig-nr shows the number of RT signals currently queued.
==============================================================
diff -ur --new-file old/linux/Documentation/sysctl/sunrpc.txt new/linux/Documentation/sysctl/sunrpc.txt
--- old/linux/Documentation/sysctl/sunrpc.txt Thu Jan 1 01:00:00 1970
+++ new/linux/Documentation/sysctl/sunrpc.txt Mon Apr 12 19:10:27 1999
@@ -0,0 +1,20 @@
+Documentation for /proc/sys/sunrpc/* kernel version 2.2.5
+ (c) 1998, 1999, Rik van Riel
+
+For general info and legal blurb, please look in README.
+
+==============================================================
+
+This file contains the documentation for the sysctl files in
+/proc/sys/sunrpc and is valid for Linux kernel version 2.2.
+
+The files in this directory can be used to (re)set the debug
+flags of the SUN Remote Procedure Call (RPC) subsystem in
+the Linux kernel. This stuff is used for NFS, KNFSD and
+maybe a few other things as well.
+
+The files in there are used to control the debugging flags:
+rpc_debug, nfs_debug, nfsd_debug and nlm_debug.
+
+These flags are for kernel hackers only. You should read the
+source code in net/sunrpc/ for more information.
diff -ur --new-file old/linux/Documentation/sysctl/vm.txt new/linux/Documentation/sysctl/vm.txt
--- old/linux/Documentation/sysctl/vm.txt Fri Nov 13 19:07:26 1998
+++ new/linux/Documentation/sysctl/vm.txt Thu Apr 29 20:53:41 1999
@@ -1,27 +1,30 @@
-Documentation for /proc/sys/vm/* kernel version 2.1.128
- (c) 1998, Rik van Riel
+Documentation for /proc/sys/vm/* kernel version 2.2.5
+ (c) 1998, 1999, Rik van Riel
For general info and legal blurb, please look in README.
==============================================================
This file contains the documentation for the sysctl files in
-/proc/sys/vm and is valid for Linux kernel version 2.1.
+/proc/sys/vm and is valid for Linux kernel version 2.2.
The files in this directory can be used to tune the operation
of the virtual memory (VM) subsystem of the Linux kernel, and
one of the files (bdflush) also has a little influence on disk
usage.
+Default values and initialization routines for most of these
+files can be found in mm/swap.c.
+
Currently, these files are in /proc/sys/vm:
- bdflush
- buffermem
- freepages
- kswapd
- overcommit_memory
+- page-cluster
- pagecache
- pagetable_cache
-- swapctl
==============================================================
@@ -100,12 +103,8 @@
The values are:
min_percent -- this is the minimum percentage of memory
that should be spent on buffer memory
-borrow_percent -- when Linux is short on memory, and the
- buffer cache uses more memory than this,
- the MM subsystem will prune the buffercache
- more heavily than other memory
-max_percent -- this is the maximum amount of memory that
- can be used for buffer memory
+borrow_percent -- UNUSED
+max_percent -- UNUSED
==============================================================
freepages:
@@ -162,40 +161,28 @@
overcommit_memory:
-This file contains only one value. The following algorithm
-is used to decide if there's enough memory. If the value
-of overcommit_memory > 0, then there's always enough
-memory :-). This is a useful feature, since programs often
-malloc() huge amounts of memory 'just in case', while they
-only use a small part of it. Leaving this value at 0 will
-lead to the failure of such a huge malloc(), when in fact
-the system has enough memory for the program to run...
-On the other hand, enabling this feature can cause you to
-run out of memory and thrash the system to death, so large
-and/or important servers will want to set this value to 0.
+This value contains a flag that enables memory overcommitment.
+When this flag is 0, the kernel checks before each malloc()
+to see if there's enough memory left. If the flag is nonzero,
+the system pretends there's always enough memory.
-From linux/mm/mmap.c:
---------------------------------------------------------------
-static inline int vm_enough_memory(long pages)
-{
- /* This stupid algorithm decides whether we have enough memory:
- * while simple, it should work in most obvious cases. It's
- * easily fooled, but this should catch most mistakes.
- */
- long freepages;
-
- /* Sometimes we want to use more memory than we have. */
- if (sysctl_overcommit_memory)
- return 1;
-
- freepages = buffermem >> PAGE_SHIFT;
- freepages += page_cache_size;
- freepages >>= 1;
- freepages += nr_free_pages;
- freepages += nr_swap_pages;
- freepages -= num_physpages >> 4;
- return freepages > pages;
-}
+This feature can be very useful because there are a lot of
+programs that malloc() huge amounts of memory "just-in-case"
+and don't much of it.
+
+Look at: mm/mmap.c::vm_enough_memory() for more information.
+
+==============================================================
+
+page-cluster:
+
+The Linux VM subsystem avoids excessive disk seeks by reading
+multiple pages on a page fault. The number of pages it reads
+is dependent on the amount of memory in your machine.
+
+The number of pages the kernel reads in at once is equal to
+2 ^ page-cluster. Values above 2 ^ 5 don't make much sense
+for swap because we only cluster swap data in 32-page groups.
==============================================================
@@ -203,12 +190,17 @@
This file does exactly the same as buffermem, only this
file controls the struct page_cache, and thus controls
-the amount of memory allowed for memory mapping and generic
-caching of files.
+the amount of memory used for the page cache.
-You don't want the minimum level to be too low, otherwise
-your system might thrash when memory is tight or fragmentation
-is high...
+In 2.2, the page cache is used for 3 main purposes:
+- caching read() data from files
+- caching mmap()ed data and executable files
+- swap cache
+
+When your system is both deep in swap and high on cache,
+it probably means that a lot of the swaped data is being
+cached, making for more efficient swapping than possible
+with the 2.0 kernel.
==============================================================
@@ -226,63 +218,4 @@
For large systems, the settings are probably OK. For normal
systems they won't hurt a bit. For small systems (<16MB ram)
it might be advantageous to set both values to 0.
-
-==============================================================
-
-swapctl:
-
-This file contains no less than 8 variables.
-All of these values are used by kswapd, and the usage can be
-found in linux/mm/vmscan.c.
-
-From linux/include/linux/swapctl.h:
---------------------------------------------------------------
-typedef struct swap_control_v5
-{
- unsigned int sc_max_page_age;
- unsigned int sc_page_advance;
- unsigned int sc_page_decline;
- unsigned int sc_page_initial_age;
- unsigned int sc_age_cluster_fract;
- unsigned int sc_age_cluster_min;
- unsigned int sc_pageout_weight;
- unsigned int sc_bufferout_weight;
-} swap_control_v5;
---------------------------------------------------------------
-
-The first four variables are used to keep track of Linux's
-page aging. Page aging is a bookkeeping method to keep track
-of which pages of memory are used often, and which pages can
-be swapped out without consequences.
-
-When a page is swapped in, it starts at sc_page_initial_age
-(default 3) and when the page is scanned by kswapd, its age
-is adjusted according to the following scheme:
-- if the page was used since the last time we scanned, its
- age is increased by sc_page_advance (default 3) up to a maximum
- of sc_max_page_age (default 20)
-- else (it wasn't used) its age is decreased by sc_page_decline
- (default 1)
-And when a page reaches age 0, it's ready to be swapped out.
-
-The next four variables can be used to control kswapd's
-aggressiveness in swapping out pages.
-
-sc_age_cluster_fract is used to calculate how many pages from
-a process are to be scanned by kswapd. The formula used is
-sc_age_cluster_fract/1024 * RSS, so if you want kswapd to scan
-the whole process, sc_age_cluster_fract needs to have a value
-of 1024. The minimum number of pages kswapd will scan is
-represented by sc_age_cluster_min, this is done so kswapd will
-also scan small processes.
-
-The values of sc_pageout_weight and sc_bufferout_weight are
-used to control how many tries kswapd will make in order
-to swapout one page / buffer. These values can be used to
-fine-tune the ratio between user pages and buffer/cache memory.
-When you find that your Linux system is swapping out too many
-process pages in order to satisfy buffer memory demands, you
-might want to either increase sc_bufferout_weight, or decrease
-the value of sc_pageout_weight.
-
diff -ur --new-file old/linux/Documentation/video4linux/bttv/INSTALL new/linux/Documentation/video4linux/bttv/INSTALL
--- old/linux/Documentation/video4linux/bttv/INSTALL Sun Nov 8 23:36:46 1998
+++ new/linux/Documentation/video4linux/bttv/INSTALL Mon May 10 22:00:10 1999
@@ -38,9 +38,12 @@
7: Matrix Vision MV-Delta
8: Fly Video II
9: TurboTV
- 10: Newer Hauppage (Bt878)
+ 10: Newer Hauppauge (Bt878)
11: Miro PCTV Pro
12: ADS Tech Channel Surfer TV (and maybe TV+FM)
+ 13: AVerMedia TVCapture 98
+ 14: Aimslab VHX
+ 15: Zoltrix TV-Max
- You may have to adjust BTTV_MAJOR to a different number depending on your
kernel version. The official number 81 does not work on some setups.
diff -ur --new-file old/linux/Documentation/video4linux/bttv/README.FIRST new/linux/Documentation/video4linux/bttv/README.FIRST
--- old/linux/Documentation/video4linux/bttv/README.FIRST Sun Aug 23 22:32:25 1998
+++ new/linux/Documentation/video4linux/bttv/README.FIRST Sat Feb 6 21:46:20 1999
@@ -1,4 +1,4 @@
o Please direct queries about the in kernel version of this driver to
Alan Cox first not to Ralph, or better yet join the video4linux mailing
- list (mail majordomo@phunk.org with "subscribe video4linux")
+ list (mail video4linux-list-request@redhat.com with "subscribe")
diff -ur --new-file old/linux/MAINTAINERS new/linux/MAINTAINERS
--- old/linux/MAINTAINERS Wed Jan 20 22:27:17 1999
+++ new/linux/MAINTAINERS Sat May 8 21:49:46 1999
@@ -229,8 +229,8 @@
DIGI INTL. EPCA DRIVER
P: Daniel Taylor
M: support@dgii.com
-M: digilnux@dgii.com
-L: digiboard@list.fuller.edu
+M: danielt@dgii.com
+L: digilnux@dgii.com
S: Maintained
DIGI RIGHTSWITCH NETWORK DRIVER
@@ -246,6 +246,12 @@
L: linux-kernel@vger.rutgers.edu
S: Maintained
+DOUBLETALK DRIVER
+P: James R. Van Zandt
+M: jrv@vanzandt.mv.com
+L: blinux-list@redhat.com
+S: Maintained
+
EATA-DMA SCSI DRIVER
P: Michael Neuffer
M: mike@i-Connect.Net
@@ -324,7 +330,7 @@
M: arobinso@nyx.net
L: linux-kernel@vger.rutgers.edu
W: http://www.nyx.net/~arobinso
-S: Maintainted
+S: Maintained
HFS FILESYSTEM
P: Adrian Sun
@@ -389,7 +395,7 @@
P: Dag Brattli
M: Dag Brattli
L: linux-irda@list.uit.no
-W: http://www.cs.uit.no/~dagb/irda/
+W: http://www.cs.uit.no/linux-irda/
S: Maintained
ISDN SUBSYSTEM
@@ -522,7 +528,7 @@
NETWORKING [IPv4/IPv6]
P: David S. Miller
-M: davem@dm.cobaltmicro.com
+M: davem@redhat.com
P: Andi Kleen
M: ak@muc.de
P: Alexey Kuznetsov
@@ -530,6 +536,12 @@
L: netdev@roxanne.nuclecu.unam.mx
S: Maintained
+NFS CLIENT
+P: Trond Myklebust
+M: trond.myklebust@fys.uio.no
+L: linux-kernel@vger.rutgers.edu
+S: Maintained
+
NI5010 NETWORK DRIVER
P: Jan-Pascal van Best and Andreas Mohr
M: jvbest@qv3pluto.leidenuniv.nl (Best)
@@ -631,6 +643,18 @@
L: linux-kernel@vger.rutgers.edu
S: Maintained
+SCSI SG DRIVER
+P: Doug Gilbert
+M: dgilbert@interlog.com
+L: linux-scsi@vger.rutgers.edu
+W: http://www.torque.net/sg
+S: Maintained
+
+SCSI GENERIC
+L: linux-scsi@vger.rutgers.edu
+M: douglas.gilbert@rbcds.com
+S: Maintained
+
SCSI SUBSYSTEM
L: linux-scsi@vger.rutgers.edu
S: Unmaintained
@@ -672,9 +696,18 @@
S: Supported
SPARC:
+P: David S. Miller
+M: davem@redhat.com
P: Eddie C. Dost
M: ecd@skynet.be
+P: Jakub Jelinek
+M: jj@sunsite.ms.mff.cuni.cz
+P: Anton Blanchard
+M: anton@progsoc.uts.edu.au
L: sparclinux@vger.rutgers.edu
+L: ultralinux@vger.rutgers.edu
+W: http://ultra.linux.cz
+W: http://www.geog.ubc.ca/s_linux.html
S: Maintained
SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER
@@ -698,10 +731,8 @@
S: Supported
STARMODE RADIO IP (STRIP) PROTOCOL DRIVER
-P: Stuart Cheshire
-M: cheshire@cs.stanford.edu
W: http://mosquitonet.Stanford.EDU/strip.html
-S: Maintained
+S: Unsupported ?
SVGA HANDLING
P: Martin Mares
@@ -745,6 +776,20 @@
L: linux-kernel@vger.rutgers.edu
S: Maintained
+USB HUB AND UHCI DRIVERS
+P: Johannes Erdfelt
+M: jerdfelt@sventech.com
+L: linux-usb@suse.com
+S: Maintained
+
+USB OHCI DRIVER
+P: Gregory P. Smith
+M: greg@electricrain.com
+M: greg@suitenine.com
+L: linux-usb@suse.com
+S: Maintained (not yet usable)
+W: http://suitenine.com/usb/
+
VFAT FILESYSTEM:
P: Gordon Chaffee
M: chaffee@cs.berkeley.edu
@@ -758,9 +803,9 @@
W: http://roadrunner.swansea.linux.org.uk/v4l.shtml
S: Maintained
-WAN ROUTER AND SANGOMA WANPIPE DRIVERS (X.25, FRAME RELAY, PPP)
-P: Gene Kozin
-M: genek@compuserve.com
+WAN ROUTER & SANGOMA WANPIPE DRIVERS & API (X.25, FRAME RELAY, PPP, CISCO HDLC)
+P: Jaspreet Singh
+M: jaspreet@sangoma.com
M: dm@sangoma.com
W: http://www.sangoma.com
S: Supported
@@ -798,4 +843,4 @@
THE REST
P: Linus Torvalds
-S: Buried alive in diapers
+S: Buried alive in reporters
diff -ur --new-file old/linux/Makefile new/linux/Makefile
--- old/linux/Makefile Thu Jun 3 02:11:11 1999
+++ new/linux/Makefile Thu Jun 3 02:12:03 1999
@@ -1,6 +1,6 @@
VERSION = 2
PATCHLEVEL = 2
-SUBLEVEL = 1
+SUBLEVEL = 9
EXTRAVERSION =
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
@@ -179,7 +179,7 @@
endif
ifeq ($(CONFIG_USB),y)
-DRIVERS := $(DRIVERS) drivers/uusbd/usb.a
+DRIVERS := $(DRIVERS) drivers/usb/usb.a
endif
ifeq ($(CONFIG_I2O),y)
@@ -225,35 +225,27 @@
mkdir include/linux/modules; \
fi
-oldconfig: symlinks scripts/split-include
+oldconfig: symlinks
$(CONFIG_SHELL) scripts/Configure -d arch/$(ARCH)/config.in
- if [ -r include/linux/autoconf.h ]; then \
- scripts/split-include include/linux/autoconf.h include/config; \
- fi
-xconfig: symlinks scripts/split-include
+xconfig: symlinks
$(MAKE) -C scripts kconfig.tk
wish -f scripts/kconfig.tk
- if [ -r include/linux/autoconf.h ]; then \
- scripts/split-include include/linux/autoconf.h include/config; \
- fi
-menuconfig: include/linux/version.h symlinks scripts/split-include
+menuconfig: include/linux/version.h symlinks
$(MAKE) -C scripts/lxdialog all
$(CONFIG_SHELL) scripts/Menuconfig arch/$(ARCH)/config.in
- if [ -r include/linux/autoconf.h ]; then \
- scripts/split-include include/linux/autoconf.h include/config; \
- fi
-config: symlinks scripts/split-include
+config: symlinks
$(CONFIG_SHELL) scripts/Configure arch/$(ARCH)/config.in
- if [ -r include/linux/autoconf.h ]; then \
- scripts/split-include include/linux/autoconf.h include/config; \
- fi
+
+include/config/MARKER: scripts/split-include include/linux/autoconf.h
+ scripts/split-include include/linux/autoconf.h include/config
+ @ touch include/config/MARKER
linuxsubdirs: $(patsubst %, _dir_%, $(SUBDIRS))
-$(patsubst %, _dir_%, $(SUBDIRS)) : dummy
+$(patsubst %, _dir_%, $(SUBDIRS)) : dummy include/config/MARKER
$(MAKE) -C $(patsubst _dir_%, %, $@)
$(TOPDIR)/include/linux/version.h: include/linux/version.h
@@ -290,10 +282,10 @@
@echo '#define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))' >>.ver
@mv -f .ver $@
-init/version.o: init/version.c include/linux/compile.h
+init/version.o: init/version.c include/linux/compile.h include/config/MARKER
$(CC) $(CFLAGS) -DUTS_MACHINE='"$(ARCH)"' -c -o init/version.o init/version.c
-init/main.o: init/main.c
+init/main.o: init/main.c include/config/MARKER
$(CC) $(CFLAGS) $(PROFILING) -c -o $*.o $<
fs lib mm ipc kernel drivers net: dummy
@@ -356,7 +348,8 @@
clean: archclean
rm -f kernel/ksyms.lst include/linux/compile.h
- rm -f core `find . -name '*.[oas]' ! -regex '.*lxdialog/.*' -print`
+ rm -f core `find . -name '*.[oas]' ! -regex '.*lxdialog/.*' \
+ ! -regex '.*ksymoops/.*' -print`
rm -f core `find . -type f -name 'core' -print`
rm -f core `find . -name '.*.flags' -print`
rm -f vmlinux System.map
@@ -380,6 +373,7 @@
rm -f .version .config* config.in config.old
rm -f scripts/tkparse scripts/kconfig.tk scripts/kconfig.tmp
rm -f scripts/lxdialog/*.o scripts/lxdialog/lxdialog
+ rm -f scripts/ksymoops/*.o scripts/ksymoops/ksymoops
rm -f .menuconfig.log
rm -f include/asm
rm -rf include/config
@@ -392,8 +386,8 @@
distclean: mrproper
rm -f core `find . \( -name '*.orig' -o -name '*.rej' -o -name '*~' \
- -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
- -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -print` TAGS
+ -o -name '*.bak' -o -name '#*#' -o -name '.*.orig' \
+ -o -name '.*.rej' -o -name '.SUMS' -o -size 0 \) -print` TAGS
backup: mrproper
cd .. && tar cf - linux/ | gzip -9 > backup.gz
diff -ur --new-file old/linux/REPORTING-BUGS new/linux/REPORTING-BUGS
--- old/linux/REPORTING-BUGS Fri Jan 15 07:53:02 1999
+++ new/linux/REPORTING-BUGS Thu Apr 29 20:53:41 1999
@@ -1,6 +1,6 @@
[Some of this is taken from Frohwalt Egerer's original linux-kernel FAQ]
- What follows is a suggested proceedure for reporting Linux bugs. You
+ What follows is a suggested procedure for reporting Linux bugs. You
aren't obliged to use the bug reporting format, it is provided as a guide
to the kind of information that can be useful to developers - no more.
@@ -23,11 +23,11 @@
This is a suggested format for a bug report sent to the Linux kernel mailing
list. Having a standardized bug report form makes it easier for you not to
overlook things, and easier for the developers to find the pieces of
-information they're really interested in.
+information they're really interested in. Don't feel you have to follow it.
First run the ver_linux script included as scripts/ver_linux or
at It checks out
-the version of some important subsystems. Run it with the commnd
+the version of some important subsystems. Run it with the command
"sh scripts/ver_linux"
Use that information to fill in all fields of the bug report form, and
diff -ur --new-file old/linux/arch/alpha/boot/main.c new/linux/arch/alpha/boot/main.c
--- old/linux/arch/alpha/boot/main.c Sun Aug 4 12:37:59 1996
+++ new/linux/arch/alpha/boot/main.c Thu Feb 25 19:46:51 1999
@@ -22,61 +22,27 @@
extern int vsprintf(char *, const char *, va_list);
extern unsigned long switch_to_osf_pal(unsigned long nr,
struct pcb_struct * pcb_va, struct pcb_struct * pcb_pa,
- unsigned long vptb, unsigned long *kstk);
-
-int printk(const char * fmt, ...)
-{
- va_list args;
- int i, j, written, remaining, num_nl;
- static char buf[1024];
- char * str;
-
- va_start(args, fmt);
- i = vsprintf(buf, fmt, args);
- va_end(args);
-
- /* expand \n into \r\n: */
-
- num_nl = 0;
- for (j = 0; j < i; ++j) {
- if (buf[j] == '\n')
- ++num_nl;
- }
- remaining = i + num_nl;
- for (j = i - 1; j >= 0; --j) {
- buf[j + num_nl] = buf[j];
- if (buf[j] == '\n') {
- --num_nl;
- buf[j + num_nl] = '\r';
- }
- }
-
- str = buf;
- do {
- written = puts(str, remaining);
- remaining -= written;
- str += written;
- } while (remaining > 0);
- return i;
-}
-
-#define hwrpb (*INIT_HWRPB)
+ unsigned long *vptb);
+struct hwrpb_struct *hwrpb = INIT_HWRPB;
+static struct pcb_struct pcb_va[1];
/*
* Find a physical address of a virtual object..
*
* This is easy using the virtual page table address.
*/
-struct pcb_struct * find_pa(unsigned long *vptb, struct pcb_struct * pcb)
+
+static inline void *
+find_pa(unsigned long *vptb, void *ptr)
{
- unsigned long address = (unsigned long) pcb;
+ unsigned long address = (unsigned long) ptr;
unsigned long result;
result = vptb[address >> 13];
result >>= 32;
result <<= 13;
result |= address & 0x1fff;
- return (struct pcb_struct *) result;
+ return (void *) result;
}
/*
@@ -88,30 +54,19 @@
* code has the L1 page table identity-map itself in the second PTE
* in the L1 page table. Thus the L1-page is virtually addressable
* itself (through three levels) at virtual address 0x200802000.
- *
- * As we don't want it there anyway, we also move the L1 self-map
- * up as high as we can, so that the last entry in the L1 page table
- * maps the page tables.
- *
- * As a result, the OSF/1 pal-code will instead use a virtual page table
- * map located at 0xffffffe00000000.
*/
-#define pcb_va ((struct pcb_struct *) 0x20000000)
-#define old_vptb (0x0000000200000000UL)
-#define new_vptb (0xfffffffe00000000UL)
-void pal_init(void)
+
+#define VPTB ((unsigned long *) 0x200000000)
+#define L1 ((unsigned long *) 0x200802000)
+
+void
+pal_init(void)
{
- unsigned long i, rev, sum;
- unsigned long *L1, *l;
+ unsigned long i, rev;
struct percpu_struct * percpu;
struct pcb_struct * pcb_pa;
- /* Find the level 1 page table and duplicate it in high memory */
- L1 = (unsigned long *) 0x200802000UL; /* (1<<33 | 1<<23 | 1<<13) */
- L1[1023] = L1[1];
-
- percpu = (struct percpu_struct *) (hwrpb.processor_offset + (unsigned long) &hwrpb),
-
+ /* Create the dummy PCB. */
pcb_va->ksp = 0;
pcb_va->usp = 0;
pcb_va->ptbr = L1[1] >> 32;
@@ -119,39 +74,32 @@
pcb_va->pcc = 0;
pcb_va->unique = 0;
pcb_va->flags = 1;
- pcb_pa = find_pa((unsigned long *) old_vptb, pcb_va);
- printk("Switching to OSF PAL-code .. ");
+ pcb_va->res1 = 0;
+ pcb_va->res2 = 0;
+ pcb_pa = find_pa(VPTB, pcb_va);
+
/*
* a0 = 2 (OSF)
- * a1 = return address, but we give the asm the virtual addr of the PCB
+ * a1 = return address, but we give the asm the vaddr of the PCB
* a2 = physical addr of PCB
* a3 = new virtual page table pointer
- * a4 = KSP (but we give it 0, asm sets it)
+ * a4 = KSP (but the asm sets it)
*/
- i = switch_to_osf_pal(
- 2,
- pcb_va,
- pcb_pa,
- new_vptb,
- 0);
+ srm_printk("Switching to OSF PAL-code .. ");
+
+ i = switch_to_osf_pal(2, pcb_va, pcb_pa, VPTB);
if (i) {
- printk("failed, code %ld\n", i);
+ srm_printk("failed, code %ld\n", i);
halt();
}
+
+ percpu = (struct percpu_struct *)
+ (INIT_HWRPB->processor_offset + (unsigned long) INIT_HWRPB);
rev = percpu->pal_revision = percpu->palcode_avail[2];
- hwrpb.vptb = new_vptb;
+ srm_printk("Ok (rev %lx)\n", rev);
- /* update checksum: */
- sum = 0;
- for (l = (unsigned long *) &hwrpb; l < (unsigned long *) &hwrpb.chksum; ++l)
- sum += *l;
- hwrpb.chksum = sum;
-
- printk("Ok (rev %lx)\n", rev);
- /* remove the old virtual page-table mapping */
- L1[1] = 0;
- flush_tlb_all();
+ tbia(); /* do it directly in case we are SMP */
}
static inline long openboot(void)
@@ -159,15 +107,15 @@
char bootdev[256];
long result;
- result = dispatch(CCB_GET_ENV, ENV_BOOTED_DEV, bootdev, 255);
+ result = srm_dispatch(CCB_GET_ENV, ENV_BOOTED_DEV, bootdev, 255);
if (result < 0)
return result;
- return dispatch(CCB_OPEN, bootdev, result & 255);
+ return srm_dispatch(CCB_OPEN, bootdev, result & 255);
}
static inline long close(long dev)
{
- return dispatch(CCB_CLOSE, dev);
+ return srm_dispatch(CCB_CLOSE, dev);
}
static inline long load(long dev, unsigned long addr, unsigned long count)
@@ -176,15 +124,15 @@
extern char _end;
long result, boot_size = &_end - (char *) BOOT_ADDR;
- result = dispatch(CCB_GET_ENV, ENV_BOOTED_FILE, bootfile, 255);
+ result = srm_dispatch(CCB_GET_ENV, ENV_BOOTED_FILE, bootfile, 255);
if (result < 0)
return result;
result &= 255;
bootfile[result] = '\0';
if (result)
- printk("Boot file specification (%s) not implemented\n",
+ srm_printk("Boot file specification (%s) not implemented\n",
bootfile);
- return dispatch(CCB_READ, dev, count, addr, boot_size/512 + 1);
+ return srm_dispatch(CCB_READ, dev, count, addr, boot_size/512 + 1);
}
/*
@@ -208,27 +156,27 @@
int nbytes;
char envval[256];
- printk("Linux/AXP bootloader for Linux " UTS_RELEASE "\n");
- if (hwrpb.pagesize != 8192) {
- printk("Expected 8kB pages, got %ldkB\n", hwrpb.pagesize >> 10);
+ srm_printk("Linux/AXP bootloader for Linux " UTS_RELEASE "\n");
+ if (INIT_HWRPB->pagesize != 8192) {
+ srm_printk("Expected 8kB pages, got %ldkB\n", INIT_HWRPB->pagesize >> 10);
return;
}
pal_init();
dev = openboot();
if (dev < 0) {
- printk("Unable to open boot device: %016lx\n", dev);
+ srm_printk("Unable to open boot device: %016lx\n", dev);
return;
}
dev &= 0xffffffff;
- printk("Loading vmlinux ...");
+ srm_printk("Loading vmlinux ...");
i = load(dev, START_ADDR, KERNEL_SIZE);
close(dev);
if (i != KERNEL_SIZE) {
- printk("Failed (%lx)\n", i);
+ srm_printk("Failed (%lx)\n", i);
return;
}
- nbytes = dispatch(CCB_GET_ENV, ENV_BOOTED_OSFLAGS,
+ nbytes = srm_dispatch(CCB_GET_ENV, ENV_BOOTED_OSFLAGS,
envval, sizeof(envval));
if (nbytes < 0) {
nbytes = 0;
@@ -236,7 +184,7 @@
envval[nbytes] = '\0';
strcpy((char*)ZERO_PAGE, envval);
- printk(" Ok\nNow booting the kernel\n");
+ srm_printk(" Ok\nNow booting the kernel\n");
runkernel();
for (i = 0 ; i < 0x100000000 ; i++)
/* nothing */;
diff -ur --new-file old/linux/arch/alpha/config.in new/linux/arch/alpha/config.in
--- old/linux/arch/alpha/config.in Thu Jun 3 02:11:11 1999
+++ new/linux/arch/alpha/config.in Thu Jun 3 02:12:04 1999
@@ -54,12 +54,10 @@
unset CONFIG_ALPHA_LCA CONFIG_ALPHA_APECS CONFIG_ALPHA_CIA
unset CONFIG_ALPHA_T2 CONFIG_ALPHA_PYXIS CONFIG_ALPHA_POLARIS
unset CONFIG_ALPHA_TSUNAMI CONFIG_ALPHA_MCPCIA
-unset CONFIG_ALPHA_NEED_ROUNDING_EMULATION
if [ "$CONFIG_ALPHA_GENERIC" = "y" ]
then
define_bool CONFIG_PCI y
- define_bool CONFIG_ALPHA_NEED_ROUNDING_EMULATION y
fi
if [ "$CONFIG_ALPHA_BOOK1" = "y" ]
then
@@ -108,7 +106,7 @@
then
define_bool CONFIG_ALPHA_EV5 y
else
- define_bool CONFIG_ALPHA_EV4 y
+ define_bool CONFIG_ALPHA_EV4 y
fi
define_bool CONFIG_ALPHA_T2 y
fi
@@ -141,11 +139,6 @@
then
define_bool CONFIG_ALPHA_EV4 y
fi
-if [ "$CONFIG_ALPHA_EV4" = "y" ]
-then
- # EV45 and older do not support all rounding modes in hw:
- define_bool CONFIG_ALPHA_NEED_ROUNDING_EMULATION y
-fi
if [ "$CONFIG_ALPHA_CABRIOLET" = "y" -o "$CONFIG_ALPHA_AVANTI" = "y" \
-o "$CONFIG_ALPHA_EB64P" = "y" -o "$CONFIG_ALPHA_JENSEN" = "y" \
@@ -246,7 +239,7 @@
endmenu
mainmenu_option next_comment
-comment 'CD-ROM drivers (not for SCSI or IDE/ATAPI drives)'
+comment 'Old CD-ROM drivers (not SCSI, not IDE)'
bool 'Support non-SCSI/IDE/ATAPI drives' CONFIG_CD_NO_IDESCSI
if [ "$CONFIG_CD_NO_IDESCSI" != "n" ]; then
diff -ur --new-file old/linux/arch/alpha/defconfig new/linux/arch/alpha/defconfig
--- old/linux/arch/alpha/defconfig Wed Dec 23 16:34:11 1998
+++ new/linux/arch/alpha/defconfig Thu Feb 25 19:46:46 1999
@@ -91,7 +91,6 @@
# CONFIG_PACKET is not set
# CONFIG_NETLINK is not set
# CONFIG_FIREWALL is not set
-# CONFIG_NET_ALIAS is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
CONFIG_INET=y
diff -ur --new-file old/linux/arch/alpha/kernel/entry.S new/linux/arch/alpha/kernel/entry.S
--- old/linux/arch/alpha/kernel/entry.S Thu Jan 21 20:26:30 1999
+++ new/linux/arch/alpha/kernel/entry.S Mon May 10 18:55:21 1999
@@ -6,8 +6,6 @@
#include
-#define halt .long PAL_halt
-#define rti .long PAL_rti
#define SIGCHLD 20
#define NR_SYSCALLS 371
@@ -98,7 +96,7 @@
call_pal PAL_swpipl; \
stq $21,HAE_CACHE($19); \
stq $21,0($20); \
- bis $0,$0,$16; \
+ mov $0,$16; \
call_pal PAL_swpipl; \
ldq $0,0($30); \
ldq $1,8($30); \
@@ -127,8 +125,8 @@
entInt:
SAVE_ALL
lda $8,0x3fff
- bic $30,$8,$8
lda $26,ret_from_sys_call
+ bic $30,$8,$8
jsr $31,do_entInt
.end entInt
@@ -170,8 +168,8 @@
entArith:
SAVE_ALL
lda $8,0x3fff
- bic $30,$8,$8
lda $26,ret_from_sys_call
+ bic $30,$8,$8
jsr $31,do_entArith
.end entArith
@@ -181,11 +179,23 @@
entIF:
SAVE_ALL
lda $8,0x3fff
- bic $30,$8,$8
lda $26,ret_from_sys_call
+ bic $30,$8,$8
jsr $31,do_entIF
.end entIF
+.align 3
+.globl entDbg
+.ent entDbg
+entDbg:
+ SAVE_ALL
+ lda $8,0x3fff
+ lda $26,ret_from_sys_call
+ bic $30,$8,$8
+ jsr $31,do_entDbg
+.end entDbg
+
+
/*
* Fork() is one of the special system calls: it needs to
* save the callee-saved regs so that the regs can be found
@@ -200,18 +210,18 @@
kernel_clone:
.frame $30, 0, $26
.prologue 0
- subq $30,6*8,$30
- stq $31,0($30)
- stq $26,8($30)
- stq $29,16($30)
- stq $16,24($30)
- stq $17,32($30)
- stq $18,40($30)
- bis $31,2,$0 /* Register v0: syscall nr for fork() */
+ subq $30,6*8,$30
+ stq $31,0($30)
+ stq $26,8($30)
+ stq $29,16($30)
+ stq $16,24($30)
+ stq $17,32($30)
+ stq $18,40($30)
+ bis $31,2,$0 /* Register v0: syscall nr for fork() */
SAVE_ALL
- bsr $26,sys_clone
- stq $0,0($30)
- br $31,ret_from_sys_call
+ bsr $26,sys_clone
+ stq $0,0($30)
+ br ret_from_sys_call
.end kernel_clone
/*
@@ -221,32 +231,32 @@
.globl __kernel_thread
.ent __kernel_thread
__kernel_thread:
- ldgp $29,0($27) /* we can be called from a module */
+ ldgp $29,0($27) /* we can be called from a module */
.frame $30, 4*8, $26
- subq $30,4*8,$30
- stq $10,16($30)
- stq $9,8($30)
- stq $26,0($30)
+ subq $30,4*8,$30
+ stq $10,16($30)
+ stq $9,8($30)
+ stq $26,0($30)
.prologue 1
- bis $17,$17,$9 /* save fn */
- bis $18,$18,$10 /* save arg */
- bsr $26,kernel_clone
- bne $20,1f /* $20 is non-zero in child */
- ldq $26,0($30)
- ldq $9,8($30)
- ldq $10,16($30)
- addq $30,4*8,$30
- ret $31,($26),1
+ mov $17,$9 /* save fn */
+ mov $18,$10 /* save arg */
+ bsr $26,kernel_clone
+ bne $20,1f /* $20 is non-zero in child */
+ ldq $26,0($30)
+ ldq $9,8($30)
+ ldq $10,16($30)
+ addq $30,4*8,$30
+ ret $31,($26),1
/* this is in child: look out as we don't have any stack here.. */
-1: bis $9,$9,$27 /* get fn */
- lda $8,0x3fff
- bis $10,$10,$16 /* get arg */
- bic $30,$8,$8 /* get current */
- jsr $26,($27)
+1: mov $9,$27 /* get fn */
+ lda $8,0x3fff
+ mov $10,$16 /* get arg */
+ bic $30,$8,$8 /* get current */
+ jsr $26,($27)
ldgp $29,0($26)
- bis $0,$0,$16
- jsr $26,sys_exit
- call_pal PAL_halt
+ mov $0,$16
+ mov $31,$26
+ jsr $31,sys_exit
.end __kernel_thread
/*
@@ -274,202 +284,199 @@
.align 3
.ent do_switch_stack
do_switch_stack:
- lda $30,-SWITCH_STACK_SIZE($30)
- stq $9,0($30)
- stq $10,8($30)
- stq $11,16($30)
- stq $12,24($30)
- stq $13,32($30)
- stq $14,40($30)
- stq $15,48($30)
- stq $26,56($30)
- stt $f0,64($30)
- stt $f1,72($30)
- stt $f2,80($30)
- stt $f3,88($30)
- stt $f4,96($30)
- stt $f5,104($30)
- stt $f6,112($30)
- stt $f7,120($30)
- stt $f8,128($30)
- stt $f9,136($30)
- stt $f10,144($30)
- stt $f11,152($30)
- stt $f12,160($30)
- stt $f13,168($30)
- stt $f14,176($30)
- stt $f15,184($30)
- stt $f16,192($30)
- stt $f17,200($30)
- stt $f18,208($30)
- stt $f19,216($30)
- stt $f20,224($30)
- stt $f21,232($30)
- stt $f22,240($30)
- stt $f23,248($30)
- stt $f24,256($30)
- stt $f25,264($30)
- stt $f26,272($30)
- stt $f27,280($30)
- mf_fpcr $f0 # get fpcr
- stt $f28,288($30)
- stt $f29,296($30)
- stt $f30,304($30)
- stt $f0,312($30) # save fpcr in slot of $f31
- ldt $f0,64($30) # dont let "do_switch_stack" change fp state.
- ret $31,($1),1
+ lda $30,-SWITCH_STACK_SIZE($30)
+ stq $9,0($30)
+ stq $10,8($30)
+ stq $11,16($30)
+ stq $12,24($30)
+ stq $13,32($30)
+ stq $14,40($30)
+ stq $15,48($30)
+ stq $26,56($30)
+ stt $f0,64($30)
+ stt $f1,72($30)
+ stt $f2,80($30)
+ stt $f3,88($30)
+ stt $f4,96($30)
+ stt $f5,104($30)
+ stt $f6,112($30)
+ stt $f7,120($30)
+ stt $f8,128($30)
+ stt $f9,136($30)
+ stt $f10,144($30)
+ stt $f11,152($30)
+ stt $f12,160($30)
+ stt $f13,168($30)
+ stt $f14,176($30)
+ stt $f15,184($30)
+ stt $f16,192($30)
+ stt $f17,200($30)
+ stt $f18,208($30)
+ stt $f19,216($30)
+ stt $f20,224($30)
+ stt $f21,232($30)
+ stt $f22,240($30)
+ stt $f23,248($30)
+ stt $f24,256($30)
+ stt $f25,264($30)
+ stt $f26,272($30)
+ stt $f27,280($30)
+ mf_fpcr $f0 # get fpcr
+ stt $f28,288($30)
+ stt $f29,296($30)
+ stt $f30,304($30)
+ stt $f0,312($30) # save fpcr in slot of $f31
+ ldt $f0,64($30) # dont let "do_switch_stack" change fp state.
+ ret $31,($1),1
.end do_switch_stack
.align 3
.ent undo_switch_stack
undo_switch_stack:
- ldq $9,0($30)
- ldq $10,8($30)
- ldq $11,16($30)
- ldq $12,24($30)
- ldq $13,32($30)
- ldq $14,40($30)
- ldq $15,48($30)
- ldq $26,56($30)
- ldt $f30,312($30) # get saved fpcr
- ldt $f0,64($30)
- ldt $f1,72($30)
- ldt $f2,80($30)
- ldt $f3,88($30)
- mt_fpcr $f30 # install saved fpcr
- ldt $f4,96($30)
- ldt $f5,104($30)
- ldt $f6,112($30)
- ldt $f7,120($30)
- ldt $f8,128($30)
- ldt $f9,136($30)
- ldt $f10,144($30)
- ldt $f11,152($30)
- ldt $f12,160($30)
- ldt $f13,168($30)
- ldt $f14,176($30)
- ldt $f15,184($30)
- ldt $f16,192($30)
- ldt $f17,200($30)
- ldt $f18,208($30)
- ldt $f19,216($30)
- ldt $f20,224($30)
- ldt $f21,232($30)
- ldt $f22,240($30)
- ldt $f23,248($30)
- ldt $f24,256($30)
- ldt $f25,264($30)
- ldt $f26,272($30)
- ldt $f27,280($30)
- ldt $f28,288($30)
- ldt $f29,296($30)
- ldt $f30,304($30)
- lda $30,SWITCH_STACK_SIZE($30)
- ret $31,($1),1
+ ldq $9,0($30)
+ ldq $10,8($30)
+ ldq $11,16($30)
+ ldq $12,24($30)
+ ldq $13,32($30)
+ ldq $14,40($30)
+ ldq $15,48($30)
+ ldq $26,56($30)
+ ldt $f30,312($30) # get saved fpcr
+ ldt $f0,64($30)
+ ldt $f1,72($30)
+ ldt $f2,80($30)
+ ldt $f3,88($30)
+ mt_fpcr $f30 # install saved fpcr
+ ldt $f4,96($30)
+ ldt $f5,104($30)
+ ldt $f6,112($30)
+ ldt $f7,120($30)
+ ldt $f8,128($30)
+ ldt $f9,136($30)
+ ldt $f10,144($30)
+ ldt $f11,152($30)
+ ldt $f12,160($30)
+ ldt $f13,168($30)
+ ldt $f14,176($30)
+ ldt $f15,184($30)
+ ldt $f16,192($30)
+ ldt $f17,200($30)
+ ldt $f18,208($30)
+ ldt $f19,216($30)
+ ldt $f20,224($30)
+ ldt $f21,232($30)
+ ldt $f22,240($30)
+ ldt $f23,248($30)
+ ldt $f24,256($30)
+ ldt $f25,264($30)
+ ldt $f26,272($30)
+ ldt $f27,280($30)
+ ldt $f28,288($30)
+ ldt $f29,296($30)
+ ldt $f30,304($30)
+ lda $30,SWITCH_STACK_SIZE($30)
+ ret $31,($1),1
.end undo_switch_stack
.align 3
.globl entUna
.ent entUna
entUna:
- lda $30,-256($30)
- stq $0,0($30)
- ldq $0,256($30) /* get PS */
- stq $1,8($30)
- stq $2,16($30)
- stq $3,24($30)
- and $0,8,$0 /* user mode? */
- stq $4,32($30)
- bne $0,entUnaUser /* yup -> do user-level unaligned fault */
- stq $5,40($30)
- stq $6,48($30)
- stq $7,56($30)
- stq $8,64($30)
- stq $9,72($30)
- stq $10,80($30)
- stq $11,88($30)
- stq $12,96($30)
- stq $13,104($30)
- stq $14,112($30)
- stq $15,120($30)
+ lda $30,-256($30)
+ stq $0,0($30)
+ ldq $0,256($30) /* get PS */
+ stq $1,8($30)
+ stq $2,16($30)
+ stq $3,24($30)
+ and $0,8,$0 /* user mode? */
+ stq $4,32($30)
+ bne $0,entUnaUser /* yup -> do user-level unaligned fault */
+ stq $5,40($30)
+ stq $6,48($30)
+ stq $7,56($30)
+ stq $8,64($30)
+ stq $9,72($30)
+ stq $10,80($30)
+ stq $11,88($30)
+ stq $12,96($30)
+ stq $13,104($30)
+ stq $14,112($30)
+ stq $15,120($30)
/* 16-18 PAL-saved */
- stq $19,152($30)
- stq $20,160($30)
- stq $21,168($30)
- stq $22,176($30)
- stq $23,184($30)
- stq $24,192($30)
- stq $25,200($30)
- stq $26,208($30)
- stq $27,216($30)
- stq $28,224($30)
- stq $29,232($30)
- stq $30,240($30)
- stq $31,248($30)
- lda $8,0x3fff
- bic $30,$8,$8
- jsr $26,do_entUna
- ldq $0,0($30)
- ldq $1,8($30)
- ldq $2,16($30)
- ldq $3,24($30)
- ldq $4,32($30)
- ldq $5,40($30)
- ldq $6,48($30)
- ldq $7,56($30)
- ldq $8,64($30)
- ldq $9,72($30)
- ldq $10,80($30)
- ldq $11,88($30)
- ldq $12,96($30)
- ldq $13,104($30)
- ldq $14,112($30)
- ldq $15,120($30)
+ stq $19,152($30)
+ stq $20,160($30)
+ stq $21,168($30)
+ stq $22,176($30)
+ stq $23,184($30)
+ stq $24,192($30)
+ stq $25,200($30)
+ stq $26,208($30)
+ stq $27,216($30)
+ stq $28,224($30)
+ stq $29,232($30)
+ lda $8,0x3fff
+ stq $31,248($30)
+ bic $30,$8,$8
+ jsr $26,do_entUna
+ ldq $0,0($30)
+ ldq $1,8($30)
+ ldq $2,16($30)
+ ldq $3,24($30)
+ ldq $4,32($30)
+ ldq $5,40($30)
+ ldq $6,48($30)
+ ldq $7,56($30)
+ ldq $8,64($30)
+ ldq $9,72($30)
+ ldq $10,80($30)
+ ldq $11,88($30)
+ ldq $12,96($30)
+ ldq $13,104($30)
+ ldq $14,112($30)
+ ldq $15,120($30)
/* 16-18 PAL-saved */
- ldq $19,152($30)
- ldq $20,160($30)
- ldq $21,168($30)
- ldq $22,176($30)
- ldq $23,184($30)
- ldq $24,192($30)
- ldq $25,200($30)
- ldq $26,208($30)
- ldq $27,216($30)
- ldq $28,224($30)
- ldq $29,232($30)
- ldq $30,240($30)
- lda $30,256($30)
- rti
+ ldq $19,152($30)
+ ldq $20,160($30)
+ ldq $21,168($30)
+ ldq $22,176($30)
+ ldq $23,184($30)
+ ldq $24,192($30)
+ ldq $25,200($30)
+ ldq $26,208($30)
+ ldq $27,216($30)
+ ldq $28,224($30)
+ ldq $29,232($30)
+ lda $30,256($30)
+ call_pal PAL_rti
.end entUna
.align 3
.ent entUnaUser
entUnaUser:
- ldq $0,0($30) /* restore original $0 */
- lda $30,256($30) /* pop entUna's stack frame */
- SAVE_ALL /* setup normal kernel stack */
- lda $30,-56($30)
- stq $9,0($30)
- stq $10,8($30)
- stq $11,16($30)
- stq $12,24($30)
- stq $13,32($30)
- stq $14,40($30)
- stq $15,48($30)
- lda $8,0x3fff
- addq $30,56,$19
- bic $30,$8,$8
- jsr $26,do_entUnaUser
- ldq $9,0($30)
- ldq $10,8($30)
- ldq $11,16($30)
- ldq $12,24($30)
- ldq $13,32($30)
- ldq $14,40($30)
- ldq $15,48($30)
- lda $30,56($30)
- br $31,ret_from_sys_call
-
+ ldq $0,0($30) /* restore original $0 */
+ lda $30,256($30) /* pop entUna's stack frame */
+ SAVE_ALL /* setup normal kernel stack */
+ lda $30,-56($30)
+ stq $9,0($30)
+ stq $10,8($30)
+ stq $11,16($30)
+ stq $12,24($30)
+ stq $13,32($30)
+ stq $14,40($30)
+ stq $15,48($30)
+ lda $8,0x3fff
+ addq $30,56,$19
+ bic $30,$8,$8
+ jsr $26,do_entUnaUser
+ ldq $9,0($30)
+ ldq $10,8($30)
+ ldq $11,16($30)
+ ldq $12,24($30)
+ ldq $13,32($30)
+ ldq $14,40($30)
+ ldq $15,48($30)
+ lda $30,56($30)
+ br ret_from_sys_call
.end entUnaUser
/*
@@ -479,36 +486,36 @@
.globl sys_fork
.ent sys_fork
sys_fork:
- bsr $1,do_switch_stack
- bis $31,SIGCHLD,$16
- bis $31,$31,$17
- bis $30,$30,$18
- jsr $26,alpha_clone
- bsr $1,undo_switch_stack
- ret $31,($26),1
+ bsr $1,do_switch_stack
+ bis $31,SIGCHLD,$16
+ mov $31,$17
+ mov $30,$18
+ jsr $26,alpha_clone
+ bsr $1,undo_switch_stack
+ ret $31,($26),1
.end sys_fork
.align 3
.globl sys_clone
.ent sys_clone
sys_clone:
- bsr $1,do_switch_stack
+ bsr $1,do_switch_stack
/* arg1 and arg2 come from the user */
- bis $30,$30,$18
- jsr $26,alpha_clone
- bsr $1,undo_switch_stack
- ret $31,($26),1
+ mov $30,$18
+ jsr $26,alpha_clone
+ bsr $1,undo_switch_stack
+ ret $31,($26),1
.end sys_clone
.align 3
.globl sys_vfork
.ent sys_vfork
sys_vfork:
- bsr $1,do_switch_stack
- bis $30,$30,$16
- jsr $26,alpha_vfork
- bsr $1,undo_switch_stack
- ret $31,($26),1
+ bsr $1,do_switch_stack
+ mov $30,$16
+ jsr $26,alpha_vfork
+ bsr $1,undo_switch_stack
+ ret $31,($26),1
.end sys_vfork
.align 3
@@ -516,12 +523,12 @@
.ent alpha_switch_to
alpha_switch_to:
.prologue 0
- bsr $1,do_switch_stack
+ bsr $1,do_switch_stack
call_pal PAL_swpctx
- lda $16,-2($31)
- call_pal PAL_tbi
- bsr $1,undo_switch_stack
- ret $31,($26),1
+ unop
+ bsr $1,undo_switch_stack
+ mov $17,$0
+ ret $31,($26),1
.end alpha_switch_to
/*
@@ -580,7 +587,7 @@
bne $5,signal_return
restore_all:
RESTORE_ALL
- rti
+ call_pal PAL_rti
/* PTRACE syscall handler */
@@ -608,7 +615,7 @@
s8addq $0,$2,$2
beq $1,1f
ldq $27,0($2)
-1: jsr $26,($27),alpha_ni_syscall
+1: jsr $26,($27),sys_gettimeofday
ldgp $29,0($26)
/* check return.. */
@@ -634,15 +641,15 @@
stq $1,72($30) /* a3 for return */
bsr $1,do_switch_stack
- bis $19,$19,$9 /* save old syscall number */
- bis $20,$20,$10 /* save old a3 */
+ mov $19,$9 /* save old syscall number */
+ mov $20,$10 /* save old a3 */
jsr $26,syscall_trace
- bis $9,$9,$19
- bis $10,$10,$20
+ mov $9,$19
+ mov $10,$20
bsr $1,undo_switch_stack
- bis $31,$31,$26 /* tell "ret_from_sys_call" that we can restart */
- br $31,ret_from_sys_call
+ mov $31,$26 /* tell "ret_from_sys_call" we can restart */
+ br ret_from_sys_call
.align 3
handle_bottom_half:
@@ -653,7 +660,7 @@
ldq $19,0($30)
ldq $20,8($30)
addq $30,16,$30
- br $31,ret_from_handle_bh
+ br ret_from_handle_bh
.align 3
syscall_error:
@@ -671,38 +678,35 @@
subq $31,$0,$0 /* with error in v0 */
addq $31,1,$1 /* set a3 for errno return */
stq $0,0($30)
- bis $31,$31,$26 /* tell "ret_from_sys_call" we can restart */
+ mov $31,$26 /* tell "ret_from_sys_call" we can restart */
stq $1,72($30) /* a3 for return */
- br $31,ret_from_sys_call
+ br ret_from_sys_call
ret_success:
stq $0,0($30)
stq $31,72($30) /* a3=0 => no error */
- br $31,ret_from_sys_call
+ br ret_from_sys_call
.align 3
signal_return:
- bis $30,$30,$17
+ mov $30,$17
br $1,do_switch_stack
- bis $30,$30,$18
- bis $31,$31,$16
+ mov $30,$18
+ mov $31,$16
jsr $26,do_signal
bsr $1,undo_switch_stack
- br $31,restore_all
+ br restore_all
.end entSys
#ifdef __SMP__
- .globl ret_from_smpfork
+ .globl ret_from_smp_fork
.align 3
-.ent ret_from_smpfork
-ret_from_smpfork:
- .set at
- mb /* Make the changed data visible before the freed lock. */
- stq $31,scheduler_lock
+.ent ret_from_smp_fork
+ret_from_smp_fork:
lda $26,ret_from_sys_call
+ mov $17,$16
jsr $31,schedule_tail
- .set noat
-.end ret_from_smpfork
+.end ret_from_smp_fork
#endif /* __SMP__ */
.align 3
@@ -715,51 +719,51 @@
ldq $19,0($30)
ldq $20,8($30)
addq $30,16,$30
- br $31,ret_from_reschedule
+ br ret_from_reschedule
.end reschedule
.align 3
.ent sys_sigreturn
sys_sigreturn:
- bis $30,$30,$17
+ mov $30,$17
+ lda $18,-SWITCH_STACK_SIZE($30)
lda $30,-SWITCH_STACK_SIZE($30)
- bis $30,$30,$18
jsr $26,do_sigreturn
br $1,undo_switch_stack
- br $31,ret_from_sys_call
+ br ret_from_sys_call
.end sys_sigreturn
.align 3
.ent sys_rt_sigreturn
sys_rt_sigreturn:
- bis $30,$30,$17
+ mov $30,$17
+ lda $18,-SWITCH_STACK_SIZE($30)
lda $30,-SWITCH_STACK_SIZE($30)
- bis $30,$30,$18
jsr $26,do_rt_sigreturn
br $1,undo_switch_stack
- br $31,ret_from_sys_call
+ br ret_from_sys_call
.end sys_rt_sigreturn
.align 3
.ent sys_sigsuspend
sys_sigsuspend:
- bis $30,$30,$17
+ mov $30,$17
br $1,do_switch_stack
- bis $30,$30,$18
+ mov $30,$18
jsr $26,do_sigsuspend
lda $30,SWITCH_STACK_SIZE($30)
- br $31,ret_from_sys_call
+ br ret_from_sys_call
.end sys_sigsuspend
.align 3
.ent sys_rt_sigsuspend
sys_rt_sigsuspend:
- bis $30,$30,$18
+ mov $30,$18
br $1,do_switch_stack
- bis $30,$30,$19
+ mov $30,$19
jsr $26,do_rt_sigsuspend
lda $30,SWITCH_STACK_SIZE($30)
- br $31,ret_from_sys_call
+ br ret_from_sys_call
.end sys_rt_sigsuspend
.data
diff -ur --new-file old/linux/arch/alpha/kernel/osf_sys.c new/linux/arch/alpha/kernel/osf_sys.c
--- old/linux/arch/alpha/kernel/osf_sys.c Thu Jan 21 01:07:26 1999
+++ new/linux/arch/alpha/kernel/osf_sys.c Mon May 10 18:55:21 1999
@@ -37,6 +37,7 @@
#include
#include
#include
+#include
extern int do_mount(kdev_t, const char *, const char *, char *, int, void *);
extern int do_pipe(int *);
@@ -140,6 +141,7 @@
struct inode *inode;
struct osf_dirent_callback buf;
+ lock_kernel();
error = -EBADF;
file = fget(fd);
if (!file)
@@ -172,6 +174,7 @@
out_putf:
fput(file);
out:
+ unlock_kernel();
return error;
}
@@ -317,8 +320,8 @@
struct super_block * sb = inode->i_sb;
int error;
- error = -ENOSYS;
- if (sb->s_op->statfs) {
+ error = -ENODEV;
+ if (sb && sb->s_op && sb->s_op->statfs) {
set_fs(KERNEL_DS);
error = sb->s_op->statfs(sb, &linux_stat, sizeof(linux_stat));
set_fs(USER_DS);
@@ -762,14 +765,10 @@
asmlinkage int osf_sigstack(struct sigstack *uss, struct sigstack *uoss)
{
unsigned long usp = rdusp();
- unsigned long oss_sp, oss_os;
+ unsigned long oss_sp = current->sas_ss_sp + current->sas_ss_size;
+ unsigned long oss_os = on_sig_stack(usp);
int error;
- if (uoss) {
- oss_sp = current->sas_ss_sp + current->sas_ss_size;
- oss_os = on_sig_stack(usp);
- }
-
if (uss) {
void *ss_sp;
@@ -880,11 +879,27 @@
int *start, void *arg)
{
unsigned long w;
+ struct percpu_struct *cpu;
switch (op) {
case GSI_IEEE_FP_CONTROL:
/* Return current software fp control & status bits. */
- w = current->tss.flags & IEEE_SW_MASK;
+ /* Note that DU doesn't verify available space here. */
+
+ /* EV6 implements most of the bits in hardware. If
+ UNDZ is not set, UNFD is maintained in software. */
+ if (implver() == IMPLVER_EV6) {
+ unsigned long fpcr = rdfpcr();
+ w = ieee_fpcr_to_swcr(fpcr);
+ if (!(fpcr & FPCR_UNDZ)) {
+ w &= ~IEEE_TRAP_ENABLE_UNF;
+ w |= current->tss.flags & IEEE_TRAP_ENABLE_UNF;
+ }
+ } else {
+ /* Otherwise we are forced to do everything in sw. */
+ w = current->tss.flags & IEEE_SW_MASK;
+ }
+
if (put_user(w, (unsigned long *) buffer))
return -EFAULT;
return 0;
@@ -898,10 +913,28 @@
break;
case GSI_UACPROC:
+ if (nbytes < sizeof(unsigned int))
+ return -EINVAL;
w = (current->tss.flags >> UAC_SHIFT) & UAC_BITMASK;
if (put_user(w, (unsigned int *)buffer))
return -EFAULT;
- return 0;
+ return 1;
+
+ case GSI_PROC_TYPE:
+ if (nbytes < sizeof(unsigned long))
+ return -EINVAL;
+ cpu = (struct percpu_struct*)
+ ((char*)hwrpb + hwrpb->processor_offset);
+ if (put_user(w, (unsigned long *)buffer))
+ return -EFAULT;
+ return 1;
+
+ case GSI_GET_HWRPB:
+ if (nbytes < sizeof(*hwrpb))
+ return -EINVAL;
+ if (copy_to_user(buffer, hwrpb, nbytes) != 0)
+ return -EFAULT;
+ return 1;
default:
break;
@@ -916,7 +949,7 @@
{
switch (op) {
case SSI_IEEE_FP_CONTROL: {
- unsigned long swcr, fpcr;
+ unsigned long swcr, fpcr, undz;
/*
* Alpha Architecture Handbook 4.7.7.3:
@@ -931,11 +964,12 @@
current->tss.flags &= ~IEEE_SW_MASK;
current->tss.flags |= swcr & IEEE_SW_MASK;
- /* Update the real fpcr. For exceptions that are disabled in
- software but have not been seen, enable the exception in
- hardware so that we can update our software status mask. */
- fpcr = rdfpcr() & (~FPCR_MASK | FPCR_DYN_MASK);
- fpcr |= ieee_swcr_to_fpcr(swcr | (~swcr & IEEE_STATUS_MASK)>>16);
+ /* Update the real fpcr. Keep UNFD off if not UNDZ. */
+ fpcr = rdfpcr();
+ undz = (fpcr & FPCR_UNDZ);
+ fpcr &= ~(FPCR_MASK | FPCR_DYN_MASK | FPCR_UNDZ);
+ fpcr |= ieee_swcr_to_fpcr(swcr);
+ fpcr &= ~(undz << 1);
wrfpcr(fpcr);
return 0;
@@ -1390,8 +1424,9 @@
copy_from_user(&txc.tick, &txc_p->tick, sizeof(struct timex32) -
offsetof(struct timex32, time)))
return -EFAULT;
-
- if ((ret = do_adjtimex(&txc)))
+
+ ret = do_adjtimex(&txc);
+ if (ret < 0)
return ret;
/* copy back to timex32 */
@@ -1401,5 +1436,5 @@
(put_tv32(&txc_p->time, &txc.time)))
return -EFAULT;
- return 0;
+ return ret;
}
diff -ur --new-file old/linux/arch/alpha/kernel/process.c new/linux/arch/alpha/kernel/process.c
--- old/linux/arch/alpha/kernel/process.c Wed Jan 20 20:08:43 1999
+++ new/linux/arch/alpha/kernel/process.c Mon May 10 18:55:21 1999
@@ -237,10 +237,13 @@
void flush_thread(void)
{
- /* Arrange for each exec'ed process to start off with a
- clean slate with respect to the FPU. */
+ /* Arrange for each exec'ed process to start off with a clean slate
+ with respect to the FPU. This is all exceptions disabled. Note
+ that EV6 defines UNFD valid only with UNDZ, which we don't want
+ for IEEE conformance -- so that disabled bit remains in software. */
+
current->tss.flags &= ~IEEE_SW_MASK;
- wrfpcr(FPCR_DYN_NORMAL);
+ wrfpcr(FPCR_DYN_NORMAL | FPCR_INVD | FPCR_DZED | FPCR_OVFD | FPCR_INED);
}
void release_thread(struct task_struct *dead_task)
@@ -270,8 +273,6 @@
(struct pt_regs *) (swstack+1));
}
-extern void ret_from_sys_call(void);
-extern void ret_from_smpfork(void);
/*
* Copy an alpha thread..
*
@@ -282,9 +283,13 @@
* Use the passed "regs" pointer to determine how much space we need
* for a kernel fork().
*/
+
int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
struct task_struct * p, struct pt_regs * regs)
{
+ extern void ret_from_sys_call(void);
+ extern void ret_from_smp_fork(void);
+
struct pt_regs * childregs;
struct switch_stack * childstack, *stack;
unsigned long stack_offset;
@@ -292,18 +297,18 @@
stack_offset = PAGE_SIZE - sizeof(struct pt_regs);
if (!(regs->ps & 8))
stack_offset = (PAGE_SIZE-1) & (unsigned long) regs;
- childregs = (struct pt_regs *) (stack_offset + PAGE_SIZE + (unsigned long)p);
+ childregs = (struct pt_regs *) (stack_offset + PAGE_SIZE + (long)p);
*childregs = *regs;
childregs->r0 = 0;
childregs->r19 = 0;
- childregs->r20 = 1; /* OSF/1 has some strange fork() semantics.. */
+ childregs->r20 = 1; /* OSF/1 has some strange fork() semantics. */
regs->r20 = 0;
stack = ((struct switch_stack *) regs) - 1;
childstack = ((struct switch_stack *) childregs) - 1;
*childstack = *stack;
#ifdef __SMP__
- childstack->r26 = (unsigned long) ret_from_smpfork;
+ childstack->r26 = (unsigned long) ret_from_smp_fork;
#else
childstack->r26 = (unsigned long) ret_from_sys_call;
#endif
@@ -328,10 +333,12 @@
dump->start_code = current->mm->start_code;
dump->start_data = current->mm->start_data;
dump->start_stack = rdusp() & ~(PAGE_SIZE - 1);
- dump->u_tsize = (current->mm->end_code - dump->start_code) >> PAGE_SHIFT;
- dump->u_dsize = (current->mm->brk + (PAGE_SIZE - 1) - dump->start_data) >> PAGE_SHIFT;
- dump->u_ssize =
- (current->mm->start_stack - dump->start_stack + PAGE_SIZE - 1) >> PAGE_SHIFT;
+ dump->u_tsize = ((current->mm->end_code - dump->start_code)
+ >> PAGE_SHIFT);
+ dump->u_dsize = ((current->mm->brk + PAGE_SIZE-1 - dump->start_data)
+ >> PAGE_SHIFT);
+ dump->u_ssize = (current->mm->start_stack - dump->start_stack
+ + PAGE_SIZE-1) >> PAGE_SHIFT;
/*
* We store the registers in an order/format that is
diff -ur --new-file old/linux/arch/alpha/kernel/proto.h new/linux/arch/alpha/kernel/proto.h
--- old/linux/arch/alpha/kernel/proto.h Sun Jan 10 18:59:59 1999
+++ new/linux/arch/alpha/kernel/proto.h Mon Feb 22 04:06:36 1999
@@ -165,7 +165,7 @@
extern void SMC93x_Init(void);
/* smc37c669.c */
-extern void SMC669_Init(void);
+extern void SMC669_Init(int);
/* es1888.c */
extern void es1888_init(void);
@@ -187,6 +187,7 @@
extern void entMM(void);
extern void entSys(void);
extern void entUna(void);
+extern void entDbg(void);
/* process.c */
extern void generic_kill_arch (int mode, char *reboot_cmd);
diff -ur --new-file old/linux/arch/alpha/kernel/setup.c new/linux/arch/alpha/kernel/setup.c
--- old/linux/arch/alpha/kernel/setup.c Thu Jan 14 19:21:40 1999
+++ new/linux/arch/alpha/kernel/setup.c Sun Apr 25 02:54:08 1999
@@ -183,6 +183,11 @@
vec = get_sysvec_byname(p+9);
continue;
}
+
+ if (strncmp(p, "cycle=", 6) == 0) {
+ est_cycle_freq = simple_strtol(p+6, NULL, 0);
+ continue;
+ }
}
/* Replace the command line, not that we've killed it with strtok. */
@@ -721,8 +726,8 @@
(char*)cpu->serial_no,
systype_name, sysvariation_name, hwrpb->sys_revision,
(char*)hwrpb->ssn,
- hwrpb->cycle_freq ? : est_cycle_freq,
- hwrpb->cycle_freq ? "" : "est.",
+ est_cycle_freq ? : hwrpb->cycle_freq,
+ est_cycle_freq ? "est." : "",
hwrpb->intr_freq / 4096,
(100 * hwrpb->intr_freq / 4096) % 100,
hwrpb->pagesize,
diff -ur --new-file old/linux/arch/alpha/kernel/smc37c669.c new/linux/arch/alpha/kernel/smc37c669.c
--- old/linux/arch/alpha/kernel/smc37c669.c Wed Nov 25 23:52:22 1998
+++ new/linux/arch/alpha/kernel/smc37c669.c Mon Feb 22 04:06:36 1999
@@ -862,7 +862,7 @@
*/
SMC37c669_CONFIG_REGS *SMC37c669_detect(
- void
+ int
);
unsigned int SMC37c669_enable_device(
@@ -1015,6 +1015,29 @@
};
/*
+** The following definition is for the MONET (XP1000) IRQ
+** translation table.
+*/
+static SMC37c669_IRQ_TRANSLATION_ENTRY SMC37c669_monet_irq_table[]
+__initdata =
+ {
+ { SMC37c669_DEVICE_IRQ_A, -1 },
+ { SMC37c669_DEVICE_IRQ_B, -1 },
+ { SMC37c669_DEVICE_IRQ_C, 6 },
+ { SMC37c669_DEVICE_IRQ_D, 7 },
+ { SMC37c669_DEVICE_IRQ_E, 4 },
+ { SMC37c669_DEVICE_IRQ_F, 3 },
+ { SMC37c669_DEVICE_IRQ_H, -1 },
+ { -1, -1 } /* End of table */
+ };
+
+static SMC37c669_IRQ_TRANSLATION_ENTRY *SMC37c669_irq_tables[] __initdata =
+ {
+ SMC37c669_default_irq_table,
+ SMC37c669_monet_irq_table
+ };
+
+/*
** DRQ Translation Table
**
** The DRQ translation table is a list of SMC37c669 device and
@@ -1163,7 +1186,7 @@
**
**--
*/
-SMC37c669_CONFIG_REGS * __init SMC37c669_detect( void )
+SMC37c669_CONFIG_REGS * __init SMC37c669_detect( int index )
{
int i;
SMC37c669_DEVICE_ID_REGISTER id;
@@ -1196,7 +1219,7 @@
/*
** Initialize the IRQ and DRQ translation tables.
*/
- SMC37c669_irq_table = SMC37c669_default_irq_table;
+ SMC37c669_irq_table = SMC37c669_irq_tables[ index ];
SMC37c669_drq_table = SMC37c669_default_drq_table;
/*
** erfix
@@ -2516,13 +2539,13 @@
* None
*
*/
-void __init SMC669_Init ( void )
+void __init SMC669_Init ( int index )
{
SMC37c669_CONFIG_REGS *SMC_base;
unsigned long flags;
__save_and_cli(flags);
- if ( ( SMC_base = SMC37c669_detect( ) ) != NULL ) {
+ if ( ( SMC_base = SMC37c669_detect( index ) ) != NULL ) {
#if SMC_DEBUG
SMC37c669_config_mode( TRUE );
SMC37c669_dump_registers( );
diff -ur --new-file old/linux/arch/alpha/kernel/smp.c new/linux/arch/alpha/kernel/smp.c
--- old/linux/arch/alpha/kernel/smp.c Sun Jan 17 02:02:50 1999
+++ new/linux/arch/alpha/kernel/smp.c Mon May 10 18:55:21 1999
@@ -37,7 +37,18 @@
#define DBGS(args)
#endif
-struct ipi_msg_flush_tb_struct ipi_msg_flush_tb __cacheline_aligned;
+struct ipi_msg_flush_tb_struct {
+ volatile unsigned int flush_tb_mask;
+ union {
+ struct mm_struct * flush_mm;
+ struct vm_area_struct * flush_vma;
+ } p;
+ unsigned long flush_addr;
+ unsigned long flush_end;
+};
+
+static struct ipi_msg_flush_tb_struct ipi_msg_flush_tb __cacheline_aligned;
+static spinlock_t flush_tb_lock = SPIN_LOCK_UNLOCKED;
struct cpuinfo_alpha cpu_data[NR_CPUS];
@@ -499,6 +510,7 @@
return;
}
mdelay(1);
+ barrier();
}
DBGS(("secondary_cpu_start: SUCCESS for CPU %d!!!\n", cpuid));
}
@@ -541,6 +553,7 @@
if (!(hwrpb->txrdy & cpumask))
goto ready1;
udelay(100);
+ barrier();
}
goto timeout;
@@ -549,6 +562,7 @@
if (!(hwrpb->txrdy & cpumask))
goto ready2;
udelay(100);
+ barrier();
}
goto timeout;
@@ -783,7 +797,7 @@
unsigned long to_whom = cpu_present_map ^ (1 << smp_processor_id());
long timeout = 1000000;
- spin_lock_own(&kernel_flag, "flush_tlb_all");
+ spin_lock(&flush_tb_lock);
ipi_msg_flush_tb.flush_tb_mask = to_whom;
send_ipi_message(to_whom, IPI_TLB_ALL);
@@ -800,6 +814,8 @@
ipi_msg_flush_tb.flush_tb_mask);
ipi_msg_flush_tb.flush_tb_mask = 0;
}
+
+ spin_unlock(&flush_tb_lock);
}
void
@@ -808,7 +824,7 @@
unsigned long to_whom = cpu_present_map ^ (1 << smp_processor_id());
long timeout = 1000000;
- spin_lock_own(&kernel_flag, "flush_tlb_mm");
+ spin_lock(&flush_tb_lock);
ipi_msg_flush_tb.flush_tb_mask = to_whom;
ipi_msg_flush_tb.p.flush_mm = mm;
@@ -830,6 +846,8 @@
ipi_msg_flush_tb.flush_tb_mask);
ipi_msg_flush_tb.flush_tb_mask = 0;
}
+
+ spin_unlock(&flush_tb_lock);
}
void
@@ -840,7 +858,7 @@
struct mm_struct * mm = vma->vm_mm;
int timeout = 1000000;
- spin_lock_own(&kernel_flag, "flush_tlb_page");
+ spin_lock(&flush_tb_lock);
ipi_msg_flush_tb.flush_tb_mask = to_whom;
ipi_msg_flush_tb.p.flush_vma = vma;
@@ -863,6 +881,8 @@
ipi_msg_flush_tb.flush_tb_mask);
ipi_msg_flush_tb.flush_tb_mask = 0;
}
+
+ spin_unlock(&flush_tb_lock);
}
void
diff -ur --new-file old/linux/arch/alpha/kernel/sys_dp264.c new/linux/arch/alpha/kernel/sys_dp264.c
--- old/linux/arch/alpha/kernel/sys_dp264.c Sun Jan 10 18:59:59 1999
+++ new/linux/arch/alpha/kernel/sys_dp264.c Mon Feb 22 04:06:36 1999
@@ -316,7 +316,7 @@
{
layout_all_busses(DEFAULT_IO_BASE, DEFAULT_MEM_BASE);
common_pci_fixup(dp264_map_irq, common_swizzle);
- SMC669_Init();
+ SMC669_Init(0);
}
static void __init
@@ -325,7 +325,7 @@
layout_all_busses(DEFAULT_IO_BASE, DEFAULT_MEM_BASE);
common_pci_fixup(monet_map_irq, monet_swizzle);
/* es1888_init(); */ /* later? */
- SMC669_Init();
+ SMC669_Init(1);
}
static void __init
@@ -333,7 +333,7 @@
{
layout_all_busses(DEFAULT_IO_BASE, DEFAULT_MEM_BASE);
common_pci_fixup(webbrick_map_irq, common_swizzle);
- SMC669_Init();
+ SMC669_Init(0);
}
diff -ur --new-file old/linux/arch/alpha/kernel/sys_miata.c new/linux/arch/alpha/kernel/sys_miata.c
--- old/linux/arch/alpha/kernel/sys_miata.c Wed Nov 25 23:52:22 1998
+++ new/linux/arch/alpha/kernel/sys_miata.c Mon Feb 22 04:06:36 1999
@@ -267,7 +267,7 @@
{
layout_all_busses(DEFAULT_IO_BASE, DEFAULT_MEM_BASE);
common_pci_fixup(miata_map_irq, miata_swizzle);
- SMC669_Init(); /* it might be a GL (fails harmlessly if not) */
+ SMC669_Init(0); /* it might be a GL (fails harmlessly if not) */
es1888_init();
}
diff -ur --new-file old/linux/arch/alpha/kernel/sys_sx164.c new/linux/arch/alpha/kernel/sys_sx164.c
--- old/linux/arch/alpha/kernel/sys_sx164.c Mon Oct 12 20:40:12 1998
+++ new/linux/arch/alpha/kernel/sys_sx164.c Mon Feb 22 04:06:36 1999
@@ -183,7 +183,7 @@
{
layout_all_busses(DEFAULT_IO_BASE, DEFAULT_MEM_BASE);
common_pci_fixup(sx164_map_irq, common_swizzle);
- SMC669_Init();
+ SMC669_Init(0);
}
diff -ur --new-file old/linux/arch/alpha/kernel/time.c new/linux/arch/alpha/kernel/time.c
--- old/linux/arch/alpha/kernel/time.c Tue Jan 19 19:19:38 1999
+++ new/linux/arch/alpha/kernel/time.c Sun Apr 25 02:54:08 1999
@@ -18,6 +18,9 @@
* fixed tick loss calculation in timer_interrupt
* (round system clock to nearest tick instead of truncating)
* fixed algorithm in time_init for getting time from CMOS clock
+ * 1999-04-16 Thorsten Kranzkowski (dl8bcu@gmx.net)
+ * fixed algorithm in do_gettimeofday() for calculating the precise time
+ * from processor cycle counter (now taking lost_ticks into account)
*/
#include
#include
@@ -223,7 +226,7 @@
{
void (*irq_handler)(int, void *, struct pt_regs *);
unsigned int year, mon, day, hour, min, sec, cc1, cc2;
- unsigned long cycle_freq;
+ unsigned long cycle_freq, diff, one_percent;
/*
* The Linux interpretation of the CMOS clock register contents:
@@ -237,19 +240,30 @@
/* Read cycle counter exactly on falling edge of update flag */
cc1 = rpcc();
- /* If our cycle frequency isn't valid, go another round and give
- a guess at what it should be. */
- cycle_freq = hwrpb->cycle_freq;
- if (cycle_freq == 0) {
- printk("HWRPB cycle frequency bogus. Estimating... ");
-
+ if (!est_cycle_freq) {
+ /* Sometimes the hwrpb->cycle_freq value is bogus.
+ Go another round to check up on it and see. */
do { } while (!(CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP));
do { } while (CMOS_READ(RTC_FREQ_SELECT) & RTC_UIP);
cc2 = rpcc();
- est_cycle_freq = cycle_freq = cc2 - cc1;
+ est_cycle_freq = cc2 - cc1;
cc1 = cc2;
+ }
- printk("%lu Hz\n", cycle_freq);
+ /* If the given value is within 1% of what we calculated,
+ accept it. Otherwise, use what we found. */
+ cycle_freq = hwrpb->cycle_freq;
+ one_percent = cycle_freq / 100;
+ diff = cycle_freq - est_cycle_freq;
+ if (diff < 0)
+ diff = -diff;
+ if (diff > one_percent) {
+ cycle_freq = est_cycle_freq;
+ printk("HWRPB cycle frequency bogus. Estimated %lu Hz\n",
+ cycle_freq);
+ }
+ else {
+ est_cycle_freq = 0;
}
/* From John Bowman : allow the values
@@ -314,8 +328,10 @@
void
do_gettimeofday(struct timeval *tv)
{
- unsigned long flags, now, delta_cycles, delta_usec;
+ unsigned long flags, delta_cycles, delta_usec;
unsigned long sec, usec;
+ __u32 now;
+ extern volatile unsigned long lost_ticks; /*kernel/sched.c*/
now = rpcc();
save_and_cli(flags);
@@ -337,9 +353,15 @@
* with no clear gain.
*/
- delta_usec = delta_cycles * state.scaled_ticks_per_cycle * 15625;
+ delta_usec = (delta_cycles * state.scaled_ticks_per_cycle
+ + state.partial_tick
+ + (lost_ticks << FIX_SHIFT) ) * 15625;
delta_usec = ((delta_usec / ((1UL << (FIX_SHIFT-6-1)) * HZ)) + 1) / 2;
+ /* the 'lost_tics' term above implements this:
+ * delta_usec += lost_ticks * (1000000 / HZ);
+ */
+
usec += delta_usec;
if (usec >= 1000000) {
sec += 1;
@@ -357,7 +379,6 @@
xtime = *tv;
time_adjust = 0; /* stop active adjtime() */
time_status |= STA_UNSYNC;
- time_state = TIME_ERROR; /* p. 24, (a) */
time_maxerror = NTP_PHASE_LIMIT;
time_esterror = NTP_PHASE_LIMIT;
sti();
diff -ur --new-file old/linux/arch/alpha/kernel/traps.c new/linux/arch/alpha/kernel/traps.c
--- old/linux/arch/alpha/kernel/traps.c Mon Oct 12 20:40:12 1998
+++ new/linux/arch/alpha/kernel/traps.c Mon May 10 18:55:21 1999
@@ -121,17 +121,20 @@
#endif
asmlinkage void
-do_entArith(unsigned long summary, unsigned long write_mask, unsigned long a2,
- unsigned long a3, unsigned long a4, unsigned long a5,
- struct pt_regs regs)
+do_entArith(unsigned long summary, unsigned long write_mask,
+ unsigned long a2, unsigned long a3, unsigned long a4,
+ unsigned long a5, struct pt_regs regs)
{
- if ((summary & 1)) {
- /*
- * Software-completion summary bit is set, so try to
- * emulate the instruction.
- */
- if (alpha_fp_emul_imprecise(®s, write_mask)) {
- return; /* emulation was successful */
+ if (summary & 1) {
+ /* Software-completion summary bit is set, so try to
+ emulate the instruction. */
+ if (implver() == IMPLVER_EV6) {
+ /* Whee! EV6 has precice exceptions. */
+ if (alpha_fp_emul(regs.pc - 4))
+ return;
+ } else {
+ if (alpha_fp_emul_imprecise(®s, write_mask))
+ return;
}
}
@@ -141,22 +144,26 @@
current->comm, regs.pc, summary, write_mask);
#endif
die_if_kernel("Arithmetic fault", ®s, 0, 0);
- force_sig(SIGFPE, current);
+ send_sig(SIGFPE, current, 1);
unlock_kernel();
}
-asmlinkage void do_entIF(unsigned long type, unsigned long a1,
- unsigned long a2, unsigned long a3, unsigned long a4,
- unsigned long a5, struct pt_regs regs)
+asmlinkage void
+do_entIF(unsigned long type, unsigned long a1,
+ unsigned long a2, unsigned long a3, unsigned long a4,
+ unsigned long a5, struct pt_regs regs)
{
- lock_kernel();
die_if_kernel("Instruction fault", ®s, type, 0);
switch (type) {
case 0: /* breakpoint */
if (ptrace_cancel_bpt(current)) {
regs.pc -= 4; /* make pc point to former bpt */
}
- force_sig(SIGTRAP, current);
+ send_sig(SIGTRAP, current, 1);
+ break;
+
+ case 1: /* bugcheck */
+ send_sig(SIGTRAP, current, 1);
break;
case 2: /* gentrap */
@@ -170,14 +177,13 @@
switch ((long) regs.r16) {
case GEN_INTOVF: case GEN_INTDIV: case GEN_FLTOVF:
case GEN_FLTDIV: case GEN_FLTUND: case GEN_FLTINV:
- case GEN_FLTINE:
- force_sig(SIGFPE, current);
+ case GEN_FLTINE: case GEN_ROPRAND:
+ send_sig(SIGFPE, current, 1);
break;
case GEN_DECOVF:
case GEN_DECDIV:
case GEN_DECINV:
- case GEN_ROPRAND:
case GEN_ASSERTERR:
case GEN_NULPTRERR:
case GEN_STKOVF:
@@ -192,44 +198,50 @@
case GEN_SUBRNG5:
case GEN_SUBRNG6:
case GEN_SUBRNG7:
- force_sig(SIGILL, current);
+ send_sig(SIGTRAP, current, 1);
break;
}
break;
- case 1: /* bugcheck */
case 3: /* FEN fault */
- force_sig(SIGILL, current);
+ send_sig(SIGILL, current, 1);
break;
case 4: /* opDEC */
-#ifdef CONFIG_ALPHA_NEED_ROUNDING_EMULATION
- {
- unsigned int opcode;
-
- /* get opcode of faulting instruction: */
- get_user(opcode, (__u32*)(regs.pc - 4));
- opcode >>= 26;
- if (opcode == 0x16) {
- /*
- * It's a FLTI instruction, emulate it
- * (we don't do no stinkin' VAX fp...)
- */
- if (!alpha_fp_emul(regs.pc - 4))
- force_sig(SIGFPE, current);
- break;
- }
+ if (implver() == IMPLVER_EV4) {
+ /* EV4 does not implement anything except normal
+ rounding. Everything else will come here as
+ an illegal instruction. Emulate them. */
+ if (alpha_fp_emul(regs.pc - 4))
+ return;
}
-#endif
- force_sig(SIGILL, current);
+ send_sig(SIGILL, current, 1);
break;
default:
panic("do_entIF: unexpected instruction-fault type");
}
+}
+
+/* There is an ifdef in the PALcode in MILO that enables a
+ "kernel debugging entry point" as an unprivilaged call_pal.
+
+ We don't want to have anything to do with it, but unfortunately
+ several versions of MILO included in distributions have it enabled,
+ and if we don't put something on the entry point we'll oops. */
+
+asmlinkage void
+do_entDbg(unsigned long type, unsigned long a1,
+ unsigned long a2, unsigned long a3, unsigned long a4,
+ unsigned long a5, struct pt_regs regs)
+{
+ lock_kernel();
+ die_if_kernel("Instruction fault", ®s, type, 0);
+ force_sig(SIGILL, current);
unlock_kernel();
}
+
/*
* entUna has a different register layout to be reasonably simple. It
* needs access to all the integer registers (the kernel doesn't use
@@ -857,14 +869,14 @@
give_sigsegv:
regs->pc -= 4; /* make pc point to faulting insn */
lock_kernel();
- force_sig(SIGSEGV, current);
+ send_sig(SIGSEGV, current, 1);
unlock_kernel();
return;
give_sigbus:
regs->pc -= 4;
lock_kernel();
- force_sig(SIGBUS, current);
+ send_sig(SIGBUS, current, 1);
unlock_kernel();
return;
}
@@ -895,4 +907,5 @@
wrent(entIF, 3);
wrent(entUna, 4);
wrent(entSys, 5);
+ wrent(entDbg, 6);
}
diff -ur --new-file old/linux/arch/alpha/lib/clear_user.S new/linux/arch/alpha/lib/clear_user.S
--- old/linux/arch/alpha/lib/clear_user.S Sun Nov 30 19:59:02 1997
+++ new/linux/arch/alpha/lib/clear_user.S Sun Apr 25 02:54:08 1999
@@ -80,6 +80,7 @@
ret $31, ($28), 1 # .. e1 :
__do_clear_user:
+ ldgp $29,0($27) # we do exceptions -- we need the gp.
and $6, 7, $4 # e0 : find dest misalignment
beq $0, $zerolength # .. e1 :
addq $0, $4, $1 # e0 : bias counter
diff -ur --new-file old/linux/arch/alpha/lib/copy_user.S new/linux/arch/alpha/lib/copy_user.S
--- old/linux/arch/alpha/lib/copy_user.S Sun Apr 26 07:35:18 1998
+++ new/linux/arch/alpha/lib/copy_user.S Fri Apr 30 17:22:19 1999
@@ -46,6 +46,8 @@
.globl __copy_user
.ent __copy_user
__copy_user:
+ ldgp $29,0($27) # we do exceptions -- we need the gp.
+ .prologue 1
and $6,7,$3
beq $0,$35
beq $3,$36
@@ -107,7 +109,7 @@
$66:
EXI( ldq $1,0($7) )
subq $4,8,$4
- stq $1,0($6)
+ EXO( stq $1,0($6) )
addq $7,8,$7
subq $0,8,$0
addq $6,8,$6
diff -ur --new-file old/linux/arch/alpha/lib/io.c new/linux/arch/alpha/lib/io.c
--- old/linux/arch/alpha/lib/io.c Sun Sep 6 19:34:33 1998
+++ new/linux/arch/alpha/lib/io.c Thu Apr 15 14:42:31 1999
@@ -405,15 +405,16 @@
* Copy data from "real" memory space to IO memory space.
* This needs to be optimized.
*/
-void _memcpy_toio(unsigned long to, void * from, long count)
+void _memcpy_toio(unsigned long to, const void * from, long count)
{
/* Optimize co-aligned transfers. Everything else gets handled
a byte at a time. */
+ /* FIXME -- align FROM. */
if (count >= 8 && (to & 7) == ((long)from & 7)) {
count -= 8;
do {
- writeq(*(u64 *)from, to);
+ writeq(*(const u64 *)from, to);
count -= 8;
to += 8;
from += 8;
@@ -424,7 +425,7 @@
if (count >= 4 && (to & 3) == ((long)from & 3)) {
count -= 4;
do {
- writel(*(u32 *)from, to);
+ writel(*(const u32 *)from, to);
count -= 4;
to += 4;
from += 4;
@@ -435,7 +436,7 @@
if (count >= 2 && (to & 1) == ((long)from & 1)) {
count -= 2;
do {
- writew(*(u16 *)from, to);
+ writew(*(const u16 *)from, to);
count -= 2;
to += 2;
from += 2;
@@ -444,7 +445,7 @@
}
while (count > 0) {
- writeb(*(u8 *) from, to);
+ writeb(*(const u8 *) from, to);
count--;
to++;
from++;
diff -ur --new-file old/linux/arch/alpha/lib/strlen_user.S new/linux/arch/alpha/lib/strlen_user.S
--- old/linux/arch/alpha/lib/strlen_user.S Wed Jun 24 23:30:08 1998
+++ new/linux/arch/alpha/lib/strlen_user.S Sun Apr 25 02:54:08 1999
@@ -27,7 +27,8 @@
.align 3
__strlen_user:
- .prologue 0
+ ldgp $29,0($27) # we do exceptions -- we need the gp.
+ .prologue 1
EX( ldq_u t0, 0(a0) ) # load first quadword (a0 may be misaligned)
lda t1, -1(zero)
diff -ur --new-file old/linux/arch/alpha/lib/strncpy_from_user.S new/linux/arch/alpha/lib/strncpy_from_user.S
--- old/linux/arch/alpha/lib/strncpy_from_user.S Thu Feb 6 13:48:45 1997
+++ new/linux/arch/alpha/lib/strncpy_from_user.S Sun Apr 25 02:54:08 1999
@@ -31,6 +31,7 @@
.globl __strncpy_from_user
.ent __strncpy_from_user
.frame $30, 0, $26
+ .prologue 1
.align 3
$aligned:
@@ -99,6 +100,7 @@
/*** The Function Entry Point ***/
.align 3
__strncpy_from_user:
+ ldgp $29, 0($27) # we do exceptions -- we need the gp.
mov a0, v0 # save the string start
beq a2, $zerolength
diff -ur --new-file old/linux/arch/alpha/math-emu/fp-emul.c new/linux/arch/alpha/math-emu/fp-emul.c
--- old/linux/arch/alpha/math-emu/fp-emul.c Sun Aug 9 21:09:06 1998
+++ new/linux/arch/alpha/math-emu/fp-emul.c Mon May 10 18:55:21 1999
@@ -13,6 +13,7 @@
#define OPC_INTL 0x11
#define OPC_INTS 0x12
#define OPC_INTM 0x13
+#define OPC_FLTC 0x14
#define OPC_FLTV 0x15
#define OPC_FLTI 0x16
#define OPC_FLTL 0x17
@@ -21,33 +22,37 @@
#define OPC_JSR 0x1a
+#define OP_FUN(OP,FUN) ((OP << 26) | (FUN << 5))
+
/*
- * "Base" function codes for the FLTI-class instructions. These
- * instructions all have opcode 0x16. Note that in most cases these
- * actually correspond to the "chopped" form of the instruction. Not
- * to worry---we extract the qualifier bits separately and deal with
- * them separately. Notice that base function code 0x2c is used for
- * both CVTTS and CVTST. The other bits in the function code are used
- * to distinguish the two.
+ * "Base" function codes for the FLTI-class instructions.
+ * Note that in most cases these actually correspond to the "chopped"
+ * form of the instruction. Not to worry---we extract the qualifier
+ * bits separately and deal with them separately. Notice that base
+ * function code 0x2c is used for both CVTTS and CVTST. The other bits
+ * in the function code are used to distinguish the two.
*/
-#define FLTI_FUNC_ADDS 0x000
-#define FLTI_FUNC_ADDT 0x020
-#define FLTI_FUNC_CMPTEQ 0x025
-#define FLTI_FUNC_CMPTLT 0x026
-#define FLTI_FUNC_CMPTLE 0x027
-#define FLTI_FUNC_CMPTUN 0x024
-#define FLTI_FUNC_CVTTS_or_CVTST 0x02c
-#define FLTI_FUNC_CVTTQ 0x02f
-#define FLTI_FUNC_CVTQS 0x03c
-#define FLTI_FUNC_CVTQT 0x03e
-#define FLTI_FUNC_DIVS 0x003
-#define FLTI_FUNC_DIVT 0x023
-#define FLTI_FUNC_MULS 0x002
-#define FLTI_FUNC_MULT 0x022
-#define FLTI_FUNC_SUBS 0x001
-#define FLTI_FUNC_SUBT 0x021
+#define FLTI_FUNC_ADDS OP_FUN(OPC_FLTI, 0x000)
+#define FLTI_FUNC_ADDT OP_FUN(OPC_FLTI, 0x020)
+#define FLTI_FUNC_CMPTEQ OP_FUN(OPC_FLTI, 0x025)
+#define FLTI_FUNC_CMPTLT OP_FUN(OPC_FLTI, 0x026)
+#define FLTI_FUNC_CMPTLE OP_FUN(OPC_FLTI, 0x027)
+#define FLTI_FUNC_CMPTUN OP_FUN(OPC_FLTI, 0x024)
+#define FLTI_FUNC_CVTTS_or_CVTST OP_FUN(OPC_FLTI, 0x02c)
+#define FLTI_FUNC_CVTTQ OP_FUN(OPC_FLTI, 0x02f)
+#define FLTI_FUNC_CVTQS OP_FUN(OPC_FLTI, 0x03c)
+#define FLTI_FUNC_CVTQT OP_FUN(OPC_FLTI, 0x03e)
+#define FLTI_FUNC_DIVS OP_FUN(OPC_FLTI, 0x003)
+#define FLTI_FUNC_DIVT OP_FUN(OPC_FLTI, 0x023)
+#define FLTI_FUNC_MULS OP_FUN(OPC_FLTI, 0x002)
+#define FLTI_FUNC_MULT OP_FUN(OPC_FLTI, 0x022)
+#define FLTI_FUNC_SUBS OP_FUN(OPC_FLTI, 0x001)
+#define FLTI_FUNC_SUBT OP_FUN(OPC_FLTI, 0x021)
+
+#define FLTC_FUNC_SQRTS OP_FUN(OPC_FLTC, 0x00B)
+#define FLTC_FUNC_SQRTT OP_FUN(OPC_FLTC, 0x02B)
-#define FLTI_FUNC_CVTQL 0x030 /* opcode 0x17 */
+#define FLTL_FUNC_CVTQL OP_FUN(OPC_FLTL, 0x030)
#define MISC_TRAPB 0x0000
#define MISC_EXCB 0x0400
@@ -101,7 +106,7 @@
long
alpha_fp_emul (unsigned long pc)
{
- unsigned long opcode, fa, fb, fc, func, mode;
+ unsigned long op_fun, fa, fb, fc, func, mode;
unsigned long fpcw = current->tss.flags;
unsigned long va, vb, vc, res, fpcr;
__u32 insn;
@@ -110,10 +115,11 @@
get_user(insn, (__u32*)pc);
fc = (insn >> 0) & 0x1f; /* destination register */
- func = (insn >> 5) & 0x7ff;
fb = (insn >> 16) & 0x1f;
fa = (insn >> 21) & 0x1f;
- opcode = insn >> 26;
+ func = (insn >> 5) & 0x7ff;
+ mode = (insn >> 5) & 0xc0;
+ op_fun = insn & OP_FUN(0x3f, 0x3f);
va = alpha_read_fp_reg(fa);
vb = alpha_read_fp_reg(fb);
@@ -123,7 +129,6 @@
* Try the operation in software. First, obtain the rounding
* mode...
*/
- mode = func & 0xc0;
if (mode == 0xc0) {
/* dynamic---get rounding mode from fpcr: */
mode = ((fpcr & FPCR_DYN_MASK) >> FPCR_DYN_SHIFT) << ROUND_SHIFT;
@@ -135,8 +140,7 @@
something_is_wrong();
}
- /* least 6 bits contain operation code: */
- switch (func & 0x3f) {
+ switch (op_fun) {
case FLTI_FUNC_CMPTEQ:
res = ieee_CMPTEQ(va, vb, &vc);
break;
@@ -153,7 +157,7 @@
res = ieee_CMPTUN(va, vb, &vc);
break;
- case FLTI_FUNC_CVTQL:
+ case FLTL_FUNC_CVTQL:
/*
* Notice: We can get here only due to an integer
* overflow. Such overflows are reported as invalid
@@ -222,6 +226,14 @@
res = ieee_CVTTQ(mode, vb, &vc);
break;
+ case FLTC_FUNC_SQRTS:
+ res = ieee_SQRTS(mode, vb, &vc);
+ break;
+
+ case FLTC_FUNC_SQRTT:
+ res = ieee_SQRTT(mode, vb, &vc);
+ break;
+
default:
printk("alpha_fp_emul: unexpected function code %#lx at %#lx\n",
func & 0x3f, pc);
@@ -247,7 +259,7 @@
/* Update hardware control register */
fpcr &= (~FPCR_MASK | FPCR_DYN_MASK);
- fpcr |= ieee_swcr_to_fpcr(fpcw | (~fpcw&IEEE_STATUS_MASK)>>16);
+ fpcr |= ieee_swcr_to_fpcr(fpcw);
wrfpcr(fpcr);
/* Do we generate a signal? */
@@ -319,6 +331,7 @@
write_mask &= ~(1UL << rc);
break;
+ case OPC_FLTC:
case OPC_FLTV:
case OPC_FLTI:
case OPC_FLTL:
@@ -326,13 +339,11 @@
break;
}
if (!write_mask) {
- if ((opcode == OPC_FLTI || opcode == OPC_FLTL)
- && alpha_fp_emul(trigger_pc))
- {
- /* re-execute insns in trap-shadow: */
- regs->pc = trigger_pc + 4;
- MOD_DEC_USE_COUNT;
- return 1;
+ if (alpha_fp_emul(trigger_pc)) {
+ /* re-execute insns in trap-shadow: */
+ regs->pc = trigger_pc + 4;
+ MOD_DEC_USE_COUNT;
+ return 1;
}
break;
}
diff -ur --new-file old/linux/arch/alpha/math-emu/ieee-math.c new/linux/arch/alpha/math-emu/ieee-math.c
--- old/linux/arch/alpha/math-emu/ieee-math.c Sun Sep 6 19:34:33 1998
+++ new/linux/arch/alpha/math-emu/ieee-math.c Mon May 10 18:55:21 1999
@@ -22,6 +22,7 @@
* functions are used on exceptional numbers only (well, assuming you
* don't turn on the "trap on inexact"...).
*/
+#include
#include "ieee-math.h"
#define STICKY_S 0x20000000 /* both in longword 0 of fraction */
@@ -1339,4 +1340,42 @@
normalize(&op_c);
op_c.e -= 9; /* remove excess exp from original shift */
return round_t_ieee(f, &op_c, c);
+}
+
+/*
+ * Sqrt a = b, where a and b are ieee s-floating numbers. "f"
+ * contains the rounding mode etc.
+ */
+unsigned long
+ieee_SQRTS (int f, unsigned long a, unsigned long *b)
+{
+ fpclass_t a_type;
+ EXTENDED op_a, op_b;
+
+ *b = IEEE_QNaN;
+ a_type = extend_ieee(a, &op_a, SINGLE);
+ if (op_a.s == 0) {
+ /* FIXME -- handle positive denormals. */
+ send_sig(SIGFPE, current, 1);
+ }
+ return FPCR_INV;
+}
+
+/*
+ * Sqrt a = b, where a and b are ieee t-floating numbers. "f"
+ * contains the rounding mode etc.
+ */
+unsigned long
+ieee_SQRTT (int f, unsigned long a, unsigned long *b)
+{
+ fpclass_t a_type;
+ EXTENDED op_a, op_b;
+
+ *b = IEEE_QNaN;
+ a_type = extend_ieee(a, &op_a, DOUBLE);
+ if (op_a.s == 0) {
+ /* FIXME -- handle positive denormals. */
+ send_sig(SIGFPE, current, 1);
+ }
+ return FPCR_INV;
}
diff -ur --new-file old/linux/arch/alpha/math-emu/ieee-math.h new/linux/arch/alpha/math-emu/ieee-math.h
--- old/linux/arch/alpha/math-emu/ieee-math.h Fri Dec 22 07:22:05 1995
+++ new/linux/arch/alpha/math-emu/ieee-math.h Mon May 10 18:55:21 1999
@@ -48,5 +48,7 @@
unsigned long *c);
extern unsigned long ieee_DIVT (int rm, unsigned long a, unsigned long b,
unsigned long *c);
+extern unsigned long ieee_SQRTS (int rm, unsigned long a, unsigned long *b);
+extern unsigned long ieee_SQRTT (int rm, unsigned long a, unsigned long *b);
#endif /* __ieee_math_h__ */
diff -ur --new-file old/linux/arch/arm/defconfig new/linux/arch/arm/defconfig
--- old/linux/arch/arm/defconfig Wed Aug 5 08:42:22 1998
+++ new/linux/arch/arm/defconfig Thu Feb 25 19:46:46 1999
@@ -80,7 +80,6 @@
# CONFIG_PACKET is not set
# CONFIG_NETLINK is not set
# CONFIG_FIREWALL is not set
-# CONFIG_NET_ALIAS is not set
# CONFIG_FILTER is not set
CONFIG_UNIX=y
CONFIG_INET=y
diff -ur --new-file old/linux/arch/arm/kernel/sys_arm.c new/linux/arch/arm/kernel/sys_arm.c
--- old/linux/arch/arm/kernel/sys_arm.c Thu Dec 17 18:05:42 1998
+++ new/linux/arch/arm/kernel/sys_arm.c Sat May 8 20:14:01 1999
@@ -77,12 +77,14 @@
goto out;
if (!(a.flags & MAP_ANONYMOUS)) {
error = -EBADF;
- if (a.fd >= current->files->max_fds ||
- !(file = current->files->fd[a.fd]))
+ file = fget(a.fd);
+ if (!file)
goto out;
}
a.flags &= ~(MAP_EXECUTABLE | MAP_DENYWRITE);
error = do_mmap(file, a.addr, a.len, a.prot, a.flags, a.offset);
+ if (file)
+ fput(file);
out:
unlock_kernel();
return error;
diff -ur --new-file old/linux/arch/arm/kernel/time.c new/linux/arch/arm/kernel/time.c
--- old/linux/arch/arm/kernel/time.c Tue Jan 19 19:19:41 1999
+++ new/linux/arch/arm/kernel/time.c Fri Mar 12 08:24:55 1999
@@ -127,7 +127,6 @@
xtime = *tv;
time_adjust = 0; /* stop active adjtime() */
time_status |= STA_UNSYNC;
- time_state = TIME_ERROR; /* p. 24, (a) */
time_maxerror = NTP_PHASE_LIMIT;
time_esterror = NTP_PHASE_LIMIT;
sti ();
diff -ur --new-file old/linux/arch/arm/mm/Makefile new/linux/arch/arm/mm/Makefile
--- old/linux/arch/arm/mm/Makefile Fri May 8 09:42:38 1998
+++ new/linux/arch/arm/mm/Makefile Sat May 8 20:06:56 1999
@@ -8,37 +8,30 @@
# Note 2! The CFLAGS definition is now in the main makefile...
all: lib first_rule
-ifeq ($(MACHINE),a5k)
-MMARCH=arc
-else
-MMARCH=$(MACHINE)
-endif
O_TARGET := mm.o
-O_OBJS := init.o extable.o fault-$(PROCESSOR).o mm-$(MMARCH).o
+O_OBJS := init.o extable.o fault-$(PROCESSOR).o small_page.o
ifeq ($(PROCESSOR),armo)
O_OBJS += proc-arm2,3.o
endif
ifeq ($(PROCESSOR),armv)
- O_OBJS += small_page.o proc-arm6,7.o proc-sa110.o
+ O_OBJS += mm-$(MACHINE).o proc-arm6,7.o proc-sa110.o ioremap.o
endif
include $(TOPDIR)/Rules.make
-proc-arm2,3.o: ../lib/constants.h
-proc-arm6,7.o: ../lib/constants.h
-proc-sa110.o: ../lib/constants.h
-
%.o: %.S
-ifneq ($(CONFIG_BINUTILS_NEW),y)
- $(CC) $(CFLAGS) -D__ASSEMBLY__ -E $< | tr ';$$' '\n#' > ..$@.tmp.s
- $(CC) $(CFLAGS:-pipe=) -c -o $@ ..$@.tmp.s
- $(RM) ..$@.tmp.s
-else
$(CC) $(CFLAGS) -D__ASSEMBLY__ -c -o $@ $<
-endif
.PHONY: lib
lib:; @$(MAKE) -C ../lib constants.h
+
+# Special dependencies
+fault-armv.o: fault-common.c
+fault-armo.o: fault-common.c
+proc-arm2,3.o: ../lib/constants.h
+proc-arm6,7.o: ../lib/constants.h
+proc-sa110.o: ../lib/constants.h
+
diff -ur --new-file old/linux/arch/arm/mm/fault-armo.c new/linux/arch/arm/mm/fault-armo.c
--- old/linux/arch/arm/mm/fault-armo.c Thu Dec 17 18:05:42 1998
+++ new/linux/arch/arm/mm/fault-armo.c Sat May 8 20:06:56 1999
@@ -1,11 +1,10 @@
/*
- * linux/arch/arm/mm/fault.c
+ * linux/arch/arm/mm/fault-armo.c
*
* Copyright (C) 1995 Linus Torvalds
- * Modifications for ARM processor (c) 1995, 1996 Russell King
+ * Modifications for ARM processor (c) 1995-1999 Russell King
*/
-#include
#include
#include
#include
@@ -15,8 +14,7 @@
#include
#include
#include
-#include
-#include
+#include
#include
#include
@@ -27,35 +25,32 @@
#define FAULT_CODE_WRITE 0x02
#define FAULT_CODE_USER 0x01
-struct pgtable_cache_struct quicklists;
+#define DO_COW(m) ((m) & (FAULT_CODE_WRITE|FAULT_CODE_FORCECOW))
+#define READ_FAULT(m) (!((m) & FAULT_CODE_WRITE))
-void __bad_pmd(pmd_t *pmd)
+#include "fault-common.c"
+
+static void *alloc_table(int size, int prio)
{
- printk("Bad pmd in pte_alloc: %08lx\n", pmd_val(*pmd));
-#ifdef CONFIG_DEBUG_ERRORS
- __backtrace();
-#endif
- set_pmd(pmd, mk_pmd(BAD_PAGETABLE));
+ if (size != 128)
+ printk("invalid table size\n");
+ return (void *)get_page_8k(prio);
}
-void __bad_pmd_kernel(pmd_t *pmd)
+void free_table(void *table)
{
- printk("Bad pmd in pte_alloc_kernel: %08lx\n", pmd_val(*pmd));
-#ifdef CONFIG_DEBUG_ERRORS
- __backtrace();
-#endif
- set_pmd(pmd, mk_pmd(BAD_PAGETABLE));
+ free_page_8k((unsigned long)table);
}
pgd_t *get_pgd_slow(void)
{
- pgd_t *pgd = (pgd_t *) kmalloc(PTRS_PER_PGD * BYTES_PER_PTR, GFP_KERNEL);
+ pgd_t *pgd = (pgd_t *)alloc_table(PTRS_PER_PGD * BYTES_PER_PTR, GFP_KERNEL);
pgd_t *init;
-
+
if (pgd) {
init = pgd_offset(&init_mm, 0);
- memzero (pgd, USER_PTRS_PER_PGD * BYTES_PER_PTR);
- memcpy (pgd + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD,
+ memzero(pgd, USER_PTRS_PER_PGD * BYTES_PER_PTR);
+ memcpy(pgd + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD,
(PTRS_PER_PGD - USER_PTRS_PER_PGD) * BYTES_PER_PTR);
}
return pgd;
@@ -65,17 +60,17 @@
{
pte_t *pte;
- pte = (pte_t *) kmalloc (PTRS_PER_PTE * BYTES_PER_PTR, GFP_KERNEL);
+ pte = (pte_t *)alloc_table(PTRS_PER_PTE * BYTES_PER_PTR, GFP_KERNEL);
if (pmd_none(*pmd)) {
if (pte) {
- memzero (pte, PTRS_PER_PTE * BYTES_PER_PTR);
+ memzero(pte, PTRS_PER_PTE * BYTES_PER_PTR);
set_pmd(pmd, mk_pmd(pte));
return pte + offset;
}
set_pmd(pmd, mk_pmd(BAD_PAGETABLE));
return NULL;
}
- kfree (pte);
+ free_table((void *)pte);
if (pmd_bad(*pmd)) {
__bad_pmd(pmd);
return NULL;
@@ -83,126 +78,22 @@
return (pte_t *) pmd_page(*pmd) + offset;
}
-extern void die_if_kernel(char *msg, struct pt_regs *regs, unsigned int err, unsigned int ret);
-
-static void kernel_page_fault (unsigned long addr, int mode, struct pt_regs *regs,
- struct task_struct *tsk, struct mm_struct *mm)
-{
- /*
- * Oops. The kernel tried to access some bad page. We'll have to
- * terminate things with extreme prejudice.
- */
- pgd_t *pgd;
- if (addr < PAGE_SIZE)
- printk (KERN_ALERT "Unable to handle kernel NULL pointer dereference");
- else
- printk (KERN_ALERT "Unable to handle kernel paging request");
- printk (" at virtual address %08lx\n", addr);
- printk (KERN_ALERT "current->tss.memmap = %08lX\n", tsk->tss.memmap);
- pgd = pgd_offset (mm, addr);
- printk (KERN_ALERT "*pgd = %08lx", pgd_val (*pgd));
- if (!pgd_none (*pgd)) {
- pmd_t *pmd;
- pmd = pmd_offset (pgd, addr);
- printk (", *pmd = %08lx", pmd_val (*pmd));
- if (!pmd_none (*pmd))
- printk (", *pte = %08lx", pte_val (*pte_offset (pmd, addr)));
- }
- printk ("\n");
- die_if_kernel ("Oops", regs, mode, SIGKILL);
- do_exit (SIGKILL);
-}
-
-static void
-handle_dataabort (unsigned long addr, int mode, struct pt_regs *regs)
-{
- struct task_struct *tsk;
- struct mm_struct *mm;
- struct vm_area_struct *vma;
- unsigned long fixup;
-
- lock_kernel();
- tsk = current;
- mm = tsk->mm;
-
- down(&mm->mmap_sem);
- vma = find_vma (mm, addr);
- if (!vma)
- goto bad_area;
- if (addr >= vma->vm_start)
- goto good_area;
- if (!(vma->vm_flags & VM_GROWSDOWN) || expand_stack (vma, addr))
- goto bad_area;
-
- /*
- * Ok, we have a good vm_area for this memory access, so
- * we can handle it..
- */
-good_area:
- if (!(mode & FAULT_CODE_WRITE)) { /* write? */
- if (!(vma->vm_flags & (VM_READ|VM_EXEC)))
- goto bad_area;
- } else {
- if (!(vma->vm_flags & VM_WRITE))
- goto bad_area;
- }
- handle_mm_fault (tsk, vma, addr, mode & (FAULT_CODE_WRITE|FAULT_CODE_FORCECOW));
- up(&mm->mmap_sem);
- goto out;
-
- /*
- * Something tried to access memory that isn't in our memory map..
- * Fix it, but check if it's kernel or user first..
- */
-bad_area:
- up(&mm->mmap_sem);
- if (mode & FAULT_CODE_USER) {
-//extern int console_loglevel;
-//cli();
- tsk->tss.error_code = mode;
- tsk->tss.trap_no = 14;
-//console_loglevel = 9;
- printk ("%s: memory violation at pc=0x%08lx, lr=0x%08lx (bad address=0x%08lx, code %d)\n",
- tsk->comm, regs->ARM_pc, regs->ARM_lr, addr, mode);
-//#ifdef DEBUG
- show_regs (regs);
- c_backtrace (regs->ARM_fp, 0);
-//#endif
- force_sig(SIGSEGV, tsk);
-//while (1);
- goto out;
- }
-
- /* Are we prepared to handle this kernel fault? */
- if ((fixup = search_exception_table(instruction_pointer(regs))) != 0) {
- printk(KERN_DEBUG "%s: Exception at [<%lx>] addr=%lx (fixup: %lx)\n",
- tsk->comm, regs->ARM_pc, addr, fixup);
- regs->ARM_pc = fixup;
- goto out;
- }
-
-
- kernel_page_fault (addr, mode, regs, tsk, mm);
-out:
- unlock_kernel();
-}
-
/*
* Handle a data abort. Note that we have to handle a range of addresses
* on ARM2/3 for ldm. If both pages are zero-mapped, then we have to force
- * a copy-on-write
+ * a copy-on-write. However, on the second page, we always force COW.
*/
asmlinkage void
-do_DataAbort (unsigned long min_addr, unsigned long max_addr, int mode, struct pt_regs *regs)
+do_DataAbort(unsigned long min_addr, unsigned long max_addr, int mode, struct pt_regs *regs)
{
- handle_dataabort (min_addr, mode, regs);
+ do_page_fault(min_addr, mode, regs);
if ((min_addr ^ max_addr) >> PAGE_SHIFT)
- handle_dataabort (max_addr, mode | FAULT_CODE_FORCECOW, regs);
+ do_page_fault(max_addr, mode | FAULT_CODE_FORCECOW, regs);
}
asmlinkage int
-do_PrefetchAbort (unsigned long addr, int mode, struct pt_regs *regs)
+do_PrefetchAbort(unsigned long addr, struct pt_regs *regs)
{
#if 0
if (the memc mapping for this page exists - can check now...) {
@@ -210,6 +101,6 @@
return 0;
}
#endif
- handle_dataabort (addr, mode, regs);
+ do_page_fault(addr, FAULT_CODE_USER|FAULT_CODE_PREFETCH, regs);
return 1;
}
diff -ur --new-file old/linux/arch/arm/mm/fault-armv.c new/linux/arch/arm/mm/fault-armv.c
--- old/linux/arch/arm/mm/fault-armv.c Thu Dec 17 18:05:42 1998
+++ new/linux/arch/arm/mm/fault-armv.c Sat May 8 20:06:56 1999
@@ -1,10 +1,11 @@
/*
- * linux/arch/arm/mm/fault.c
+ * linux/arch/arm/mm/fault-armv.c
*
* Copyright (C) 1995 Linus Torvalds
- * Modifications for ARM processor (c) 1995, 1996 Russell King
+ * Modifications for ARM processor (c) 1995-1999 Russell King
*/
+#include
#include
#include
#include
@@ -14,43 +15,37 @@
#include
#include
#include
-#include
-#include
+#include
+#include
+#include
#include
#include
#include
+#include
#define FAULT_CODE_READ 0x02
#define FAULT_CODE_USER 0x01
-struct pgtable_cache_struct quicklists;
+#define DO_COW(m) (!((m) & FAULT_CODE_READ))
+#define READ_FAULT(m) ((m) & FAULT_CODE_READ)
-void __bad_pmd(pmd_t *pmd)
-{
- printk("Bad pmd in pte_alloc: %08lx\n", pmd_val(*pmd));
- set_pmd(pmd, mk_user_pmd(BAD_PAGETABLE));
-}
-
-void __bad_pmd_kernel(pmd_t *pmd)
-{
- printk("Bad pmd in pte_alloc: %08lx\n", pmd_val(*pmd));
- set_pmd(pmd, mk_kernel_pmd(BAD_PAGETABLE));
-}
+#include "fault-common.c"
pgd_t *get_pgd_slow(void)
{
/*
* need to get a 16k page for level 1
*/
- pgd_t *pgd = (pgd_t *) __get_free_pages(GFP_KERNEL,2);
+ pgd_t *pgd = (pgd_t *)__get_free_pages(GFP_KERNEL,2);
pgd_t *init;
-
+
if (pgd) {
init = pgd_offset(&init_mm, 0);
- memzero ((void *)pgd, USER_PTRS_PER_PGD * BYTES_PER_PTR);
- memcpy (pgd + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD,
+ memzero(pgd, USER_PTRS_PER_PGD * BYTES_PER_PTR);
+ memcpy(pgd + USER_PTRS_PER_PGD, init + USER_PTRS_PER_PGD,
(PTRS_PER_PGD - USER_PTRS_PER_PGD) * BYTES_PER_PTR);
+ clean_cache_area(pgd, PTRS_PER_PGD * BYTES_PER_PTR);
}
return pgd;
}
@@ -59,17 +54,19 @@
{
pte_t *pte;
- pte = (pte_t *) get_small_page(GFP_KERNEL);
+ pte = (pte_t *)get_page_2k(GFP_KERNEL);
if (pmd_none(*pmd)) {
if (pte) {
- memzero (pte, PTRS_PER_PTE * BYTES_PER_PTR);
+ memzero(pte, 2 * PTRS_PER_PTE * BYTES_PER_PTR);
+ clean_cache_area(pte, PTRS_PER_PTE * BYTES_PER_PTR);
+ pte += PTRS_PER_PTE;
set_pmd(pmd, mk_user_pmd(pte));
return pte + offset;
}
set_pmd(pmd, mk_user_pmd(BAD_PAGETABLE));
return NULL;
}
- free_small_page ((unsigned long) pte);
+ free_page_2k((unsigned long)pte);
if (pmd_bad(*pmd)) {
__bad_pmd(pmd);
return NULL;
@@ -81,17 +78,19 @@
{
pte_t *pte;
- pte = (pte_t *) get_small_page(GFP_KERNEL);
+ pte = (pte_t *)get_page_2k(GFP_KERNEL);
if (pmd_none(*pmd)) {
if (pte) {
- memzero (pte, PTRS_PER_PTE * BYTES_PER_PTR);
+ memzero(pte, 2 * PTRS_PER_PTE * BYTES_PER_PTR);
+ clean_cache_area(pte, PTRS_PER_PTE * BYTES_PER_PTR);
+ pte += PTRS_PER_PTE;
set_pmd(pmd, mk_kernel_pmd(pte));
return pte + offset;
}
set_pmd(pmd, mk_kernel_pmd(BAD_PAGETABLE));
return NULL;
}
- free_small_page ((unsigned long) pte);
+ free_page_2k((unsigned long)pte);
if (pmd_bad(*pmd)) {
__bad_pmd_kernel(pmd);
return NULL;
@@ -99,10 +98,8 @@
return (pte_t *) pmd_page(*pmd) + offset;
}
-extern void die_if_kernel(char *msg, struct pt_regs *regs, unsigned int err, unsigned int ret);
-
#ifdef DEBUG
-static int sp_valid (unsigned long *sp)
+static int sp_valid(unsigned long *sp)
{
unsigned long addr = (unsigned long) sp;
@@ -114,187 +111,371 @@
}
#endif
-static void kernel_page_fault (unsigned long addr, int mode, struct pt_regs *regs,
- struct task_struct *tsk, struct mm_struct *mm)
+#ifdef CONFIG_ALIGNMENT_TRAP
+/*
+ * 32-bit misaligned trap handler (c) 1998 San Mehat (CCC) -July 1998
+ * /proc/sys/debug/alignment, modified and integrated into
+ * Linux 2.1 by Russell King
+ *
+ * NOTE!!! This is not portable onto the ARM6/ARM7 processors yet. Also,
+ * it seems to give a severe performance impact (1 abort/ms - NW runs at
+ * ARM6 speeds) with GCC 2.7.2.2 - needs checking with a later GCC/EGCS.
+ *
+ * IMHO, I don't think that the trap handler is advantageous on ARM6,7
+ * processors (they'll run like an ARM3). We'll see.
+ */
+#define CODING_BITS(i) (i & 0x0e000000)
+
+#define LDST_I_BIT(i) (i & (1 << 26)) /* Immediate constant */
+#define LDST_P_BIT(i) (i & (1 << 24)) /* Preindex */
+#define LDST_U_BIT(i) (i & (1 << 23)) /* Add offset */
+#define LDST_W_BIT(i) (i & (1 << 21)) /* Writeback */
+#define LDST_L_BIT(i) (i & (1 << 20)) /* Load */
+
+#define LDSTH_I_BIT(i) (i & (1 << 22)) /* half-word immed */
+#define LDM_S_BIT(i) (i & (1 << 22)) /* write CPSR from SPSR */
+
+#define RN_BITS(i) ((i >> 16) & 15) /* Rn */
+#define RD_BITS(i) ((i >> 12) & 15) /* Rd */
+#define RM_BITS(i) (i & 15) /* Rm */
+
+#define REGMASK_BITS(i) (i & 0xffff)
+#define OFFSET_BITS(i) (i & 0x0fff)
+
+#define IS_SHIFT(i) (i & 0x0ff0)
+#define SHIFT_BITS(i) ((i >> 7) & 0x1f)
+#define SHIFT_TYPE(i) (i & 0x60)
+#define SHIFT_LSL 0x00
+#define SHIFT_LSR 0x20
+#define SHIFT_ASR 0x40
+#define SHIFT_RORRRX 0x60
+
+static unsigned long ai_user;
+static unsigned long ai_sys;
+static unsigned long ai_skipped;
+static unsigned long ai_half;
+static unsigned long ai_word;
+static unsigned long ai_multi;
+
+static int proc_alignment_read(char *page, char **start, off_t off,
+ int count, int *eof, void *data)
{
- /*
- * Oops. The kernel tried to access some bad page. We'll have to
- * terminate things with extreme prejudice.
- */
- pgd_t *pgd;
- if (addr < PAGE_SIZE)
- printk (KERN_ALERT "Unable to handle kernel NULL pointer dereference");
- else
- printk (KERN_ALERT "Unable to handle kernel paging request");
- printk (" at virtual address %08lx\n", addr);
- printk (KERN_ALERT "current->tss.memmap = %08lX\n", tsk->tss.memmap);
- pgd = pgd_offset (mm, addr);
- printk (KERN_ALERT "*pgd = %08lx", pgd_val (*pgd));
- if (!pgd_none (*pgd)) {
- pmd_t *pmd;
- pmd = pmd_offset (pgd, addr);
- printk (", *pmd = %08lx", pmd_val (*pmd));
- if (!pmd_none (*pmd))
- printk (", *pte = %08lx", pte_val (*pte_offset (pmd, addr)));
- }
- printk ("\n");
- die_if_kernel ("Oops", regs, mode, SIGKILL);
- do_exit (SIGKILL);
+ char *p = page;
+ int len;
+
+ p += sprintf(p, "User:\t\t%li\n", ai_user);
+ p += sprintf(p, "System:\t\t%li\n", ai_sys);
+ p += sprintf(p, "Skipped:\t%li\n", ai_skipped);
+ p += sprintf(p, "Half:\t\t%li\n", ai_half);
+ p += sprintf(p, "Word:\t\t%li\n", ai_word);
+ p += sprintf(p, "Multi:\t\t%li\n", ai_multi);
+
+ len = (p - page) - off;
+ if (len < 0)
+ len = 0;
+
+ *eof = (len <= count) ? 1 : 0;
+ *start = page + off;
+
+ return len;
}
-static void page_fault (unsigned long addr, int mode, struct pt_regs *regs)
+/*
+ * This needs to be done after sysctl_init, otherwise sys/
+ * will be overwritten.
+ */
+void __init alignment_init(void)
{
- struct task_struct *tsk;
- struct mm_struct *mm;
- struct vm_area_struct *vma;
- unsigned long fixup;
-
- lock_kernel();
- tsk = current;
- mm = tsk->mm;
-
- down(&mm->mmap_sem);
- vma = find_vma (mm, addr);
- if (!vma)
- goto bad_area;
- if (vma->vm_start <= addr)
- goto good_area;
- if (!(vma->vm_flags & VM_GROWSDOWN) || expand_stack (vma, addr))
- goto bad_area;
+ struct proc_dir_entry *e;
- /*
- * Ok, we have a good vm_area for this memory access, so
- * we can handle it..
- */
-good_area:
- if (mode & FAULT_CODE_READ) { /* read? */
- if (!(vma->vm_flags & (VM_READ|VM_EXEC)))
- goto bad_area;
- } else {
- if (!(vma->vm_flags & VM_WRITE))
- goto bad_area;
+ e = create_proc_entry("sys/debug/alignment", S_IFREG | S_IRUGO, NULL);
+
+ if (e)
+ e->read_proc = proc_alignment_read;
+}
+
+static int
+do_alignment_exception(struct pt_regs *regs)
+{
+ unsigned int instr, rd, rn, correction, nr_regs, regbits;
+ unsigned long eaddr;
+ union { unsigned long un; signed long sn; } offset;
+
+ if (user_mode(regs)) {
+ set_cr(cr_no_alignment);
+ ai_user += 1;
+ return 0;
}
- handle_mm_fault (tsk, vma, addr & PAGE_MASK, !(mode & FAULT_CODE_READ));
- up(&mm->mmap_sem);
- goto out;
- /*
- * Something tried to access memory that isn't in our memory map..
- * Fix it, but check if it's kernel or user first..
- */
-bad_area:
- up(&mm->mmap_sem);
- if (mode & FAULT_CODE_USER) {
- tsk->tss.error_code = mode;
- tsk->tss.trap_no = 14;
- printk ("%s: memory violation at pc=0x%08lx, lr=0x%08lx (bad address=0x%08lx, code %d)\n",
- tsk->comm, regs->ARM_pc, regs->ARM_lr, addr, mode);
-#ifdef DEBUG
- {
- unsigned int i, j;
- unsigned long *sp = (unsigned long *) (regs->ARM_sp - 128);
- for (j = 0; j < 20 && sp_valid (sp); j++) {
- printk ("%p: ", sp);
- for (i = 0; i < 8 && sp_valid (sp); i += 1, sp++)
- printk ("%08lx ", *sp);
- printk ("\n");
+ ai_sys += 1;
+
+ instr = *(unsigned long *)instruction_pointer(regs);
+ correction = 4; /* sometimes 8 on ARMv3 */
+ regs->ARM_pc += correction + 4;
+
+ rd = RD_BITS(instr);
+ rn = RN_BITS(instr);
+ eaddr = regs->uregs[rn];
+
+ switch(CODING_BITS(instr)) {
+ case 0x00000000:
+ if ((instr & 0x0ff00ff0) == 0x01000090) {
+ ai_skipped += 1;
+ printk(KERN_ERR "Unaligned trap: not handling swp instruction\n");
+ return 1;
+ }
+
+ if (((instr & 0x0e000090) == 0x00000090) && (instr & 0x60) != 0) {
+ ai_half += 1;
+ if (LDSTH_I_BIT(instr))
+ offset.un = (instr & 0xf00) >> 4 | (instr & 15);
+ else
+ offset.un = regs->uregs[RM_BITS(instr)];
+
+ if (LDST_P_BIT(instr)) {
+ if (LDST_U_BIT(instr))
+ eaddr += offset.un;
+ else
+ eaddr -= offset.un;
}
+
+ if (LDST_L_BIT(instr))
+ regs->uregs[rd] = get_unaligned((unsigned short *)eaddr);
+ else
+ put_unaligned(regs->uregs[rd], (unsigned short *)eaddr);
+
+ /* signed half-word? */
+ if (instr & 0x40)
+ regs->uregs[rd] = (long)((short) regs->uregs[rd]);
+
+ if (!LDST_P_BIT(instr)) {
+ if (LDST_U_BIT(instr))
+ eaddr += offset.un;
+ else
+ eaddr -= offset.un;
+ regs->uregs[rn] = eaddr;
+ } else if (LDST_W_BIT(instr))
+ regs->uregs[rn] = eaddr;
+ break;
}
- show_regs (regs);
- c_backtrace (regs->ARM_fp, regs->ARM_cpsr);
-#endif
- force_sig(SIGSEGV, tsk);
- goto out;
- }
- /* Are we prepared to handle this kernel fault? */
- if ((fixup = search_exception_table(instruction_pointer(regs))) != 0) {
- printk(KERN_DEBUG "%s: Exception at [<%lx>] addr=%lx (fixup: %lx)\n",
- tsk->comm, regs->ARM_pc, addr, fixup);
- regs->ARM_pc = fixup;
- goto out;
+ default:
+ ai_skipped += 1;
+ panic("Alignment trap: not handling instruction %08X at %08lX",
+ instr, regs->ARM_pc - correction - 4);
+ break;
+
+ case 0x04000000:
+ offset.un = OFFSET_BITS(instr);
+ goto ldr_str;
+
+ case 0x06000000:
+ offset.un = regs->uregs[RM_BITS(instr)];
+
+ if (IS_SHIFT(instr)) {
+ unsigned int shiftval = SHIFT_BITS(instr);
+
+ switch(SHIFT_TYPE(instr)) {
+ case SHIFT_LSL:
+ offset.un <<= shiftval;
+ break;
+
+ case SHIFT_LSR:
+ offset.un >>= shiftval;
+ break;
+
+ case SHIFT_ASR:
+ offset.sn >>= shiftval;
+ break;
+
+ case SHIFT_RORRRX:
+ if (shiftval == 0) {
+ offset.un >>= 1;
+ if (regs->ARM_cpsr & CC_C_BIT)
+ offset.un |= 1 << 31;
+ } else
+ offset.un = offset.un >> shiftval |
+ offset.un << (32 - shiftval);
+ break;
+ }
+ }
+
+ ldr_str:
+ ai_word += 1;
+ if (LDST_P_BIT(instr)) {
+ if (LDST_U_BIT(instr))
+ eaddr += offset.un;
+ else
+ eaddr -= offset.un;
+ } else {
+ if (LDST_W_BIT(instr)) {
+ printk(KERN_ERR "Not handling ldrt/strt correctly\n");
+ return 1;
+ }
+ }
+
+ if (LDST_L_BIT(instr)) {
+ regs->uregs[rd] = get_unaligned((unsigned long *)eaddr);
+ if (rd == 15)
+ correction = 0;
+ } else
+ put_unaligned(regs->uregs[rd], (unsigned long *)eaddr);
+
+ if (!LDST_P_BIT(instr)) {
+ if (LDST_U_BIT(instr))
+ eaddr += offset.un;
+ else
+ eaddr -= offset.un;
+
+ regs->uregs[rn] = eaddr;
+ } else if (LDST_W_BIT(instr))
+ regs->uregs[rn] = eaddr;
+ break;
+
+ case 0x08000000:
+ if (LDM_S_BIT(instr))
+ panic("Alignment trap: not handling LDM with s-bit\n");
+ ai_multi += 1;
+
+ for (regbits = REGMASK_BITS(instr), nr_regs = 0; regbits; regbits >>= 1)
+ nr_regs += 4;
+
+ if (!LDST_U_BIT(instr))
+ eaddr -= nr_regs;
+
+ if ((LDST_U_BIT(instr) == 0 && LDST_P_BIT(instr) == 0) ||
+ (LDST_U_BIT(instr) && LDST_P_BIT(instr)))
+ eaddr += 4;
+
+ for (regbits = REGMASK_BITS(instr), rd = 0; regbits; regbits >>= 1, rd += 1)
+ if (regbits & 1) {
+ if (LDST_L_BIT(instr)) {
+ regs->uregs[rd] = get_unaligned((unsigned long *)eaddr);
+ if (rd == 15)
+ correction = 0;
+ } else
+ put_unaligned(regs->uregs[rd], (unsigned long *)eaddr);
+ eaddr += 4;
+ }
+
+ if (LDST_W_BIT(instr)) {
+ if (LDST_P_BIT(instr) && !LDST_U_BIT(instr))
+ eaddr -= nr_regs;
+ else if (LDST_P_BIT(instr))
+ eaddr -= 4;
+ else if (!LDST_U_BIT(instr))
+ eaddr -= 4 + nr_regs;
+ regs->uregs[rn] = eaddr;
+ }
+ break;
}
- kernel_page_fault (addr, mode, regs, tsk, mm);
-out:
- unlock_kernel();
+ regs->ARM_pc -= correction;
+
+ return 0;
}
-/*
- * Handle a data abort. Note that we have to handle a range of addresses
- * on ARM2/3 for ldm. If both pages are zero-mapped, then we have to force
- * a copy-on-write
- */
+#endif
+
asmlinkage void
-do_DataAbort (unsigned long addr, int fsr, int error_code, struct pt_regs *regs)
+do_DataAbort(unsigned long addr, int fsr, int error_code, struct pt_regs *regs)
{
if (user_mode(regs))
error_code |= FAULT_CODE_USER;
+
#define DIE(signr,nam)\
force_sig(signr, current);\
- die_if_kernel(nam, regs, fsr, signr);\
- break;
+ die(nam, regs, fsr);\
+ do_exit(signr);\
+ break
switch (fsr & 15) {
- case 2:
- DIE(SIGKILL, "Terminal exception")
+ /*
+ * 0 - vector exception
+ */
case 0:
- DIE(SIGSEGV, "Vector exception")
+ force_sig(SIGSEGV, current);
+ if (!user_mode(regs)) {
+ die("vector exception", regs, fsr);
+ do_exit(SIGSEGV);
+ }
+ break;
+
+ /*
+ * 15 - permission fault on page
+ * 5 - page-table entry descriptor fault
+ * 7 - first-level descriptor fault
+ */
+ case 15: case 5: case 7:
+ do_page_fault(addr, error_code, regs);
+ break;
+
+ /*
+ * 13 - permission fault on section
+ */
+ case 13:
+ force_sig(SIGSEGV, current);
+ if (!user_mode(regs)) {
+ die("section permission fault", regs, fsr);
+ do_exit(SIGSEGV);
+ } else {
+#ifdef CONFIG_DEBUG_USER
+ printk("%s: permission fault on section, "
+ "address=0x%08lx, code %d\n",
+ current->comm, addr, error_code);
+#ifdef DEBUG
+ {
+ unsigned int i, j;
+ unsigned long *sp;
+
+ sp = (unsigned long *) (regs->ARM_sp - 128);
+ for (j = 0; j < 20 && sp_valid(sp); j++) {
+ printk("%p: ", sp);
+ for (i = 0; i < 8 && sp_valid(sp); i += 1, sp++)
+ printk("%08lx ", *sp);
+ printk("\n");
+ }
+ show_regs(regs);
+ c_backtrace(regs->ARM_fp, regs->ARM_cpsr);
+ }
+#endif
+#endif
+ }
+ break;
+
case 1:
case 3:
- DIE(SIGBUS, "Alignment exception")
+#ifdef CONFIG_ALIGNMENT_TRAP
+ if (!do_alignment_exception(regs))
+ break;
+#endif
+ /*
+ * this should never happen
+ */
+ DIE(SIGBUS, "Alignment exception");
+ break;
+
+ case 2:
+ DIE(SIGKILL, "Terminal exception");
case 12:
case 14:
- DIE(SIGBUS, "External abort on translation")
+ DIE(SIGBUS, "External abort on translation");
case 9:
case 11:
- DIE(SIGSEGV, "Domain fault")
- case 13:/* permission fault on section */
-#ifdef DEBUG
- {
- unsigned int i, j;
- unsigned long *sp;
-
- printk ("%s: section permission fault (bad address=0x%08lx, code %d)\n",
- current->comm, addr, error_code);
- sp = (unsigned long *) (regs->ARM_sp - 128);
- for (j = 0; j < 20 && sp_valid (sp); j++) {
- printk ("%p: ", sp);
- for (i = 0; i < 8 && sp_valid (sp); i += 1, sp++)
- printk ("%08lx ", *sp);
- printk ("\n");
- }
- show_regs (regs);
- c_backtrace(regs->ARM_fp, regs->ARM_cpsr);
- }
-#endif
- DIE(SIGSEGV, "Permission fault")
+ DIE(SIGSEGV, "Domain fault");
- case 15:/* permission fault on page */
- case 5: /* page-table entry descriptor fault */
- case 7: /* first-level descriptor fault */
- page_fault (addr, error_code, regs);
- break;
case 4:
case 6:
- DIE(SIGBUS, "External abort on linefetch")
+ DIE(SIGBUS, "External abort on linefetch");
case 8:
case 10:
- DIE(SIGBUS, "External abort on non-linefetch")
+ DIE(SIGBUS, "External abort on non-linefetch");
}
}
asmlinkage int
-do_PrefetchAbort (unsigned long addr, struct pt_regs *regs)
+do_PrefetchAbort(unsigned long addr, struct pt_regs *regs)
{
-#if 0
- /* does this still apply ? */
- if (the memc mapping for this page exists - can check now...) {
- printk ("Page in, but got abort (undefined instruction?)\n");
- return 0;
- }
-#endif
- page_fault (addr, FAULT_CODE_USER|FAULT_CODE_READ, regs);
+ do_page_fault(addr, FAULT_CODE_USER|FAULT_CODE_READ, regs);
return 1;
}
-
diff -ur --new-file old/linux/arch/arm/mm/fault-common.c new/linux/arch/arm/mm/fault-common.c
--- old/linux/arch/arm/mm/fault-common.c Thu Jan 1 01:00:00 1970
+++ new/linux/arch/arm/mm/fault-common.c Sat May 8 20:06:56 1999
@@ -0,0 +1,188 @@
+/*
+ * linux/arch/arm/mm/fault-common.c
+ *
+ * Copyright (C) 1995 Linus Torvalds
+ * Modifications for ARM processor (c) 1995-1999 Russell King
+ */
+#include
+
+extern void die(char *msg, struct pt_regs *regs, unsigned int err);
+
+void __bad_pmd(pmd_t *pmd)
+{
+ printk("Bad pmd in pte_alloc: %08lx\n", pmd_val(*pmd));
+#ifdef CONFIG_DEBUG_ERRORS
+ __backtrace();
+#endif
+ set_pmd(pmd, mk_user_pmd(BAD_PAGETABLE));
+}
+
+void __bad_pmd_kernel(pmd_t *pmd)
+{
+ printk("Bad pmd in pte_alloc_kernel: %08lx\n", pmd_val(*pmd));
+#ifdef CONFIG_DEBUG_ERRORS
+ __backtrace();
+#endif
+ set_pmd(pmd, mk_kernel_pmd(BAD_PAGETABLE));
+}
+
+static void
+kernel_page_fault(unsigned long addr, int mode, struct pt_regs *regs,
+ struct task_struct *tsk, struct mm_struct *mm)
+{
+ char *reason;
+ /*
+ * Oops. The kernel tried to access some bad page. We'll have to
+ * terminate things with extreme prejudice.
+ */
+ pgd_t *pgd;
+
+ if (addr < PAGE_SIZE)
+ reason = "NULL pointer dereference";
+ else
+ reason = "paging request";
+
+ printk(KERN_ALERT "Unable to handle kernel %s at virtual address %08lx\n",
+ reason, addr);
+ printk(KERN_ALERT "memmap = %08lX, pgd = %p\n", tsk->tss.memmap, mm->pgd);
+ pgd = pgd_offset(mm, addr);
+ printk(KERN_ALERT "*pgd = %08lx", pgd_val(*pgd));
+
+ do {
+ pmd_t *pmd;
+ pte_t *pte;
+
+ if (pgd_none(*pgd))
+ break;
+
+ if (pgd_bad(*pgd)) {
+ printk("(bad)\n");
+ break;
+ }
+
+ pmd = pmd_offset(pgd, addr);
+ printk(", *pmd = %08lx", pmd_val(*pmd));
+
+ if (pmd_none(*pmd))
+ break;
+
+ if (pmd_bad(*pmd)) {
+ printk("(bad)\n");
+ break;
+ }
+
+ pte = pte_offset(pmd, addr);
+ printk(", *pte = %08lx", pte_val(*pte));
+ printk(", *ppte = %08lx", pte_val(pte[-PTRS_PER_PTE]));
+ } while(0);
+
+ printk("\n");
+ die("Oops", regs, mode);
+
+ do_exit(SIGKILL);
+}
+
+static void do_page_fault(unsigned long addr, int mode, struct pt_regs *regs)
+{
+ struct task_struct *tsk;
+ struct mm_struct *mm;
+ struct vm_area_struct *vma;
+ unsigned long fixup;
+
+ tsk = current;
+ mm = tsk->mm;
+
+ /*
+ * If we're in an interrupt or have no user
+ * context, we must not take the fault..
+ */
+ if (in_interrupt() || mm == &init_mm)
+ goto no_context;
+
+ down(&mm->mmap_sem);
+ vma = find_vma(mm, addr);
+ if (!vma)
+ goto bad_area;
+ if (vma->vm_start <= addr)
+ goto good_area;
+ if (!(vma->vm_flags & VM_GROWSDOWN) || expand_stack(vma, addr))
+ goto bad_area;
+
+ /*
+ * Ok, we have a good vm_area for this memory access, so
+ * we can handle it..
+ */
+good_area:
+ if (READ_FAULT(mode)) { /* read? */
+ if (!(vma->vm_flags & (VM_READ|VM_EXEC)))
+ goto bad_area;
+ } else {
+ if (!(vma->vm_flags & VM_WRITE))
+ goto bad_area;
+ }
+
+ /*
+ * If for any reason at all we couldn't handle the fault,
+ * make sure we exit gracefully rather than endlessly redo
+ * the fault.
+ */
+ if (!handle_mm_fault(tsk, vma, addr & PAGE_MASK, DO_COW(mode)))
+ goto do_sigbus;
+
+ up(&mm->mmap_sem);
+ return;
+
+ /*
+ * Something tried to access memory that isn't in our memory map..
+ * Fix it, but check if it's kernel or user first..
+ */
+bad_area:
+ up(&mm->mmap_sem);
+
+ /* User mode accesses just cause a SIGSEGV */
+ if (mode & FAULT_CODE_USER) {
+ tsk->tss.error_code = mode;
+ tsk->tss.trap_no = 14;
+#ifdef CONFIG_DEBUG_USER
+ printk("%s: memory violation at pc=0x%08lx, lr=0x%08lx (bad address=0x%08lx, code %d)\n",
+ tsk->comm, regs->ARM_pc, regs->ARM_lr, addr, mode);
+#endif
+ force_sig(SIGSEGV, tsk);
+ return;
+ }
+
+no_context:
+ /* Are we prepared to handle this kernel fault? */
+ if ((fixup = search_exception_table(instruction_pointer(regs))) != 0) {
+#ifdef DEBUG
+ printk(KERN_DEBUG "%s: Exception at [<%lx>] addr=%lx (fixup: %lx)\n",
+ tsk->comm, regs->ARM_pc, addr, fixup);
+#endif
+ regs->ARM_pc = fixup;
+ return;
+ }
+
+ kernel_page_fault(addr, mode, regs, tsk, mm);
+ return;
+
+do_sigbus:
+ /*
+ * We ran out of memory, or some other thing happened to us that made
+ * us unable to handle the page fault gracefully.
+ */
+ up(&mm->mmap_sem);
+
+ /*
+ * Send a sigbus, regardless of whether we were in kernel
+ * or user mode.
+ */
+ tsk->tss.error_code = mode;
+ tsk->tss.trap_no = 14;
+ force_sig(SIGBUS, tsk);
+
+ /* Kernel mode? Handle exceptions or die */
+ if (!(mode & FAULT_CODE_USER))
+ goto no_context;
+}
+
+
diff -ur --new-file old/linux/arch/arm/mm/init.c new/linux/arch/arm/mm/init.c
--- old/linux/arch/arm/mm/init.c Thu Dec 17 18:05:42 1998
+++ new/linux/arch/arm/mm/init.c Sat May 8 20:06:56 1999
@@ -29,6 +29,9 @@
#include
pgd_t swapper_pg_dir[PTRS_PER_PGD];
+#ifndef CONFIG_NO_PGT_CACHE
+struct pgtable_cache_struct quicklists;
+#endif
extern char _etext, _stext, _edata, __bss_start, _end;
extern char __init_begin, __init_end;
@@ -36,6 +39,7 @@
int do_check_pgt_cache(int low, int high)
{
int freed = 0;
+#ifndef CONFIG_NO_PGT_CACHE
if(pgtable_cache_size > high) {
do {
if(pgd_quicklist)
@@ -46,6 +50,7 @@
free_pte_slow(get_pte_fast()), freed++;
} while(pgtable_cache_size > low);
}
+#endif
return freed;
}
@@ -63,17 +68,18 @@
* data and COW.
*/
#if PTRS_PER_PTE != 1
-unsigned long *empty_bad_page_table;
+pte_t *empty_bad_page_table;
pte_t *__bad_pagetable(void)
{
- int i;
pte_t bad_page;
+ int i;
bad_page = BAD_PAGE;
for (i = 0; i < PTRS_PER_PTE; i++)
- empty_bad_page_table[i] = (unsigned long)pte_val(bad_page);
- return (pte_t *) empty_bad_page_table;
+ set_pte(empty_bad_page_table + i, bad_page);
+
+ return empty_bad_page_table;
}
#endif
@@ -128,8 +134,11 @@
empty_bad_page = (unsigned long *)start_mem;
start_mem += PAGE_SIZE;
#if PTRS_PER_PTE != 1
- empty_bad_page_table = (unsigned long *)start_mem;
- start_mem += PTRS_PER_PTE * sizeof (void *);
+#ifdef CONFIG_CPU_32
+ start_mem += PTRS_PER_PTE * BYTES_PER_PTR;
+#endif
+ empty_bad_page_table = (pte_t *)start_mem;
+ start_mem += PTRS_PER_PTE * BYTES_PER_PTR;
#endif
memzero (empty_zero_page, PAGE_SIZE);
start_mem = setup_pagetables (start_mem, end_mem);
@@ -137,6 +146,9 @@
flush_tlb_all();
update_memc_all();
+ end_mem &= PAGE_MASK;
+ high_memory = (void *)end_mem;
+
return free_area_init(start_mem, end_mem);
}
@@ -161,19 +173,18 @@
/* mark usable pages in the mem_map[] */
mark_usable_memory_areas(&start_mem, end_mem);
+#define BETWEEN(w,min,max) ((w) >= (unsigned long)(min) && \
+ (w) < (unsigned long)(max))
+
for (tmp = PAGE_OFFSET; tmp < end_mem ; tmp += PAGE_SIZE) {
if (PageReserved(mem_map+MAP_NR(tmp))) {
- if (tmp >= KERNTOPHYS(_stext) &&
- tmp < KERNTOPHYS(_edata)) {
- if (tmp < KERNTOPHYS(_etext))
- codepages++;
- else
- datapages++;
- } else if (tmp >= KERNTOPHYS(__init_begin)
- && tmp < KERNTOPHYS(__init_end))
+ if (BETWEEN(tmp, &__init_begin, &__init_end))
initpages++;
- else if (tmp >= KERNTOPHYS(__bss_start)
- && tmp < (unsigned long) start_mem)
+ else if (BETWEEN(tmp, &_stext, &_etext))
+ codepages++;
+ else if (BETWEEN(tmp, &_etext, &_edata))
+ datapages++;
+ else if (BETWEEN(tmp, &__bss_start, start_mem))
datapages++;
else
reservedpages++;
@@ -181,13 +192,16 @@
}
atomic_set(&mem_map[MAP_NR(tmp)].count, 1);
#ifdef CONFIG_BLK_DEV_INITRD
- if (!initrd_start || (tmp < initrd_start || tmp >= initrd_end))
+ if (!initrd_start || !BETWEEN(tmp, initrd_start, initrd_end))
#endif
free_page(tmp);
}
- printk ("Memory: %luk/%luk available (%dk kernel code, %dk reserved, %dk data, %dk init)\n",
+
+#undef BETWEEN
+
+ printk ("Memory: %luk/%luM available (%dk code, %dk reserved, %dk data, %dk init)\n",
(unsigned long) nr_free_pages << (PAGE_SHIFT-10),
- max_mapnr << (PAGE_SHIFT-10),
+ max_mapnr >> (20 - PAGE_SHIFT),
codepages << (PAGE_SHIFT-10),
reservedpages << (PAGE_SHIFT-10),
datapages << (PAGE_SHIFT-10),
@@ -203,17 +217,45 @@
#endif
}
-void free_initmem (void)
+static void free_area(unsigned long addr, unsigned long end, char *s)
{
- unsigned long addr;
+ unsigned int size = (end - addr) >> 10;
- addr = (unsigned long)(&__init_begin);
- for (; addr < (unsigned long)(&__init_end); addr += PAGE_SIZE) {
+ for (; addr < end; addr += PAGE_SIZE) {
mem_map[MAP_NR(addr)].flags &= ~(1 << PG_reserved);
atomic_set(&mem_map[MAP_NR(addr)].count, 1);
free_page(addr);
}
- printk ("Freeing unused kernel memory: %dk freed\n", (&__init_end - &__init_begin) >> 10);
+
+ if (size)
+ printk(" %dk %s", size, s);
+}
+
+void free_initmem (void)
+{
+ printk("Freeing unused kernel memory:");
+
+ free_area((unsigned long)(&__init_begin),
+ (unsigned long)(&__init_end),
+ "init");
+
+#ifdef CONFIG_FOOTBRIDGE
+ {
+ extern int __netwinder_begin, __netwinder_end, __ebsa285_begin, __ebsa285_end;
+
+ if (!machine_is_netwinder())
+ free_area((unsigned long)(&__netwinder_begin),
+ (unsigned long)(&__netwinder_end),
+ "netwinder");
+
+ if (!machine_is_ebsa285() && !machine_is_cats())
+ free_area((unsigned long)(&__ebsa285_begin),
+ (unsigned long)(&__ebsa285_end),
+ "ebsa285/cats");
+ }
+#endif
+
+ printk("\n");
}
void si_meminfo(struct sysinfo *val)
diff -ur --new-file old/linux/arch/arm/mm/ioremap.c new/linux/arch/arm/mm/ioremap.c
--- old/linux/arch/arm/mm/ioremap.c Thu Jan 1 01:00:00 1970
+++ new/linux/arch/arm/mm/ioremap.c Sat May 8 20:06:56 1999
@@ -0,0 +1,149 @@
+/*
+ * arch/arm/mm/ioremap.c
+ *
+ * Re-map IO memory to kernel address space so that we can access it.
+ *
+ * (C) Copyright 1995 1996 Linus Torvalds
+ *
+ * Hacked for ARM by Phil Blundell
+ * Hacked to allow all architectures to build, and various cleanups
+ * by Russell King
+ */
+
+/*
+ * This allows a driver to remap an arbitrary region of bus memory into
+ * virtual space. One should *only* use readl, writel, memcpy_toio and
+ * so on with such remapped areas.
+ *
+ * Because the ARM only has a 32-bit address space we can't address the
+ * whole of the (physical) PCI space at once. PCI huge-mode addressing
+ * allows us to circumvent this restriction by splitting PCI space into
+ * two 2GB chunks and mapping only one at a time into processor memory.
+ * We use MMU protection domains to trap any attempt to access the bank
+ * that is not currently mapped. (This isn't fully implemented yet.)
+ *
+ * DC21285 currently has a bug in that the PCI address extension
+ * register affects the address of any writes waiting in the outbound
+ * FIFO. Unfortunately, it is not possible to tell the DC21285 to
+ * flush this - flushing the area causes the bus to lock.
+ */
+
+#include
+#include
+
+static inline void remap_area_pte(pte_t * pte, unsigned long address, unsigned long size,
+ unsigned long phys_addr, pgprot_t pgprot)
+{
+ unsigned long end;
+
+ address &= ~PMD_MASK;
+ end = address + size;
+ if (end > PMD_SIZE)
+ end = PMD_SIZE;
+ do {
+ if (!pte_none(*pte))
+ printk("remap_area_pte: page already exists\n");
+ set_pte(pte, mk_pte_phys(phys_addr, pgprot));
+ address += PAGE_SIZE;
+ phys_addr += PAGE_SIZE;
+ pte++;
+ } while (address < end);
+}
+
+static inline int remap_area_pmd(pmd_t * pmd, unsigned long address, unsigned long size,
+ unsigned long phys_addr, unsigned long flags)
+{
+ unsigned long end;
+ pgprot_t pgprot;
+
+ address &= ~PGDIR_MASK;
+ end = address + size;
+
+ if (end > PGDIR_SIZE)
+ end = PGDIR_SIZE;
+
+ phys_addr -= address;
+ pgprot = __pgprot(L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY | L_PTE_WRITE | flags);
+ do {
+ pte_t * pte = pte_alloc_kernel(pmd, address);
+ if (!pte)
+ return -ENOMEM;
+ remap_area_pte(pte, address, end - address, address + phys_addr, pgprot);
+ address = (address + PMD_SIZE) & PMD_MASK;
+ pmd++;
+ } while (address < end);
+ return 0;
+}
+
+static int remap_area_pages(unsigned long address, unsigned long phys_addr,
+ unsigned long size, unsigned long flags)
+{
+ pgd_t * dir;
+ unsigned long end = address + size;
+
+ phys_addr -= address;
+ dir = pgd_offset(&init_mm, address);
+ flush_cache_all();
+ while (address < end) {
+ pmd_t *pmd = pmd_alloc_kernel(dir, address);
+ if (!pmd)
+ return -ENOMEM;
+ if (remap_area_pmd(pmd, address, end - address,
+ phys_addr + address, flags))
+ return -ENOMEM;
+ set_pgdir(address, *dir);
+ address = (address + PGDIR_SIZE) & PGDIR_MASK;
+ dir++;
+ }
+ flush_tlb_all();
+ return 0;
+}
+
+/*
+ * Remap an arbitrary physical address space into the kernel virtual
+ * address space. Needed when the kernel wants to access high addresses
+ * directly.
+ *
+ * NOTE! We need to allow non-page-aligned mappings too: we will obviously
+ * have to convert them into an offset in a page-aligned mapping, but the
+ * caller shouldn't need to know that small detail.
+ *
+ * 'flags' are the extra L_PTE_ flags that you want to specify for this
+ * mapping. See include/asm-arm/proc-armv/pgtable.h for more information.
+ */
+void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags)
+{
+ void * addr;
+ struct vm_struct * area;
+ unsigned long offset;
+
+ /*
+ * Mappings have to be page-aligned
+ */
+ offset = phys_addr & ~PAGE_MASK;
+ size = PAGE_ALIGN(size + offset);
+
+ /*
+ * Don't allow mappings that wrap..
+ */
+ if (!size || size > phys_addr + size)
+ return NULL;
+
+ /*
+ * Ok, go for it..
+ */
+ area = get_vm_area(size);
+ if (!area)
+ return NULL;
+ addr = area->addr;
+ if (remap_area_pages(VMALLOC_VMADDR(addr), phys_addr, size, flags)) {
+ vfree(addr);
+ return NULL;
+ }
+ return (void *) (offset + (char *)addr);
+}
+
+void iounmap(void *addr)
+{
+ return vfree((void *) (PAGE_MASK & (unsigned long) addr));
+}
diff -ur --new-file old/linux/arch/arm/mm/mm-arc.c new/linux/arch/arm/mm/mm-arc.c
--- old/linux/arch/arm/mm/mm-arc.c Sat Jul 18 20:55:23 1998
+++ new/linux/arch/arm/mm/mm-arc.c Thu Jan 1 01:00:00 1970
@@ -1,82 +0,0 @@
-/*
- * arch/arm/mm/mm-arc.c
- *
- * Extra MM routines for the Archimedes architecture
- *
- * Copyright (C) 1998 Russell King
- */
-#include
-#include
-#include
-
-unsigned long phys_screen_end;
-
-/*
- * This routine needs more work to make it dynamically release/allocate mem!
- */
-__initfunc(unsigned long map_screen_mem(unsigned long log_start, unsigned long kmem, int update))
-{
- static int updated = 0;
-
- if (updated)
- return 0;
-
- updated = update;
-
- if (update) {
- unsigned long address = log_start, offset;
- pgd_t *pgdp;
-
- kmem = (kmem + 3) & ~3;
-
- pgdp = pgd_offset (&init_mm, address); /* +31 */
- offset = SCREEN_START;
- while (address < SCREEN1_END) {
- unsigned long addr_pmd, end_pmd;
- pmd_t *pmdp;
-
- /* if (pgd_none (*pgdp)) alloc pmd */
- pmdp = pmd_offset (pgdp, address); /* +0 */
- addr_pmd = address & ~PGDIR_MASK; /* 088000 */
- end_pmd = addr_pmd + SCREEN1_END - address; /* 100000 */
- if (end_pmd > PGDIR_SIZE)
- end_pmd = PGDIR_SIZE;
-
- do {
- unsigned long addr_pte, end_pte;
- pte_t *ptep;
-
- if (pmd_none (*pmdp)) {
- pte_t *new_pte = (pte_t *)kmem;
- kmem += PTRS_PER_PTE * BYTES_PER_PTR;
- memzero (new_pte, PTRS_PER_PTE * BYTES_PER_PTR);
- set_pmd (pmdp, mk_pmd(new_pte));
- }
-
- ptep = pte_offset (pmdp, addr_pmd); /* +11 */
- addr_pte = addr_pmd & ~PMD_MASK; /* 088000 */
- end_pte = addr_pte + end_pmd - addr_pmd; /* 100000 */
- if (end_pte > PMD_SIZE)
- end_pte = PMD_SIZE;
-
- do {
- set_pte (ptep, mk_pte(offset, PAGE_KERNEL));
- addr_pte += PAGE_SIZE;
- offset += PAGE_SIZE;
- ptep++;
- } while (addr_pte < end_pte);
-
- pmdp++;
- addr_pmd = (addr_pmd + PMD_SIZE) & PMD_MASK;
- } while (addr_pmd < end_pmd);
-
- address = (address + PGDIR_SIZE) & PGDIR_MASK;
- pgdp ++;
- }
-
- phys_screen_end = offset;
- flush_tlb_all ();
- update_memc_all ();
- }
- return kmem;
-}
diff -ur --new-file old/linux/arch/arm/mm/mm-armv.c new/linux/arch/arm/mm/mm-armv.c
--- old/linux/arch/arm/mm/mm-armv.c Sun Sep 6 19:44:47 1998
+++ new/linux/arch/arm/mm/mm-armv.c Sat May 8 20:06:57 1999
@@ -37,7 +37,8 @@
virtual = mp->virtual;
physical = mp->physical;
length = mp->length;
- prot = (mp->prot_read ? PTE_AP_READ : 0) | (mp->prot_write ? PTE_AP_WRITE : 0);
+ prot = (mp->prot_read ? L_PTE_USER : 0) | (mp->prot_write ? L_PTE_WRITE : 0)
+ | L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY;
while ((virtual & 1048575 || physical & 1048575) && length >= PAGE_SIZE) {
alloc_init_page(&start_mem, virtual, physical, mp->domain, prot);
@@ -56,7 +57,8 @@
physical += 1048576;
}
- prot = (mp->prot_read ? PTE_AP_READ : 0) | (mp->prot_write ? PTE_AP_WRITE : 0);
+ prot = (mp->prot_read ? L_PTE_USER : 0) | (mp->prot_write ? L_PTE_WRITE : 0)
+ | L_PTE_PRESENT | L_PTE_YOUNG | L_PTE_DIRTY;
while (length >= PAGE_SIZE) {
alloc_init_page(&start_mem, virtual, physical, mp->domain, prot);
diff -ur --new-file old/linux/arch/arm/mm/mm-ebsa285.c new/linux/arch/arm/mm/mm-ebsa285.c
--- old/linux/arch/arm/mm/mm-ebsa285.c Thu Dec 17 18:05:42 1998
+++ new/linux/arch/arm/mm/mm-ebsa285.c Thu Jan 1 01:00:00 1970
@@ -1,39 +0,0 @@
-/*
- * arch/arm/mm/mm-ebsa285.c
- *
- * Extra MM routines for the EBSA285 architecture
- *
- * Copyright (C) 1998 Russell King, Dave Gilbert.
- */
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-
-/*
- * This is to allow us to fiddle with the EEPROM
- * This entry will go away in time, once the fmu
- * can mmap() the flash.
- *
- * These ones are so that we can fiddle
- * with the various cards (eg VGA)
- * until we're happy with them...
- */
-#define MAPPING \
- { 0xd8000000, DC21285_FLASH, 0x00400000, DOMAIN_USER, 1, 1 }, /* EEPROM */ \
- { 0xdc000000, 0x7c000000, 0x00100000, DOMAIN_USER, 1, 1 }, /* VGA */ \
- { 0xe0000000, DC21285_PCI_MEM, 0x18000000, DOMAIN_USER, 1, 1 }, /* VGA */ \
- { 0xf8000000, DC21285_PCI_TYPE_0_CONFIG, 0x01000000, DOMAIN_IO , 0, 1 }, /* Type 0 Config */ \
- { 0xf9000000, DC21285_PCI_TYPE_1_CONFIG, 0x01000000, DOMAIN_IO , 0, 1 }, /* Type 1 Config */ \
- { PCI_IACK, DC21285_PCI_IACK, 0x01000000, DOMAIN_IO , 0, 1 }, /* PCI IACK */ \
- { 0xfd000000, DC21285_OUTBOUND_WRITE_FLUSH, 0x01000000, DOMAIN_IO , 0, 1 }, /* Out wrflsh */ \
- { 0xfe000000, DC21285_ARMCSR_BASE, 0x01000000, DOMAIN_IO , 0, 1 }, /* CSR */ \
- { 0xffe00000, DC21285_PCI_IO, 0x00100000, DOMAIN_IO , 0, 1 }, /* PCI I/O */ \
- { 0xfff00000, 0x40000000, 0x00100000, DOMAIN_IO , 0, 1 }, /* X-Bus */
-
-#include "mm-armv.c"
diff -ur --new-file old/linux/arch/arm/mm/mm-footbridge.c new/linux/arch/arm/mm/mm-footbridge.c
--- old/linux/arch/arm/mm/mm-footbridge.c Thu Jan 1 01:00:00 1970
+++ new/linux/arch/arm/mm/mm-footbridge.c Sat May 8 20:06:57 1999
@@ -0,0 +1,91 @@
+/*
+ * arch/arm/mm/mm-ebsa285.c
+ *
+ * Extra MM routines for the EBSA285 architecture
+ *
+ * Copyright (C) 1998 Russell King, Dave Gilbert.
+ */
+#include
+#include
+#include
+#include
+
+#include
+#include