]> git.neil.brown.name Git - history.git/commitdiff
Import 2.1.23pre1 2.1.23pre1
authorLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:12:52 +0000 (15:12 -0500)
committerLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:12:52 +0000 (15:12 -0500)
59 files changed:
Documentation/Configure.help
Makefile
arch/alpha/kernel/entry.S
arch/alpha/kernel/osf_sys.c
arch/alpha/mm/extable.c
arch/i386/kernel/entry.S
drivers/block/ide-floppy.c
drivers/block/ide-probe.c
drivers/block/ide.c
drivers/char/amigamouse.c
drivers/char/apm_bios.c
drivers/char/mem.c
drivers/char/n_tty.c
drivers/char/psaux.c
drivers/char/random.c
drivers/char/rtc.c
drivers/char/tty_io.c
drivers/char/vc_screen.c
drivers/pci/pci.c
drivers/scsi/Makefile
drivers/scsi/ide-scsi.c
drivers/scsi/ide-scsi.h
drivers/scsi/seagate.c
drivers/scsi/seagate.h
fs/devices.c
fs/ext2/symlink.c
fs/nfs/rpcsock.c
fs/pipe.c
fs/proc/kmsg.c
fs/select.c
include/asm-alpha/poll.h [new file with mode: 0644]
include/asm-alpha/unistd.h
include/asm-i386/poll.h [new file with mode: 0644]
include/asm-i386/unistd.h
include/asm-sparc/poll.h [new file with mode: 0644]
include/linux/fs.h
include/linux/net.h
include/linux/pci.h
include/linux/poll.h [new file with mode: 0644]
include/linux/sched.h
include/linux/skbuff.h
include/linux/tty_ldisc.h
include/linux/wait.h
include/net/inet_common.h
include/net/sock.h
include/net/tcp.h
kernel/sysctl.c
net/core/datagram.c
net/ipv4/af_inet.c
net/ipv4/ip_fw.c
net/ipv4/packet.c
net/ipv4/raw.c
net/ipv4/tcp.c
net/ipv4/tcp_ipv4.c
net/ipv4/udp.c
net/netlink.c
net/netsyms.c
net/socket.c
net/unix/af_unix.c

index 44269f1e740fc2fce0b81eb50f0ae2803eb3661e..2553c8020726228b11e4c76a1c24cfbcf3e0273f 100644 (file)
 #
 # If you add a help text to this file, please try to be as gentle as
 # possible. Don't use unexplained acronyms and generally write for the
-# hypothetical user who has just bought a PC, removed Windows,
-# installed Linux and is now recompiling the kernel for the first
-# time. Tell them what to do if they're unsure. Technical information
-# should go in a README in the Documentation directory. Mention all 
-# the relevant READMEs and HOWTOs in the help text.
+# hypothetical ignorant but intelligent user who has just bought a PC,
+# removed Windows, installed Linux and is now recompiling the kernel
+# for the first time. Tell them what to do if they're
+# unsure. Technical information should go in a README in the
+# Documentation directory. Mention all the relevant READMEs and HOWTOs
+# in the help text.
 #
 # 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,1996 by Axel Boldt and governed by the GNU Public License.
+# (c) 1995-1997 by Axel Boldt and others and governed by the GNU
+# Public License.
 
 Prompt for development and/or incomplete code/drivers
 CONFIG_EXPERIMENTAL
@@ -54,14 +56,17 @@ CONFIG_EXPERIMENTAL
   avoid "Why doesn't this work?" type mail messages. However, active
   testing and use of these systems is welcomed. Just be aware that it
   may not meet the normal level of reliability or it may fail to work
-  in some special cases. Detailed bug reports from people familiar with
-  the kernel internals are usually welcomed by the developers. 
+  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
+  Documentation/oops-tracing.txt in the kernel source).  
   Unless you intend to help test and develop a feature or driver that
-  falls into this category, or you have a situation that requires using 
-  these features you should probably say N here, which will cause this 
-  configure script to present you with fewer choices. If you say Y here,
-  you will be offered the choice of using features or drivers that are
-  currently considered to be in the alpha-test phase.
+  falls into this category, or you have a situation that requires
+  using these features you should probably say N here, which will
+  cause this configure script to present you with fewer choices. If
+  you say Y here, you will be offered the choice of using features or
+  drivers that are currently considered to be in the alpha-test phase.
 
 Kernel math emulation
 CONFIG_MATH_EMULATION
@@ -70,61 +75,65 @@ CONFIG_MATH_EMULATION
   a math coprocessor built in, 486SX and 386 do not, unless you added
   a 487DX or 387, respectively.  (The messages during boot time can
   give you some hints here ["man dmesg"]) Everyone needs either a
-  coprocessor or this emulation. If you enable this emulation even
+  coprocessor or this emulation. If you say Y here even
   though you have a coprocessor, the coprocessor will be used
   nevertheless. (This behavior can be changed with the kernel command
   line option "no387", which comes handy if your coprocessor is
-  broken. 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 sunsite.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. If you are not sure, say Y; apart from
-  resulting in a 45kB bigger kernel, it won't hurt.
+  broken. 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
+  sunsite.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. If
+  you are not sure, say Y; apart from resulting in a 45kB bigger
+  kernel, it won't hurt.
 
 Normal floppy disk support
 CONFIG_BLK_DEV_FD
   If you want to use your floppy disk drive(s) under Linux, say
   Y. Information about this driver, especially important for IBM
-  Thinkpad users, is contained in drivers/block/README.fd.  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
+  Thinkpad users, is contained in drivers/block/README.fd. This file
+  also contains the location of the Floppy driver FAQ as well as
+  location of the fdutils package used to configure additional
+  parameters of the driver at run time. 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
+  floppy.o. If you want to compile it as a module, say M here and read
   Documentation/modules.txt.
   
 RAM disk support
 CONFIG_BLK_DEV_RAM
-  Enabling this option will allow you to use a portion of your RAM
-  memory as a block device, so that you can make filesystems on it,
-  read and write to it and do all the other things that normal block
-  devices (such as harddrives) can do.  It is usually used to load and
+  Saying Y here will allow you to use a portion of your RAM memory as
+  a block device, so that you can make filesystems on it, read and
+  write to it and do all the other things that you can do with normal
+  block devices (such as harddrives).  It is usually used to load and
   store a copy of a minimal root file system off of a floppy into RAM
   during the initial install of Linux.  Note that the kernel command
   line option "ramdisk=XX" is now obsolete.  For details, read
   Documentation/ramdisk.txt. 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 and read Documentation/modules.txt.  Most
-  normal users won't need the RAM disk functionality, and can thus say
-  N here.
+  whenever you want), say M and read Documentation/modules.txt. The
+  module will be called rd.o. Most normal users won't need the RAM
+  disk functionality, and can thus say N here.
 
 Initial RAM disk (initrd) support
 CONFIG_BLK_DEV_INITRD
   The initial RAM disk is a RAM disk that is loaded by the boot loader
-  (LOADLIN or LILO) and that is mounted as root before the normal boot
+  (loadlin or lilo) and that is mounted as root before the normal boot
   procedure. It is typically used to load modules needed to mount the
   "real" root file system, etc. See Documentation/initrd.txt for
   details.
 
 Loop device support
 CONFIG_BLK_DEV_LOOP
-  Enabling this option will allow you to mount a file as a file
-  system.  This is useful if you want to check an ISO9660 file system
-  before burning the CD, or want to use floppy images without first
-  writing them to floppy.  This option also allows one to mount a
-  filesystem with encryption.  To use these features, you need a
-  recent version of mount (available via ftp (user: anonymous) from
+  Saying Y here will allow you to mount a file as a file system.  This
+  is useful if you want to check an ISO9660 file system before burning
+  the CD, or want to use floppy images without first writing them to
+  floppy.  This option also allows one to mount a filesystem with
+  encryption.  To use these features, you need a recent version of
+  mount (available via ftp (user: anonymous) from
   ftp.win.tue.nl/pub/linux/util/).  Note that this loop device has
   nothing to do with the loopback device used for network connections
   from the machine to itself.  Most users will answer N here.
@@ -146,7 +155,7 @@ CONFIG_BLK_DEV_IDE
 Old harddisk (MFM/RLL/IDE) driver
 CONFIG_BLK_DEV_HD_ONLY
   There are two drivers for MFM/RLL/IDE disks.  Most people use the
-  newer enhanced driver, but the old one is still around for two
+  newer enhanced driver, but this old one is still around for two
   reasons.  Some older systems have strange timing problems and seem
   to work only with the old driver (which itself does not work with
   some newer systems).  The other reason is that the old driver is
@@ -160,8 +169,8 @@ CONFIG_BLK_DEV_HD_ONLY
 Use old disk-only driver on primary interface
 CONFIG_BLK_DEV_HD_IDE
   There are two drivers for MFM/RLL/IDE disks.  Most people use just
-  the new enhanced driver by itself.  This option installs the old
-  harddisk driver to control the primary IDE/disk interface in the
+  the new enhanced driver by itself.  This option however installs the
+  old harddisk driver to control the primary IDE/disk interface in the
   system, leaving the new enhanced IDE driver take care of only the
   2nd/3rd/4th IDE interfaces. Doing this will prevent you from having
   an IDE/ATAPI CDROM or tape drive connected to the primary IDE
@@ -178,7 +187,8 @@ CONFIG_BLK_DEV_IDEDISK
   old harddisk driver instead, say Y.  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. If unsure, say Y.
+  Documentation/modules.txt. The module will be called ide-disk.o. If
+  unsure, say Y.
 
 Include IDE/ATAPI CDROM support
 CONFIG_BLK_DEV_IDECD
@@ -187,19 +197,19 @@ CONFIG_BLK_DEV_IDECD
   SCSI protocol.  Most new CDROM drives use ATAPI, including the
   NEC-260, Mitsumi FX400, Sony 55E, and just about all non-SCSI
   double(2X), quad(4X), and six(6X) speed drives.  At boot time, the
-  CDROM drive will be identified along with other IDE devices, as "hdb"
-  or "hdc", or something similar.
-  If this is your only CDROM drive, you can say N to all other CDROM
-  options, but be sure to say Y to the ISO9660 filesystem.  Read the
-  CDROM-HOWTO, available via ftp (user: anonymous) in
+  CDROM drive will be identified along with other IDE devices, as
+  "hdb" or "hdc", or something similar.  If this is your only CDROM
+  drive, you can say N to all other CDROM options, but be sure to say
+  Y to "ISO9660 cdrom filesystem support".  Read the CDROM-HOWTO,
+  available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO and the file
   Documentation/cdrom/ide-cd.  Note that older versions of lilo (the
   linux boot loader) cannot properly deal with IDE/ATAPI CDROMs, so
   install lilo-16 or higher, available from
-  sunsite.unc.edu:/pub/Linux/system/Linux-boot/lilo.
-  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.
+  sunsite.unc.edu:/pub/Linux/system/Linux-boot/lilo.  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 ide-cd.o.
 
 Include IDE/ATAPI TAPE support
 CONFIG_BLK_DEV_IDETAPE
@@ -212,7 +222,7 @@ CONFIG_BLK_DEV_IDETAPE
   Documentation/ide.txt files for usage information.  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.
+  read Documentation/modules.txt. The module will be called ide-tape.o.
 
 Include IDE/ATAPI FLOPPY support
 CONFIG_BLK_DEV_IDEFLOPPY
@@ -224,7 +234,8 @@ CONFIG_BLK_DEV_IDEFLOPPY
   something similar. 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 ide-floppy.o.
+  
 SCSI emulation support
 CONFIG_BLK_DEV_IDESCSI
   This will provide SCSI host adapter emulation for IDE ATAPI devices,
@@ -272,10 +283,14 @@ CONFIG_BLK_DEV_RZ1000
 
 Intel 82371 PIIX (Triton I/II) DMA support
 CONFIG_BLK_DEV_TRITON
-  This will improve performance if you have an Intel PCI Triton I/II
-  IDE interface chipset (i82371FB or i82371SB). For details, read the
-  comments at the beginning of drivers/block/triton.c and
-  Documentation/ide.txt. If unsure, say N.
+  If your PCI system uses an IDE harddrive (as opposed to SCSI, say)
+  and includes the Intel Triton I/II IDE interface chipset (i82371FB
+  or i82371SB), you will want to enable this option to allow use of
+  bus-mastering DMA data transfers. Read the comments at the beginning
+  of drivers/block/triton.c.  You can get the latest version of the
+  hdparm utility via ftp (user: anonymous) from
+  sunsite.unc.edu/pub/Linux/kernel/patches/diskdrives/; it is used to
+  tune your harddisk. It is safe to say Y to this question.
 
 Other IDE chipset support
 CONFIG_IDE_CHIPSETS
@@ -351,17 +366,18 @@ CONFIG_BLK_DEV_XD
   include a driver for these, say Y. 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. It's pretty unlikely that you have one of
-  these: say N.
+  Documentation/modules.txt. The module will be called xd.o. It's
+  pretty unlikely that you have one of these: say N.
 
 SyQuest EZ parallel port disk support
 CONFIG_BLK_DEV_EZ
-  If you have a parallel port version of SyQuest's EZ135 or EZ230 removable
-  media devices you can use this driver.  Answer Y to build the driver into
-  the kernel, or M if you would like to build it as a loadable module.
-  Read the file linux/Documentation/ez.txt.  If you have several different
-  devices that will share a common parallel port you should build them all
-  as modules.
+  If you have a parallel port version of SyQuest's EZ135 or EZ230
+  removable media devices you can use this driver.  Answer Y to build
+  the driver into the kernel, or M if you would like to build it as a
+  loadable module. The module will be called ez.o.  Read the file
+  linux/Documentation/ez.txt.  If you have several different devices
+  that will share a common parallel port you should build them all as
+  modules.
 
 Multiple devices driver support
 CONFIG_BLK_DEV_MD
@@ -374,23 +390,25 @@ CONFIG_BLK_DEV_MD
 
 Linear (append) mode
 CONFIG_MD_LINEAR
-  If you enable this, then your multiple devices driver will be able
-  to use the so-called linear mode, i.e. it will combine the harddisk
+  If you say Y here, then your multiple devices driver will be able to
+  use the so-called linear mode, i.e. it will combine the harddisk
   partitions by simply appending one to the other. 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. If unsure, say Y.
+  read Documentation/modules.txt. The module will be called
+  linear.o. If unsure, say Y.
 
 RAID-0 (striping) mode
 CONFIG_MD_STRIPED
-  If you enable this, then your multiple devices driver will be able
-  to use the so-called raid0 mode, i.e. it will combine the harddisk
+  If you say Y here, then your multiple devices driver will be able to
+  use the so-called raid0 mode, i.e. it will combine the harddisk
   partitions into one logical device in such a fashion as to fill them
   up evenly, one chunk here and one chunk there. This will increase
   the throughput rate if the partitions reside on distinct disks.  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. If unsure, say Y.
+  here and read Documentation/modules.txt. The module will be called
+  raid0.o. If unsure, say Y.
 
 Support for Deskstation RPC44 
 CONFIG_DESKSTATION_RPC44
@@ -496,7 +514,7 @@ CONFIG_FIREWALL
   you want to configure your Linux box as a firewall for a local
   network, say Y here. If your local network is TCP/IP based, you will
   then also have to say Y to "IP: firewalling", below.  
-  You also need to say Y here and enable "IP firewalling" below in
+  You also need to say Y here and say Y to "IP firewalling" below in
   order to be able to use IP masquerading (i.e. local computers can
   chat with an outside host, but that outside host is made to think
   that it is talking to the firewall box -- makes the local network
@@ -556,22 +574,23 @@ CONFIG_ALPHA_SRM
   which is command line driven, and ARC, which uses menus and arrow
   keys. The usual way to load Linux on an Alpha machine is to use MILO
   (a bootloader that lets you pass command line parameters to the
-  kernel just like LILO does) which can be loaded either from ARC or
-  can be installed directly as a permanent firmware replacement from
-  floppy (which requires changing a certain jumper on the
-  motherboard). If you want to do either of these, say N here. If MILO
-  doesn't work on your system (true for Jensen motherboards), you can
-  bypass it altogether and boot Linux directly from an SRM console;
-  say Y here in order to do that. Note that you won't be able to boot
-  from an IDE disk using SRM. If unsure, say N. 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 have access to a machine on the Internet
-  that has one of the programs lynx, netscape or Mosaic).
+  kernel just like lilo does for the 386 architecture) which can be
+  loaded either from ARC or can be installed directly as a permanent
+  firmware replacement from floppy (which requires changing a certain
+  jumper on the motherboard). If you want to do either of these, say N
+  here. If MILO doesn't work on your system (true for Jensen
+  motherboards), you can bypass it altogether and boot Linux directly
+  from an SRM console; say Y here in order to do that. Note that you
+  won't be able to boot from an IDE disk using SRM. If unsure, say
+  N. 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
+  have access to a machine on the Internet that has one of the
+  programs lynx, netscape or Mosaic).
 
 Echo console messages on /dev/ttyS1
 CONFIG_SERIAL_ECHO
-  If you enable this option, all kernel messages that would usually go
+  If you say Y here, all kernel messages that would usually go
   to the console will also be sent to the device /dev/ttyS1 which
   corresponds to a serial port; this could be useful if you attached
   a terminal or printer to that port.
@@ -580,10 +599,10 @@ TGA Console Support
 CONFIG_TGA_CONSOLE
   Many Alpha systems (e.g the Multia) are shipped with a graphics card
   that implements the TGA interface (much like the VGA standard, but
-  older TGA adaptors are *not* VGA compatible).  On such systems, this
-  option needs to be enabled so that the TGA driver rather than the
-  standard VGA driver is used.  Note that, at this time, there is no X
-  server for these systems. If unsure, try N.
+  older TGA adaptors are *not* VGA compatible).  On such systems, you
+  should say Y here so that the TGA driver rather than the standard
+  VGA driver is used.  Note that, at this time, there is no X server
+  for these systems. If unsure, try N.
 
 PCI bios support
 CONFIG_PCI
@@ -613,23 +632,12 @@ CONFIG_MCA
   Documentation/mca.txt before attempting to build an MCA bus kernel.
   Note that this is still experimental code.
 
-Intel 82371 PIIX (Triton I/II) DMA support
-CONFIG_BLK_DEV_TRITON
-  If your PCI system uses an IDE harddrive (as opposed to SCSI, say)
-  and includes the Intel 430FX PCI Triton chipset, you will want to
-  enable this option to allow use of bus-mastering DMA data transfers.
-  Read the comments at the beginning of drivers/block/triton.c.  You
-  can get the latest version of the hdparm utility via ftp (user:
-  anonymous) from
-  sunsite.unc.edu/pub/Linux/kernel/patches/diskdrives/; it is used to
-  tune your harddisk. It is safe to say Y to this question.
-
 System V IPC
 CONFIG_SYSVIPC
   Inter Process Communication is a suite of library functions and system
   calls which let processes (= running programs) synchronize and
   exchange information. It is generally considered to be a good thing,
-  and some programs won't run unless you enable this. In particular,
+  and some programs won't run unless you say Y here. In particular,
   if you want to run the DOS emulator dosemu under Linux (read the
   DOSEMU-HOWTO, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO), you'll need to say Y here. You
@@ -637,7 +645,7 @@ CONFIG_SYSVIPC
   sunsite.unc.edu:/pub/Linux/docs/man/info.tar.gz (extract with "tar
   xzvf filename"). These docs are in the info format which is used to
   document GNU software and can be read from within emacs ("Ctrl-h i")
-  or with the program info ("man info"). Enabling this option enlarges
+  or with the program info ("man info"). Saying Y here enlarges
   your kernel by about 7kB. Just say Y.
 
 Kernel support for ELF binaries
@@ -661,8 +669,9 @@ CONFIG_BINFMT_ELF
   file Documentation/Changes for location and latest version). 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. Saying M or N here is dangerous
-  because some crucial programs on your system might be in ELF format.
+  and read Documentation/modules.txt. The module will be called
+  binfmt_elf.o. Saying M or N here is dangerous because some crucial
+  programs on your system might be in ELF format.
 
 Kernel support for A.OUT binaries
 CONFIG_BINFMT_AOUT
@@ -677,57 +686,66 @@ CONFIG_BINFMT_AOUT
   wish to ensure that absolutely none of your programs will use this
   older executable format. If you don't know what to answer at this
   point then answer Y. If someone told you "You need a kernel with
-  QMAGIC support" then you'll have to say Y here. You may answer M 
-  to compile a.out support as a module and later load the module when
-  you want to use a program or library in a.out format. Saying M or N
-  here is dangerous though, because some crucial programs on your
-  system might still be in A.OUT format.
+  QMAGIC support" then you'll have to say Y here. You may answer M to
+  compile a.out support as a module and later load the module when you
+  want to use a program or library in a.out format. The module will be
+  called binfmt_aout.o. Saying M or N here is dangerous though,
+  because some crucial programs on your system might still be in A.OUT
+  format.
 
 Kernel support for JAVA binaries
 CONFIG_BINFMT_JAVA
-  JAVA is an object oriented programming language developed by SUN;
-  JAVA programs are compiled into "JAVA bytecode" binaries which can
-  then be interpreted by run time systems on many different operating
-  systems.  These JAVA binaries are becoming a universal executable
-  format. Saying Y here allows you to execute a JAVA bytecode binary
-  just like any other Linux program: by typing in its name. As more
-  and more Java programs become available, the use for this will
-  gradually increase. You can even execute HTML files containing JAVA
-  applets (= JAVA binaries) if those files start with the string
-  "<!--applet-->". If you want to use this, read
-  Documentation/java.txt and the Java on Linux HOWTO, available via
-  ftp (user: anonymous) at sunsite.unc.edu:/pub/Linux/docs/HOWTO. You
-  will then need to install the run time system contained in the Java
-  Developers Kit (JDK) as described in the HOWTO. If you disable this
-  option it will reduce your kernel by about 4kB. This is not much and
-  by itself does not warrant removing support. However its removal is
-  a good idea if you do not have the JDK installed. If you don't know
-  what to answer at this point then answer Y. You may answer M for
-  module support and later load the module when you install the JDK or
-  find an interesting Java program that you can't live without.
+  JAVA(tm) is an object oriented programming language developed by
+  SUN; JAVA programs are compiled into "JAVA bytecode" binaries which
+  can then be interpreted by run time systems on many different
+  operating systems.  These JAVA binaries are becoming a universal
+  executable format. If you want to execute JAVA binaries, read the
+  Java on Linux HOWTO, available via ftp (user: anonymous) at
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO. You will then need to install
+  the run time system contained in the Java Developers Kit (JDK) as
+  described in the HOWTO. This is completely independent of the Linux
+  kernel and you do NOT need to say Y here for this to work.
+  Saying Y here allows you to execute a JAVA bytecode binary just like
+  any other Linux program: by simply typing in its name. (You also
+  need to have the JDK installed for this to work).  As more and more
+  Java programs become available, the use for this will gradually
+  increase. You can even execute HTML files containing JAVA applets (=
+  JAVA binaries) if those files start with the string
+  "<!--applet-->". If you want to use this, say Y here and read
+  Documentation/java.txt. If you disable this option it will reduce
+  your kernel by about 4kB. This is not much and by itself does not
+  warrant removing support. However its removal is a good idea if you
+  do not have the JDK installed. You may answer M for module support
+  and later load the module when you install the JDK or find an
+  interesting Java program that you can't live without. The module
+  will be called binfmt_java.o. If you don't know what to answer at
+  this point then answer Y.
 
 Processor type
 CONFIG_M386
-  This is the processor type of your CPU. It is used for optimizing
-  purposes. In order to compile a kernel that can run on all CPU types
-  (albeit not optimally fast), you can specify "386" here.  If you
-  specify "486" or "Pentium" or "PPro", then the kernel will run on
-  486 and Pentium (=586) and Pentium Pro (=686) CPUs. In rare cases,
-  it can make sense to specify "Pentium" even if running a 486: the
-  kernel will be smaller but slower. On the other hand, if you use a
-  compiler before gcc 2.7 (say "gcc -v" to find out), then you have to
-  say "386" or "486" here even if running on a Pentium or PPro
-  machine. If you don't know what to do, say "386".
+  This is the processor type of your CPU. This information is used for
+  optimizing purposes. In order to compile a kernel that can run on
+  all Intel 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 run on all of these CPUs: 486 and Pentium
+  (=586) and Pentium Pro (=686). In rare cases, it can make sense to
+  specify "Pentium" even if running on a 486: the kernel will be
+  smaller but slower. If you don't know what to do, say "386".
 
 Video mode selection support
 CONFIG_VIDEO_SELECT
-  This enables support for text mode selection on kernel startup. If you
-  want to take advantage of some high-resolution text mode your card's
-  BIOS offers, but the traditional Linux utilities like SVGATextMode
-  don't, you can enable this and set the mode using the "vga=" option
-  from your boot loader (LILO or LOADLIN) or set "vga=ask" which brings
-  up a video mode menu on kernel startup. Read Documentation/svga.txt
-  for more information. If unsure, say N.
+  This enables support for text mode selection on kernel startup. If
+  you want to take advantage of some high-resolution text mode your
+  card's BIOS offers, but the traditional Linux utilities like
+  SVGATextMode don't, you can say Y here and set the mode using the
+  "vga=" option from your boot loader (lilo or loadlin) or set
+  "vga=ask" which brings up a video mode menu on kernel startup. Try
+  "man bootparam" or see the documentation of your boot loader about
+  how to pass options to the kernel. The lilo procedure is also
+  explained in the SCSI-HOWTO, available via ftp (user: anonymous) in
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO.  Read Documentation/svga.txt
+  for more information about the Video mode selection support. If
+  unsure, say N.
 
 Compile the kernel into the ELF object format 
 CONFIG_ELF_KERNEL
@@ -763,7 +781,7 @@ CONFIG_MODULES
 Set version information on all symbols for modules
 CONFIG_MODVERSIONS
   Usually, modules have to be recompiled whenever you switch to a new
-  kernel. Enabling this option makes it possible, and safe, to use the
+  kernel. Saying Y here makes it possible, and safe, to use the
   same modules even after compiling a new kernel; this requires the
   program modprobe. All the software needed for module support is in
   the modules package (check the file Documentation/Changes for
@@ -800,12 +818,12 @@ CONFIG_ARPD
   resolution (ARP) cache inside the kernel works well.  However,
   maintaining an internal ARP cache does not work well for very large
   switched networks, and will use a lot of kernel memory if TCP/IP
-  connections are made to many machines on the network.  By enabling
-  this option, the kernel's internal ARP cache will never grow to more
-  than 256 entries (the oldest entries are expired in a LIFO manner)
-  and communication will be attempted with an external ARP daemon,
-  arpd.  This code is still experimental.  If you do enable arpd
-  support, you should obtain a copy of arpd from
+  connections are made to many machines on the network.  By saying Y
+  here, the kernel's internal ARP cache will never grow to more than
+  256 entries (the oldest entries are expired in a LIFO manner) and
+  communication will be attempted with an external ARP daemon, arpd.
+  This code is still experimental.  If you do say Y here, you
+  should obtain a copy of arpd from
   http://www.loran.com/~layes/arpd/index.html.  If unsure, say N.
 
 TCP/IP networking
@@ -840,8 +858,8 @@ CONFIG_IP_FORWARD
   local network from the internet. The Firewall-HOWTO tells you how to
   do this. If your setup is more complex, say you are connected to
   three networks and you want to act as a firewall between two of them
-  and route traffic for the others, you need to say Y here and enable
-  IP firewalling below. If you intend to use IP masquerading (i.e. IP
+  and route traffic for the others, you need to say Y here and Y to 
+  "IP firewalling" below. If you intend to use IP masquerading (i.e. IP
   traffic from one of the local computers and destined for an outside
   host is changed by your box so that it appears to come from you),
   you'll have to say Y here and also to IP firewalling and IP
@@ -891,7 +909,7 @@ CONFIG_IP_FIREWALL
   ipfwadm tool (available via ftp (user: anonymous) from
   ftp.xos.nl/pub/linux/ipfwadm/) to allow selective blocking of
   internet traffic based on type, origin and destination.  You need to
-  enable IP firewalling in order to be able to use IP masquerading
+  say Y to "IP firewalling" in order to be able to use IP masquerading
   (i.e. local computers can chat with an outside host, but that
   outside host is made to think that it is talking to the firewall box
   -- makes the local network completely invisible and avoids the need
@@ -935,11 +953,12 @@ CONFIG_NET_IPIP
   appear on a different network than it physically is, or to use
   mobile-IP facilities (allowing laptops to seamlessly move between
   networks without changing their IP addresses; check out
-  http://anchor.cs.binghamton.edu/~mobileip/LJ/index.html). Enabling
-  this option will produce two modules ( = code which can be inserted
-  in and removed from the running kernel whenever you want), one
-  encapsulator and one decapsulator. You can read details in
-  drivers/net/README.tunnel. Most people can say N.
+  http://anchor.cs.binghamton.edu/~mobileip/LJ/index.html). Saying Y
+  to this option will produce two modules ( = code which can be
+  inserted in and removed from the running kernel whenever you want),
+  one encapsulator and one decapsulator. The module will be called
+  ipip.o. You can read details in drivers/net/README.tunnel. Most
+  people can say N.
   
 IP: firewall packet logging
 CONFIG_IP_FIREWALL_VERBOSE
@@ -992,18 +1011,17 @@ CONFIG_IP_ALWAYS_DEFRAG
   that the IP packets were too large and cut them in pieces) will be
   reassembled (defragmented) before being processed, even if they are
   about to be forwarded.  This option is highly recommended if you
-  have enabled the masquerading support (CONFIG_IP_MASQUERADE),
-  because that facility requires that second and further fragments can
-  be related to TCP or UDP port numbers, which are only stored in the
-  first fragment.  When using IP firewall support
-  (CONFIG_IP_FIREWALL), you might also want to enable this option, to
+  have said Y to "IP: masquerading" because that facility requires
+  that second and further fragments can be related to TCP or UDP port
+  numbers, which are only stored in the first fragment.  When using
+  "IP: firewalling" support , you might also want to say Y here, to
   have a more reliable firewall (otherwise second and further
-  fragments will always be accepted by the firewall).  When using
-  transparent proxying (CONFIG_IP_TRANSPARENT_PROXY), this option is
-  implicit, although it is safe to say Y here. Do not say Y to this
-  option except when running either a firewall that is the sole link
-  to your network or a transparent proxy. Never ever say Y to this for
-  a normal router or host.
+  fragments will always be accepted by the firewall).  When using "IP:
+  transparent proxying", this option is implicit, although it is safe
+  to say Y here. Do not say Y to this option except when running
+  either a firewall that is the sole link to your network or a
+  transparent proxy. Never ever say Y to this for a normal router or
+  host.
 
 IP: aliasing support
 CONFIG_IP_ALIAS
@@ -1037,8 +1055,8 @@ PC/TCP compatibility mode
 CONFIG_INET_PCTCP
   If you have been having difficulties telneting to your Linux machine
   from a DOS system that uses (broken) PC/TCP networking software (all
-  versions up to OnNet 2.0) over your local ethernet  try enabling this
-  option.  Everyone else says N. People having problems with NCSA telnet
+  versions up to OnNet 2.0) over your local ethernet try saying Y
+  here.  Everyone else says N. People having problems with NCSA telnet
   should see the file linux/Documentation/networking/ncsa-telnet.
 
 Reverse ARP
@@ -1060,8 +1078,9 @@ CONFIG_INET_RARP
   http://web.syr.edu/~jmwobus/comfaqs/dhcp.faq.html for details.  If
   you want to compile RARP support 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.  If you don't
-  understand a word of the above, say N and rest in peace.
+  say M here and read Documentation/modules.txt. The module will be
+  called rarp.o.  If you don't understand a word of the above, say N
+  and rest in peace.
 
 Assume subnets are local
 CONFIG_INET_SNARL
@@ -1136,13 +1155,16 @@ CONFIG_IPV6
   Protocol IP version 6 (also called IPng "IP next
   generation"). Features of this new protocol include: expanded
   address space, authentication and privacy, and seamless
-  interoperability with the current version of IP. For details, see
-  http://playground.sun.com/pub/ipng/html/ipng-main.html and the file
-  net/ipv6/README in the kernel source.  The IPv6 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.  It's
-  safe to say N for now.
+  interoperability with the current version of IP. For general
+  information about IPv6, see
+  http://playground.sun.com/pub/ipng/html/ipng-main.html; for specific
+  information about IPv6 under Linux read the HOWTO at
+  http://www.terra.net/ipv6/ and the file net/ipv6/README in the
+  kernel source.  The IPv6 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 ipv6.o. If you want to
+  compile it as a module, say M here and read
+  Documentation/modules.txt.  It's safe to say N for now.
 
 The IPX protocol
 CONFIG_IPX
@@ -1161,26 +1183,34 @@ CONFIG_IPX
   IPX-HOWTO in sunsite.unc.edu:/pub/Linux/docs/howto. The IPX driver
   would enlarge your kernel by about 5 kB. 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.
-  Unless you want to integrate your Linux box with a local Novell
-  network, say N.
+  from the running kernel whenever you want). The module will be
+  called ipx.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt.  Unless you want to integrate
+  your Linux box with a local Novell network, say N.
 
 Full internal IPX network
 CONFIG_IPX_INTERN
+  Every IPX network has an address that identifies it. Sometimes it is
+  useful to give an IPX "network" address to your Linux box as well
+  (for example if your box is acting as a fileserver for different IPX
+  networks: it will then be accessible form everywhere using the same
+  address).  The way this is done is to create a virtual internal
+  "network" inside your box and to assign an IPX address to this
+  network. Say Y here if you want to do this; read the IPX-HOWTO at
+  sunsite.unc.edu:/pub/Linux/docs/howto for details.  
   The full internal IPX network enables you to allocate sockets on
   different virtual nodes of the internal network. This is done by
-  evaluating the field sipx_node of the socket address given to the bind
-  call. So applications should always initialize the node field to 0
-  when binding a socket on the primary network. In this case the socket
-  is assigned the default node that has been given to the kernel when
-  the internal network was created.
-  By enabling the full internal IPX network the cross-forwarding of
-  packets targeted at 'special' sockets to sockets listening on the
-  primary network is disabled. This might break existing applications,
-  especially RIP/SAP daemons. A RIP/SAP daemon that works well with the
-  full internal net can be found on ftp.gwdg.de:/pub/linux/misc/ncpfs.
-  If you don't know what you are doing, say N.
+  evaluating the field sipx_node of the socket address given to the
+  bind call. So applications should always initialize the node field
+  to 0 when binding a socket on the primary network. In this case the
+  socket is assigned the default node that has been given to the
+  kernel when the internal network was created.  By enabling the full
+  internal IPX network the cross-forwarding of packets targeted at
+  'special' sockets to sockets listening on the primary network is
+  disabled. This might break existing applications, especially RIP/SAP
+  daemons. A RIP/SAP daemon that works well with the full internal net
+  can be found on ftp.gwdg.de:/pub/linux/misc/ncpfs.  If you don't
+  know what you are doing, say N.
 
 IPX Type 20 Routing
 CONFIG_IPX_PPROP_ROUTING
@@ -1198,11 +1228,11 @@ Appletalk DDP
 CONFIG_ATALK
   Appletalk is the way Apple computers speak to each other on a
   network. EtherTalk is the name used for appletalk over ethernet and
-  Localtalk is appletalk over the apple serial links. If your linux box 
-  is connected to such a network and you want to join the conversation,
-  say Y. You will need to use the netatalk package so that your Linux
-  box can act as a print and file server for macs as well as access
-  appletalk printers. Check out
+  Localtalk is appletalk over the apple serial links. If your linux
+  box is connected to such a network and you want to join the
+  conversation, say Y. You will need to use the netatalk package so
+  that your Linux box can act as a print and file server for macs as
+  well as access appletalk printers. Check out
   http://artoo.hitchcock.org/~flowerpt/projects/linux-netatalk/ on the
   WWW for details (to browse the WWW, you need to have access to a
   machine on the Internet that has one of the programs lynx, netscape
@@ -1210,13 +1240,14 @@ CONFIG_ATALK
   sunsite.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). If you want to compile it as a module, say M here and read
-  Documentation/modules.txt. I hear that the GNU boycott of Apple is
-  over, so even politically correct people are allowed to say Y here.
-  At the time the kernel is released the localtalk drivers are not
-  yet ready to ship. The kernel however supports localtalk and when
-  such drivers become available all you will need to do is download
-  and install the localtalk driver.
+  want). The module will be called appletalk.o. If you want to compile
+  it as a module, say M here and read Documentation/modules.txt. I
+  hear that the GNU boycott of Apple is over, so even politically
+  correct people are allowed to say Y here.  At the time the kernel is
+  released the localtalk drivers are not yet ready to ship. The kernel
+  however supports localtalk and when such drivers become available
+  all you will need to do is download and install the localtalk
+  driver.
 
 Amateur Radio AX.25 Level 2
 CONFIG_AX25
