aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorJames Bottomley <jejb@titanic.(none)>2005-05-20 16:27:44 -0400
committerJames Bottomley <jejb@titanic.(none)>2005-05-20 16:27:44 -0400
commitad34ea2cc3845ef4dcd7d12fb0fa8484734bd672 (patch)
treead434400f5ecaa33b433c8f830e40792d8d6c05c /Documentation
parent90356ac3194bf91a441a5f9c3067af386ef62462 (diff)
parent88d7bd8cb9eb8d64bf7997600b0d64f7834047c5 (diff)
merge by hand - fix up rejections in Documentation/DocBook/Makefile
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/00-INDEX2
-rw-r--r--Documentation/BK-usage/00-INDEX51
-rw-r--r--Documentation/BK-usage/bk-kernel-howto.txt283
-rwxr-xr-xDocumentation/BK-usage/bk-make-sum34
-rwxr-xr-xDocumentation/BK-usage/bksend36
-rwxr-xr-xDocumentation/BK-usage/bz64wrap41
-rwxr-xr-xDocumentation/BK-usage/cpcset36
-rwxr-xr-xDocumentation/BK-usage/cset-to-linus49
-rwxr-xr-xDocumentation/BK-usage/csets-to-patches44
-rwxr-xr-xDocumentation/BK-usage/gcapatch8
-rwxr-xr-xDocumentation/BK-usage/unbz64wrap25
-rw-r--r--Documentation/Changes8
-rw-r--r--Documentation/DocBook/Makefile60
-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/aoe/aoe.txt40
-rw-r--r--Documentation/aoe/status.sh4
-rw-r--r--Documentation/dontdiff139
-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/networking/DLINK.txt7
-rw-r--r--Documentation/networking/netdevices.txt2
-rw-r--r--Documentation/pci.txt1
-rw-r--r--Documentation/power/pci.txt35
-rw-r--r--Documentation/s390/cds.txt45
34 files changed, 475 insertions, 1730 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX
index 72dc90f8f4a7..8de8a01a2474 100644
--- a/Documentation/00-INDEX
+++ b/Documentation/00-INDEX
@@ -12,8 +12,6 @@ Following translations are available on the WWW:
12 12
1300-INDEX 1300-INDEX
14 - this file. 14 - this file.
15BK-usage/
16 - directory with info on BitKeeper.
17BUG-HUNTING 15BUG-HUNTING
18 - brute force method of doing binary search of patches to find bug. 16 - brute force method of doing binary search of patches to find bug.
19Changes 17Changes
diff --git a/Documentation/BK-usage/00-INDEX b/Documentation/BK-usage/00-INDEX
deleted file mode 100644
index 82768784ea52..000000000000
--- a/Documentation/BK-usage/00-INDEX
+++ /dev/null
@@ -1,51 +0,0 @@
1bk-kernel-howto.txt: Description of kernel workflow under BitKeeper
2
3bk-make-sum: Create summary of changesets in one repository and not
4another, typically in preparation to be sent to an upstream maintainer.
5Typical usage:
6 cd my-updated-repo
7 bk-make-sum ~/repo/original-repo
8 mv /tmp/linus.txt ../original-repo.txt
9
10bksend: Create readable text output containing summary of changes, GNU
11patch of the changes, and BK metadata of changes (as needed for proper
12importing into BitKeeper by an upstream maintainer). This output is
13suitable for emailing BitKeeper changes. The recipient of this output
14may pipe it directly to 'bk receive'.
15
16bz64wrap: helper script. Uncompressed input is piped to this script,
17which compresses its input, and then outputs the uu-/base64-encoded
18version of the compressed input.
19
20cpcset: Copy changeset between unrelated repositories.
21Attempts to preserve changeset user, user address, description, in
22addition to the changeset (the patch) itself.
23Typical usage:
24 cd my-updated-repo
25 bk changes # looking for a changeset...
26 cpcset 1.1511 . ../another-repo
27
28csets-to-patches: Produces a delta of two BK repositories, in the form
29of individual files, each containing a single cset as a GNU patch.
30Output is several files, each with the filename "/tmp/rev-$REV.patch"
31Typical usage:
32 cd my-updated-repo
33 bk changes -L ~/repo/original-repo 2>&1 | \
34 perl csets-to-patches
35
36cset-to-linus: Produces a delta of two BK repositories, in the form of
37changeset descriptions, with 'diffstat' output created for each
38individual changset.
39Typical usage:
40 cd my-updated-repo
41 bk changes -L ~/repo/original-repo 2>&1 | \
42 perl cset-to-linus > summary.txt
43
44gcapatch: Generates patch containing changes in local repository.
45Typical usage:
46 cd my-updated-repo
47 gcapatch > foo.patch
48
49unbz64wrap: Reverse an encoded, compressed data stream created by
50bz64wrap into an uncompressed, typically text/plain output.
51
diff --git a/Documentation/BK-usage/bk-kernel-howto.txt b/Documentation/BK-usage/bk-kernel-howto.txt
deleted file mode 100644
index b7b9075d2910..000000000000
--- a/Documentation/BK-usage/bk-kernel-howto.txt
+++ /dev/null
@@ -1,283 +0,0 @@
1
2 Doing the BK Thing, Penguin-Style
3
4
5
6
7This set of notes is intended mainly for kernel developers, occasional
8or full-time, but sysadmins and power users may find parts of it useful
9as well. It assumes at least a basic familiarity with CVS, both at a
10user level (use on the cmd line) and at a higher level (client-server model).
11Due to the author's background, an operation may be described in terms
12of CVS, or in terms of how that operation differs from CVS.
13
14This is -not- intended to be BitKeeper documentation. Always run
15"bk help <command>" or in X "bk helptool <command>" for reference
16documentation.
17
18
19BitKeeper Concepts
20------------------
21
22In the true nature of the Internet itself, BitKeeper is a distributed
23system. When applied to revision control, this means doing away with
24client-server, and changing to a parent-child model... essentially
25peer-to-peer. On the developer's end, this also represents a
26fundamental disruption in the standard workflow of changes, commits,
27and merges. You will need to take a few minutes to think about
28how to best work under BitKeeper, and re-optimize things a bit.
29In some sense it is a bit radical, because it might described as
30tossing changes out into a maelstrom and having them magically
31land at the right destination... but I'm getting ahead of myself.
32
33Let's start with this progression:
34Each BitKeeper source tree on disk is a repository unto itself.
35Each repository has a parent (except the root/original, of course).
36Each repository contains a set of a changesets ("csets").
37Each cset is one or more changed files, bundled together.
38
39Each tree is a repository, so all changes are checked into the local
40tree. When a change is checked in, all modified files are grouped
41into a logical unit, the changeset. Internally, BK links these
42changesets in a tree, representing various converging and diverging
43lines of development. These changesets are the bread and butter of
44the BK system.
45
46After the concept of changesets, the next thing you need to get used
47to is having multiple copies of source trees lying around. This -really-
48takes some getting used to, for some people. Separate source trees
49are the means in BitKeeper by which you delineate parallel lines
50of development, both minor and major. What would be branches in
51CVS become separate source trees, or "clones" in BitKeeper [heh,
52or Star Wars] terminology.
53
54Clones and changesets are the tools from which most of the power of
55BitKeeper is derived. As mentioned earlier, each clone has a parent,
56the tree used as the source when the new clone was created. In a
57CVS-like setup, the parent would be a remote server on the Internet,
58and the child is your local clone of that tree.
59
60Once you have established a common baseline between two source trees --
61a common parent -- then you can merge changesets between those two
62trees with ease. Merging changes into a tree is called a "pull", and
63is analagous to 'cvs update'. A pull downloads all the changesets in
64the remote tree you do not have, and merges them. Sending changes in
65one tree to another tree is called a "push". Push sends all changes
66in the local tree the remote does not yet have, and merges them.
67
68From these concepts come some initial command examples:
69
701) bk clone -q http://linux.bkbits.net/linux-2.5 linus-2.5
71Download a 2.5 stock kernel tree, naming it "linus-2.5" in the local dir.
72The "-q" disables listing every single file as it is downloaded.
73
742) bk clone -ql linus-2.5 alpha-2.5
75Create a separate source tree for the Alpha AXP architecture.
76The "-l" uses hard links instead of copying data, since both trees are
77on the local disk. You can also replace the above with "bk lclone -q ..."
78
79You only clone a tree -once-. After cloning the tree lives a long time
80on disk, being updating by pushes and pulls.
81
823) cd alpha-2.5 ; bk pull http://gkernel.bkbits.net/alpha-2.5
83Download changes in "alpha-2.5" repository which are not present
84in the local repository, and merge them into the source tree.
85
864) bk -r co -q
87Because every tree is a repository, files must be checked out before
88they will be in their standard places in the source tree.
89
905) bk vi fs/inode.c # example change...
91 bk citool # checkin, using X tool
92 bk push bk://gkernel@bkbits.net/alpha-2.5 # upload change
93Typical example of a BK sequence that would replace the analagous CVS
94situation,
95 vi fs/inode.c
96 cvs commit
97
98As this is just supposed to be a quick BK intro, for more in-depth
99tutorials, live working demos, and docs, see http://www.bitkeeper.com/
100
101
102
103BK and Kernel Development Workflow
104----------------------------------
105Currently the latest 2.5 tree is available via "bk clone $URL"
106and "bk pull $URL" at http://linux.bkbits.net/linux-2.5
107This should change in a few weeks to a kernel.org URL.
108
109
110A big part of using BitKeeper is organizing the various trees you have
111on your local disk, and organizing the flow of changes among those
112trees, and remote trees. If one were to graph the relationships between
113a desired BK setup, you are likely to see a few-many-few graph, like
114this:
115
116 linux-2.5
117 |
118 merge-to-linus-2.5
119 / | |
120 / | |
121 vm-hacks bugfixes filesys personal-hacks
122 \ | | /
123 \ | | /
124 \ | | /
125 testing-and-validation
126
127Since a "bk push" sends all changes not in the target tree, and
128since a "bk pull" receives all changes not in the source tree, you want
129to make sure you are only pushing specific changes to the desired tree,
130not all changes from "peer parent" trees. For example, pushing a change
131from the testing-and-validation tree would probably be a bad idea,
132because it will push all changes from vm-hacks, bugfixes, filesys, and
133personal-hacks trees into the target tree.
134
135One would typically work on only one "theme" at a time, either
136vm-hacks or bugfixes or filesys, keeping those changes isolated in
137their own tree during development, and only merge the isolated with
138other changes when going upstream (to Linus or other maintainers) or
139downstream (to your "union" trees, like testing-and-validation above).
140
141It should be noted that some of this separation is not just recommended
142practice, it's actually [for now] -enforced- by BitKeeper. BitKeeper
143requires that changesets maintain a certain order, which is the reason
144that "bk push" sends all local changesets the remote doesn't have. This
145separation may look like a lot of wasted disk space at first, but it
146helps when two unrelated changes may "pollute" the same area of code, or
147don't follow the same pace of development, or any other of the standard
148reasons why one creates a development branch.
149
150Small development branches (clones) will appear and disappear:
151
152 -------- A --------- B --------- C --------- D -------
153 \ /
154 -----short-term devel branch-----
155
156While long-term branches will parallel a tree (or trees), with period
157merge points. In this first example, we pull from a tree (pulls,
158"\") periodically, such as what occurs when tracking changes in a
159vendor tree, never pushing changes back up the line:
160
161 -------- A --------- B --------- C --------- D -------
162 \ \ \
163 ----long-term devel branch-----------------
164
165And then a more common case in Linux kernel development, a long term
166branch with periodic merges back into the tree (pushes, "/"):
167
168 -------- A --------- B --------- C --------- D -------
169 \ \ / \
170 ----long-term devel branch-----------------
171
172
173
174
175
176Submitting Changes to Linus
177---------------------------
178There's a bit of an art, or style, of submitting changes to Linus.
179Since Linus's tree is now (you might say) fully integrated into the
180distributed BitKeeper system, there are several prerequisites to
181properly submitting a BitKeeper change. All these prereq's are just
182general cleanliness of BK usage, so as people become experts at BK, feel
183free to optimize this process further (assuming Linus agrees, of
184course).
185
186
187
1880) Make sure your tree was originally cloned from the linux-2.5 tree
189created by Linus. If your tree does not have this as its ancestor, it
190is impossible to reliably exchange changesets.
191
192
193
1941) Pay attention to your commit text. The commit message that
195accompanies each changeset you submit will live on forever in history,
196and is used by Linus to accurately summarize the changes in each
197pre-patch. Remember that there is no context, so
198 "fix for new scheduler changes"
199would be too vague, but
200 "fix mips64 arch for new scheduler switch_to(), TIF_xxx semantics"
201would be much better.
202
203You can and should use the command "bk comment -C<rev>" to update the
204commit text, and improve it after the fact. This is very useful for
205development: poor, quick descriptions during development, which get
206cleaned up using "bk comment" before issuing the "bk push" to submit the
207changes.
208
209
210
2112) Include an Internet-available URL for Linus to pull from, such as
212
213 Pull from: http://gkernel.bkbits.net/net-drivers-2.5
214
215
216
2173) Include a summary and "diffstat -p1" of each changeset that will be
218downloaded, when Linus issues a "bk pull". The author auto-generates
219these summaries using "bk changes -L <parent>", to obtain a listing
220of all the pending-to-send changesets, and their commit messages.
221
222It is important to show Linus what he will be downloading when he issues
223a "bk pull", to reduce the time required to sift the changes once they
224are downloaded to Linus's local machine.
225
226IMPORTANT NOTE: One of the features of BK is that your repository does
227not have to be up to date, in order for Linus to receive your changes.
228It is considered a courtesy to keep your repository fairly recent, to
229lessen any potential merge work Linus may need to do.
230
231
2324) Split up your changes. Each maintainer<->Linus situation is likely
233to be slightly different here, so take this just as general advice. The
234author splits up changes according to "themes" when merging with Linus.
235Simultaneous pushes from local development go to special trees which
236exist solely to house changes "queued" for Linus. Example of the trees:
237
238 net-drivers-2.5 -- on-going net driver maintenance
239 vm-2.5 -- VM-related changes
240 fs-2.5 -- filesystem-related changes
241
242Linus then has much more freedom for pulling changes. He could (for
243example) issue a "bk pull" on vm-2.5 and fs-2.5 trees, to merge their
244changes, but hold off net-drivers-2.5 because of a change that needs
245more discussion.
246
247Other maintainers may find that a single linus-pull-from tree is
248adequate for passing BK changesets to him.
249
250
251
252Frequently Answered Questions
253-----------------------------
2541) How do I change the e-mail address shown in the changelog?
255A. When you run "bk citool" or "bk commit", set environment
256 variables BK_USER and BK_HOST to the desired username
257 and host/domain name.
258
259
2602) How do I use tags / get a diff between two kernel versions?
261A. Pass the tags Linus uses to 'bk export'.
262
263ChangeSets are in a forward-progressing order, so it's pretty easy
264to get a snapshot starting and ending at any two points in time.
265Linus puts tags on each release and pre-release, so you could use
266these two examples:
267
268 bk export -tpatch -hdu -rv2.5.4,v2.5.5 | less
269 # creates patch-2.5.5 essentially
270 bk export -tpatch -du -rv2.5.5-pre1,v2.5.5 | less
271 # changes from pre1 to final
272
273A tag is just an alias for a specific changeset... and since changesets
274are ordered, a tag is thus a marker for a specific point in time (or
275specific state of the tree).
276
277
2783) Is there an easy way to generate One Big Patch versus mainline,
279 for my long-lived kernel branch?
280A. Yes. This requires BK 3.x, though.
281
282 bk export -tpatch -r`bk repogca bk://linux.bkbits.net/linux-2.5`,+
283
diff --git a/Documentation/BK-usage/bk-make-sum b/Documentation/BK-usage/bk-make-sum
deleted file mode 100755
index 58ca46a0fcc6..000000000000
--- a/Documentation/BK-usage/bk-make-sum
+++ /dev/null
@@ -1,34 +0,0 @@
1#!/bin/sh -e
2# DIR=$HOME/BK/axp-2.5
3# cd $DIR
4
5LINUS_REPO=$1
6DIRBASE=`basename $PWD`
7
8{
9cat <<EOT
10Please do a
11
12 bk pull bk://gkernel.bkbits.net/$DIRBASE
13
14This will update the following files:
15
16EOT
17
18bk export -tpatch -hdu -r`bk repogca $LINUS_REPO`,+ | diffstat -p1 2>/dev/null
19
20cat <<EOT
21
22through these ChangeSets:
23
24EOT
25
26bk changes -L -d'$unless(:MERGE:){ChangeSet|:CSETREV:\n}' $LINUS_REPO |
27bk -R prs -h -d'$unless(:MERGE:){<:P:@:HOST:> (:D: :I:)\n$each(:C:){ (:C:)\n}\n}' -
28
29} > /tmp/linus.txt
30
31cat <<EOT
32Mail text in /tmp/linus.txt; please check and send using your favourite
33mailer.
34EOT
diff --git a/Documentation/BK-usage/bksend b/Documentation/BK-usage/bksend
deleted file mode 100755
index 836ca943694f..000000000000
--- a/Documentation/BK-usage/bksend
+++ /dev/null
@@ -1,36 +0,0 @@
1#!/bin/sh
2# A script to format BK changeset output in a manner that is easy to read.
3# Andreas Dilger <adilger@turbolabs.com> 13/02/2002
4#
5# Add diffstat output after Changelog <adilger@turbolabs.com> 21/02/2002
6
7PROG=bksend
8
9usage() {
10 echo "usage: $PROG -r<rev>"
11 echo -e "\twhere <rev> is of the form '1.23', '1.23..', '1.23..1.27',"
12 echo -e "\tor '+' to indicate the most recent revision"
13
14 exit 1
15}
16
17case $1 in
18-r) REV=$2; shift ;;
19-r*) REV=`echo $1 | sed 's/^-r//'` ;;
20*) echo "$PROG: no revision given, you probably don't want that";;
21esac
22
23[ -z "$REV" ] && usage
24
25echo "You can import this changeset into BK by piping this whole message to:"
26echo "'| bk receive [path to repository]' or apply the patch as usual."
27
28SEP="\n===================================================================\n\n"
29echo -e $SEP
30env PAGER=/bin/cat bk changes -r$REV
31echo
32bk export -tpatch -du -h -r$REV | diffstat
33echo; echo
34bk export -tpatch -du -h -r$REV
35echo -e $SEP
36bk send -wgzip_uu -r$REV -
diff --git a/Documentation/BK-usage/bz64wrap b/Documentation/BK-usage/bz64wrap
deleted file mode 100755
index be780876849f..000000000000
--- a/Documentation/BK-usage/bz64wrap
+++ /dev/null
@@ -1,41 +0,0 @@
1#!/bin/sh
2
3# bz64wrap - the sending side of a bzip2 | base64 stream
4# Andreas Dilger <adilger@clusterfs.com> Jan 2002
5
6
7PATH=$PATH:/usr/bin:/usr/local/bin:/usr/freeware/bin
8
9# A program to generate base64 encoding on stdout
10BASE64_ENCODE="uuencode -m /dev/stdout"
11BASE64_BEGIN=
12BASE64_END=
13
14BZIP=NO
15BASE64=NO
16
17# Test if we have the bzip program installed
18bzip2 -c /dev/null > /dev/null 2>&1 && BZIP=YES
19
20# Test if uuencode can handle the -m (MIME) encoding option
21$BASE64_ENCODE < /dev/null > /dev/null 2>&1 && BASE64=YES
22
23if [ $BASE64 = NO ]; then
24 BASE64_ENCODE=mimencode
25 BASE64_BEGIN="begin-base64 644 -"
26 BASE64_END="===="
27
28 $BASE64_ENCODE < /dev/null > /dev/null 2>&1 && BASE64=YES
29fi
30
31if [ $BZIP = NO -o $BASE64 = NO ]; then
32 echo "$0: can't use bz64 encoding: bzip2=$BZIP, $BASE64_ENCODE=$BASE64"
33 exit 1
34fi
35
36# Sadly, mimencode does not appear to have good "begin" and "end" markers
37# like uuencode does, and it is picky about getting the right start/end of
38# the base64 stream, so we handle this internally.
39echo "$BASE64_BEGIN"
40bzip2 -9 | $BASE64_ENCODE
41echo "$BASE64_END"
diff --git a/Documentation/BK-usage/cpcset b/Documentation/BK-usage/cpcset
deleted file mode 100755
index b8faca97dab9..000000000000
--- a/Documentation/BK-usage/cpcset
+++ /dev/null
@@ -1,36 +0,0 @@
1#!/bin/sh
2#
3# Purpose: Copy changeset patch and description from one
4# repository to another, unrelated one.
5#
6# usage: cpcset [revision] [from-repository] [to-repository]
7#
8
9REV=$1
10FROM=$2
11TO=$3
12TMPF=/tmp/cpcset.$$
13
14rm -f $TMPF*
15
16CWD_SAVE=`pwd`
17cd $FROM
18bk changes -r$REV | \
19 grep -v '^ChangeSet' | \
20 sed -e 's/^ //g' > $TMPF.log
21
22USERHOST=`bk changes -r$REV | grep '^ChangeSet' | awk '{print $4}'`
23export BK_USER=`echo $USERHOST | awk '-F@' '{print $1}'`
24export BK_HOST=`echo $USERHOST | awk '-F@' '{print $2}'`
25
26bk export -tpatch -hdu -r$REV > $TMPF.patch && \
27cd $CWD_SAVE && \
28cd $TO && \
29bk import -tpatch -CFR -y"`cat $TMPF.log`" $TMPF.patch . && \
30bk commit -y"`cat $TMPF.log`"
31
32rm -f $TMPF*
33
34echo changeset $REV copied.
35echo ""
36
diff --git a/Documentation/BK-usage/cset-to-linus b/Documentation/BK-usage/cset-to-linus
deleted file mode 100755
index d28a96f8c618..000000000000
--- a/Documentation/BK-usage/cset-to-linus
+++ /dev/null
@@ -1,49 +0,0 @@
1#!/usr/bin/perl -w
2
3use strict;
4
5my ($lhs, $rev, $tmp, $rhs, $s);
6my @cset_text = ();
7my @pipe_text = ();
8my $have_cset = 0;
9
10while (<>) {
11 next if /^---/;
12
13 if (($lhs, $tmp, $rhs) = (/^(ChangeSet\@)([^,]+)(, .*)$/)) {
14 &cset_rev if ($have_cset);
15
16 $rev = $tmp;
17 $have_cset = 1;
18
19 push(@cset_text, $_);
20 }
21
22 elsif ($have_cset) {
23 push(@cset_text, $_);
24 }
25}
26&cset_rev if ($have_cset);
27exit(0);
28
29
30sub cset_rev {
31 my $empty_cset = 0;
32
33 open PIPE, "bk export -tpatch -hdu -r $rev | diffstat -p1 2>/dev/null |" or die;
34 while ($s = <PIPE>) {
35 $empty_cset = 1 if ($s =~ /0 files changed/);
36 push(@pipe_text, $s);
37 }
38 close(PIPE);
39
40 if (! $empty_cset) {
41 print @cset_text;
42 print @pipe_text;
43 print "\n\n";
44 }
45
46 @pipe_text = ();
47 @cset_text = ();
48}
49
diff --git a/Documentation/BK-usage/csets-to-patches b/Documentation/BK-usage/csets-to-patches
deleted file mode 100755
index e2b81c35883f..000000000000
--- a/Documentation/BK-usage/csets-to-patches
+++ /dev/null
@@ -1,44 +0,0 @@
1#!/usr/bin/perl -w
2
3use strict;
4
5my ($lhs, $rev, $tmp, $rhs, $s);
6my @cset_text = ();
7my @pipe_text = ();
8my $have_cset = 0;
9
10while (<>) {
11 next if /^---/;
12
13 if (($lhs, $tmp, $rhs) = (/^(ChangeSet\@)([^,]+)(, .*)$/)) {
14 &cset_rev if ($have_cset);
15
16 $rev = $tmp;
17 $have_cset = 1;
18
19 push(@cset_text, $_);
20 }
21
22 elsif ($have_cset) {
23 push(@cset_text, $_);
24 }
25}
26&cset_rev if ($have_cset);
27exit(0);
28
29
30sub cset_rev {
31 my $empty_cset = 0;
32
33 system("bk export -tpatch -du -r $rev > /tmp/rev-$rev.patch");
34
35 if (! $empty_cset) {
36 print @cset_text;
37 print @pipe_text;
38 print "\n\n";
39 }
40
41 @pipe_text = ();
42 @cset_text = ();
43}
44
diff --git a/Documentation/BK-usage/gcapatch b/Documentation/BK-usage/gcapatch
deleted file mode 100755
index aaeb17dc7c7f..000000000000
--- a/Documentation/BK-usage/gcapatch
+++ /dev/null
@@ -1,8 +0,0 @@
1#!/bin/sh
2#
3# Purpose: Generate GNU diff of local changes versus canonical top-of-tree
4#
5# Usage: gcapatch > foo.patch
6#
7
8bk export -tpatch -hdu -r`bk repogca bk://linux.bkbits.net/linux-2.5`,+
diff --git a/Documentation/BK-usage/unbz64wrap b/Documentation/BK-usage/unbz64wrap
deleted file mode 100755
index 4fc3e73e9a81..000000000000
--- a/Documentation/BK-usage/unbz64wrap
+++ /dev/null
@@ -1,25 +0,0 @@
1#!/bin/sh
2
3# unbz64wrap - the receiving side of a bzip2 | base64 stream
4# Andreas Dilger <adilger@clusterfs.com> Jan 2002
5
6# Sadly, mimencode does not appear to have good "begin" and "end" markers
7# like uuencode does, and it is picky about getting the right start/end of
8# the base64 stream, so we handle this explicitly here.
9
10PATH=$PATH:/usr/bin:/usr/local/bin:/usr/freeware/bin
11
12if mimencode -u < /dev/null > /dev/null 2>&1 ; then
13 SHOW=
14 while read LINE; do
15 case $LINE in
16 begin-base64*) SHOW=YES ;;
17 ====) SHOW= ;;
18 *) [ "$SHOW" ] && echo "$LINE" ;;
19 esac
20 done | mimencode -u | bunzip2
21 exit $?
22else
23 cat - | uudecode -o /dev/stdout | bunzip2
24 exit $?
25fi
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 e69d68659455..87da3478fada 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -7,11 +7,10 @@
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 \
12 writing_usb_driver.xml sis900.xml kernel-api.xml \ 12 sis900.xml kernel-api.xml journal-api.xml lsm.xml usb.xml \
13 journal-api.xml lsm.xml usb.xml gadget.xml libata.xml \ 13 gadget.xml libata.xml mtdnand.xml librs.xml
14 mtdnand.xml librs.xml
15 14
16### 15###
17# The build process is as follows (targets): 16# The build process is as follows (targets):
@@ -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/aoe/aoe.txt b/Documentation/aoe/aoe.txt
index 43e50108d0e2..3a4dbe4663c9 100644
--- a/Documentation/aoe/aoe.txt
+++ b/Documentation/aoe/aoe.txt
@@ -4,6 +4,16 @@ The EtherDrive (R) HOWTO for users of 2.6 kernels is found at ...
4 4
5 It has many tips and hints! 5 It has many tips and hints!
6 6
7The aoetools are userland programs that are designed to work with this
8driver. The aoetools are on sourceforge.
9
10 http://aoetools.sourceforge.net/
11
12The scripts in this Documentation/aoe directory are intended to
13document the use of the driver and are not necessary if you install
14the aoetools.
15
16
7CREATING DEVICE NODES 17CREATING DEVICE NODES
8 18
9 Users of udev should find the block device nodes created 19 Users of udev should find the block device nodes created
@@ -35,14 +45,15 @@ USING DEVICE NODES
35 45
36 "echo eth2 eth4 > /dev/etherd/interfaces" tells the aoe driver to 46 "echo eth2 eth4 > /dev/etherd/interfaces" tells the aoe driver to
37 limit ATA over Ethernet traffic to eth2 and eth4. AoE traffic from 47 limit ATA over Ethernet traffic to eth2 and eth4. AoE traffic from
38 untrusted networks should be ignored as a matter of security. 48 untrusted networks should be ignored as a matter of security. See
49 also the aoe_iflist driver option described below.
39 50
40 "echo > /dev/etherd/discover" tells the driver to find out what AoE 51 "echo > /dev/etherd/discover" tells the driver to find out what AoE
41 devices are available. 52 devices are available.
42 53
43 These character devices may disappear and be replaced by sysfs 54 These character devices may disappear and be replaced by sysfs
44 counterparts, so distribution maintainers are encouraged to create 55 counterparts. Using the commands in aoetools insulates users from
45 scripts that use these devices. 56 these implementation details.
46 57
47 The block devices are named like this: 58 The block devices are named like this:
48 59
@@ -66,7 +77,8 @@ USING SYSFS
66 through which we are communicating with the remote AoE device. 77 through which we are communicating with the remote AoE device.
67 78
68 There is a script in this directory that formats this information 79 There is a script in this directory that formats this information
69 in a convenient way. 80 in a convenient way. Users with aoetools can use the aoe-stat
81 command.
70 82
71 root@makki root# sh Documentation/aoe/status.sh 83 root@makki root# sh Documentation/aoe/status.sh
72 e10.0 eth3 up 84 e10.0 eth3 up
@@ -89,3 +101,23 @@ USING SYSFS
89 e4.7 eth1 up 101 e4.7 eth1 up
90 e4.8 eth1 up 102 e4.8 eth1 up
91 e4.9 eth1 up 103 e4.9 eth1 up
104
105 Use /sys/module/aoe/parameters/aoe_iflist (or better, the driver
106 option discussed below) instead of /dev/etherd/interfaces to limit
107 AoE traffic to the network interfaces in the given
108 whitespace-separated list. Unlike the old character device, the
109 sysfs entry can be read from as well as written to.
110
111 It's helpful to trigger discovery after setting the list of allowed
112 interfaces. The aoetools package provides an aoe-discover script
113 for this purpose. You can also directly use the
114 /dev/etherd/discover special file described above.
115
116DRIVER OPTIONS
117
118 There is a boot option for the built-in aoe driver and a
119 corresponding module parameter, aoe_iflist. Without this option,
120 all network interfaces may be used for ATA over Ethernet. Here is a
121 usage example for the module parameter.
122
123 modprobe aoe_iflist="eth1 eth3"
diff --git a/Documentation/aoe/status.sh b/Documentation/aoe/status.sh
index 6628116d4a9f..751f3be514b8 100644
--- a/Documentation/aoe/status.sh
+++ b/Documentation/aoe/status.sh
@@ -14,10 +14,6 @@ test ! -d "$sysd/block" && {
14 echo "$me Error: sysfs is not mounted" 1>&2 14 echo "$me Error: sysfs is not mounted" 1>&2
15 exit 1 15 exit 1
16} 16}
17test -z "`lsmod | grep '^aoe'`" && {
18 echo "$me Error: aoe module is not loaded" 1>&2
19 exit 1
20}
21 17
22for d in `ls -d $sysd/block/etherd* 2>/dev/null | grep -v p` end; do 18for d in `ls -d $sysd/block/etherd* 2>/dev/null | grep -v p` end; do
23 # maybe ls comes up empty, so we use "end" 19 # maybe ls comes up empty, so we use "end"
diff --git a/Documentation/dontdiff b/Documentation/dontdiff
index 734fcc87db25..9a33bb94f74f 100644
--- a/Documentation/dontdiff
+++ b/Documentation/dontdiff
@@ -1,137 +1,140 @@
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*.xml
31*_MODULES
32*_vga16.c
33*cscope*
2*~ 34*~
35.*
36.cscope
3753c700_d.h
353c8xx_d.h* 3853c8xx_d.h*
4*.a 39BitKeeper
40COPYING
41CREDITS
42CVS
43ChangeSet
44Kerntypes
45MODS.txt
46Module.symvers
47PENDING
48SCCS
49System.map*
50TAGS
5aic7*reg.h* 51aic7*reg.h*
6aic7*seq.h*
7aic7*reg_print.c* 52aic7*reg_print.c*
853c700_d.h 53aic7*seq.h*
9aicasm 54aicasm
10aicdb.h* 55aicdb.h*
11asm 56asm
12asm_offsets.* 57asm_offsets.*
13autoconf.h* 58autoconf.h*
14*.aux
15bbootsect 59bbootsect
16*.bin
17bin2c 60bin2c
18binkernel.spec 61binkernel.spec
19BitKeeper
20bootsect 62bootsect
21bsetup 63bsetup
22btfixupprep 64btfixupprep
23build 65build
24bvmlinux 66bvmlinux
25bzImage* 67bzImage*
26ChangeSet
27classlist.h* 68classlist.h*
28compile.h*
29comp*.log 69comp*.log
70compile.h*
30config 71config
31config-* 72config-*
32config_data.h* 73config_data.h*
33conmakehash 74conmakehash
34consolemap_deftbl.c* 75consolemap_deftbl.c*
35COPYING 76crc32table.h*
36CREDITS
37.cscope
38*cscope*
39cscope.* 77cscope.*
40*.out
41*.css
42CVS
43defkeymap.c* 78defkeymap.c*
44devlist.h* 79devlist.h*
45docproc 80docproc
46dummy_sym.c* 81dummy_sym.c*
47*.dvi 82elfconfig.h*
48*.eps
49filelist 83filelist
50fixdep 84fixdep
51fore200e_mkfirm 85fore200e_mkfirm
52fore200e_pca_fw.c* 86fore200e_pca_fw.c*
53gen-devlist 87gen-devlist
54gen_init_cpio
55gen_crc32table
56crc32table.h*
57*.cpio
58gen-kdb_cmds.c* 88gen-kdb_cmds.c*
59gentbl 89gen_crc32table
90gen_init_cpio
60genksyms 91genksyms
61*.gif 92gentbl
62*.gz
63*.html
64ikconfig.h* 93ikconfig.h*
65initramfs_list 94initramfs_list
66*.jpeg 95kallsyms
67kconfig 96kconfig
68kconfig.tk 97kconfig.tk
69Kerntypes
70keywords.c* 98keywords.c*
71ksym.c* 99ksym.c*
72ksym.h* 100ksym.h*
73kallsyms
74mk_elfconfig
75elfconfig.h*
76modpost
77pnmtologo
78logo_*.c
79*.log
80lex.c* 101lex.c*
102logo_*.c
81logo_*_clut224.c 103logo_*_clut224.c
82logo_*_mono.c 104logo_*_mono.c
83lxdialog 105lxdialog
84make_times_h 106make_times_h
85map 107map
108maui_boot.h
109mk_elfconfig
86mkdep 110mkdep
87*_MODULES 111mktables
88MODS.txt 112modpost
89modversions.h* 113modversions.h*
90Module.symvers 114offsets.h
91*.mod.c
92*.o
93*.ko
94*.orig
95*.lst
96*.grp
97*.grep
98oui.c* 115oui.c*
99mktables
100raid6tables.c
101raid6int*.c
102raid6altivec*.c
103wanxlfw.inc
104maui_boot.h
105pss_boot.h
106trix_boot.h
107*.pdf
108parse.c* 116parse.c*
109parse.h* 117parse.h*
110PENDING 118pnmtologo
111ppc_defs.h* 119ppc_defs.h*
112promcon_tbl.c* 120promcon_tbl.c*
113*.png 121pss_boot.h
114*.ps 122raid6altivec*.c
115*.rej 123raid6int*.c
116SCCS 124raid6tables.c
117setup 125setup
118*.s
119*.so
120*.sgml
121sim710_d.h* 126sim710_d.h*
122sm_tbl* 127sm_tbl*
123split-include 128split-include
124System.map*
125tags 129tags
126TAGS
127*.tex
128times.h* 130times.h*
129tkparse 131tkparse
130*.ver 132trix_boot.h
131version.h* 133version.h*
132*_vga16.c
133vmlinux 134vmlinux
134vmlinux.lds
135vmlinux-* 135vmlinux-*
136vmlinux.lds
136vsyscall.lds 137vsyscall.lds
138wanxlfw.inc
139uImage
137zImage 140zImage
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/networking/DLINK.txt b/Documentation/networking/DLINK.txt
index 083d24752b83..55d24433d151 100644
--- a/Documentation/networking/DLINK.txt
+++ b/Documentation/networking/DLINK.txt
@@ -178,10 +178,9 @@ Released 1994-06-13
178 7. ACKNOWLEDGMENTS. 178 7. ACKNOWLEDGMENTS.
179 179
180 These drivers wouldn't have been done without the base 180 These drivers wouldn't have been done without the base
181 (and support) from Ross Biro <bir7@leland.stanford.edu>, 181 (and support) from Ross Biro, and D-Link Systems Inc.
182 and D-Link Systems Inc. The driver relies upon GPL-ed 182 The driver relies upon GPL-ed source from D-Link Systems Inc.
183 source from D-Link Systems Inc. and from Russel Nelson at 183 and from Russel Nelson at Crynwr Software <nelson@crynwr.com>.
184 Crynwr Software <nelson@crynwr.com>.
185 184
186 Additional input also from: 185 Additional input also from:
187 Donald Becker <becker@super.org>, Alan Cox <A.Cox@swansea.ac.uk> 186 Donald Becker <becker@super.org>, Alan Cox <A.Cox@swansea.ac.uk>
diff --git a/Documentation/networking/netdevices.txt b/Documentation/networking/netdevices.txt
index 1509f3aff968..3c0a5ba614d7 100644
--- a/Documentation/networking/netdevices.txt
+++ b/Documentation/networking/netdevices.txt
@@ -51,6 +51,8 @@ dev->hard_start_xmit:
51 set_multicast_list 51 set_multicast_list
52 Context: BHs disabled 52 Context: BHs disabled
53 Notes: netif_queue_stopped() is guaranteed false 53 Notes: netif_queue_stopped() is guaranteed false
54 Interrupts must be enabled when calling hard_start_xmit.
55 (Interrupts must also be enabled when enabling the BH handler.)
54 Return codes: 56 Return codes:
55 o NETDEV_TX_OK everything ok. 57 o NETDEV_TX_OK everything ok.
56 o NETDEV_TX_BUSY Cannot transmit packet, try later 58 o NETDEV_TX_BUSY Cannot transmit packet, try later
diff --git a/Documentation/pci.txt b/Documentation/pci.txt
index 67514bf87ccd..62b1dc5d97e2 100644
--- a/Documentation/pci.txt
+++ b/Documentation/pci.txt
@@ -279,6 +279,7 @@ pci_for_each_dev_reverse() Superseded by pci_find_device_reverse()
279pci_for_each_bus() Superseded by pci_find_next_bus() 279pci_for_each_bus() Superseded by pci_find_next_bus()
280pci_find_device() Superseded by pci_get_device() 280pci_find_device() Superseded by pci_get_device()
281pci_find_subsys() Superseded by pci_get_subsys() 281pci_find_subsys() Superseded by pci_get_subsys()
282pci_find_slot() Superseded by pci_get_slot()
282pcibios_find_class() Superseded by pci_get_class() 283pcibios_find_class() Superseded by pci_get_class()
283pci_find_class() Superseded by pci_get_class() 284pci_find_class() Superseded by pci_get_class()
284pci_(read|write)_*_nodev() Superseded by pci_bus_(read|write)_*() 285pci_(read|write)_*_nodev() Superseded by pci_bus_(read|write)_*()
diff --git a/Documentation/power/pci.txt b/Documentation/power/pci.txt
index c85428e7ad92..35b1a7dae342 100644
--- a/Documentation/power/pci.txt
+++ b/Documentation/power/pci.txt
@@ -165,40 +165,9 @@ Description:
165These functions are intended for use by individual drivers, and are defined in 165These functions are intended for use by individual drivers, and are defined in
166struct pci_driver: 166struct pci_driver:
167 167
168 int (*save_state) (struct pci_dev *dev, u32 state); 168 int (*suspend) (struct pci_dev *dev, pm_message_t state);
169 int (*suspend) (struct pci_dev *dev, u32 state);
170 int (*resume) (struct pci_dev *dev); 169 int (*resume) (struct pci_dev *dev);
171 int (*enable_wake) (struct pci_dev *dev, u32 state, int enable); 170 int (*enable_wake) (struct pci_dev *dev, pci_power_t state, int enable);
172
173
174save_state
175----------
176
177Usage:
178
179if (dev->driver && dev->driver->save_state)
180 dev->driver->save_state(dev,state);
181
182The driver should use this callback to save device state. It should take into
183account the current state of the device and the requested state in order to
184avoid any unnecessary operations.
185
186For example, a video card that supports all 4 states (D0-D3), all controller
187context is preserved when entering D1, but the screen is placed into a low power
188state (blanked).
189
190The driver can also interpret this function as a notification that it may be
191entering a sleep state in the near future. If it knows that the device cannot
192enter the requested state, either because of lack of support for it, or because
193the device is middle of some critical operation, then it should fail.
194
195This function should not be used to set any state in the device or the driver
196because the device may not actually enter the sleep state (e.g. another driver
197later causes causes a global state transition to fail).
198
199Note that in intermediate low power states, a device's I/O and memory spaces may
200be disabled and may not be available in subsequent transitions to lower power
201states.
202 171
203 172
204suspend 173suspend
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