summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjdike <jdike>2003-12-19 20:42:07 +0000
committerjdike <jdike>2003-12-19 20:42:07 +0000
commitf9362ee44c163bf443426573ddcf5e597348c627 (patch)
tree76c0ce725f433bf8c0cf1e25ef90a0760cc66a32
parent7a324af8249ceb1048dbe7a98eac55e03ea29d71 (diff)
downloaduml-history-f9362ee44c163bf443426573ddcf5e597348c627.tar.gz
Updated to 2.4.23.
-rw-r--r--CREDITS36
-rw-r--r--Documentation/Configure.help1351
-rw-r--r--MAINTAINERS90
-rw-r--r--Makefile3
-rw-r--r--arch/um/defconfig51
-rw-r--r--arch/um/kernel/irq.c6
-rw-r--r--drivers/char/Makefile5
-rw-r--r--drivers/char/mem.c14
-rw-r--r--drivers/char/tty_io.c15
-rw-r--r--include/asm-i386/hardirq.h2
-rw-r--r--include/asm-um/archparam-i386.h4
-rw-r--r--include/linux/fs.h4
-rw-r--r--include/linux/mm.h6
-rw-r--r--init/do_mounts.c1
-rw-r--r--kernel/panic.c8
-rw-r--r--mm/mmap.c5
-rw-r--r--mm/mprotect.c2
-rw-r--r--mm/page_alloc.c170
-rw-r--r--mm/shmem.c70
19 files changed, 1551 insertions, 292 deletions
diff --git a/CREDITS b/CREDITS
index 9964253..55f41c6 100644
--- a/CREDITS
+++ b/CREDITS
@@ -1239,14 +1239,13 @@ S: Germany
N: Christoph Hellwig
E: hch@infradead.org
-E: hch@sgi.com
D: all kinds of driver, filesystem & core kernel hacking
D: freevxfs driver
D: sysvfs maintainer
D: chief codingstyle nitpicker
-S: Auweg 38
-S: 85748 Garching
-S: Germany
+S: Ampferstr. 50 / 4
+S: 6020 Innsbruck
+S: Austria
N: Richard Henderson
E: rth@twiddle.net
@@ -2209,6 +2208,15 @@ N. Wolfgang Muees
E: wolfgang@iksw-muees.de
D: Auerswald USB driver
+N: Paul Mundt
+E: lethal@linux-sh.org
+P: 1024D/917167DC 563C FC60 83BB A3EE D816 E60D D4AF AD78 9171 67DC
+D: Linux/SH and Linux/sh64
+D: Occasional MIPS hacker
+D: fbdev hacker
+S: Hamilton, Ontario
+S: Canada
+
N: Ian A. Murdock
E: imurdock@gnu.ai.mit.edu
D: Creator of Debian distribution
@@ -2583,6 +2591,13 @@ D: Lots of PowerPC cleanups, minor matroxfb work
S: Tucson, Arizona
S: USA
+N: Luca Risolia
+E: luca_ing@libero.it
+D: V4L driver for W996[87]CF JPEG USB Dual Mode Camera Chip
+S: Via Libertà 41/a
+S: Osio Sotto, 24046, Bergamo
+S: Italy
+
N: William E. Roadcap
E: roadcapw@cfw.com
W: http://www.cfw.com/~roadcapw
@@ -2712,7 +2727,7 @@ E: gt8134b@prism.gatech.edu
D: Dosemu
N: Duncan Sands
-E: duncan.sands@wanadoo.fr
+E: duncan.sands@free.fr
W: http://topo.math.u-psud.fr/~sands
D: Alcatel SpeedTouch USB driver
S: 69 rue Dunois
@@ -2968,12 +2983,11 @@ S: Santa Clara, California 95051
S: USA
N: Marcelo W. Tosatti
-E: marcelo@conectiva.com.br
-W: http://bazar.conectiva.com.br/~marcelo/
+E: marcelo.tosatti@cyclades.com
D: Miscellaneous kernel hacker (mostly VM/MM work)
-S: Conectiva S.A.
-S: R. Tocantins, 89 - Cristo Rei
-S: 80050-430 - Curitiba - Paraná
+D: 2.4 maintainer
+S: Av Cristovao Colombo, 462. Floresta.
+S: Porto Alegre
S: Brazil
N: Stefan Traby
@@ -3433,4 +3447,4 @@ S: France
# alphabetically. Leonard used to be very proud of being the
# last entry, and he'll get positively pissed if he can't even
# be second-to-last. (and this file really _is_ supposed to be
-# in alphabetic order)
+# in alphabetic order)
diff --git a/Documentation/Configure.help b/Documentation/Configure.help
index d17d25c..0249661 100644
--- a/Documentation/Configure.help
+++ b/Documentation/Configure.help
@@ -2,8 +2,6 @@
# Eric S. Raymond <mailto:esr@thyrsus.com>
# Steven Cole <mailto:elenstev@mesatop.com>
#
-# Version 3.01: current with 2.4.19+
-#
# Translations of this file available on the WWW:
#
# - Japanese, maintained by the JF Project <mailto:JF@linux.or.jp>, at
@@ -19,13 +17,6 @@
# - Catalan, by Antoni Bella <mailto:bella5@teleline.es>, at
# <http://www.terra.es/personal7/bella5/traduccions.htm>
#
-# To access a document on the WWW, you need to have a direct Internet
-# connection and a browser program such as netscape or lynx. If you
-# only have email access, you can still use FTP and WWW servers: send
-# an email to <mailto:mail-server@rtfm.mit.edu> with the text
-# send usenet/news.answers/internet-services/access-via-email
-# in the body of the message.
-#
# Information about what a kernel is, what it does, how to patch and
# compile it and much more is contained in the Kernel-HOWTO, available
# at <http://www.tldp.org/docs.html#howto>. Before you start
@@ -109,6 +100,15 @@ CONFIG_OBSOLETE
like MGA monitors that you are very unlikely to see on today's
systems.
+Prompt for advanced kernel configuration options
+CONFIG_ADVANCED_OPTIONS
+ This option will enable prompting for a variety of advanced kernel
+ configuration options. These options can cause the kernel to not
+ work if they are set incorrectly, but can be used to optimize certain
+ aspects of kernel memory management.
+
+ Unless you know what you are doing you *should not* enable this option.
+
Symmetric Multi-Processing support
CONFIG_SMP
This enables support for systems with more than one CPU. If you have
@@ -137,6 +137,15 @@ CONFIG_SMP
If you don't know what to do here, say N.
+Maximum number of CPUs
+CONFIG_NR_CPUS
+ This allows you to specify the maximum number of CPUs which this
+ kernel will support. The maximum supported value is 32 and the
+ mimimum value which makes sense is 2.
+
+ This is purely to save memory - each supported CPU adds
+ approximately eight kilobytes to the kernel image.
+
Intel or compatible 80x86 processor
CONFIG_X86
This is Linux's home port. Linux was originally native to the Intel
@@ -1141,6 +1150,15 @@ CONFIG_BLK_DEV_CMD64X
Say Y here if you have an IDE controller which uses any of these
chipsets: CMD643, CMD646 and CMD648.
+Compaq Triflex IDE support
+CONFIG_BLK_DEV_TRIFLEX
+ Say Y here if you have a Compaq Triflex IDE controller, such
+ as those commonly found on Compaq Pentium-Pro systems
+
+ If you want to compile it as a module, say M here and read
+ <file:Documentation/modules.txt>. The module will be called
+ triflex.o.
+
CY82C693 chipset support
CONFIG_BLK_DEV_CY82C693
This driver adds detection and support for the CY82C693 chipset
@@ -1210,11 +1228,26 @@ CONFIG_BLK_DEV_OPTI621
This is a driver for the OPTi 82C621 EIDE controller.
Please read the comments at the top of <file:drivers/ide/pci/opti621.c>.
+National SCx200 chipset support
+CONFIG_BLK_DEV_SC1200
+ This driver adds support for the built in IDE on the National
+ SCx200 series of embedded x86 "Geode" systems
+
+ If you want to compile it as a module, say M here and read
+ <file:Documentation/modules.txt>. The module will be called
+ sc1200.o.
+
ServerWorks OSB4/CSB5 chipset support
CONFIG_BLK_DEV_SVWKS
This driver adds PIO/(U)DMA support for the ServerWorks OSB4/CSB5
chipsets.
+SGI IOC4 chipset support
+CONFIG_BLK_DEV_SGIIOC4
+ This driver adds PIO & MultiMode DMA-2 support for the SGI IOC4
+ chipset. Please say Y here, if you have an Altix System from
+ Silicon Graphics Inc.
+
Intel PIIXn chipsets support
CONFIG_BLK_DEV_PIIX
This driver adds PIO mode setting and tuning for all PIIX IDE
@@ -1264,6 +1297,29 @@ CONFIG_BLK_DEV_PDC202XX_OLD
If unsure, say N.
+PROMISE PDC202{68|69|70|71|75|76|77} support
+CONFIG_BLK_DEV_PDC202XX_NEW
+ Promise Ultra 100 TX2 [PDC20268]
+ Promise Ultra 133 PTX2 [PDC20269]
+ Promise FastTrak LP/TX2/TX4 [PDC20270]
+ Promise FastTrak TX2000 [PDC20271]
+ Promise MB Ultra 133 [PDC20275]
+ Promise MB FastTrak 133 [PDC20276]
+ Promise FastTrak 133 [PDC20277]
+
+ This driver adds up to 4 more EIDE devices sharing a single
+ interrupt. This device is a bootable PCI UDMA controller. Since
+ multiple cards can be installed and there are BIOS ROM problems that
+ happen if the BIOS revisions of all installed cards (max of five) do
+ not match, the driver attempts to do dynamic tuning of the chipset
+ at boot-time for max speed. Ultra33 BIOS 1.25 or newer is required
+ for more than one card.
+
+ If you say Y here, you need to say Y to "Use DMA by default when
+ available" as well.
+
+ If unsure, say N.
+
Special UDMA Feature
CONFIG_PDC202XX_BURST
This option causes the pdc202xx driver to enable UDMA modes on the
@@ -2031,6 +2087,17 @@ CONFIG_ALGOR_P4032
The board uses the R4300 and a R5230 CPUs. For more information
about this board see <http://www.algor.co.uk/>.
+SGI SN2 L1 serial port support
+CONFIG_SGI_L1_SERIAL
+ If you have an SGI SN2 and you want to use the serial port connected
+ to the system controller (you want this!), say Y. Otherwise, say N.
+
+SGI SN2 L1 serial console support
+CONFIG_SGI_L1_SERIAL_CONSOLE
+ If you have an SGI SN2 and you would like to use the system
+ controller serial port as your console (you want this!), say Y.
+ Otherwise, say N.
+
Support for BAGET MIPS series
CONFIG_BAGET_MIPS
This enables support for the Baget, a Russian embedded system. For
@@ -3217,6 +3284,255 @@ CONFIG_IP6_NF_TARGET_LOG
If you want to compile it as a module, say M here and read
<file:Documentation/modules.txt>. If unsure, say `N'.
+IP: virtual server support
+CONFIG_IP_VS
+ IP Virtual Server support will let you build a high-performance
+ virtual server based on cluster of two or more real servers. This
+ option must be enabled for at least one of the clustered computers
+ that will take care of intercepting incomming connections to a
+ single IP address and scheduling them to real servers.
+
+ Three request dispatching techniques are implemented, they are
+ virtual server via NAT, virtual server via tunneling and virtual
+ server via direct routing. The several scheduling algorithms can
+ be used to choose which server the connection is directed to,
+ thus load balancing can be achieved among the servers. For more
+ information and its administration program, please visit the
+ following URL:
+ http://www.linuxvirtualserver.org/
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+IP virtual server debugging
+CONFIG_IP_VS_DEBUG
+ Say Y here if you want to get additional messages useful in
+ debugging the IP virtual server code. You can change the debug
+ level in /proc/sys/net/ipv4/vs/debug_level
+
+IPVS connection hash table size (the Nth power of 2)
+CONFIG_IP_VS_TAB_BITS
+ The IPVS connection hash table uses the chaining scheme to handle
+ hash collisions. Using a big IPVS connection hash table will greatly
+ reduce conflicts when there are hundreds of thousands of connections
+ in the hash table.
+
+ Note the table size must be power of 2. The table size will be the
+ value of 2 to the your input number power. The number to choose is
+ from 8 to 20, the default number is 12, which means the table size
+ is 4096. Don't input the number too small, otherwise you will lose
+ performance on it. You can adapt the table size yourself, according
+ to your virtual server application. It is good to set the table size
+ not far less than the number of connections per second multiplying
+ average lasting time of connection in the table. For example, your
+ virtual server gets 200 connections per second, the connection lasts
+ for 200 seconds in average in the connection table, the table size
+ should be not far less than 200x200, it is good to set the table
+ size 32768 (2**15).
+
+ Another note that each connection occupies 128 bytes effectively and
+ each hash entry uses 8 bytes, so you can estimate how much memory is
+ needed for your box.
+
+IPVS: round-robin scheduling
+CONFIG_IP_VS_RR
+ The robin-robin scheduling algorithm simply directs network
+ connections to different real servers in a round-robin manner.
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+IPVS: weighted round-robin scheduling
+CONFIG_IP_VS_WRR
+ The weighted robin-robin scheduling algorithm directs network
+ connections to different real servers based on server weights
+ in a round-robin manner. Servers with higher weights receive
+ new connections first than those with less weights, and servers
+ with higher weights get more connections than those with less
+ weights and servers with equal weights get equal connections.
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+IPVS: least-connection scheduling
+CONFIG_IP_VS_LC
+ The least-connection scheduling algorithm directs network
+ connections to the server with the least number of active
+ connections.
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+IPVS: weighted least-connection scheduling
+CONFIG_IP_VS_WLC
+ The weighted least-connection scheduling algorithm directs network
+ connections to the server with the least active connections
+ normalized by the server weight.
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+IPVS: locality-based least-connection scheduling
+CONFIG_IP_VS_LBLC
+ The locality-based least-connection scheduling algorithm is for
+ destination IP load balancing. It is usually used in cache cluster.
+ This algorithm usually directs packet destined for an IP address to
+ its server if the server is alive and under load. If the server is
+ overloaded (its active connection numbers is larger than its weight)
+ and there is a server in its half load, then allocate the weighted
+ least-connection server to this IP address.
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+IPVS: locality-based least-connection with replication scheduling
+CONFIG_IP_VS_LBLCR
+ The locality-based least-connection with replication scheduling
+ algorithm is also for destination IP load balancing. It is
+ usually used in cache cluster. It differs from the LBLC scheduling
+ as follows: the load balancer maintains mappings from a target
+ to a set of server nodes that can serve the target. Requests for
+ a target are assigned to the least-connection node in the target's
+ server set. If all the node in the server set are over loaded,
+ it picks up a least-connection node in the cluster and adds it
+ in the sever set for the target. If the server set has not been
+ modified for the specified time, the most loaded node is removed
+ from the server set, in order to avoid high degree of replication.
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+IPVS: destination hashing scheduling
+CONFIG_IP_VS_DH
+ The destination hashing scheduling algorithm assigns network
+ connections to the servers through looking up a statically assigned
+ hash table by their destination IP addresses.
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+IPVS: source hashing scheduling
+CONFIG_IP_VS_SH
+ The source hashing scheduling algorithm assigns network
+ connections to the servers through looking up a statically assigned
+ hash table by their source IP addresses.
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+IPVS: shortest expected delay scheduling
+CONFIG_IP_VS_SED
+ The shortest expected delay scheduling algorithm assigns network
+ connections to the server with the shortest expected delay. The
+ expected delay that the job will experience is (Ci + 1) / Ui if
+ sent to the ith server, in which Ci is the number of connections
+ on the the ith server and Ui is the fixed service rate (weight)
+ of the ith server.
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+IPVS: never queue scheduling
+CONFIG_IP_VS_NQ
+ The never queue scheduling algorithm adopts a two-speed model.
+ When there is an idle server available, the job will be sent to
+ the idle server, instead of waiting for a fast one. When there
+ is no idle server available, the job will be sent to the server
+ that minimize its expected delay (The Shortest Expected Delay
+ scheduling algorithm).
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+IPVS: FTP protocol helper
+CONFIG_IP_VS_FTP
+ FTP is a protocol that transfers IP address and/or port number in
+ the payload. In the virtual server via Network Address Translation,
+ the IP address and port number of real servers cannot be sent to
+ clients in ftp connections directly, so FTP protocol helper is
+ required for tracking the connection and mangling it back to that of
+ virtual service.
+
+ If you want to compile it in kernel, say Y. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt. If
+ unsure, say N.
+
+AH/ESP match support (EXPERIMENTAL)
+CONFIG_IP6_NF_MATCH_AHESP
+ This module allows one to match AH and ESP packets.
+
+ If you want to compile it as a module, say M here and read
+ <file:Documentation/modules.txt>. The modules will be called
+ ip6t_ah.o and ip6t_esp.o.
+
+ If unsure, say 'N'.
+
+Routing header match support
+CONFIG_IP6_NF_MATCH_RT
+ rt matching allows you to match packets based on the routing
+ header of the packet.
+
+ If you want to compile it as a module, say M here and read
+ <file:Documentation/modules.txt>. The module will be called
+ ip6t_rt.o.
+
+ If unsure, say 'N'.
+
+Hop-by-hop and Dst opts header match support
+CONFIG_IP6_NF_MATCH_OPTS
+ This allows one to match packets based on the hop-by-hop
+ and destination options headers of a packet.
+
+ If you want to compile it as a module, say M here and read
+ <file:Documentation/modules.txt>. The modules will be called
+ ip6t_hbh.o and ip6t_dst.o.
+
+ If unsure, say 'N'.
+
+Fragmentation header match support
+CONFIG_IP6_NF_MATCH_FRAG
+ frag matching allows you to match packets based on the fragmentation
+ header of the packet.
+
+ If you want to compile it as a module, say M here and read
+ <file:Documentation/modules.txt>. The module will be called
+ ip6t_frag.o.
+
+ If unsure, say 'N'.
+
+HL match support
+CONFIG_IP6_NF_MATCH_HL
+ HL matching allows you to match packets based on the hop
+ limit of the packet.
+
+ If you want to compile it as a module, say M here and read
+ <file:Documentation/modules.txt>. The module will be called
+ ip6t_hl.o.
+
+ If unsure, say 'N'.
+
+IPv6 Extension Headers Match (EXPERIMENTAL)
+CONFIG_IP6_NF_MATCH_IPV6HEADER
+ This module allows one to match packets based upon
+ the ipv6 extension headers.
+
+ If you want to compile it as a module, say M here and read
+ <file:Documentation/modules.txt>. The module will be called
+ ip6t_ipv6header.o.
+
+ If unsure, say 'N'.
+
SYN flood protection
CONFIG_SYN_COOKIES
Normal TCP/IP networking is open to an attack known as "SYN
@@ -3697,27 +4013,27 @@ CONFIG_AGP_AMD
You should say Y here if you use XFree86 3.3.6 or 4.x and want to
use GLX or DRI. If unsure, say N.
-CONFIG_AGP_AMD_8151
+CONFIG_AGP_AMD_K8
This option gives you AGP support for the GLX component of
- XFree86 on AMD K8 with an AGP 8151 chipset.
+ XFree86 on an AMD Opteron/Athlon64 using the on-CPU GART.
You should say Y here if you use XFree86 3.3.6 or 4.x and want to
use GLX or DRI. If unsure, say N.
Generic SiS support
CONFIG_AGP_SIS
- This option gives you AGP support for the GLX component of the "soon
- to be released" XFree86 4.x on Silicon Integrated Systems [SiS]
- chipsets.
+ This option gives you AGP support for the GLX component of
+ XFree86 4.x on Silicon Integrated Systems [SiS] chipsets.
- Note that 5591/5592 AGP chipsets are NOT supported.
+ Note that 5591/5592 AGP chipsets are NOT specifically supported;
+ However, the driver works well on these, too.
You should say Y here if you use XFree86 3.3.6 or 4.x and want to
use GLX or DRI. If unsure, say N.
Serverworks LE/HE support
CONFIG_AGP_SWORKS
- Say Y here to support the Serverworks AGP card. See
+ Say Y here to support the Serverworks AGP card. See
<http://www.serverworks.com/> for product descriptions and images.
NVIDIA chipset support
@@ -3748,6 +4064,13 @@ CONFIG_AGP_HP_ZX1
This option gives you AGP GART support for the HP ZX1 chipset
for IA64 processors.
+CONFIG_AGP_ATI
+ This option gives you AGP support for the GLX component of
+ XFree86 4.x on the ATI RadeonIGP family of chipsets.
+
+ You should say Y here if you use XFree86 3.3.6 or 4.x and want to
+ use GLX or DRI. If unsure, say N.
+
Support for ISA-bus hardware
CONFIG_ISA
Find out whether you have ISA slots on your motherboard. ISA is the
@@ -5107,21 +5430,23 @@ CONFIG_FB_HIT
This is the frame buffer device driver for the Hitachi HD64461 LCD
frame buffer card.
-SIS acceleration
+SIS display support
CONFIG_FB_SIS
- This is the frame buffer device driver for the SiS 630 and 640 Super
- Socket 7 UMA cards. Specs available at <http://www.sis.com.tw/>.
+ This is the frame buffer device driver for the SiS 300, 315 and 330
+ series chipsets. Documentation available at the maintainer's site
+ at <http://www.winischhofer.net/linuxsisvga.shtml>.
-SIS 630/540/730 support
+SIS 300 series support
CONFIG_FB_SIS_300
- This is the frame buffer device driver for the SiS 630 and related
- Super Socket 7 UMA cards. Specs available at
- <http://www.sis.com.tw/>.
+ This enables support for SiS 300 series chipsets (300/305, 540, 630,
+ 730). Documentation available at the maintainer's website at
+ <http://www.winischhofer.net/linuxsisvga.shtml>.
-SIS 315H/315 support
+SIS 315/330 series support
CONFIG_FB_SIS_315
- This is the frame buffer device driver for the SiS 315 graphics
- card. Specs available at <http://www.sis.com.tw/>.
+ This enables support for SiS 315/330 series chipsets (315, 550, 650,
+ M650, 651, 661FX, M661FX, 740, 741, 330). Documentation available at
+ the maintainer's site <http://www.winischhofer.net/linuxsisvga.shtml>.
IMS Twin Turbo display support
CONFIG_FB_IMSTT
@@ -5177,6 +5502,17 @@ CONFIG_FB_ATY_GX
is at
<http://support.ati.com/products/pc/mach64/graphics_xpression.html>.
+Mach64 Generic LCD support
+CONFIG_FB_ATY_GENERIC_LCD
+ Enabling this option enables the Atyfb driver to drive LCD panels. It
+ will autodetect the resulution and format of your display and emulate
+ other resolutions using the hardware stretcher on the chip.
+ Say Y here if you have computer with a Rage LT Pro, Rage Mobility M1,
+ Rage XC or Rage XL chip and a laptop LCD display or any other LCD display
+ that needs to be digitally driven. It is not necessary to enable this
+ option if you are using an LCD display with a normal VGA connector,
+ but it won't hurt if you do.
+
ATI Radeon display support
CONFIG_FB_RADEON
Choose this option if you want to use an ATI Radeon graphics card as
@@ -5781,6 +6117,61 @@ CONFIG_IPV6
It is safe to say N here for now.
+The SCTP Protocol (EXPERIMENTAL)
+CONFIG_IP_SCTP
+ Stream Control Transmission Protocol
+
+ From RFC 2960 (http://www.ietf.org/rfc/rfc2960.txt)
+
+ "SCTP is a reliable transport protocol operating on top of a
+ connectionless packet network such as IP. It offers the following
+ services to its users:
+
+ -- acknowledged error-free non-duplicated transfer of user data,
+ -- data fragmentation to conform to discovered path MTU size,
+ -- sequenced delivery of user messages within multiple streams,
+ with an option for order-of-arrival delivery of individual user
+ messages,
+ -- optional bundling of multiple user messages into a single SCTP
+ packet, and
+ -- network-level fault tolerance through supporting of multi-
+ homing at either or both ends of an association."
+
+ This protocol 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 sctp. If you want to compile it
+ as a module, say M here and read <file:Documentation/modules.txt>.
+
+ If in doubt, say N.
+
+SCTP: Use old checksum (Adler-32)
+CONFIG_SCTP_ADLER32
+ RCF2960 currently specifies the Adler-32 checksum algorithm for SCTP.
+ This has been deprecated and replaced by an algorithm now referred
+ to as crc32c.
+
+ If you say Y, this will use the Adler-32 algorithm, this might be
+ useful for interoperation with downlevel peers.
+
+ If unsure, say N.
+
+SCTP: Debug messages
+CONFIG_SCTP_DBG_MSG
+ If you say Y, this will enable verbose debugging messages.
+
+ If unsure, say N. However, if you are running into problems, use
+ this option to gather detailed trace information
+
+SCTP: Debug object counts
+CONFIG_SCTP_DBG_OBJCNT
+ If you say Y, this will enable debugging support for counting the
+ type of objects that are currently allocated. This is useful for
+ identifying memory leaks. If the /proc filesystem is enabled this
+ debug information can be viewed by
+ 'cat /proc/net/sctp/sctp_dbg_objcnt'
+
+ If unsure, say N
+
Kernel httpd acceleration
CONFIG_KHTTPD
The kernel httpd acceleration daemon (kHTTPd) is a (limited) web
@@ -6915,7 +7306,7 @@ SCSI tape drive support for Smart Array 5xxx
CONFIG_CISS_SCSI_TAPE
When enabled (Y), this option allows SCSI tape drives and SCSI medium
changers (tape robots) to be accessed via a Compaq 5xxx array
- controller. (See Documentation/cciss.txt for more details.)
+ controller. (See <file:Documentation/cciss.txt> for more details.)
"SCSI support" and "SCSI tape support" must also be enabled for this
option to work.
@@ -6923,6 +7314,15 @@ CONFIG_CISS_SCSI_TAPE
When this option is disabled (N), the SCSI portion of the driver
is not compiled.
+Enable monitor thread
+CONFIG_CISS_MONITOR_THREAD
+ Intended for use with multipath configurations (see the md driver).
+ This option allows a per-adapter monitoring thread to periodically
+ poll the adapter to detect failure modes in which the processor
+ is unable to receive interrupts from the adapter, thus enabling
+ fail-over to an alternate adapter in such situations. See
+ <file:Documentation/cciss.txt> for more details.
+
QuickNet Internet LineJack/PhoneJack support
CONFIG_PHONE_IXJ
Say M if you have a telephony card manufactured by Quicknet
@@ -7087,6 +7487,16 @@ CONFIG_FUSION
architecture is based on LSI Logic's Message Passing Interface (MPI)
specification.
+Maximum number of scatter gather entries
+CONFIG_FUSION_MAX_SGE
+ This option allows you to specify the maximum number of scatter-
+ gather entries per I/O. The driver defaults to 40, a reasonable number
+ for most systems. However, the user may increase this up to 128.
+ Increasing this parameter will require significantly more memory
+ on a per controller instance. Increasing the parameter is not
+ necessary (or recommended) unless the user will be running
+ large I/O's via the raw interface.
+
Fusion MPT enhanced SCSI error reporting [optional] module
CONFIG_FUSION_ISENSE
The isense module (roughly stands for Interpret SENSE data) is
@@ -7354,6 +7764,27 @@ CONFIG_SCSI_LOGGING
there should be no noticeable performance impact as long as you have
logging turned off.
+QDIO base support for IBM S/390 and zSeries
+CONFIG_QDIO
+ This driver provides the Queued Direct I/O base support for the
+ IBM S/390 (G5 and G6) and eServer zSeries (z800 and z900).
+
+ For details please refer to the documentation provided by IBM at
+ <http://www10.software.ibm.com/developerworks/opensource/linux390>
+
+ 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 qdio.o. If you want to compile it as a
+ module, say M here and read <file:Documentation/modules.txt>.
+
+ If unsure, say Y.
+
+Performance statistics for QDIO base support
+CONFIG_QDIO_PERF_STATS
+ Say Y here to get performance statistics in /proc/qdio_perf
+
+ If unsure, say N.
+
SGI WD93C93 SCSI Driver
CONFIG_SCSI_SGIWD93
Say Y here to support the on-board WD93C93 SCSI controller found (a)
@@ -7964,7 +8395,7 @@ CONFIG_SCSI_SYM53C8XX_2
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 <file:Documentation/modules.txt>. The module
- will be called sym53c8xx.o.
+ will be called sym53c8xx_2.o.
PCI DMA addressing mode
CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE
@@ -8627,16 +9058,31 @@ CONFIG_SCSI_AM53C974
say M here and read <file:Documentation/modules.txt>. The module
will be called AM53C974.o.
-AMI MegaRAID support
+AMI MegaRAID support (old driver)
CONFIG_SCSI_MEGARAID
- This driver supports the AMI MegaRAID 418, 428, 438, 466, 762, 490
- and 467 SCSI host adapters.
+ This driver supports the AMI MegaRAID 418, 428, 438, 466, 762, 490,
+ 467, 471 and 493 SCSI host adapters.
+
+ This is the old and very heavily tested driver but lacks features
+ like clustering.
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 <file:Documentation/modules.txt>. The module
will be called megaraid.o.
+AMI MegaRAID support (new driver)
+CONFIG_SCSI_MEGARAID2
+ This driver supports the AMI MegaRAID 418, 428, 438, 466, 762, 490,
+ 467, 471, 493 and new Ultra320(518, 520, 531, 532) SCSI host adapters.
+
+ This is the newer less tested but more featureful 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 <file:Documentation/modules.txt>. The module
+ will be called megaraid2.o.
+
Intel/ICP (former GDT SCSI Disk Array) RAID Controller support
CONFIG_SCSI_GDTH
Formerly called GDT SCSI Disk Array Controller Support.
@@ -8979,6 +9425,17 @@ CONFIG_IEEE1394_VERBOSEDEBUG
Say Y if you really want or need the debugging output, everyone else
says N.
+CONFIG_IEEE1394_OUI_DB
+ If you say Y here, then an OUI list (vendor unique ID's) will be
+ compiled into the ieee1394 module. This doesn't really do much
+ except being able to display the vendor of a hardware node. The
+ downside is that it adds about 300k to the size of the module,
+ or kernel (depending on whether you compile ieee1394 as a
+ module, or static in the kernel).
+
+ This option is not needed for userspace programs like gscanbus
+ to show this information.
+
Network device support
CONFIG_NETDEVICES
You can say N here if you don't intend to connect your Linux box to
@@ -9637,6 +10094,17 @@ CONFIG_PLX_HERMES
Support for these adaptors is so far still incomplete and buggy.
You have been warned.
+Hermes 802.11b in TMD7160/NCP130 based PCI adaptor support
+CONFIG_TMD_HERMES
+ Enable support for PCMCIA cards supported by the "Hermes" (aka
+ orinoco) driver when used in TMD7160 based PCI adaptors. These
+ adaptors are not a full PCMCIA controller but act as a more limited
+ PCI <-> PCMCIA bridge. Several vendors sell such adaptors so that
+ 802.11b PCMCIA cards can be used in desktop machines.
+
+ Support for these adaptors is so far still incomplete and buggy.
+ You have been warned.
+
Prism 2.5 PCI 802.11b adaptor support
CONFIG_PCI_HERMES
Enable support for PCI and mini-PCI 802.11b wireless NICs based on
@@ -9902,36 +10370,17 @@ CONFIG_FARSYNC
This driver supports the FarSync T-Series X.21 (and V.35/V.24) cards
from FarSite Communications Ltd.
Synchronous communication is supported on all ports at speeds up to
- 8Mb/s (128K on V.24) using synchronous PPP or Cisco HDLC.
+ 8Mb/s (128K on V.24) using synchronous PPP, Cisco HDLC, raw HDLC,
+ Frame Relay or X.25/LAPB.
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 <file:Documentation/modules.txt>.
The module will be called farsync.o and if you want the module to be
automatically loaded when the interface is referenced then you
- should add "alias syncX farsync" to /etc/modules.conf for each
+ should add "alias hdlcX farsync" to /etc/modules.conf for each
interface, where X is 0, 1, 2, ...
-CONFIG_HDLC_DEBUG_PKT
- This option is for developers only - do NOT use on production
- systems.
-
-CONFIG_HDLC_DEBUG_HARD_HEADER
- This option is for developers only - do NOT use on production
- systems.
-
-CONFIG_HDLC_DEBUG_ECN
- This option is for developers only - do NOT use on production
- systems.
-
-CONFIG_HDLC_DEBUG_RINGS
- If you answer Y here you will be able to get a diagnostic dump of
- port's TX and RX packet rings, using "sethdlc hdlcX private"
- command. It does not affect normal operations.
-
- If unsure, say Y here.
-
-
Frame Relay (DLCI) support
CONFIG_DLCI
This is support for the frame relay protocol; frame relay is a fast
@@ -10456,6 +10905,26 @@ CONFIG_DSCC4
The module will be called dscc4.o. For general information about
modules read <file:Documentation/modules.txt>.
+PCISYNC feature
+CONFIG_DSCC4_PCISYNC
+ Due to Etinc's design choice for its PCISYNC cards, some operations
+ are only allowed on specific ports of the DSCC4. This option is the
+ only way for the driver to know that it shouldn't return a success
+ code for these operations.
+
+ Please say Y if your card is an Etinc's PCISYNC.
+
+Hard reset support
+CONFIG_DSCC4_PCI_RST
+ Various DSCC4 bug forbid any reliable software reset of the asic.
+ As a replacement, some vendors provide a way to assert the PCI #RST
+ pin of DSCC4 through the GPIO port of the card. If you choose Y, the
+ driver will make use of this feature before module removal (i.e. rmmod).
+ This feature is known to exist on Commtech's cards.
+ Contact your manufacturer for details.
+
+ Say Y if yout card supports this feature.
+
LanMedia Corp. serial boards (SSI/V.35, T1/E1, HSSI, T3)
CONFIG_LANMEDIA
This is a driver for the following Lan Media family of serial
@@ -10804,6 +11273,15 @@ CONFIG_HDLC_RAW
If unsure, say N here.
+Raw HDLC Ethernet device support
+CONFIG_HDLC_RAW_ETH
+ Say Y to this option if you want generic HDLC driver to support
+ raw HDLC Ethernet device emulation over WAN (Wide Area Network)
+ connections.
+ You will need it for Ethernet over HDLC bridges.
+
+ If unsure, say N here.
+
Cisco HDLC support
CONFIG_HDLC_CISCO
Say Y to this option if you want generic HDLC driver to support
@@ -10818,13 +11296,6 @@ CONFIG_HDLC_FR
If unsure, say N here.
-Frame-Relay bridging support
-CONFIG_HDLC_FR_BRIDGE
- Say Y to this option if you want generic HDLC driver to support
- bridging LAN frames over Frame-Relay links.
-
- If unsure, say N here.
-
Synchronous Point-to-Point Protocol (PPP) support
CONFIG_HDLC_PPP
Say Y to this option if you want generic HDLC driver to support
@@ -10867,6 +11338,25 @@ CONFIG_C101
If unsure, say N here.
+CONFIG_HDLC_DEBUG_PKT
+ This option is for developers only - do NOT use on production
+ systems.
+
+CONFIG_HDLC_DEBUG_HARD_HEADER
+ This option is for developers only - do NOT use on production
+ systems.
+
+CONFIG_HDLC_DEBUG_ECN
+ This option is for developers only - do NOT use on production
+ systems.
+
+CONFIG_HDLC_DEBUG_RINGS
+ If you answer Y here you will be able to get a diagnostic dump of
+ port's TX and RX packet rings, using "sethdlc hdlcX private"
+ command. It does not affect normal operations.
+
+ If unsure, say Y here.
+
Ethernet (10 or 100Mbit)
CONFIG_NET_ETHERNET
Ethernet (also called IEEE 802.3 or ISO 8802-2) is the most common
@@ -11195,33 +11685,69 @@ CONFIG_ACENIC_OMIT_TIGON_I
The safe and default value for this is N.
-SysKonnect SK-98xx and SK-95xx Gigabit Ethernet Adapter family support
+Marvell Yukon / SysKonnect SK-98xx and SK-95xx Gigabit Ethernet Adapter family support
CONFIG_SK98LIN
- Say Y here if you have a SysKonnect SK-98xx or SK-95xx Gigabit
- Ethernet Server Adapter. The following adapters are supported by
- this driver:
- - SK-9521 10/100/1000Base-T Adapter
- - SK-9821 Gigabit Ethernet 1000Base-T Server Adapter
- - SK-9822 Gigabit Ethernet 1000Base-T Dual Port Server Adapter
- - SK-9841 Gigabit Ethernet 1000Base-LX Server Adapter
- - SK-9842 Gigabit Ethernet 1000Base-LX Dual Port Server Adapter
- - SK-9843 Gigabit Ethernet 1000Base-SX Server Adapter
- - SK-9844 Gigabit Ethernet 1000Base-SX Dual Port Server Adapter
- - SK-9861 Gigabit Ethernet 1000Base-SX Server Adapter
- - SK-9862 Gigabit Ethernet 1000Base-SX Dual Port Server Adapter
- - SK-9871 Gigabit Ethernet 1000Base-ZX Server Adapter
- - SK-9872 Gigabit Ethernet 1000Base-ZX Dual Port Server Adapter
- - SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter
- - SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter
- - SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter
- - SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter
- - SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter
- - SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter
+ Say Y here if you have a Marvell Yukon or SysKonnect SK-98xx/SK-95xx
+ compliant Gigabit Ethernet Adapter. The following adapters are supported
+ by this driver:
+ - 3Com 3C940 Gigabit LOM Ethernet Adapter
+ - 3Com 3C941 Gigabit LOM Ethernet Adapter
+ - Allied Telesyn AT-2970LX Gigabit Ethernet Adapter
+ - Allied Telesyn AT-2970LX/2SC Gigabit Ethernet Adapter
+ - Allied Telesyn AT-2970SX Gigabit Ethernet Adapter
+ - Allied Telesyn AT-2970SX/2SC Gigabit Ethernet Adapter
+ - Allied Telesyn AT-2970TX Gigabit Ethernet Adapter
+ - Allied Telesyn AT-2970TX/2TX Gigabit Ethernet Adapter
+ - Allied Telesyn AT-2971SX Gigabit Ethernet Adapter
+ - Allied Telesyn AT-2971T Gigabit Ethernet Adapter
+ - DGE-530T Gigabit Ethernet Adapter
+ - EG1032 v2 Instant Gigabit Network Adapter
+ - EG1064 v2 Instant Gigabit Network Adapter
+ - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Abit)
+ - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Asus)
+ - Marvell 88E8001 Gigabit LOM Ethernet Adapter (ECS)
+ - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Epox)
+ - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Gigabyte)
+ - Marvell 88E8001 Gigabit LOM Ethernet Adapter (Iwill)
+ - Marvell RDK-8001 Adapter
+ - Marvell RDK-8002 Adapter
+ - Marvell RDK-8003 Adapter
+ - Marvell RDK-8004 Adapter
+ - Marvell RDK-8006 Adapter
+ - Marvell RDK-8007 Adapter
+ - Marvell RDK-8008 Adapter
+ - Marvell RDK-8009 Adapter
+ - Marvell RDK-8010 Adapter
+ - Marvell RDK-8011 Adapter
+ - Marvell RDK-8012 Adapter
+ - Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Adapter (32 bit)
+ - Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Adapter (64 bit)
+ - N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L)
+ - SK-9521 10/100/1000Base-T Adapter
+ - SK-9521 V2.0 10/100/1000Base-T Adapter
+ - SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T)
+ - SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter
+ - SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link)
+ - SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX)
+ - SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter
+ - SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link)
+ - SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX)
+ - SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter
+ - SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link)
+ - SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter
+ - SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition)
+ - SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter
+ - SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link)
+ - SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX)
+ - SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter
+ - SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link)
+ - SMC EZ Card 1000 (SMC9452TXV.2)
The adapters support Jumbo Frames.
The dual link adapters support link-failover and dual port features.
- The V2.0 adapters support the scatter-gather functionality with
- sendfile(). Read Documentation/networking/sk98lin.txt for information about
+ Both Marvell Yukon and SysKonnect SK-98xx/SK-95xx adapters support
+ the scatter-gather functionality with sendfile(). Please refer to
+ Documentation/networking/sk98lin.txt for more information about
optional driver parameters.
Questions concerning this driver may be addressed to:
linux@syskonnect.de
@@ -11231,6 +11757,7 @@ CONFIG_SK98LIN
say M here and read Documentation/modules.txt. This is recommended.
The module will be called sk98lin.o.
+
Sun GEM support
CONFIG_SUNGEM
Support for the Sun GEM chip, aka Sun GigabitEthernet/P 2.0. See also
@@ -13126,6 +13653,15 @@ CONFIG_MTD_CMDLINE_PARTS
If unsure, say 'N'.
+MTD concatenating support
+CONFIG_MTD_CONCAT
+ Support for concatenating several MTD devices into a single
+ (virtual) one. This allows you to have -for example- a JFFS(2)
+ file system spanning multiple physical flash chips. If unsure,
+ say 'Y'.
+
+ If compiled as a module, it will be called mtdconcat.o.
+
ARM Firmware Suite flash layout / partition parsing
CONFIG_MTD_AFS_PARTS
The ARM Firmware Suite allows the user to divide flash devices into
@@ -13532,6 +14068,14 @@ CONFIG_MTD_DBOX2
D-Box 2 board. If you have one of these boards and would like to use
the flash chips on it, say 'Y'.
+CFI Flash devices mapped on IBM Redwood
+CONFIG_MTD_REDWOOD
+ This enables access routines for the flash chips on the IBM
+ Redwood board. If you have one of these boards and would like to
+ use the flash chips on it, say 'Y'.
+
+ If compiled as a module, it will be called redwood.o.
+
CFI Flash device mapped on the XScale IQ80310 board
CONFIG_MTD_IQ80310
This enables access routines for the flash chips on the Intel XScale
@@ -13664,6 +14208,20 @@ Support for the SPIA board
CONFIG_MTD_NAND_SPIA
If you had to ask, you don't have one. Say 'N'.
+SmartMediaCard on autronix autcpu12 board
+CONFIG_MTD_NAND_AUTCPU12
+ This enables the driver for the autronix autcpu12 board to
+ access the SmartMediaCard.
+
+ If compiled as a module, it will be called autcpu12.o.
+
+Support for Cirrus Logic EBD7312 evaluation board
+CONFIG_MTD_NAND_EDB7312
+ This enables the driver for the Cirrus Logic EBD7312 evaluation
+ board to access the onboard NAND Flash.
+
+ If compiled as a module, it will be called edb7312.o.
+
M-Systems Disk-On-Chip 1000 support
CONFIG_MTD_DOC1000
This provides an MTD device driver for the M-Systems DiskOnChip
@@ -14105,6 +14663,25 @@ CONFIG_USB_OHCI
The module will be called usb-ohci.o. If you want to compile it
as a module, say M here and read <file:Documentation/modules.txt>.
+SL811HS (x86, StrongARM) support
+CONFIG_USB_SL811HS
+ Embedded Open Host Controller SL811HS from CYPRESS SEMICONDUCTOR INC.
+ <pbl@cypress.com>
+
+ Board USB1104 in i386 architecture with PC/104-bus.
+ <http://www.ssv-embedded.de>
+ <file:Documentation/usb/hc_sl811.txt>
+
+ StrongARM is currently not testet and not for PC/104-bus!
+ StrongARM need a special hardware with Chip Select directly from CPU.
+ See also SL811HS_ALT.
+
+SL811HS_ALT (x86, StrongARM) support
+CONFIG_USB_SL811HS_ALT
+ Embedded Open Host Controller SL811HS from CYPRESS SEMICONDUCTOR INC.
+ Alternate with isochornous mode and better interrupt handling.
+ See also SL811HS.
+
USB Human Interface Device (full HID) support
CONFIG_USB_HID
Say Y here if you want full HID support to connect keyboards,
@@ -14162,8 +14739,8 @@ CONFIG_USB_KBD
USB HIDBP Mouse (basic) support
CONFIG_USB_MOUSE
Say Y here only if you are absolutely sure that you don't want
- to use the generic HID driver for your USB keyboard and prefer
- to use the keyboard in its limited Boot Protocol mode instead.
+ to use the generic HID driver for your USB mouse and prefer
+ to use the mouse in its limited Boot Protocol mode instead.
This is almost certainly not what you want.
@@ -14523,6 +15100,9 @@ USB Keyspan USA-49W Firmware
CONFIG_USB_SERIAL_KEYSPAN_USA49W
Say Y here to include firmware for the USA-49W converter.
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC
+ Say Y here to include firmware for the USA-49WLC converter.
+
USB ZyXEL omni.net LCD Plus Driver
CONFIG_USB_SERIAL_OMNINET
Say Y here if you want to use a ZyXEL omni.net LCD ISDN TA.
@@ -14715,6 +15295,32 @@ CONFIG_USB_OV511
The module will be called ov511.o. If you want to compile it as a
module, say M here and read <file:Documentation/modules.txt>.
+USB W996[87]CF Camera support
+CONFIG_USB_W9968CF
+ Say Y here if you want support for cameras based on
+ Winbond W9967CF/W9968CF JPEG USB Dual Mode Camera Chips.
+
+ This driver has an optional plugin, which is distributed as a
+ separate module only (released under GPL). It contains code that
+ allows you to use higher resolutions and framerates, and can't
+ be included into the official Linux kernel for performance
+ purposes.
+ At the moment the driver needs a third-part module for the CMOS
+ sensors, which is available on internet: it is recommended to read
+ <file:Documentation/usb/w9968cf.txt> for more informations and for
+ a list of supported cameras.
+
+ This driver uses the Video For Linux and the I2C APIs.
+ You must say Y or M to both "Video For Linux" and
+ "I2C Support" to use this driver.
+ Information on this API and pointers to "v4l" programs may be found
+ on the WWW at <http://roadrunner.swansea.uk.linux.org/v4l.shtml>.
+
+ This code 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 w9968cf.o. If you want to compile it as a
+ module, say M here and read <file:Documentation/modules.txt>.
+
USB Communication Class Ethernet device support
CONFIG_USB_CDCETHER
This driver supports devices conforming to the Communication Device
@@ -15272,6 +15878,88 @@ CONFIG_BLK_DEV_UBD
Unless you know that you do not need such virtual block devices say
Y here.
+CONFIG_USB_GADGET
+ USB is a master/slave protocol, organized with one master
+ host (such as a PC) controlling up to 127 peripheral devices.
+ The USB hardware is asymmetric, which makes it easier to set up:
+ you can't connect two "to-the-host" connectors to each other.
+
+ Linux can run in the host, or in the peripheral. In both cases
+ you need a low level bus controller driver, and some software
+ talking to it. Peripheral controllers are often discrete silicon,
+ or are integrated with the CPU in a microcontroller. The more
+ familiar host side controllers have names like like "EHCI", "OHCI",
+ or "UHCI", and are usually integrated into southbridges on PC
+ motherboards.
+
+ Enable this configuration option if you want to run Linux inside
+ a USB peripheral device. Configure one hardware driver for your
+ peripheral/device side bus controller, and a "gadget driver" for
+ your peripheral protocol. (If you use modular gadget drivers,
+ you may configure more than one.)
+
+ If in doubt, say "N" and don't enable these drivers; most people
+ don't have this kind of hardware (except maybe inside Linux PDAs).
+
+CONFIG_USB_NET2280
+ NetChip 2280 is a PCI based USB peripheral controller which
+ supports both full and high speed USB 2.0 data transfers.
+
+ It has six configurable endpoints, as well as endpoint zero
+ (for control transfers) and several endpoints with dedicated
+ functions.
+
+ Say "y" to link the driver statically, or "m" to build a
+ dynamically linked module called "net2280" and force all
+ gadget drivers to also be dynamically linked.
+
+CONFIG_USB_ZERO
+ Gadget Zero is a two-configuration device. It either sinks and
+ sources bulk data; or it loops back a configurable number of
+ transfers. It also implements control requests, for "chapter 9"
+ conformance. The driver needs only two bulk-capable endpoints, so
+ it can work on top of most device-side usb controllers. It's
+ useful for testing, and is also a working example showing how
+ USB "gadget drivers" can be written.
+
+ Make this be the first driver you try using on top of any new
+ USB peripheral controller driver. Then you can use host-side
+ test software, like the "usbtest" driver, to put your hardware
+ and its driver through a basic set of functional tests.
+
+ Gadget Zero also works with the host-side "usb-skeleton" driver,
+ and with many kinds of host-side test software. You may need
+ to tweak product and vendor IDs before host software knows about
+ this device, and arrange to select an appropriate configuration.
+
+ Say "y" to link the driver statically, or "m" to build a
+ dynamically linked module called "g_zero".
+
+CONFIG_USB_ETH
+ This driver implements Ethernet style communication, in either
+ of two ways:
+
+ - The "Communication Device Class" (CDC) Ethernet Control Model.
+ That protocol is often avoided with pure Ethernet adapters, in
+ favor of simpler vendor-specific hardware, but is widely
+ supported by firmware for smart network devices.
+
+ - On hardware can't implement that protocol, a simpler approach
+ is used, placing fewer demands on USB.
+
+ Within the USB device, this gadget driver exposes a network device
+ "usbX", where X depends on what other networking devices you have.
+ Treat it like a two-node Ethernet link: host, and gadget.
+
+ The Linux-USB host-side "usbnet" driver interoperates with this
+ driver, so that deep I/O queues can be supported. On 2.4 kernels,
+ use "CDCEther" instead, if you're using the CDC option. That CDC
+ mode should also interoperate with standard CDC Ethernet class
+ drivers on other host operating systems.
+
+ Say "y" to link the driver statically, or "m" to build a
+ dynamically linked module called "g_ether".
+
Always do synchronous disk IO for UBD
CONFIG_BLK_DEV_UBD_SYNC
Writes to the virtual block device are not immediately written to the host's
@@ -15784,21 +16472,15 @@ CONFIG_REISERFS_FS
architectural foundations.
In general, ReiserFS is as fast as ext2, but is very efficient with
- large directories and small files. Additional patches are needed
- for NFS and quotas, please see <http://www.reiserfs.org/> for links.
-
- It is more easily extended to have features currently found in
- database and keyword search systems than block allocation based file
- systems are. The next version will be so extended, and will support
- plugins consistent with our motto ``It takes more than a license to
- make source code open.''
-
- Read <http://www.reiserfs.org/> to learn more about reiserfs.
+ large directories and small files. It is much faster for writes,
+ and slightly slower for reads than ext2. It is much faster than
+ ext3. It will be obsoleted by Reiser4 in not too long, so keep
+ an eye on our website for when Reiser4 ships.
- Sponsored by Threshold Networks, Emusic.com, and Bigstorage.com.
+ Mount with the notail option if performance matters more to you than
+ saving space (the design flaw underlying this is fixed in reiser4).
- If you like it, you can pay us to add new features to it that you
- need, buy a support contract, or pay us to port it to another OS.
+ Read <http://www.namesys.com> to learn more about reiserfs.
Enable extra Reiserfs consistency checks
CONFIG_REISERFS_CHECK
@@ -17749,6 +18431,24 @@ CONFIG_HIL
Enable this option if you intend to use a HIL keyboard.
+HP System Device Controller support
+CONFIG_HP_SDC
+ This option enables supports for the the "System Device Controller",
+ an i8042 carrying microcode to manage a few miscellanous devices
+ on some Hewlett Packard systems. The SDC itself contains a 10ms
+ resolution timer/clock capable of delivering interrupts on periodic
+ and one-shot basis. The SDC may also be connected to a battery-backed
+ real-time clock, a basic audio waveform generator, and an HP-HIL
+ Master Link Controller serving up to seven input devices.
+
+ By itself this option is rather useless, but enabling it will
+ enable selection of drivers for the abovementioned devices.
+ It is, however, incompatible with the old, reliable HIL keyboard
+ driver, and the new HIL driver is experimental, so if you plan to
+ use a HIL keyboard as your primary keyboard, you may wish to
+ keep using that driver until the new HIL drivers have had more
+ testing.
+
Include IOP (IIfx/Quadra 9x0) ADB driver
CONFIG_ADB_IOP
The I/O Processor (IOP) is an Apple custom IC designed to provide
@@ -18064,6 +18764,19 @@ CONFIG_ISTALLION
read <file:Documentation/modules.txt>. The module will be called
istallion.o.
+PDC software console support
+CONFIG_PDC_CONSOLE
+ Saying Y here will enable the software based PDC console to be
+ used as the system console. This is useful for machines in
+ which the hardware based console has not been written yet. The
+ following steps must be competed to use the PDC console:
+
+ 1. create the device entry (mknod /dev/ttyB0 c 60 0)
+ 2. Edit the /etc/inittab to start a getty listening on /dev/ttyB0
+ 3. Add device ttyB0 to /etc/securetty (if you want to log on as
+ root on this console.)
+ 4. Change the kernel command console parameter to: console=ttyB0
+
Microgate SyncLink adapter support
CONFIG_SYNCLINK
Provides support for the SyncLink ISA and PCI multiprotocol serial
@@ -18514,6 +19227,15 @@ CONFIG_I2C_PROC
it as a module, say M here and read <file:Documentation/modules.txt>.
The module will be called i2c-proc.o.
+Powermac Keywest I2C interface
+CONFIG_I2C_KEYWEST
+ This supports the use of the I2C interface in the combo-I/O
+ chip on recent Apple machines. Say Y if you have such a machine.
+
+ This driver is also available as a module. If you want to compile
+ it as a module, say M here and read Documentation/modules.txt.
+ The module will be called i2c-keywest.o.
+
Bus Mouse Support
CONFIG_BUSMOUSE
Say Y here if your machine has a bus mouse as opposed to a serial
@@ -19023,6 +19745,13 @@ CONFIG_DRM_I810
selected, the module will be called i810.o. AGP support is required
for this driver to work.
+Intel 830M, 845G, 852GM, 855GM, 865G
+CONFIG_DRM_I830
+ Choose this option if you have a system that has Intel 830M, 845G,
+ 852GM, 855GM or 865G integrated graphics. If M is selected, the
+ module will be called i830.o. AGP support is required for this driver
+ to work.
+
Matrox G200/G400/G450
CONFIG_DRM_MGA
Choose this option if you have a Matrox G200, G400 or G450 graphics
@@ -19176,6 +19905,21 @@ CONFIG_INTEL_RNG
If unsure, say N.
+Intel/AMD/VIA HW Random Number Generator support
+CONFIG_HW_RANDOM
+ This driver provides kernel-side support for the
+ Random Number Generator hardware found on Intel i8xx-based motherboards,
+ AMD 76x-based motherboards, and Via Nehemiah CPUs.
+
+ Provides a character driver, used to read() entropy data.
+
+ 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 <file:Documentation/modules.txt>. The module will be called
+ hw_random.
+
+ If unsure, say N.
+
Power Management support
CONFIG_PM
"Power Management" means that parts of your computer are shut
@@ -19225,30 +19969,8 @@ CONFIG_ACPI
The ACPI Sourceforge project may also be of interest:
<http://sf.net/projects/acpi/>
-ACPI Processor Enumeration for HT
-CONFIG_ACPI_HT_ONLY
- ACPI enumerates both logical (a.k.a. Hyper-Threaded -- HT)
- and physical processors. It is designed to obsolete several older
- specifications, including the MultiProcessor Specification (MPS),
- which supported only physical processors.
-
- CONFIG_ACPI_HT_ONLY includes just the minimal ACPI boot-time code
- necessary to enumerate logical processors and enable HT.
-
- CONFIG_ACPI includes this code, plus IO APIC enumeration,
- and the hooks to run the ACPI AML interpreter for run-time events.
-
- When CONFIG_ACPI is selected, the command-line option "acpi=ht"
- is available to run just the ACPI boot-time code -- just as if
- only CONFIG_ACPI_HT_ONLY were selected.
-
Note that "acpi=off" can be used to disable all ACPI code in the kernel.
-Enable ACPI 2.0 with errata 1.3
-CONFIG_ACPI20
- Enable support for the 2.0 version of the ACPI interpreter. See the
- help for ACPI for caveats and discussion.
-
ACPI kernel configuration manager
CONFIG_ACPI_KERNEL_CONFIG
If you say `Y' here, Linux's ACPI support will use the
@@ -19268,23 +19990,6 @@ CONFIG_ACPI_RELAXED_AML
particular, many Toshiba laptops require this for correct operation
of the AC module.
-ACPI Bus Manager
-CONFIG_ACPI_BUSMGR
- The ACPI Bus Manager enumerates devices in the ACPI namespace, and
- handles PnP messages. All ACPI devices use its services, so using
- them requires saying Y here.
-
-ACPI System Driver
-CONFIG_ACPI_SYS
- This driver will enable your system to shut down using ACPI, and
- dump your ACPI DSDT table using /proc/acpi/dsdt.
-
-ACPI Processor Driver
-CONFIG_ACPI_CPU
- This driver installs ACPI as the idle handler for Linux, and uses
- ACPI C2 and C3 processor states to save power, on systems that
- support it.
-
ACPI Button
CONFIG_ACPI_BUTTON
This driver registers for events based on buttons, such as the
@@ -19319,11 +20024,6 @@ CONFIG_ACPI_EC
the battery and thermal drivers. If you are compiling for a laptop,
say Y.
-ACPI Control Method Battery
-CONFIG_ACPI_CMBATT
- This driver adds support for battery information through
- /proc/acpi/battery. If you have a laptop with a battery, say Y.
-
ACPI Thermal
CONFIG_ACPI_THERMAL
This driver handles overheating conditions on laptops. It is HIGHLY
@@ -19339,6 +20039,9 @@ CONFIG_ACPI_ASUS
display brightness and output, switching the LCD backlight on and off,
and most importantly, allows you to blink those fancy LEDs intended
for reporting mail and wireless status.
+
+ Note: the display switching code is currently considered EXPERIMENTAL,
+ toying with these values may even lock your machine.
All settings are changed via /proc/acpi/asus directory entries. Owner
and group for these entries can be set with asus_uid and asus_gid
@@ -19816,6 +20519,15 @@ CONFIG_X86_CPUID
<file:Documentation/modules.txt>. The module will be called
cpuid.o
+x86 BIOS Enhanced Disk Drive support
+CONFIG_EDD
+ Say Y or M here if you want to enable BIOS Enhanced Disk Drive
+ Services real mode BIOS calls to determine which disk
+ BIOS tries boot from. This information is then exported via /proc.
+
+ This option is experimental, but believed to be safe,
+ and most disk controller BIOS vendors do not yet implement this feature.
+
SBC-60XX Watchdog Timer
CONFIG_60XX_WDT
This driver can be used with the watchdog timer found on some
@@ -20934,10 +21646,10 @@ CONFIG_SC6600_CDROM
DSP 16 card. Enter: 0 for Sony, 1 for Panasonic, 2 for IDE, 4 for no
CD-ROM present.
-C-Media PCI (CMI8338/8378)
+C-Media PCI (CMI8338/8738)
CONFIG_SOUND_CMPCI
Say Y or M if you have a PCI sound card using the CMI8338
- or the CMI8378 chipset. Data on these chips are available at
+ or the CMI8738 chipset. Data on these chips are available at
<http://www.cmedia.com.tw/>.
A userspace utility to control some internal registers of these
@@ -21795,6 +22507,11 @@ CONFIG_HISAX_HFC_SX
This enables HiSax support for the HFC-S+, HFC-SP and HFC-PCMCIA
cards. This code is not finished yet.
+Formula-n enter:now PCI card (EXPERIMENTAL)
+CONFIG_HISAX_ENTERNOW_PCI
+ This enables HiSax support for the Formula-n enter:now PCI
+ ISDN card.
+
Am7930
CONFIG_HISAX_AMD7930
This enables HiSax support for the AMD7930 chips on some SPARCs.
@@ -22942,15 +23659,16 @@ CONFIG_ARIADNE
want). The module is called ariadne.o. If you want to compile it as
a module, say M here and read <file:Documentation/modules.txt>.
-Ariadne II and X-Surf support
-CONFIG_ARIADNE2
- This driver is for the Village Tronic Ariadne II and the Individual
+Zorro NS8390-based Ethernet support
+CONFIG_ZORRO8390
+ This driver is for Zorro Ethernet cards using an NS8390-compatible
+ chipset, like the Village Tronic Ariadne II and the Individual
Computers X-Surf Ethernet cards. If you have such a card, 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 will be called ariadne2.o. If you want to compile it as
+ The module is called zorro8390.o. If you want to compile it as
a module, say M here and read <file:Documentation/modules.txt>.
A2065 support
@@ -23723,6 +24441,38 @@ CONFIG_MAC_EMUMOUSEBTN
/proc/sys/dev/mac_hid/mouse_button2_keycode
/proc/sys/dev/mac_hid/mouse_button3_keycode
+Set high memory pool address
+CONFIG_HIGHMEM_START_BOOL
+ Unless you know what you are doing you *should not* set this option.
+
+ It can be used to override the default PKMAP_BASE address which
+ is the location of the high memory pool. This can be useful in
+ optimizing virtual memory usage in a system.
+
+Set maximum low memory
+CONFIG_LOWMEM_SIZE_BOOL
+ Unless you know what you are doing you *should not* set this option.
+
+ It can be used to override the standard calculated value of
+ MAX_LOW_MEM. This can be useful in optimizing virtual memory usage
+ in a system.
+
+Set custom kernel base address
+CONFIG_KERNEL_START_BOOL
+ Unless you know what you are doing you *should not* set this option.
+
+ It can be used to override the standard PAGE_OFFSET/KERNELBASE
+ value used by the kernel. This can be useful in controlling
+ amount of virtual address space available to the kernel.
+
+Set custom user task size
+CONFIG_TASK_SIZE_BOOL
+ Unless you know what you are doing you *should not* set this option.
+
+ It can be used to override the standard TASK_SIZE value used
+ by the kernel. This can be useful in controlling amount of
+ virtual address space available to user tasks.
+
Enhanced Real Time Clock Support (/dev/rtc)
CONFIG_PPC_RTC
If you say Y here and create a character special file /dev/rtc with
@@ -24990,6 +25740,46 @@ CONFIG_CPU_ARM1020
Say Y if you want support for the ARM1020 processor.
Otherwise, say N.
+Disable I-Cache
+CONFIG_CPU_ICACHE_DISABLE
+ Say Y here to disable the processor instruction cache. Unless
+ you have a reason not to or are unsure, say N.
+
+Disable D-Cache
+CONFIG_CPU_DCACHE_DISABLE
+ Say Y here to disable the processor data cache. Unless
+ you have a reason not to or are unsure, say N.
+
+Force write through D-cache
+CONFIG_CPU_DCACHE_WRITETHROUGH
+ Say Y here to use the data cache in write-through mode. Unless you
+ specifically require this or are unsure, say N.
+
+Round robin I and D cache replacement algorithm
+CONFIG_CPU_CACHE_ROUND_ROBIN
+ Say Y here to use the predictable round-robin cache replacement
+ policy. Unless you specifically require this or are unsure, say N.
+
+Disable branch prediction
+CONFIG_CPU_BPREDICT_DISABLE
+ Say Y here to disable branch prediction. If unsure, say N.
+
+Compressed boot loader in ROM/flash
+CONFIG_ZBOOT_ROM
+ Say Y here if you intend to execute your compressed kernel image (zImage)
+ directly from ROM or flash. If unsure, say N.
+
+Compressed ROM boot loader base address
+CONFIG_ZBOOT_ROM_TEXT
+ The base address for zImage. Unless you have special requirements, you
+ should not change this value.
+
+Compressed ROM boot loader BSS address
+CONFIG_ZBOOT_ROM_BSS
+ The base address of 64KiB of read/write memory, which must be available
+ while the decompressor is running. Unless you have special requirements,
+ you should not change this value.
+
Support StrongARM SA-110 processor
CONFIG_CPU_SA110
The Intel StrongARM(R) SA-110 is a 32-bit microprocessor and
@@ -25149,6 +25939,19 @@ CONFIG_DEBUG_CLPS711X_UART2
output to the second serial port on these devices. Saying N will
cause the debug messages to appear on the first serial port.
+Kernel log buffer length shift
+CONFIG_LOG_BUF_SHIFT
+ The kernel log buffer has a fixed size of :
+ 64 kB (2^16) on MULTIQUAD and IA64,
+ 128 kB (2^17) on S390
+ 32 kB (2^15) on SMP systems
+ 16 kB (2^14) on UP systems
+
+ You have the ability to change this size with this paramter which
+ fixes the bit shift of to get the buffer length (which must be a
+ power of 2). Eg: a value of 16 sets the buffer to 64 kB (2^16).
+ The default value of 0 uses standard values above.
+
Disable pgtable cache
CONFIG_NO_PGT_CACHE
Normally the kernel maintains a `quicklist' of preallocated
@@ -25505,6 +26308,44 @@ CONFIG_USB_STORAGE_JUMPSHOT
brave people. System crashes and other bad things are likely to occur if
you use this driver. If in doubt, select N.
+Tieman Voyager USB Braille display support (EXPERIMENTAL)
+CONFIG_USB_BRLVGER
+ Say Y here if you want to use the Voyager USB Braille display from
+ Tieman. See <file:Documentation/usb/brlvger.txt> for more
+ information.
+
+ This code 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 brlvger.o. If you want to compile it as
+ a module, say M here and read <file:Documentation/modules.txt>.
+
+KB Gear JamStudio tablet support
+CONFIG_USB_KBTAB
+ Say Y here if you want to use the USB version of the KB Gear
+ JamStudio tablet. Make sure to say Y to "Mouse support"
+ (CONFIG_INPUT_MOUSEDEV) and/or "Event interface support"
+ (CONFIG_INPUT_EVDEV) 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 kbtab.o. If you want to compile it as a
+ module, say M here and read <file:Documentation/modules.txt>.
+
+USB Inside Out Edgeport Serial Driver (TI devices)
+CONFIG_USB_SERIAL_EDGEPORT_TI
+ Say Y here if you want to use any of the devices from Inside Out
+ Networks (Digi) that are not supported by the io_edgeport driver.
+ This includes the Edgeport/1 device.
+
+ This code 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 io_ti.o. If you want to compile it
+ as a module, say M here and read <file:Documentation/modules.txt>.
+
+USB Keyspan MPR Firmware
+CONFIG_USB_SERIAL_KEYSPAN_MPR
+ Say Y here to include firmware for the Keyspan MPR converter.
+
Winbond W83977AF IrDA Device Driver
CONFIG_WINBOND_FIR
Say Y here if you want to build IrDA support for the Winbond
@@ -26549,11 +27390,13 @@ CONFIG_WATCHDOG_CP1XXX
# Choice: ia64type
Itanium
CONFIG_ITANIUM
- Select your IA64 processor type. The default is Intel Itanium.
+ Select your IA-64 processor type. The default is Intel Itanium.
+ This choice is safe for all IA-64 systems, but may not perform
+ optimally on systems with, say, Itanium 2 or newer processors.
-McKinley
+Itanium 2
CONFIG_MCKINLEY
- Select this to configure for a McKinley processor.
+ Select this to configure for an Itanium 2 (McKinley) processor.
# Choice: ia64system
IA-64 system type
@@ -26610,6 +27453,14 @@ CONFIG_IA64_MCA
Say Y here to enable machine check support for IA-64. If you're
unsure, answer Y.
+Use PAL_HALT_LIGHT in idle loop
+CONFIG_IA64_PAL_IDLE
+ Say Y here to enable use of PAL_HALT_LIGHT in the cpu_idle loop.
+ This allows the CPU to enter a low power state when idle. You
+ can enable CONFIG_IA64_PALINFO and check /proc/pal/cpu0/power_info
+ to see the power consumption and latency for this state. If you're
+ unsure your firmware supports it, answer N.
+
Disable IA-64 Virtual Hash Page Table
CONFIG_DISABLE_VHPT
The Virtual Hash Page Table (VHPT) enhances virtual address
@@ -26630,12 +27481,31 @@ CONFIG_IA64_DEBUG_IRQ
and restore instructions. It's useful for tracking down spinlock
problems, but slow! If you're unsure, select N.
-Early printk support (requires VGA!)
+Early printk support
CONFIG_IA64_EARLY_PRINTK
- Selecting this option uses the VGA screen for printk() output before
- the consoles are initialised. It is useful for debugging problems
- early in the boot process, but only if you have a VGA screen
- attached. If you're unsure, select N.
+ Selecting this option uses a UART or VGA screen (or both) for
+ printk() output before the consoles are initialised. It is useful
+ for debugging problems early in the boot process, but only if you
+ have a serial terminal or a VGA screen attached. If you're unsure,
+ select N.
+
+Early printk on serial port
+CONFIG_IA64_EARLY_PRINTK_UART
+ Select this option to use a serial port for early printk() output.
+ You must also select either CONFIG_IA64_EARLY_PRINTK_UART_BASE or
+ CONFIG_SERIAL_HCDP. If you select CONFIG_SERIAL_HCDP, early
+ printk() output will appear on the first console device described by
+ the HCDP. If you set CONFIG_IA64_EARLY_PRINTK_UART_BASE, the HCDP
+ will be ignored.
+
+UART base address
+CONFIG_IA64_EARLY_PRINTK_UART_BASE
+ The physical MMIO address of the UART to use for early printk().
+ This overrides any UART located using the EFI HCDP table.
+
+Early printk on VGA
+CONFIG_IA64_EARLY_PRINTK_VGA
+ Select this option to use VGA for early printk() output.
Print possible IA64 hazards to console
CONFIG_IA64_PRINT_HAZARDS
@@ -26660,6 +27530,58 @@ CONFIG_IA64_PALINFO
To use this option, you have to check that the "/proc file system
support" (CONFIG_PROC_FS) is enabled, too.
+PPC4xx DMA controller support
+CONFIG_PPC4xx_DMA
+ Select this to enable support for the PPC4xx general purpose DMA
+ controller.
+
+ttyS0 device
+CONFIG_UART0_TTYS0
+ This option reverses the mapping between the hardware UART and software
+ device. Selecting UART0 gives the normal mapping of UART0=ttyS0 and
+ UART1=ttyS1. Selecting UART1 gives the reverse mapping of UART0=ttyS1
+ and UART1=ttyS0. Most people will use UART0.
+
+PowerPC 405 on-chip ethernet
+CONFIG_IBM_OCP_ENET
+ If you want to use the 405 built-in ethernet select this.
+
+CONFIG_IBM_OCP_ENET_ERROR_MSG
+ Enable this option to print verbose debug messages for troubleshooting.
+
+PowerPC 405 on-chip ethernet -- Number of receive buffers
+CONFIG_IBM_OCP_ENET_RX_BUFF
+ Number of ethernet receive (read) buffers. Unless you know what you
+ are doing the default should be fine.
+
+PowerPC 405 on-chip ethernet -- Number of transmit buffers
+CONFIG_IBM_OCP_ENET_TX_BUFF
+ Number of ethernet transmit (write) buffers. Unless you know what
+ you are doing the default should be fine.
+
+PowerPC 405 on-chip ethernet -- Amount of bytes to Reserve on a skb
+CONFIG_IBM_OCP_ENET_SKB_RES
+ Many standard ethernet drivers need to reserve 2 bytes of data
+ on the skb before giving the data ptr to the hardware. This is
+ so the IP data will be 16-byte aligned when it goes up the stack.
+ This is a requirement for some processors and it can cause major
+ slow downs on others. The 405GP dose not have problems with the
+ misaligned data so the default is 0. If you need to route the
+ incoming ethernet packets to another device that has alignment
+ requirements this can help remove a data copy. A value of 2 can
+ help at getting 16-byte aligned IP data for another device. A
+ larger value can be used when routing to a IP tunnel device.
+ Make sure XXX_DESC_SIZE - XXX_SKB_RES >= 1514, or larger if VLANS
+ are used.
+
+PPC 405 I2C Algorithm
+CONFIG_PPC405_I2C_ALGO
+ Enable this option to use the built-in I2C on your 405.
+
+PPC 405 I2C Adapter
+CONFIG_PPC405_I2C_ADAP
+ Enable this option to use the built-in I2C on your 405.
+
/proc/efi/vars support
CONFIG_EFI_VARS
If you say Y here, you are able to get EFI (Extensible Firmware
@@ -26752,6 +27674,11 @@ CONFIG_DEBUG_SPINLOCK
best used in conjunction with the NMI watchdog so that spinlock
deadlocks are also debuggable.
+Additional run-time checks
+CONFIG_CHECKING
+ Enables some internal consistency checks for kernel debugging.
+ You should normally say N.
+
Read-write spinlock debugging
CONFIG_DEBUG_RWLOCK
If you say Y here then read-write lock processing will count how many
@@ -27054,7 +27981,7 @@ CONFIG_CPU_SUBTYPE_SH7750
SH7751
CONFIG_CPU_SUBTYPE_SH7751
- Select SH7750 if you have a 166 Mhz SH-4 HD6417751 CPU.
+ Select SH7751 if you have a 166 Mhz SH-4 HD6417751 CPU.
ST40RA/ST40STB1
CONFIG_CPU_SUBTYPE_ST40STB1
@@ -27425,6 +28352,12 @@ CONFIG_TULIP_MWI
If unsure, say N.
+Hotplug firmware loading support (EXPERIMENTAL)
+CONFIG_FW_LOADER
+ This option is provided for the case where no in-kernel-tree modules require
+ hotplug firmware loading support, but a module built outside the kernel tree
+ does.
+
NatSemi SCx200 support
CONFIG_SCx200
This provides basic support for the National Semiconductor SCx200
@@ -27650,6 +28583,82 @@ CONFIG_CRC32
kernel tree does. Such modules that use library CRC32 functions
require that you say M or Y here.
+Chassis LCD and LED support
+CONFIG_CHASSIS_LCD_LED
+ Say Y here if you want to enable support for the Heartbeat,
+ Disk/Network activities LEDs on some PA-RISC machines,
+ or support for the LCD that can be found on recent material.
+
+ This has nothing to do with LED State support for A, J and E class.
+
+ If unsure, say Y.
+
+VSC/GSC/HSC bus support
+CONFIG_GSC
+ The VSC, GSC and HSC busses were used from the earliest 700-series
+ workstations up to and including the C360/J2240 workstations. They
+ were also used in servers from the E-class to the K-class. They
+ are not found in B1000, C3000, J5000, A500, L1000, N4000 and upwards.
+ If in doubt, say "Y".
+
+Wax I/O support
+CONFIG_GSC_WAX
+ Say Y here to support the Wax multifunction chip found in some
+ older systems, including B/C/D/R class and 715/64, 715/80 and
+ 715/100. Wax includes an EISA adapter, a serial port (not always
+ used), a HIL interface chip and is also known to be used as the
+ GSC bridge for an X.25 GSC card.
+
+GSCtoPCI/Dino PCI support
+CONFIG_GSC_DINO
+ Say Y here to support the Dino & Cujo GSC to PCI bridges found in
+ machines from the B132 to the C360, the J2240 and the A180. Some
+ GSC/HSC cards (eg gigabit & dual 100 Mbit Ethernet) have a Dino on
+ the card, and you also need to say Y here if you have such a card.
+ Note that Dino also supplies one of the serial ports on certain
+ machines. If in doubt, say Y.
+
+HPET timers
+CONFIG_HPET_TIMER
+ Use the IA-PC HPET (High Precision Event Timer) to manage
+ time in preference to the PIT and RTC, if a HPET is
+ present. The HPET provides a stable time base on SMP
+ systems, unlike the RTC, but it is more expensive to access,
+ as it is off-chip. You can find the HPET spec at
+ <http://www.intel.com/labs/platcomp/hpet/hpetspec.htm>.
+
+ If unsure, say Y.
+
+IOMMU support
+CONFIG_GART_IOMMU
+ Support the K8 IOMMU. Needed to run systems with more than 4GB of memory
+ properly with 32-bit PCI devices that do not support DAC (Double Address
+ Cycle). The IOMMU can be turned off at runtime with the iommu=off parameter.
+ Normally the kernel will take the right choice by itself.
+ If unsure say Y
+
+Debug __init statements
+CONFIG_INIT_DEBUG
+ Fill __init and __initdata at the end of boot. This helps debugging
+ invalid uses of __init and __initdata after initialization.
+
+Force IOMMU to on
+CONFIG_IOMMU_DEBUG
+ Force the IOMMU to on even when you have less than 4GB of memory and add
+ debugging code.
+ Can be disabled at boot time with iommu=noforce.
+
+IOMMU leak tracing
+CONFIG_IOMMU_LEAK
+ Add a simple leak tracer to the IOMMU code. This is useful when you
+ are debugging a buggy device driver that leaks IOMMU mappings.
+
+pSeries Hypervisor Virtual Console support
+CONFIG_HVC_CONSOLE
+ pSeries machines when partitioned support a hypervisor virtual
+ console. This driver allows each pSeries partition to have a console
+ which is accessed via the HMC.
+
CONFIG_CRYPTO
This option provides the core Cryptographic API.
@@ -27733,6 +28742,12 @@ CONFIG_CRYPTO_AES
See http://csrc.nist.gov/encryption/aes/ for more information.
+CONFIG_CRYPTO_CAST5
+ CAST5 (CAST-128) cipher algorithm.
+
+ The CAST5 encryption algorithm (synonymous with CAST-128) is
+ described in RFC2144.
+
CONFIG_CRYPTO_DEFLATE
This is the Deflate algorithm (RFC1951), specified for use in
IPSec with the IPCOMP protocol (RFC3173, RFC2394).
@@ -27741,6 +28756,28 @@ CONFIG_CRYPTO_DEFLATE
CONFIG_CRYPTO_TEST
Quick & dirty crypto test module.
+
+CONFIG_SOUND_WM97XX
+ Say Y here to support the Wolfson WM9705 and WM9712 touchscreen
+ controllers. These controllers are mainly found in PDA's
+ i.e. Dell Axim and Toshiba e740
+
+ This is experimental code.
+ Please see Documentation/wolfson-touchscreen.txt for
+ a complete list of parameters.
+
+ In order to use this driver, a char device called wm97xx with a major
+ number of 10 and minor number 16 will have to be created under
+ /dev/touchscreen.
+
+ e.g.
+ mknod /dev/touchscreen/wm97xx c 10 16
+
+ 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. The module will be called ac97_plugin_wm97xx.o.
+
+ If unsure, say N.
#
# A couple of things I keep forgetting:
diff --git a/MAINTAINERS b/MAINTAINERS
index 077fb7e..5b7d102 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -163,8 +163,8 @@ W: http://domsch.com/linux
S: Supported
ACPI
-P: Andy Grover
-M: andrew.grover@intel.com
+P: Len Brown
+M: len.brown@intel.com
L: acpi-devel@lists.sourceforge.net
W: http://sf.net/projects/acpi/
S: Maintained
@@ -202,7 +202,7 @@ S: Maintained
ALCATEL SPEEDTOUCH USB DRIVER
P: Duncan Sands
-M: duncan.sands@wanadoo.fr
+M: duncan.sands@free.fr
L: linux-usb-users@lists.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net
W: http://www.linux-usb.org/SpeedTouch/
@@ -266,6 +266,16 @@ M: layes@loran.com
L: linux-net@vger.kernel.org
S: Maintained
+ASUS ACPI EXTRAS DRIVER
+P: Karol Kozimor
+M: sziwan@users.sourceforge.net
+P: Julien Lerouge
+M: julien.lerouge@free.fr
+L: acpi4asus-user@lists.sourceforge.net
+W: http://sourceforge.net/projects/acpi4asus
+W: http://julien.lerouge.free.fr
+S: Maintained
+
ATM
P: Chas Williams
M: chas@cmf.nrl.navy.mil
@@ -420,26 +430,24 @@ L: codalist@coda.cs.cmu.edu
W: http://www.coda.cs.cmu.edu/
S: Maintained
-HP (was COMPAQ) FIBRE CHANNEL 64-bit/66MHz PCI non-intelligent HBA
-P: Stephen Cameron
-M: arrays@hp.com
-M: steve.cameron@hp.com
-L: cpqfc-discuss@lists.sourceforge.net
+HP FIBRE CHANNEL 64-bit/66MHz PCI non-intelligent HBA
+P: Chase Maupin
+M: chase.maupin@hp.com
+L: iss_storagedev@hp.com
S: Odd Fixes
-HP (was COMPAQ) SMART2 RAID DRIVER
-P: Stephen Cameron
-M: arrays@hp.com
-M: steve.cameron@hp.com
-L: cpqarray-discuss@lists.sourceforge.net
+
+HP SMART2 RAID DRIVER
+P: Francis Wiran
+M: francis.wiran@hp.com
+L: iss_storagedev@hp.com
S: Odd Fixes
-HP (was COMPAQ) SMART CISS RAID DRIVER
-P: Stephen Cameron
-M: arrays@hp.com
-M: steve.cameron@hp.com
-L: cciss-discuss@lists.sourceforge.net
-S: Supported
+HP SMART CISS RAID DRIVER
+P: Mike Miller, Michael Ni
+M: mike.miller@hp.com
+L: iss_storagedev@hp.com
+S: Supported
COMPUTONE INTELLIPORT MULTIPORT CARD
P: Michael H. Warfield
@@ -504,6 +512,14 @@ P: James Morris
M: jmorris@intercode.com.au
P: David S. Miller
M: davem@redhat.com
+MARVELL YUKON / SYSKONNECT DRIVER
+P: Mirko Lindner
+M: mlindner@syskonnect.de
+P: Ralph Roesler
+M: rroesler@syskonnect.de
+W: http://www.syskonnect.com
+S: Supported
+M: davem@redhat.com
W http://samba.org/~jamesm/crypto/
L: linux-kernel@vger.kernel.org
S: Maintained
@@ -670,7 +686,7 @@ S: Maintained
ETHERNET BRIDGE
P: Stephen Hemminger
M: shemminger@osdl.org
-L: bridge@math.leidenuniv.nl
+L: bridge@osdl.org
W: http://bridge.sourceforge.net/
S: Maintained
@@ -790,13 +806,11 @@ M: mikulas@artax.karlin.mff.cuni.cz
W: http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi
S: Maintained
-I2C DRIVERS
-P: Simon Vogl
-M: simon@tk.uni-linz.ac.at
-P: Frodo Looijaard
-M: frodol@dds.nl
-L: linux-i2c@pelican.tk.uni-linz.ac.at
-W: http://www.tk.uni-linz.ac.at/~simon/private/i2c
+I2C AND SENSORS DRIVERS
+P: Jean Delvare
+M: khali@linux-fr.org
+L: sensors@stimpy.netroedge.com
+W: http://www.lm-sensors.nu/
S: Maintained
i386 BOOT CODE
@@ -944,6 +958,11 @@ M: ralf@oss.sgi.com
L: linux-mips@linux-mips.org
S: Maintained
+IOC4 IDE DRIVER
+P: Jeremy Higdon
+M: jeremy@sgi.com
+S: Maintained
+
IP MASQUERADING:
P: Juanjo Ciarlante
M: jjciarla@raiz.uncu.edu.ar
@@ -1214,7 +1233,7 @@ M: James.Bottomley@HansenPartnership.com
L: linux-scsi@vger.kernel.org
S: Maintained
-NETFILTER/IPTABLES
+NETFILTER/IPTABLES/IPCHAINS
P: Rusty Russell
P: Marc Boucher
P: James Morris
@@ -1725,8 +1744,6 @@ P: Paul Mundt
M: lethal@linux-sh.org
P: Richard Curnow
M: richard.curnow@superh.com
-P: Benedict Gaster
-M: benedict.gaster@superh.com
L: linuxsh-shmedia-dev@lists.sourceforge.net
W: http://www.linux-sh.org
W: http://linux-shmedia.bkbits.net
@@ -1745,12 +1762,6 @@ M: mj@ucw.cz
L: linux-video@atrey.karlin.mff.cuni.cz
S: Maintained
-SYSKONNECT DRIVER
-P: Mirko Lindner
-M: mlindner@syskonnect.de
-W: http://www.syskonnect.com
-S: Supported
-
SYSV FILESYSTEM
P: Christoph Hellwig
M: hch@infradead.org
@@ -2059,6 +2070,13 @@ M: dbrownell@users.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net
S: Maintained
+USB W9968CF DRIVER
+P: Luca Risolia
+M: luca_ing@libero.it
+L: linux-usb-devel@lists.sourceforge.net
+W: http://go.lamarinapunto.com
+S: Maintained
+
VFAT FILESYSTEM:
P: Gordon Chaffee
M: chaffee@cs.berkeley.edu
diff --git a/Makefile b/Makefile
index fb98323..78e3574 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
VERSION = 2
PATCHLEVEL = 4
-SUBLEVEL = 22
+SUBLEVEL = 23
EXTRAVERSION =
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
@@ -189,6 +189,7 @@ DRIVERS-$(CONFIG_PARIDE) += drivers/block/paride/paride.a
DRIVERS-$(CONFIG_HAMRADIO) += drivers/net/hamradio/hamradio.o
DRIVERS-$(CONFIG_TC) += drivers/tc/tc.a
DRIVERS-$(CONFIG_USB) += drivers/usb/usbdrv.o
+DRIVERS-$(CONFIG_USB_GADGET) += drivers/usb/gadget/built-in.o
DRIVERS-y +=drivers/media/media.o
DRIVERS-$(CONFIG_INPUT) += drivers/input/inputdrv.o
DRIVERS-$(CONFIG_HIL) += drivers/hil/hil.o
diff --git a/arch/um/defconfig b/arch/um/defconfig
index 77087ce..f5279c3 100644
--- a/arch/um/defconfig
+++ b/arch/um/defconfig
@@ -62,6 +62,9 @@ CONFIG_SSL_CHAN="pty"
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
# CONFIG_WATCHDOG is not set
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_UML_WATCHDOG is not set
CONFIG_UML_SOUND=y
CONFIG_SOUND=y
CONFIG_HOSTAUDIO=y
@@ -99,6 +102,7 @@ CONFIG_DUMMY=y
CONFIG_TUN=y
CONFIG_PPP=y
# CONFIG_PPP_MULTILINK is not set
+# CONFIG_PPP_FILTER is not set
# CONFIG_PPP_ASYNC is not set
# CONFIG_PPP_SYNC_TTY is not set
# CONFIG_PPP_DEFLATE is not set
@@ -129,6 +133,12 @@ CONFIG_INET=y
# CONFIG_SYN_COOKIES is not set
# CONFIG_IPV6 is not set
# CONFIG_KHTTPD is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
# CONFIG_ATM is not set
# CONFIG_VLAN_8021Q is not set
@@ -141,6 +151,7 @@ CONFIG_INET=y
#
# Appletalk devices
#
+# CONFIG_DEV_APPLETALK is not set
# CONFIG_DECNET is not set
# CONFIG_BRIDGE is not set
# CONFIG_X25 is not set
@@ -173,13 +184,16 @@ CONFIG_REISERFS_FS=y
# CONFIG_REISERFS_CHECK is not set
# CONFIG_REISERFS_PROC_INFO is not set
# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
+# CONFIG_BEFS_DEBUG is not set
# CONFIG_BFS_FS is not set
# CONFIG_EXT3_FS is not set
# CONFIG_JBD is not set
+# CONFIG_JBD_DEBUG is not set
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_UMSDOS_FS=y
@@ -197,9 +211,12 @@ CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
# CONFIG_ZISOFS is not set
# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
CONFIG_MINIX_FS=y
# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
CONFIG_PROC_FS=y
CONFIG_DEVFS_FS=y
@@ -207,11 +224,14 @@ CONFIG_DEVFS_MOUNT=y
# CONFIG_DEVFS_DEBUG is not set
CONFIG_DEVPTS_FS=y
# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
#
# Network File Systems
@@ -219,11 +239,24 @@ CONFIG_EXT2_FS=y
# CONFIG_CODA_FS is not set
# CONFIG_INTERMEZZO_FS is not set
# CONFIG_NFS_FS is not set
+# CONFIG_NFS_V3 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_ROOT_NFS is not set
# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+# CONFIG_NFSD_TCP is not set
# CONFIG_SUNRPC is not set
# CONFIG_LOCKD is not set
# CONFIG_SMB_FS is not set
# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
# CONFIG_ZISOFS_FS is not set
#
@@ -302,6 +335,13 @@ CONFIG_SCSI_DEBUG=y
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
#
# Memory Technology Devices (MTD)
@@ -310,6 +350,8 @@ CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
# CONFIG_MTD_PARTITIONS is not set
# CONFIG_MTD_CONCAT is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
#
# User Modules And Translation Layers
@@ -325,19 +367,28 @@ CONFIG_MTD_BLOCK=y
# CONFIG_MTD_CFI is not set
# CONFIG_MTD_JEDECPROBE is not set
# CONFIG_MTD_GEN_PROBE is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+# CONFIG_MTD_CFI_AMDSTD is not set
+# CONFIG_MTD_CFI_STAA is not set
# CONFIG_MTD_RAM is not set
# CONFIG_MTD_ROM is not set
# CONFIG_MTD_ABSENT is not set
# CONFIG_MTD_OBSOLETE_CHIPS is not set
+# CONFIG_MTD_AMDSTD is not set
+# CONFIG_MTD_SHARP is not set
+# CONFIG_MTD_JEDEC is not set
#
# Mapping drivers for chip access
#
+# CONFIG_MTD_PHYSMAP is not set
+# CONFIG_MTD_PCI is not set
# CONFIG_MTD_PCMCIA is not set
#
# Self-contained MTD device drivers
#
+# CONFIG_MTD_PMC551 is not set
# CONFIG_MTD_SLRAM is not set
# CONFIG_MTD_MTDRAM is not set
CONFIG_MTD_BLKMTD=y
diff --git a/arch/um/kernel/irq.c b/arch/um/kernel/irq.c
index 5da216c..4d1e2de 100644
--- a/arch/um/kernel/irq.c
+++ b/arch/um/kernel/irq.c
@@ -79,9 +79,6 @@ struct hw_interrupt_type no_irq_type = {
end_none
};
-/* Not changed */
-volatile unsigned long irq_err_count;
-
/*
* Generic, controller-independent functions:
*/
@@ -130,11 +127,10 @@ int get_irq_list(char *buf)
p += sprintf(p, "\n");
#endif
#endif
- p += sprintf(p, "ERR: %10lu\n", irq_err_count);
+ p += sprintf(p, "ERR: %10lu\n", 0L);
return p - buf;
}
-
/*
* This should really return information about whether
* we should do bottom half handling etc. Right now we
diff --git a/drivers/char/Makefile b/drivers/char/Makefile
index 7ce93bc..165ac21 100644
--- a/drivers/char/Makefile
+++ b/drivers/char/Makefile
@@ -24,7 +24,7 @@ obj-y += mem.o tty_io.o n_tty.o tty_ioctl.o raw.o pty.o misc.o random.o
export-objs := busmouse.o console.o keyboard.o sysrq.o \
misc.o pty.o random.o selection.o serial.o \
sonypi.o tty_io.o tty_ioctl.o generic_serial.o \
- au1000_gpio.o hp_psaux.o nvram.o scx200.o
+ au1000_gpio.o hp_psaux.o nvram.o scx200.o fetchop.o
mod-subdirs := joystick ftape drm drm-4.0 pcmcia
@@ -217,6 +217,7 @@ obj-$(CONFIG_BVME6000_SCC) += generic_serial.o vme_scc.o
obj-$(CONFIG_HVC_CONSOLE) += hvc_console.o
obj-$(CONFIG_SERIAL_TX3912) += generic_serial.o serial_tx3912.o
obj-$(CONFIG_TXX927_SERIAL) += serial_txx927.o
+obj-$(CONFIG_SGI_L1_SERIAL) += sn_serial.o
subdir-$(CONFIG_RIO) += rio
subdir-$(CONFIG_INPUT) += joystick
@@ -230,6 +231,7 @@ ifeq ($(CONFIG_INPUT),y)
obj-y += joystick/js.o
endif
+obj-$(CONFIG_FETCHOP) += fetchop.o
obj-$(CONFIG_BUSMOUSE) += busmouse.o
obj-$(CONFIG_DTLK) += dtlk.o
obj-$(CONFIG_R3964) += n_r3964.o
@@ -253,6 +255,7 @@ obj-$(CONFIG_I8K) += i8k.o
obj-$(CONFIG_DS1620) += ds1620.o
obj-$(CONFIG_INTEL_RNG) += i810_rng.o
obj-$(CONFIG_AMD_RNG) += amd768_rng.o
+obj-$(CONFIG_HW_RANDOM) += hw_random.o
obj-$(CONFIG_AMD_PM768) += amd76x_pm.o
obj-$(CONFIG_BRIQ_PANEL) += briq_panel.o
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 79d63d4..bd5bef5 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -21,6 +21,7 @@
#include <linux/raw.h>
#include <linux/tty.h>
#include <linux/capability.h>
+#include <linux/ptrace.h>
#include <asm/uaccess.h>
#include <asm/io.h>
@@ -504,16 +505,23 @@ static loff_t null_lseek(struct file * file, loff_t offset, int orig)
*/
static loff_t memory_lseek(struct file * file, loff_t offset, int orig)
{
+ loff_t ret;
+
switch (orig) {
case 0:
file->f_pos = offset;
- return file->f_pos;
+ ret = file->f_pos;
+ force_successful_syscall_return();
+ break;
case 1:
file->f_pos += offset;
- return file->f_pos;
+ ret = file->f_pos;
+ force_successful_syscall_return();
+ break;
default:
- return -EINVAL;
+ ret = -EINVAL;
}
+ return ret;
}
static int open_port(struct inode * inode, struct file * filp)
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index c6ee59d..0873f33 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -154,6 +154,7 @@ extern void tub3270_init(void);
extern void rs285_console_init(void);
extern void sa1100_rs_console_init(void);
extern void sgi_serial_console_init(void);
+extern void sn_sal_serial_console_init(void);
extern void sci_console_init(void);
extern void dec_serial_console_init(void);
extern void tx3912_console_init(void);
@@ -454,8 +455,6 @@ void do_tty_hangup(void *data)
redirect = NULL;
}
spin_unlock(&redirect_lock);
- if (f)
- fput(f);
check_tty_count(tty, "do_tty_hangup");
file_list_lock();
@@ -542,6 +541,8 @@ void do_tty_hangup(void *data)
} else if (tty->driver.hangup)
(tty->driver.hangup)(tty);
unlock_kernel();
+ if (f)
+ fput(f);
}
void tty_hangup(struct tty_struct * tty)
@@ -1075,7 +1076,7 @@ static void release_mem(struct tty_struct *tty, int idx)
}
o_tty->magic = 0;
(*o_tty->driver.refcount)--;
- list_del(&o_tty->tty_files);
+ list_del_init(&o_tty->tty_files);
free_tty_struct(o_tty);
}
@@ -1087,7 +1088,7 @@ static void release_mem(struct tty_struct *tty, int idx)
}
tty->magic = 0;
(*tty->driver.refcount)--;
- list_del(&tty->tty_files);
+ list_del_init(&tty->tty_files);
free_tty_struct(tty);
}
@@ -2431,6 +2432,12 @@ void __init tty_init(void)
kbd_init();
#endif
+#ifdef CONFIG_SGI_L1_SERIAL_CONSOLE
+ if (ia64_platform_is("sn2")) {
+ sn_sal_serial_console_init();
+ return; /* only one console right now for SN2 */
+ }
+#endif
#ifdef CONFIG_ESPSERIAL /* init ESP before rs, so rs doesn't see the port */
espserial_init();
#endif
diff --git a/include/asm-i386/hardirq.h b/include/asm-i386/hardirq.h
index bc02a16..a9b6402 100644
--- a/include/asm-i386/hardirq.h
+++ b/include/asm-i386/hardirq.h
@@ -68,6 +68,8 @@ static inline void irq_enter(int cpu, int irq)
{
++local_irq_count(cpu);
+ smp_mb();
+
while (test_bit(0,&global_irq_lock)) {
cpu_relax();
}
diff --git a/include/asm-um/archparam-i386.h b/include/asm-um/archparam-i386.h
index bd11a0d..722bc83 100644
--- a/include/asm-um/archparam-i386.h
+++ b/include/asm-um/archparam-i386.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2000, 2001 Jeff Dike (jdike@karaya.com)
+ * Copyright (C) 2000 - 2003 Jeff Dike (jdike@addtoit.com)
* Licensed under the GPL
*/
@@ -23,7 +23,7 @@ typedef elf_greg_t elf_gregset_t[ELF_NGREG];
#define ELF_DATA ELFDATA2LSB
#define ELF_ARCH EM_386
-#define ELF_PLAT_INIT(regs) do { \
+#define ELF_PLAT_INIT(regs, load_addr) do { \
PT_REGS_EBX(regs) = 0; \
PT_REGS_ECX(regs) = 0; \
PT_REGS_EDX(regs) = 0; \
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 64e9db1..b9f0236 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -1261,6 +1261,7 @@ static inline void mark_buffer_dirty_inode(struct buffer_head *bh, struct inode
}
extern void set_buffer_flushtime(struct buffer_head *);
+extern inline int get_buffer_flushtime(void);
extern void balance_dirty(void);
extern int check_disk_change(kdev_t);
extern int invalidate_inodes(struct super_block *);
@@ -1400,6 +1401,7 @@ extern void inode_init_once(struct inode *);
extern void iput(struct inode *);
extern void force_delete(struct inode *);
extern struct inode * igrab(struct inode *);
+extern struct inode * ilookup(struct super_block *, unsigned long);
extern ino_t iunique(struct super_block *, ino_t);
typedef int (*find_inode_t)(struct inode *, unsigned long, void *);
@@ -1451,8 +1453,10 @@ static inline struct buffer_head * sb_get_hash_table(struct super_block *sb, int
return get_hash_table(sb->s_dev, block, sb->s_blocksize);
}
extern void wakeup_bdflush(void);
+extern void wakeup_kupdate(void);
extern void put_unused_buffer_head(struct buffer_head * bh);
extern struct buffer_head * get_unused_buffer_head(int async);
+extern int block_dump;
extern int brw_page(int, struct page *, kdev_t, int [], int);
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 911b756..0504478 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -322,9 +322,11 @@ typedef struct page {
#define TryLockPage(page) test_and_set_bit(PG_locked, &(page)->flags)
#define PageChecked(page) test_bit(PG_checked, &(page)->flags)
#define SetPageChecked(page) set_bit(PG_checked, &(page)->flags)
+#define ClearPageChecked(page) clear_bit(PG_checked, &(page)->flags)
#define PageLaunder(page) test_bit(PG_launder, &(page)->flags)
#define SetPageLaunder(page) set_bit(PG_launder, &(page)->flags)
#define ClearPageLaunder(page) clear_bit(PG_launder, &(page)->flags)
+#define ClearPageArch1(page) clear_bit(PG_arch_1, &(page)->flags)
/*
* The zone field is never updated after free_area_init_core()
@@ -550,8 +552,8 @@ static inline int is_page_cache_freeable(struct page * page)
return page_count(page) - !!page->buffers == 1;
}
-extern int can_share_swap_page(struct page *);
-extern int remove_exclusive_swap_page(struct page *);
+extern int FASTCALL(can_share_swap_page(struct page *));
+extern int FASTCALL(remove_exclusive_swap_page(struct page *));
extern void __free_pte(pte_t);
diff --git a/init/do_mounts.c b/init/do_mounts.c
index 3b35db4..50a258d 100644
--- a/init/do_mounts.c
+++ b/init/do_mounts.c
@@ -376,6 +376,7 @@ retry:
flags |= MS_RDONLY;
goto retry;
case -EINVAL:
+ case -EBUSY:
continue;
}
/*
diff --git a/kernel/panic.c b/kernel/panic.c
index d140a48..53f9a39 100644
--- a/kernel/panic.c
+++ b/kernel/panic.c
@@ -16,6 +16,7 @@
#include <linux/init.h>
#include <linux/sysrq.h>
#include <linux/interrupt.h>
+#include <linux/console.h>
asmlinkage void sys_sync(void); /* it's really int */
@@ -31,6 +32,8 @@ static int __init panic_setup(char *str)
__setup("panic=", panic_setup);
+int machine_paniced;
+
/**
* panic - halt the system
* @fmt: The text string to print
@@ -49,6 +52,11 @@ NORET_TYPE void panic(const char * fmt, ...)
unsigned long caller = (unsigned long) __builtin_return_address(0);
#endif
+#ifdef CONFIG_VT
+ disable_console_blank();
+#endif
+ machine_paniced = 1;
+
bust_spinlocks(1);
va_start(args, fmt);
vsprintf(buf, fmt, args);
diff --git a/mm/mmap.c b/mm/mmap.c
index 505b68c..150c724 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -69,7 +69,7 @@ int vm_enough_memory(long pages)
return 1;
/* The page cache contains buffer pages these days.. */
- free = atomic_read(&page_cache_size);
+ free = page_cache_size;
free += nr_free_pages();
free += nr_swap_pages;
@@ -1047,6 +1047,9 @@ unsigned long do_brk(unsigned long addr, unsigned long len)
if (!len)
return addr;
+ if ((addr + len) > TASK_SIZE || (addr + len) < addr)
+ return -EINVAL;
+
/*
* mlock MCL_FUTURE?
*/
diff --git a/mm/mprotect.c b/mm/mprotect.c
index 4795190..05e722a 100644
--- a/mm/mprotect.c
+++ b/mm/mprotect.c
@@ -276,7 +276,7 @@ long do_mprotect(struct mm_struct *mm, unsigned long start, size_t len,
len = PAGE_ALIGN(len);
end = start + len;
if (end < start)
- return -EINVAL;
+ return -ENOMEM;
if (prot & ~(PROT_READ | PROT_WRITE | PROT_EXEC))
return -EINVAL;
if (end == start)
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 48cab96..c371ac3 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -42,6 +42,9 @@ static char *zone_names[MAX_NR_ZONES] = { "DMA", "Normal", "HighMem" };
static int zone_balance_ratio[MAX_NR_ZONES] __initdata = { 128, 128, 128, };
static int zone_balance_min[MAX_NR_ZONES] __initdata = { 20 , 20, 20, };
static int zone_balance_max[MAX_NR_ZONES] __initdata = { 255 , 255, 255, };
+static int lower_zone_reserve_ratio[MAX_NR_ZONES-1] = { 256, 32 };
+
+int vm_gfp_debug = 0;
/*
* Temporary debugging check.
@@ -107,7 +110,8 @@ static void __free_pages_ok (struct page *page, unsigned int order)
BUG();
if (PageActive(page))
BUG();
- page->flags &= ~((1<<PG_referenced) | (1<<PG_dirty));
+ ClearPageReferenced(page);
+ ClearPageDirty(page);
if (current->flags & PF_FREE_PAGES)
goto local_freelist;
@@ -254,10 +258,8 @@ static struct page * FASTCALL(balance_classzone(zone_t *, unsigned int, unsigned
static struct page * balance_classzone(zone_t * classzone, unsigned int gfp_mask, unsigned int order, int * freed)
{
struct page * page = NULL;
- int __freed = 0;
+ int __freed;
- if (!(gfp_mask & __GFP_WAIT))
- goto out;
if (in_interrupt())
BUG();
@@ -317,33 +319,36 @@ static struct page * balance_classzone(zone_t * classzone, unsigned int gfp_mask
}
current->nr_local_pages = 0;
}
- out:
+
*freed = __freed;
return page;
}
+static inline unsigned long zone_free_pages(zone_t * zone, unsigned int order)
+{
+ long free = zone->free_pages - (1UL << order);
+ return free >= 0 ? free : 0;
+}
+
/*
* This is the 'heart' of the zoned buddy allocator:
*/
struct page * __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_t *zonelist)
{
- unsigned long min;
zone_t **zone, * classzone;
struct page * page;
- int freed;
+ int freed, class_idx;
zone = zonelist->zones;
classzone = *zone;
- if (classzone == NULL)
- return NULL;
- min = 1UL << order;
+ class_idx = zone_idx(classzone);
+
for (;;) {
zone_t *z = *(zone++);
if (!z)
break;
- min += z->pages_low;
- if (z->free_pages > min) {
+ if (zone_free_pages(z, order) > z->watermarks[class_idx].low) {
page = rmqueue(z, order);
if (page)
return page;
@@ -356,18 +361,16 @@ struct page * __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_
wake_up_interruptible(&kswapd_wait);
zone = zonelist->zones;
- min = 1UL << order;
for (;;) {
- unsigned long local_min;
+ unsigned long min;
zone_t *z = *(zone++);
if (!z)
break;
- local_min = z->pages_min;
+ min = z->watermarks[class_idx].min;
if (!(gfp_mask & __GFP_WAIT))
- local_min >>= 2;
- min += local_min;
- if (z->free_pages > min) {
+ min >>= 2;
+ if (zone_free_pages(z, order) > min) {
page = rmqueue(z, order);
if (page)
return page;
@@ -376,8 +379,7 @@ struct page * __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_
/* here we're in the low on memory slow path */
-rebalance:
- if (current->flags & (PF_MEMALLOC | PF_MEMDIE)) {
+ if (current->flags & PF_MEMALLOC && !in_interrupt()) {
zone = zonelist->zones;
for (;;) {
zone_t *z = *(zone++);
@@ -393,34 +395,51 @@ rebalance:
/* Atomic allocations - we can't balance anything */
if (!(gfp_mask & __GFP_WAIT))
- return NULL;
+ goto out;
+ rebalance:
page = balance_classzone(classzone, gfp_mask, order, &freed);
if (page)
return page;
zone = zonelist->zones;
- min = 1UL << order;
- for (;;) {
- zone_t *z = *(zone++);
- if (!z)
- break;
+ if (likely(freed)) {
+ for (;;) {
+ zone_t *z = *(zone++);
+ if (!z)
+ break;
- min += z->pages_min;
- if (z->free_pages > min) {
- page = rmqueue(z, order);
- if (page)
- return page;
+ if (zone_free_pages(z, order) > z->watermarks[class_idx].min) {
+ page = rmqueue(z, order);
+ if (page)
+ return page;
+ }
}
- }
+ goto rebalance;
+ } else {
+ /*
+ * Check that no other task is been killed meanwhile,
+ * in such a case we can succeed the allocation.
+ */
+ for (;;) {
+ zone_t *z = *(zone++);
+ if (!z)
+ break;
- /* Don't let big-order allocations loop */
- if (order > 3)
- return NULL;
+ if (zone_free_pages(z, order) > z->watermarks[class_idx].high) {
+ page = rmqueue(z, order);
+ if (page)
+ return page;
+ }
+ }
+ }
- /* Yield for kswapd, and try again */
- yield();
- goto rebalance;
+ out:
+ printk(KERN_NOTICE "__alloc_pages: %u-order allocation failed (gfp=0x%x/%i)\n",
+ order, gfp_mask, !!(current->flags & PF_MEMALLOC));
+ if (unlikely(vm_gfp_debug))
+ dump_stack();
+ return NULL;
}
/*
@@ -482,17 +501,22 @@ unsigned int nr_free_buffer_pages (void)
{
pg_data_t *pgdat;
unsigned int sum = 0;
+ zonelist_t *zonelist;
+ zone_t **zonep, *zone;
for_each_pgdat(pgdat) {
- zonelist_t *zonelist = pgdat->node_zonelists + (GFP_USER & GFP_ZONEMASK);
- zone_t **zonep = zonelist->zones;
- zone_t *zone;
-
- for (zone = *zonep++; zone; zone = *zonep++) {
- unsigned long size = zone->size;
- unsigned long high = zone->pages_high;
- if (size > high)
- sum += size - high;
+ int class_idx;
+ zonelist = pgdat->node_zonelists + (GFP_USER & GFP_ZONEMASK);
+ zonep = zonelist->zones;
+ zone = *zonep;
+ class_idx = zone_idx(zone);
+
+ sum += zone->nr_cache_pages;
+ for (zone = pgdat->node_zones; zone < pgdat->node_zones + MAX_NR_ZONES; zone++) {
+ int free = zone->free_pages - zone->watermarks[class_idx].high;
+ if (free <= 0)
+ continue;
+ sum += free;
}
}
@@ -533,13 +557,9 @@ void show_free_areas_core(pg_data_t *pgdat)
zone_t *zone;
for (zone = tmpdat->node_zones;
zone < tmpdat->node_zones + MAX_NR_ZONES; zone++)
- printk("Zone:%s freepages:%6lukB min:%6lukB low:%6lukB "
- "high:%6lukB\n",
+ printk("Zone:%s freepages:%6lukB\n",
zone->name,
- K(zone->free_pages),
- K(zone->pages_min),
- K(zone->pages_low),
- K(zone->pages_high));
+ K(zone->free_pages));
tmpdat = tmpdat->node_next;
}
@@ -730,6 +750,7 @@ void __init free_area_init_core(int nid, pg_data_t *pgdat, struct page **gmap,
zone_t *zone = pgdat->node_zones + j;
unsigned long mask;
unsigned long size, realsize;
+ int idx;
zone_table[nid * MAX_NR_ZONES + j] = zone;
realsize = size = zones_size[j];
@@ -738,11 +759,15 @@ void __init free_area_init_core(int nid, pg_data_t *pgdat, struct page **gmap,
printk("zone(%lu): %lu pages.\n", j, size);
zone->size = size;
+ zone->realsize = realsize;
zone->name = zone_names[j];
zone->lock = SPIN_LOCK_UNLOCKED;
zone->zone_pgdat = pgdat;
zone->free_pages = 0;
zone->need_balance = 0;
+ zone->nr_active_pages = zone->nr_inactive_pages = 0;
+
+
if (!size)
continue;
@@ -767,9 +792,29 @@ void __init free_area_init_core(int nid, pg_data_t *pgdat, struct page **gmap,
mask = zone_balance_min[j];
else if (mask > zone_balance_max[j])
mask = zone_balance_max[j];
- zone->pages_min = mask;
- zone->pages_low = mask*2;
- zone->pages_high = mask*3;
+ zone->watermarks[j].min = mask;
+ zone->watermarks[j].low = mask*2;
+ zone->watermarks[j].high = mask*3;
+ /* now set the watermarks of the lower zones in the "j" classzone */
+ for (idx = j-1; idx >= 0; idx--) {
+ zone_t * lower_zone = pgdat->node_zones + idx;
+ unsigned long lower_zone_reserve;
+ if (!lower_zone->size)
+ continue;
+
+ mask = lower_zone->watermarks[idx].min;
+ lower_zone->watermarks[j].min = mask;
+ lower_zone->watermarks[j].low = mask*2;
+ lower_zone->watermarks[j].high = mask*3;
+
+ /* now the brainer part */
+ lower_zone_reserve = realsize / lower_zone_reserve_ratio[idx];
+ lower_zone->watermarks[j].min += lower_zone_reserve;
+ lower_zone->watermarks[j].low += lower_zone_reserve;
+ lower_zone->watermarks[j].high += lower_zone_reserve;
+
+ realsize += lower_zone->realsize;
+ }
zone->zone_mem_map = mem_map + offset;
zone->zone_start_mapnr = offset;
@@ -853,3 +898,16 @@ static int __init setup_mem_frac(char *str)
}
__setup("memfrac=", setup_mem_frac);
+
+static int __init setup_lower_zone_reserve(char *str)
+{
+ int j = 0;
+
+ while (get_option(&str, &lower_zone_reserve_ratio[j++]) == 2);
+ printk("setup_lower_zone_reserve: ");
+ for (j = 0; j < MAX_NR_ZONES-1; j++) printk("%d ", lower_zone_reserve_ratio[j]);
+ printk("\n");
+ return 1;
+}
+
+__setup("lower_zone_reserve=", setup_lower_zone_reserve);
diff --git a/mm/shmem.c b/mm/shmem.c
index a044222..da96c0d 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -46,6 +46,10 @@
#define VM_ACCT(size) (PAGE_CACHE_ALIGN(size) >> PAGE_SHIFT)
+/* info->flags needs VM_flags to handle pagein/truncate race efficiently */
+#define SHMEM_PAGEIN VM_READ
+#define SHMEM_TRUNCATE VM_WRITE
+
/* Pretend that each entry is of this size in directory's i_size */
#define BOGO_DIRENT_SIZE 20
@@ -379,8 +383,23 @@ static void shmem_truncate(struct inode *inode)
while (index < info->next_index)
freed += shmem_truncate_indirect(info, index);
BUG_ON(info->swapped > info->next_index);
- spin_unlock(&info->lock);
+ if (inode->i_mapping->nrpages && (info->flags & SHMEM_PAGEIN)) {
+ /*
+ * Call truncate_inode_pages again: racing shmem_unuse_inode
+ * may have swizzled a page in from swap since vmtruncate or
+ * generic_delete_inode did it, before we lowered next_index.
+ * Also, though shmem_getpage checks i_size before adding to
+ * cache, no recheck after: so fix the narrow window there too.
+ */
+ info->flags |= SHMEM_TRUNCATE;
+ spin_unlock(&info->lock);
+ truncate_inode_pages(inode->i_mapping, inode->i_size);
+ spin_lock(&info->lock);
+ info->flags &= ~SHMEM_TRUNCATE;
+ }
+
+ spin_unlock(&info->lock);
spin_lock(&sbinfo->stat_lock);
sbinfo->free_blocks += freed;
inode->i_blocks -= freed*BLOCKS_PER_PAGE;
@@ -407,6 +426,19 @@ static int shmem_notify_change(struct dentry *dentry, struct iattr *attr)
attr->ia_size>>PAGE_CACHE_SHIFT,
&page, SGP_READ);
}
+ /*
+ * Reset SHMEM_PAGEIN flag so that shmem_truncate can
+ * detect if any pages might have been added to cache
+ * after truncate_inode_pages. But we needn't bother
+ * if it's being fully truncated to zero-length: the
+ * nrpages check is efficient enough in that case.
+ */
+ if (attr->ia_size) {
+ struct shmem_inode_info *info = SHMEM_I(inode);
+ spin_lock(&info->lock);
+ info->flags &= ~SHMEM_PAGEIN;
+ spin_unlock(&info->lock);
+ }
}
}
@@ -454,7 +486,6 @@ static int shmem_unuse_inode(struct shmem_inode_info *info, swp_entry_t entry, s
struct address_space *mapping;
swp_entry_t *ptr;
unsigned long idx;
- unsigned long limit;
int offset;
idx = 0;
@@ -486,13 +517,9 @@ found:
inode = info->inode;
mapping = inode->i_mapping;
delete_from_swap_cache(page);
-
- /* Racing against delete or truncate? Must leave out of page cache */
- limit = (inode->i_state & I_FREEING)? 0:
- (inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
-
- if (idx >= limit || add_to_page_cache_unique(page,
+ if (add_to_page_cache_unique(page,
mapping, idx, page_hash(mapping, idx)) == 0) {
+ info->flags |= SHMEM_PAGEIN;
ptr[offset].val = 0;
info->swapped--;
} else if (add_to_swap_cache(page, entry) != 0)
@@ -544,21 +571,26 @@ static int shmem_writepage(struct page *page)
BUG_ON(!PageLocked(page));
if (!PageLaunder(page))
- return fail_writepage(page);
+ goto fail;
mapping = page->mapping;
index = page->index;
inode = mapping->host;
info = SHMEM_I(inode);
if (info->flags & VM_LOCKED)
- return fail_writepage(page);
+ goto fail;
getswap:
swap = get_swap_page();
if (!swap.val)
- return fail_writepage(page);
+ goto fail;
spin_lock(&info->lock);
- BUG_ON(index >= info->next_index);
+ if (index >= info->next_index) {
+ BUG_ON(!(info->flags & SHMEM_TRUNCATE));
+ spin_unlock(&info->lock);
+ swap_free(swap);
+ goto fail;
+ }
entry = shmem_swp_entry(info, index, NULL);
BUG_ON(!entry);
BUG_ON(entry->val);
@@ -574,6 +606,7 @@ getswap:
* Add page back to page cache, unref swap, try again.
*/
add_to_page_cache_locked(page, mapping, index);
+ info->flags |= SHMEM_PAGEIN;
spin_unlock(&info->lock);
swap_free(swap);
goto getswap;
@@ -586,6 +619,8 @@ getswap:
set_page_dirty(page);
UnlockPage(page);
return 0;
+fail:
+ return fail_writepage(page);
}
/*
@@ -685,6 +720,7 @@ repeat:
swap_free(swap);
} else if (add_to_page_cache_unique(swappage,
mapping, idx, page_hash(mapping, idx)) == 0) {
+ info->flags |= SHMEM_PAGEIN;
entry->val = 0;
info->swapped--;
spin_unlock(&info->lock);
@@ -750,6 +786,7 @@ repeat:
goto failed;
goto repeat;
}
+ info->flags |= SHMEM_PAGEIN;
}
spin_unlock(&info->lock);
@@ -1145,6 +1182,8 @@ static int shmem_statfs(struct super_block *sb, struct statfs *buf)
*/
static struct dentry *shmem_lookup(struct inode *dir, struct dentry *dentry)
{
+ if (dentry->d_name.len > NAME_MAX)
+ return ERR_PTR(-ENAMETOOLONG);
d_add(dentry, NULL);
return NULL;
}
@@ -1158,6 +1197,11 @@ static int shmem_mknod(struct inode *dir, struct dentry *dentry, int mode, int d
int error = -ENOSPC;
if (inode) {
+ if (dir->i_mode & S_ISGID) {
+ inode->i_gid = dir->i_gid;
+ if (S_ISDIR(mode))
+ inode->i_mode |= S_ISGID;
+ }
dir->i_size += BOGO_DIRENT_SIZE;
dir->i_ctime = dir->i_mtime = CURRENT_TIME;
d_instantiate(dentry, inode);
@@ -1324,6 +1368,8 @@ static int shmem_symlink(struct inode *dir, struct dentry *dentry, const char *s
SetPageDirty(page);
page_cache_release(page);
}
+ if (dir->i_mode & S_ISGID)
+ inode->i_gid = dir->i_gid;
dir->i_size += BOGO_DIRENT_SIZE;
dir->i_ctime = dir->i_mtime = CURRENT_TIME;
d_instantiate(dentry, inode);