@@ -1234,7 +1265,7 @@ CONFIG_AX25
   have to say Y to one of those drivers. Information about where to
   get supporting software for Linux amateur radio as well as
   information about how to configure an AX.25 port is contained in the
-  HAM-HOWTO, available via ftp (user: anonymous) in
+  AX25-HOWTO, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO. You might also want to check
   out the file Documentation/networking/ax25.txt in the kernel
   source. More information about digital amateur radio in general is
@@ -1242,25 +1273,25 @@ CONFIG_AX25
   browse the WWW, you need to have access to a machine on the Internet
   that has one of the programs lynx, netscape or Mosaic).  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.
+  removed from the running kernel whenever you want). The module will
+  be called ax25.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt.
 
 Amateur Radio NET/ROM
 CONFIG_NETROM
   NET/ROM is a network layer protocol on top of AX.25 useful for
   routing.  A comprehensive listing of all the software for Linux
   amateur radio users as well as information about how to configure an
-  AX.25 port is contained in the HAM-HOWTO, available via ftp (user:
+  AX.25 port is contained in the AX25-HOWTO, available via ftp (user:
   anonymous) in sunsite.unc.edu:/pub/Linux/docs/HOWTO. You also might
   want to check out the file Documentation/networking/ax25.txt. More
   information about digital amateur radio in general is on the WWW at
   http://www.tapr.org/tapr/html/pkthome.html (To browse the WWW, you
   need to have access to a machine on the Internet that has one of the
-  programs lynx, netscape or Mosaic).
-  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
+  programs lynx, netscape or Mosaic).  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
+  netrom.o. If you want to compile it as a module, say M here and read
   Documentation/modules.txt.
 
 AX.25 over Ethernet
@@ -1278,7 +1309,7 @@ CONFIG_ROSE
   particular, essentially an alternative to NET/ROM.  A comprehensive
   listing of all the software for Linux amateur radio users as well as
   information about how to configure an AX.25 port is contained in the
-  HAM-HOWTO, available via ftp (user: anonymous) in
+  AX25-HOWTO, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO. You also might want to check
   out the file Documentation/networking/ax25.txt. More information
   about digital amateur radio in general is on the WWW at
@@ -1286,9 +1317,57 @@ CONFIG_ROSE
   need to have access to a machine on the Internet that has one of the
   programs lynx, netscape or Mosaic).  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.
+  running kernel whenever you want). The module will be called
+  rose.o. If you want to compile it as a module, say M here and read
+  Documentation/modules.txt.
+
+CCITT X.25 Packet Layer
+CONFIG_X25
+  X.25 is a set of standardized network protocols, similar in scope to
+  frame relay; the one physical line from your box to the entry point
+  to the X.25 network can carry several logical point-to-point
+  connections (called "virtual circuits") to other computers connected
+  to the X.25 network. Governments, banks, and other organizations
+  tend to use it to connect to each other or to form Wide Area
+  Networks. Many countries have public X.25 networks.  X.25 consists
+  of two protocols: the higher level Packet Layer Protocol (PLP) (say
+  Y here if you want that) and the lower level data link layer
+  protocol LAPB (say Y to "LAPB Data Link Driver" below if you want
+  that). You can read more about X.25 at
+  http://www.sangoma.com/x25.html and
+  http://www.cisco.com/univercd/data/doc/software/11_0/rpcg/cx25.htm.
+  Information about X.25 for Linux is contained in the files
+  Documentation/networking/x25.txt and
+  Documentation/networking/x25-iface.txt.  One connects to an X.25
+  network either with a dedicated network card using the X.21 protocol
+  (not yet supported by Linux) or one can do X.25 over ethernet using
+  an ordinary ethernet card and either the 802.2 LLC protocol (say Y
+  to "802.2 LLC" below) or LAPB over ethernet (say Y to "LAPB Data
+  Link Driver" and "LAPB over Ethernet driver" below).  If you want to
+  compile this driver as a module though ( = 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 x25.o. If unsure, say N.
+
+LAPB Data Link Driver (EXPERIMENTAL) 
+CONFIG_LAPB
+  Link Access Procedure, Balanced (LAPB) is the data link layer part
+  of the X.25 protocol. It offers a reliable connection service to
+  exchange data frames with one other host, and it is used to
+  transport higher level protocols (mostly X.25 Packet Layer, but
+  others are possible as well).  If you want to use LAPB connections
+  over ethernet, say Y here and to "LAPB over Ethernet driver" below.
+  Read Documentation/networking/lapb-module.txt for technical details.
+  If you want to compile this driver as a module though ( = 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 lapb.o.  If unsure, say N.
 
+802.2 LLC (VERY EXPERIMENTAL)
+CONFIG_LLC
+  This is a Logical Link Layer protocol used for X.25 connections over
+  ethernet, using ordinary ethernet cards. 
+  
 Bridging (EXPERIMENTAL)
 CONFIG_BRIDGE
   If you say Y here, then your Linux box will be able to act as an
@@ -1313,7 +1392,7 @@ CONFIG_NETLINK
   of the kernel or modules and user processes; the user processes are
   able to read from and write to character special files in the /dev
   directory having major mode 36. So far, the kernel uses it to
-  publish some network related information if you enable "Routing
+  publish some network related information if you say Y to "Routing
   messages", below. It is also used by the firewall code if you say Y
   to "Kernel/User network link driver" further down.  You also need to
   say Y here if you want to use arpd, a daemon that helps keep the
@@ -1322,7 +1401,7 @@ CONFIG_NETLINK
 
 Routing messages
 CONFIG_RTNETLINK
-  If you enable this and create a character special file /dev/route
+  If you say Y here and create a character special file /dev/route
   with major number 36 and minor number 0 using mknod ("man mknod"),
   you can read some network related routing information from that
   file. Everything you write to that file will be discarded.
@@ -1338,9 +1417,9 @@ CONFIG_SCSI
   SCSI-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile
-  it as a module, say M here and read Documentation/modules.txt and
-  Documentation/scsi.txt.
+  from the running kernel whenever you want). The module will be
+  called scsi_mod.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt and Documentation/scsi.txt.
 
 SCSI disk support
 CONFIG_BLK_DEV_SD
@@ -1350,8 +1429,9 @@ CONFIG_BLK_DEV_SD
   sunsite.unc.edu:/pub/Linux/docs/HOWTO. This is NOT for SCSI
   CDROMs. 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 and Documentation/scsi.txt.
+  want). The module will be called sd_mod.o. If you want to compile it
+  as a module, say M here and read Documentation/modules.txt and
+  Documentation/scsi.txt.
   
 SCSI tape support
 CONFIG_CHR_DEV_ST
@@ -1360,20 +1440,20 @@ CONFIG_CHR_DEV_ST
   sunsite.unc.edu:/pub/Linux/docs/HOWTO and drivers/scsi/README.st in
   the kernel source. This is NOT for SCSI CDROMs. 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 and
-  Documentation/scsi.txt .
+  from the running kernel whenever you want). The module will be
+  called st.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt and Documentation/scsi.txt .
 
 SCSI CDROM support
 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
-  sunsite.unc.edu:/pub/Linux/docs/HOWTO. Also make sure to enable the
-  ISO9660 filesystem later. 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 and
-  Documentation/scsi.txt .
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO. Also make sure to say Y to
+  "ISO9660 cdrom filesystem support" later. 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 sr_mod.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt and Documentation/scsi.txt .
 
 Enable vendor-specific extensions (for SCSI CDROM)
 CONFIG_BLK_DEV_SR_VENDOR
@@ -1397,7 +1477,8 @@ CONFIG_CHR_DEV_SG
   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 and Documentation/scsi.txt.
+  Documentation/modules.txt and Documentation/scsi.txt. The module
+  will be called sg.o. If unsure, say N.
 
 Probe all LUNs on each SCSI device
 CONFIG_SCSI_MULTI_LUN
@@ -1411,7 +1492,7 @@ CONFIG_SCSI_MULTI_LUN
 Verbose SCSI error reporting (kernel size +=12K)
 CONFIG_SCSI_CONSTANTS
   The error messages regarding your SCSI hardware will be easier to
-  understand if you enable this; it will enlarge your kernel by about
+  understand if you say Y here; it will enlarge your kernel by about
   12KB. If in doubt, say Y.
 
 AdvanSys SCSI support
@@ -1421,7 +1502,8 @@ CONFIG_SCSI_ADVANSYS
   drivers/scsi/advansys.c. 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.
+  here and read Documentation/modules.txt. The module will be called
+  advansys.o.
 
 Adaptec AHA152X/2825 support
 CONFIG_SCSI_AHA152X
@@ -1431,9 +1513,9 @@ CONFIG_SCSI_AHA152X
   sunsite.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 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.
+  removed from the running kernel whenever you want). The module will
+  be called aha152x.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt.
 
 Adaptec AHA1542 support
 CONFIG_SCSI_AHA1542
@@ -1441,11 +1523,12 @@ CONFIG_SCSI_AHA1542
   3.4 of the SCSI-HOWTO, available via ftp (user: anonymous) at
   sunsite.unc.edu:/pub/Linux/docs/HOWTO.  Note that Trantor was
   recently purchased by Adaptec, and some former Trantor products are
-  being sold under the Adaptec name. If it doesn't work out of
-  the box, you may have to change some settings in
-  drivers/scsi/aha1542.h.  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.
+  being sold under the Adaptec name. If it doesn't work out of the
+  box, you may have to change some settings in drivers/scsi/aha1542.h.
+  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 aha1542.o.
  
 Adaptec AHA1740 support
 CONFIG_SCSI_AHA1740
@@ -1455,8 +1538,9 @@ CONFIG_SCSI_AHA1740
   the box, you may have to change some settings in
   drivers/scsi/aha1740.h. 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.
+  whenever you want). The module will be called aha17400.o. If you
+  want to compile it as a module, say M here and read
+  Documentation/modules.txt.
 
 Adaptec AHA274X/284X/294X support
 CONFIG_SCSI_AIC7XXX
@@ -1466,7 +1550,8 @@ CONFIG_SCSI_AIC7XXX
   doesn't work out of the box, you may have to change some settings in
   drivers/scsi/aic7xxx.h.  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.
+  whenever you want), say M here and read
+  Documentation/modules.txt. The module will be called aic7xxx.o.
 
 BusLogic SCSI support
 CONFIG_SCSI_BUSLOGIC
@@ -1481,8 +1566,9 @@ CONFIG_SCSI_BUSLOGIC
   correctly without modification, please contact the author.  You can
   build this driver also as a module ( = code which can be inserted in
   and removed from the running kernel whenever you want), but only a
-  single instance may be loaded. If you want to compile it as a
-  module, say M here and read Documentation/modules.txt.
+  single instance may be loaded. The module will be called
+  BusLogic.o. If you want to compile it as a module, say M here and
+  read Documentation/modules.txt.
 
 DTC3180/3280 SCSI support
 CONFIG_SCSI_DTC3280
@@ -1491,8 +1577,9 @@ CONFIG_SCSI_DTC3280
   sunsite.unc.edu:/pub/Linux/docs/HOWTO and the file
   drivers/scsi/README.dtc3x80.  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.
+  kernel whenever you want). The module will be called dtc.o. If you
+  want to compile it as a module, say M here and read
+  Documentation/modules.txt.
 
 EATA-DMA (DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix) support
 CONFIG_SCSI_EATA_DMA
@@ -1500,12 +1587,13 @@ CONFIG_SCSI_EATA_DMA
   Adaptors 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 enable only one of them. Please read the
+  support". You should only say Y to one of them. Please read the
   SCSI-HOWTO, available via ftp (user: anonymous) at
   sunsite.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). If you want to compile
-  it as a module, say M here and read Documentation/modules.txt.
+  from the running kernel whenever you want). The module will be
+  called eata_dma.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt.
 
 EATA-PIO (old DPT PM2001, PM2012A) support
 CONFIG_SCSI_EATA_PIO
@@ -1518,34 +1606,48 @@ CONFIG_SCSI_EATA_PIO
   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.
+  Documentation/modules.txt. The module will be called eata_pio.o.
 
 UltraStor 14F/34F support
 CONFIG_SCSI_U14_34F
   This is support for the UltraStor 14F and 34F SCSI-2 host adapters.
-  The source at drivers/scsi/u14-34f.c contains some information about 
-  this hardware. If the driver doesn't work out of the box, you may have 
-  to change some settings in drivers/scsi/u14-34f.c.
-  Read the SCSI-HOWTO, available via ftp (user: anonymous) at 
-  sunsite.unc.edu:/pub/Linux/docs/HOWTO. Note that there is also another
-  driver for the same hardware: "UltraStor SCSI support", below.
-  You should enable both only if you want 24F support 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). If you
-  want to compile it as a module, say M here and read
-  Documentation/modules.txt.
+  The source at drivers/scsi/u14-34f.c contains some information about
+  this hardware. If the driver doesn't work out of the box, you may
+  have to change some settings in drivers/scsi/u14-34f.c.  Read the
+  SCSI-HOWTO, available via ftp (user: anonymous) at
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO. Note that there is also
+  another driver for the same hardware: "UltraStor SCSI support",
+  below.  You should say Y to both only if you want 24F support 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). The module will be called u14-34f.o. If you want to compile
+  it as a module, say M here and read Documentation/modules.txt.
+
+enable linked commands
+CONFIG_SCSI_U14_34F_LINKED_COMMANDS
+  This is a feature of SCSI-2 which improves performance: the host
+  adaptor can send a whole list of commands to a device in one
+  batch. Some SCSI devices might not implement this properly, so the
+  save 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 a
+  given SCSI device. Go with the default unless you know what you're
+  doing. Minimum is 2 and maximum is 8.
 
 Future Domain 16xx SCSI support
 CONFIG_SCSI_FUTURE_DOMAIN
   This is support for Future Domain's 16-bit SCSI host adaptors
-  (TMC-1660/1680, TMC-1650/1670, TMC-3260, TMC-1610M/MER/MEX) and other
-  adaptors based on the Future Domain chipsets (Quantum ISA-200S,
-  ISA-250MG; Adaptec AHA-2920; and at least one IBM board).  It is
-  explained in section 3.7 of the SCSI-HOWTO, available via ftp (user:
-  anonymous) at sunsite.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). If you want to
-  compile it as a module, say M here and read Documentation/modules.txt.
+  (TMC-1660/1680, TMC-1650/1670, TMC-3260, TMC-1610M/MER/MEX) and
+  other adaptors based on the Future Domain chipsets (Quantum
+  ISA-200S, ISA-250MG; Adaptec AHA-2920; and at least one IBM board).
+  It is explained in section 3.7 of the SCSI-HOWTO, available via ftp
+  (user: anonymous) at sunsite.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 fdomain.o. If you want to compile it as a
+  module, say M here and read Documentation/modules.txt.
 
 Generic NCR5380/53c400 SCSI support
 CONFIG_SCSI_GENERIC_NCR5380
@@ -1556,8 +1658,9 @@ CONFIG_SCSI_GENERIC_NCR5380
   the box, you may have to change some settings in
   drivers/scsi/g_NCR5380.h. 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.
+  kernel whenever you want). The module will be called g_NCR5380.o. If
+  you want to compile it as a module, say M here and read
+  Documentation/modules.txt.
  
 Enable NCR53c400 extensions
 CONFIG_SCSI_GENERIC_NCR53C400
@@ -1566,8 +1669,7 @@ CONFIG_SCSI_GENERIC_NCR53C400
   the Trantor T130B in its default configuration; you might have to
   pass a command line option to the kernel at boot time if it doesn't
   detect your card. See the file drivers/scsi/README.g_NCR5380 for
-  details. If you want to compile it as a module, say M here and read
-  Documentation/modules.txt.
+  details.
 
 NCR5380/53c400 mapping method (use Port for T130B)
 CONFIG_SCSI_G_NCR5380_PORT
@@ -1584,8 +1686,9 @@ CONFIG_SCSI_NCR53C7xx
   box, you may have to change some settings in
   drivers/scsi/53c7,8xx.h. 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.
+  whenever you want). The module will be called 53c7,8xx.o. If you
+  want to compile it as a module, say M here and read
+  Documentation/modules.txt.
 
 always negotiate synchronous transfers
 CONFIG_SCSI_NCR53C7xx_sync
@@ -1602,7 +1705,7 @@ CONFIG_SCSI_NCR53C7xx_FAST
 allow DISCONNECT
 CONFIG_SCSI_NCR53C7xx_DISCONNECT
   This enables the disconnect/reconnect feature of the NCR SCSI
-  controller.  When this is enabled, a slow SCSI device will not lock
+  controller.  When you say Y here, a slow SCSI device will not lock
   the SCSI bus while processing a request, allowing simultaneous use
   of e.g. a SCSI hard disk and SCSI tape or CD-ROM drive, and
   providing much better performance when using slow and fast SCSI
@@ -1685,17 +1788,21 @@ CONFIG_SCSI_NCR53C8XX_MAX_TAGS
 IBMMCA SCSI support
 CONFIG_SCSI_IBMMCA
   If your computer sports an MCA bus system architecture (IBM PS/2)
-  with an SCSI harddrive, say Y here.
+  with an SCSI harddrive, say Y here. 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
+  ibmmca.o. If you want to compile it as a module, say M here and read
+  Documentation/modules.txt.
 
 Always IN2000 SCSI support
 CONFIG_SCSI_IN2000
-  This is support for an ISA bus SCSI host adaptor. You'll find
-  more information in drivers/scsi/in2000.readme. If it doesn't
-  work out of the box, you may have to change the jumpers for IRQ
-  or address selection. 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.
+  This is support for an ISA bus SCSI host adaptor. You'll find more
+  information in drivers/scsi/in2000.readme. If it doesn't work out of
+  the box, you may have to change the jumpers for IRQ or address
+  selection. 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 in2000.o.
 
 PAS16 SCSI support
 CONFIG_SCSI_PAS16
@@ -1703,7 +1810,12 @@ CONFIG_SCSI_PAS16
   3.10 of the SCSI-HOWTO, available via ftp (user: anonymous) at
   sunsite.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/pas16.h.
+  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
+  pas16.o. If you want to compile it as a module, say M here and read
+  Documentation/modules.txt.
+
 Qlogic FAS SCSI support
 CONFIG_SCSI_QLOGIC_FAS
   This driver works only with the ISA, VLB, and PCMCIA versions of the
@@ -1715,8 +1827,9 @@ CONFIG_SCSI_QLOGIC_FAS
   the SCSI-HOWTO, available via ftp (user: anonymous) at
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt.
+  running kernel whenever you want). The module will be called
+  qlogicfas.o. If you want to compile it as a module, say M here and
+  read Documentation/modules.txt.
 
 Qlogic ISP SCSI support (EXPERIMENTAL)
 CONFIG_SCSI_QLOGIC_ISP
@@ -1729,20 +1842,21 @@ CONFIG_SCSI_QLOGIC_ISP
   available via ftp (user: anonymous) at
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt.
+  running kernel whenever you want). The module will be called
+  qlogicisp.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 this
-  driver.  It is explained in section 3.9 of the SCSI-HOWTO, available
-  via ftp (user: anonymous) at
+  These are 8-bit SCSI controllers; the ST-01 is also supported by
+  this driver.  It is explained in section 3.9 of the SCSI-HOWTO,
+  available via ftp (user: anonymous) at
   sunsite.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/seagate.h.
   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.
+  want). The module will be called seagate.o. If you want to compile
+  it as a module, say M here and read Documentation/modules.txt.
 
 Trantor T128/T128F/T228 SCSI support
 CONFIG_SCSI_T128
@@ -1750,9 +1864,12 @@ CONFIG_SCSI_T128
   3.11 of the SCSI-HOWTO, available via ftp (user: anonymous) at
   sunsite.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/t128.h. Note that Trantor was recently purchased by
-  Adaptec, and some former Trantor products are being sold under the
-  Adaptec name.
+  drivers/scsi/t128.h. Note that Trantor was purchased by Adaptec, and
+  some former Trantor products are being sold under the Adaptec
+  name. 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 t128.o. If you want to compile it
+  as a module, say M here and read Documentation/modules.txt.
 
 UltraStor SCSI support
 CONFIG_SCSI_ULTRASTOR
@@ -1763,7 +1880,8 @@ CONFIG_SCSI_ULTRASTOR
   box, you may have to change some settings in
   drivers/scsi/ultrastor.h. 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.
+  whenever you want), say M here and read
+  Documentation/modules.txt. The module will be called ultrastor.o.
   Note that there is also another driver for the same hardware:
   "UltraStor 14F/34F support", above.
  
@@ -1772,25 +1890,46 @@ CONFIG_SCSI_7000FASST
   This driver supports the Western Digital 7000 SCSI host adaptor.
   Some information is in the source: drivers/scsi/wd7000.c.  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.
+  in and removed from the running kernel whenever you 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.
 
 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
-  and does not need any BIOS32 service.
-  DPT ISA and all EISA i/o addresses are probed looking for the "EATA"
-  signature. If "PCI bios support" is enabled, the addresses of all
-  the PCI SCSI controllers reported by BIOS32 are probed as well.
-  Note that there is also another driver for the same hardware:
-  "EATA-DMA support". You should enable only one of them.
-  You want to read the start of drivers/scsi/eata.c and the
-  SCSI-HOWTO, available via ftp (user: anonymous) at
-  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.
+  and does not need any BIOS32 service.  DPT ISA and all EISA i/o
+  addresses are probed looking for the "EATA" signature. If you said Y
+  to "PCI bios support", the addresses of all the PCI SCSI controllers
+  reported by BIOS32 are probed as well.  Note that there is also
+  another driver for the same hardware available: "EATA-DMA
+  support". You should say Y to only one of them.  You want to read
+  the start of drivers/scsi/eata.c and the SCSI-HOWTO, available via
+  ftp (user: anonymous) at 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
+  eata.o.
+
+enable tagged command queuing
+CONFIG_SCSI_EATA_TAGGED_QUEUE
+  This is a feature of SCSI-2 which improves performance: the host
+  adaptor can send several SCSI commands to a device's queue even if
+  previous commands haven't finished yet. Some SCSI devices don't
+  implement this properly, so the save answer is N.
+
+enable linked commands
+CONFIG_SCSI_EATA_LINKED_COMMANDS
+  This is a feature of SCSI-2 which improves performance: the host
+  adaptor can send a whole list of commands to a device in one
+  batch. Some SCSI devices might not implement this properly, so the
+  save answer is N.
+
+maximum number of queued commands
+CONFIG_SCSI_EATA_MAX_TAGS
+  This specifies how many SCSI commands can be maximally queued for a
+  given SCSI device. Go with the default unless you know what you're
+  doing. Minimum is 2 and maximum is 16. This number will only have an
+  effect if you said Y to "enable tagged command queuing", above.
 
 NCR53c406a SCSI support
 CONFIG_SCSI_NCR53C406A
@@ -1800,7 +1939,8 @@ CONFIG_SCSI_NCR53C406A
   anonymous) at sunsite.unc.edu:/pub/Linux/docs/HOWTO.  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 read Documentation/modules.txt. The module will be called
+  NCR53c406.o.
 
 AM53/79C974 PCI SCSI support
 CONFIG_SCSI_AM53C974
@@ -1810,7 +1950,8 @@ CONFIG_SCSI_AM53C974
   sunsite.unc.edu:/pub/Linux/docs/HOWTO, is for you. 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 read Documentation/modules.txt. The module will be called
+  AM53C974.o.
 
 IOMEGA Parallel Port ZIP drive SCSI support
 CONFIG_SCSI_PPA
@@ -1825,9 +1966,10 @@ CONFIG_SCSI_PPA
   drive, a parallel printer or PLIP on the same parallel port, you
   should compile the drivers as modules and only insert them as
   needed. To compile this driver as a module, say M here and read
-  Documentation/modules.txt. Note that you can say N here if you have
-  the SCSI version of the ZIP drive: it will be supported
-  automatically if you enabled the generic "SCSI disk support", above.
+  Documentation/modules.txt. The module will be called ppa.o. 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.
 
 Network device support?
 CONFIG_NETDEVICES
@@ -1873,16 +2015,17 @@ CONFIG_DUMMY
   this device is consigned into oblivion) with a configurable IP
   address. It is most commonly used in order to make your currently
   inactive SLIP address seem like a real address for local
-  programs. If you use SLIP or PPP, you might want to enable it. Read
+  programs. If you use SLIP or PPP, you might want to say Y here. Read
   about it in the Network Administrator's Guide, available via ftp
   (user: anonymous) from sunsite.unc.edu:/pub/Linux/docs/LDP. Since
   this thing comes often handy, the default is Y. It won't enlarge
   your kernel either. What a deal.  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. If you want to use more than one dummy
-  device at a time, you need to compile it as a module. Instead of
-  'dummy', it will they will then be called 'dummy0', 'dummy1' etc.
+  Documentation/modules.txt. The module will be called dummy.o. If you
+  want to use more than one dummy device at a time, you need to
+  compile it as a module. Instead of 'dummy', it will they will then
+  be called 'dummy0', 'dummy1' etc.
   
 SLIP (serial line) support
 CONFIG_SLIP
@@ -1908,7 +2051,8 @@ CONFIG_SLIP
   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 as well as
-  Documentation/networking/net-modules.txt.
+  Documentation/networking/net-modules.txt. The module will be called
+  slip.o.
   
 CSLIP compressed headers
 CONFIG_SLIP_COMPRESSED
@@ -1944,11 +2088,23 @@ Radio network interfaces
 CONFIG_NET_RADIO
   Radio based interfaces for Linux. This includes amateur radio
   (AX.25), support for wireless ethernet and other systems. Note that
-  the answer to this question won't directly affect the kernel:
-  saying N will just cause this configure script to skip all the
-  questions about radio interfaces. Some user-level drivers for scarab
-  devices which don't require special kernel support are available via
-  ftp (user: anonymous) from shadow.cabi.net. If unsure, say N.
+  the answer to this question won't directly affect the kernel: saying
+  N will just cause this configure script to skip all the questions
+  about radio interfaces. Some user-level drivers for scarab devices
+  which don't require special kernel support are available via ftp
+  (user: anonymous) from shadow.cabi.net. 
+  If unsure, say N.
+
+AX.25 network interfaces
+CONFIG_NET_HAM
+  Say Y here if you want support for a device that connects your Linux
+  box to your amateur radio (HAM). AX.25 is the protocol used for
+  digital traffic over amateur radio connections. You might want to
+  read the HAM-HOWTO and the AX25-HOWTO, both available via ftp (user:
+  anonymous) from sunsite.unc.edu:/pub/Linux/docs/HOWTO. Note that the
+  answer to this question won't directly affect the kernel: saying N
+  will just cause this configure script to skip all the questions
+  about amateur radio interfaces.
 
 PPP (point-to-point) support
 CONFIG_PPP
@@ -1961,17 +2117,19 @@ CONFIG_PPP
   anonymous) from sunsite.unc.edu:/pub/Linux/system/Network/serial/).
   To use PPP, you need an additional program called pppd as described
   in Documentation/networking/ppp.txt and in the PPP-HOWTO, available
-  from sunsite.unc.edu:/pub/Linux/docs/HOWTO. Note that you don't need
-  this option if you just want to run 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. Read
-  the Term-HOWTO). The PPP option enlarges your kernel by about
-  16kB. 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 said Y to "Version information on all symbols" above,
-  then you cannot compile the PPP driver into the kernel; you can only
-  compile it as a module. If you want to compile it as a module, say M
-  here and read Documentation/modules.txt as well as
+  from sunsite.unc.edu:/pub/Linux/docs/HOWTO. If you upgrade from an
+  older kernel, you might need to upgrade pppd as well.  Note that you
+  don't need "PPP support" if you just want to run 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. Read the Term-HOWTO). The PPP option enlarges your kernel
+  by about 16kB. 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 said Y to "Version information on all
+  symbols" above, then you cannot compile the PPP driver into the
+  kernel; you can then only compile it as a module. The module will be
+  called ppp.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. Note that, no matter what
   you do, the BSD compression code (used to compress the IP packets
   sent over the serial line; has to be supported at the other end as
@@ -1996,7 +2154,7 @@ CONFIG_STRIP
   except that it makes the kernel a bit bigger. You can also 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.
+  Documentation/modules.txt. The module will be called strip.o.
 
 WIC (Radio IP bridge)
 CONFIG_WIC
@@ -2004,59 +2162,77 @@ CONFIG_WIC
   to say N.  If you want to compile this driver as a module though ( =
   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 wic.o.
+  
+CONFIG_LAPBETHER
+LAPB over Ethernet driver
+  This is a driver for a pseudo device (usually called /dev/lapb0)
+  which allows you to open an LAPB point-to-point connection to some
+  other computer on your ethernet network. In order to do this, you
+  need to say Y or M to the driver for your ethernet card as well as
+  to "LAPB Data Link Driver".  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 lapbether.o.
+  If unsure, say N.
 
 Z8530 SCC driver for AX.25
 CONFIG_SCC
   These cards are used to connect your Linux box to an amateur radio
   in order to communicate with other computers.  If you want to use
-  this, read Documentation/networking/z8530drv.txt and the AX.25-HOWTO,
-  available via ftp (user: anonymous) at
+  this, read Documentation/networking/z8530drv.txt and the
+  AX.25-HOWTO, available via ftp (user: anonymous) at
   sunsite.unc.edu:/pub/Linux/docs/HOWTO.  Also make sure to say Y to
   "Amateur Radio AX.25 Level 2" support. 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.
+  Documentation/modules.txt. The module will be called scc.o.
 
 BAYCOM ser12 and par96 driver for AX.25
 CONFIG_BAYCOM
   This is an experimental driver for Baycom style simple amateur radio
   modems that connect to either a serial interface or a parallel
   interface. The driver supports the ser12 and par96 designs. To
-  configure the driver, use the sethdlc utility available
-  in the standard ax25 utilities package. For information on the modems,
-  see http://www.baycom.de and drivers/net/README.baycom.
-  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. This is recommended.
+  configure the driver, use the sethdlc utility available in the
+  standard ax25 utilities package. For information on the modems, see
+  http://www.baycom.de and drivers/net/README.baycom. 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 baycom.o.
 
 Soundcard modem driver for AX.25
 CONFIG_SOUNDMODEM
-  This experimental driver allows a standard SoundBlaster or 
+  This experimental driver allows a standard SoundBlaster or
   WindowsSoundSystem compatible soundcard to be used as a packet radio
-  modem. To configure the driver, use the sethdlc, smdiag and smmixer
-  utilities available in the standard ax25 utilities package. For
-  informations on how to key the transmitter, see
+  modem, to send digital traffic over amateur radio. To configure the
+  driver, use the sethdlc, smdiag and smmixer utilities available in
+  the standard ax25 utilities package. For information on how to key
+  the transmitter, see
   http://www.ife.ee.ethz.ch/~sailer/pcf/ptt_circ/ptt.html and
-  drivers/net/README.soundmodem. If you want to compile this as a
-  module ( = code which can be inserted in and removed from the
+  drivers/net/README.soundmodem. If you want to compile this driver as
+  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.
+  Documentation/modules.txt. This is recommended. The module will be
+  called soundmodem.o.
 
 Soundcard modem support for SoundBlaster and compatible cards
 CONFIG_SOUNDMODEM_SBC
-  This option enables the soundmodem driver to use SoundBlaster
-  and compatible cards. Dual mode cards (i.e. WSS cards with a
-  SoundBlaster emulation) should be used in WSS mode because
-  this results in usually better performance.
+  This option enables the soundmodem driver to use SoundBlaster and
+  compatible cards. If you have a dual mode card (i.e. a WSS cards
+  with a SoundBlaster emulation) you should say N here and Y to
+  "Soundcard modem support for WSS and Crystal cards", below, because
+  this usually results in better performance.
 
 Soundcard modem support for WSS and Crystal cards
 CONFIG_SOUNDMODEM_WSS
   This option enables the soundmodem driver to use WindowsSoundSystem
   compatible cards. These cards feature a codec chip from either
-  Analog Devices (such as AD1848, AD1845, AD1812) or Crystal Semiconductors
-  (such as CS4248, CS423x). This option also supports the WSS full duplex
-  operation which currently works with Crystal CS423x chips. If you don't
-  need full duplex operation, do not enable it to save performance.
+  Analog Devices (such as AD1848, AD1845, AD1812) or Crystal
+  Semiconductors (such as CS4248, CS423x). This option also supports
+  the WSS full duplex operation which currently works with Crystal
+  CS423x chips. If you don't need full duplex operation, do not enable
+  it to save performance.
 
 Soundcard modem support for 1200 baud AFSK modulation
 CONFIG_SOUNDMODEM_AFSK1200
@@ -2064,30 +2240,35 @@ CONFIG_SOUNDMODEM_AFSK1200
   compatible to popular modems using TCM3105 or AM7911. The demodulator
   requires about 12% of the CPU power of a Pentium 75 CPU per channel.
 
-Soundcard modem support for 1200 baud AFSK modulation
+Soundmodem 1200 baud AFSK using floating point
 CONFIG_SOUNDMODEM_AFSK1200_FP
   This option enables floating point calculations to be used for the
   AFSK1200 baud modem. The Intel Pentium is a perverted chip because
-  integer multiplications are, altough easier to implement in silicon,
-  an order of magnitude slower than floating point calculations.
+  integer multiplications are, although easier to implement in silicon,
+  an order of magnitude slower than floating point calculations.
   Enabling this option uses a highly optimized assembler routine for
-  correlations, modelled after the one published by Phil Karn, KA9Q.
-  This reduces the computing power needed on Intel Pentium chips to about
-  50%. On the other hand, Pentium clones with faster integer multiply and
-  slower floating point multiply will probably take longer with this
-  option turned on. As a rule of thumb, enable it for Intel Pentium and
-  Pentium Pro processors, and disable it for anything else.
+  correlations, modeled after the one published by Phil Karn, KA9Q.
+  This reduces the computing power needed on Intel Pentium chips to
+  about 50%. On the other hand, Pentium clones with faster integer
+  multiply and slower floating point multiply will probably take
+  longer with this option turned on. As a rule of thumb, enable it for
+  Intel Pentium and Pentium Pro processors, and disable it for
+  anything else.
   I (sailer@ife.ee.ethz.ch) am very interested in figures. If you are
-  willing to give me a feedback, please compile the driver once with this
-  option enabled and once with it disabled, and send me the cycle counter
-  numbers obtained with both compilations, and your exact chip. The cycle
-  counter numbers can be optained by a recent sethdlc utility.
+  willing to give me a feedback, please compile the driver once with
+  this option enabled and once with it disabled, and send me the cycle
+  counter numbers obtained with both compilations, and your exact
+  chip. The cycle counter numbers can be obtained with a recent
+  sethdlc utility.
 
 Soundcard modem support for 9600 baud FSK G3RUH modulation
 CONFIG_SOUNDMODEM_FSK9600
   This option enables the soundmodem driver 9600 baud FSK modem,
   compatible to the G3RUH standard. The demodulator requires about 4%
-  of the CPU power of a Pentium 75 CPU per channel.
+  of the CPU power of a Pentium 75 CPU per channel. You can say Y to
+  both 1200 baud AFSK and 9600 baud FSK if you want (but obviously you
+  can only use one protocol at a time, depending on what the other end
+  can understand).
 
 Serial port KISS driver for AX.25
 CONFIG_MKISS
@@ -2098,7 +2279,8 @@ CONFIG_MKISS
   case, you also have to say Y to "Amateur Radio AX.25 Level 2"
   support.  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.
+  whenever you want), say M here and read
+  Documentation/modules.txt. The module will be called mkiss.o.
 
 PLIP (parallel port) support
 CONFIG_PLIP
@@ -2122,25 +2304,25 @@ CONFIG_PLIP
   your kernel by about 8kB. 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 as
-  well as Documentation/networking/net-modules.txt. If you want to use
-  both a parallel printer and PLIP, there are two cases: 1) If the
-  printer and the PLIP cable are to use the same parallel port
-  (presumably because you have just one), it is best to compile both
-  drivers as modules and load and unload them as needed. 2) To use
-  different parallel ports for the printer and the PLIP cable, you can
-  say Y to the printer driver, specify the base address of the
-  parallel port(s) to use for the printer(s) with the "lp" kernel
-  command line option. (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
-  sunsite.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. You can then say Y to this PLIP driver or,
-  preferably, M in which case Documentation/networking/net-modules.txt
-  tells you how to specify the port and IRQ to be used by PLIP at
-  module load time.
-  It's safe to say N here.
+  well as Documentation/networking/net-modules.txt. The module will be
+  called plip.o. If you want to use both a parallel printer and PLIP,
+  there are two cases: 1) If the printer and the PLIP cable are to use
+  the same parallel port (presumably because you have just one), it is
+  best to compile both drivers as modules and load and unload them as
+  needed. 2) In order to use different parallel ports for the printer
+  and the PLIP cable, you can say Y to the printer driver and specify
+  the base address of the parallel port(s) to use for the printer(s)
+  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 sunsite.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. You can then say Y to this PLIP
+  driver or, preferably, M in which case
+  Documentation/networking/net-modules.txt tells you how to specify
+  the port and IRQ to be used by PLIP at module load time.  It's safe
+  to say N here.
 
 EQL (serial line load balancing) support
 CONFIG_EQUALIZER
