aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/Changes8
-rw-r--r--Documentation/DocBook/Makefile58
-rw-r--r--Documentation/DocBook/kernel-api.tmpl186
-rw-r--r--Documentation/DocBook/stylesheet.xsl5
-rw-r--r--Documentation/DocBook/tulip-user.tmpl327
-rw-r--r--Documentation/DocBook/via-audio.tmpl597
-rw-r--r--Documentation/RCU/RTFP.txt29
-rw-r--r--Documentation/RCU/UP.txt8
-rw-r--r--Documentation/RCU/checklist.txt47
-rw-r--r--Documentation/RCU/listRCU.txt13
-rw-r--r--Documentation/RCU/rcu.txt4
-rw-r--r--Documentation/dontdiff136
-rw-r--r--Documentation/feature-removal-schedule.txt15
-rw-r--r--Documentation/filesystems/Locking8
-rw-r--r--Documentation/filesystems/proc.txt10
-rw-r--r--Documentation/i386/zero-page.txt6
-rw-r--r--Documentation/s390/cds.txt45
17 files changed, 427 insertions, 1075 deletions
diff --git a/Documentation/Changes b/Documentation/Changes
index caa6a5529b6b..57542bc25edd 100644
--- a/Documentation/Changes
+++ b/Documentation/Changes
@@ -357,14 +357,14 @@ Quota-tools
357---------- 357----------
358o <http://sourceforge.net/projects/linuxquota/> 358o <http://sourceforge.net/projects/linuxquota/>
359 359
360Jade
361----
362o <ftp://ftp.jclark.com/pub/jade/jade-1.2.1.tar.gz>
363
364DocBook Stylesheets 360DocBook Stylesheets
365------------------- 361-------------------
366o <http://nwalsh.com/docbook/dsssl/> 362o <http://nwalsh.com/docbook/dsssl/>
367 363
364XMLTO XSLT Frontend
365-------------------
366o <http://cyberelk.net/tim/xmlto/>
367
368Intel P6 microcode 368Intel P6 microcode
369------------------ 369------------------
370o <http://www.urbanmyth.org/microcode/> 370o <http://www.urbanmyth.org/microcode/>
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index a221039ee4c9..e69b3d2e7884 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -7,10 +7,9 @@
7# list of DOCBOOKS. 7# list of DOCBOOKS.
8 8
9DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \ 9DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
10 kernel-hacking.xml kernel-locking.xml via-audio.xml \ 10 kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
11 deviceiobook.xml procfs-guide.xml tulip-user.xml \ 11 procfs-guide.xml writing_usb_driver.xml scsidrivers.xml \
12 writing_usb_driver.xml scsidrivers.xml sis900.xml \ 12 sis900.xml kernel-api.xml journal-api.xml lsm.xml usb.xml \
13 kernel-api.xml journal-api.xml lsm.xml usb.xml \
14 gadget.xml libata.xml mtdnand.xml librs.xml 13 gadget.xml libata.xml mtdnand.xml librs.xml
15 14
16### 15###
@@ -42,14 +41,16 @@ MAN := $(patsubst %.xml, %.9, $(BOOKS))
42mandocs: $(MAN) 41mandocs: $(MAN)
43 42
44installmandocs: mandocs 43installmandocs: mandocs
45 $(MAKEMAN) install Documentation/DocBook/man 44 mkdir -p /usr/local/man/man9/
45 install Documentation/DocBook/man/*.9.gz /usr/local/man/man9/
46 46
47### 47###
48#External programs used 48#External programs used
49KERNELDOC = scripts/kernel-doc 49KERNELDOC = scripts/kernel-doc
50DOCPROC = scripts/basic/docproc 50DOCPROC = scripts/basic/docproc
51SPLITMAN = $(PERL) $(srctree)/scripts/split-man 51
52MAKEMAN = $(PERL) $(srctree)/scripts/makeman 52XMLTOFLAGS = -m Documentation/DocBook/stylesheet.xsl
53#XMLTOFLAGS += --skip-validation
53 54
54### 55###
55# DOCPROC is used for two purposes: 56# DOCPROC is used for two purposes:
@@ -96,45 +97,44 @@ $(obj)/procfs-guide.xml: $(C-procfs-example2)
96# Rules to generate postscript, PDF and HTML 97# Rules to generate postscript, PDF and HTML
97# db2html creates a directory. Generate a html file used for timestamp 98# db2html creates a directory. Generate a html file used for timestamp
98 99
99quiet_cmd_db2ps = DB2PS $@ 100quiet_cmd_db2ps = XMLTO $@
100 cmd_db2ps = db2ps -o $(dir $@) $< 101 cmd_db2ps = xmlto ps $(XMLTOFLAGS) -o $(dir $@) $<
101%.ps : %.xml 102%.ps : %.xml
102 @(which db2ps > /dev/null 2>&1) || \ 103 @(which xmlto > /dev/null 2>&1) || \
103 (echo "*** You need to install DocBook stylesheets ***"; \ 104 (echo "*** You need to install xmlto ***"; \
104 exit 1) 105 exit 1)
105 $(call cmd,db2ps) 106 $(call cmd,db2ps)
106 107
107quiet_cmd_db2pdf = DB2PDF $@ 108quiet_cmd_db2pdf = XMLTO $@
108 cmd_db2pdf = db2pdf -o $(dir $@) $< 109 cmd_db2pdf = xmlto pdf $(XMLTOFLAGS) -o $(dir $@) $<
109%.pdf : %.xml 110%.pdf : %.xml
110 @(which db2pdf > /dev/null 2>&1) || \ 111 @(which xmlto > /dev/null 2>&1) || \
111 (echo "*** You need to install DocBook stylesheets ***"; \ 112 (echo "*** You need to install xmlto ***"; \
112 exit 1) 113 exit 1)
113 $(call cmd,db2pdf) 114 $(call cmd,db2pdf)
114 115
115quiet_cmd_db2html = DB2HTML $@ 116quiet_cmd_db2html = XMLTO $@
116 cmd_db2html = db2html -o $(patsubst %.html,%,$@) $< && \ 117 cmd_db2html = xmlto xhtml $(XMLTOFLAGS) -o $(patsubst %.html,%,$@) $< && \
117 echo '<a HREF="$(patsubst %.html,%,$(notdir $@))/book1.html"> \ 118 echo '<a HREF="$(patsubst %.html,%,$(notdir $@))/index.html"> \
118 Goto $(patsubst %.html,%,$(notdir $@))</a><p>' > $@ 119 Goto $(patsubst %.html,%,$(notdir $@))</a><p>' > $@
119 120
120%.html: %.xml 121%.html: %.xml
121 @(which db2html > /dev/null 2>&1) || \ 122 @(which xmlto > /dev/null 2>&1) || \
122 (echo "*** You need to install DocBook stylesheets ***"; \ 123 (echo "*** You need to install xmlto ***"; \
123 exit 1) 124 exit 1)
124 @rm -rf $@ $(patsubst %.html,%,$@) 125 @rm -rf $@ $(patsubst %.html,%,$@)
125 $(call cmd,db2html) 126 $(call cmd,db2html)
126 @if [ ! -z "$(PNG-$(basename $(notdir $@)))" ]; then \ 127 @if [ ! -z "$(PNG-$(basename $(notdir $@)))" ]; then \
127 cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi 128 cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi
128 129
129### 130quiet_cmd_db2man = XMLTO $@
130# Rule to generate man files - output is placed in the man subdirectory 131 cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man $< ; gzip -f $(obj)/man/*.9; fi
131 132%.9 : %.xml
132%.9: %.xml 133 @(which xmlto > /dev/null 2>&1) || \
133ifneq ($(KBUILD_SRC),) 134 (echo "*** You need to install xmlto ***"; \
134 $(Q)mkdir -p $(objtree)/Documentation/DocBook/man 135 exit 1)
135endif 136 $(call cmd,db2man)
136 $(SPLITMAN) $< $(objtree)/Documentation/DocBook/man "$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)" 137 @touch $@
137 $(MAKEMAN) convert $(objtree)/Documentation/DocBook/man $<
138 138
139### 139###
140# Rules to generate postscripts and PNG imgages from .fig format files 140# Rules to generate postscripts and PNG imgages from .fig format files
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 1bd20c860285..757cef8f8491 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -49,13 +49,33 @@
49!Iinclude/asm-i386/unaligned.h 49!Iinclude/asm-i386/unaligned.h
50 </sect1> 50 </sect1>
51 51
52<!-- FIXME:
53 kernel/sched.c has no docs, which stuffs up the sgml. Comment
54 out until somebody adds docs. KAO
55 <sect1><title>Delaying, scheduling, and timer routines</title> 52 <sect1><title>Delaying, scheduling, and timer routines</title>
56X!Ekernel/sched.c 53!Iinclude/linux/sched.h
54!Ekernel/sched.c
55!Ekernel/timer.c
57 </sect1> 56 </sect1>
58KAO --> 57 <sect1><title>Internal Functions</title>
58!Ikernel/exit.c
59!Ikernel/signal.c
60 </sect1>
61
62 <sect1><title>Kernel objects manipulation</title>
63<!--
64X!Iinclude/linux/kobject.h
65-->
66!Elib/kobject.c
67 </sect1>
68
69 <sect1><title>Kernel utility functions</title>
70!Iinclude/linux/kernel.h
71<!-- This needs to clean up to make kernel-doc happy
72X!Ekernel/printk.c
73 -->
74!Ekernel/panic.c
75!Ekernel/sys.c
76!Ekernel/rcupdate.c
77 </sect1>
78
59 </chapter> 79 </chapter>
60 80
61 <chapter id="adt"> 81 <chapter id="adt">
@@ -81,7 +101,9 @@ KAO -->
81!Elib/vsprintf.c 101!Elib/vsprintf.c
82 </sect1> 102 </sect1>
83 <sect1><title>String Manipulation</title> 103 <sect1><title>String Manipulation</title>
84!Ilib/string.c 104<!-- All functions are exported at now
105X!Ilib/string.c
106 -->
85!Elib/string.c 107!Elib/string.c
86 </sect1> 108 </sect1>
87 <sect1><title>Bit Operations</title> 109 <sect1><title>Bit Operations</title>
@@ -98,6 +120,25 @@ KAO -->
98!Iinclude/asm-i386/uaccess.h 120!Iinclude/asm-i386/uaccess.h
99!Iarch/i386/lib/usercopy.c 121!Iarch/i386/lib/usercopy.c
100 </sect1> 122 </sect1>
123 <sect1><title>More Memory Management Functions</title>
124!Iinclude/linux/rmap.h
125!Emm/readahead.c
126!Emm/filemap.c
127!Emm/memory.c
128!Emm/vmalloc.c
129!Emm/mempool.c
130!Emm/page-writeback.c
131!Emm/truncate.c
132 </sect1>
133 </chapter>
134
135
136 <chapter id="ipc">
137 <title>Kernel IPC facilities</title>
138
139 <sect1><title>IPC utilities</title>
140!Iipc/util.c
141 </sect1>
101 </chapter> 142 </chapter>
102 143
103 <chapter id="kfifo"> 144 <chapter id="kfifo">
@@ -114,6 +155,10 @@ KAO -->
114 <sect1><title>sysctl interface</title> 155 <sect1><title>sysctl interface</title>
115!Ekernel/sysctl.c 156!Ekernel/sysctl.c
116 </sect1> 157 </sect1>
158
159 <sect1><title>proc filesystem interface</title>
160!Ifs/proc/base.c
161 </sect1>
117 </chapter> 162 </chapter>
118 163
119 <chapter id="debugfs"> 164 <chapter id="debugfs">
@@ -127,6 +172,10 @@ KAO -->
127 172
128 <chapter id="vfs"> 173 <chapter id="vfs">
129 <title>The Linux VFS</title> 174 <title>The Linux VFS</title>
175 <sect1><title>The Filesystem types</title>
176!Iinclude/linux/fs.h
177!Einclude/linux/fs.h
178 </sect1>
130 <sect1><title>The Directory Cache</title> 179 <sect1><title>The Directory Cache</title>
131!Efs/dcache.c 180!Efs/dcache.c
132!Iinclude/linux/dcache.h 181!Iinclude/linux/dcache.h
@@ -142,13 +191,31 @@ KAO -->
142!Efs/locks.c 191!Efs/locks.c
143!Ifs/locks.c 192!Ifs/locks.c
144 </sect1> 193 </sect1>
194 <sect1><title>Other Functions</title>
195!Efs/mpage.c
196!Efs/namei.c
197!Efs/buffer.c
198!Efs/bio.c
199!Efs/seq_file.c
200!Efs/filesystems.c
201!Efs/fs-writeback.c
202!Efs/block_dev.c
203 </sect1>
145 </chapter> 204 </chapter>
146 205
147 <chapter id="netcore"> 206 <chapter id="netcore">
148 <title>Linux Networking</title> 207 <title>Linux Networking</title>
208 <sect1><title>Networking Base Types</title>
209!Iinclude/linux/net.h
210 </sect1>
149 <sect1><title>Socket Buffer Functions</title> 211 <sect1><title>Socket Buffer Functions</title>
150!Iinclude/linux/skbuff.h 212!Iinclude/linux/skbuff.h
213!Iinclude/net/sock.h
214!Enet/socket.c
151!Enet/core/skbuff.c 215!Enet/core/skbuff.c
216!Enet/core/sock.c
217!Enet/core/datagram.c
218!Enet/core/stream.c
152 </sect1> 219 </sect1>
153 <sect1><title>Socket Filter</title> 220 <sect1><title>Socket Filter</title>
154!Enet/core/filter.c 221!Enet/core/filter.c
@@ -158,6 +225,14 @@ KAO -->
158!Enet/core/gen_stats.c 225!Enet/core/gen_stats.c
159!Enet/core/gen_estimator.c 226!Enet/core/gen_estimator.c
160 </sect1> 227 </sect1>
228 <sect1><title>SUN RPC subsystem</title>
229<!-- The !D functionality is not perfect, garbage has to be protected by comments
230!Dnet/sunrpc/sunrpc_syms.c
231-->
232!Enet/sunrpc/xdr.c
233!Enet/sunrpc/svcsock.c
234!Enet/sunrpc/sched.c
235 </sect1>
161 </chapter> 236 </chapter>
162 237
163 <chapter id="netdev"> 238 <chapter id="netdev">
@@ -194,11 +269,26 @@ X!Ekernel/module.c
194!Iarch/i386/kernel/irq.c 269!Iarch/i386/kernel/irq.c
195 </sect1> 270 </sect1>
196 271
272 <sect1><title>Resources Management</title>
273!Ekernel/resource.c
274 </sect1>
275
197 <sect1><title>MTRR Handling</title> 276 <sect1><title>MTRR Handling</title>
198!Earch/i386/kernel/cpu/mtrr/main.c 277!Earch/i386/kernel/cpu/mtrr/main.c
199 </sect1> 278 </sect1>
200 <sect1><title>PCI Support Library</title> 279 <sect1><title>PCI Support Library</title>
201!Edrivers/pci/pci.c 280!Edrivers/pci/pci.c
281!Edrivers/pci/pci-driver.c
282!Edrivers/pci/remove.c
283!Edrivers/pci/pci-acpi.c
284<!-- kerneldoc does not understand to __devinit
285X!Edrivers/pci/search.c
286 -->
287!Edrivers/pci/msi.c
288!Edrivers/pci/bus.c
289!Edrivers/pci/hotplug.c
290!Edrivers/pci/probe.c
291!Edrivers/pci/rom.c
202 </sect1> 292 </sect1>
203 <sect1><title>PCI Hotplug Support Library</title> 293 <sect1><title>PCI Hotplug Support Library</title>
204!Edrivers/pci/hotplug/pci_hotplug_core.c 294!Edrivers/pci/hotplug/pci_hotplug_core.c
@@ -223,6 +313,14 @@ X!Earch/i386/kernel/mca.c
223!Efs/devfs/base.c 313!Efs/devfs/base.c
224 </chapter> 314 </chapter>
225 315
316 <chapter id="sysfs">
317 <title>The Filesystem for Exporting Kernel Objects</title>
318!Efs/sysfs/file.c
319!Efs/sysfs/dir.c
320!Efs/sysfs/symlink.c
321!Efs/sysfs/bin.c
322 </chapter>
323
226 <chapter id="security"> 324 <chapter id="security">
227 <title>Security Framework</title> 325 <title>Security Framework</title>
228!Esecurity/security.c 326!Esecurity/security.c
@@ -233,6 +331,61 @@ X!Earch/i386/kernel/mca.c
233!Ekernel/power/pm.c 331!Ekernel/power/pm.c
234 </chapter> 332 </chapter>
235 333
334 <chapter id="devdrivers">
335 <title>Device drivers infrastructure</title>
336 <sect1><title>Device Drivers Base</title>
337<!--
338X!Iinclude/linux/device.h
339-->
340!Edrivers/base/driver.c
341!Edrivers/base/class_simple.c
342!Edrivers/base/core.c
343!Edrivers/base/firmware_class.c
344!Edrivers/base/transport_class.c
345!Edrivers/base/dmapool.c
346<!-- Cannot be included, because
347 attribute_container_add_class_device_adapter
348 and attribute_container_classdev_to_container
349 exceed allowed 44 characters maximum
350X!Edrivers/base/attribute_container.c
351-->
352!Edrivers/base/sys.c
353<!--
354X!Edrivers/base/interface.c
355-->
356!Edrivers/base/platform.c
357!Edrivers/base/bus.c
358 </sect1>
359 <sect1><title>Device Drivers Power Management</title>
360!Edrivers/base/power/main.c
361!Edrivers/base/power/resume.c
362!Edrivers/base/power/suspend.c
363 </sect1>
364 <sect1><title>Device Drivers ACPI Support</title>
365<!-- Internal functions only
366X!Edrivers/acpi/sleep/main.c
367X!Edrivers/acpi/sleep/wakeup.c
368X!Edrivers/acpi/motherboard.c
369X!Edrivers/acpi/bus.c
370-->
371!Edrivers/acpi/scan.c
372<!-- No correct structured comments
373X!Edrivers/acpi/pci_bind.c
374-->
375 </sect1>
376 <sect1><title>Device drivers PnP support</title>
377!Edrivers/pnp/core.c
378<!-- No correct structured comments
379X!Edrivers/pnp/system.c
380 -->
381!Edrivers/pnp/card.c
382!Edrivers/pnp/driver.c
383!Edrivers/pnp/manager.c
384!Edrivers/pnp/support.c
385 </sect1>
386 </chapter>
387
388
236 <chapter id="blkdev"> 389 <chapter id="blkdev">
237 <title>Block Devices</title> 390 <title>Block Devices</title>
238!Edrivers/block/ll_rw_blk.c 391!Edrivers/block/ll_rw_blk.c
@@ -250,7 +403,23 @@ X!Earch/i386/kernel/mca.c
250 403
251 <chapter id="snddev"> 404 <chapter id="snddev">
252 <title>Sound Devices</title> 405 <title>Sound Devices</title>
406!Iinclude/sound/core.h
253!Esound/sound_core.c 407!Esound/sound_core.c
408!Iinclude/sound/pcm.h
409!Esound/core/pcm.c
410!Esound/core/device.c
411!Esound/core/info.c
412!Esound/core/rawmidi.c
413!Esound/core/sound.c
414!Esound/core/memory.c
415!Esound/core/pcm_memory.c
416!Esound/core/init.c
417!Esound/core/isadma.c
418!Esound/core/control.c
419!Esound/core/pcm_lib.c
420!Esound/core/hwdep.c
421!Esound/core/pcm_native.c
422!Esound/core/memalloc.c
254<!-- FIXME: Removed for now since no structured comments in source 423<!-- FIXME: Removed for now since no structured comments in source
255X!Isound/sound_firmware.c 424X!Isound/sound_firmware.c
256--> 425-->
@@ -258,6 +427,7 @@ X!Isound/sound_firmware.c
258 427
259 <chapter id="uart16x50"> 428 <chapter id="uart16x50">
260 <title>16x50 UART Driver</title> 429 <title>16x50 UART Driver</title>
430!Iinclude/linux/serial_core.h
261!Edrivers/serial/serial_core.c 431!Edrivers/serial/serial_core.c
262!Edrivers/serial/8250.c 432!Edrivers/serial/8250.c
263 </chapter> 433 </chapter>
@@ -310,9 +480,11 @@ X!Isound/sound_firmware.c
310 <sect1><title>Frame Buffer Memory</title> 480 <sect1><title>Frame Buffer Memory</title>
311!Edrivers/video/fbmem.c 481!Edrivers/video/fbmem.c
312 </sect1> 482 </sect1>
483<!--
313 <sect1><title>Frame Buffer Console</title> 484 <sect1><title>Frame Buffer Console</title>
314!Edrivers/video/console/fbcon.c 485X!Edrivers/video/console/fbcon.c
315 </sect1> 486 </sect1>
487-->
316 <sect1><title>Frame Buffer Colormap</title> 488 <sect1><title>Frame Buffer Colormap</title>
317!Edrivers/video/fbcmap.c 489!Edrivers/video/fbcmap.c
318 </sect1> 490 </sect1>
diff --git a/Documentation/DocBook/stylesheet.xsl b/Documentation/DocBook/stylesheet.xsl
new file mode 100644
index 000000000000..e14c21dda403
--- /dev/null
+++ b/Documentation/DocBook/stylesheet.xsl
@@ -0,0 +1,5 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<stylesheet xmlns="http://www.w3.org/1999/XSL/Transform" version="1.0">
3<param name="chunk.quietly">1</param>
4<param name="funcsynopsis.style">ansi</param>
5</stylesheet>
diff --git a/Documentation/DocBook/tulip-user.tmpl b/Documentation/DocBook/tulip-user.tmpl
deleted file mode 100644
index 6520d7a1b132..000000000000
--- a/Documentation/DocBook/tulip-user.tmpl
+++ /dev/null
@@ -1,327 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
4
5<book id="TulipUserGuide">
6 <bookinfo>
7 <title>Tulip Driver User's Guide</title>
8
9 <authorgroup>
10 <author>
11 <firstname>Jeff</firstname>
12 <surname>Garzik</surname>
13 <affiliation>
14 <address>
15 <email>jgarzik@pobox.com</email>
16 </address>
17 </affiliation>
18 </author>
19 </authorgroup>
20
21 <copyright>
22 <year>2001</year>
23 <holder>Jeff Garzik</holder>
24 </copyright>
25
26 <legalnotice>
27 <para>
28 This documentation is free software; you can redistribute
29 it and/or modify it under the terms of the GNU General Public
30 License as published by the Free Software Foundation; either
31 version 2 of the License, or (at your option) any later
32 version.
33 </para>
34
35 <para>
36 This program is distributed in the hope that it will be
37 useful, but WITHOUT ANY WARRANTY; without even the implied
38 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
39 See the GNU General Public License for more details.
40 </para>
41
42 <para>
43 You should have received a copy of the GNU General Public
44 License along with this program; if not, write to the Free
45 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
46 MA 02111-1307 USA
47 </para>
48
49 <para>
50 For more details see the file COPYING in the source
51 distribution of Linux.
52 </para>
53 </legalnotice>
54 </bookinfo>
55
56 <toc></toc>
57
58 <chapter id="intro">
59 <title>Introduction</title>
60<para>
61The Tulip Ethernet Card Driver
62is maintained by Jeff Garzik (<email>jgarzik@pobox.com</email>).
63</para>
64
65<para>
66The Tulip driver was developed by Donald Becker and changed by
67Jeff Garzik, Takashi Manabe and a cast of thousands.
68</para>
69
70<para>
71For 2.4.x and later kernels, the Linux Tulip driver is available at
72<ulink url="http://sourceforge.net/projects/tulip/">http://sourceforge.net/projects/tulip/</ulink>
73</para>
74
75<para>
76 This driver is for the Digital "Tulip" Ethernet adapter interface.
77 It should work with most DEC 21*4*-based chips/ethercards, as well as
78 with work-alike chips from Lite-On (PNIC) and Macronix (MXIC) and ASIX.
79</para>
80
81<para>
82 The original author may be reached as becker@scyld.com, or C/O
83 Scyld Computing Corporation,
84 410 Severn Ave., Suite 210,
85 Annapolis MD 21403
86</para>
87
88<para>
89 Additional information on Donald Becker's tulip.c
90 is available at <ulink url="http://www.scyld.com/network/tulip.html">http://www.scyld.com/network/tulip.html</ulink>
91</para>
92
93 </chapter>
94
95 <chapter id="drvr-compat">
96 <title>Driver Compatibility</title>
97
98<para>
99This device driver is designed for the DECchip "Tulip", Digital's
100single-chip ethernet controllers for PCI (now owned by Intel).
101Supported members of the family
102are the 21040, 21041, 21140, 21140A, 21142, and 21143. Similar work-alike
103chips from Lite-On, Macronics, ASIX, Compex and other listed below are also
104supported.
105</para>
106
107<para>
108These chips are used on at least 140 unique PCI board designs. The great
109number of chips and board designs supported is the reason for the
110driver size and complexity. Almost of the increasing complexity is in the
111board configuration and media selection code. There is very little
112increasing in the operational critical path length.
113</para>
114 </chapter>
115
116 <chapter id="board-settings">
117 <title>Board-specific Settings</title>
118
119<para>
120PCI bus devices are configured by the system at boot time, so no jumpers
121need to be set on the board. The system BIOS preferably should assign the
122PCI INTA signal to an otherwise unused system IRQ line.
123</para>
124
125<para>
126Some boards have EEPROMs tables with default media entry. The factory default
127is usually "autoselect". This should only be overridden when using
128transceiver connections without link beat e.g. 10base2 or AUI, or (rarely!)
129for forcing full-duplex when used with old link partners that do not do
130autonegotiation.
131</para>
132 </chapter>
133
134 <chapter id="driver-operation">
135 <title>Driver Operation</title>
136
137<sect1><title>Ring buffers</title>
138
139<para>
140The Tulip can use either ring buffers or lists of Tx and Rx descriptors.
141This driver uses statically allocated rings of Rx and Tx descriptors, set at
142compile time by RX/TX_RING_SIZE. This version of the driver allocates skbuffs
143for the Rx ring buffers at open() time and passes the skb->data field to the
144Tulip as receive data buffers. When an incoming frame is less than
145RX_COPYBREAK bytes long, a fresh skbuff is allocated and the frame is
146copied to the new skbuff. When the incoming frame is larger, the skbuff is
147passed directly up the protocol stack and replaced by a newly allocated
148skbuff.
149</para>
150
151<para>
152The RX_COPYBREAK value is chosen to trade-off the memory wasted by
153using a full-sized skbuff for small frames vs. the copying costs of larger
154frames. For small frames the copying cost is negligible (esp. considering
155that we are pre-loading the cache with immediately useful header
156information). For large frames the copying cost is non-trivial, and the
157larger copy might flush the cache of useful data. A subtle aspect of this
158choice is that the Tulip only receives into longword aligned buffers, thus
159the IP header at offset 14 isn't longword aligned for further processing.
160Copied frames are put into the new skbuff at an offset of "+2", thus copying
161has the beneficial effect of aligning the IP header and preloading the
162cache.
163</para>
164
165</sect1>
166
167<sect1><title>Synchronization</title>
168<para>
169The driver runs as two independent, single-threaded flows of control. One
170is the send-packet routine, which enforces single-threaded use by the
171dev->tbusy flag. The other thread is the interrupt handler, which is single
172threaded by the hardware and other software.
173</para>
174
175<para>
176The send packet thread has partial control over the Tx ring and 'dev->tbusy'
177flag. It sets the tbusy flag whenever it's queuing a Tx packet. If the next
178queue slot is empty, it clears the tbusy flag when finished otherwise it sets
179the 'tp->tx_full' flag.
180</para>
181
182<para>
183The interrupt handler has exclusive control over the Rx ring and records stats
184from the Tx ring. (The Tx-done interrupt can't be selectively turned off, so
185we can't avoid the interrupt overhead by having the Tx routine reap the Tx
186stats.) After reaping the stats, it marks the queue entry as empty by setting
187the 'base' to zero. Iff the 'tp->tx_full' flag is set, it clears both the
188tx_full and tbusy flags.
189</para>
190
191</sect1>
192
193 </chapter>
194
195 <chapter id="errata">
196 <title>Errata</title>
197
198<para>
199The old DEC databooks were light on details.
200The 21040 databook claims that CSR13, CSR14, and CSR15 should each be the last
201register of the set CSR12-15 written. Hmmm, now how is that possible?
202</para>
203
204<para>
205The DEC SROM format is very badly designed not precisely defined, leading to
206part of the media selection junkheap below. Some boards do not have EEPROM
207media tables and need to be patched up. Worse, other boards use the DEC
208design kit media table when it isn't correct for their board.
209</para>
210
211<para>
212We cannot use MII interrupts because there is no defined GPIO pin to attach
213them. The MII transceiver status is polled using an kernel timer.
214</para>
215 </chapter>
216
217 <chapter id="changelog">
218 <title>Driver Change History</title>
219
220 <sect1><title>Version 0.9.14 (February 20, 2001)</title>
221 <itemizedlist>
222 <listitem><para>Fix PNIC problems (Manfred Spraul)</para></listitem>
223 <listitem><para>Add new PCI id for Accton comet</para></listitem>
224 <listitem><para>Support Davicom tulips</para></listitem>
225 <listitem><para>Fix oops in eeprom parsing</para></listitem>
226 <listitem><para>Enable workarounds for early PCI chipsets</para></listitem>
227 <listitem><para>IA64, hppa csr0 support</para></listitem>
228 <listitem><para>Support media types 5, 6</para></listitem>
229 <listitem><para>Interpret a bit more of the 21142 SROM extended media type 3</para></listitem>
230 <listitem><para>Add missing delay in eeprom reading</para></listitem>
231 </itemizedlist>
232 </sect1>
233
234 <sect1><title>Version 0.9.11 (November 3, 2000)</title>
235 <itemizedlist>
236 <listitem><para>Eliminate extra bus accesses when sharing interrupts (prumpf)</para></listitem>
237 <listitem><para>Barrier following ownership descriptor bit flip (prumpf)</para></listitem>
238 <listitem><para>Endianness fixes for >14 addresses in setup frames (prumpf)</para></listitem>
239 <listitem><para>Report link beat to kernel/userspace via netif_carrier_*. (kuznet)</para></listitem>
240 <listitem><para>Better spinlocking in set_rx_mode.</para></listitem>
241 <listitem><para>Fix I/O resource request failure error messages (DaveM catch)</para></listitem>
242 <listitem><para>Handle DMA allocation failure.</para></listitem>
243 </itemizedlist>
244 </sect1>
245
246 <sect1><title>Version 0.9.10 (September 6, 2000)</title>
247 <itemizedlist>
248 <listitem><para>Simple interrupt mitigation (via jamal)</para></listitem>
249 <listitem><para>More PCI ids</para></listitem>
250 </itemizedlist>
251 </sect1>
252
253 <sect1><title>Version 0.9.9 (August 11, 2000)</title>
254 <itemizedlist>
255 <listitem><para>More PCI ids</para></listitem>
256 </itemizedlist>
257 </sect1>
258
259 <sect1><title>Version 0.9.8 (July 13, 2000)</title>
260 <itemizedlist>
261 <listitem><para>Correct signed/unsigned comparison for dummy frame index</para></listitem>
262 <listitem><para>Remove outdated references to struct enet_statistics</para></listitem>
263 </itemizedlist>
264 </sect1>
265
266 <sect1><title>Version 0.9.7 (June 17, 2000)</title>
267 <itemizedlist>
268 <listitem><para>Timer cleanups (Andrew Morton)</para></listitem>
269 <listitem><para>Alpha compile fix (somebody?)</para></listitem>
270 </itemizedlist>
271 </sect1>
272
273 <sect1><title>Version 0.9.6 (May 31, 2000)</title>
274 <itemizedlist>
275 <listitem><para>Revert 21143-related support flag patch</para></listitem>
276 <listitem><para>Add HPPA/media-table debugging printk</para></listitem>
277 </itemizedlist>
278 </sect1>
279
280 <sect1><title>Version 0.9.5 (May 30, 2000)</title>
281 <itemizedlist>
282 <listitem><para>HPPA support (willy@puffingroup)</para></listitem>
283 <listitem><para>CSR6 bits and tulip.h cleanup (Chris Smith)</para></listitem>
284 <listitem><para>Improve debugging messages a bit</para></listitem>
285 <listitem><para>Add delay after CSR13 write in t21142_start_nway</para></listitem>
286 <listitem><para>Remove unused ETHER_STATS code</para></listitem>
287 <listitem><para>Convert 'extern inline' to 'static inline' in tulip.h (Chris Smith)</para></listitem>
288 <listitem><para>Update DS21143 support flags in tulip_chip_info[]</para></listitem>
289 <listitem><para>Use spin_lock_irq, not _irqsave/restore, in tulip_start_xmit()</para></listitem>
290 <listitem><para>Add locking to set_rx_mode()</para></listitem>
291 <listitem><para>Fix race with chip setting DescOwned bit (Hal Murray)</para></listitem>
292 <listitem><para>Request 100% of PIO and MMIO resource space assigned to card</para></listitem>
293 <listitem><para>Remove error message from pci_enable_device failure</para></listitem>
294 </itemizedlist>
295 </sect1>
296
297 <sect1><title>Version 0.9.4.3 (April 14, 2000)</title>
298 <itemizedlist>
299 <listitem><para>mod_timer fix (Hal Murray)</para></listitem>
300 <listitem><para>PNIC2 resuscitation (Chris Smith)</para></listitem>
301 </itemizedlist>
302 </sect1>
303
304 <sect1><title>Version 0.9.4.2 (March 21, 2000)</title>
305 <itemizedlist>
306 <listitem><para>Fix 21041 CSR7, CSR13/14/15 handling</para></listitem>
307 <listitem><para>Merge some PCI ids from tulip 0.91x</para></listitem>
308 <listitem><para>Merge some HAS_xxx flags and flag settings from tulip 0.91x</para></listitem>
309 <listitem><para>asm/io.h fix (submitted by many) and cleanup</para></listitem>
310 <listitem><para>s/HAS_NWAY143/HAS_NWAY/</para></listitem>
311 <listitem><para>Cleanup 21041 mode reporting</para></listitem>
312 <listitem><para>Small code cleanups</para></listitem>
313 </itemizedlist>
314 </sect1>
315
316 <sect1><title>Version 0.9.4.1 (March 18, 2000)</title>
317 <itemizedlist>
318 <listitem><para>Finish PCI DMA conversion (davem)</para></listitem>
319 <listitem><para>Do not netif_start_queue() at end of tulip_tx_timeout() (kuznet)</para></listitem>
320 <listitem><para>PCI DMA fix (kuznet)</para></listitem>
321 <listitem><para>eeprom.c code cleanup</para></listitem>
322 <listitem><para>Remove Xircom Tulip crud</para></listitem>
323 </itemizedlist>
324 </sect1>
325 </chapter>
326
327</book>
diff --git a/Documentation/DocBook/via-audio.tmpl b/Documentation/DocBook/via-audio.tmpl
deleted file mode 100644
index 36e642147d6b..000000000000
--- a/Documentation/DocBook/via-audio.tmpl
+++ /dev/null
@@ -1,597 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
4
5<book id="ViaAudioGuide">
6 <bookinfo>
7 <title>Via 686 Audio Driver for Linux</title>
8
9 <authorgroup>
10 <author>
11 <firstname>Jeff</firstname>
12 <surname>Garzik</surname>
13 </author>
14 </authorgroup>
15
16 <copyright>
17 <year>1999-2001</year>
18 <holder>Jeff Garzik</holder>
19 </copyright>
20
21 <legalnotice>
22 <para>
23 This documentation is free software; you can redistribute
24 it and/or modify it under the terms of the GNU General Public
25 License as published by the Free Software Foundation; either
26 version 2 of the License, or (at your option) any later
27 version.
28 </para>
29
30 <para>
31 This program is distributed in the hope that it will be
32 useful, but WITHOUT ANY WARRANTY; without even the implied
33 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
34 See the GNU General Public License for more details.
35 </para>
36
37 <para>
38 You should have received a copy of the GNU General Public
39 License along with this program; if not, write to the Free
40 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
41 MA 02111-1307 USA
42 </para>
43
44 <para>
45 For more details see the file COPYING in the source
46 distribution of Linux.
47 </para>
48 </legalnotice>
49 </bookinfo>
50
51<toc></toc>
52
53 <chapter id="intro">
54 <title>Introduction</title>
55 <para>
56 The Via VT82C686A "super southbridge" chips contain
57 AC97-compatible audio logic which features dual 16-bit stereo
58 PCM sound channels (full duplex), plus a third PCM channel intended for use
59 in hardware-assisted FM synthesis.
60 </para>
61 <para>
62 The current Linux kernel audio driver for this family of chips
63 supports audio playback and recording, but hardware-assisted
64 FM features, and hardware buffer direct-access (mmap)
65 support are not yet available.
66 </para>
67 <para>
68 This driver supports any Linux kernel version after 2.4.10.
69 </para>
70 <para>
71 Please send bug reports to the mailing list <email>linux-via@gtf.org</email>.
72 To subscribe, e-mail <email>majordomo@gtf.org</email> with
73 </para>
74 <programlisting>
75 subscribe linux-via
76 </programlisting>
77 <para>
78 in the body of the message.
79 </para>
80 </chapter>
81
82 <chapter id="install">
83 <title>Driver Installation</title>
84 <para>
85 To use this audio driver, select the
86 CONFIG_SOUND_VIA82CXXX option in the section Sound during kernel configuration.
87 Follow the usual kernel procedures for rebuilding the kernel,
88 or building and installing driver modules.
89 </para>
90 <para>
91 To make this driver the default audio driver, you can add the
92 following to your /etc/conf.modules file:
93 </para>
94 <programlisting>
95 alias sound via82cxxx_audio
96 </programlisting>
97 <para>
98 Note that soundcore and ac97_codec support modules
99 are also required for working audio, in addition to
100 the via82cxxx_audio module itself.
101 </para>
102 </chapter>
103
104 <chapter id="reportbug">
105 <title>Submitting a bug report</title>
106 <sect1 id="bugrepdesc"><title>Description of problem</title>
107 <para>
108 Describe the application you were using to play/record sound, and how
109 to reproduce the problem.
110 </para>
111 </sect1>
112 <sect1 id="bugrepdiag"><title>Diagnostic output</title>
113 <para>
114 Obtain the via-audio-diag diagnostics program from
115 http://sf.net/projects/gkernel/ and provide a dump of the
116 audio chip's registers while the problem is occurring. Sample command line:
117 </para>
118 <programlisting>
119 ./via-audio-diag -aps > diag-output.txt
120 </programlisting>
121 </sect1>
122 <sect1 id="bugrepdebug"><title>Driver debug output</title>
123 <para>
124 Define <constant>VIA_DEBUG</constant> at the beginning of the driver, then capture and email
125 the kernel log output. This can be viewed in the system kernel log (if
126 enabled), or via the dmesg program. Sample command line:
127 </para>
128 <programlisting>
129 dmesg > /tmp/dmesg-output.txt
130 </programlisting>
131 </sect1>
132 <sect1 id="bugrepprintk"><title>Bigger kernel message buffer</title>
133 <para>
134 If you wish to increase the size of the buffer displayed by dmesg, then
135 change the <constant>LOG_BUF_LEN</constant> macro at the top of linux/kernel/printk.c, recompile
136 your kernel, and pass the <constant>LOG_BUF_LEN</constant> value to dmesg. Sample command line with
137 <constant>LOG_BUF_LEN</constant> == 32768:
138 </para>
139 <programlisting>
140 dmesg -s 32768 > /tmp/dmesg-output.txt
141 </programlisting>
142 </sect1>
143 </chapter>
144
145 <chapter id="bugs">
146 <title>Known Bugs And Assumptions</title>
147 <para>
148 <variablelist>
149 <varlistentry><term>Low volume</term>
150 <listitem>
151 <para>
152 Volume too low on many systems. Workaround: use mixer program
153 such as xmixer to increase volume.
154 </para>
155 </listitem></varlistentry>
156
157 </variablelist>
158
159 </para>
160 </chapter>
161
162 <chapter id="thanks">
163 <title>Thanks</title>
164 <para>
165 Via for providing e-mail support, specs, and NDA'd source code.
166 </para>
167 <para>
168 MandrakeSoft for providing hacking time.
169 </para>
170 <para>
171 AC97 mixer interface fixes and debugging by Ron Cemer <email>roncemer@gte.net</email>.
172 </para>
173 <para>
174 Rui Sousa <email>rui.sousa@conexant.com</email>, for bugfixing
175 MMAP support, and several other notable fixes that resulted from
176 his hard work and testing.
177 </para>
178 <para>
179 Adrian Cox <email>adrian@humboldt.co.uk</email>, for bugfixing
180 MMAP support, and several other notable fixes that resulted from
181 his hard work and testing.
182 </para>
183 <para>
184 Thomas Sailer for further bugfixes.
185 </para>
186 </chapter>
187
188 <chapter id="notes">
189 <title>Random Notes</title>
190 <para>
191 Two /proc pseudo-files provide diagnostic information. This is generally
192 not useful to most users. Power users can disable CONFIG_SOUND_VIA82CXXX_PROCFS,
193 and remove the /proc support code. Once
194 version 2.0.0 is released, the /proc support code will be disabled by
195 default. Available /proc pseudo-files:
196 </para>
197 <programlisting>
198 /proc/driver/via/0/info
199 /proc/driver/via/0/ac97
200 </programlisting>
201 <para>
202 This driver by default supports all PCI audio devices which report
203 a vendor id of 0x1106, and a device id of 0x3058. Subsystem vendor
204 and device ids are not examined.
205 </para>
206 <para>
207 GNU indent formatting options:
208 <programlisting>
209-kr -i8 -ts8 -br -ce -bap -sob -l80 -pcs -cs -ss -bs -di1 -nbc -lp -psl
210 </programlisting>
211 </para>
212 <para>
213 Via has graciously donated e-mail support and source code to help further
214 the development of this driver. Their assistance has been invaluable
215 in the design and coding of the next major version of this driver.
216 </para>
217 <para>
218 The Via audio chip apparently provides a second PCM scatter-gather
219 DMA channel just for FM data, but does not have a full hardware MIDI
220 processor. I haven't put much thought towards a solution here, but it
221 might involve using SoftOSS midi wave table, or simply disabling MIDI
222 support altogether and using the FM PCM channel as a second (input? output?)
223 </para>
224 </chapter>
225
226 <chapter id="changelog">
227 <title>Driver ChangeLog</title>
228
229<sect1 id="version191"><title>
230Version 1.9.1
231</title>
232 <itemizedlist spacing="compact">
233 <listitem>
234 <para>
235 DSP read/write bugfixes from Thomas Sailer.
236 </para>
237 </listitem>
238
239 <listitem>
240 <para>
241 Add new PCI id for single-channel use of Via 8233.
242 </para>
243 </listitem>
244
245 <listitem>
246 <para>
247 Other bug fixes, tweaks, new ioctls.
248 </para>
249 </listitem>
250
251 </itemizedlist>
252</sect1>
253
254<sect1 id="version1115"><title>
255Version 1.1.15
256</title>
257 <itemizedlist spacing="compact">
258 <listitem>
259 <para>
260 Support for variable fragment size and variable fragment number (Rui
261 Sousa)
262 </para>
263 </listitem>
264
265 <listitem>
266 <para>
267 Fixes for the SPEED, STEREO, CHANNELS, FMT ioctls when in read &amp;
268 write mode (Rui Sousa)
269 </para>
270 </listitem>
271
272 <listitem>
273 <para>
274 Mmaped sound is now fully functional. (Rui Sousa)
275 </para>
276 </listitem>
277
278 <listitem>
279 <para>
280 Make sure to enable PCI device before reading any of its PCI
281 config information. (fixes potential hotplug problems)
282 </para>
283 </listitem>
284
285 <listitem>
286 <para>
287 Clean up code a bit and add more internal function documentation.
288 </para>
289 </listitem>
290
291 <listitem>
292 <para>
293 AC97 codec access fixes (Adrian Cox)
294 </para>
295 </listitem>
296
297 <listitem>
298 <para>
299 Big endian fixes (Adrian Cox)
300 </para>
301 </listitem>
302
303 <listitem>
304 <para>
305 MIDI support (Adrian Cox)
306 </para>
307 </listitem>
308
309 <listitem>
310 <para>
311 Detect and report locked-rate AC97 codecs. If your hardware only
312 supports 48Khz (locked rate), then your recording/playback software
313 must upsample or downsample accordingly. The hardware cannot do it.
314 </para>
315 </listitem>
316
317 <listitem>
318 <para>
319 Use new pci_request_regions and pci_disable_device functions in
320 kernel 2.4.6.
321 </para>
322 </listitem>
323
324 </itemizedlist>
325</sect1>
326
327<sect1 id="version1114"><title>
328Version 1.1.14
329</title>
330 <itemizedlist spacing="compact">
331 <listitem>
332 <para>
333 Use VM_RESERVE when available, to eliminate unnecessary page faults.
334 </para>
335 </listitem>
336 </itemizedlist>
337</sect1>
338
339<sect1 id="version1112"><title>
340Version 1.1.12
341</title>
342 <itemizedlist spacing="compact">
343 <listitem>
344 <para>
345 mmap bug fixes from Linus.
346 </para>
347 </listitem>
348 </itemizedlist>
349</sect1>
350
351<sect1 id="version1111"><title>
352Version 1.1.11
353</title>
354 <itemizedlist spacing="compact">
355 <listitem>
356 <para>
357 Many more bug fixes. mmap enabled by default, but may still be buggy.
358 </para>
359 </listitem>
360
361 <listitem>
362 <para>
363 Uses new and spiffy method of mmap'ing the DMA buffer, based
364 on a suggestion from Linus.
365 </para>
366 </listitem>
367 </itemizedlist>
368</sect1>
369
370<sect1 id="version1110"><title>
371Version 1.1.10
372</title>
373 <itemizedlist spacing="compact">
374 <listitem>
375 <para>
376 Many bug fixes. mmap enabled by default, but may still be buggy.
377 </para>
378 </listitem>
379 </itemizedlist>
380</sect1>
381
382<sect1 id="version119"><title>
383Version 1.1.9
384</title>
385 <itemizedlist spacing="compact">
386 <listitem>
387 <para>
388 Redesign and rewrite audio playback implementation. (faster and smaller, hopefully)
389 </para>
390 </listitem>
391
392 <listitem>
393 <para>
394 Implement recording and full duplex (DSP_CAP_DUPLEX) support.
395 </para>
396 </listitem>
397
398 <listitem>
399 <para>
400 Make procfs support optional.
401 </para>
402 </listitem>
403
404 <listitem>
405 <para>
406 Quick interrupt status check, to lessen overhead in interrupt
407 sharing situations.
408 </para>
409 </listitem>
410
411 <listitem>
412 <para>
413 Add mmap(2) support. Disabled for now, it is still buggy and experimental.
414 </para>
415 </listitem>
416
417 <listitem>
418 <para>
419 Surround all syscalls with a semaphore for cheap and easy SMP protection.
420 </para>
421 </listitem>
422
423 <listitem>
424 <para>
425 Fix bug in channel shutdown (hardware channel reset) code.
426 </para>
427 </listitem>
428
429 <listitem>
430 <para>
431 Remove unnecessary spinlocks (better performance).
432 </para>
433 </listitem>
434
435 <listitem>
436 <para>
437 Eliminate "unknown AFMT" message by using a different method
438 of selecting the best AFMT_xxx sound sample format for use.
439 </para>
440 </listitem>
441
442 <listitem>
443 <para>
444 Support for realtime hardware pointer position reporting
445 (DSP_CAP_REALTIME, SNDCTL_DSP_GETxPTR ioctls)
446 </para>
447 </listitem>
448
449 <listitem>
450 <para>
451 Support for capture/playback triggering
452 (DSP_CAP_TRIGGER, SNDCTL_DSP_SETTRIGGER ioctls)
453 </para>
454 </listitem>
455
456 <listitem>
457 <para>
458 SNDCTL_DSP_SETDUPLEX and SNDCTL_DSP_POST ioctls now handled.
459 </para>
460 </listitem>
461
462 <listitem>
463 <para>
464 Rewrite open(2) and close(2) logic to allow only one user at
465 a time. All other open(2) attempts will sleep until they succeed.
466 FIXME: open(O_RDONLY) and open(O_WRONLY) should be allowed to succeed.
467 </para>
468 </listitem>
469
470 <listitem>
471 <para>
472 Reviewed code to ensure that SMP and multiple audio devices
473 are fully supported.
474 </para>
475 </listitem>
476
477 </itemizedlist>
478</sect1>
479
480<sect1 id="version118"><title>
481Version 1.1.8
482</title>
483 <itemizedlist spacing="compact">
484 <listitem>
485 <para>
486 Clean up interrupt handler output. Fixes the following kernel error message:
487 </para>
488 <programlisting>
489 unhandled interrupt ...
490 </programlisting>
491 </listitem>
492
493 <listitem>
494 <para>
495 Convert documentation to DocBook, so that PDF, HTML and PostScript (.ps) output is readily
496 available.
497 </para>
498 </listitem>
499
500 </itemizedlist>
501</sect1>
502
503<sect1 id="version117"><title>
504Version 1.1.7
505</title>
506 <itemizedlist spacing="compact">
507 <listitem>
508 <para>
509 Fix module unload bug where mixer device left registered
510 after driver exit
511 </para>
512 </listitem>
513 </itemizedlist>
514</sect1>
515
516<sect1 id="version116"><title>
517Version 1.1.6
518</title>
519 <itemizedlist spacing="compact">
520 <listitem>
521 <para>
522 Rewrite via_set_rate to mimic ALSA basic AC97 rate setting
523 </para>
524 </listitem>
525 <listitem>
526 <para>
527 Remove much dead code
528 </para>
529 </listitem>
530 <listitem>
531 <para>
532 Complete spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl
533 </para>
534 </listitem>
535 <listitem>
536 <para>
537 Fix build problem in via_dsp_ioctl
538 </para>
539 </listitem>
540 <listitem>
541 <para>
542 Optimize included headers to eliminate headers found in linux/sound
543 </para>
544 </listitem>
545 </itemizedlist>
546</sect1>
547
548<sect1 id="version115"><title>
549Version 1.1.5
550</title>
551 <itemizedlist spacing="compact">
552 <listitem>
553 <para>
554 Disable some overly-verbose debugging code
555 </para>
556 </listitem>
557 <listitem>
558 <para>
559 Remove unnecessary sound locks
560 </para>
561 </listitem>
562 <listitem>
563 <para>
564 Fix some ioctls for better time resolution
565 </para>
566 </listitem>
567 <listitem>
568 <para>
569 Begin spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl
570 </para>
571 </listitem>
572 </itemizedlist>
573</sect1>
574
575<sect1 id="version114"><title>
576Version 1.1.4
577</title>
578 <itemizedlist spacing="compact">
579 <listitem>
580 <para>
581 Completed rewrite of driver. Eliminated SoundBlaster compatibility
582 completely, and now uses the much-faster scatter-gather DMA engine.
583 </para>
584 </listitem>
585 </itemizedlist>
586</sect1>
587
588 </chapter>
589
590 <chapter id="intfunctions">
591 <title>Internal Functions</title>
592!Isound/oss/via82cxxx_audio.c
593 </chapter>
594
595</book>
596
597
diff --git a/Documentation/RCU/RTFP.txt b/Documentation/RCU/RTFP.txt
index 12250b342e1f..9c6d450138ea 100644
--- a/Documentation/RCU/RTFP.txt
+++ b/Documentation/RCU/RTFP.txt
@@ -108,8 +108,9 @@ year saw a paper describing an RCU implementation of System V IPC
1082004 has seen a Linux-Journal article on use of RCU in dcache 1082004 has seen a Linux-Journal article on use of RCU in dcache
109[McKenney04a], a performance comparison of locking to RCU on several 109[McKenney04a], a performance comparison of locking to RCU on several
110different CPUs [McKenney04b], a dissertation describing use of RCU in a 110different CPUs [McKenney04b], a dissertation describing use of RCU in a
111number of operating-system kernels [PaulEdwardMcKenneyPhD], and a paper 111number of operating-system kernels [PaulEdwardMcKenneyPhD], a paper
112describing how to make RCU safe for soft-realtime applications [Sarma04c]. 112describing how to make RCU safe for soft-realtime applications [Sarma04c],
113and a paper describing SELinux performance with RCU [JamesMorris04b].
113 114
114 115
115Bibtex Entries 116Bibtex Entries
@@ -341,6 +342,17 @@ Dipankar Sarma"
341,pages="18-26" 342,pages="18-26"
342} 343}
343 344
345@techreport{Friedberg03a
346,author="Stuart A. Friedberg"
347,title="Lock-Free Wild Card Search Data Structure and Method"
348,institution="US Patent and Trademark Office"
349,address="Washington, DC"
350,year="2003"
351,number="US Patent 6,662,184 (contributed under GPL)"
352,month="December"
353,pages="112"
354}
355
344@article{McKenney04a 356@article{McKenney04a
345,author="Paul E. McKenney and Dipankar Sarma and Maneesh Soni" 357,author="Paul E. McKenney and Dipankar Sarma and Maneesh Soni"
346,title="Scaling dcache with {RCU}" 358,title="Scaling dcache with {RCU}"
@@ -373,6 +385,9 @@ in Operating System Kernels"
373,school="OGI School of Science and Engineering at 385,school="OGI School of Science and Engineering at
374Oregon Health and Sciences University" 386Oregon Health and Sciences University"
375,year="2004" 387,year="2004"
388,note="Available:
389\url{http://www.rdrop.com/users/paulmck/RCU/RCUdissertation.2004.07.14e1.pdf}
390[Viewed October 15, 2004]"
376} 391}
377 392
378@Conference{Sarma04c 393@Conference{Sarma04c
@@ -385,3 +400,13 @@ Oregon Health and Sciences University"
385,month="June" 400,month="June"
386,pages="182-191" 401,pages="182-191"
387} 402}
403
404@unpublished{JamesMorris04b
405,Author="James Morris"
406,Title="Recent Developments in {SELinux} Kernel Performance"
407,month="December"
408,year="2004"
409,note="Available:
410\url{http://www.livejournal.com/users/james_morris/2153.html}
411[Viewed December 10, 2004]"
412}
diff --git a/Documentation/RCU/UP.txt b/Documentation/RCU/UP.txt
index 551a803d82a8..3bfb84b3b7db 100644
--- a/Documentation/RCU/UP.txt
+++ b/Documentation/RCU/UP.txt
@@ -2,11 +2,11 @@ RCU on Uniprocessor Systems
2 2
3 3
4A common misconception is that, on UP systems, the call_rcu() primitive 4A common misconception is that, on UP systems, the call_rcu() primitive
5may immediately invoke its function, and that the synchronize_kernel 5may immediately invoke its function, and that the synchronize_rcu()
6primitive may return immediately. The basis of this misconception 6primitive may return immediately. The basis of this misconception
7is that since there is only one CPU, it should not be necessary to 7is that since there is only one CPU, it should not be necessary to
8wait for anything else to get done, since there are no other CPUs for 8wait for anything else to get done, since there are no other CPUs for
9anything else to be happening on. Although this approach will sort of 9anything else to be happening on. Although this approach will -sort- -of-
10work a surprising amount of the time, it is a very bad idea in general. 10work a surprising amount of the time, it is a very bad idea in general.
11This document presents two examples that demonstrate exactly how bad an 11This document presents two examples that demonstrate exactly how bad an
12idea this is. 12idea this is.
@@ -44,14 +44,14 @@ its arguments would cause it to fail to make the fundamental guarantee
44underlying RCU, namely that call_rcu() defers invoking its arguments until 44underlying RCU, namely that call_rcu() defers invoking its arguments until
45all RCU read-side critical sections currently executing have completed. 45all RCU read-side critical sections currently executing have completed.
46 46
47Quick Quiz: why is it -not- legal to invoke synchronize_kernel() in 47Quick Quiz: why is it -not- legal to invoke synchronize_rcu() in
48this case? 48this case?
49 49
50 50
51Summary 51Summary
52 52
53Permitting call_rcu() to immediately invoke its arguments or permitting 53Permitting call_rcu() to immediately invoke its arguments or permitting
54synchronize_kernel() to immediately return breaks RCU, even on a UP system. 54synchronize_rcu() to immediately return breaks RCU, even on a UP system.
55So do not do it! Even on a UP system, the RCU infrastructure -must- 55So do not do it! Even on a UP system, the RCU infrastructure -must-
56respect grace periods. 56respect grace periods.
57 57
diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt
index b3a568abe6b1..8f3fb77c9cd3 100644
--- a/Documentation/RCU/checklist.txt
+++ b/Documentation/RCU/checklist.txt
@@ -32,7 +32,10 @@ over a rather long period of time, but improvements are always welcome!
32 them -- even x86 allows reads to be reordered), and be prepared 32 them -- even x86 allows reads to be reordered), and be prepared
33 to explain why this added complexity is worthwhile. If you 33 to explain why this added complexity is worthwhile. If you
34 choose #c, be prepared to explain how this single task does not 34 choose #c, be prepared to explain how this single task does not
35 become a major bottleneck on big multiprocessor machines. 35 become a major bottleneck on big multiprocessor machines (for
36 example, if the task is updating information relating to itself
37 that other tasks can read, there by definition can be no
38 bottleneck).
36 39
372. Do the RCU read-side critical sections make proper use of 402. Do the RCU read-side critical sections make proper use of
38 rcu_read_lock() and friends? These primitives are needed 41 rcu_read_lock() and friends? These primitives are needed
@@ -89,27 +92,34 @@ over a rather long period of time, but improvements are always welcome!
89 "_rcu()" list-traversal primitives, such as the 92 "_rcu()" list-traversal primitives, such as the
90 list_for_each_entry_rcu(). 93 list_for_each_entry_rcu().
91 94
92 b. If the list macros are being used, the list_del_rcu(), 95 b. If the list macros are being used, the list_add_tail_rcu()
93 list_add_tail_rcu(), and list_del_rcu() primitives must 96 and list_add_rcu() primitives must be used in order
94 be used in order to prevent weakly ordered machines from 97 to prevent weakly ordered machines from misordering
95 misordering structure initialization and pointer planting. 98 structure initialization and pointer planting.
96 Similarly, if the hlist macros are being used, the 99 Similarly, if the hlist macros are being used, the
97 hlist_del_rcu() and hlist_add_head_rcu() primitives 100 hlist_add_head_rcu() primitive is required.
98 are required.
99 101
100 c. Updates must ensure that initialization of a given 102 c. If the list macros are being used, the list_del_rcu()
103 primitive must be used to keep list_del()'s pointer
104 poisoning from inflicting toxic effects on concurrent
105 readers. Similarly, if the hlist macros are being used,
106 the hlist_del_rcu() primitive is required.
107
108 The list_replace_rcu() primitive may be used to
109 replace an old structure with a new one in an
110 RCU-protected list.
111
112 d. Updates must ensure that initialization of a given
101 structure happens before pointers to that structure are 113 structure happens before pointers to that structure are
102 publicized. Use the rcu_assign_pointer() primitive 114 publicized. Use the rcu_assign_pointer() primitive
103 when publicizing a pointer to a structure that can 115 when publicizing a pointer to a structure that can
104 be traversed by an RCU read-side critical section. 116 be traversed by an RCU read-side critical section.
105 117
106 [The rcu_assign_pointer() primitive is in process.]
107
1085. If call_rcu(), or a related primitive such as call_rcu_bh(), 1185. If call_rcu(), or a related primitive such as call_rcu_bh(),
109 is used, the callback function must be written to be called 119 is used, the callback function must be written to be called
110 from softirq context. In particular, it cannot block. 120 from softirq context. In particular, it cannot block.
111 121
1126. Since synchronize_kernel() blocks, it cannot be called from 1226. Since synchronize_rcu() can block, it cannot be called from
113 any sort of irq context. 123 any sort of irq context.
114 124
1157. If the updater uses call_rcu(), then the corresponding readers 1257. If the updater uses call_rcu(), then the corresponding readers
@@ -125,9 +135,9 @@ over a rather long period of time, but improvements are always welcome!
125 such cases is a must, of course! And the jury is still out on 135 such cases is a must, of course! And the jury is still out on
126 whether the increased speed is worth it. 136 whether the increased speed is worth it.
127 137
1288. Although synchronize_kernel() is a bit slower than is call_rcu(), 1388. Although synchronize_rcu() is a bit slower than is call_rcu(),
129 it usually results in simpler code. So, unless update performance 139 it usually results in simpler code. So, unless update performance
130 is important or the updaters cannot block, synchronize_kernel() 140 is important or the updaters cannot block, synchronize_rcu()
131 should be used in preference to call_rcu(). 141 should be used in preference to call_rcu().
132 142
1339. All RCU list-traversal primitives, which include 1439. All RCU list-traversal primitives, which include
@@ -155,3 +165,14 @@ over a rather long period of time, but improvements are always welcome!
155 you -must- use the "_rcu()" variants of the list macros. 165 you -must- use the "_rcu()" variants of the list macros.
156 Failing to do so will break Alpha and confuse people reading 166 Failing to do so will break Alpha and confuse people reading
157 your code. 167 your code.
168
16911. Note that synchronize_rcu() -only- guarantees to wait until
170 all currently executing rcu_read_lock()-protected RCU read-side
171 critical sections complete. It does -not- necessarily guarantee
172 that all currently running interrupts, NMIs, preempt_disable()
173 code, or idle loops will complete. Therefore, if you do not have
174 rcu_read_lock()-protected read-side critical sections, do -not-
175 use synchronize_rcu().
176
177 If you want to wait for some of these other things, you might
178 instead need to use synchronize_irq() or synchronize_sched().
diff --git a/Documentation/RCU/listRCU.txt b/Documentation/RCU/listRCU.txt
index bda6ead69bd0..f8a54fa0d8ab 100644
--- a/Documentation/RCU/listRCU.txt
+++ b/Documentation/RCU/listRCU.txt
@@ -32,6 +32,7 @@ implementation of audit_filter_task() might be as follows:
32 enum audit_state state; 32 enum audit_state state;
33 33
34 read_lock(&auditsc_lock); 34 read_lock(&auditsc_lock);
35 /* Note: audit_netlink_sem held by caller. */
35 list_for_each_entry(e, &audit_tsklist, list) { 36 list_for_each_entry(e, &audit_tsklist, list) {
36 if (audit_filter_rules(tsk, &e->rule, NULL, &state)) { 37 if (audit_filter_rules(tsk, &e->rule, NULL, &state)) {
37 read_unlock(&auditsc_lock); 38 read_unlock(&auditsc_lock);
@@ -55,6 +56,7 @@ This means that RCU can be easily applied to the read side, as follows:
55 enum audit_state state; 56 enum audit_state state;
56 57
57 rcu_read_lock(); 58 rcu_read_lock();
59 /* Note: audit_netlink_sem held by caller. */
58 list_for_each_entry_rcu(e, &audit_tsklist, list) { 60 list_for_each_entry_rcu(e, &audit_tsklist, list) {
59 if (audit_filter_rules(tsk, &e->rule, NULL, &state)) { 61 if (audit_filter_rules(tsk, &e->rule, NULL, &state)) {
60 rcu_read_unlock(); 62 rcu_read_unlock();
@@ -139,12 +141,15 @@ Normally, the write_lock() and write_unlock() would be replaced by
139a spin_lock() and a spin_unlock(), but in this case, all callers hold 141a spin_lock() and a spin_unlock(), but in this case, all callers hold
140audit_netlink_sem, so no additional locking is required. The auditsc_lock 142audit_netlink_sem, so no additional locking is required. The auditsc_lock
141can therefore be eliminated, since use of RCU eliminates the need for 143can therefore be eliminated, since use of RCU eliminates the need for
142writers to exclude readers. 144writers to exclude readers. Normally, the write_lock() calls would
145be converted into spin_lock() calls.
143 146
144The list_del(), list_add(), and list_add_tail() primitives have been 147The list_del(), list_add(), and list_add_tail() primitives have been
145replaced by list_del_rcu(), list_add_rcu(), and list_add_tail_rcu(). 148replaced by list_del_rcu(), list_add_rcu(), and list_add_tail_rcu().
146The _rcu() list-manipulation primitives add memory barriers that are 149The _rcu() list-manipulation primitives add memory barriers that are
147needed on weakly ordered CPUs (most of them!). 150needed on weakly ordered CPUs (most of them!). The list_del_rcu()
151primitive omits the pointer poisoning debug-assist code that would
152otherwise cause concurrent readers to fail spectacularly.
148 153
149So, when readers can tolerate stale data and when entries are either added 154So, when readers can tolerate stale data and when entries are either added
150or deleted, without in-place modification, it is very easy to use RCU! 155or deleted, without in-place modification, it is very easy to use RCU!
@@ -166,6 +171,7 @@ otherwise, the added fields would need to be filled in):
166 struct audit_newentry *ne; 171 struct audit_newentry *ne;
167 172
168 write_lock(&auditsc_lock); 173 write_lock(&auditsc_lock);
174 /* Note: audit_netlink_sem held by caller. */
169 list_for_each_entry(e, list, list) { 175 list_for_each_entry(e, list, list) {
170 if (!audit_compare_rule(rule, &e->rule)) { 176 if (!audit_compare_rule(rule, &e->rule)) {
171 e->rule.action = newaction; 177 e->rule.action = newaction;
@@ -199,8 +205,7 @@ RCU ("read-copy update") its name. The RCU code is as follows:
199 audit_copy_rule(&ne->rule, &e->rule); 205 audit_copy_rule(&ne->rule, &e->rule);
200 ne->rule.action = newaction; 206 ne->rule.action = newaction;
201 ne->rule.file_count = newfield_count; 207 ne->rule.file_count = newfield_count;
202 list_add_rcu(ne, e); 208 list_replace_rcu(e, ne);
203 list_del(e);
204 call_rcu(&e->rcu, audit_free_rule, e); 209 call_rcu(&e->rcu, audit_free_rule, e);
205 return 0; 210 return 0;
206 } 211 }
diff --git a/Documentation/RCU/rcu.txt b/Documentation/RCU/rcu.txt
index 7e0c2ab6f2bd..eb444006683e 100644
--- a/Documentation/RCU/rcu.txt
+++ b/Documentation/RCU/rcu.txt
@@ -43,7 +43,9 @@ o If I am running on a uniprocessor kernel, which can only do one
43 43
44o How can I see where RCU is currently used in the Linux kernel? 44o How can I see where RCU is currently used in the Linux kernel?
45 45
46 Search for "rcu_read_lock", "call_rcu", and "synchronize_kernel". 46 Search for "rcu_read_lock", "rcu_read_unlock", "call_rcu",
47 "rcu_read_lock_bh", "rcu_read_unlock_bh", "call_rcu_bh",
48 "synchronize_rcu", and "synchronize_net".
47 49
48o What guidelines should I follow when writing code that uses RCU? 50o What guidelines should I follow when writing code that uses RCU?
49 51
diff --git a/Documentation/dontdiff b/Documentation/dontdiff
index 734fcc87db25..7c2496426ab9 100644
--- a/Documentation/dontdiff
+++ b/Documentation/dontdiff
@@ -1,137 +1,137 @@
1.* 1*.a
2*.aux
3*.bin
4*.cpio
5*.css
6*.dvi
7*.eps
8*.gif
9*.grep
10*.grp
11*.gz
12*.html
13*.jpeg
14*.ko
15*.log
16*.lst
17*.mod.c
18*.o
19*.orig
20*.out
21*.pdf
22*.png
23*.ps
24*.rej
25*.s
26*.sgml
27*.so
28*.tex
29*.ver
30*_MODULES
31*_vga16.c
32*cscope*
2*~ 33*~
34.*
35.cscope
3653c700_d.h
353c8xx_d.h* 3753c8xx_d.h*
4*.a 38BitKeeper
39COPYING
40CREDITS
41CVS
42ChangeSet
43Kerntypes
44MODS.txt
45Module.symvers
46PENDING
47SCCS
48System.map*
49TAGS
5aic7*reg.h* 50aic7*reg.h*
6aic7*seq.h*
7aic7*reg_print.c* 51aic7*reg_print.c*
853c700_d.h 52aic7*seq.h*
9aicasm 53aicasm
10aicdb.h* 54aicdb.h*
11asm 55asm
12asm_offsets.* 56asm_offsets.*
13autoconf.h* 57autoconf.h*
14*.aux
15bbootsect 58bbootsect
16*.bin
17bin2c 59bin2c
18binkernel.spec 60binkernel.spec
19BitKeeper
20bootsect 61bootsect
21bsetup 62bsetup
22btfixupprep 63btfixupprep
23build 64build
24bvmlinux 65bvmlinux
25bzImage* 66bzImage*
26ChangeSet
27classlist.h* 67classlist.h*
28compile.h*
29comp*.log 68comp*.log
69compile.h*
30config 70config
31config-* 71config-*
32config_data.h* 72config_data.h*
33conmakehash 73conmakehash
34consolemap_deftbl.c* 74consolemap_deftbl.c*
35COPYING 75crc32table.h*
36CREDITS
37.cscope
38*cscope*
39cscope.* 76cscope.*
40*.out
41*.css
42CVS
43defkeymap.c* 77defkeymap.c*
44devlist.h* 78devlist.h*
45docproc 79docproc
46dummy_sym.c* 80dummy_sym.c*
47*.dvi 81elfconfig.h*
48*.eps
49filelist 82filelist
50fixdep 83fixdep
51fore200e_mkfirm 84fore200e_mkfirm
52fore200e_pca_fw.c* 85fore200e_pca_fw.c*
53gen-devlist 86gen-devlist
54gen_init_cpio
55gen_crc32table
56crc32table.h*
57*.cpio
58gen-kdb_cmds.c* 87gen-kdb_cmds.c*
59gentbl 88gen_crc32table
89gen_init_cpio
60genksyms 90genksyms
61*.gif 91gentbl
62*.gz
63*.html
64ikconfig.h* 92ikconfig.h*
65initramfs_list 93initramfs_list
66*.jpeg 94kallsyms
67kconfig 95kconfig
68kconfig.tk 96kconfig.tk
69Kerntypes
70keywords.c* 97keywords.c*
71ksym.c* 98ksym.c*
72ksym.h* 99ksym.h*
73kallsyms
74mk_elfconfig
75elfconfig.h*
76modpost
77pnmtologo
78logo_*.c
79*.log
80lex.c* 100lex.c*
101logo_*.c
81logo_*_clut224.c 102logo_*_clut224.c
82logo_*_mono.c 103logo_*_mono.c
83lxdialog 104lxdialog
84make_times_h 105make_times_h
85map 106map
107maui_boot.h
108mk_elfconfig
86mkdep 109mkdep
87*_MODULES 110mktables
88MODS.txt 111modpost
89modversions.h* 112modversions.h*
90Module.symvers
91*.mod.c
92*.o
93*.ko
94*.orig
95*.lst
96*.grp
97*.grep
98oui.c* 113oui.c*
99mktables
100raid6tables.c
101raid6int*.c
102raid6altivec*.c
103wanxlfw.inc
104maui_boot.h
105pss_boot.h
106trix_boot.h
107*.pdf
108parse.c* 114parse.c*
109parse.h* 115parse.h*
110PENDING 116pnmtologo
111ppc_defs.h* 117ppc_defs.h*
112promcon_tbl.c* 118promcon_tbl.c*
113*.png 119pss_boot.h
114*.ps 120raid6altivec*.c
115*.rej 121raid6int*.c
116SCCS 122raid6tables.c
117setup 123setup
118*.s
119*.so
120*.sgml
121sim710_d.h* 124sim710_d.h*
122sm_tbl* 125sm_tbl*
123split-include 126split-include
124System.map*
125tags 127tags
126TAGS
127*.tex
128times.h* 128times.h*
129tkparse 129tkparse
130*.ver 130trix_boot.h
131version.h* 131version.h*
132*_vga16.c
133vmlinux 132vmlinux
134vmlinux.lds
135vmlinux-* 133vmlinux-*
134vmlinux.lds
136vsyscall.lds 135vsyscall.lds
136wanxlfw.inc
137zImage 137zImage
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 56627c1546de..d3c52dd24a2a 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -48,3 +48,18 @@ When: April 2005
48Why: Replaced by ->compat_ioctl in file_operations and other method 48Why: Replaced by ->compat_ioctl in file_operations and other method
49 vecors. 49 vecors.
50Who: Andi Kleen <ak@muc.de>, Christoph Hellwig <hch@lst.de> 50Who: Andi Kleen <ak@muc.de>, Christoph Hellwig <hch@lst.de>
51
52---------------------------
53
54What: RCU API moves to EXPORT_SYMBOL_GPL
55When: April 2006
56Files: include/linux/rcupdate.h, kernel/rcupdate.c
57Why: Outside of Linux, the only implementations of anything even
58 vaguely resembling RCU that I am aware of are in DYNIX/ptx,
59 VM/XA, Tornado, and K42. I do not expect anyone to port binary
60 drivers or kernel modules from any of these, since the first two
61 are owned by IBM and the last two are open-source research OSes.
62 So these will move to GPL after a grace period to allow
63 people, who might be using implementations that I am not aware
64 of, to adjust to this upcoming change.
65Who: Paul E. McKenney <paulmck@us.ibm.com>
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index a934baeeb33a..1045da582b9b 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -219,8 +219,12 @@ This may also be done to avoid internal deadlocks, but rarely.
219If the filesytem is called for sync then it must wait on any 219If the filesytem is called for sync then it must wait on any
220in-progress I/O and then start new I/O. 220in-progress I/O and then start new I/O.
221 221
222The filesystem should unlock the page synchronously, before returning 222The filesystem should unlock the page synchronously, before returning to the
223to the caller. 223caller, unless ->writepage() returns special WRITEPAGE_ACTIVATE
224value. WRITEPAGE_ACTIVATE means that page cannot really be written out
225currently, and VM should stop calling ->writepage() on this page for some
226time. VM does this by moving page to the head of the active list, hence the
227name.
224 228
225Unless the filesystem is going to redirty_page_for_writepage(), unlock the page 229Unless the filesystem is going to redirty_page_for_writepage(), unlock the page
226and return zero, writepage *must* run set_page_writeback() against the page, 230and return zero, writepage *must* run set_page_writeback() against the page,
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index cbe85c17176b..6c98f2bd421e 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -909,16 +909,6 @@ nr_free_inodes
909Represents the number of free inodes. Ie. The number of inuse inodes is 909Represents the number of free inodes. Ie. The number of inuse inodes is
910(nr_inodes - nr_free_inodes). 910(nr_inodes - nr_free_inodes).
911 911
912super-nr and super-max
913----------------------
914
915Again, super block structures are allocated by the kernel, but not freed. The
916file super-max contains the maximum number of super block handlers, where
917super-nr shows the number of currently allocated ones.
918
919Every mounted file system needs a super block, so if you plan to mount lots of
920file systems, you may want to increase these numbers.
921
922aio-nr and aio-max-nr 912aio-nr and aio-max-nr
923--------------------- 913---------------------
924 914
diff --git a/Documentation/i386/zero-page.txt b/Documentation/i386/zero-page.txt
index 67c053a099ed..df28c7416781 100644
--- a/Documentation/i386/zero-page.txt
+++ b/Documentation/i386/zero-page.txt
@@ -79,6 +79,6 @@ Offset Type Description
790x22c unsigned long ramdisk_max 790x22c unsigned long ramdisk_max
800x230 16 bytes trampoline 800x230 16 bytes trampoline
810x290 - 0x2cf EDD_MBR_SIG_BUFFER (edd.S) 810x290 - 0x2cf EDD_MBR_SIG_BUFFER (edd.S)
820x2d0 - 0x600 E820MAP 820x2d0 - 0xd00 E820MAP
830x600 - 0x7ff EDDBUF (edd.S) for disk signature read sector 830xd00 - 0xeff EDDBUF (edd.S) for disk signature read sector
840x600 - 0x7eb EDDBUF (edd.S) for edd data 840xd00 - 0xeeb EDDBUF (edd.S) for edd data
diff --git a/Documentation/s390/cds.txt b/Documentation/s390/cds.txt
index d9397170fb36..f0be389c7116 100644
--- a/Documentation/s390/cds.txt
+++ b/Documentation/s390/cds.txt
@@ -56,12 +56,16 @@ read_dev_chars()
56 read device characteristics 56 read device characteristics
57 57
58read_conf_data() 58read_conf_data()
59read_conf_data_lpm()
59 read configuration data. 60 read configuration data.
60 61
61ccw_device_get_ciw() 62ccw_device_get_ciw()
62 get commands from extended sense data. 63 get commands from extended sense data.
63 64
64ccw_device_start() 65ccw_device_start()
66ccw_device_start_timeout()
67ccw_device_start_key()
68ccw_device_start_key_timeout()
65 initiate an I/O request. 69 initiate an I/O request.
66 70
67ccw_device_resume() 71ccw_device_resume()
@@ -197,19 +201,21 @@ The read_dev_chars() function returns :
197 operational. 201 operational.
198 202
199 203
200read_conf_data() - Read Configuration Data 204read_conf_data(), read_conf_data_lpm() - Read Configuration Data
201 205
202Retrieve the device dependent configuration data. Please have a look at your 206Retrieve the device dependent configuration data. Please have a look at your
203device dependent I/O commands for the device specific layout of the node 207device dependent I/O commands for the device specific layout of the node
204descriptor elements. 208descriptor elements. read_conf_data_lpm() will retrieve the configuration data
209for a specific path.
205 210
206The function is meant to be called with an irq handler in place; that is, 211The function is meant to be called with the device already enabled; that is,
207at earliest during set_online() processing. 212at earliest during set_online() processing.
208 213
209The function may be called enabled or disabled, but the device must not be 214The function may be called enabled or disabled, but the device must not be
210locked 215locked
211 216
212int read_conf_data(struct ccw_device, void **buffer, int *length, __u8 lpm); 217int read_conf_data(struct ccw_device, void **buffer, int *length);
218int read_conf_data_lpm(struct ccw_device, void **buffer, int *length, __u8 lpm);
213 219
214cdev - the ccw_device the data is requested for. 220cdev - the ccw_device the data is requested for.
215buffer - Pointer to a buffer pointer. The read_conf_data() routine 221buffer - Pointer to a buffer pointer. The read_conf_data() routine
@@ -263,6 +269,25 @@ int ccw_device_start(struct ccw_device *cdev,
263 unsigned long intparm, 269 unsigned long intparm,
264 __u8 lpm, 270 __u8 lpm,
265 unsigned long flags); 271 unsigned long flags);
272int ccw_device_start_timeout(struct ccw_device *cdev,
273 struct ccw1 *cpa,
274 unsigned long intparm,
275 __u8 lpm,
276 unsigned long flags,
277 int expires);
278int ccw_device_start_key(struct ccw_device *cdev,
279 struct ccw1 *cpa,
280 unsigned long intparm,
281 __u8 lpm,
282 __u8 key,
283 unsigned long flags);
284int ccw_device_start_key_timeout(struct ccw_device *cdev,
285 struct ccw1 *cpa,
286 unsigned long intparm,
287 __u8 lpm,
288 __u8 key,
289 unsigned long flags,
290 int expires);
266 291
267cdev : ccw_device the I/O is destined for 292cdev : ccw_device the I/O is destined for
268cpa : logical start address of channel program 293cpa : logical start address of channel program
@@ -272,7 +297,12 @@ user_intparm : user specific interrupt information; will be presented
272 particular I/O request. 297 particular I/O request.
273lpm : defines the channel path to be used for a specific I/O 298lpm : defines the channel path to be used for a specific I/O
274 request. A value of 0 will make cio use the opm. 299 request. A value of 0 will make cio use the opm.
300key : the storage key to use for the I/O (useful for operating on a
301 storage with a storage key != default key)
275flag : defines the action to be performed for I/O processing 302flag : defines the action to be performed for I/O processing
303expires : timeout value in jiffies. The common I/O layer will terminate
304 the running program after this and call the interrupt handler
305 with ERR_PTR(-ETIMEDOUT) as irb.
276 306
277Possible flag values are : 307Possible flag values are :
278 308
@@ -327,6 +357,13 @@ current (last) I/O request. In case of a delayed status notification no special
327interrupt will be presented to indicate I/O completion as the I/O request was 357interrupt will be presented to indicate I/O completion as the I/O request was
328never started, even though ccw_device_start() returned with successful completion. 358never started, even though ccw_device_start() returned with successful completion.
329 359
360The irb may contain an error value, and the device driver should check for this
361first:
362
363-ETIMEDOUT: the common I/O layer terminated the request after the specified
364 timeout value
365-EIO: the common I/O layer terminated the request due to an error state
366
330If the concurrent sense flag in the extended status word in the irb is set, the 367If the concurrent sense flag in the extended status word in the irb is set, the
331field irb->scsw.count describes the numer of device specific sense bytes 368field irb->scsw.count describes the numer of device specific sense bytes
332available in the extended control word irb->scsw.ecw[0]. No device sensing by 369available in the extended control word irb->scsw.ecw[0]. No device sensing by