@@ -2153,8 +2335,9 @@ CONFIG_EQUALIZER
   EQL Linux driver or with a Livingston Portmaster 2e. Say Y if you
   want this and read drivers/net/README.eql. 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.
+  from the running kernel whenever you want). The module will be
+  called eql.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt.
 
 Frame Relay (DLCI) support
 CONFIG_DLCI
@@ -2172,8 +2355,9 @@ CONFIG_DLCI
   the net-tools package as explained in
   Documentation/networking/framerelay.txt. 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.
+  from the running kernel whenever you want). The module will be
+  called dlci.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt.
 
 Max open DLCI
 CONFIG_DLCI_COUNT 
@@ -2191,12 +2375,13 @@ CONFIG_DLCI_MAX
 Sangoma S502A FRAD support
 CONFIG_SDLA
   Say Y here if you need a driver for the Sangoma S502A, S502E, and
-  S508 Frame Relay Access Devices. These are multi-protocol
-  cards, but only frame relay is supported by the driver at this
-  time. Please read Documentation/framerelay.txt. 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.
+  S508 Frame Relay Access Devices. These are multi-protocol cards, but
+  only frame relay is supported by the driver at this time. Please
+  read Documentation/framerelay.txt. 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
+  sdla.o. If you want to compile it as a module, say M here and read
+  Documentation/modules.txt.
 
 Sun LANCE Ethernet support
 CONFIG_SUN_LANCE
@@ -2238,8 +2423,9 @@ CONFIG_WD80x3
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  running kernel whenever you want). The module will be called
+  wd.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2251,15 +2437,16 @@ CONFIG_ULTRA
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). 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. If you plan to use
-  more than one network card under linux, read the
+  from the running kernel whenever you want). The module will be
+  called smc-ultra.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. If you plan to use more
+  than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
-  sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
-  Important: There have been many reports that, with some motherboards
-  mixing an SMC Ultra and an Adaptec AHA1542 SCSI card causes corruption
-  problems with many operating systems.
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.  Important: There have
+  been many reports that, with some motherboards mixing an SMC Ultra
+  and an Adaptec AHA1542 SCSI card causes corruption problems with
+  many operating systems.
 
 SMC 9194 Support
 CONFIG_SMC9194
@@ -2270,10 +2457,11 @@ CONFIG_SMC9194
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). 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. If you plan to use
-  more than one network card under linux, read the
+  from the running kernel whenever you want). The module will be
+  called smc9194.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. If you plan to use more
+  than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
@@ -2281,9 +2469,10 @@ AMD LANCE and PCnet (AT1500 and NE2100) support
 CONFIG_LANCE
   If you have a network (ethernet) card of this type, say Y and read
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
-  sunsite.unc.edu:/pub/Linux/docs/HOWTO. If you plan to use more than
-  one network card under linux, read the Multiple-Ethernet-mini-HOWTO,
-  available from sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO. Some LinkSys cards are of
+  this type. If you plan to use more than one network card under
+  linux, read the Multiple-Ethernet-mini-HOWTO, available from
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
 3COM cards
 CONFIG_NET_VENDOR_3COM
@@ -2302,13 +2491,16 @@ CONFIG_EL1
   If you have a network (ethernet) card of this type, say Y and read
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO.  Also, consider buying a new
-  card, since the 3c501 is slow and obsolete. This driver is also 
+  card, since the 3c501 is slow, broken, and obsolete: you will have
+  problems. Some people suggest to ping ("man ping") a nearby machine
+  every minute ("man cron") when using this card.  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 as well
-  as Documentation/networking/net-modules.txt. If you plan to use more
-  than one network card under linux, read the 
-  Multiple-Ethernet-mini-HOWTO, available from 
+  from the running kernel whenever you want). The module will be
+  called 3c501.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. If you plan to use more
+  than one network card under linux, read the
+  Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini - and don't use 3c501s.
 
 3c503 support
@@ -2317,8 +2509,9 @@ CONFIG_EL2
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  running kernel whenever you want). The module will be called
+  3c503.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2333,9 +2526,9 @@ CONFIG_ELPLUS
   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 as well as
-  Documentation/networking/net-modules.txt. If you plan to use more
-  than one network card under linux, read the
-  Multiple-Ethernet-mini-HOWTO, available from
+  Documentation/networking/net-modules.txt. The module will be called
+  3c505.o. If you plan to use more than one network card under linux,
+  read the Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
 3c507 support
@@ -2344,20 +2537,23 @@ CONFIG_EL16
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  running kernel whenever you want). The module will be called
+  3c507.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
-3c523 support CONFIG_ELMC
+3c523 support 
+CONFIG_ELMC
   If you have a network (ethernet) card of this type, say Y and read
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  running kernel whenever you want). The module will be called
+  3c523.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2371,9 +2567,9 @@ CONFIG_EL3
   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 as well as
-  Documentation/networking/net-modules.txt. If you plan to use more
-  than one network card under linux, read the
-  Multiple-Ethernet-mini-HOWTO, available from
+  Documentation/networking/net-modules.txt. The module will be called
+  3c509.o. If you plan to use more than one network card under linux,
+  read the Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini. If your card is not
   working you may need to use the DOS setup disk to disable Plug &
   Play mode, and to select the default media type.
@@ -2384,13 +2580,13 @@ CONFIG_VORTEX
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO. More specific information is
   in Documentation/networking/vortex.txt and in the comments at the
-  beginning of drivers/net/3c59x.c. If you want to compile this
-  as a module ( = code which can be inserted in and removed from the
+  beginning of drivers/net/3c59x.c. 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 as well as
-  Documentation/networking/net-modules.txt. If you plan to use more
-  than one network card under linux, read the
-  Multiple-Ethernet-mini-HOWTO, available from
+  Documentation/networking/net-modules.txt. The module will be called
+  3c59x.o. If you plan to use more than one network card under linux,
+  read the Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini
 
 Other ISA cards
@@ -2411,13 +2607,14 @@ CONFIG_NET_ISA
 ARCnet support
 CONFIG_ARCNET
   If you have a network card of this type, say Y and check out the
-  (arguably) beautiful poetry in Documentation/networking/arcnet.txt. 
+  (arguably) beautiful poetry in Documentation/networking/arcnet.txt.
   You might also want to have a look at the Ethernet-HOWTO, available
   via ftp (user: anonymous) in sunsite.unc.edu:/pub/Linux/docs/HOWTO
   (even though ARCnet is not really ethernet). 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 as well as
+  from the running kernel whenever you want). The module will be
+  called arcnet.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2425,14 +2622,14 @@ CONFIG_ARCNET
   
 Enable arc0e (ARCnet "ether-encap" packet format)
 CONFIG_ARCNET_ETH
-  This allows you to use "ethernet encapsulation" with your ARCnet card
-  via the virtual arc0e device.  You only need arc0e if you want to
-  talk to nonstandard ARCnet software, specifically, DOS/Windows-style
-  "NDIS" drivers.  You do not need to enable this option to communicate
-  with industry-standard RFC1201 implementations, like the arcether.com
-  packet driver or most DOS/Windows ODI drivers.  RFC1201 is included
-  automatically as the arc0 device.  Please read the ARCnet
-  documentation in Documentation/networking/arcnet.txt for more
+  This allows you to use "ethernet encapsulation" with your ARCnet
+  card via the virtual arc0e device.  You only need arc0e if you want
+  to talk to nonstandard ARCnet software, specifically,
+  DOS/Windows-style "NDIS" drivers.  You do not need to say Y here to
+  communicate with industry-standard RFC1201 implementations, like the
+  arcether.com packet driver or most DOS/Windows ODI drivers.  RFC1201
+  is included automatically as the arc0 device.  Please read the
+  ARCnet documentation in Documentation/networking/arcnet.txt for more
   information about using arc0e and arc0s.
 
 Enable arc0s (ARCnet RFC1051 packet format)
@@ -2440,8 +2637,8 @@ CONFIG_ARCNET_1051
   This allows you to use RFC1051 with your ARCnet card via the virtual
   arc0s device.  You only need arc0s if you want to talk to ARCnet
   software complying with the "old" standard, specifically, the DOS
-  arcnet.com packet driver, Amigas running AmiTCP, and some variants of
-  NetBSD.  You do not need to enable this option to communicate with
+  arcnet.com packet driver, Amigas running AmiTCP, and some variants
+  of NetBSD.  You do not need to say Y here to communicate with
   industry-standard RFC1201 implementations, like the arcether.com
   packet driver or most DOS/Windows ODI drivers.  RFC1201 is included
   automatically as the arc0 device.  Please read the ARCnet
@@ -2454,8 +2651,9 @@ CONFIG_E2100
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  running kernel whenever you want). The module will be called
+  e2100.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2469,9 +2667,9 @@ CONFIG_DEPCA
   drivers/net/depca.c.  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 as
-  well as Documentation/networking/net-modules.txt. If you plan to use
-  more than one network card under linux, read the
-  Multiple-Ethernet-mini-HOWTO, available from
+  well as Documentation/networking/net-modules.txt. The module will be
+  called depca.o. If you plan to use more than one network card under
+  linux, read the Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
 EtherWorks 3 support
@@ -2483,9 +2681,9 @@ CONFIG_EWRK3
   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 as well as
-  Documentation/networking/net-modules.txt. If you plan to use more
-  than one network card under linux, read the
-  Multiple-Ethernet-mini-HOWTO, available from
+  Documentation/networking/net-modules.txt. The module will be called
+  ewrk3.o. If you plan to use more than one network card under linux,
+  read the Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
 SEEQ8005 support
@@ -2505,19 +2703,20 @@ CONFIG_AT1700
   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 as well as
-  Documentation/networking/net-modules.txt. If you plan to use more
-  than one network card under linux, read the
-  Multiple-Ethernet-mini-HOWTO, available from
+  Documentation/networking/net-modules.txt. The module will be called
+  at1700.o. If you plan to use more than one network card under linux,
+  read the Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
 FMV-181/182/183/184 support
 CONFIG_FMV18X
   If you have a Fujitsu FMV-181/182/183/184 network (ethernet) card,
-  say Y and read the Ethernet-HOWTO, available via ftp (user: anonymous)
-  in sunsite.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). If you want to compile it
-  as a module, say M here and read Documentation/modules.txt as well as
+  say Y and read the Ethernet-HOWTO, available via ftp (user:
+  anonymous) in sunsite.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 fmv18x.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2531,8 +2730,9 @@ CONFIG_EEXPRESS_PRO
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  running kernel whenever you want). The module will be called
+  eepro.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2549,16 +2749,21 @@ CONFIG_EEXPRESS
   module ( = code which can be inserted in and removed from the
   running kernel whenever you want), say M here and read
   Documentation/modules.txt as well as
-  Documentation/networking/net-modules.txt. If you plan to use more
-  than one network card under linux, read the
-  Multiple-Ethernet-mini-HOWTO, available from
+  Documentation/networking/net-modules.txt. The module will be called
+  eexpress.o. If you plan to use more than one network card under
+  linux, read the Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
 NI5210 support
 CONFIG_NI52
   If you have a network (ethernet) card of this type, say Y and read
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
-  sunsite.unc.edu:/pub/Linux/docs/HOWTO. If you plan to use more than
+  sunsite.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
+  ni52.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. If you plan to use more than
   one network card under linux, read the Multiple-Ethernet-mini-HOWTO,
   available from sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
@@ -2568,15 +2773,15 @@ CONFIG_NI65
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO. 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. If you plan to use more
-  than one network card under linux, read the
-  Multiple-Ethernet-mini-HOWTO, available from
+  Documentation/networking/net-modules.txt. The module will be called
+  ni65.o. If you plan to use more than one network card under linux,
+  read the Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
 Ottawa PI and PI/2 support
 CONFIG_PI
   This is a driver for the Ottawa Amateur Radio Club PI and PI2 cards,
-  which are commonly used to send internet traffic over amateur radio. 
+  which are commonly used to send internet traffic over amateur radio.
   More information about these cards is on the WWW at
   http://hydra.carleton.ca/info/pi2.html (To browse the WWW, you need
   to have access to a machine on the Internet that has one of the
@@ -2587,7 +2792,7 @@ CONFIG_PI
   the protocol used for digital traffic over radio links. 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.
+  read Documentation/modules.txt. The module will be called pi2.o.
 
 Gracilis PackeTwin support
 CONFIG_PT
@@ -2600,7 +2805,8 @@ CONFIG_PT
   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 as well as
-  Documentation/networking/net-modules.txt.
+  Documentation/networking/net-modules.txt. The module will be called
+  pt.o.
 
 WaveLAN support
 CONFIG_WAVELAN
@@ -2611,8 +2817,9 @@ CONFIG_WAVELAN
   more specific information is contained in
   drivers/net/README.wavelan. 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 as well as
+  running kernel whenever you want). The module will be called
+  wavelan.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2624,8 +2831,9 @@ CONFIG_HPLAN_PLUS
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  running kernel whenever you want). The module will be called
+  hp-plus.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2637,8 +2845,9 @@ CONFIG_HPLAN
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  running kernel whenever you want). The module will be called
+  hp.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2652,19 +2861,21 @@ CONFIG_HP100
   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 as well as
-  Documentation/networking/net-modules.txt. If you plan to use more
-  than one network card under linux, read the
-  Multiple-Ethernet-mini-HOWTO, available from
+  Documentation/networking/net-modules.txt. The module will be called
+  hp100.o. If you plan to use more than one network card under linux,
+  read the Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
 NE2000/NE1000 support
 CONFIG_NE2000
   If you have a network (ethernet) card of this type, say Y and read
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
-  sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO. Many ethernet cards without a
+  specific driver are compatible with NE2000. 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 ne.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2698,8 +2909,9 @@ CONFIG_AC3200
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  running kernel whenever you want). The module will be called
+  ac3200.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2711,8 +2923,9 @@ CONFIG_ES3210
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  running kernel whenever you want). The module will be called
+  es3210.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2726,22 +2939,23 @@ CONFIG_APRICOT
   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 as well as
-  Documentation/networking/net-modules.txt. If you plan to use more
-  than one network card under linux, read the
-  Multiple-Ethernet-mini-HOWTO, available from
+  Documentation/networking/net-modules.txt. The module will be called
+  apricot.o. If you plan to use more than one network card under
+  linux, read the Multiple-Ethernet-mini-HOWTO, available from
   sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
 DE425, DE434, DE435 support
 CONFIG_DE4X5
   This is support for the DIGITAL series of PCI/EISA ethernet
   cards. These include the DE425, DE434, DE435, DE450 and DE500
-  models. If you have a network card of this type, say Y and read
-  the Ethernet-HOWTO, available via ftp (user: anonymous) in
+  models. If you have a network card of this type, say Y and read the
+  Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO.  More specific information is
   contained in drivers/net/README.de4x5. 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 as well as
+  running kernel whenever you want). The module will be called
+  de4x5.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2751,29 +2965,32 @@ DECchip Tulip (dc21x4x) PCI support
 CONFIG_DEC_ELCP
   This driver is developed for the SMC EtherPower series ethernet
   cards and also works with cards based on the DECchip
-  21040/21041/21140 (Tulip series) chips. (If your card is NOT SMC
-  EtherPower 10/100 PCI (smc9332dst), you can also try the driver from
-  "DE425, DE434, DE435 support", above.) However, most people with a
-  network card of this type will say Y here. Do read the
-  Ethernet-HOWTO, available via ftp (user: anonymous) in
-  sunsite.unc.edu:/pub/Linux/docs/HOWTO. More specific information is
-  contained in Documentation/networking/tulip.txt. 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 as
-  well as Documentation/networking/net-modules.txt.
+  21040/21041/21140 (Tulip series) chips. Some LinkSys PCI cards are
+  of this type. (If your card is NOT SMC EtherPower 10/100 PCI
+  (smc9332dst), you can also try the driver from "DE425, DE434, DE435
+  support", above.) However, most people with a network card of this
+  type will say Y here. Do read the Ethernet-HOWTO, available via ftp
+  (user: anonymous) in sunsite.unc.edu:/pub/Linux/docs/HOWTO. More
+  specific information is contained in
+  Documentation/networking/tulip.txt. 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
+  tulip.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.
 
 Digi Intl. RightSwitch support
 CONFIG_DGRS
   This is support for the Digi International RightSwitch series of
   PCI/EISA ethernet switch cards.  These include the SE-4 and the SE-6
-  models. If you have a network card of this type, say Y and read
-  the Ethernet-HOWTO, available via ftp (user: anonymous) in
+  models. If you have a network card of this type, say Y and read the
+  Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/HOWTO.  More specific information is
   contained in drivers/net/README.dgrs. 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 as well as
+  running kernel whenever you want). The module will be called
+  dgrs.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2785,8 +3002,9 @@ CONFIG_ETH16I
   the Ethernet-HOWTO, available via ftp (user: anonymous) in
   sunsite.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). If you want to compile it as a
-  module, say M here and read Documentation/modules.txt as well as
+  running kernel whenever you want). The module will be called
+  eth16i.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. If you plan to use more
   than one network card under linux, read the
   Multiple-Ethernet-mini-HOWTO, available from
@@ -2840,11 +3058,12 @@ CONFIG_DE600
   sunsite.unc.edu:/pub/Linux/docs/HOWTO if you want to use this.  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. If you intend to use this
-  pocket adaptor as well as a parallel printer, you should compile
-  both drivers as modules. If you plan to use more than one network
-  card under linux, read the Multiple-Ethernet-mini-HOWTO, available
-  from sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
+  here and read Documentation/modules.txt. The module will be called
+  de600.o. If you intend to use this pocket adaptor as well as a
+  parallel printer, you should compile both drivers as modules. If you
+  plan to use more than one network card under linux, read the
+  Multiple-Ethernet-mini-HOWTO, available from
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
 
 D-Link DE620 pocket adaptor support
 CONFIG_DE620
@@ -2854,11 +3073,12 @@ CONFIG_DE620
   sunsite.unc.edu:/pub/Linux/docs/HOWTO if you want to use this.  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. If you intend to use this
-  pocket adaptor as well as a parallel printer, you should compile
-  both drivers as modules. If you plan to use more than one network
-  card under linux, read the Multiple-Ethernet-mini-HOWTO, available
-  from sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
+  here and read Documentation/modules.txt. The module will be called
+  de620.o. If you intend to use this pocket adaptor as well as a
+  parallel printer, you should compile both drivers as modules. If you
+  plan to use more than one network card under linux, read the
+  Multiple-Ethernet-mini-HOWTO, available from
+  sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
  
 Token Ring driver support
 CONFIG_TR
@@ -2874,14 +3094,21 @@ CONFIG_IBMTR
   almost definitely fail if more than one active Token Ring card is
   present. 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.
+  want). The module will be called ibmtr.o. If you want to compile it
+  as a module, say M here and read Documentation/modules.txt.
 
 Traffic Shaper (EXPERIMENTAL)
 CONFIG_SHAPER
-  The traffic shaper is a virtual network device that allows you to limit
-  the rate of data flow over another device. See
-  Documentation/networking/shaper.txt for more information.
+  The traffic shaper is a virtual network device that allows you to
+  limit the rate of outgoing data flow over another network
+  device. See Documentation/networking/shaper.txt for more
+  information.  To set up and configure shaper devices, you need the
+  shapecfg program, available via ftp (user: anonymous) from
+  shadow.cabi.net/pub/Linux in the shaper package.  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 shaper.o. If you want to compile it as a module, say M
+  here and read Documentation/modules.txt. If unsure, say N.
 
 FDDI driver support
 CONFIG_FDDI
@@ -2927,23 +3154,37 @@ CONFIG_CDU31A
   will not be auto detected by the kernel at boot time; you have to
   provide the interface address as an option to the kernel at boot
   time as described in Documentation/cdrom/cdu31a or fill in your
-  parameters into linux/drivers/cdrom/cdu31a.c. See the documentation
-  of your boot loader (lilo or loadlin) about how to pass options to
-  the kernel. The lilo procedure is also explained in the SCSI-HOWTO.
+  parameters into linux/drivers/cdrom/cdu31a.c. Try "man bootparam" or
+  see the documentation of your boot loader (lilo or loadlin) about
+  how to pass options to the kernel. The lilo procedure is also
+  explained in the SCSI-HOWTO. If you say Y here, you should also say
+  Y to "ISO9660 cdrom filesystem support" below, because that's the
+  filesystem used on CDROMs. 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 cdu31a.o. If
+  you want to compile it as a module, say M here and read
+  Documentation/modules.txt.
 
 Standard Mitsumi [no XA/Multisession] CDROM support
 CONFIG_MCD
   This is the older of the two drivers for the older Mitsumi models
-  LU-005, FX-001 and FX-001D. This is not the right driver for the 
-  FX-001DE and the triple or quad speed models (all these are IDE/ATAPI
-  models).
-  With the old LU-005 model, the whole drive chassis slides out for
-  cd insertion.  The FX-xxx models use a motorized tray type mechanism.
-  Note that this driver does not support XA or MultiSession CDs (PhotoCDs).
-  There is a new driver (next question) which can do this. If you want
-  that one, say N here.
-  If the driver doesn't work out of the box, you might want to have
-  a look at linux/include/linux/mcd.h.
+  LU-005, FX-001 and FX-001D. This is not the right driver for the
+  FX-001DE and the triple or quad speed models (all these are
+  IDE/ATAPI models).
+  With the old LU-005 model, the whole drive chassis slides out for cd
+  insertion.  The FX-xxx models use a motorized tray type mechanism.
+  Note that this driver does not support XA or MultiSession CDs
+  (PhotoCDs).  There is a new driver (next question) which can do
+  this. If you want that one, say N here.
+  If the driver doesn't work out of the box, you might want to have a
+  look at linux/include/linux/mcd.h.  If you say Y here, you should
+  also say Y to "ISO9660 cdrom filesystem support" below, because
+  that's the filesystem used on CDROMs. Please also read the file
+  Documentation/cdrom/mcd. 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 mcd.o. If you want to
+  compile it as a module, say M here and read
+  Documentation/modules.txt.
 
 Mitsumi [XA/MultiSession] support
 CONFIG_MCDX
@@ -2952,7 +3193,14 @@ CONFIG_MCDX
   FX-001 or FX-001D CDROM drive. In addition, this driver uses much less
   kernel memory than the old one, if that is a concern. This driver is
   able to support more than one drive, but each drive needs a separate
-  interface card. Check out Documentation/cdrom/mcdx.
+  interface card.
+  If you say Y here, you should also say Y to "ISO9660 cdrom
+  filesystem support" below, because that's the filesystem used on
+  CDROMs. Please also read the file Documentation/cdrom/mcdx. 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 mcdx.o. If you want to compile it as a module,
+  say M here and read Documentation/modules.txt.
 
 Matsushita/Panasonic/Creative, Longshine, TEAC CDROM support
 CONFIG_SBPCD
@@ -2978,14 +3226,22 @@ CONFIG_SBPCD
   card can support up to four CDROM drives; if you say Y here, you
   will be asked how many controllers you have. If compiled as a
   module, only one interface card (but with up to four drives) is
-  usable.
+  usable. 
+  If you say Y here, you should also say Y to "ISO9660 cdrom
+  filesystem support" below, because that's the filesystem used on
+  CDROMs. Please also read the file Documentation/cdrom/sbpcd. 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 sbpcd.o. If you want to compile it as a
+  module, say M here and read Documentation/modules.txt.
 
 Matsushita/Panasonic, ... second CDROM controller support
 CONFIG_SBPCD2
   Say Y here only if you have two CDROM controller boards of this type
   (usually only if you have more than four drives). You should enter
   the parameters for the second, third and fourth interface card into
-  linux/include/linux/sbpcd.h before compiling the new kernel.
+  linux/include/linux/sbpcd.h before compiling the new kernel. Read
+  the file Documentation/cdrom/sbpcd.
 
 Aztech/Orchid/Okano/Wearnes/TXC/CyDROM  CDROM support
 CONFIG_AZTCD
@@ -2993,32 +3249,60 @@ CONFIG_AZTCD
   CD-3110, Okano or Wearnes CDD110, Conrad TXC, or CyCDROM CR520 or
   CR540 CDROM drive.  This driver - just like all these CDROM drivers
   - is NOT for CDROM drives with IDE/ATAPI interface, such as Aztech
-  CDA269-031SE.
+  CDA269-031SE. If you say Y here, you should also say Y to "ISO9660
+  cdrom filesystem support" below, because that's the filesystem used
+  on CDROMs. Please also read the file Documentation/cdrom/aztcd. 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 aztcd.o. If you want to compile it as a
+  module, say M here and read Documentation/modules.txt.
 
 Sony CDU535 CDROM support
 CONFIG_CDU535
-  This is the driver for the older Sony CDU-535 and CDU-531 CDROM drives.
+  This is the driver for the older Sony CDU-535 and CDU-531 CDROM
+  drives.  If you say Y here, you should also say Y to "ISO9660 cdrom
+  filesystem support" below, because that's the filesystem used on
+  CDROMs. Please also read the file Documentation/cdrom/sonycd535. 
+  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 sonycd535.o. If you want to compile
+  it as a module, say M here and read Documentation/modules.txt.
 
 Goldstar R420 CDROM support
 CONFIG_GSCD
-  If this is your CDROM drive, say Y here.
-  As described in linux/Documentation/cdrom/gscd, you might have to
-  change a setting in the file include/linux/gscd.h before compiling
-  the kernel.
+  If this is your CDROM drive, say Y here.  As described in
+  linux/Documentation/cdrom/gscd, you might have to change a setting
+  in the file include/linux/gscd.h before compiling the kernel. Please
+  read the file Documentation/cdrom/gscd. If you say Y here, you
+  should also say Y to "ISO9660 cdrom filesystem support" below,
+  because that's the filesystem used on CDROMs. 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 gscd.o. If you want to compile it as a module, say M here and
+  read Documentation/modules.txt.
 
 MicroSolutions backpack CDROM support
 CONFIG_BPCD
   MicroSolutions backpack CDROM is an external drive that connects to
-  the parallel port.  The bpcd driver supports model 164550 (and perhaps
-  other models).  Say Y if you have one of these, and read the
-  file linux/Documentation/cdrom/bpcd.  If you have several different
-  devices that will share a common parallel port, say M and build them
-  as modules.
+  the parallel port.  This driver supports model 164550 (and perhaps
+  other models).  Say Y if you have one of these, and read the file
+  Documentation/cdrom/bpcd. If you say Y here, you should also say Y
+  to "ISO9660 cdrom filesystem support" below, because that's the
+  filesystem used on CDROMs. If you have several different devices
+  that will share a common parallel port, say M and build them as
+  modules. This module will be called bpcd.o.
 
 Philips/LMS CM206 CDROM support
 CONFIG_CM206
   If you have a Philips/LMS CDROM drive cm206 in combination with a
-  cm260 host adapter card, say Y here.
+  cm260 host adapter card, say Y here.  Please also read the file
+  Documentation/cdrom/cm206. If you say Y here, you should also say Y
+  to "ISO9660 cdrom filesystem support" below, because that's the
+  filesystem used on CDROMs. 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 cm206.o. If you
+  want to compile it as a module, say M here and read
+  Documentation/modules.txt.
 
 Optics Storage DOLPHIN 8000AT CDROM support
 CONFIG_OPTCD
@@ -3026,40 +3310,44 @@ CONFIG_OPTCD
   compatible interface. It also works with the Lasermate CR328A. If
   you have one of those, say Y. This driver does not work for the
   Optics Storage 8001 drive; use the IDE-ATAPI CDROM driver for that
-  one. 
+  one. Please read the file Documentation/cdrom/optcd. 
+  If you say Y here, you should also say Y to "ISO9660 cdrom
+  filesystem support" below, because that's the filesystem used on
+  CDROMs. 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 optcd.o. If you want to compile it
+  as a module, say M here and read Documentation/modules.txt.
 
 Sanyo CDR-H94A CDROM support
 CONFIG_SJCD
-  If this is your CDROM drive, say Y here. Command line option
-  (or 'append=' option in /etc/lilo.conf) is:
-                sjcd=<port>
-  Here 'port' is the base i/o address used by the drive. It defaults
-  to port=0x340.
+  If this is your CDROM drive, say Y here and read the file
+  Documentation/cdrom/sjcd. You should then also say Y to "ISO9660
+  cdrom filesystem support" below, because that's the filesystem used
+  on CDROMs. 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 sjcd.o. If you want to compile it
+  as a module, say M here and read Documentation/modules.txt.
 
 Soft configurable cdrom interface card support
 CONFIG_CDI_INIT
   If you want to include boot-time initialization of any cdrom
-  interface card that is software configurable, say Y here.
-  Currently only the ISP16/MAD16/Mozart cards are supported.
+  interface card that is software configurable, say Y here.  Currently
+  only the ISP16/MAD16/Mozart soundcards with built-in cdrom
+  interfaces are supported.  Note that the answer to this question
+  doesn't directly affect the kernel: saying N will just cause this
+  configure script to skip all the questions about these CDROM drives.
 
 ISP16/MAD16/Mozart soft configurable cdrom interface support
 CONFIG_ISP16_CDI
-  If you want any of these cdrom interface cards based on the
-  OPTi 82C928 or 82C929 chips get detected and possibly configured
-  at boot time, please say Y. Boot time command line options (or
-  'append=' options in /etc/lilo.conf) are:
-                isp16=<port>,<irq>,<dma>,<drive_type>
-  Here 'port','irq' and 'dma' are the base i/o address, irq number and
-  dma line assumed to be used by the attached cdrom
-  drive. 'drive_type' is the type of cdrom drive or its emulation
-  mode. Valid values for drive_type include: Sanyo, Panasonic (same as
-  Sanyo), Sony and Mitsumi.  Default values are: port=0x340, irq=0,
-  dma=0, drive_type=Sanyo.
-  The command line
-                isp16=noisp16
-  will skip detection and configuration after all.
-  N.B. options are case sensitive. 
-  Read Documentation/cdrom/isp16 for details. 
+  These are soundcards with with built-in cdrom interfaces using the
+  OPTi 82C928 or 82C929 chips. Say Y here to have them detected and
+  possibly configured at boot time. In addition, You'll have to say Y
+  to a driver for the particular cdrom drive you have attached to the
+  card. Read Documentation/cdrom/isp16 for details.  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 isp16.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt.
 
 Quota support
 CONFIG_QUOTA
@@ -3081,11 +3369,12 @@ CONFIG_MINIX_FS
   leaner. You don't want to use it on your harddisk because of certain
   built-in restrictions. This option will enlarge your kernel by about
   25 kB. Everyone should say Y or M so that they are able to read this
-  common floppy format.  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. Note that the filesystem of your root
-  partition cannot be compiled as a module.
+  common floppy format.  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 minix.o. Note
+  that the filesystem of your root partition cannot be compiled as a
+  module.
 
 Second extended fs support
 CONFIG_EXT2_FS
@@ -3102,27 +3391,33 @@ CONFIG_EXT2_FS
   transition to a *real* Linux partition later. Another (rare) case
   which doesn't require ext2fs is a diskless Linux box which mounts
   all files over the network using NFS (in this case it's sufficient
-  to enable NFS filesystem support below; if you are planning to do
-  this, have a look at the netboot package in
-  /pub/Linux/system/Linux-boot/, available via ftp (user: anonymous)
-  from sunsite.unc.edu, extract with "tar xzvf filename"). There is a
-  short ext2fs-FAQ, available via ftp (user: anonymous) in
+  to say Y to "NFS filesystem support" below). There is a short
+  ext2fs-FAQ, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/faqs. This option will enlarge your
-  kernel by about 41 kB. Default is Y.
+  kernel by about 41 kB. If you want to compile this filesystem 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 ext2.o. Be
+  aware however that the filesystem of your root partition cannot be
+  compiled as a module, and so this could be dangerous. Most everyone
+  wants to say Y here.
 
 fat fs support
 CONFIG_FAT_FS
   If you want to use one of the FAT-based filesystems (the MS-DOS,
-  VFAT (Windows'95) and UMSDOS filesystems), then you must include
-  FAT support. This is not a filesystem in itself, but it provides
-  the foundation for the other filesystems. This option will enlarge
-  your kernel about 24 kB. If unsure, say Y. If you want to compile
-  this as a module however ( = code which can be inserted in and 
-  removed from the running kernel whenever you want), say M here and
-  read Documentation/modules.txt. Note that if you compile the FAT
-  support as a module, you cannot compile any of the FAT-based file-
-  systems into the kernel - they will have to be modules as well.
-  The filesystem of your root partition cannot be a module.
+  VFAT (Windows'95) and UMSDOS (used to run Linux on top of an
+  ordinary DOS partition) filesystems), then you must include FAT
+  support. This is not a filesystem in itself, but it provides the
+  foundation for the other filesystems. This option will enlarge your
+  kernel by about 24 kB. If unsure, say Y. If you want to compile this
+  as a module however ( = 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 fat.o. Note
+  that if you compile the FAT support as a module, you cannot compile
+  any of the FAT-based filesystems into the kernel - they will have to
+  be modules as well.  The filesystem of your root partition cannot be
+  a module, so don't say M here if you intend to use UMSDOS as your
+  root filesystem.
 
 msdos fs support
 CONFIG_MSDOS_FS
@@ -3148,8 +3443,8 @@ CONFIG_MSDOS_FS
   work if you said Y to "fat fs support" as well. If you want to
   compile this as a module however ( = code which can be inserted in
   and removed from the running kernel whenever you want), say M here
-  and read Documentation/modules.txt. Note that the filesystem of your
-  root partition cannot be a module.
+  and read Documentation/modules.txt. The module will be called
+  msdos.o.
 
 vfat fs support
 CONFIG_VFAT_FS
@@ -3159,11 +3454,12 @@ CONFIG_VFAT_FS
   partitions. It does not support Windows'95 compressed filesystems.
   You cannot use the VFAT filesystem for your root partition; use
   UMSDOS instead. This option enlarges your kernel by about 10 kB and
-  it only works if you enabled the "fat fs support" above. Please read
+  it only works if you said Y to the "fat fs support" above. Please read
   the file Documentation/filesystems/vfat.txt for details.
   If unsure, say N. 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.
+  you want), say M here and read Documentation/modules.txt. The module
+  will be called vfat.o.
 
 umsdos: Unix like fs on top of std MSDOS fs
 CONFIG_UMSDOS_FS
@@ -3177,14 +3473,14 @@ CONFIG_UMSDOS_FS
   is to write files with long unix filenames to MSDOS floppies; it
   also allows unix style softlinks and owner/permissions of files on
   MSDOS floppies. You will need a program called umssync in order to
-  make use of umsdos. Read Documentation/filesystems/umsdos.txt. This
+  make use of umsdos; read Documentation/filesystems/umsdos.txt. This
   option enlarges your kernel by about 25 kB and it only works if you
-  enabled both "fat fs support" and "msdos fs support" above. If
-  unsure, say N.  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. Note that the filesystem of your root
-  partition cannot be a module.
+  said Y to both "fat fs support" and "msdos fs support" above. 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
+  umsdos.o. Note that the filesystem of your root partition cannot be
+  a module, so this could be dangerous. If unsure, say N.
 
 /proc filesystem support
 CONFIG_PROC_FS
@@ -3199,21 +3495,22 @@ CONFIG_PROC_FS
   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
-  periphery to gain the CPU's attention - often a source of trouble if
-  two devices are mistakenly configured to use the same IRQ). Several
-  programs depend on this, so everyone should say Y here.
+  attached devices to gain the CPU's attention - often a source of
+  trouble if two devices are mistakenly configured to use the same
+  IRQ). Several programs depend on this, so everyone should say Y
+  here.
   
 NFS filesystem support
 CONFIG_NFS_FS
   If you are connected to some other (usually local) Unix computer
-  (using SLIP, PLIP, PPP or ethernet) and want to mount files
-  residing on that computer (the NFS server) using the Network
-  File Sharing protocol, say Y. "Mounting files" means that the client
-  can access the files with usual UNIX commands as if they were
-  sitting on the client's harddisk. For this to work, the server must
-  run the programs nfsd and mountd (but does not need to have NFS
-  filesystem support enabled). NFS is explained in the Network
-  Administrator's Guide, available via ftp (user: anonymous) in
+  (using SLIP, PLIP, PPP or ethernet) and want to mount files residing
+  on that computer (the NFS server) using the Network File Sharing
+  protocol, say Y. "Mounting files" means that the client can access
+  the files with usual UNIX commands as if they were sitting on the
+  client's harddisk. For this to work, the server must run the
+  programs nfsd and mountd (but does not need to have NFS filesystem
+  support enabled). NFS is explained in the Network Administrator's
+  Guide, available via ftp (user: anonymous) in
   sunsite.unc.edu:/pub/Linux/docs/LDP, and on its man page: "man
   nfs". There is also a NFS-FAQ in
   sunsite.unc.edu:/pub/Linux/docs/faqs which presumes that you know
@@ -3221,11 +3518,15 @@ CONFIG_NFS_FS
   to TCP/IP networking also. This option would enlarge your kernel by
   about 27 kB. This filesystem 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. If you configure a diskless
-  machine which will mount its root filesystem over nfs, you cannot
-  compile this driver as a module. If you don't know what all this is
-  about, say N.
+  whenever you want). The module is called nfs.o. If you want to
+  compile it as a module, say M here and read
+  Documentation/modules.txt. If you configure a diskless machine which
+  will mount its root filesystem over nfs (in order to do that, check
+  out the netboot package, available via ftp (user: anonymous) from
+  sunsite.unc.edu in /pub/Linux/system/Linux-boot/, extract with "tar
+  xzvf filename", and say Y to "Root file system on NFS" below), then
+  you cannot compile this driver as a module. If you don't know what
+  all this is about, say N.
 
 Root file system on NFS
 CONFIG_ROOT_NFS
@@ -3270,7 +3571,7 @@ CONFIG_ISO9660_FS
   kernel by about 27 kB; otherwise say N.  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.
+  Documentation/modules.txt. The module will be called isofs.o.
 
 OS/2 HPFS filesystem support (read only)
 CONFIG_HPFS_FS
@@ -3282,17 +3583,18 @@ CONFIG_HPFS_FS
   able to read them. Read Documentation/filesystems/hpfs.txt. This
   filesystem 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. If unsure, say N.
+  want). The module is called hpfs.o. If you want to compile it as a
+  module, say M here and read Documentation/modules.txt. If unsure,
+  say N.
   
 System V and Coherent filesystem support
 CONFIG_SYSV_FS
   SCO, Xenix and Coherent are commercial Unix systems for intel
-  machines. Enabling this option would allow you to read and write to
-  and from their floppies and harddisk partitions. If you have a
-  floppy or harddisk partition like that, it is probable that they
-  contain binaries from those other Unix systems; in order to run
-  these binaries, you will want to install iBCS2 (iBCS2 [Intel Binary
+  machines. Saying Y here would allow you to read and write to and
+  from their floppies and harddisk partitions. If you have a floppy or
+  harddisk partition like that, it is probable that they contain
+  binaries from those other Unix systems; in order to run these
+  binaries, you will want to install iBCS2 (iBCS2 [Intel Binary
   Compatibility Standard] is a kernel module which lets you run SCO,
   Xenix, Wyse, Unix Ware, Dell Unix and System V programs under Linux
   and is often needed to run commercial software, most prominently
@@ -3309,70 +3611,71 @@ CONFIG_SYSV_FS
   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), say M here and read
-  Documentation/modules.txt. If you haven't heard about all of this
-  before, it's safe to say N.
+  Documentation/modules.txt. The module will be called sysv.o. If you
+  haven't heard about all of this before, it's safe to say N.
 
 BSD UFS filesystem support (read only)
 CONFIG_UFS_FS
   BSD and derivate versions of Unix (such as SunOS, FreeBSD, NetBSD
   and NeXTstep) use a filesystem called UFS. Some System V Unixes can
-  create and mount partitions and diskettes using this filesystem
-  as well. Enabling this option allows you to mount these partitions
-  and diskettes read-only. 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 you need nfs filesystem support
+  create and mount partitions and diskettes using this filesystem as
+  well. Saying Y here allows you to mount these partitions and
+  diskettes read-only. 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 you need nfs filesystem support
   obviously). Note that this option is generally not needed for
   floppies, since a good portable way to transport files and
-  directories between unixes (and even other operating systems)
-  is given by the tar program ("man tar"). When accessing NeXTstep
-  files, you may need to convert them from the NeXT character set
-  to the Latin1 character set; use GNU recode for this purpose.
-  Say Y to build UFS support into your kernel. 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. If you haven't heard about all of this
-  before, it's safe to say N.
+  directories between unixes (and even other operating systems) is
+  given by the tar program ("man tar"). When accessing NeXTstep files,
+  you may need to convert them from the NeXT character set to the
+  Latin1 character set; use GNU recode for this purpose.  Say Y to
+  build UFS support into your kernel. 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 ufs.o. If you
+  haven't heard about all of this before, it's safe to say N.
 
 BSD disklabel (FreeBSD partition tables) support
 CONFIG_BSD_DISKLABEL
   FreeBSD uses its own 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. Enabling this option allows
-  you to read these disklabels and further mount FreeBSD partitions on
-  your Linux box if you also have configured BSD ufs filesystem
-  support. If you don't know what all this is about, say N.
+  new partition table in disklabel format. Saying Y here allows you to
+  read these disklabels and further mount FreeBSD partitions on your
+  Linux box if you also have configured BSD ufs filesystem support. 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 partition table format,
-  incompatible with all others. Enabling this option allows you to read
-  these partition tables and further mount SunOS disks on your Linux
-  box if you also have configured BSD ufs filesystem support. 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. If you
-  don't know what all this is about, say N.
+  incompatible with all others. Saying Y here allows you to read these
+  partition tables and further mount SunOS disks on your Linux box if
+  you also have configured BSD ufs filesystem support. 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. If you don't
+  know what all this is about, say N.
 
 SMB filesystem support (to mount WfW shares etc..)
 CONFIG_SMB_FS
   SMB (Server Message Buffer) is the protocol Windows for Workgroups
-  (WfW), Windows NT and Lan Manager use to talk to each other over an
-  ethernet. Enabling this allows you to mount their filesystems (often
-  called "shares") and access them just like any other unix
-  directory. For details, read Documentation/filesystems/smbfs.txt.
-  Note: if you just want your box to act as an SMB *server* and make
-  files and printing services available to Windows clients (which need
-  to have a TCP/IP stack), you don't need to enable this filesystem
-  support; you can use the program samba (available via ftp (user:
-  anonymous) in sunsite.unc.edu:/pub/Linux/system/Network/samba) for
-  that. General information about how to connect Linux, Windows
-  machines and Macs is on the WWW at
-  http://eats.com/linux_mac_win.html (to browse the WWW, you need to
-  have access to a machine on the Internet that has one of the
-  programs lynx, netscape or Mosaic).  If you want to compile the SMB
-  support 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. Most people say N, however.
+  (WfW), Windows 95, Windows NT and 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. For details, read
+  Documentation/filesystems/smbfs.txt.  Note: if you just want your
+  box to act as an SMB *server* and make files and printing services
+  available to Windows clients (which need to have a TCP/IP stack),
+  you don't need to say Y here; you can use the program samba
+  (available via ftp (user: anonymous) in
+  sunsite.unc.edu:/pub/Linux/system/Network/samba) for that. General
+  information about how to connect Linux, Windows machines and Macs is
+  on the WWW at http://eats.com/linux_mac_win.html (to browse the WWW,
+  you need to have access to a machine on the Internet that has one of
+  the programs lynx, netscape or Mosaic).  If you want to compile the
+  SMB support 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
+  smbfs.o. Most people say N, however.
 
 SMB Win95 bug work-around
 CONFIG_SMB_WIN95
@@ -3384,41 +3687,47 @@ CONFIG_SMB_WIN95
 NCP filesystem support (to mount NetWare volumes)
 CONFIG_NCP_FS
   NCP (NetWare Core Protocol) is a protocol that runs over IPX and is
-  used by Novel NetWare clients to talk to file servers. It is to IPX
-  what nfs is to tcp/ip, if that helps. Enabling this option allows
-  you to mount NetWare file server volumes and to access them just
-  like any other Unix directory. For details, please read the file
+  used by Novell NetWare clients to talk to file servers. It is to IPX
+  what nfs is to tcp/ip, if that helps. Saying Y here allows you to
+  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 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.
+  read Documentation/modules.txt. The module will be called
+  ncpfs.o. Say N unless you are connected to a Novell network.
 
-Amiga FFS filesystem support (EXPERIMENTAL)
+Amiga FFS filesystem support
 CONFIG_AFFS_FS
-  The Fast File System (FFS) is the common filesystem used on harddisks
-  by Amiga (tm) Systems since AmigaOS Version 1.3 (34.20). It's also
-  possible to mount diskfiles used by the Un*X Amiga Emulator by Bernd
-  Schmidt (http://www-users.informatik.rwth-aachen.de/~crux/uae.html)
-  If you want to do the latter, you will also need the loop device
-  support. Say Y if you want to be able to read and write files from
-  and to an Amiga FFS partition of your harddrive. Amiga floppies
-  however cannot be read with this driver due to an incompatibility of
-  the floppy controller used in an Amiga and the standard floppy
-  controller in PCs and workstations. Read
-  Documentation/filesystems/affs.txt. This filesystem 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.
-  If unsure, say N.
+  The Fast File System (FFS) is the common filesystem used on
+  harddisks by Amiga(tm) Systems since AmigaOS Version 1.3
+  (34.20). With this driver you can also mount diskfiles used by the
+  Un*X Amiga Emulator by Bernd Schmidt
+  (http://www-users.informatik.rwth-aachen.de/~crux/uae.html).  If you
+  want to do the latter, you will also need to say Y to "Loop device
+  support", above. Say Y if you want to be able to read and write
+  files from and to an Amiga FFS partition on your harddrive. Amiga
+  floppies however cannot be read with this driver due to an
+  incompatibility of the floppy controller used in an Amiga and the
+  standard floppy controller in PCs and workstations. Read
+  Documentation/filesystems/affs.txt. This filesystem 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
+  affs.o. If you want to compile it as a module, say M here and read
+  Documentation/modules.txt.  If unsure, say N.
 
-ROMFS filesystem support (EXPERIMENTAL)
+ROM filesystem support
 CONFIG_ROMFS_FS
-  This is a special file system intended for installation disks or
-  otherwise prebuilt medias.  It has very low overhead and low memory
-  requirements.  However, it's read-only (one particular reason of the
-  smallness), so you need extra programs to prepare disks in this
-  format.  If you are not sure, just say N, you don't need it.
+  This is a very small read-only filesystem mainly intended for
+  initial ram disks of installation disk, but it could be used for
+  other read-only media as well. Read
+  Documentation/filesystems/romfs.txt for details. This filesystem 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 romfs.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt.  If you don't know whether you
+  need it, then you don't need it: say N.
 
 Standard/generic serial support
 CONFIG_SERIAL
@@ -3427,15 +3736,17 @@ CONFIG_SERIAL
   setting up dedicated ethernet WWW/ftp servers, or users that have
   one of the various bus mice instead of a serial mouse.  (Note that
   the Cyclades and Stallion multi serial port drivers do not need this
-  driver built in for them to work. They are completely independent of
-  each other.)  If you want to compile this driver as a module, say M
-  here and read Documentation/modules.txt.  [WARNING: Do not compile
-  this driver as a module if you are using non-standard serial ports,
-  since the configuration information will be lost when kerneld
-  automatically unloads the driver.  This limitation may be lifted in
-  the future.]  Most people will say Y or M here, so that they can use
-  serial mice, modems and similar devices connecting to the standard
-  serial ports.
+  driver built in for them to work.)  If you want to compile this
+  driver as a module, say M here and read
+  Documentation/modules.txt. The module will be called
+  serial.o. [WARNING: Do not compile this driver as a module if you
+  are using non-standard serial ports, since the configuration
+  information will be lost when kerneld automatically unloads the
+  driver.  This limitation may be lifted in the future.] BTW: If you
+  have a mouseman serial mouse which is not recognized by the X window
+  system, try running gpm first.  Most people will say Y or M here, so
+  that they can use serial mice, modems and similar devices connecting
+  to the standard serial ports.
 
 Digiboard PC/Xx Support
 CONFIG_DIGI
@@ -3443,16 +3754,19 @@ CONFIG_DIGI
   that give you many serial ports. You would need something like this
   to connect more than two modems to your linux box, for instance in
   order to become a BBS. If you have a card like that, say Y here and
-  read the file Documentation/digiboard.txt.
+  read the file Documentation/digiboard.txt. If you want to compile
+  this driver as a module, say M here and read
+  Documentation/modules.txt. The module will be called pcxx.o.
 
 SDL RISCom/8 card support
 CONFIG_RISCOM8
   This is a driver for the SDL Communications RISCom/8 multiport card,
-  that give you many serial ports. You would need something like this
-  to connect more than two modems to your linux box, for instance in
-  order to become a BBS. If you have a card like that, say Y here and
-  read the file Documentation/riscom8.txt. Also it's possible to say
-  M here and compile this driver as kernel loadable module.
+  which gives you many serial ports. You would need something like
+  this to connect more than two modems to your linux box, for instance
+  in order to become a BBS. If you have a card like that, say Y here
+  and read the file Documentation/riscom8.txt. Also it's possible to
+  say M here and compile this driver as kernel loadable module; the
+  module will be called riscom8.o.
 
 Cyclades async mux support
 CONFIG_CYCLADES
@@ -3461,9 +3775,10 @@ CONFIG_CYCLADES
   your linux box, for instance in order to become a BBS. 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. If you haven't heard about it, it's
-  safe to say N. (As of 1.3.9x kernels, this driver's minor numbers
-  start at 0 instead of 32.)
+  read Documentation/modules.txt. The module will be called
+  cyclades.o. If you haven't heard about it, it's safe to say N. (As
+  of 1.3.9x kernels, this driver's minor numbers start at 0 instead of
+  32.)
 
 Stallion multiport serial support 
 CONFIG_STALDRV
@@ -3475,13 +3790,13 @@ CONFIG_STALDRV
   heard about all this, it's safe to say N.
  
 Stallion EasyIO or EC8/32 support 
-CONFIG_STALLION n
+CONFIG_STALLION
   If you have an EasyIO or EasyConnection 8/32 multiport Stallion
   card, then this is for you; say Y. Make sure to read
   drivers/char/README.stallion. 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.
+  Documentation/modules.txt. The module will be called stallion.o.
 
 Stallion EC8/64, ONboard, Brumby support
 CONFIG_ISTALLION
@@ -3489,7 +3804,8 @@ CONFIG_ISTALLION
   serial multiport card, say Y here. Make sure to read
   drivers/char/README.stallion. 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.
+  whenever you want), say M here and read
+  Documentation/modules.txt. The module will be called istallion.o.
 
 Hayes ESP serial port support
 CONFIG_ESPSERIAL
@@ -3497,19 +3813,22 @@ CONFIG_ESPSERIAL
   to transfer data to and from the host.  Make sure to read
   drivers/char/README.esp. 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.
+  whenever you want), say M here and read
+  Documentation/modules.txt. The module will be called esp.o.
+  If unsure, say N.
 
 Hayes ESP serial port DMA channel
 CONFIG_ESPSERIAL_DMA_CHANNEL
-  This is the DMA channel to be used to transfer data to and from the host.
-  One DMA channel is shared between all the ESP ports.   Valid values are
-  1 and 3.
+  This is the DMA channel to be used to transfer data to and from the
+  host.  One DMA channel is shared between all the ESP ports.  Valid
+  values are 1 and 3.
 
 Hayes ESP serial port trigger level
 CONFIG_ESPSERIAL_TRIGGER_LEVEL
-  This is the trigger level (in bytes) of the transmit FIFO and the receive
-  FIFO.  Larger values may result in fewer interrupts; however, a value too
-  high could result in data loss.  Valid values are 1 through 1015.
+  This is the trigger level (in bytes) of the transmit FIFO and the
+  receive FIFO.  Larger values may result in fewer interrupts;
+  however, a value too high could result in data loss.  Valid values
+  are 1 through 1015.
 
 Parallel printer support
 CONFIG_PRINTER
@@ -3520,17 +3839,18 @@ CONFIG_PRINTER
   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. If you want to use both a parallel
-  printer and PLIP, there are two cases: 1) If the printer and the
-  PLIP cable are to use the same parallel port (presumably because you
-  have just one), it is best to compile both drivers as modules and
-  load and unload them as needed. 2) To use different parallel ports
-  for the printer and the PLIP cable, you can say Y to this printer
-  driver, specify the base address of the parallel port(s) to use for
-  the printer(s) with the "lp" kernel command line option. (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
+  Documentation/modules.txt. The module will be called plip.o. If you
+  want to use both a parallel printer and PLIP, there are two cases:
+  1) If the printer and the PLIP cable are to use the same parallel
+  port (presumably because you have just one), it is best to compile
+  both drivers as modules and load and unload them as needed. 2) To
+  use different parallel ports for the printer and the PLIP cable, you
+  can say Y to this printer driver, specify the base address of the
+  parallel port(s) to use for the printer(s) 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
   sunsite.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. You can then say Y to the PLIP driver or,
@@ -3563,8 +3883,9 @@ CONFIG_BUSMOUSE
   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. If you are unsure, say N and read the
-  HOWTO nevertheless: it will tell you what you have. 
+  Documentation/modules.txt. The module will be called busmouse.o. If
+  you are unsure, say N and read the HOWTO nevertheless: it will tell
+  you what you have.
 
 PS/2 mouse (aka "auxiliary device") support
 CONFIG_PSMOUSE
@@ -3583,9 +3904,9 @@ CONFIG_PSMOUSE
   sunsite.unc.edu:/pub/Linux/system/Misc, solves this problem. If you
   want to compile this mouse 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. If you are unsure,
-  say N and read the HOWTO nevertheless: it will tell you what you
-  have.
+  say M here and read Documentation/modules.txt. The module will be
+  called psaux.o. If you are unsure, say N and read the HOWTO
+  nevertheless: it will tell you what you have.
 
 C&T 82C710 mouse port support (as on TI Travelmate)
 CONFIG_82C710_MOUSE
@@ -3602,10 +3923,11 @@ CONFIG_MS_BUSMOUSE
   (user: anonymous) in 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. If you are unsure, say N and
-  read the HOWTO nevertheless: it will tell you what you have. Also be
-  aware that several vendors talk about 'Microsoft busmouse' and
-  actually mean PS/2 busmouse - so count the pins on the connector.
+  and read Documentation/modules.txt. The module will be called
+  msbusmouse.o. If you are unsure, say N and read the HOWTO
+  nevertheless: it will tell you what you have. Also be aware that
+  several vendors talk about 'Microsoft busmouse' and actually mean
+  PS/2 busmouse - so count the pins on the connector.
 
 ATIXL busmouse support
 CONFIG_ATIXL_BUSMOUSE
@@ -3615,8 +3937,9 @@ CONFIG_ATIXL_BUSMOUSE
   anonymous) in 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. If you are unsure, say N and read
-  the HOWTO nevertheless: it will tell you what you have. 
+  read Documentation/modules.txt. The module will be called
+  atixlmouse.o. If you are unsure, say N and read the HOWTO
+  nevertheless: it will tell you what you have.
 
 Support for user miscellaneous modules
 CONFIG_UMISC
@@ -3631,7 +3954,8 @@ CONFIG_QIC02_TAPE
   If you have a non-SCSI tape drive like that, say Y. Or, 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 read Documentation/modules.txt. The module will be called
+  tpqic02.o.
 
 Do you want runtime configuration for QIC-02
 CONFIG_QIC02_DYNCONF
@@ -3648,16 +3972,17 @@ CONFIG_FTAPE
   If you have a tape drive that is connected to your floppy
   controller, say Y here. Some tape drives (like the Iomega Ditto
   3200) come with a high speed controller of its own.  These drives
-  (and their companion controller) is also supported. If you have a
-  special controller (such as the CMS FC-10, FC-20, Iomega Mach-II, or
-  Ditto Dash), you must configure it by editing the file
+  (and their companion controller) are also supported by this driver,
+  so say Y if you have one. If you have a special controller (such as
+  the CMS FC-10, FC-20, Iomega Mach-II, or Ditto Dash), you must say Y
+  here and configure it by editing the file
   drivers/char/ftape/Makefile. If you want to use such a tape drive on
   a PCI-bus based system, please read the file
   drivers/char/ftape/README.PCI. This driver is also available as a
   runtime loadable 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.
+  Documentation/modules.txt. The module will be called ftape.o.
 
 Zilog serial support
 CONFIG_SUN_ZS
@@ -3681,11 +4006,21 @@ CONFIG_APM
   also don't have compliant BIOSes, and this driver will cause those
   machines to panic during the boot phase (typically, these machines
   are using a data segment of 0040, which is reserved for the Linux
-  kernel). If you get random kernel OOPSes that don't seem to be
-  related to anything and you have a motherboard with APM support, try
-  disabling/enabling this option. Generally, if you don't have a
-  battery in your machine, there isn't much point in using this
-  driver.
+  kernel). Generally, if you don't have a battery in your machine,
+  there isn't much point in using this driver and you should say N.
+  If you get random kernel OOPSes or reboots that don't seem to be
+  related to anything, try disabling/enabling this option. Some other
+  things to try when experiencing seemingly random, "weird" problems:
+   1) passing the "no-hlt" option to the kernel 
+   2) passing the "no-387" option to the kernel 
+   3) passing the "mem=4M" option to the kernel (thereby disabling 
+      all but the first 4M of RAM)
+   4) Reading the sig11 FAQ at http://www.bitwizard.nl/sig11/
+   5) disabling the cache from your BIOS settings
+   6) installing a better fan
+   7) exchanging RAM chips 
+   8) exchanging the motherboard.
+
 
 Ignore USER SUSPEND
 CONFIG_APM_IGNORE_USER_SUSPEND
@@ -3737,28 +4072,32 @@ CONFIG_APM_POWER_OFF
 
 Watchdog Timer Support 
 CONFIG_WATCHDOG
-  If you enable this option and create a character special file
-  /dev/watchdog with major number 10 and minor number 130 using mknod
-  ("man mknod"), you will get a watchdog, i.e.: subsequently opening
-  the file and failing to write to it for longer than 1 minute will
-  result in rebooting the machine. This could be useful for a
-  networked machine that needs to come back online as fast as possible
-  after a lock-up. There's a watchdog implementation entirely in
-  software (which can sometimes fail to reboot the machine) and a
-  driver for hardware watchdog boards, which are more robust and can
-  also keep track of the temperature inside your computer. For
-  details, read Documentation/watchdog.txt in the kernel source. If
-  unsure, 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). If you want to compile it as a module, say M
-  here and read Documentation/modules.txt.
+  If you say Y here (and to one of the following options) and create a
+  character special file /dev/watchdog with major number 10 and minor
+  number 130 using mknod ("man mknod"), you will get a watchdog, i.e.:
+  subsequently opening the file and failing to write to it for longer
+  than 1 minute will result in rebooting the machine. This could be
+  useful for a networked machine that needs to come back online as
+  fast as possible after a lock-up. There's both a watchdog
+  implementation entirely in software (which can sometimes fail to
+  reboot the machine) and a driver for hardware watchdog boards, which
+  are more robust and can also keep track of the temperature inside
+  your computer. For details, read Documentation/watchdog.txt in the
+  kernel source.
+  The watchdog is usually used together with the watchdog daemon which
+  is available via ftp (user: anonymous) from
+  tsx-11.mit.edu/pub/linux/sources/sbin/. This daemon can also monitor
+  NFS connections and can reboot the machine when the process table is
+  full.
+  If unsure, say N.
 
 Disable watchdog shutdown on close
 CONFIG_WATCHDOG_NOWAYOUT
-  The default watchdog behaviour is to stop the timer if the process
-  managing it closes the file /dev/watchdog. It's always remotely
-  possible that this process might get killed. If you enable this
-  option, the watchdog cannot be stopped once it has been started.
+  The default watchdog behaviour (which you get if you say N here) is
+  to stop the timer if the process managing it closes the file
+  /dev/watchdog. It's always remotely possible that this process might
+  get killed. If you say Y here, the watchdog cannot be stopped once
+  it has been started.
 
 WDT Watchdog timer
 CONFIG_WDT
@@ -3768,7 +4107,7 @@ CONFIG_WDT
   source at the top of drivers/char/wdt.c. 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.
+  Documentation/modules.txt. The module will be called wdt.o.
 
 WDT501 features
 CONFIG_WDT_501
@@ -3791,7 +4130,8 @@ CONFIG_SOFT_WATCHDOG
   from. Equally it's a lot cheaper to install. 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.
+  it as a module, say M here and read Documentation/modules.txt. The
+  module will be called softdog.o.
 
 Berkshire Products PC Watchdog
 CONFIG_PCWATCHDOG
@@ -3799,46 +4139,28 @@ CONFIG_PCWATCHDOG
   This card simply watches your kernel to make sure it doesn't freeze,
   and if it does, it resets your computer after a certain amount of
   time.  This driver is like the WDT501 driver but for different
-  hardware. The PC watchdog cards can be ordered from
-  http://www.berkprod.com. Some example rc.local files are available
-  from ftp.bitgate.com. 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.  Most people will say N.
-
-Support for Revision A cards
-CONFIG_PCWD_REV_A
-  This gives you support for revision A or B of the Berkshire PC Watchdog
-  Card.  The way to tell if you have an A or B style card is to check the
-  manual on page 22.  If it doesn't say "Port 3" at the top, you have a
-  revision A or B card.  Also, if your card doesn't have an audible beep,
-  chances are you have a revision A or B card.
-
-Support for Revision C cards
-CONFIG_PCWD_REV_C
-  This card gives you an audible beep.  It also has support for disabling
-  the card, enabling it, getting firmware versions, and a few other options.
-
-Show card state on reset
-CONFIG_PCWD_SHOW_PREVSTAT
-  Enabling this option will display the previous reset state of your card.
-  It will also give a little more verbose data about the card, or your
-  system's previous status before reset.
+  hardware. Please read Documentation/pcwd-watchdog.txt. The PC
+  watchdog cards can be ordered from http://www.berkprod.com. Some
+  example rc.local files are available from ftp.bitgate.com. 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 pcwd.o. If you want to compile it as a module, say
+  M here and read Documentation/modules.txt.  Most people will say N.
 
 Enhanced Real Time Clock Support
 CONFIG_RTC
-  If you enable this option and create a character special file
-  /dev/rtc with major number 10 and minor number 135 using mknod ("man
-  mknod"), you will get access to the real time clock built into your
+  If you say Y here and create a character special file /dev/rtc with
+  major number 10 and minor number 135 using mknod ("man mknod"), you
+  will get access to the real time clock built into your
   computer. Every PC has such a clock built in. It can be used to
   generate signals from as low as 1Hz up to 8192Hz, and can also be
   used as a 24 hour alarm.  It reports status information via the file
   /proc/rtc and its behaviour is set by various ioctls on
   /dev/rtc. People running SMP (= multiprocessor) versions of Linux
-  should enable this option to read and set the RTC clock in a SMP
-  compatible fashion. If you think you have a use for such a device
-  (such as periodic data sampling), then say Y here, and go read the
-  file Documentation/rtc.txt for details.
+  should say Y here to read and set the RTC clock in a SMP compatible
+  fashion. If you think you have a use for such a device (such as
+  periodic data sampling), then say Y here, and go read the file
+  Documentation/rtc.txt for details.
 
 Sound card support
 CONFIG_SOUND
@@ -3857,11 +4179,6 @@ CONFIG_SOUND
   that are at
   sunsite.unc.edu:/pub/Linux/kernel/patches/console/pcsndrv-X.X.tar.gz,
   to be extracted with "tar xzvf filename".
-  This driver is also available as a module ( = code which can be inserted
-  in and removed from the running kernel whenever you want) on the
-  Motorola 680x0 architecture. If you are compiling a kernel for
-  Linux/m68k and want to compile this driver as a module, say M here
-  and read Documentation/modules.txt.
 
 ProAudioSpectrum 16 support
 CONFIG_PAS
@@ -3890,14 +4207,14 @@ CONFIG_ADLIB
 
 Gravis Ultrasound support
 CONFIG_GUS
-  Enable this option for any type of Gravis Ultrasound card, including
+  Say Y here for any type of Gravis Ultrasound card, including
   the GUS or GUS MAX.
 
 MPU-401 support (NOT for SB16)
 CONFIG_MPU401
   Be careful with this question. The MPU401 interface is supported by
   all soundcards. However, some natively supported cards have their
-  own driver for MPU401. Enabling the MPU401 option with these cards
+  own driver for MPU401. Enabling this MPU401 option with these cards
   will cause a conflict. Also, enabling MPU401 on a system that
   doesn't really have a MPU401 could cause some trouble. If your card
   was in the list of supported cards, look at the card specific
@@ -3919,8 +4236,8 @@ CONFIG_PSS
 16 bit sampling option of GUS (_NOT_ GUS MAX)
 CONFIG_GUS16
   Answer Y if you have installed the 16 bit sampling daughtercard on
-  your GUS.  Answer N if you have a GUS MAX, since enabling this
-  option disables GUS MAX support.
+  your GUS.  Answer N if you have a GUS MAX, since saying Y here
+  disables GUS MAX support.
 
 GUS MAX support
 CONFIG_GUSMAX
@@ -3947,7 +4264,7 @@ CONFIG_MSS
      synthesizers (OPL2, OPL3 and OPL4), 6850 UART MIDI Interface.
   For cards having native support in VoxWare, consult the card
   specific instructions in drivers/sound/Readme.cards. Some drivers
-  have their own MSS support and enabling this option will cause a
+  have their own MSS support and saying Y to this option will cause a
   conflict.
 
 Ensoniq Soundscape support
@@ -3972,11 +4289,11 @@ CONFIG_MAD16
 
 Support for Crystal CS4232 based (PnP) cards
 CONFIG_CS4232
-  Enable this if you have a card based on the Crystal CS4232 chip set.
+  Say Y here if you have a card based on the Crystal CS4232 chip set.
 
 Support for Turtle Beach Wave Front (Maui, Tropez) synthesizers
 CONFIG_MAUI
-  Enable this option if you have a Turtle Beach Wave Front, Maui, or 
+  Say Y here if you have a Turtle Beach Wave Front, Maui, or 
   Tropez sound card.
 
 Support for Crystal CS4232 based (PnP) cards
@@ -4007,15 +4324,32 @@ CONFIG_SUN_AUDIO
 
 SB32/AWE support
 CONFIG_AWE32_SYNTH
-Enable this option if you have a SB32 or SB AWE soundcard. See
-linux/drivers/sound/lowlevel/README.awe for more info.
+  Say Y here if you have a SB32 or SB AWE soundcard. See
+  linux/drivers/sound/lowlevel/README.awe for more info.
+
+Additional low level drivers
+CONFIG_LOWLEVEL_SOUND
+  If you need additional low level sound drivers which are not part
+  of USS/Lite (UNIX Sound System), say Y.  The only such driver at
+  present is the ACI driver for the miroSOUND PCM12 and PCM20.
+
+ACI mixer (miroPCM12)
+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.  This Voxware ACI driver currently only supports
+  the ACI functions on the miroSOUND PCM12 card.  On the PCM20, ACI
+  also controls the radio tuner on this card, however this is not
+  yet supported in this software.
 
 Kernel profiling support
 CONFIG_PROFILE
   This is for kernel hackers who want to know how much time the kernel
   spends in the various procedures. The information is stored in
-  /proc/profile (enable the /proc filesystem!) and in order to read
-  it, you need the readprofile package from sunsite.unc.edu. Its
+  /proc/profile (say Y to "/proc filesystem support"!) and in order to
+  read it, you need the readprofile package from sunsite.unc.edu. Its
   manpage gives information regarding the format of profiling data. To
   become a kernel hacker, you can start with the Kernel Hacker's Guide
   at http://www.redhat.com:8080/HyperNews/get/khg.html. Mere mortals
@@ -4025,35 +4359,43 @@ Profile shift count
 CONFIG_PROFILE_SHIFT
   This is used to adjust the granularity with which the addresses of
   executed instructions get recorded in /proc/profile. But since you
-  enabled "Kernel profiling support", you must be a kernel hacker and
+  said Y to "Kernel profiling support", you must be a kernel hacker and
   hence you know what this is about :-)
 
 ISDN subsystem
 CONFIG_ISDN
-  ISDN ("Integrated Services Digital Networks", called RNIS in
-  France) is a special type of fully digital telephone line; it's
-  mostly used to connect to your Internet service provider (with SLIP
-  or PPP). The main advantage is that the speed is higher than
-  ordinary modem/telephone connections. It only works if your computer
-  is equipped with an ISDN card and both you and your service provider
-  purchased an ISDN line from your phone company.  For details, read
-  http://alumni.caltech.edu/~dank/isdn/ on the WWW. (To browse the
-  WWW, you need to have access to a machine on the Internet that has
-  one of the programs lynx, netscape or Mosaic.)  This driver allows
-  you to use an ISDN-card for networking connections and as dialin/out
-  device. The isdn-tty's have a built in AT-compatible modem
-  emulator. Network devices support autodial, channel-bundling,
+  ISDN ("Integrated Services Digital Networks", called RNIS in France)
+  is a special type of fully digital telephone service; it's mostly
+  used to connect to your Internet service provider (with SLIP or
+  PPP). The main advantage is that the speed is higher than ordinary
+  modem/telephone connections, and that you can have voice
+  conversations while downloading stuff. It only works if your
+  computer is equipped with an ISDN card and both you and your service
+  provider purchased an ISDN line from the phone company.  For
+  details, read http://alumni.caltech.edu/~dank/isdn/ on the WWW. (To
+  browse the WWW, you need to have access to a machine on the Internet
+  that has one of the programs lynx, netscape or Mosaic.)  This driver
+  allows you to use an ISDN-card for networking connections and as
+  dialin/out device. The isdn-tty's have a built in AT-compatible
+  modem emulator. Network devices support autodial, channel-bundling,
   callback and caller-authentication without having a daemon
   running. A reduced T.70 protocol is supported with tty's suitable
   for German BTX. On D-Channel, the protocols EDSS1 and 1TR6 are
-  supported. See Documentation/isdn/README for more information.
+  supported. See Documentation/isdn/README for more information.  If
+  you want to compile the ISDN 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 isdn.o.  If unsure, say N.
 
 Support synchronous PPP
 CONFIG_ISDN_PPP
-  This enables synchronous PPP via ISDN. This protocol is used by
-  Cisco or Sun for example. So you want say Y here if the other end of
-  your ISDN connection supports it. You will need a special version of
-  pppd (called ipppd) for using this feature. See
+  Over digital connections such as ISDN, there is no need to
+  synchronize sender and recipient's clocks with start and stop bits
+  as is done over telephone lines. Instead, one can use "synchronous
+  PPP". Saying Y here will include this protocol. This protocol is
+  used by Cisco and Sun for example. So you want to say Y here if the
+  other end of your ISDN connection supports it. You will need a
+  special version of pppd (called ipppd) for using this feature. See
   Documentation/isdn/README.syncppp and Documentation/isdn/syncPPP.FAQ
   for more information.
 
@@ -4069,13 +4411,13 @@ CONFIG_ISDN_PPP_VJ
 
 Support audio via ISDN
 CONFIG_ISDN_AUDIO
-  With this option enabled, the modem-emulator supports a subset
-  of the EIA Class 8 Voice commands. Using a getty with voice-support
+  If you say Y here, the modem-emulator will support a subset of the
+  EIA Class 8 Voice commands. Using a getty with voice-support
   (mgetty+sendfax by gert@greenie.muc.de with an extension, available
-  with the ISDN utility package for example), you will be able
-  to use your Linux box as an ISDN-answering machine. Of course, this
-  must be supported by the lowlevel driver also. Currently, the Teles
-  driver is the only voice-supporting one. See
+  with the ISDN utility package for example), you will be able to use
+  your Linux box as an ISDN-answering machine. Of course, this must be
+  supported by the lowlevel driver also. Currently, the Teles driver
+  is the only voice-supporting one. See
   Documentation/isdn/README.audio for more information.
 
 ICN 2B and 4B support
@@ -4086,7 +4428,10 @@ CONFIG_ISDN_DRV_ICN
   this card, additional firmware is necessary, which has to be
   downloaded into the card using a utility which is distributed
   separately.  See Documentation/isdn/README and README.icn for more
-  information.
+  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), say M here and read Documentation/modules.txt. The module
+  will be called icn.o.
 
 Teles, NICCY1016PC, Creatix support
 CONFIG_ISDN_DRV_TELES
@@ -4095,7 +4440,10 @@ CONFIG_ISDN_DRV_TELES
   support a 16.0-type using EDSS1-protocol. See
   Documentation/isdn/README on how to configure it using 16.3, a
   different D-channel protocol, or non-standard irq/port/shmem
-  settings.
+  settings. 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 teles.o.
 
 PCBIT-D support
 CONFIG_ISDN_DRV_PCBIT
@@ -4104,12 +4452,15 @@ CONFIG_ISDN_DRV_PCBIT
   firmware is necessary, which has to be downloaded into the card
   using a utility which is distributed separately.  See
   Documentation/isdn/README and Documentation/isdn/README.pcbit for
-  more information.
+  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), say M here and read
+  Documentation/modules.txt. The module will be called pcbit.o.
 
 Support for AP1000 multicomputer
 CONFIG_AP1000
   This enables support for a sparc based parallel multi-computer
-  called an AP1000+. For details on our efforts to port Linux to this
+  called AP1000+. For details on our efforts to port Linux to this
   machine see http://cap.anu.edu.au/cap/projects/linux or mail to
   hackers@cafe.anu.edu.au
 
@@ -4150,29 +4501,30 @@ CONFIG_MAC
 
 68020 support
 CONFIG_M68020
-  If you anticipate running this kernel on a computer with a MC68020 processor,
-  say Y.  Otherwise, say N.  Note that the 68020 requires a 68851 MMU 
-  (= memory management unit) to run Linux/m68k.
+  If you anticipate running this kernel on a computer with a MC68020
+  processor, say Y.  Otherwise, say N.  Note that the 68020 requires a
+  68851 MMU (= memory management unit) to run Linux/m68k.
 
 68030 support
 CONFIG_M68030
-  If you anticipate running this kernel on a computer with a MC68030 processor,
-  say Y.  Otherwise, say N.  Note that a MC68EC030 will not work, as it does
-  not include an MMU (= memory management unit).
+  If you anticipate running this kernel on a computer with a MC68030
+  processor, say Y.  Otherwise, say N.  Note that a MC68EC030 will not
+  work, as it does not include an MMU (= memory management unit).
 
 68040 support
 CONFIG_M68040
-  If you anticipate running this kernel on a computer with a MC68LC040 or
-  MC68040 processor, say Y.  Otherwise, say N.  Note that an MC68EC040 will
-  not work, as it does not include an MMU (= memory management unit).
+  If you anticipate running this kernel on a computer with a MC68LC040
+  or MC68040 processor, say Y.  Otherwise, say N.  Note that an
+  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).
+  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
@@ -4182,10 +4534,10 @@ CONFIG_M68060
 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.
+  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
@@ -4222,9 +4574,10 @@ CONFIG_AMIFB_OCS
 
 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.
+  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
@@ -4242,10 +4595,10 @@ CONFIG_FB_CYBER
 
 Amiga GSP (TMS340x0) support
 CONFIG_AMIGA_GSP
-  Include support for Amiga graphics cards that use the Texas Instruments
-  TMS340x0 GSP (= graphics signal processor) chips.  Say Y if you want
-  to use a DMI Resolver or Commodore A2410 (Lowell) graphics card on
-  an Amiga; otherwise, say N.
+  Include support for Amiga graphics cards that use the Texas
+  Instruments TMS340x0 GSP (= graphics signal processor) chips.  Say Y
+  if you want to use a DMI Resolver or Commodore A2410 (Lowell)
+  graphics card on an Amiga; otherwise, say N.
 
 DMI Resolver support
 CONFIG_GSP_RESOLVER
@@ -4259,19 +4612,17 @@ CONFIG_GSP_A2410
 
 Amiga Zorro II ramdisk support
 CONFIG_AMIGA_Z2RAM
-  This enables support for using Chip RAM and Zorro II RAM as a ramdisk
-  or as a swap partition.  Say Y if you want to include this driver in
-  the kernel.
-  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
+  This enables support for using Chip RAM and Zorro II RAM as a
+  ramdisk or as a swap partition.  Say Y if you want to include this
+  driver in the kernel.  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 z2ram.o. If you want to
+  compile it as a module, say M here and read
   Documentation/modules.txt.
 
 Atari ACSI support
 CONFIG_ATARI_ACSI
-  This enables support for the Atari ACSI interface. This driver is
-  also available as a module ( = code which can be inserted in and
-  removed from the running kernel whenever you want). The driver
+  This enables support for the Atari ACSI interface. The driver
   supports hard disks and CD-ROMs, which have 512-byte sectors, or can
   be switched to that mode. Due to the ACSI command format, only disks
   up to 1 GB are supported. Special support for certain ACSI to SCSI
@@ -4279,7 +4630,10 @@ CONFIG_ATARI_ACSI
   driver is also the basis for certain other drivers for devices
   attached to the ACSI bus: Atari SLM laser printer, BioNet-100
   Ethernet, and PAMsNet Ethernet. If you want to use one of these
-  devices, you need ACSI support, too.
+  devices, you need ACSI support, too. 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 acsi.o.
 
 Probe all LUNs on each ACSI device
 CONFIG_ACSI_MULTI_LUN
@@ -4295,44 +4649,44 @@ CONFIG_ATARI_SLM
   If you have an Atari SLM laser printer, say Y to include support for
   it in the kernel. 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).
-  Be warned: the driver needs much ST-RAM and can cause problems due
-  to that fact!
+  running kernel whenever you want). The module will be called
+  acsi_slm.o.  Be warned: the driver needs much ST-RAM and can cause
+  problems due to that fact!
 
 A3000 WD33C93A support
 CONFIG_A3000_SCSI
-  If you have an Amiga 3000 and have SCSI devices connected to the built-in
-  SCSI controller, 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). If you
-  want to compile it as a module, say M here and read
-  Documentation/modules.txt.
+  If you have an Amiga 3000 and have SCSI devices connected to the
+  built-in SCSI controller, 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 wd33c93.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt.
 
 A2091 WD33C93A support
 CONFIG_A2091_SCSI
-  If you have a Commodore A2091 SCSI controller, 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). If you
-  want to compile it as a module, say M here and read
-  Documentation/modules.txt.
+  If you have a Commodore A2091 SCSI controller, 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 wd33c93.o. If you want to compile it as
+  a module, say M here and read Documentation/modules.txt.
 
 GVP Series II WD33C93A support
 CONFIG_GVP11_SCSI
-  If you have a Great Valley Products Series II SCSI controller, say Y.
-  Also say Y if you have a later model of GVP SCSI controller (such as
-  the GVP A4008 or a Combo board).  Otherwise, say N.
+  If you have a Great Valley Products Series II SCSI controller, say
+  Y.  Also say Y if you have a later model of GVP SCSI controller
+  (such as the GVP A4008 or a Combo board).  Otherwise, say N.
   This driver does NOT work for the T-Rex series of accelerators from
   TekMagic and GVP-M.
-  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.
+  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 gvp11.o. If you want to compile it
+  as a module, say M here and read Documentation/modules.txt.
 
 Cyberstorm SCSI support
 CONFIG_CYBERSTORM_SCSI
-  If you have an Amiga with an original (MkI) Phase5 Cyberstorm accelerator
-  board and the optional Cyberstorm SCSI controller, say Y.  Otherwise,
-  say N.
+  If you have an Amiga with an original (MkI) Phase5 Cyberstorm
+  accelerator board and the optional Cyberstorm SCSI controller, say
+  Y.  Otherwise, say N.
 
 Cyberstorm II SCSI support
 CONFIG_CYBERSTORMII_SCSI
@@ -4341,13 +4695,15 @@ CONFIG_CYBERSTORMII_SCSI
 
 Blizzard 2060 SCSI support
 CONFIG_BLZ2060_SCSI
-  If you have an Amiga with a Phase5 Blizzard 2060 accelerator board and
-  want to use the onboard SCSI controller, say Y.  Otherwise, say N.
+  If you have an Amiga with a Phase5 Blizzard 2060 accelerator board
+  and want to use the onboard SCSI controller, say Y.  Otherwise, say
+  N.
 
 Blizzard 1230IV/1260 SCSI support
 CONFIG_BLZ1230_SCSI
-  If you have an Amiga 1200 with a Phase5 Blizzard 1230IV or Blizzard 1260
-  accelerator, and the optional SCSI module, say Y.  Otherwise, say N.
+  If you have an Amiga 1200 with a Phase5 Blizzard 1230IV or Blizzard
+  1260 accelerator, and the optional SCSI module, say Y.  Otherwise,
+  say N.
 
 Atari native SCSI support
 CONFIG_ATARI_SCSI
@@ -4355,44 +4711,45 @@ CONFIG_ATARI_SCSI
   Falcon, ...) say Y to get it supported. Of course also, if you have
   an compatible SCSI controller (e.g. for Medusa). 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.
-  This driver supports both styles of NCR integration into the system:
-  the TT style (separate DMA), and the Falcon style (via ST-DMA,
-  replacing ACSI). It does NOT support other schemes, like in the
-  Hades (without DMA).
+  from the running kernel whenever you want). The module is called
+  atari_scsi.o. If you want to compile it as a module, say M here and
+  read Documentation/modules.txt.  This driver supports both styles of
+  NCR integration into the system: the TT style (separate DMA), and
+  the Falcon style (via ST-DMA, replacing ACSI). It does NOT support
+  other schemes, like in the Hades (without DMA).
 
 Long delays for Toshiba CD-ROMs
 CONFIG_ATARI_SCSI_TOSHIBA_DELAY
   This option increases the delay after a SCSI arbitration to
-  accomodate some flakey Toshiba CD-ROM drives. Say Y if you intend to
+  accommodate some flaky Toshiba CD-ROM drives. Say Y if you intend to
   use a Toshiba CD-ROM drive; otherwise, the option is not needed and
   would impact performance a bit, so say N.
 
 Ariadne support
 CONFIG_ARIADNE
-  If you have a VillageTronics Ariadne Ethernet 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). If you
-  want to compile it as a module, say M here and read
-  Documentation/modules.txt.
+  If you have a VillageTronics Ariadne Ethernet 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 ariadne.o. If you want to compile it as
+  a module, say M here and read Documentation/modules.txt.
 
 A2065 support
 CONFIG_A2065
-  If you have a Commodore A2065 Ethernet 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). If you
-  want to compile it as a module, say M here and read
-  Documentation/modules.txt.
+  If you have a Commodore A2065 Ethernet 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 a2065.o. If you want to compile it as a
+  module, say M here and read Documentation/modules.txt.
 
 Hydra support
 CONFIG_HYDRA
   If you have a Hydra Ethernet 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). If you
-  want to compile it as a module, say M here and read
-  Documentation/modules.txt.
+  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 hydra.o. If you want to compile it as a
+  module, say M here and read Documentation/modules.txt.
 
 Atari Lance support
 CONFIG_ATARILANCE
@@ -4415,34 +4772,34 @@ CONFIG_ATARI_PAMSNET
 Multiface Card III parallel support
 CONFIG_MULTIFACE_III_LP
   If you have a Multiface III card for your Amiga, and want to use its
-  parallel port in Linux, 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). If you
-  want to compile it as a module, say M here and read
-  Documentation/modules.txt.
+  parallel port in Linux, 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 lp_m68k.o. If you want to compile it as a module, say M here
+  and read Documentation/modules.txt.
 
 Amiga mouse support
 CONFIG_AMIGAMOUSE
-  If you want to be able to use an Amiga mouse in Linux, say Y.
-  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.
+  If you want to be able to use an Amiga mouse in Linux, say Y.  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 amigamouse.o. If you want to compile it as a
+  module, say M here and read Documentation/modules.txt.
 
 Amiga Copper Console
 CONFIG_COPCON
-  This configures the console to use the Amiga's graphics coprocessor for
-  scrolling, instead of using the CPU.  This option markedly improves
-  response times in the high color modes (5 bitplanes and up).  If you
-  would like to use this, say Y; otherwise, say N.
+  This configures the console to use the Amiga's graphics coprocessor
+  for scrolling, instead of using the CPU.  This option markedly
+  improves response times in the high color modes (5 bitplanes and
+  up).  If you would like to use this, say Y; otherwise, say N.
 
 Atari mouse support
 CONFIG_ATARIMOUSE
-  If you want to be able to use an Atari mouse in Linux, say Y.
-  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.
+  If you want to be able to use an Atari mouse in Linux, say Y.  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 atarimouse.o. If you want to compile it as a
+  module, say M here and read Documentation/modules.txt.
 
 Atari MFP serial support
 CONFIG_ATARI_MFPSER
@@ -4450,7 +4807,7 @@ CONFIG_ATARI_MFPSER
   Linux, say Y. The driver equally supports all kinds of MFP serial
   ports and automatically detects whether Serial1 is available. 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
+  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.
   Note for Falcon users: You also have an MFP port, it's just not
@@ -4470,17 +4827,18 @@ CONFIG_ATARI_SCC
 Atari MIDI serial support
 CONFIG_ATARI_MIDI
   If you want to use your Atari's MIDI port in Linux, say Y.
-  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
+  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.
 
 Amiga builtin serial support
 CONFIG_AMIGA_BUILTIN_SERIAL
-  If you want to use your Amiga's built-in serial port in Linux, say Y.
-  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
+  If you want to use your Amiga's built-in serial port in Linux, say
+  Y.
+  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.
 
 GVP IO-Extender support
@@ -4490,7 +4848,8 @@ CONFIG_GVPIOEXT
 
 Multiface Card III serial support
 CONFIG_MULTIFACE_III_TTY
-  If you want to use a Multiface III card's serial port in Linux, say Y.
+  If you want to use a Multiface III card's serial port in Linux, say
+  Y.
   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
@@ -4498,12 +4857,13 @@ CONFIG_MULTIFACE_III_TTY
 
 Amiga or Atari DMA sound support
 CONFIG_DMASOUND
-  If you want to use the internal audio of your Atari or Amiga in Linux,
-  answer Y to this question.  This will provide a Sun-like /dev/audio,
-  compatible with the Linux/i386 sound system.  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). If you
-  want to compile it as a module, say M here and read
+  If you want to use the internal audio of your Atari or Amiga in
+  Linux, answer Y to this question.  This will provide a Sun-like
+  /dev/audio, compatible with the Linux/i386 sound system.  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). If you want to compile it as a module, say M here and read
   Documentation/modules.txt.
 
 MSDOS partition support
@@ -4514,20 +4874,6 @@ CONFIG_MSDOS_PARTITION
   Say Y if you need this feature; users who are only using their
   system-native partitioning scheme can say N here.
 
-Sparc ESP SCSI support
-CONFIG_SCSI_SUNESP
-  This is the driver for the Sun ESP SCSI host adapter. The ESP
-  chipset is present in most SPARC-based computers.
-
-Sparc /dev/openprom compatibility driver
-CONFIG_SUN_OPENPROMIO
-  This driver provides user programs with an interface to the Sparc
-  PROM device tree. The driver implements a SunOS-compatible
-  interface and a NetBSD-compatible interface. 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 and read
-  Documentation/modules.txt. If unsure, say Y.
-
 # need an empty line after last entry, for sed script in Configure.
 
 #
@@ -4557,7 +4903,7 @@ CONFIG_SUN_OPENPROMIO
 # 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
-# LocalWords:  LMS OPTCD Sanyo SJCD minix faqs msdos harddrive mtools
+# LocalWords:  LMS OPTCD Sanyo SJCD minix faqs xiafs XIA msdos harddrive mtools
 # LocalWords:  std softlinks umssync NetworkFileSharing nfsd mountd CDs HPFS TI
 # LocalWords:  hpfs SYSV SCO intel iBCS Wyse WordPerfect tsx mit unixes sysv NR
 # LocalWords:  SMB WfW Cyclades async mux Logitech busmouse MouseSystem aka AST
@@ -4625,4 +4971,20 @@ CONFIG_SUN_OPENPROMIO
 # LocalWords:  smmixer ptt circ soundmodem MKISS FDDI DEFEA DEFPA DEFXX redhat
 # LocalWords:  HyperNews khg mconv sed lina wuftpd MicroChannel netlink irc cum
 # LocalWords:  raudio realaudio PPROP NETBIOS GUI IBMMCA ELMC Racal Interlan fi
-# LocalWords:  eth shapecfg src esp PCWD PREVSTAT
+# LocalWords:  eth shapecfg src esp PCWD PREVSTAT bootparam sig bitwizard SBC
+# LocalWords:  downloads AFSK TCM FP Karn KA FSK RUH LinkSys cron mouseman LLC
+# LocalWords:  SyQuest SyQuest's CCITT MicroSolutions BPCD bpcd ESPSERIAL PROM
+# LocalWords:  SUNESP openprom OPENPROMIO quango themall al TT MC MMU LC RMW AA
+# LocalWords:  INSNS Ataris AutoConfig ZORRO OCS AMIFB Agnus Denise ECS CDTV GB
+# LocalWords:  AGA Cybervision CYBER GSP TMS DMI Zorro ACSI ROMs SLM BioNet GVP
+# LocalWords:  PAMsNet TekMagic Cyberstorm MkI CYBERSTORMII MkII BLZ onboard cx
+# LocalWords:  VillageTronics ATARILANCE RieblCard PAMCard VME MFP sangoma LAPB
+# LocalWords:  Rhotron BioData's Multiface AMIGAMOUSE COPCON Amiga's bitplanes
+# LocalWords:  ATARIMOUSE MFPSER SCC's MegaSTE ESCC Atari's GVPIOEXT DMASOUND
+# LocalWords:  fdutils cisco univercd rpcg htm iface lapb LAPBETHER tpqic qic
+# LocalWords:  SYNTH xd en binfmt aout ipip terra ipx fileserver sd sr sg wic
+# LocalWords:  ibmmca lapbether mkiss dlci sdla fmv eepro eexpress ni hp ne es
+# LocalWords:  ibmtr isofs ROMFS romfs pcxx cyclades istallion psaux msbusmouse
+# LocalWords:  atixlmouse sbin softdog pcwd USS Lite ACI miroSOUND PCM miroPCM
+# LocalWords:  microcontroller miro Voxware downloading teles acsi slm gvp
+# LocalWords:  atari ariadne amigamouse atarimouse builtin
index 46be0ab21d166f2cb7c5474bff0d07da70977bd4..9cb80e05ada3f73e7ba3f284a98941dd5a270c47 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 VERSION = 2
 PATCHLEVEL = 1
-SUBLEVEL = 22
+SUBLEVEL = 23
 
 ARCH = i386
 
index 6c8f5a296ff0a7fbdfcf43b1c94c1b884baca349..c08bab0008af4b0ca2748b0e51a7ebbc17ba1651 100644 (file)
@@ -718,7 +718,7 @@ sys_call_table:
        .quad do_entSys, sys_ptrace, do_entSys, do_entSys, do_entSys
        .quad do_entSys, do_entSys, do_entSys, sys_access, do_entSys
        .quad do_entSys, sys_sync, sys_kill, do_entSys, sys_setpgid
-       .quad do_entSys, sys_dup, sys_pipe, do_entSys, do_entSys
+       .quad do_entSys, sys_dup, sys_pipe, osf_set_program_attributes, do_entSys
        .quad sys_open, do_entSys, sys_getxgid, osf_sigprocmask, do_entSys
 /*50*/ .quad do_entSys, sys_acct, sys_sigpending, do_entSys, sys_ioctl
        .quad do_entSys, do_entSys, sys_symlink, sys_readlink, sys_execve
@@ -729,7 +729,7 @@ sys_call_table:
        /* map BSD's setpgrp to sys_setpgid for binary compatibility: */
        .quad sys_setgroups, do_entSys, sys_setpgid, sys_setitimer, do_entSys
        .quad do_entSys, sys_getitimer, sys_gethostname, sys_sethostname, sys_getdtablesize
-       .quad sys_dup2, sys_newfstat, sys_fcntl, sys_select, do_entSys
+       .quad sys_dup2, sys_newfstat, sys_fcntl, sys_select, sys_poll
        .quad sys_fsync, sys_setpriority, sys_socket, sys_connect, sys_accept
 /*100*/        .quad osf_getpriority, sys_send, sys_recv, sys_sigreturn, sys_bind
        .quad sys_setsockopt, sys_listen, do_entSys, do_entSys, do_entSys
@@ -759,7 +759,7 @@ sys_call_table:
        .quad do_entSys, do_entSys, do_entSys, do_entSys, do_entSys
        .quad do_entSys, do_entSys, do_entSys, sys_getpgid, sys_getsid
        .quad do_entSys, do_entSys, do_entSys, do_entSys, do_entSys
-       .quad do_entSys, do_entSys, do_entSys, do_entSys, osf_proplist_syscall
+       .quad do_entSys, osf_sysinfo, do_entSys, do_entSys, osf_proplist_syscall
        .quad do_entSys, do_entSys, do_entSys, do_entSys, do_entSys
 /*250*/        .quad do_entSys, osf_usleep_thread, do_entSys, do_entSys, sys_sysfs
        .quad do_entSys, osf_getsysinfo, osf_setsysinfo, do_entSys, do_entSys
index 003775d2efd98f0c9ba44c3d164da09f1a9b64a3..5dc11cb035cdbf8eedaa5e17a127aa51f5ef48c4 100644 (file)
@@ -43,6 +43,23 @@ extern void put_unnamed_dev(kdev_t);
 
 extern asmlinkage int sys_umount(char *);
 extern asmlinkage int sys_swapon(const char *specialfile, int swap_flags);
+extern asmlinkage unsigned long sys_brk(unsigned long);
+
+/*
+ * This is pure guess-work..
+ */
+asmlinkage int osf_set_program_attributes(
+       unsigned long text_start, unsigned long text_len,
+       unsigned long bss_start, unsigned long bss_len)
+{
+       struct mm_struct *mm = current->mm;
+
+       mm->end_code = bss_start + bss_len;
+       mm->brk = bss_start + bss_len;
+       printk("set_program_attributes(%lx %lx %lx %lx)\n",
+               text_start, text_len, bss_start, bss_len);
+       return 0;
+}
 
 /*
  * OSF/1 directory handling functions...
@@ -699,6 +716,37 @@ asmlinkage unsigned long alpha_create_module(char *module_name, unsigned long si
        return retval;
 }
 
+asmlinkage long osf_sysinfo(int command, char *buf, long count)
+{
+       static char * sysinfo_table[] = {
+               system_utsname.sysname,
+               system_utsname.nodename,
+               system_utsname.release,
+               system_utsname.version,
+               system_utsname.machine,
+               "alpha",        /* instruction set architecture */
+               "dummy",        /* hardware serial number */
+               "dummy",        /* hardware manufacturer */
+               "dummy",        /* secure RPC domain */
+       };
+       unsigned long offset;
+       char *res;
+       long len;
+
+       offset = command-1;
+       if (offset >= sizeof(sysinfo_table)/sizeof(char *)) {
+               /* Digital unix has a few unpublished interfaces here */
+               printk("sysinfo(%d)", command);
+               return -EINVAL;
+       }
+       res = sysinfo_table[offset];
+       len = strlen(res)+1;
+       if (len > count)
+               len = count;
+       if (copy_to_user(buf, res, len))
+               return -EFAULT;
+       return 0;
+}
 
 asmlinkage unsigned long osf_getsysinfo(unsigned long op, void *buffer, unsigned long nbytes,
                                        int *start, void *arg)
index 9b82329a9210c058978e5522ecf99be0ab247381..12a1f4803fd1f47a175d60c00a896946ba7fbe83 100644 (file)
@@ -34,6 +34,8 @@ search_one_table(const struct exception_table_entry *first,
         return 0;
 }
 
+register unsigned long gp __asm__("$29");
+
 unsigned
 search_exception_table(unsigned long addr)
 {
@@ -41,7 +43,6 @@ search_exception_table(unsigned long addr)
 
 #ifndef CONFIG_MODULE
        /* There is only the kernel to search.  */
-       register unsigned long gp __asm__("$29");
        ret = search_one_table(__start___ex_table, __stop___ex_table - 1,
                               addr - gp);
        if (ret) return ret;
index 94f77e65a459b7f4925e4f356033fc3698671791..9e7294272c7837a13d93b28a26123a287aeeb4ba 100644 (file)
@@ -630,6 +630,7 @@ ENTRY(sys_call_table)
        .long SYMBOL_NAME(sys_getresuid)        /* 165 */
        .long SYMBOL_NAME(sys_vm86)
        .long SYMBOL_NAME(sys_query_module)
-       .rept NR_syscalls-167
+       .long SYMBOL_NAME(sys_poll)
+       .rept NR_syscalls-168
                .long SYMBOL_NAME(sys_ni_syscall)
        .endr
index ae0c366433cc3f1aebee020266be363dd72de645..58092646fbc734f9622f4d3a7f99e9a0654de3af 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * linux/drivers/block/ide-floppy.c    Version 0.3 - ALPHA     Dec   2, 1996
+ * linux/drivers/block/ide-floppy.c    Version 0.4 - ALPHA     Jan  26, 1997
  *
- * Copyright (C) 1996 Gadi Oxman <gadio@netvision.net.il>
+ * Copyright (C) 1996, 1997 Gadi Oxman <gadio@netvision.net.il>
  */
 
 /*
@@ -16,6 +16,7 @@
  * Ver 0.1   Oct 17 96   Initial test version, mostly based on ide-tape.c.
  * Ver 0.2   Oct 31 96   Minor changes.
  * Ver 0.3   Dec  2 96   Fixed error recovery bug.
+ * Ver 0.4   Jan 26 97   Add support for the HDIO_GETGEO ioctl.
  */
 
 #include <linux/config.h>
@@ -1048,6 +1049,9 @@ static int idefloppy_get_flexible_disk_page (ide_drive_t *drive)
                        drive->name, capacity / 1024, page->cyls, page->heads, page->sectors,
                        page->transfer_rate / 8, page->sector_size, page->rpm);
                floppy->flexible_disk_page = *page;
+               drive->bios_cyl = page->cyls;
+               drive->bios_head = page->heads;
+               drive->bios_sect = page->sectors;
                if (capacity != floppy->blocks * floppy->block_size)
                        printk (KERN_NOTICE "%s: The drive reports both %d and %d bytes as its capacity\n",
                                drive->name, capacity, floppy->blocks * floppy->block_size);
index e2380e5c105d68509b59cbedf58b3a3df788b0e6..76e10c08f8d98d673add35513f034733f7b44b6f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  linux/drivers/block/ide-probe.c    Version 1.0  Oct  31, 1996
+ *  linux/drivers/block/ide-probe.c    Version 1.01  Jan  26, 1997
  *
  *  Copyright (C) 1994-1996  Linus Torvalds & authors (see below)
  */
@@ -36,7 +36,8 @@
  *  code is still sprinkled about.  Think of it as a major evolution, with
  *  inspiration from lots of linux users, esp.  hamish@zot.apana.org.au
  *
- * Version 1.0         move drive probing code from ide.c to ide-probe.c
+ * Version 1.00                move drive probing code from ide.c to ide-probe.c
+ * Version 1.01                fix compilation problem for m68k
  */
 
 #undef REALLY_SLOW_IO          /* most systems can safely undef this */
@@ -494,9 +495,7 @@ static void save_match (ide_hwif_t *hwif, ide_hwif_t *new, ide_hwif_t **match)
 static int init_irq (ide_hwif_t *hwif)
 {
        unsigned long flags;
-#if MAX_HWIFS > 1
        unsigned int index;
-#endif /* MAX_HWIFS > 1 */
        ide_hwgroup_t *hwgroup;
        ide_hwif_t *match = NULL;
 
index a7f688ff316cdd948d7b335819b934dfcadb5d69..99065347b5b06fb647182ad7398002f6c48c6a84 100644 (file)
@@ -1,7 +1,7 @@
 /*
- *  linux/drivers/block/ide.c  Version 6.00  Dec   4, 1996
+ *  linux/drivers/block/ide.c  Version 6.01  Jan  26, 1997
  *
- *  Copyright (C) 1994-1996  Linus Torvalds & authors (see below)
+ *  Copyright (C) 1994-1997  Linus Torvalds & authors (see below)
  */
 #define _IDE_C         /* needed by <linux/blk.h> */
 
  *                     fix bug in ide_error()
  *                     fix bug in the first ide_get_lock() call for Atari
  *                     don't flush leftover data for ATAPI devices
+ * Version 6.01                clear hwgroup->active while the hwgroup sleeps
+ *                     support HDIO_GETGEO for floppies
  *
  *  Some additional driver compile-time options are in ide.h
  *
@@ -1240,10 +1242,9 @@ static inline void ide_leave_hwgroup (ide_hwgroup_t *hwgroup)
                        sleep = jiffies + WAIT_MIN_SLEEP;
                hwgroup->timer.expires = sleep;
                add_timer(&hwgroup->timer);
-       } else {        /* Ugly, but how can we sleep for the lock otherwise? perhaps from tq_scheduler? */
+       } else  /* Ugly, but how can we sleep for the lock otherwise? perhaps from tq_scheduler? */
                ide_release_lock(&ide_lock);
-               hwgroup->active = 0;
-       }
+       hwgroup->active = 0;
 }
 
 /*
@@ -1876,7 +1877,7 @@ static int ide_ioctl (struct inode *inode, struct file *file,
                case HDIO_GETGEO:
                {
                        struct hd_geometry *loc = (struct hd_geometry *) arg;
-                       if (!loc || drive->media != ide_disk) return -EINVAL;
+                       if (!loc || (drive->media != ide_disk && drive->media != ide_floppy)) return -EINVAL;
                        if (put_user(drive->bios_head, (byte *) &loc->heads)) return -EFAULT;
                        if (put_user(drive->bios_sect, (byte *) &loc->sectors)) return -EFAULT;
                        if (put_user(drive->bios_cyl, (unsigned short *) &loc->cylinders)) return -EFAULT;
index 558564ca1731a6b690390ae6334c5931e6b7d70c..d6227d9108dd335d26ffddf650e50a8d5568454c 100644 (file)
  *
  * Heavily modified by David Giller
  *   changed from queue- to counter- driven
- *   hacked out a (probably incorrect) mouse_select
+ *   hacked out a (probably incorrect) mouse_poll
  *
  * Modified again by Nathan Laredo to interface with
  *   0.96c-pl1 IRQ handling changes (13JUL92)
- *   didn't bother touching select code.
+ *   didn't bother touching poll code.
  *
- * Modified the select() code blindly to conform to the VFS
+ * Modified the poll() code blindly to conform to the VFS
  *   requirements. 92.07.14 - Linus. Somebody should test it out.
  *
  * Modified by Johan Myreen to make room for other mice (9AUG92)
@@ -42,6 +42,7 @@
 #include <linux/errno.h>
 #include <linux/miscdevice.h>
 #include <linux/random.h>
+#include <linux/poll.h>
 
 #include <asm/setup.h>
 #include <asm/system.h>
@@ -277,16 +278,14 @@ static long read_mouse(struct inode * inode, struct file * file,
 }
 
 /*
- * select for mouse input
+ * poll for mouse input
  */
 
-static int mouse_select(struct inode *inode, struct file *file, int sel_type, select_table * wait)
+static unsigned int mouse_poll(struct file *file, poll_table * wait)
 {
-       if (sel_type == SEL_IN) {
-               if (mouse.ready)
-                       return 1;
-               select_wait(&mouse.wait, wait);
-       }
+       poll_wait(&mouse.wait, wait);
+       if (mouse.ready)
+               return POLLIN | POLLRDNORM;
        return 0;
 }
 
@@ -295,7 +294,7 @@ struct file_operations amiga_mouse_fops = {
        read_mouse,
        write_mouse,
        NULL,           /* mouse_readdir */
-       mouse_select,   /* mouse_select */
+       mouse_poll,     /* mouse_poll */
        NULL,           /* mouse_ioctl */
        NULL,           /* mouse_mmap */
        open_mouse,
index 96962faecf55121a6b93bc1d4fa6bcfa06e2f677..2fac5b245767034b1c70f1c723a3cdee955ee57a 100644 (file)
@@ -302,8 +302,7 @@ static void do_apm_timer(unsigned long);
 static int     do_open(struct inode *, struct file *);
 static void    do_release(struct inode *, struct file *);
 static long    do_read(struct inode *, struct file *, char *, unsigned long);
-static int     do_select(struct inode *, struct file *, int,
-                         select_table *);
+static unsigned int do_poll(struct file *, poll_table *);
 static int     do_ioctl(struct inode *, struct file *, u_int, u_long);
 
 #ifdef CONFIG_PROC_FS
@@ -360,7 +359,7 @@ static struct file_operations apm_bios_fops = {
        do_read,
        NULL,           /* write */
        NULL,           /* readdir */
-       do_select,
+       do_poll,
        do_ioctl,
        NULL,           /* mmap */
        do_open,
@@ -865,19 +864,16 @@ repeat:
        return 0;
 }
 
-static int do_select(struct inode *inode, struct file *fp, int sel_type,
-                    select_table * wait)
+static unsigned int do_poll(struct file *fp, poll_table * wait)
 {
-       struct apm_bios_struct *        as;
+       struct apm_bios_struct * as;
 
        as = fp->private_data;
        if (check_apm_bios_struct(as, "select"))
                return 0;
-       if (sel_type != SEL_IN)
-               return 0;
+       poll_wait(&process_list, wait);
        if (!queue_empty(as))
-               return 1;
-       select_wait(&process_list, wait);
+               return POLLIN | POLLRDNORM;
        return 0;
 }
 
index 8f223e986e1d4f5a3d6fab3b760d68808be465f8..3b347efb776c501681f198681d45c471ba9ca05e 100644 (file)
@@ -372,7 +372,7 @@ static struct file_operations mem_fops = {
        read_mem,
        write_mem,
        NULL,           /* mem_readdir */
-       NULL,           /* mem_select */
+       NULL,           /* mem_poll */
        NULL,           /* mem_ioctl */
        mmap_mem,
        NULL,           /* no special open code */
@@ -385,7 +385,7 @@ static struct file_operations kmem_fops = {
        read_kmem,
        write_kmem,
        NULL,           /* kmem_readdir */
-       NULL,           /* kmem_select */
+       NULL,           /* kmem_poll */
        NULL,           /* kmem_ioctl */
        mmap_kmem,
        NULL,           /* no special open code */
@@ -398,7 +398,7 @@ static struct file_operations null_fops = {
        read_null,
        write_null,
        NULL,           /* null_readdir */
-       NULL,           /* null_select */
+       NULL,           /* null_poll */
        NULL,           /* null_ioctl */
        NULL,           /* null_mmap */
        NULL,           /* no special open code */
@@ -411,7 +411,7 @@ static struct file_operations port_fops = {
        read_port,
        write_port,
        NULL,           /* port_readdir */
-       NULL,           /* port_select */
+       NULL,           /* port_poll */
        NULL,           /* port_ioctl */
        NULL,           /* port_mmap */
        NULL,           /* no special open code */
@@ -424,7 +424,7 @@ static struct file_operations zero_fops = {
        read_zero,
        write_zero,
        NULL,           /* zero_readdir */
-       NULL,           /* zero_select */
+       NULL,           /* zero_poll */
        NULL,           /* zero_ioctl */
        mmap_zero,
        NULL,           /* no special open code */
@@ -436,7 +436,7 @@ static struct file_operations full_fops = {
        read_full,
        write_full,
        NULL,           /* full_readdir */
-       NULL,           /* full_select */
+       NULL,           /* full_poll */
        NULL,           /* full_ioctl */        
        NULL,           /* full_mmap */
        NULL,           /* no special open code */
@@ -483,7 +483,7 @@ static struct file_operations memory_fops = {
        NULL,           /* read */
        NULL,           /* write */
        NULL,           /* readdir */
-       NULL,           /* select */
+       NULL,           /* poll */
        NULL,           /* ioctl */
        NULL,           /* mmap */
        memory_open,    /* just a selector for the real open */
index 6d6a3173d4dfd71194a0e19e8f159d75de21897c..a786359e414ad1fc126a8022b2665848fce8a4db 100644 (file)
@@ -33,6 +33,7 @@
 #include <linux/mm.h>
 #include <linux/string.h>
 #include <linux/malloc.h>
+#include <linux/poll.h>
 
 #include <asm/uaccess.h>
 #include <asm/system.h>
@@ -982,37 +983,29 @@ static int write_chan(struct tty_struct * tty, struct file * file,
        return (b - buf) ? b - buf : retval;
 }
 
-static int normal_select(struct tty_struct * tty, struct inode * inode,
-                        struct file * file, int sel_type, select_table *wait)
+static unsigned int normal_poll(struct tty_struct * tty, struct file * file, poll_table *wait)
 {
-       switch (sel_type) {
-               case SEL_IN:
-                       if (input_available_p(tty, TIME_CHAR(tty) ? 0 :
-                                             MIN_CHAR(tty)))
-                               return 1;
-                       /* fall through */
-               case SEL_EX:
-                       if (tty->packet && tty->link->ctrl_status)
-                               return 1;
-                       if (tty->flags & (1 << TTY_OTHER_CLOSED))
-                               return 1;
-                       if (tty_hung_up_p(file))
-                               return 1;
-                       if (!waitqueue_active(&tty->read_wait)) {
-                               if (MIN_CHAR(tty) && !TIME_CHAR(tty))
-                                       tty->minimum_to_wake = MIN_CHAR(tty);
-                               else
-                                       tty->minimum_to_wake = 1;
-                       }
-                       select_wait(&tty->read_wait, wait);
-                       return 0;
-               case SEL_OUT:
-                       if (tty->driver.chars_in_buffer(tty) < WAKEUP_CHARS)
-                               return 1;
-                       select_wait(&tty->write_wait, wait);
-                       return 0;
+       unsigned int mask = 0;
+
+       poll_wait(&tty->read_wait, wait);
+       poll_wait(&tty->write_wait, wait);
+       if (input_available_p(tty, TIME_CHAR(tty) ? 0 : MIN_CHAR(tty)))
+               mask |= POLLIN | POLLRDNORM;
+       if (tty->packet && tty->link->ctrl_status)
+               mask |= POLLPRI | POLLIN | POLLRDNORM;
+       if (tty->flags & (1 << TTY_OTHER_CLOSED))
+               mask |= POLLHUP;
+       if (tty_hung_up_p(file))
+               mask |= POLLHUP;
+       if (!(mask & (POLLHUP | POLLIN | POLLRDNORM))) {
+               if (MIN_CHAR(tty) && !TIME_CHAR(tty))
+                       tty->minimum_to_wake = MIN_CHAR(tty);
+               else
+                       tty->minimum_to_wake = 1;
        }
-       return 0;
+       if (tty->driver.chars_in_buffer(tty) < WAKEUP_CHARS)
+               mask |= POLLOUT | POLLWRNORM;
+       return mask;
 }
 
 struct tty_ldisc tty_ldisc_N_TTY = {
@@ -1027,7 +1020,7 @@ struct tty_ldisc tty_ldisc_N_TTY = {
        write_chan,             /* write */
        n_tty_ioctl,            /* ioctl */
        n_tty_set_termios,      /* set_termios */
-       normal_select,          /* select */
+       normal_poll,            /* poll */
        n_tty_receive_buf,      /* receive_buf */
        n_tty_receive_room,     /* receive_room */
        0                       /* write_wakeup */
index d9f9525b93d7815699fcc10d6d0461100c9c479c..7f7ec752aee1620f25579bf811afb5cb726a1668 100644 (file)
@@ -45,6 +45,7 @@
 #include <linux/malloc.h>
 #include <linux/miscdevice.h>
 #include <linux/random.h>
+#include <linux/poll.h>
 
 #include <asm/io.h>
 #include <asm/uaccess.h>
@@ -494,13 +495,11 @@ repeat:
 }
 
 
-static int aux_select(struct inode *inode, struct file *file, int sel_type, select_table * wait)
+static unsigned int aux_poll(struct file *file, poll_table * wait)
 {
-       if (sel_type != SEL_IN)
-               return 0;
+       poll_wait(&queue->proc_list, wait);
        if (aux_ready)
-               return 1;
-       select_wait(&queue->proc_list, wait);
+               return POLLIN | POLLRDNORM;
        return 0;
 }
 
@@ -510,7 +509,7 @@ struct file_operations psaux_fops = {
        read_aux,
        write_aux,
        NULL,           /* readdir */
-       aux_select,
+       aux_poll,
        NULL,           /* ioctl */
        NULL,           /* mmap */
        open_aux,
index 64ffdf406d789febdf71c886f725797f0d0881c5..bd04db65ebbe39a760d46fead772c58e98f7969b 100644 (file)
 #include <linux/fcntl.h>
 #include <linux/malloc.h>
 #include <linux/random.h>
+#include <linux/poll.h>
 
 #include <asm/uaccess.h>
 #include <asm/irq.h>
@@ -332,8 +333,7 @@ static long random_read(struct inode * inode, struct file * file,
                       char * buf, unsigned long nbytes);
 static long random_read_unlimited(struct inode * inode, struct file * file,
                                 char * buf, unsigned long nbytes);
-static int random_select(struct inode *inode, struct file *file,
-                        int sel_type, select_table * wait);
+static unsigned int random_poll(struct file *file, poll_table * wait);
 static long random_write(struct inode * inode, struct file * file,
                        const char * buffer, unsigned long count);
 static int random_ioctl(struct inode * inode, struct file * file,
@@ -1086,23 +1086,18 @@ random_read_unlimited(struct inode * inode, struct file * file,
        return extract_entropy(&random_state, buf, nbytes, 1);
 }
 
-static int
-random_select(struct inode *inode, struct file *file,
-                     int sel_type, select_table * wait)
+static unsigned int
+random_poll(struct file *file, poll_table * wait)
 {
-       switch (sel_type) {
-       case SEL_IN:
-               if (random_state.entropy_count >= 8)
-                       return 1;
-               select_wait(&random_wait, wait);
-               break;
-       case SEL_OUT:
-               if (random_state.entropy_count < WAIT_OUTPUT_BITS)
-                       return 1;
-               select_wait(&random_wait, wait);
-               break;
-       }
-       return 0;
+       unsigned int mask;
+
+       poll_wait(&random_wait, wait);
+       mask = 0;
+       if (random_state.entropy_count >= 8)
+               mask |= POLLIN | POLLRDNORM;
+       if (random_state.entropy_count < WAIT_OUTPUT_BITS)
+               mask |= POLLOUT | POLLWRNORM;
+       return mask;
 }
 
 static long
@@ -1270,7 +1265,7 @@ struct file_operations random_fops = {
        random_read,
        random_write,
        NULL,           /* random_readdir */
-       random_select,  /* random_select */
+       random_poll,    /* random_poll */
        random_ioctl,
        NULL,           /* random_mmap */
        NULL,           /* no special open code */
@@ -1282,7 +1277,7 @@ struct file_operations urandom_fops = {
        random_read_unlimited,
        random_write,
        NULL,           /* urandom_readdir */
-       NULL,           /* urandom_select */
+       NULL,           /* urandom_poll */
        random_ioctl,
        NULL,           /* urandom_mmap */
        NULL,           /* no special open code */
index baf08168d8ac2301c68743f58a0113d9c96b984b..483178b2ad574dcacf1576daf53054364043b502 100644 (file)
@@ -75,8 +75,7 @@ static long rtc_read(struct inode *inode, struct file *file,
 static int rtc_ioctl(struct inode *inode, struct file *file,
                        unsigned int cmd, unsigned long arg);
 
-static int rtc_select(struct inode *inode, struct file *file,
-                       int sel_type, select_table *wait);
+static unsigned int rtc_poll(struct file *file, poll_table *wait);
 
 void get_rtc_time (struct rtc_time *rtc_tm);
 void get_rtc_alm_time (struct rtc_time *alm_tm);
@@ -492,14 +491,11 @@ static void rtc_release(struct inode *inode, struct file *file)
        rtc_status &= ~RTC_IS_OPEN;
 }
 
-static int rtc_select(struct inode *inode, struct file *file,
-                       int sel_type, select_table *wait)
+static unsigned int rtc_poll(struct file *file, poll_table *wait)
 {
-       if (sel_type == SEL_IN) {
-               if (rtc_irq_data != 0)
-                       return 1;
-               select_wait(&rtc_wait, wait);
-       }
+       poll_wait(&rtc_wait, wait);
+       if (rtc_irq_data != 0)
+               return POLLIN | POLLRDNORM;
        return 0;
 }
 
@@ -512,7 +508,7 @@ static struct file_operations rtc_fops = {
        rtc_read,
        NULL,           /* No write */
        NULL,           /* No readdir */
-       rtc_select,
+       rtc_poll,
        rtc_ioctl,
        NULL,           /* No mmap */
        rtc_open,
index ca2fdd8962b7babaa062ba4c230d74c4cb085678..59d2c27cb703d613dd19a855f18fd423e8c9e357 100644 (file)
@@ -62,6 +62,7 @@
 #include <linux/mm.h>
 #include <linux/string.h>
 #include <linux/malloc.h>
+#include <linux/poll.h>
 
 #include <asm/uaccess.h>
 #include <asm/system.h>
@@ -110,7 +111,7 @@ static void initialize_tty_struct(struct tty_struct *tty);
 
 static long tty_read(struct inode *, struct file *, char *, unsigned long);
 static long tty_write(struct inode *, struct file *, const char *, unsigned long);
-static int tty_select(struct inode *, struct file *, int, select_table *);
+static unsigned int tty_poll(struct file *, poll_table *);
 static int tty_open(struct inode *, struct file *);
 static void tty_release(struct inode *, struct file *);
 static int tty_ioctl(struct inode * inode, struct file * file,
@@ -322,10 +323,9 @@ static long hung_up_tty_write(struct inode * inode,
        return -EIO;
 }
 
-static int hung_up_tty_select(struct inode * inode, struct file * filp,
-       int sel_type, select_table * wait)
+static unsigned int hung_up_tty_poll(struct file * filp, poll_table * wait)
 {
-       return 1;
+       return POLLIN | POLLOUT | POLLERR | POLLHUP | POLLRDNORM | POLLWRNORM;
 }
 
 static int hung_up_tty_ioctl(struct inode * inode, struct file * file,
@@ -345,7 +345,7 @@ static struct file_operations tty_fops = {
        tty_read,
        tty_write,
        NULL,           /* tty_readdir */
-       tty_select,
+       tty_poll,
        tty_ioctl,
        NULL,           /* tty_mmap */
        tty_open,
@@ -359,7 +359,7 @@ static struct file_operations hung_up_tty_fops = {
        hung_up_tty_read,
        hung_up_tty_write,
        NULL,           /* hung_up_tty_readdir */
-       hung_up_tty_select,
+       hung_up_tty_poll,
        hung_up_tty_ioctl,
        NULL,           /* hung_up_tty_mmap */
        NULL,           /* hung_up_tty_open */
@@ -1287,16 +1287,16 @@ static void tty_release(struct inode * inode, struct file * filp)
        release_dev(filp);
 }
 
-static int tty_select(struct inode * inode, struct file * filp, int sel_type, select_table * wait)
+static unsigned int tty_poll(struct file * filp, poll_table * wait)
 {
        struct tty_struct * tty;
 
        tty = (struct tty_struct *)filp->private_data;
-       if (tty_paranoia_check(tty, inode->i_rdev, "tty_select"))
+       if (tty_paranoia_check(tty, filp->f_inode->i_rdev, "tty_poll"))
                return 0;
 
-       if (tty->ldisc.select)
-               return (tty->ldisc.select)(tty, inode, filp, sel_type, wait);
+       if (tty->ldisc.poll)
+               return (tty->ldisc.poll)(tty, filp, wait);
        return 0;
 }
 
index b218da3bf9383c177ebf0d8be7500ff69d2a8833..705afe0af293f9bf62ff9355bcd197f8522f3c05 100644 (file)
@@ -243,7 +243,7 @@ static struct file_operations vcs_fops = {
        vcs_read,       /* read */
        vcs_write,      /* write */
        NULL,           /* readdir */
-       NULL,           /* select */
+       NULL,           /* poll */
        NULL,           /* ioctl */
        NULL,           /* mmap */
        vcs_open,       /* open */
index b053aaf431cb2bbd98e976e24aca44d75a45c61b..6c6ffd3f98925edaa58d8c2d4d3d06fb583edbb0 100644 (file)
@@ -93,6 +93,7 @@ struct pci_dev_info dev_info[] = {
        DEVICE( MATROX,         MATROX_MGA_IMP, "MGA Impression"),
        DEVICE( CT,             CT_65545,       "65545"),
        DEVICE( CT,             CT_65548,       "65548"),
+       DEVICE( CT,             CT_65550,       "65550"),
        DEVICE( MIRO,           MIRO_36050,     "ZR36050"),
        DEVICE( FD,             FD_36C70,       "TMC-18C30"),
        DEVICE( SI,             SI_6201,        "6201"),
index 658a2da1b8fadf809c7564edc42344cec748cfb3..377245330915c0eea9dd3899e7a7c417441bae02 100644 (file)
@@ -392,7 +392,7 @@ aic7xxx_seq.h:      aic7xxx_asm aic7xxx.seq
        ./aic7xxx_asm -o $@ aic7xxx.seq
 
 seagate.o: seagate.c
-       $(CC) $(CFLAGS) -DARBITRATE -DSLOW_HANDSHAKE -DFAST32 -c seagate.c 
+       $(CC) $(CFLAGS) -DARBITRATE -DSLOW_HANDSHAKE -DFAST32 -DPARITY -c seagate.c 
 
 # For debugging, use the -g flag
 53c7,8xx.o : 53c7,8xx.c
index ca1d1a769beb08eb887a7aa02e0f3a7e30284143..a8fa2ccccd94fe276d09acb4b2d442c274c1dad5 100644 (file)
@@ -1,7 +1,7 @@
 /*
- * linux/drivers/scsi/ide-scsi.c       Version 0.1 - ALPHA     Dec   3, 1996
+ * linux/drivers/scsi/ide-scsi.c       Version 0.2 - ALPHA     Jan  26, 1997
  *
- * Copyright (C) 1996 Gadi Oxman <gadio@netvision.net.il>
+ * Copyright (C) 1996, 1997 Gadi Oxman <gadio@netvision.net.il>
  */
 
 /*
  * native IDE ATAPI drivers.
  *
  * Ver 0.1   Dec  3 96   Initial version.
+ * Ver 0.2   Jan 26 97   Fixed bug in cleanup_module() and added emulation
+ *                        of MODE_SENSE_6/MODE_SELECT_6 for cdroms. Thanks
+ *                        to Janos Farkas for pointing this out.
+ *                       Avoid using bitfields in structures for m68k.
+ *                       Added Scather/Gather and DMA support.
  */
 
 #include <linux/module.h>
@@ -44,49 +49,40 @@ typedef struct idescsi_pc_s {
        struct request *rq;                     /* The corresponding request */
        byte *buffer;                           /* Data buffer */
        byte *current_position;                 /* Pointer into the above buffer */
+       struct scatterlist *sg;                 /* Scather gather table */
+       int b_count;                            /* Bytes transferred from current entry */
        Scsi_Cmnd *scsi_cmd;                    /* SCSI command */
        void (*done)(Scsi_Cmnd *);              /* Scsi completion routine */
+       unsigned int flags;                     /* Status/Action flags */
 } idescsi_pc_t;
 
+/*
+ *     Packet command status bits.
+ */
+#define PC_DMA_IN_PROGRESS             0       /* 1 while DMA in progress */
+#define PC_WRITING                     1       /* Data direction */
+
 typedef struct {
        ide_drive_t *drive;
        idescsi_pc_t *pc;                       /* Current packet command */
        unsigned int flags;                     /* Status/Action flags */
 } idescsi_scsi_t;
 
+/*
+ *     Per ATAPI device status bits.
+ */
 #define IDESCSI_DRQ_INTERRUPT          0       /* DRQ interrupt device */
+
+/*
+ *     ide-scsi requests.
+ */
 #define IDESCSI_PC_RQ                  90
 
-typedef union {
-       unsigned all                    :8;
-       struct {
-               unsigned check          :1;     /* Error occurred */
-               unsigned idx            :1;     /* Reserved */
-               unsigned corr           :1;     /* Correctable error occurred */
-               unsigned drq            :1;     /* Data is request by the device */
-               unsigned dsc            :1;     /* Media access command finished */
-               unsigned reserved5      :1;     /* Reserved */
-               unsigned drdy           :1;     /* Ignored for ATAPI commands (ready to accept ATA command) */
-               unsigned bsy            :1;     /* The device has access to the command block */
-       } b;
-} idescsi_status_reg_t;
-
-typedef union {
-       unsigned all                    :16;
-       struct {
-               unsigned low            :8;     /* LSB */
-               unsigned high           :8;     /* MSB */
-       } b;
-} idescsi_bcount_reg_t;
-
-typedef union {
-       unsigned all                    :8;
-       struct {
-               unsigned cod            :1;     /* Information transferred is command (1) or data (0) */
-               unsigned io             :1;     /* The device requests us to read (1) or write (0) */
-               unsigned reserved       :6;     /* Reserved */
-       } b;
-} idescsi_ireason_reg_t;
+/*
+ *     Bits of the interrupt reason register.
+ */
+#define IDESCSI_IREASON_COD    0x1             /* Information transferred is command */
+#define IDESCSI_IREASON_IO     0x2             /* The device requests us to read */
 
 static void idescsi_discard_data (ide_drive_t *drive, unsigned int bcount)
 {
@@ -94,6 +90,107 @@ static void idescsi_discard_data (ide_drive_t *drive, unsigned int bcount)
                IN_BYTE (IDE_DATA_REG);
 }
 
+static void idescsi_output_zeros (ide_drive_t *drive, unsigned int bcount)
+{
+       while (bcount--)
+               OUT_BYTE (0, IDE_DATA_REG);
+}
+
+/*
+ *     PIO data transfer routines using the scather gather table.
+ */
+static void idescsi_input_buffers (ide_drive_t *drive, idescsi_pc_t *pc, unsigned int bcount)
+{
+       int count;
+
+       while (bcount) {
+               if (pc->sg - (struct scatterlist *) pc->scsi_cmd->request_buffer > pc->scsi_cmd->use_sg) {
+                       printk (KERN_ERR "ide-scsi: scather gather table too small, discarding data\n");
+                       idescsi_discard_data (drive, bcount);
+                       return;
+               }
+               count = IDE_MIN (pc->sg->length - pc->b_count, bcount);
+               atapi_input_bytes (drive, pc->sg->address + pc->b_count, count);
+               bcount -= count; pc->b_count += count;
+               if (pc->b_count == pc->sg->length) {
+                       pc->sg++;
+                       pc->b_count = 0;
+               }
+       }
+}
+
+static void idescsi_output_buffers (ide_drive_t *drive, idescsi_pc_t *pc, unsigned int bcount)
+{
+       int count;
+
+       while (bcount) {
+               if (pc->sg - (struct scatterlist *) pc->scsi_cmd->request_buffer > pc->scsi_cmd->use_sg) {
+                       printk (KERN_ERR "ide-scsi: scather gather table too small, padding with zeros\n");
+                       idescsi_output_zeros (drive, bcount);
+                       return;
+               }
+               count = IDE_MIN (pc->sg->length - pc->b_count, bcount);
+               atapi_output_bytes (drive, pc->sg->address + pc->b_count, count);
+               bcount -= count; pc->b_count += count;
+               if (pc->b_count == pc->sg->length) {
+                       pc->sg++;
+                       pc->b_count = 0;
+               }
+       }
+}
+
+/*
+ *     Most of the SCSI commands are supported directly by ATAPI devices.
+ *     idescsi_transform_pc handles the few exceptions.
+ */
+static inline void idescsi_transform_pc1 (ide_drive_t *drive, idescsi_pc_t *pc)
+{
+       u8 *c = pc->c, *buf = pc->buffer, *sc = pc->scsi_cmd->cmnd;
+       int i;
+
+       if (drive->media == ide_cdrom) {
+               if (c[0] == READ_6) {
+                       c[8] = c[4];            c[5] = c[3];            c[4] = c[2];
+                       c[3] = c[1] & 0x1f;     c[2] = 0;               c[1] &= 0xe0;
+                       c[0] = READ_10;
+               }
+               if (c[0] == MODE_SENSE || (c[0] == MODE_SELECT && buf[3] == 8)) {
+                       pc->request_transfer -= 4;
+                       memset (c, 0, 12);
+                       c[0] = sc[0] | 0x40;    c[2] = sc[2];           c[8] = sc[4] - 4;
+                       if (c[0] == MODE_SENSE_10) return;
+                       for (i = 0; i <= 7; i++) buf[i] = 0;
+                       for (i = 8; i < pc->buffer_size - 4; i++) buf[i] = buf[i + 4];
+               }
+       }
+}
+
+static inline void idescsi_transform_pc2 (ide_drive_t *drive, idescsi_pc_t *pc)
+{
+       u8 *buf = pc->buffer;
+       int i;
+
+       if (drive->media == ide_cdrom) {
+               if (pc->c[0] == MODE_SENSE_10 && pc->scsi_cmd->cmnd[0] == MODE_SENSE) {
+                       buf[0] = buf[1];        buf[1] = buf[2];
+                       buf[2] = 0;             buf[3] = 8;
+                       for (i = pc->buffer_size - 1; i >= 12; i--) buf[i] = buf[i - 4];
+                       for (i = 11; i >= 4; i--) buf[i] = 0;
+               }
+       }
+}
+
+static inline void idescsi_free_bh (struct buffer_head *bh)
+{
+       struct buffer_head *bhp;
+
+       while (bh) {
+               bhp = bh;
+               bh = bh->b_reqnext;
+               kfree (bhp);
+       }
+}
+
 static void idescsi_end_request (byte uptodate, ide_hwgroup_t *hwgroup)
 {
        ide_drive_t *drive = hwgroup->drive;
@@ -121,18 +218,22 @@ static void idescsi_end_request (byte uptodate, ide_hwgroup_t *hwgroup)
                printk ("ide-scsi: %s: success for %lu\n", drive->name, pc->scsi_cmd->serial_number);
 #endif /* IDESCSI_DEBUG_LOG */
                pc->scsi_cmd->result = DID_OK << 16;
+               idescsi_transform_pc2 (drive, pc);
        }
        pc->done(pc->scsi_cmd);
+       idescsi_free_bh (rq->bh);
        kfree(pc); kfree(rq);
        scsi->pc = NULL;
 }
 
+/*
+ *     Our interrupt handler.
+ */
 static void idescsi_pc_intr (ide_drive_t *drive)
 {
        idescsi_scsi_t *scsi = drive->driver_data;
-       idescsi_status_reg_t status;
-       idescsi_bcount_reg_t bcount;
-       idescsi_ireason_reg_t ireason;
+       byte status, ireason;
+       int bcount;
        idescsi_pc_t *pc=scsi->pc;
        struct request *rq = pc->rq;
        unsigned int temp;
@@ -141,33 +242,40 @@ static void idescsi_pc_intr (ide_drive_t *drive)
        printk (KERN_INFO "ide-scsi: Reached idescsi_pc_intr interrupt handler\n");
 #endif /* IDESCSI_DEBUG_LOG */ 
 
-       status.all = GET_STAT();                                        /* Clear the interrupt */
+       if (clear_bit (PC_DMA_IN_PROGRESS, &pc->flags)) {
+#if IDESCSI_DEBUG_LOG
+               printk ("ide-scsi: %s: DMA complete\n", drive->name);
+#endif /* IDESCSI_DEBUG_LOG */
+               pc->actually_transferred=pc->request_transfer;
+               (void) (HWIF(drive)->dmaproc(ide_dma_abort, drive));
+       }
+
+       status = GET_STAT();                                            /* Clear the interrupt */
 
-       if (!status.b.drq) {                                            /* No more interrupts */
+       if ((status & DRQ_STAT) == 0) {                                 /* No more interrupts */
 #if IDESCSI_DEBUG_LOG
                printk (KERN_INFO "Packet command completed, %d bytes transferred\n", pc->actually_transferred);
 #endif /* IDESCSI_DEBUG_LOG */
                ide_sti();
-               if (status.b.check)
+               if (status & ERR_STAT)
                        rq->errors++;
                idescsi_end_request (1, HWGROUP(drive));
                return;
        }
-       bcount.b.high=IN_BYTE (IDE_BCOUNTH_REG);
-               bcount.b.low=IN_BYTE (IDE_BCOUNTL_REG);
-       ireason.all=IN_BYTE (IDE_IREASON_REG);
+       bcount = IN_BYTE (IDE_BCOUNTH_REG) << 8 | IN_BYTE (IDE_BCOUNTL_REG);
+       ireason = IN_BYTE (IDE_IREASON_REG);
 
-       if (ireason.b.cod) {
+       if (ireason & IDESCSI_IREASON_COD) {
                printk (KERN_ERR "ide-scsi: CoD != 0 in idescsi_pc_intr\n");
                ide_do_reset (drive);
                return;
        }
-       if (ireason.b.io) {
-               temp = pc->actually_transferred + bcount.all;
+       if (ireason & IDESCSI_IREASON_IO) {
+               temp = pc->actually_transferred + bcount;
                if ( temp > pc->request_transfer) {
                        if (temp > pc->buffer_size) {
                                printk (KERN_ERR "ide-scsi: The scsi wants to send us more data than expected - discarding data\n");
-                               idescsi_discard_data (drive,bcount.all);
+                               idescsi_discard_data (drive,bcount);
                                ide_set_handler (drive,&idescsi_pc_intr,WAIT_CMD);
                                return;
                        }
@@ -176,12 +284,19 @@ static void idescsi_pc_intr (ide_drive_t *drive)
 #endif /* IDESCSI_DEBUG_LOG */
                }
        }
-       if (ireason.b.io)
-               atapi_input_bytes (drive,pc->current_position,bcount.all);      /* Read the current buffer */
-       else
-               atapi_output_bytes (drive,pc->current_position,bcount.all);     /* Write the current buffer */
-       pc->actually_transferred+=bcount.all;                           /* Update the current position */
-       pc->current_position+=bcount.all;
+       if (ireason & IDESCSI_IREASON_IO) {
+               if (pc->sg)
+                       idescsi_input_buffers (drive, pc, bcount);
+               else
+                       atapi_input_bytes (drive,pc->current_position,bcount);
+       } else {
+               if (pc->sg)
+                       idescsi_output_buffers (drive, pc, bcount);
+               else
+                       atapi_output_bytes (drive,pc->current_position,bcount);
+       }
+       pc->actually_transferred+=bcount;                               /* Update the current position */
+       pc->current_position+=bcount;
 
        ide_set_handler (drive,&idescsi_pc_intr,WAIT_CMD);              /* And set the interrupt handler again */
 }
@@ -189,14 +304,14 @@ static void idescsi_pc_intr (ide_drive_t *drive)
 static void idescsi_transfer_pc (ide_drive_t *drive)
 {
        idescsi_scsi_t *scsi = drive->driver_data;
-       idescsi_ireason_reg_t ireason;
+       byte ireason;
 
        if (ide_wait_stat (drive,DRQ_STAT,BUSY_STAT,WAIT_READY)) {
                printk (KERN_ERR "ide-scsi: Strange, packet command initiated yet DRQ isn't asserted\n");
                return;
        }
-       ireason.all=IN_BYTE (IDE_IREASON_REG);
-       if (!ireason.b.cod || ireason.b.io) {
+       ireason = IN_BYTE (IDE_IREASON_REG);
+       if ((ireason & (IDESCSI_IREASON_IO | IDESCSI_IREASON_COD)) != IDESCSI_IREASON_COD) {
                printk (KERN_ERR "ide-scsi: (IO,CoD) != (0,1) while issuing a packet command\n");
                ide_do_reset (drive);
                return;
@@ -211,19 +326,28 @@ static void idescsi_transfer_pc (ide_drive_t *drive)
 static void idescsi_issue_pc (ide_drive_t *drive, idescsi_pc_t *pc)
 {
        idescsi_scsi_t *scsi = drive->driver_data;
-       idescsi_bcount_reg_t bcount;
+       int bcount;
+       struct request *rq = pc->rq;
+       int dma_ok = 0;
 
        scsi->pc=pc;                                                    /* Set the current packet command */
        pc->actually_transferred=0;                                     /* We haven't transferred any data yet */
        pc->current_position=pc->buffer;
-       bcount.all = IDE_MIN (pc->request_transfer, 63 * 1024);         /* Request to transfer the entire buffer at once */
+       bcount = IDE_MIN (pc->request_transfer, 63 * 1024);             /* Request to transfer the entire buffer at once */
+
+       if (drive->using_dma && rq->bh)
+               dma_ok=!HWIF(drive)->dmaproc(test_bit (PC_WRITING, &pc->flags) ? ide_dma_write : ide_dma_read, drive);
 
        OUT_BYTE (drive->ctl,IDE_CONTROL_REG);
-       OUT_BYTE (0,IDE_FEATURE_REG);
-       OUT_BYTE (bcount.b.high,IDE_BCOUNTH_REG);
-       OUT_BYTE (bcount.b.low,IDE_BCOUNTL_REG);
+       OUT_BYTE (dma_ok,IDE_FEATURE_REG);
+       OUT_BYTE (bcount >> 8,IDE_BCOUNTH_REG);
+       OUT_BYTE (bcount & 0xff,IDE_BCOUNTL_REG);
        OUT_BYTE (drive->select.all,IDE_SELECT_REG);
 
+       if (dma_ok) {
+               set_bit (PC_DMA_IN_PROGRESS, &pc->flags);
+               (void) (HWIF(drive)->dmaproc(ide_dma_begin, drive));
+       }
        if (test_bit (IDESCSI_DRQ_INTERRUPT, &scsi->flags)) {
                ide_set_handler (drive, &idescsi_transfer_pc, WAIT_CMD);
                OUT_BYTE (WIN_PACKETCMD, IDE_COMMAND_REG);              /* Issue the packet command */
@@ -304,7 +428,7 @@ static ide_module_t idescsi_module = {
 static ide_driver_t idescsi_driver = {
        ide_scsi,               /* media */
        0,                      /* busy */
-       0,                      /* supports_dma */
+       1,                      /* supports_dma */
        0,                      /* supports_dsc_overlap */
        idescsi_cleanup,        /* cleanup */
        idescsi_do_request,     /* do_request */
@@ -389,23 +513,74 @@ const char *idescsi_info (struct Scsi_Host *host)
        return "SCSI host adapter emulation for IDE ATAPI devices";
 }
 
-/*
- *     Most of the SCSI commands are supported directly by ATAPI devices.
- *     idescsi_transform_pc handles the few exceptions.
- */
-static inline void idescsi_transform_pc (ide_drive_t *drive, idescsi_pc_t *pc)
+static inline struct buffer_head *idescsi_kmalloc_bh (int count)
 {
-       if (drive->media == ide_cdrom) {
-               if (pc->c[0] == READ_6) {
-                       pc->c[8] = pc->c[4];
-                       pc->c[5] = pc->c[3];
-                       pc->c[4] = pc->c[2];
-                       pc->c[3] = pc->c[1] & 0x1f;
-                       pc->c[2] = 0;
-                       pc->c[1] &= 0xe0;
-                       pc->c[0] = READ_10;
+       struct buffer_head *bh, *bhp, *first_bh;
+
+       if ((first_bh = bhp = bh = kmalloc (sizeof(struct buffer_head), GFP_ATOMIC)) == NULL)
+               goto abort;
+       memset (bh, 0, sizeof (struct buffer_head));
+       bh->b_reqnext = NULL;
+       while (--count) {
+               if ((bh = kmalloc (sizeof(struct buffer_head), GFP_ATOMIC)) == NULL)
+                       goto abort;
+               memset (bh, 0, sizeof (struct buffer_head));
+               bhp->b_reqnext = bh;
+               bhp = bh;
+               bh->b_reqnext = NULL;
+       }
+       return first_bh;
+abort:
+       idescsi_free_bh (first_bh);
+       return NULL;
+}
+
+static inline int idescsi_set_direction (idescsi_pc_t *pc)
+{
+       switch (pc->c[0]) {
+               case READ_6: case READ_10: case READ_12:
+                       clear_bit (PC_WRITING, &pc->flags);
+                       return 0;
+               case WRITE_6: case WRITE_10: case WRITE_12:
+                       set_bit (PC_WRITING, &pc->flags);
+                       return 0;
+               default:
+                       return 1;
+       }
+}
+
+static inline struct buffer_head *idescsi_dma_bh (ide_drive_t *drive, idescsi_pc_t *pc)
+{
+       struct buffer_head *bh = NULL, *first_bh = NULL;
+       int segments = pc->scsi_cmd->use_sg;
+       struct scatterlist *sg = pc->scsi_cmd->request_buffer;
+
+       if (!drive->using_dma || pc->request_transfer % 1024)
+               return NULL;
+       if (idescsi_set_direction(pc))
+               return NULL;
+       if (segments) {
+               if ((first_bh = bh = idescsi_kmalloc_bh (segments)) == NULL)
+                       return NULL;
+#if IDESCSI_DEBUG_LOG
+               printk ("ide-scsi: %s: building DMA table, %d segments, %dkB total\n", drive->name, segments, pc->request_transfer >> 10);
+#endif /* IDESCSI_DEBUG_LOG */
+               while (segments--) {
+                       bh->b_data = sg->address;
+                       bh->b_size = sg->length;
+                       bh = bh->b_reqnext;
+                       sg++;
                }
+       } else {
+               if ((first_bh = bh = idescsi_kmalloc_bh (1)) == NULL)
+                       return NULL;
+#if IDESCSI_DEBUG_LOG
+               printk ("ide-scsi: %s: building DMA table for a single buffer (%dkB)\n", drive->name, pc->request_transfer >> 10);
+#endif /* IDESCSI_DEBUG_LOG */
+               bh->b_data = pc->scsi_cmd->request_buffer;
+               bh->b_size = pc->request_transfer;
        }
+       return first_bh;
 }
 
 int idescsi_queue (Scsi_Cmnd *cmd, void (*done)(Scsi_Cmnd *))
@@ -430,16 +605,25 @@ int idescsi_queue (Scsi_Cmnd *cmd, void (*done)(Scsi_Cmnd *))
        }
 
        memset (pc->c, 0, 12);
+       pc->flags = 0;
        pc->rq = rq;
        memcpy (pc->c, cmd->cmnd, cmd->cmd_len);
-       pc->buffer = cmd->request_buffer;
+       if (cmd->use_sg) {
+               pc->buffer = NULL;
+               pc->sg = cmd->request_buffer;
+       } else {
+               pc->buffer = cmd->request_buffer;
+               pc->sg = NULL;
+       }
+       pc->b_count = 0;
        pc->request_transfer = pc->buffer_size = cmd->request_bufflen;
        pc->scsi_cmd = cmd;
        pc->done = done;
-       idescsi_transform_pc (drive, pc);
+       idescsi_transform_pc1 (drive, pc);
 
        ide_init_drive_cmd (rq);
        rq->buffer = (char *) pc;
+       rq->bh = idescsi_dma_bh (drive, pc);
        rq->cmd = IDESCSI_PC_RQ;
        (void) ide_do_drive_cmd (drive, rq, ide_end);
        return 0;
@@ -481,7 +665,7 @@ void cleanup_module (void)
        scsi_unregister_module (MODULE_SCSI_HA, &idescsi_template);
        for (i = 0; media[i] != 255; i++) {
                failed = 0;
-               while ((drive = ide_scan_devices (media[i], &idescsi_driver, failed++)) != NULL)
+               while ((drive = ide_scan_devices (media[i], &idescsi_driver, failed)) != NULL)
                        if (idescsi_cleanup (drive)) {
                                printk ("%s: cleanup_module() called while still busy\n", drive->name);
                                failed++;
index cc687fe374c1cda4e254f4f7f2c5bf7d51ca00a1..94edaa1fbce157d5cff4c8825161dd79661f705c 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * linux/drivers/scsi/ide-scsi.h
  *
- * Copyright (C) 1996 Gadi Oxman <gadio@netvision.net.il>
+ * Copyright (C) 1996, 1997 Gadi Oxman <gadio@netvision.net.il>
  */
 
 #ifndef IDESCSI_H
@@ -31,7 +31,7 @@ extern int idescsi_reset (Scsi_Cmnd *cmd, unsigned int resetflags);
        NULL,                   /* bios_param   */                      \
        10,                     /* can_queue    */                      \
        -1,                     /* this_id      */                      \
-       SG_NONE,                /* sg_tablesize */                      \
+       256,                    /* sg_tablesize */                      \
        5,                      /* cmd_per_lun  */                      \
        0,                      /* present      */                      \
        0,                      /* isa_dma      */                      \
index 6ff520979dd2d69b2d0435b456703bb4a9e5de44..d084923f11ea8edbdfc36a0e92e7a41a80903ef1 100644 (file)
  * will configure the driver for a TMC-8xx style controller using IRQ 15
  * with a base address of 0xC8000.
  *
- * -DFAST or -DFAST32 will use blind transfers where possible
- *
- * -DARBITRATE will cause the host adapter to arbitrate for the
+ * -DARBITRATE 
+ *      Will cause the host adapter to arbitrate for the
  *      bus for better SCSI-II compatibility, rather than just
  *      waiting for BUS FREE and then doing its thing.  Should
  *      let us do one command per Lun when I integrate my
  *      reorganization changes into the distribution sources.
  *
- * -DSLOW_HANDSHAKE will allow compatibility with broken devices that don't
+ * -DDEBUG
+ *      Will activate debug code.
+ *
+ * -DFAST or -DFAST32 
+ *      Will use blind transfers where possible
+ *
+ * -DPARITY  
+ *      This will enable parity.
+ *
+ * -DSEAGATE_USE_ASM
+ *      Will use older seagate assembly code. should be (very small amount)
+ *      Faster.
+ *
+ * -DSLOW_HANDSHAKE
+ *      Will allow compatibility with broken devices that don't
  *      handshake fast enough (ie, some CD ROM's) for the Seagate
  *      code.
  *
- * -DSLOW_RATE=x, x some number will let you specify a default
+ * -DSLOW_RATE=x
+ *      x is some number, It will let you specify a default
  *      transfer rate if handshaking isn't working correctly.
+ *
+ * The following to options are patches from the SCSI.HOWTO
+ *
+ * -DSWAPSTAT  This will swap the definitions for STAT_MSG and STAT_CD.
+ *
+ * -DSWAPCNTDATA  This will swap the order that seagate.c messes with
+ *                the CONTROL an DATA registers.
  */
 
 #include <linux/module.h>
@@ -396,8 +417,8 @@ int seagate_st0x_detect (Scsi_Host_Template * tpnt)
 #ifdef ARBITRATE
             " ARBITRATE"
 #endif
-#ifdef SLOW_HANDSHAKE
-            " SLOW_HANDSHAKE"
+#ifdef DEBUG
+            " DEBUG"
 #endif
 #ifdef FAST
 #ifdef FAST32
@@ -408,6 +429,21 @@ int seagate_st0x_detect (Scsi_Host_Template * tpnt)
 #endif
 #ifdef LINKED
             " LINKED"
+#endif
+#ifdef PARITY
+            " PARITY"
+#endif
+#ifdef SEAGATE_USE_ASM
+            " SEAGATE_USE_ASM"
+#endif
+#ifdef SLOW_HANDSHAKE
+            " SLOW_HANDSHAKE"
+#endif
+#ifdef SWAPSTAT
+            " SWAPSTAT"
+#endif
+#ifdef SWAPCNTDATA
+            " SWAPCNTDATA"
 #endif
             "\n", tpnt->name);
     return 1;
@@ -926,12 +962,21 @@ static int internal_command (unsigned char target, unsigned char lun,
  *    try this with a SCSI protocol or logic analyzer to see what is
  *    going on.
  */
+#ifdef SWAPCNTDATA
+       cli();
+      WRITE_CONTROL (BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
+                     (reselect ? CMD_ATTN : 0));
+      WRITE_DATA ((unsigned char) ((1 << target) |
+                               (controller_type == SEAGATE ? 0x80 : 0x40)));
+       sti();
+#else
       cli ();
       WRITE_DATA ((unsigned char) ((1 << target) |
                                (controller_type == SEAGATE ? 0x80 : 0x40)));
       WRITE_CONTROL (BASE_CMD | CMD_DRVR_ENABLE | CMD_SEL |
                      (reselect ? CMD_ATTN : 0));
       sti ();
+#endif
       while (!((status_read = STATUS) & STAT_BSY) && (jiffies < clock)
              && !st0x_aborted)
 #if 0 && (DEBUG & PHASE_SELECTION)
index da18dbea9d25ca97c0bcce789264aec7ea03e5a6..e56b174e36843ba58e367b9386392ee453d02002 100644 (file)
@@ -37,14 +37,6 @@ int seagate_st0x_biosparam(Disk *, kdev_t, int*);
                         1, 7, SG_ALL, 1, 0, 0, DISABLE_CLUSTERING}
 #endif
 
-
-/*
-       defining PARITY causes parity data to be checked
-*/
-
-#define PARITY
-
-
 /*
        Thanks to Brian Antoine for the example code in his Messy-Loss ST-01
                driver, and Mitsugu Suzuki for information on the ST-01
@@ -67,11 +59,16 @@ int seagate_st0x_biosparam(Disk *, kdev_t, int*);
 /*
        STATUS
 */
+#ifdef SWAPSTAT
+       #define STAT_MSG                0x08
+       #define STAT_CD                 0x02
+#else
+       #define STAT_MSG                0x02
+       #define STAT_CD                 0x08
+#endif
 
 #define STAT_BSY               0x01
-#define STAT_MSG               0x02
 #define STAT_IO                        0x04
-#define STAT_CD                        0x08
 #define STAT_REQ               0x10
 #define STAT_SEL               0x20
 #define STAT_PARITY            0x40
index c9af466f893d0495ca7858188398e13fd48e6fba..c604a5533e13042f333dff9bd39c3cc2f7d0d705 100644 (file)
@@ -253,7 +253,7 @@ struct file_operations def_blk_fops = {
        NULL,           /* read */
        NULL,           /* write */
        NULL,           /* readdir */
-       NULL,           /* select */
+       NULL,           /* poll */
        NULL,           /* ioctl */
        NULL,           /* mmap */
        blkdev_open,    /* open */
@@ -306,7 +306,7 @@ struct file_operations def_chr_fops = {
        NULL,           /* read */
        NULL,           /* write */
        NULL,           /* readdir */
-       NULL,           /* select */
+       NULL,           /* poll */
        NULL,           /* ioctl */
        NULL,           /* mmap */
        chrdev_open,    /* open */
index ef4dd5226da1d8111cafd88b26b6904add69813d..31f8276b03d829effe625d3fb0ea935cc3843bba 100644 (file)
@@ -122,12 +122,11 @@ static int ext2_readlink (struct inode * inode, char * buffer, int buflen)
        }
        else
                link = (char *) inode->u.ext2_i.i_data;
-       
-       /* XXX I hope link is always '\0'-terminated. */        
-       i = strlen(link);
-       if (i >= buflen)
-               i = buflen-1;
-       if (copy_to_user(buffer, link, i+1))
+
+       i = 0;
+       while (i < buflen && link[i])
+               i++;
+       if (copy_to_user(buffer, link, i))
                i = -EFAULT;
        if (DO_UPDATE_ATIME(inode)) {
                inode->i_atime = CURRENT_TIME;
index d3415041bffe8223629d897b019decd24b3fe8a0..3d6d5c0b7ea965f424c566aa3432c58b585d9972 100644 (file)
@@ -40,6 +40,7 @@
 #include <linux/net.h>
 #include <linux/mm.h>
 #include <linux/rpcsock.h>
+#include <linux/poll.h>
 
 #include <linux/udp.h>
 #include <net/sock.h>
@@ -159,21 +160,20 @@ rpc_recvmsg(struct rpc_sock *rsock, struct iovec *iov,
 
 /*
  * This code is slightly complicated. Since the networking code does not
- * honor the current->timeout value, we have to select on the socket.
+ * honor the current->timeout value, we have to poll on the socket.
  */
 static inline int
 rpc_select(struct rpc_sock *rsock)
 {
-       struct select_table_entry entry;
+       struct poll_table_entry entry;
        struct file     *file = rsock->file;
-       select_table    wait_table;
+       poll_table      wait_table;
 
-       dprintk("RPC: selecting on socket...\n");
+       dprintk("RPC: polling socket...\n");
        wait_table.nr = 0;
        wait_table.entry = &entry;
        current->state = TASK_INTERRUPTIBLE;
-       if (!file->f_op->select(file->f_inode, file, SEL_IN, &wait_table)
-        && !file->f_op->select(file->f_inode, file, SEL_IN, NULL)) {
+       if (!(file->f_op->poll(file, &wait_table) & POLLIN)) {
                schedule();
                remove_wait_queue(entry.wait_address, &entry.wait);
                current->state = TASK_RUNNING;
index d43e604cdf48a7636eddd3d14ab1a410ea993c41..0196e0775d4e3466f8b431be9d6283477304aace 100644 (file)
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -12,6 +12,7 @@
 #include <linux/termios.h>
 #include <linux/mm.h>
 
+#include <asm/poll.h>
 #include <asm/uaccess.h>
 
 /*
@@ -159,57 +160,43 @@ static int pipe_ioctl(struct inode *pino, struct file * filp,
        }
 }
 
-static int pipe_select(struct inode * inode, struct file * filp, int sel_type, select_table * wait)
+static unsigned int pipe_poll(struct file * filp, poll_table * wait)
 {
-       switch (sel_type) {
-               case SEL_IN:
-                       if (!PIPE_EMPTY(*inode) || !PIPE_WRITERS(*inode))
-                               return 1;
-                       select_wait(&PIPE_WAIT(*inode), wait);
-                       return 0;
-               case SEL_OUT:
-                       if (PIPE_EMPTY(*inode) || !PIPE_READERS(*inode))
-                               return 1;
-                       select_wait(&PIPE_WAIT(*inode), wait);
-                       return 0;
-               case SEL_EX:
-                       if (!PIPE_READERS(*inode) || !PIPE_WRITERS(*inode))
-                               return 1;
-                       select_wait(&inode->i_wait,wait);
-                       return 0;
-       }
-       return 0;
+       unsigned int mask;
+       struct inode * inode = filp->f_inode;
+
+       poll_wait(&PIPE_WAIT(*inode), wait);
+       mask = POLLIN | POLLRDNORM;
+       if (PIPE_EMPTY(*inode))
+               mask = POLLOUT | POLLWRNORM;
+       if (!PIPE_WRITERS(*inode))
+               mask |= POLLHUP;
+       if (!PIPE_READERS(*inode))
+               mask |= POLLERR;
+       return mask;
 }
 
 #ifdef FIFO_SUNOS_BRAINDAMAGE
 /*
  * Arggh. Why does SunOS have to have different select() behaviour
- * for pipes and fifos? Hate-Hate-Hate. See difference in SEL_IN..
+ * for pipes and fifos? Hate-Hate-Hate. SunOS lacks POLLHUP..
  */
-static int fifo_select(struct inode * inode, struct file * filp, int sel_type, select_table * wait)
+static unsigned int fifo_poll(struct file * filp, poll_table * wait)
 {
-       switch (sel_type) {
-               case SEL_IN:
-                       if (!PIPE_EMPTY(*inode))
-                               return 1;
-                       select_wait(&PIPE_WAIT(*inode), wait);
-                       return 0;
-               case SEL_OUT:
-                       if (!PIPE_FULL(*inode) || !PIPE_READERS(*inode))
-                               return 1;
-                       select_wait(&PIPE_WAIT(*inode), wait);
-                       return 0;
-               case SEL_EX:
-                       if (!PIPE_READERS(*inode) || !PIPE_WRITERS(*inode))
-                               return 1;
-                       select_wait(&inode->i_wait,wait);
-                       return 0;
-       }
-       return 0;
+       unsigned int mask;
+       struct inode * inode = filp->f_inode;
+
+       poll_wait(&PIPE_WAIT(*inode), wait);
+       mask = POLLIN | POLLRDNORM;
+       if (PIPE_EMPTY(*inode))
+               mask = POLLOUT | POLLWRNORM;
+       if (!PIPE_READERS(*inode))
+               mask |= POLLERR;
+       return mask;
 }
 #else
 
-#define fifo_select pipe_select
+#define fifo_poll pipe_poll
 
 #endif /* FIFO_SUNOS_BRAINDAMAGE */
 
@@ -227,31 +214,18 @@ static long connect_read(struct inode * inode, struct file * filp,
        return pipe_read(inode,filp,buf,count);
 }
 
-static int connect_select(struct inode * inode, struct file * filp, int sel_type, select_table * wait)
+static unsigned int connect_poll(struct file * filp, poll_table * wait)
 {
-       switch (sel_type) {
-               case SEL_IN:
-                       if (!PIPE_EMPTY(*inode)) {
-                               filp->f_op = &read_fifo_fops;
-                               return 1;
-                       }
-                       if (PIPE_WRITERS(*inode)) {
-                               filp->f_op = &read_fifo_fops;
-                       }
-                       select_wait(&PIPE_WAIT(*inode), wait);
-                       return 0;
-               case SEL_OUT:
-                       if (!PIPE_FULL(*inode))
-                               return 1;
-                       select_wait(&PIPE_WAIT(*inode), wait);
-                       return 0;
-               case SEL_EX:
-                       if (!PIPE_READERS(*inode) || !PIPE_WRITERS(*inode))
-                               return 1;
-                       select_wait(&inode->i_wait,wait);
-                       return 0;
+       struct inode * inode = filp->f_inode;
+
+       poll_wait(&PIPE_WAIT(*inode), wait);
+       if (!PIPE_EMPTY(*inode)) {
+               filp->f_op = &read_fifo_fops;
+               return POLLIN | POLLRDNORM;
        }
-       return 0;
+       if (PIPE_WRITERS(*inode))
+               filp->f_op = &read_fifo_fops;
+       return POLLOUT | POLLWRNORM;
 }
 
 static void pipe_read_release(struct inode * inode, struct file * filp)
@@ -305,7 +279,7 @@ struct file_operations connecting_fifo_fops = {
        connect_read,
        bad_pipe_w,
        NULL,           /* no readdir */
-       connect_select,
+       connect_poll,
        pipe_ioctl,
        NULL,           /* no mmap on pipes.. surprise */
        pipe_read_open,
@@ -318,7 +292,7 @@ struct file_operations read_fifo_fops = {
        pipe_read,
        bad_pipe_w,
        NULL,           /* no readdir */
-       fifo_select,
+       fifo_poll,
        pipe_ioctl,
        NULL,           /* no mmap on pipes.. surprise */
        pipe_read_open,
@@ -331,7 +305,7 @@ struct file_operations write_fifo_fops = {
        bad_pipe_r,
        pipe_write,
        NULL,           /* no readdir */
-       fifo_select,
+       fifo_poll,
        pipe_ioctl,
        NULL,           /* mmap */
        pipe_write_open,
@@ -344,7 +318,7 @@ struct file_operations rdwr_fifo_fops = {
        pipe_read,
        pipe_write,
        NULL,           /* no readdir */
-       fifo_select,
+       fifo_poll,
        pipe_ioctl,
        NULL,           /* mmap */
        pipe_rdwr_open,
@@ -357,7 +331,7 @@ struct file_operations read_pipe_fops = {
        pipe_read,
        bad_pipe_w,
        NULL,           /* no readdir */
-       pipe_select,
+       pipe_poll,
        pipe_ioctl,
        NULL,           /* no mmap on pipes.. surprise */
        pipe_read_open,
@@ -370,7 +344,7 @@ struct file_operations write_pipe_fops = {
        bad_pipe_r,
        pipe_write,
        NULL,           /* no readdir */
-       pipe_select,
+       pipe_poll,
        pipe_ioctl,
        NULL,           /* mmap */
        pipe_write_open,
@@ -383,7 +357,7 @@ struct file_operations rdwr_pipe_fops = {
        pipe_read,
        pipe_write,
        NULL,           /* no readdir */
-       pipe_select,
+       pipe_poll,
        pipe_ioctl,
        NULL,           /* mmap */
        pipe_rdwr_open,
index add112153990b98e7b6708320d876c91d3f3e076..26967690cb14523385c134cc6066b610cf951cb2 100644 (file)
@@ -9,6 +9,7 @@
 #include <linux/errno.h>
 #include <linux/sched.h>
 #include <linux/kernel.h>
+#include <linux/poll.h>
 
 #include <asm/uaccess.h>
 #include <asm/io.h>
@@ -34,13 +35,11 @@ static long kmsg_read(struct inode * inode, struct file * file,
        return sys_syslog(2,buf,count);
 }
 
-static int kmsg_select(struct inode *inode, struct file *file, int sel_type, select_table * wait)
+static unsigned int kmsg_poll(struct file *file, poll_table * wait)
 {
-       if (sel_type != SEL_IN)
-               return 0;
+       poll_wait(&log_wait, wait);
        if (log_size)
-               return 1;
-       select_wait(&log_wait, wait);
+               return POLLIN | POLLRDNORM;
        return 0;
 }
 
@@ -50,7 +49,7 @@ static struct file_operations proc_kmsg_operations = {
        kmsg_read,
        NULL,           /* kmsg_write */
        NULL,           /* kmsg_readdir */
-       kmsg_select,    /* kmsg_select */
+       kmsg_poll,      /* kmsg_poll */
        NULL,           /* kmsg_ioctl */
        NULL,           /* mmap */
        kmsg_open,
index 3d87796f011cdfa9e747be5845e1576394eb3b24..1528072f69b2bda4bd1d633a88c8a4d6788e0821 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * This file contains the procedures for the handling of select
+ * This file contains the procedures for the handling of select and poll
  *
  * Created for Linux based loosely upon Mathius Lattner's minix
  * patches by Peter MacDonald. Heavily edited by Linus.
 #include <linux/errno.h>
 #include <linux/personality.h>
 #include <linux/mm.h>
+#include <linux/malloc.h>
 
 #include <asm/uaccess.h>
 #include <asm/system.h>
+#include <asm/poll.h>
 
 #define ROUND_UP(x,y) (((x)+(y)-1)/(y))
+#define DEFAULT_POLLMASK (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM)
 
 /*
  * Ok, Peter made a complicated, but straightforward multiple_wait() function.
  * understand what I'm doing here, then you understand how the linux
  * sleep/wakeup mechanism works.
  *
- * Two very simple procedures, select_wait() and free_wait() make all the work.
- * select_wait() is an inline-function defined in <linux/sched.h>, as all select
- * functions have to call it to add an entry to the select table.
+ * Two very simple procedures, poll_wait() and free_wait() make all the work.
+ * poll_wait() is an inline-function defined in <linux/sched.h>, as all select/poll
+ * functions have to call it to add an entry to the poll table.
  */
 
 /*
- * I rewrote this again to make the select_table size variable, take some
+ * I rewrote this again to make the poll_table size variable, take some
  * more shortcuts, improve responsiveness, and remove another race that
  * Linus noticed.  -- jrs
  */
 
-static void free_wait(select_table * p)
+static void free_wait(poll_table * p)
 {
-       struct select_table_entry * entry = p->entry + p->nr;
+       struct poll_table_entry * entry = p->entry + p->nr;
 
        while (p->nr > 0) {
                p->nr--;
@@ -56,34 +59,6 @@ static void free_wait(select_table * p)
        }
 }
 
-/*
- * The check function checks the ready status of a file using the vfs layer.
- *
- * If the file was not ready we were added to its wait queue.  But in
- * case it became ready just after the check and just before it called
- * select_wait, we call it again, knowing we are already on its
- * wait queue this time.  The second call is not necessary if the
- * select_table is NULL indicating an earlier file check was ready
- * and we aren't going to sleep on the select_table.  -- jrs
- */
-
-static inline int __check(
-       int (*select) (struct inode *, struct file *, int, select_table *),
-       struct inode *inode,
-       struct file *file,
-       int flag,
-       select_table * wait)
-{
-       return select(inode, file, flag, wait) ||
-               (wait && select(inode, file, flag, NULL));
-}
-
-#define check(flag,wait,file) \
-(((file)->f_op && (file)->f_op->select) ? \
- __check((file)->f_op->select,(file)->f_inode,file,flag,wait) \
- : \
- (flag != SEL_EX))
-
 /*
  * Due to kernel stack usage, we use a _limited_ fd_set type here, and once
  * we really start supporting >256 file descriptors we'll probably have to
@@ -154,11 +129,15 @@ get_max:
 #define ISSET(i,m)     (((i)&*(m)) != 0)
 #define SET(i,m)       (*(m) |= (i))
 
+#define POLLIN_SET (POLLRDNORM | POLLRDBAND | POLLIN | POLLHUP | POLLERR)
+#define POLLOUT_SET (POLLWRBAND | POLLWRNORM | POLLOUT | POLLERR)
+#define POLLEX_SET (POLLPRI)
+
 static int do_select(int n, fd_set_buffer *fds)
 {
        int retval;
-       select_table wait_table, *wait;
-       struct select_table_entry *entry;
+       poll_table wait_table, *wait;
+       struct poll_table_entry *entry;
        int i;
 
        retval = max_select_fd(n, fds);
@@ -166,7 +145,8 @@ static int do_select(int n, fd_set_buffer *fds)
                goto out;
        n = retval;
        retval = -ENOMEM;
-       if(!(entry = (struct select_table_entry*) __get_free_page(GFP_KERNEL)))
+       entry = (struct poll_table_entry *) __get_free_page(GFP_KERNEL);
+       if (!entry)
                goto out;
        retval = 0;
        wait_table.nr = 0;
@@ -178,24 +158,30 @@ static int do_select(int n, fd_set_buffer *fds)
                for (i = 0 ; i < n ; i++,fd++) {
                        unsigned long bit = BIT(i);
                        unsigned long *in = MEM(i,fds->in);
-                       struct file * file = *fd;
 
-                       if (!file)
-                               continue;
-                       if (ISSET(bit,__IN(in)) && check(SEL_IN,wait,file)) {
-                               SET(bit, __RES_IN(in));
-                               retval++;
-                               wait = NULL;
-                       }
-                       if (ISSET(bit,__OUT(in)) && check(SEL_OUT,wait,file)) {
-                               SET(bit, __RES_OUT(in));
-                               retval++;
-                               wait = NULL;
-                       }
-                       if (ISSET(bit,__EX(in)) && check(SEL_EX,wait,file)) {
-                               SET(bit, __RES_EX(in));
-                               retval++;
-                               wait = NULL;
+                       if (bit & BITS(in)) {
+                               struct file * file = *fd;
+                               unsigned int mask = POLLNVAL;
+                               if (file) {
+                                       mask = DEFAULT_POLLMASK;
+                                       if (file->f_op && file->f_op->poll)
+                                               mask = file->f_op->poll(file, wait);
+                               }
+                               if ((mask & POLLIN_SET) && ISSET(bit, __IN(in))) {
+                                       SET(bit, __RES_IN(in));
+                                       retval++;
+                                       wait = NULL;
+                               }
+                               if ((mask & POLLOUT_SET) && ISSET(bit, __OUT(in))) {
+                                       SET(bit, __RES_OUT(in));
+                                       retval++;
+                                       wait = NULL;
+                               }
+                               if ((mask & POLLEX_SET) && ISSET(bit, __EX(in))) {
+                                       SET(bit, __RES_EX(in));
+                                       retval++;
+                                       wait = NULL;
+                               }
                        }
                }
                wait = NULL;
@@ -344,3 +330,95 @@ asmlinkage int sys_select(int n, fd_set *inp, fd_set *outp, fd_set *exp, struct
 out:
        return error;
 }
+
+static int do_poll(unsigned int nfds, struct pollfd *fds, poll_table *wait)
+{
+       int count;
+       struct file ** fd = current->files->fd;
+
+       count = 0;
+       for (;;) {
+               unsigned int j;
+               struct pollfd * fdpnt;
+
+               current->state = TASK_INTERRUPTIBLE;
+               for (fdpnt = fds, j = 0; j < nfds; j++, fdpnt++) {
+                       unsigned int i;
+                       unsigned int mask;
+                       struct file * file;
+
+                       mask = POLLNVAL;
+                       i = fdpnt->fd;
+                       if (i < NR_OPEN && (file = fd[i]) != NULL) {
+                               mask = DEFAULT_POLLMASK;
+                               if (file->f_op && file->f_op->poll)
+                                       mask = file->f_op->poll(file, wait);
+                               mask &= fdpnt->events | POLLERR | POLLHUP;
+                       }
+                       if (mask) {
+                               wait = NULL;
+                               count++;
+                       }
+                       fdpnt->revents = mask;
+               }
+
+               wait = NULL;
+               if (count || !current->timeout || (current->signal & ~current->blocked))
+                       break;
+               schedule();
+       }
+       current->state = TASK_RUNNING;
+       return count;
+}
+
+asmlinkage int sys_poll(struct pollfd * ufds, unsigned int nfds, int timeout)
+{
+        int i, count, fdcount;
+       struct pollfd * fds, *fds1;
+       poll_table wait_table;
+       struct poll_table_entry *entry;
+
+       if (nfds > NR_OPEN)
+               return -EINVAL;
+
+       entry = (struct poll_table_entry *) __get_free_page(GFP_KERNEL);
+       if (!entry)
+               return -ENOMEM;
+       fds = (struct pollfd *) kmalloc(nfds*sizeof(struct pollfd), GFP_KERNEL);
+       if (!fds) {
+               free_page((unsigned long) entry);
+               return -ENOMEM;
+       }
+
+       if (copy_from_user(fds, ufds, nfds*sizeof(struct pollfd))) {
+               free_page((unsigned long)entry);
+               kfree(fds);
+               return -EFAULT;
+       }
+
+       if (timeout < 0)
+               timeout = 0x7fffffff;
+       else if (timeout)
+               timeout = ((unsigned long)timeout*HZ+999)/1000+jiffies+1;
+       current->timeout = timeout;
+
+       count = 0;
+       wait_table.nr = 0;
+       wait_table.entry = entry;
+
+       fdcount = do_poll(nfds, fds, &wait_table);
+       current->timeout = 0;
+
+       free_wait(&wait_table);
+       free_page((unsigned long) entry);
+
+       /* OK, now copy the revents fields back to user space. */
+       fds1 = fds;
+       for(i=0; i < (int)nfds; i++, ufds++, fds++) {
+               __put_user(fds->revents, &ufds->revents);
+       }
+       kfree(fds1);
+       if (!fdcount && (current->signal & ~current->blocked))
+               fdcount = -EINTR;
+       return fdcount;
+}
diff --git a/include/asm-alpha/poll.h b/include/asm-alpha/poll.h
new file mode 100644 (file)
index 0000000..53bf7a3
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef __ALPHA_POLL_H
+#define __ALPHA_POLL_H
+
+#define POLLIN         1
+#define POLLPRI                2
+#define POLLOUT                4
+#define POLLERR                8
+#define POLLHUP                16
+#define POLLNVAL       32
+#define POLLRDNORM     64
+#define POLLRDBAND     128
+#define POLLWRNORM     256
+#define POLLWRBAND     512
+#define POLLMSG                1024
+
+struct pollfd {
+       int fd;
+       short events;
+       short revents;
+};
+
+#endif
index 3a33d8b6966e4c10ab5ecda7541d266c6b57d226..f8aea1e48cb7ef13fab36bd76ec16fa5007268f6 100644 (file)
@@ -1,54 +1,92 @@
 #ifndef _ALPHA_UNISTD_H
 #define _ALPHA_UNISTD_H
 
+#define __NR_osf_syscall         0     /* not implemented */
 #define __NR_exit                1
 #define __NR_fork                2
 #define __NR_read                3
 #define __NR_write               4
+#define __NR_osf_old_open        5     /* not implemented */
 #define __NR_close               6
 #define __NR_wait4               7
+#define __NR_osf_old_creat       8     /* not implemented */
 #define __NR_link                9
 #define __NR_unlink             10
+#define __NR_osf_execve                 11     /* not implemented */
 #define __NR_chdir              12
 #define __NR_fchdir             13
 #define __NR_mknod              14
 #define __NR_chmod              15
 #define __NR_chown              16
 #define __NR_brk                17
+#define __NR_osf_getfsstat      18     /* not implemented */
 #define __NR_lseek              19
 #define __NR_getxpid            20
+#define __NR_osf_mount          21
+#define __NR_osf_umount                 22
 #define __NR_setuid             23
 #define __NR_getxuid            24
+#define __NR_exec_with_loader   25     /* not implemented */
 #define __NR_ptrace             26
+#define __NR_osf_nrecvmsg       27     /* not implemented */
+#define __NR_osf_nsendmsg       28     /* not implemented */
+#define __NR_osf_nrecvfrom      29     /* not implemented */
+#define __NR_osf_naccept        30     /* not implemented */
+#define __NR_osf_ngetpeername   31     /* not implemented */
+#define __NR_osf_ngetsockname   32     /* not implemented */
 #define __NR_access             33
+#define __NR_osf_chflags        34     /* not implemented */
+#define __NR_osf_fchflags       35     /* not implemented */
 #define __NR_sync               36
 #define __NR_kill               37
+#define __NR_osf_old_stat       38     /* not implemented */
 #define __NR_setpgid            39
+#define __NR_osf_old_lstat      40     /* not implemented */
 #define __NR_dup                41
 #define __NR_pipe               42
+#define __NR_osf_set_program_attributes        43
+#define __NR_osf_profil                 44     /* not implemented */
 #define __NR_open               45
+#define __NR_osf_old_sigaction  46     /* not implemented */
 #define __NR_getxgid            47
+#define __NR_osf_sigprocmask    48
+#define __NR_osf_getlogin       49     /* not implemented */
+#define __NR_osf_setlogin       50     /* not implemented */
 #define __NR_acct               51
 #define __NR_sigpending                 52
+
 #define __NR_ioctl              54
+#define __NR_osf_reboot                 55     /* not implemented */
+#define __NR_osf_revoke                 56     /* not implemented */
 #define __NR_symlink            57
 #define __NR_readlink           58
 #define __NR_execve             59
 #define __NR_umask              60
 #define __NR_chroot             61
+#define __NR_osf_old_fstat      62     /* not implemented */
 #define __NR_getpgrp            63
 #define __NR_getpagesize        64
+#define __NR_osf_mremap                 65     /* not implemented */
+#define __NR_osf_vfork          66
 #define __NR_stat               67
 #define __NR_lstat              68
+#define __NR_osf_sbrk           69     /* not implemented */
+#define __NR_osf_sstk           70     /* not implemented */
 #define __NR_mmap               71     /* OSF/1 mmap is superset of Linux */
+#define __NR_osf_old_vadvise    72     /* not implemented */
 #define __NR_munmap             73
 #define __NR_mprotect           74
 #define __NR_madvise            75
 #define __NR_vhangup            76
+#define __NR_osf_kmodcall       77     /* not implemented */
+#define __NR_osf_mincore        78     /* not implemented */
 #define __NR_getgroups          79
 #define __NR_setgroups          80
+#define __NR_osf_old_getpgrp    81     /* not implemented */
 #define __NR_setpgrp            82     /* BSD alias for setpgid */
 #define __NR_setitimer          83
+#define __NR_osf_old_wait       84     /* not implemented */
+#define __NR_osf_table          85     /* not implemented */
 #define __NR_getitimer          86
 #define __NR_gethostname        87
 #define __NR_sethostname        88
@@ -57,6 +95,7 @@
 #define __NR_fstat              91
 #define __NR_fcntl              92
 #define __NR_select             93
+#define __NR_poll               94
 #define __NR_fsync              95
 #define __NR_setpriority        96
 #define __NR_socket             97
 #define __NR_bind              104
 #define __NR_setsockopt                105
 #define __NR_listen            106
+#define __NR_osf_plock         107     /* not implemented */
+#define __NR_osf_old_sigvec    108     /* not implemented */
+#define __NR_osf_old_sigblock  109     /* not implemented */
+#define __NR_osf_old_sigsetmask        110     /* not implemented */
 #define __NR_sigsuspend                111
+#define __NR_osf_sigstack      112     /* not implemented */
 #define __NR_recvmsg           113
 #define __NR_sendmsg           114
+#define __NR_osf_old_vtrace    115     /* not implemented */
 #define __NR_gettimeofday      116
 #define __NR_getrusage         117
 #define __NR_getsockopt                118
+
 #define __NR_readv             120
 #define __NR_writev            121
 #define __NR_settimeofday      122
 #define __NR_mkdir             136
 #define __NR_rmdir             137
 #define __NR_utimes            138
+#define __NR_osf_old_sigreturn 139     /* not implemented */
+#define __NR_osf_adjtime       140     /* not implemented */
 #define __NR_getpeername       141
+#define __NR_osf_gethostid     142     /* not implemented */
+#define __NR_osf_sethostid     143     /* not implemented */
 #define __NR_getrlimit         144
 #define __NR_setrlimit         145
+#define __NR_osf_old_killpg    146     /* not implemented */
 #define __NR_setsid            147
 #define __NR_quotactl          148
+#define __NR_osf_oldquota      149     /* not implemented */
 #define __NR_getsockname       150
+
+#define __NR_osf_pid_block     153     /* not implemented */
+#define __NR_osf_pid_unblock   154     /* not implemented */
+
 #define __NR_sigaction         156
+#define __NR_osf_sigwaitprim   157     /* not implemented */
+#define __NR_osf_nfssvc                158     /* not implemented */
+#define __NR_osf_getdirentries 159
+#define __NR_osf_statfs                160
+#define __NR_osf_fstatfs       161
+
+#define __NR_osf_asynch_daemon 163     /* not implemented */
+#define __NR_osf_getfh         164     /* not implemented */   
+#define __NR_osf_getdomainname 165
 #define __NR_setdomainname     166
+
+#define __NR_osf_exportfs      169     /* not implemented */
+
+#define __NR_osf_alt_plock     181     /* not implemented */
+
+#define __NR_osf_getmnt                184     /* not implemented */
+
+#define __NR_osf_alt_sigpending        187     /* not implemented */
+#define __NR_osf_alt_setsid    188     /* not implemented */
+
+#define __NR_osf_swapon                199
 #define __NR_msgctl            200
 #define __NR_msgget            201
 #define __NR_msgrcv            202
 #define __NR_semctl            204
 #define __NR_semget            205
 #define __NR_semop             206
+#define __NR_osf_utsname       207
+#define __NR_osf_lchown                208     /* not implemented */
+#define __NR_osf_shmat         209
 #define __NR_shmctl            210
 #define __NR_shmdt             211
 #define __NR_shmget            212
-
+#define __NR_osf_mvalid                213     /* not implemented */
+#define __NR_osf_getaddressconf        214     /* not implemented */
+#define __NR_osf_msleep                215     /* not implemented */
+#define __NR_osf_mwakeup       216     /* not implemented */
 #define __NR_msync             217
+#define __NR_osf_signal                218     /* not implemented */
+#define __NR_osf_utc_gettime   219     /* not implemented */
+#define __NR_osf_utc_adjtime   220     /* not implemented */
+
+#define __NR_osf_security      222     /* not implemented */
+#define __NR_osf_kloadcall     223     /* not implemented */
 
 #define __NR_getpgid           233
 #define __NR_getsid            234
-
+#define __NR_osf_sigaltstack   235     /* not implemented */
+#define __NR_osf_waitid                236     /* not implemented */
+#define __NR_osf_priocntlset   237     /* not implemented */
+#define __NR_osf_sigsendset    238     /* not implemented */
+#define __NR_osf_set_speculative       239     /* not implemented */
+#define __NR_osf_msfs_syscall  240     /* not implemented */
+#define __NR_osf_sysinfo       241
+#define __NR_osf_uadmin                242     /* not implemented */
+#define __NR_osf_fuser         243     /* not implemented */
+#define __NR_osf_proplist_syscall    244
+#define __NR_osf_ntp_adjtime   245     /* not implemented */
+#define __NR_osf_ntp_gettime   246     /* not implemented */
+#define __NR_osf_pathconf      247     /* not implemented */
+#define __NR_osf_fpathconf     248     /* not implemented */
+
+#define __NR_osf_uswitch       250     /* not implemented */
+#define __NR_osf_usleep_thread 251
+#define __NR_osf_audcntl       252     /* not implemented */
+#define __NR_osf_audgen                253     /* not implemented */
 #define __NR_sysfs             254
+#define __NR_osf_subsys_info   255     /* not implemented */
+#define __NR_osf_getsysinfo    256
+#define __NR_osf_setsysinfo    257
+#define __NR_osf_afs_syscall   258     /* not implemented */
+#define __NR_osf_swapctl       259     /* not implemented */
+#define __NR_osf_memcntl       260     /* not implemented */
+#define __NR_osf_fdatasync     261     /* not implemented */
+
 
 /*
  * Linux-specific system calls begin at 300
diff --git a/include/asm-i386/poll.h b/include/asm-i386/poll.h
new file mode 100644 (file)
index 0000000..e5feda7
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef __i386_POLL_H
+#define __i386_POLL_H
+
+/* These are specified by iBCS2 */
+#define POLLIN         0x0001
+#define POLLPRI                0x0002
+#define POLLOUT                0x0004
+#define POLLERR                0x0008
+#define POLLHUP                0x0010
+#define POLLNVAL       0x0020
+
+/* The rest seem to be more-or-less nonstandard. Check them! */
+#define POLLRDNORM     0x0040
+#define POLLRDBAND     0x0080
+#define POLLWRNORM     0x0100
+#define POLLWRBAND     0x0200
+#define POLLMSG                0x0400
+
+struct pollfd {
+       int fd;
+       short events;
+       short revents;
+};
+
+#endif
index 4241771752cfba776190ffe73ee3546738670646..b6cc81756febc84b67a0a6b49e30e51f358f6162 100644 (file)
 #define __NR_getresuid         165
 #define __NR_vm86              166
 #define __NR_query_module      167
+#define __NR_poll              168
 
 /* user-visible error numbers are in the range -1 - -122: see <asm-i386/errno.h> */
 
diff --git a/include/asm-sparc/poll.h b/include/asm-sparc/poll.h
new file mode 100644 (file)
index 0000000..4a7cbe6
--- /dev/null
@@ -0,0 +1,21 @@
+#ifndef __SPARC_POLL_H
+#define __SPARC_POLL_H
+
+#define POLLIN           1
+#define POLLPRI                  2
+#define POLLOUT                  4
+#define POLLERR                  8
+#define POLLHUP                 16
+#define POLLNVAL        32
+#define POLLRDNORM      64
+#define POLLWRNORM     POLLOUT
+#define POLLRDBAND     128
+#define POLLWRBAND     256
+
+struct pollfd {
+       int fd;
+       short events;
+       short revents;
+};
+
+#endif
index 201bcac5375d112ebeb8fc1d65fb3ebb19738474..b887ce1523186d39d069048d087f23f27b78d0b5 100644 (file)
@@ -463,7 +463,7 @@ struct file_operations {
        long (*read) (struct inode *, struct file *, char *, unsigned long);
        long (*write) (struct inode *, struct file *, const char *, unsigned long);
        int (*readdir) (struct inode *, struct file *, void *, filldir_t);
-       int (*select) (struct inode *, struct file *, int, select_table *);
+       unsigned int (*poll) (struct file *, poll_table *);
        int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);
        int (*mmap) (struct inode *, struct file *, struct vm_area_struct *);
        int (*open) (struct inode *, struct file *);
index df2f58498845f54fcec51b17b61937548afdb485..260dc8ac52f65b509529210d96a15ede100e0858 100644 (file)
@@ -93,8 +93,7 @@ struct proto_ops {
                         int flags);
   int  (*getname)      (struct socket *sock, struct sockaddr *uaddr,
                         int *usockaddr_len, int peer);
-  int  (*select)       (struct socket *sock, int sel_type,
-                        select_table *wait);
+  unsigned int (*poll) (struct socket *sock, poll_table *wait);
   int  (*ioctl)        (struct socket *sock, unsigned int cmd,
                         unsigned long arg);
   int  (*listen)       (struct socket *sock, int len);
index b92191a3dca6c43e77739b374bf7459133a69144..37aeb1f84128df5af92ee55471f41fbe6ce5db21 100644 (file)
 #define PCI_VENDOR_ID_CT               0x102c
 #define PCI_DEVICE_ID_CT_65545         0x00d8
 #define PCI_DEVICE_ID_CT_65548         0x00dc
+#define PCI_DEVICE_ID_CT_65550         0x00e0
 
 #define PCI_VENDOR_ID_MIRO             0x1031
 #define PCI_DEVICE_ID_MIRO_36050       0x5601
diff --git a/include/linux/poll.h b/include/linux/poll.h
new file mode 100644 (file)
index 0000000..2001fed
--- /dev/null
@@ -0,0 +1 @@
+#include <asm/poll.h>
index 28d32372cad783d84346f664ad6d43e45debe639..4fe6eece3cf830b5da6a046f41b6d632238b354b 100644 (file)
@@ -445,13 +445,13 @@ extern inline void remove_wait_queue(struct wait_queue ** p, struct wait_queue *
        restore_flags(flags);
 }
 
-extern inline void select_wait(struct wait_queue ** wait_address, select_table * p)
+extern inline void poll_wait(struct wait_queue ** wait_address, poll_table * p)
 {
-       struct select_table_entry * entry;
+       struct poll_table_entry * entry;
 
        if (!p || !wait_address)
                return;
-       if (p->nr >= __MAX_SELECT_TABLE_ENTRIES)
+       if (p->nr >= __MAX_POLL_TABLE_ENTRIES)
                return;
        entry = p->entry + p->nr;
        entry->wait_address = wait_address;
index 0998a97414653fcf5f89cc9faaca0f84fbc466e8..cd9a1fe628774fa5a95b19c6609d3e01299b0bf7 100644 (file)
@@ -545,7 +545,7 @@ extern __inline__ void skb_orphan(struct sk_buff *skb)
 
 extern struct sk_buff *                skb_realloc_headroom(struct sk_buff *skb, int newheadroom);
 extern struct sk_buff *                skb_recv_datagram(struct sock *sk,unsigned flags,int noblock, int *err);
-extern int                     datagram_select(struct socket *sock, int sel_type, select_table *wait);
+extern unsigned int            datagram_poll(struct socket *sock, poll_table *wait);
 extern int                     skb_copy_datagram(struct sk_buff *from, int offset, char *to,int size);
 extern int                     skb_copy_datagram_iovec(struct sk_buff *from, int offset, struct iovec *to,int size);
 extern void                    skb_free_datagram(struct sock * sk, struct sk_buff *skb);
index 05a33261d1bc47fa93ca46490c040507397893d2..8d69c54619538440358cce6453e1e35d156f1228 100644 (file)
@@ -119,9 +119,7 @@ struct tty_ldisc {
        int     (*ioctl)(struct tty_struct * tty, struct file * file,
                         unsigned int cmd, unsigned long arg);
        void    (*set_termios)(struct tty_struct *tty, struct termios * old);
-       int     (*select)(struct tty_struct * tty, struct inode * inode,
-                         struct file * file, int sel_type,
-                         struct select_table_struct *wait);
+       unsigned int (*poll)(struct tty_struct *, struct file *, poll_table *);
        
        /*
         * The following routines are called from below.
index be24fa2423a801f07c2f6d4043871947a07a3e90..0a0d11fc9b69389f1dfa401a20958db3b96f0676 100644 (file)
@@ -28,17 +28,17 @@ static inline int waitqueue_active(struct wait_queue **q)
        return head && head != WAIT_QUEUE_HEAD(q);
 }
 
-struct select_table_entry {
+struct poll_table_entry {
        struct wait_queue wait;
        struct wait_queue ** wait_address;
 };
 
-typedef struct select_table_struct {
+typedef struct poll_table_struct {
        unsigned int nr;
-       struct select_table_entry * entry;
-} select_table;
+       struct poll_table_entry * entry;
+} poll_table;
 
-#define __MAX_SELECT_TABLE_ENTRIES (PAGE_SIZE / sizeof (struct select_table_entry))
+#define __MAX_POLL_TABLE_ENTRIES (PAGE_SIZE / sizeof (struct poll_table_entry))
 
 #endif /* __KERNEL__ */
 
index bf9adea02dba9fe557dfbd8adcb9bf333f74ee66..7cdef71299b7fe3e3e306092a937f9215dff53a9 100644 (file)
@@ -31,8 +31,7 @@ extern int                    inet_sendmsg(struct socket *sock,
                                             struct msghdr *msg, 
                                             int size, struct scm_cookie *scm);
 extern int                     inet_shutdown(struct socket *sock, int how);
-extern int                     inet_select(struct socket *sock, int sel_type,
-                                           select_table *wait);
+extern unsigned int            inet_poll(struct socket *sock, poll_table *wait);
 extern int                     inet_setsockopt(struct socket *sock, int level,
                                                int optname, char *optval, 
                                                int optlen);
index 15104ef81f813d480053ffc8daa61570875b8d11..0ab3beae3c64663356859f57f885a73b2277720c 100644 (file)
@@ -531,8 +531,7 @@ struct proto
        void                    (*write_wakeup)(struct sock *sk);
        void                    (*read_wakeup)(struct sock *sk);
 
-       int                     (*select)(struct socket *sock, int which,
-                                         select_table *wait);
+       unsigned int            (*poll)(struct socket *sock, poll_table *wait);
 
        int                     (*ioctl)(struct sock *sk, int cmd,
                                         unsigned long arg);
index ab8d0c3c91f4dabaeabacdbd4244eb3f76bd4b7e..3bb395e50451533bc63709abecc0f25253730810 100644 (file)
@@ -265,8 +265,7 @@ extern int                  tcp_rcv_established(struct sock *sk,
 extern void                    tcp_close(struct sock *sk, 
                                          unsigned long timeout);
 extern struct sock *           tcp_accept(struct sock *sk, int flags);
-extern int                     tcp_select(struct socket *sock, int sel_type, 
-                                          select_table *wait);
+extern unsigned int            tcp_poll(struct socket *sock, poll_table *wait);
 extern int                     tcp_getsockopt(struct sock *sk, int level, 
                                               int optname, char *optval, 
                                               int *optlen);
index 51c094484a5e16bb2c349778ee057565627bb685..ce4f82da89f7cb5a38bee12270fe554ddb36cb29 100644 (file)
@@ -59,7 +59,7 @@ struct file_operations proc_sys_file_operations =
        proc_readsys,   /* read    */
        proc_writesys,  /* write   */
        NULL,           /* readdir */
-       NULL,           /* select  */
+       NULL,           /* poll    */
        NULL,           /* ioctl   */
        NULL,           /* mmap    */
        NULL,           /* no special open code    */
index 35af151aea945fef0f8efd0e1812bd325474c27b..64308bb04c490c99cfa973d044eb386e7a7e683c 100644 (file)
@@ -3,17 +3,17 @@
  *
  *     Generic datagram handling routines. These are generic for all protocols. Possibly a generic IP version on top
  *     of these would make sense. Not tonight however 8-).
- *     This is used because UDP, RAW, PACKET, DDP, IPX, AX.25 and NetROM layer all have identical select code and mostly
- *     identical recvmsg() code. So we share it here. The select was shared before but buried in udp.c so I moved it.
+ *     This is used because UDP, RAW, PACKET, DDP, IPX, AX.25 and NetROM layer all have identical poll code and mostly
+ *     identical recvmsg() code. So we share it here. The poll was shared before but buried in udp.c so I moved it.
  *
- *     Authors:        Alan Cox <alan@cymru.net>. (datagram_select() from old udp.c code)
+ *     Authors:        Alan Cox <alan@cymru.net>. (datagram_poll() from old udp.c code)
  *
  *     Fixes:
  *             Alan Cox        :       NULL return from skb_peek_copy() understood
  *             Alan Cox        :       Rewrote skb_read_datagram to avoid the skb_peek_copy stuff.
  *             Alan Cox        :       Added support for SOCK_SEQPACKET. IPX can no longer use the SO_TYPE hack but
  *                                     AX.25 now works right, and SPX is feasible.
- *             Alan Cox        :       Fixed write select of non IP protocol crash.
+ *             Alan Cox        :       Fixed write poll of non IP protocol crash.
  *             Florian  La Roche:      Changed for my new skbuff handling.
  *             Darryl Miles    :       Fixed non-blocking SOCK_SEQPACKET.
  *             Linus Torvalds  :       BSD semantic fixes.
@@ -34,6 +34,8 @@
 #include <linux/sched.h>
 #include <linux/inet.h>
 #include <linux/netdevice.h>
+#include <linux/poll.h>
+
 #include <net/ip.h>
 #include <net/protocol.h>
 #include <net/route.h>
@@ -188,57 +190,48 @@ int skb_copy_datagram_iovec(struct sk_buff *skb, int offset, struct iovec *to,
 }
 
 /*
- *     Datagram select: Again totally generic. This also handles
+ *     Datagram poll: Again totally generic. This also handles
  *     sequenced packet sockets providing the socket receive queue
  *     is only ever holding data ready to receive.
  */
 
-int datagram_select(struct socket *sock, int sel_type, select_table *wait)
+unsigned int datagram_poll(struct socket *sock, poll_table *wait)
 {
        struct sock *sk = sock->sk;
+       unsigned int mask;
+
+       poll_wait(sk->sleep, wait);
+       mask = 0;
 
+       /* exceptional events? */
        if (sk->err)
-               return 1;
-       switch(sel_type)
-       {
-               case SEL_IN:
-                       if (sk->shutdown & RCV_SHUTDOWN)
-                               return 1;
-                       if (connection_based(sk) && sk->state==TCP_CLOSE)
-                       {
-                               /* Connection closed: Wake up */
-                               return 1;
-                       }
-                       if (!skb_queue_empty(&sk->receive_queue))
-                       {       /* This appears to be consistent
-                                  with other stacks */
-                               return 1;
-                       }
-                       break;
-
-               case SEL_OUT:
-                       if (sk->shutdown & SEND_SHUTDOWN)
-                               return 1;
-                       if (connection_based(sk) && sk->state==TCP_SYN_SENT)
-                       {
-                               /* Connection still in progress */
-                               break;
-                       }
-                       if (sk->prot && sock_wspace(sk) >= MIN_WRITE_SPACE)
-                       {
-                               return 1;
-                       }
-                       if (sk->prot==NULL && sk->sndbuf-sk->wmem_alloc >= MIN_WRITE_SPACE)
-                       {
-                               return 1;
-                       }
-                       break;
-
-               case SEL_EX:
-                       break;
+               mask |= POLLERR;
+       if (sk->shutdown & RCV_SHUTDOWN)
+               mask |= POLLHUP;
+
+       /* readable? */
+       if (!skb_queue_empty(&sk->receive_queue))
+               mask |= POLLIN | POLLRDNORM;
+
+       /* Connection-based need to check for termination and startup */
+       if (connection_based(sk)) {
+               if (sk->state==TCP_CLOSE)
+                       mask |= POLLHUP;
+               /* connection hasn't started yet? */
+               if (sk->state == TCP_SYN_SENT)
+                       return mask;
+       }
+
+       /* writable? */
+       if (!(sk->shutdown & SEND_SHUTDOWN)) {
+               if (sk->prot) {
+                       if (sock_wspace(sk) >= MIN_WRITE_SPACE)
+                               mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
+               } else {
+                       if (sk->sndbuf-sk->wmem_alloc >= MIN_WRITE_SPACE)
+                               mask |= POLLOUT | POLLWRNORM | POLLWRBAND;
+               }
        }
 
-       /* select failed.. */
-       select_wait(sk->sleep, wait);
-       return 0;
+       return mask;
 }
index ff390e6e33431a40d70492c98d8554c4ec10b377..1c67348014a314ba99e062a8c29a7945619cb0f6 100644 (file)
@@ -1188,13 +1188,13 @@ int inet_shutdown(struct socket *sock, int how)
 }
 
 
-int inet_select(struct socket *sock, int sel_type, select_table *wait)
+unsigned int inet_poll(struct socket *sock, poll_table *wait)
 {
        struct sock *sk = sock->sk;
 
-       if (sk->prot->select == NULL)
+       if (sk->prot->poll == NULL)
                return(0);
-       return sk->prot->select(sock, sel_type, wait);
+       return sk->prot->poll(sock, wait);
 }
 
 /*
@@ -1589,7 +1589,7 @@ struct proto_ops inet_stream_ops = {
        NULL,
        inet_accept,
        inet_getname, 
-       inet_select,
+       inet_poll,
        inet_ioctl,
        inet_listen,
        inet_shutdown,
@@ -1610,7 +1610,7 @@ struct proto_ops inet_dgram_ops = {
        NULL,
        NULL,
        inet_getname, 
-       datagram_select,
+       datagram_poll,
        inet_ioctl,
        NULL,
        inet_shutdown,
index d643ef950969598a12084af2b9247d5a89dabb5d..1d4df36f94cd3a16d8a21cc861de0a637904c527 100644 (file)
@@ -209,9 +209,9 @@ extern inline int port_match(unsigned short *portptr,int nports,unsigned short p
 int ip_fw_chk(struct iphdr *ip, struct device *rif, __u16 *redirport, struct ip_fw *chain, int policy, int mode)
 {
        struct ip_fw *f;
-       struct tcphdr           *tcp=(struct tcphdr *)((unsigned long *)ip+ip->ihl);
-       struct udphdr           *udp=(struct udphdr *)((unsigned long *)ip+ip->ihl);
-       struct icmphdr          *icmp=(struct icmphdr *)((unsigned long *)ip+ip->ihl);
+       struct tcphdr           *tcp=(struct tcphdr *)((__u32 *)ip+ip->ihl);
+       struct udphdr           *udp=(struct udphdr *)((__u32 *)ip+ip->ihl);
+       struct icmphdr          *icmp=(struct icmphdr *)((__u32 *)ip+ip->ihl);
        __u32                   src, dst;
        __u16                   src_port=0xFFFF, dst_port=0xFFFF, icmp_type=0xFF;
        unsigned short          f_prt=0, prt;
index 8187b20c8793b0c4426a5fd4e3c981a9bed73937..365a294664cf69bb21b24564aa4e4860b72644f0 100644 (file)
@@ -497,7 +497,7 @@ struct proto packet_prot =
        NULL,
        NULL,
        NULL,
-       datagram_select,
+       datagram_poll,
        NULL,                   /* No ioctl */
        packet_init,
        NULL,
index 69a2bd476ff7f84fd5808de4f318b4b0503892ed..279778f15f2e3fa1fc575e61c540debc2853f17e 100644 (file)
@@ -412,7 +412,7 @@ struct proto raw_prot = {
        NULL,
        NULL,
        NULL,
-       datagram_select,
+       datagram_poll,
 #ifdef CONFIG_IP_MROUTE        
        ipmr_ioctl,
 #else
index bfb3259f30016d0632c18aba8c125a074f6eeaa6..4e16792a8f90eee3fd6104caf53a580edae71ecb 100644 (file)
@@ -30,7 +30,7 @@
  *                                     socket was looked up backwards. Nobody
  *                                     tested any icmp error code obviously.
  *             Alan Cox        :       tcp_err() now handled properly. It
- *                                     wakes people on errors. select
+ *                                     wakes people on errors. poll
  *                                     behaves and the icmp error race
  *                                     has gone by moving it into sock.c
  *             Alan Cox        :       tcp_send_reset() fixed to work for
  *             Alan Cox        :       BSD accept semantics.
  *             Alan Cox        :       Reset on closedown bug.
  *     Peter De Schrijver      :       ENOTCONN check missing in tcp_sendto().
- *             Michael Pall    :       Handle select() after URG properly in
+ *             Michael Pall    :       Handle poll() after URG properly in
  *                                     all cases.
  *             Michael Pall    :       Undo the last fix in tcp_read_urg()
  *                                     (multi URG PUSH broke rlogin).
  *             Michael Pall    :       Fix the multi URG PUSH problem in
- *                                     tcp_readable(), select() after URG
+ *                                     tcp_readable(), poll() after URG
  *                                     works now.
  *             Michael Pall    :       recv(...,MSG_OOB) never blocks in the
  *                                     BSD api.
  *             Alan Cox        :       Reset tracing code.
  *             Alan Cox        :       Spurious resets on shutdown.
  *             Alan Cox        :       Giant 15 minute/60 second timer error
- *             Alan Cox        :       Small whoops in selecting before an
+ *             Alan Cox        :       Small whoops in polling before an
  *                                     accept.
  *             Alan Cox        :       Kept the state trace facility since
  *                                     it's handy for debugging.
  *                                     generates them.
  *             Alan Cox        :       Cache last socket.
  *             Alan Cox        :       Per route irtt.
- *             Matt Day        :       Select() match BSD precisely on error
+ *             Matt Day        :       poll()->select() match BSD precisely on error
  *             Alan Cox        :       New buffers
  *             Marc Tamsky     :       Various sk->prot->retransmits and
  *                                     sk->retransmits misupdating fixed.
 
 #include <linux/types.h>
 #include <linux/fcntl.h>
+#include <linux/poll.h>
 
 #include <net/icmp.h>
 #include <net/tcp.h>
@@ -573,9 +574,9 @@ static int tcp_readable(struct sock *sk)
                 * though there was normal data available. If we subtract
                 * the urg data right here, we even get it to work for more
                 * than one URG PUSH skb without normal data.
-                * This means that select() finally works now with urg data
+                * This means that poll() finally works now with urg data
                 * in the queue.  Note that rlogin was never affected
-                * because it doesn't use select(); it uses two processes
+                * because it doesn't use poll(); it uses two processes
                 * and a blocking read().  And the queue scan in tcp_read()
                 * was correct.  Mike <pall@rz.uni-karlsruhe.de>
                 */
@@ -597,81 +598,60 @@ static int tcp_readable(struct sock *sk)
 }
 
 /*
- * LISTEN is a special case for select..
+ * LISTEN is a special case for poll..
  */
-static int tcp_listen_select(struct sock *sk, int sel_type, select_table *wait)
+static unsigned int tcp_listen_poll(struct sock *sk, poll_table *wait)
 {
-       if (sel_type == SEL_IN) {
-               struct open_request *req;
+       struct open_request *req;
 
-               lock_sock(sk);
-               req = tcp_find_established(&sk->tp_pinfo.af_tcp);
-               release_sock(sk);
-               if (req)
-                       return 1;
-               select_wait(sk->sleep,wait);
-               return 0;
-       }
+       lock_sock(sk);
+       req = tcp_find_established(&sk->tp_pinfo.af_tcp);
+       release_sock(sk);
+       if (req)
+               return POLLIN | POLLRDNORM;
        return 0;
 }
 
 /*
  *     Wait for a TCP event.
  *
- *     Note that we don't need to lock the socket, as the upper select layers
+ *     Note that we don't need to lock the socket, as the upper poll layers
  *     take care of normal races (between the test and the event) and we don't
  *     go look at any of the socket buffers directly.
  */
-int tcp_select(struct socket *sock, int sel_type, select_table *wait)
+unsigned int tcp_poll(struct socket *sock, poll_table *wait)
 {
+       unsigned int mask;
        struct sock *sk = sock->sk;
        struct tcp_opt *tp = &(sk->tp_pinfo.af_tcp);
 
+       poll_wait(sk->sleep, wait);
        if (sk->state == TCP_LISTEN)
-               return tcp_listen_select(sk, sel_type, wait);
+               return tcp_listen_poll(sk, wait);
 
-       switch(sel_type) {
-       case SEL_IN:
-               if (sk->err)
-                       return 1;
-               if (sk->state == TCP_SYN_SENT || sk->state == TCP_SYN_RECV)
-                       break;
+       mask = 0;
+       if (sk->err)
+               mask = POLLERR;
+       /* connected ? */
+       if (sk->state != TCP_SYN_SENT && sk->state != TCP_SYN_RECV) {
 
                if (sk->shutdown & RCV_SHUTDOWN)
-                       return 1;
+                       mask |= POLLHUP;
                        
-               if (tp->rcv_nxt == sk->copied_seq)
-                       break;
-
-               if (sk->urg_seq != sk->copied_seq ||
-                   tp->rcv_nxt != sk->copied_seq+1 ||
-                   sk->urginline || !sk->urg_data)
-                       return 1;
-               break;
-
-       case SEL_OUT:
-               if (sk->err)
-                       return 1;
-               if (sk->shutdown & SEND_SHUTDOWN)
-                       return 0;
-               if (sk->state == TCP_SYN_SENT || sk->state == TCP_SYN_RECV)
-                       break;
-               /*
-                * This is now right thanks to a small fix
-                * by Matt Dillon.
-                */
+               if ((tp->rcv_nxt != sk->copied_seq) &&
+                   (sk->urg_seq != sk->copied_seq ||
+                    tp->rcv_nxt != sk->copied_seq+1 ||
+                    sk->urginline || !sk->urg_data))
+                       mask |= POLLIN | POLLRDNORM;
 
-               if (sock_wspace(sk) < sk->mtu+128+sk->prot->max_header)
-                       break;
-               return 1;
+               if (!(sk->shutdown & SEND_SHUTDOWN) &&
+                    (sock_wspace(sk) >= sk->mtu+128+sk->prot->max_header))
+                       mask |= POLLOUT | POLLWRNORM;
 
-       case SEL_EX:
                if (sk->urg_data)
-                       return 1;
-               break;
+                       mask |= POLLPRI;
        }
-       select_wait(sk->sleep, wait);
-       return 0;
+       return mask;
 }
 
 int tcp_ioctl(struct sock *sk, int cmd, unsigned long arg)
index 9e5a87e4248143118939d52b090b97eb1da3bdac..d63f3d5edf8891ca21cecd4da6b95934587c6dae 100644 (file)
@@ -1212,7 +1212,7 @@ struct proto tcp_prot = {
        NULL,
        tcp_write_wakeup,
        tcp_read_wakeup,
-       tcp_select,
+       tcp_poll,
        tcp_ioctl,
        tcp_v4_init_sock,
        tcp_v4_destroy_sock,
index 705c9dfe15d8b56d70ad3fe1ed92904bc0290fb7..cc124d3a07c570a2b224311e7458ec0a681448be 100644 (file)
@@ -851,7 +851,7 @@ struct proto udp_prot = {
        NULL,
        NULL,
        NULL,
-       datagram_select,
+       datagram_poll,
        udp_ioctl,
        NULL,
        NULL,
index 32421a42f61a9856bc5d56587aa1c6b6a38b548e..daf35f3b98f123d620f5857f7a54ca3202ddd087 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <net/netlink.h>
 
+#include <asm/poll.h>
 #include <asm/io.h>
 #include <asm/uaccess.h>
 #include <asm/system.h>
@@ -63,19 +64,16 @@ int netlink_donothing(int minor, struct sk_buff *skb)
        return -EINVAL;
 }
 
-static int netlink_select(struct inode *inode, struct file *file, int sel_type, select_table * wait)
+static unsigned int netlink_poll(struct file *file, poll_table * wait)
 {
-       unsigned int minor = MINOR(inode->i_rdev);
-       switch (sel_type) {
-       case SEL_IN:
-               if (skb_peek(&skb_queue_rd[minor])!=NULL)
-                       return 1;
-               select_wait(&read_space_wait[minor], wait);
-               break;
-       case SEL_OUT:
-               return 1;
-       }
-       return 0;
+       unsigned int mask;
+       unsigned int minor = MINOR(file->f_inode->i_rdev);
+
+       poll_wait(&read_space_wait[minor], wait);
+       mask = POLLOUT | POLLWRNORM;
+       if (skb_peek(&skb_queue_rd[minor]))
+               mask |= POLLIN | POLLRDNORM;
+       return mask;
 }
 
 /*
@@ -183,7 +181,7 @@ static struct file_operations netlink_fops = {
        netlink_read,
        netlink_write,
        NULL,           /* netlink_readdir */
-       netlink_select,
+       netlink_poll,
        netlink_ioctl,
        NULL,           /* netlink_mmap */
        netlink_open,
index 09bd3a9c44c17557ab0483d83df54d7e49515ebe..822ff0e25296043fd61148ec592bc295bfdf7083 100644 (file)
@@ -99,7 +99,7 @@ EXPORT_SYMBOL(skb_free_datagram);
 EXPORT_SYMBOL(skb_copy_datagram);
 EXPORT_SYMBOL(skb_copy_datagram_iovec);
 EXPORT_SYMBOL(skb_realloc_headroom);
-EXPORT_SYMBOL(datagram_select);
+EXPORT_SYMBOL(datagram_poll);
 
 /* Needed by smbfs.o */
 EXPORT_SYMBOL(__scm_destroy);
@@ -144,7 +144,7 @@ EXPORT_SYMBOL(inet_release);
 EXPORT_SYMBOL(inet_stream_connect);
 EXPORT_SYMBOL(inet_dgram_connect);
 EXPORT_SYMBOL(inet_accept);
-EXPORT_SYMBOL(inet_select);
+EXPORT_SYMBOL(inet_poll);
 EXPORT_SYMBOL(inet_listen);
 EXPORT_SYMBOL(inet_shutdown);
 EXPORT_SYMBOL(inet_setsockopt);
@@ -174,7 +174,7 @@ EXPORT_SYMBOL(tcp_close);
 EXPORT_SYMBOL(tcp_accept);
 EXPORT_SYMBOL(tcp_write_wakeup);
 EXPORT_SYMBOL(tcp_read_wakeup);
-EXPORT_SYMBOL(tcp_select);
+EXPORT_SYMBOL(tcp_poll);
 EXPORT_SYMBOL(tcp_ioctl);
 EXPORT_SYMBOL(tcp_shutdown);
 EXPORT_SYMBOL(tcp_setsockopt);
index bb2ca908819445b7320561c0dc6f00812669e121..42b202b9868c2546f2fc9435abd68bbe37b93cfe 100644 (file)
@@ -101,7 +101,7 @@ static long sock_write(struct inode *inode, struct file *file,
                       const char *buf, unsigned long size);
 
 static void sock_close(struct inode *inode, struct file *file);
-static int sock_select(struct inode *inode, struct file *file, int which, select_table *seltable);
+static unsigned int sock_poll(struct file *file, poll_table *wait);
 static int sock_ioctl(struct inode *inode, struct file *file,
                      unsigned int cmd, unsigned long arg);
 static int sock_fasync(struct inode *inode, struct file *filp, int on);
@@ -117,7 +117,7 @@ static struct file_operations socket_file_ops = {
        sock_read,
        sock_write,
        NULL,                   /* readdir */
-       sock_select,
+       sock_poll,
        sock_ioctl,
        NULL,                   /* mmap */
        NULL,                   /* no special open code... */
@@ -444,19 +444,19 @@ int sock_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
 }
 
 
-static int sock_select(struct inode *inode, struct file *file, int sel_type, select_table * wait)
+static unsigned int sock_poll(struct file *file, poll_table * wait)
 {
        struct socket *sock;
 
-       sock = socki_lookup(inode);
+       sock = socki_lookup(file->f_inode);
 
        /*
-        *      We can't return errors to select, so it's either yes or no. 
+        *      We can't return errors to poll, so it's either yes or no. 
         */
 
-       if (sock->ops->select)
-               return sock->ops->select(sock, sel_type, wait);
-       return(0);
+       if (sock->ops->poll)
+               return sock->ops->poll(sock, wait);
+       return 0;
 }
 
 
@@ -1249,7 +1249,7 @@ int sock_fcntl(struct file *filp, unsigned int cmd, unsigned long arg)
 /*
  *     System call vectors. Since I (RIB) want to rewrite sockets as streams,
  *     we have this level of indirection. Not a lot of overhead, since more of
- *     the work is done via read/write/select directly.
+ *     the work is done via read/write/poll directly.
  *
  *     I'm now expanding this up to a higher level to separate the assorted
  *     kernel/user space manipulations and global assumptions from the protocol
index 9490c29030b00cad3e8a2c1e097eda2d6ee3be98..c3bd7ffe5a3bc6a74ce57b46e6d2d0a248630cce 100644 (file)
@@ -1429,7 +1429,7 @@ struct proto_ops unix_stream_ops = {
        unix_socketpair,
        unix_accept,
        unix_getname,
-       datagram_select,
+       datagram_poll,
        unix_ioctl,
        unix_listen,
        unix_shutdown,
@@ -1450,7 +1450,7 @@ struct proto_ops unix_dgram_ops = {
        unix_socketpair,
        NULL,
        unix_getname,
-       datagram_select,
+       datagram_poll,
        unix_ioctl,
        NULL,
        unix_shutdown,