diff options
author | Anton Altaparmakov <aia21@cantab.net> | 2005-05-21 17:00:02 -0400 |
---|---|---|
committer | Anton Altaparmakov <aia21@cantab.net> | 2005-05-21 17:00:02 -0400 |
commit | 67394f8f069c2fdf90f3b6d851824c07815442af (patch) | |
tree | 0c33e62d34dbaecea434ae9ece3cc0c56db8b1f7 /Documentation | |
parent | 450cbfbbbd88876e3ccec1d277f613221ca82bb7 (diff) | |
parent | 9636273dae265b9354b861b373cd43cd76a6d0fe (diff) |
Merge with /usr/src/ntfs-2.6.git
Diffstat (limited to 'Documentation')
23 files changed, 484 insertions, 689 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 | ||
13 | 00-INDEX | 13 | 00-INDEX |
14 | - this file. | 14 | - this file. |
15 | BK-usage/ | ||
16 | - directory with info on BitKeeper. | ||
17 | BUG-HUNTING | 15 | BUG-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. |
19 | Changes | 17 | Changes |
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 @@ | |||
1 | bk-kernel-howto.txt: Description of kernel workflow under BitKeeper | ||
2 | |||
3 | bk-make-sum: Create summary of changesets in one repository and not | ||
4 | another, typically in preparation to be sent to an upstream maintainer. | ||
5 | Typical usage: | ||
6 | cd my-updated-repo | ||
7 | bk-make-sum ~/repo/original-repo | ||
8 | mv /tmp/linus.txt ../original-repo.txt | ||
9 | |||
10 | bksend: Create readable text output containing summary of changes, GNU | ||
11 | patch of the changes, and BK metadata of changes (as needed for proper | ||
12 | importing into BitKeeper by an upstream maintainer). This output is | ||
13 | suitable for emailing BitKeeper changes. The recipient of this output | ||
14 | may pipe it directly to 'bk receive'. | ||
15 | |||
16 | bz64wrap: helper script. Uncompressed input is piped to this script, | ||
17 | which compresses its input, and then outputs the uu-/base64-encoded | ||
18 | version of the compressed input. | ||
19 | |||
20 | cpcset: Copy changeset between unrelated repositories. | ||
21 | Attempts to preserve changeset user, user address, description, in | ||
22 | addition to the changeset (the patch) itself. | ||
23 | Typical usage: | ||
24 | cd my-updated-repo | ||
25 | bk changes # looking for a changeset... | ||
26 | cpcset 1.1511 . ../another-repo | ||
27 | |||
28 | csets-to-patches: Produces a delta of two BK repositories, in the form | ||
29 | of individual files, each containing a single cset as a GNU patch. | ||
30 | Output is several files, each with the filename "/tmp/rev-$REV.patch" | ||
31 | Typical usage: | ||
32 | cd my-updated-repo | ||
33 | bk changes -L ~/repo/original-repo 2>&1 | \ | ||
34 | perl csets-to-patches | ||
35 | |||
36 | cset-to-linus: Produces a delta of two BK repositories, in the form of | ||
37 | changeset descriptions, with 'diffstat' output created for each | ||
38 | individual changset. | ||
39 | Typical usage: | ||
40 | cd my-updated-repo | ||
41 | bk changes -L ~/repo/original-repo 2>&1 | \ | ||
42 | perl cset-to-linus > summary.txt | ||
43 | |||
44 | gcapatch: Generates patch containing changes in local repository. | ||
45 | Typical usage: | ||
46 | cd my-updated-repo | ||
47 | gcapatch > foo.patch | ||
48 | |||
49 | unbz64wrap: Reverse an encoded, compressed data stream created by | ||
50 | bz64wrap 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 | |||
7 | This set of notes is intended mainly for kernel developers, occasional | ||
8 | or full-time, but sysadmins and power users may find parts of it useful | ||
9 | as well. It assumes at least a basic familiarity with CVS, both at a | ||
10 | user level (use on the cmd line) and at a higher level (client-server model). | ||
11 | Due to the author's background, an operation may be described in terms | ||
12 | of CVS, or in terms of how that operation differs from CVS. | ||
13 | |||
14 | This is -not- intended to be BitKeeper documentation. Always run | ||
15 | "bk help <command>" or in X "bk helptool <command>" for reference | ||
16 | documentation. | ||
17 | |||
18 | |||
19 | BitKeeper Concepts | ||
20 | ------------------ | ||
21 | |||
22 | In the true nature of the Internet itself, BitKeeper is a distributed | ||
23 | system. When applied to revision control, this means doing away with | ||
24 | client-server, and changing to a parent-child model... essentially | ||
25 | peer-to-peer. On the developer's end, this also represents a | ||
26 | fundamental disruption in the standard workflow of changes, commits, | ||
27 | and merges. You will need to take a few minutes to think about | ||
28 | how to best work under BitKeeper, and re-optimize things a bit. | ||
29 | In some sense it is a bit radical, because it might described as | ||
30 | tossing changes out into a maelstrom and having them magically | ||
31 | land at the right destination... but I'm getting ahead of myself. | ||
32 | |||
33 | Let's start with this progression: | ||
34 | Each BitKeeper source tree on disk is a repository unto itself. | ||
35 | Each repository has a parent (except the root/original, of course). | ||
36 | Each repository contains a set of a changesets ("csets"). | ||
37 | Each cset is one or more changed files, bundled together. | ||
38 | |||
39 | Each tree is a repository, so all changes are checked into the local | ||
40 | tree. When a change is checked in, all modified files are grouped | ||
41 | into a logical unit, the changeset. Internally, BK links these | ||
42 | changesets in a tree, representing various converging and diverging | ||
43 | lines of development. These changesets are the bread and butter of | ||
44 | the BK system. | ||
45 | |||
46 | After the concept of changesets, the next thing you need to get used | ||
47 | to is having multiple copies of source trees lying around. This -really- | ||
48 | takes some getting used to, for some people. Separate source trees | ||
49 | are the means in BitKeeper by which you delineate parallel lines | ||
50 | of development, both minor and major. What would be branches in | ||
51 | CVS become separate source trees, or "clones" in BitKeeper [heh, | ||
52 | or Star Wars] terminology. | ||
53 | |||
54 | Clones and changesets are the tools from which most of the power of | ||
55 | BitKeeper is derived. As mentioned earlier, each clone has a parent, | ||
56 | the tree used as the source when the new clone was created. In a | ||
57 | CVS-like setup, the parent would be a remote server on the Internet, | ||
58 | and the child is your local clone of that tree. | ||
59 | |||
60 | Once you have established a common baseline between two source trees -- | ||
61 | a common parent -- then you can merge changesets between those two | ||
62 | trees with ease. Merging changes into a tree is called a "pull", and | ||
63 | is analagous to 'cvs update'. A pull downloads all the changesets in | ||
64 | the remote tree you do not have, and merges them. Sending changes in | ||
65 | one tree to another tree is called a "push". Push sends all changes | ||
66 | in the local tree the remote does not yet have, and merges them. | ||
67 | |||
68 | From these concepts come some initial command examples: | ||
69 | |||
70 | 1) bk clone -q http://linux.bkbits.net/linux-2.5 linus-2.5 | ||
71 | Download a 2.5 stock kernel tree, naming it "linus-2.5" in the local dir. | ||
72 | The "-q" disables listing every single file as it is downloaded. | ||
73 | |||
74 | 2) bk clone -ql linus-2.5 alpha-2.5 | ||
75 | Create a separate source tree for the Alpha AXP architecture. | ||
76 | The "-l" uses hard links instead of copying data, since both trees are | ||
77 | on the local disk. You can also replace the above with "bk lclone -q ..." | ||
78 | |||
79 | You only clone a tree -once-. After cloning the tree lives a long time | ||
80 | on disk, being updating by pushes and pulls. | ||
81 | |||
82 | 3) cd alpha-2.5 ; bk pull http://gkernel.bkbits.net/alpha-2.5 | ||
83 | Download changes in "alpha-2.5" repository which are not present | ||
84 | in the local repository, and merge them into the source tree. | ||
85 | |||
86 | 4) bk -r co -q | ||
87 | Because every tree is a repository, files must be checked out before | ||
88 | they will be in their standard places in the source tree. | ||
89 | |||
90 | 5) 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 | ||
93 | Typical example of a BK sequence that would replace the analagous CVS | ||
94 | situation, | ||
95 | vi fs/inode.c | ||
96 | cvs commit | ||
97 | |||
98 | As this is just supposed to be a quick BK intro, for more in-depth | ||
99 | tutorials, live working demos, and docs, see http://www.bitkeeper.com/ | ||
100 | |||
101 | |||
102 | |||
103 | BK and Kernel Development Workflow | ||
104 | ---------------------------------- | ||
105 | Currently the latest 2.5 tree is available via "bk clone $URL" | ||
106 | and "bk pull $URL" at http://linux.bkbits.net/linux-2.5 | ||
107 | This should change in a few weeks to a kernel.org URL. | ||
108 | |||
109 | |||
110 | A big part of using BitKeeper is organizing the various trees you have | ||
111 | on your local disk, and organizing the flow of changes among those | ||
112 | trees, and remote trees. If one were to graph the relationships between | ||
113 | a desired BK setup, you are likely to see a few-many-few graph, like | ||
114 | this: | ||
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 | |||
127 | Since a "bk push" sends all changes not in the target tree, and | ||
128 | since a "bk pull" receives all changes not in the source tree, you want | ||
129 | to make sure you are only pushing specific changes to the desired tree, | ||
130 | not all changes from "peer parent" trees. For example, pushing a change | ||
131 | from the testing-and-validation tree would probably be a bad idea, | ||
132 | because it will push all changes from vm-hacks, bugfixes, filesys, and | ||
133 | personal-hacks trees into the target tree. | ||
134 | |||
135 | One would typically work on only one "theme" at a time, either | ||
136 | vm-hacks or bugfixes or filesys, keeping those changes isolated in | ||
137 | their own tree during development, and only merge the isolated with | ||
138 | other changes when going upstream (to Linus or other maintainers) or | ||
139 | downstream (to your "union" trees, like testing-and-validation above). | ||
140 | |||
141 | It should be noted that some of this separation is not just recommended | ||
142 | practice, it's actually [for now] -enforced- by BitKeeper. BitKeeper | ||
143 | requires that changesets maintain a certain order, which is the reason | ||
144 | that "bk push" sends all local changesets the remote doesn't have. This | ||
145 | separation may look like a lot of wasted disk space at first, but it | ||
146 | helps when two unrelated changes may "pollute" the same area of code, or | ||
147 | don't follow the same pace of development, or any other of the standard | ||
148 | reasons why one creates a development branch. | ||
149 | |||
150 | Small development branches (clones) will appear and disappear: | ||
151 | |||
152 | -------- A --------- B --------- C --------- D ------- | ||
153 | \ / | ||
154 | -----short-term devel branch----- | ||
155 | |||
156 | While long-term branches will parallel a tree (or trees), with period | ||
157 | merge points. In this first example, we pull from a tree (pulls, | ||
158 | "\") periodically, such as what occurs when tracking changes in a | ||
159 | vendor tree, never pushing changes back up the line: | ||
160 | |||
161 | -------- A --------- B --------- C --------- D ------- | ||
162 | \ \ \ | ||
163 | ----long-term devel branch----------------- | ||
164 | |||
165 | And then a more common case in Linux kernel development, a long term | ||
166 | branch 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 | |||
176 | Submitting Changes to Linus | ||
177 | --------------------------- | ||
178 | There's a bit of an art, or style, of submitting changes to Linus. | ||
179 | Since Linus's tree is now (you might say) fully integrated into the | ||
180 | distributed BitKeeper system, there are several prerequisites to | ||
181 | properly submitting a BitKeeper change. All these prereq's are just | ||
182 | general cleanliness of BK usage, so as people become experts at BK, feel | ||
183 | free to optimize this process further (assuming Linus agrees, of | ||
184 | course). | ||
185 | |||
186 | |||
187 | |||
188 | 0) Make sure your tree was originally cloned from the linux-2.5 tree | ||
189 | created by Linus. If your tree does not have this as its ancestor, it | ||
190 | is impossible to reliably exchange changesets. | ||
191 | |||
192 | |||
193 | |||
194 | 1) Pay attention to your commit text. The commit message that | ||
195 | accompanies each changeset you submit will live on forever in history, | ||
196 | and is used by Linus to accurately summarize the changes in each | ||
197 | pre-patch. Remember that there is no context, so | ||
198 | "fix for new scheduler changes" | ||
199 | would be too vague, but | ||
200 | "fix mips64 arch for new scheduler switch_to(), TIF_xxx semantics" | ||
201 | would be much better. | ||
202 | |||
203 | You can and should use the command "bk comment -C<rev>" to update the | ||
204 | commit text, and improve it after the fact. This is very useful for | ||
205 | development: poor, quick descriptions during development, which get | ||
206 | cleaned up using "bk comment" before issuing the "bk push" to submit the | ||
207 | changes. | ||
208 | |||
209 | |||
210 | |||
211 | 2) 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 | |||
217 | 3) Include a summary and "diffstat -p1" of each changeset that will be | ||
218 | downloaded, when Linus issues a "bk pull". The author auto-generates | ||
219 | these summaries using "bk changes -L <parent>", to obtain a listing | ||
220 | of all the pending-to-send changesets, and their commit messages. | ||
221 | |||
222 | It is important to show Linus what he will be downloading when he issues | ||
223 | a "bk pull", to reduce the time required to sift the changes once they | ||
224 | are downloaded to Linus's local machine. | ||
225 | |||
226 | IMPORTANT NOTE: One of the features of BK is that your repository does | ||
227 | not have to be up to date, in order for Linus to receive your changes. | ||
228 | It is considered a courtesy to keep your repository fairly recent, to | ||
229 | lessen any potential merge work Linus may need to do. | ||
230 | |||
231 | |||
232 | 4) Split up your changes. Each maintainer<->Linus situation is likely | ||
233 | to be slightly different here, so take this just as general advice. The | ||
234 | author splits up changes according to "themes" when merging with Linus. | ||
235 | Simultaneous pushes from local development go to special trees which | ||
236 | exist 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 | |||
242 | Linus then has much more freedom for pulling changes. He could (for | ||
243 | example) issue a "bk pull" on vm-2.5 and fs-2.5 trees, to merge their | ||
244 | changes, but hold off net-drivers-2.5 because of a change that needs | ||
245 | more discussion. | ||
246 | |||
247 | Other maintainers may find that a single linus-pull-from tree is | ||
248 | adequate for passing BK changesets to him. | ||
249 | |||
250 | |||
251 | |||
252 | Frequently Answered Questions | ||
253 | ----------------------------- | ||
254 | 1) How do I change the e-mail address shown in the changelog? | ||
255 | A. 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 | |||
260 | 2) How do I use tags / get a diff between two kernel versions? | ||
261 | A. Pass the tags Linus uses to 'bk export'. | ||
262 | |||
263 | ChangeSets are in a forward-progressing order, so it's pretty easy | ||
264 | to get a snapshot starting and ending at any two points in time. | ||
265 | Linus puts tags on each release and pre-release, so you could use | ||
266 | these 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 | |||
273 | A tag is just an alias for a specific changeset... and since changesets | ||
274 | are ordered, a tag is thus a marker for a specific point in time (or | ||
275 | specific state of the tree). | ||
276 | |||
277 | |||
278 | 3) Is there an easy way to generate One Big Patch versus mainline, | ||
279 | for my long-lived kernel branch? | ||
280 | A. 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 | |||
5 | LINUS_REPO=$1 | ||
6 | DIRBASE=`basename $PWD` | ||
7 | |||
8 | { | ||
9 | cat <<EOT | ||
10 | Please do a | ||
11 | |||
12 | bk pull bk://gkernel.bkbits.net/$DIRBASE | ||
13 | |||
14 | This will update the following files: | ||
15 | |||
16 | EOT | ||
17 | |||
18 | bk export -tpatch -hdu -r`bk repogca $LINUS_REPO`,+ | diffstat -p1 2>/dev/null | ||
19 | |||
20 | cat <<EOT | ||
21 | |||
22 | through these ChangeSets: | ||
23 | |||
24 | EOT | ||
25 | |||
26 | bk changes -L -d'$unless(:MERGE:){ChangeSet|:CSETREV:\n}' $LINUS_REPO | | ||
27 | bk -R prs -h -d'$unless(:MERGE:){<:P:@:HOST:> (:D: :I:)\n$each(:C:){ (:C:)\n}\n}' - | ||
28 | |||
29 | } > /tmp/linus.txt | ||
30 | |||
31 | cat <<EOT | ||
32 | Mail text in /tmp/linus.txt; please check and send using your favourite | ||
33 | mailer. | ||
34 | EOT | ||
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 | |||
7 | PROG=bksend | ||
8 | |||
9 | usage() { | ||
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 | |||
17 | case $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";; | ||
21 | esac | ||
22 | |||
23 | [ -z "$REV" ] && usage | ||
24 | |||
25 | echo "You can import this changeset into BK by piping this whole message to:" | ||
26 | echo "'| bk receive [path to repository]' or apply the patch as usual." | ||
27 | |||
28 | SEP="\n===================================================================\n\n" | ||
29 | echo -e $SEP | ||
30 | env PAGER=/bin/cat bk changes -r$REV | ||
31 | echo | ||
32 | bk export -tpatch -du -h -r$REV | diffstat | ||
33 | echo; echo | ||
34 | bk export -tpatch -du -h -r$REV | ||
35 | echo -e $SEP | ||
36 | bk 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 | |||
7 | PATH=$PATH:/usr/bin:/usr/local/bin:/usr/freeware/bin | ||
8 | |||
9 | # A program to generate base64 encoding on stdout | ||
10 | BASE64_ENCODE="uuencode -m /dev/stdout" | ||
11 | BASE64_BEGIN= | ||
12 | BASE64_END= | ||
13 | |||
14 | BZIP=NO | ||
15 | BASE64=NO | ||
16 | |||
17 | # Test if we have the bzip program installed | ||
18 | bzip2 -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 | |||
23 | if [ $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 | ||
29 | fi | ||
30 | |||
31 | if [ $BZIP = NO -o $BASE64 = NO ]; then | ||
32 | echo "$0: can't use bz64 encoding: bzip2=$BZIP, $BASE64_ENCODE=$BASE64" | ||
33 | exit 1 | ||
34 | fi | ||
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. | ||
39 | echo "$BASE64_BEGIN" | ||
40 | bzip2 -9 | $BASE64_ENCODE | ||
41 | echo "$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 | |||
9 | REV=$1 | ||
10 | FROM=$2 | ||
11 | TO=$3 | ||
12 | TMPF=/tmp/cpcset.$$ | ||
13 | |||
14 | rm -f $TMPF* | ||
15 | |||
16 | CWD_SAVE=`pwd` | ||
17 | cd $FROM | ||
18 | bk changes -r$REV | \ | ||
19 | grep -v '^ChangeSet' | \ | ||
20 | sed -e 's/^ //g' > $TMPF.log | ||
21 | |||
22 | USERHOST=`bk changes -r$REV | grep '^ChangeSet' | awk '{print $4}'` | ||
23 | export BK_USER=`echo $USERHOST | awk '-F@' '{print $1}'` | ||
24 | export BK_HOST=`echo $USERHOST | awk '-F@' '{print $2}'` | ||
25 | |||
26 | bk export -tpatch -hdu -r$REV > $TMPF.patch && \ | ||
27 | cd $CWD_SAVE && \ | ||
28 | cd $TO && \ | ||
29 | bk import -tpatch -CFR -y"`cat $TMPF.log`" $TMPF.patch . && \ | ||
30 | bk commit -y"`cat $TMPF.log`" | ||
31 | |||
32 | rm -f $TMPF* | ||
33 | |||
34 | echo changeset $REV copied. | ||
35 | echo "" | ||
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 | |||
3 | use strict; | ||
4 | |||
5 | my ($lhs, $rev, $tmp, $rhs, $s); | ||
6 | my @cset_text = (); | ||
7 | my @pipe_text = (); | ||
8 | my $have_cset = 0; | ||
9 | |||
10 | while (<>) { | ||
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); | ||
27 | exit(0); | ||
28 | |||
29 | |||
30 | sub 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 | |||
3 | use strict; | ||
4 | |||
5 | my ($lhs, $rev, $tmp, $rhs, $s); | ||
6 | my @cset_text = (); | ||
7 | my @pipe_text = (); | ||
8 | my $have_cset = 0; | ||
9 | |||
10 | while (<>) { | ||
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); | ||
27 | exit(0); | ||
28 | |||
29 | |||
30 | sub 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 | |||
8 | bk 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 | |||
10 | PATH=$PATH:/usr/bin:/usr/local/bin:/usr/freeware/bin | ||
11 | |||
12 | if 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 $? | ||
22 | else | ||
23 | cat - | uudecode -o /dev/stdout | bunzip2 | ||
24 | exit $? | ||
25 | fi | ||
diff --git a/Documentation/cpusets.txt b/Documentation/cpusets.txt index 1ad26d2c20ae..2f8f24eaefd9 100644 --- a/Documentation/cpusets.txt +++ b/Documentation/cpusets.txt | |||
@@ -252,8 +252,7 @@ in a tasks processor placement. | |||
252 | There is an exception to the above. If hotplug funtionality is used | 252 | There is an exception to the above. If hotplug funtionality is used |
253 | to remove all the CPUs that are currently assigned to a cpuset, | 253 | to remove all the CPUs that are currently assigned to a cpuset, |
254 | then the kernel will automatically update the cpus_allowed of all | 254 | then the kernel will automatically update the cpus_allowed of all |
255 | tasks attached to CPUs in that cpuset with the online CPUs of the | 255 | tasks attached to CPUs in that cpuset to allow all CPUs. When memory |
256 | nearest parent cpuset that still has some CPUs online. When memory | ||
257 | hotplug functionality for removing Memory Nodes is available, a | 256 | hotplug functionality for removing Memory Nodes is available, a |
258 | similar exception is expected to apply there as well. In general, | 257 | similar exception is expected to apply there as well. In general, |
259 | the kernel prefers to violate cpuset placement, over starving a task | 258 | the kernel prefers to violate cpuset placement, over starving a task |
diff --git a/Documentation/dontdiff b/Documentation/dontdiff index 7c2496426ab9..9a33bb94f74f 100644 --- a/Documentation/dontdiff +++ b/Documentation/dontdiff | |||
@@ -27,6 +27,7 @@ | |||
27 | *.so | 27 | *.so |
28 | *.tex | 28 | *.tex |
29 | *.ver | 29 | *.ver |
30 | *.xml | ||
30 | *_MODULES | 31 | *_MODULES |
31 | *_vga16.c | 32 | *_vga16.c |
32 | *cscope* | 33 | *cscope* |
@@ -110,6 +111,7 @@ mkdep | |||
110 | mktables | 111 | mktables |
111 | modpost | 112 | modpost |
112 | modversions.h* | 113 | modversions.h* |
114 | offsets.h | ||
113 | oui.c* | 115 | oui.c* |
114 | parse.c* | 116 | parse.c* |
115 | parse.h* | 117 | parse.h* |
@@ -134,4 +136,5 @@ vmlinux-* | |||
134 | vmlinux.lds | 136 | vmlinux.lds |
135 | vsyscall.lds | 137 | vsyscall.lds |
136 | wanxlfw.inc | 138 | wanxlfw.inc |
139 | uImage | ||
137 | zImage | 140 | zImage |
diff --git a/Documentation/dvb/README.flexcop b/Documentation/dvb/README.flexcop new file mode 100644 index 000000000000..a50c70f9ca72 --- /dev/null +++ b/Documentation/dvb/README.flexcop | |||
@@ -0,0 +1,205 @@ | |||
1 | This README escorted the skystar2-driver rewriting procedure. It describes the | ||
2 | state of the new flexcop-driver set and some internals are written down here | ||
3 | too. | ||
4 | |||
5 | This document hopefully describes things about the flexcop and its | ||
6 | device-offsprings. Goal was to write an easy-to-write and easy-to-read set of | ||
7 | drivers based on the skystar2.c and other information. | ||
8 | |||
9 | Remark: flexcop-pci.c was a copy of skystar2.c, but every line has been | ||
10 | touched and rewritten. | ||
11 | |||
12 | History & News | ||
13 | ============== | ||
14 | 2005-04-01 - correct USB ISOC transfers (thanks to Vadim Catana) | ||
15 | |||
16 | |||
17 | |||
18 | |||
19 | General coding processing | ||
20 | ========================= | ||
21 | |||
22 | We should proceed as follows (as long as no one complains): | ||
23 | |||
24 | 0) Think before start writing code! | ||
25 | |||
26 | 1) rewriting the skystar2.c with the help of the flexcop register descriptions | ||
27 | and splitting up the files to a pci-bus-part and a flexcop-part. | ||
28 | The new driver will be called b2c2-flexcop-pci.ko/b2c2-flexcop-usb.ko for the | ||
29 | device-specific part and b2c2-flexcop.ko for the common flexcop-functions. | ||
30 | |||
31 | 2) Search for errors in the leftover of flexcop-pci.c (compare with pluto2.c | ||
32 | and other pci drivers) | ||
33 | |||
34 | 3) make some beautification (see 'Improvements when rewriting (refactoring) is | ||
35 | done') | ||
36 | |||
37 | 4) Testing the new driver and maybe substitute the skystar2.c with it, to reach | ||
38 | a wider tester audience. | ||
39 | |||
40 | 5) creating an usb-bus-part using the already written flexcop code for the pci | ||
41 | card. | ||
42 | |||
43 | Idea: create a kernel-object for the flexcop and export all important | ||
44 | functions. This option saves kernel-memory, but maybe a lot of functions have | ||
45 | to be exported to kernel namespace. | ||
46 | |||
47 | |||
48 | Current situation | ||
49 | ================= | ||
50 | |||
51 | 0) Done :) | ||
52 | 1) Done (some minor issues left) | ||
53 | 2) Done | ||
54 | 3) Not ready yet, more information is necessary | ||
55 | 4) next to be done (see the table below) | ||
56 | 5) USB driver is working (yes, there are some minor issues) | ||
57 | |||
58 | What seems to be ready? | ||
59 | ----------------------- | ||
60 | |||
61 | 1) Rewriting | ||
62 | 1a) i2c is cut off from the flexcop-pci.c and seems to work | ||
63 | 1b) moved tuner and demod stuff from flexcop-pci.c to flexcop-tuner-fe.c | ||
64 | 1c) moved lnb and diseqc stuff from flexcop-pci.c to flexcop-tuner-fe.c | ||
65 | 1e) eeprom (reading MAC address) | ||
66 | 1d) sram (no dynamic sll size detection (commented out) (using default as JJ told me)) | ||
67 | 1f) misc. register accesses for reading parameters (e.g. resetting, revision) | ||
68 | 1g) pid/mac filter (flexcop-hw-filter.c) | ||
69 | 1i) dvb-stuff initialization in flexcop.c (done) | ||
70 | 1h) dma stuff (now just using the size-irq, instead of all-together, to be done) | ||
71 | 1j) remove flexcop initialization from flexcop-pci.c completely (done) | ||
72 | 1l) use a well working dma IRQ method (done, see 'Known bugs and problems and TODO') | ||
73 | 1k) cleanup flexcop-files (remove unused EXPORT_SYMBOLs, make static from | ||
74 | non-static where possible, moved code to proper places) | ||
75 | |||
76 | 2) Search for errors in the leftover of flexcop-pci.c (partially done) | ||
77 | 5a) add MAC address reading | ||
78 | 5c) feeding of ISOC data to the software demux (format of the isochronous data | ||
79 | and speed optimization, no real error) (thanks to Vadim Catana) | ||
80 | |||
81 | What to do in the near future? | ||
82 | -------------------------------------- | ||
83 | (no special order here) | ||
84 | |||
85 | 5) USB driver | ||
86 | 5b) optimize isoc-transfer (submitting/killing isoc URBs when transfer is starting) | ||
87 | |||
88 | Testing changes | ||
89 | --------------- | ||
90 | |||
91 | O = item is working | ||
92 | P = item is partially working | ||
93 | X = item is not working | ||
94 | N = item does not apply here | ||
95 | <empty field> = item need to be examined | ||
96 | |||
97 | | PCI | USB | ||
98 | item | mt352 | nxt2002 | stv0299 | mt312 | mt352 | nxt2002 | stv0299 | mt312 | ||
99 | -------+-------+---------+---------+-------+-------+---------+---------+------- | ||
100 | 1a) | O | | | | N | N | N | N | ||
101 | 1b) | O | | | | | | O | | ||
102 | 1c) | N | N | | | N | N | O | | ||
103 | 1d) | O | O | ||
104 | 1e) | O | O | ||
105 | 1f) | P | ||
106 | 1g) | O | ||
107 | 1h) | P | | ||
108 | 1i) | O | N | ||
109 | 1j) | O | N | ||
110 | 1l) | O | N | ||
111 | 2) | O | N | ||
112 | 5a) | N | O | ||
113 | 5b)* | N | | ||
114 | 5c) | N | O | ||
115 | |||
116 | * - not done yet | ||
117 | |||
118 | Known bugs and problems and TODO | ||
119 | -------------------------------- | ||
120 | |||
121 | 1g/h/l) when pid filtering is enabled on the pci card | ||
122 | |||
123 | DMA usage currently: | ||
124 | The DMA is splitted in 2 equal-sized subbuffers. The Flexcop writes to first | ||
125 | address and triggers an IRQ when it's full and starts writing to the second | ||
126 | address. When the second address is full, the IRQ is triggered again, and | ||
127 | the flexcop writes to first address again, and so on. | ||
128 | The buffersize of each address is currently 640*188 bytes. | ||
129 | |||
130 | Problem is, when using hw-pid-filtering and doing some low-bandwidth | ||
131 | operation (like scanning) the buffers won't be filled enough to trigger | ||
132 | the IRQ. That's why: | ||
133 | |||
134 | When PID filtering is activated, the timer IRQ is used. Every 1.97 ms the IRQ | ||
135 | is triggered. Is the current write address of DMA1 different to the one | ||
136 | during the last IRQ, then the data is passed to the demuxer. | ||
137 | |||
138 | There is an additional DMA-IRQ-method: packet count IRQ. This isn't | ||
139 | implemented correctly yet. | ||
140 | |||
141 | The solution is to disable HW PID filtering, but I don't know how the DVB | ||
142 | API software demux behaves on slow systems with 45MBit/s TS. | ||
143 | |||
144 | Solved bugs :) | ||
145 | -------------- | ||
146 | 1g) pid-filtering (somehow pid index 4 and 5 (EMM_PID and ECM_PID) aren't | ||
147 | working) | ||
148 | SOLUTION: also index 0 was affected, because net_translation is done for | ||
149 | these indexes by default | ||
150 | |||
151 | 5b) isochronous transfer does only work in the first attempt (for the Sky2PC | ||
152 | USB, Air2PC is working) SOLUTION: the flexcop was going asleep and never really | ||
153 | woke up again (don't know if this need fixes, see | ||
154 | flexcop-fe-tuner.c:flexcop_sleep) | ||
155 | |||
156 | NEWS: when the driver is loaded and unloaded and loaded again (w/o doing | ||
157 | anything in the while the driver is loaded the first time), no transfers take | ||
158 | place anymore. | ||
159 | |||
160 | Improvements when rewriting (refactoring) is done | ||
161 | ================================================= | ||
162 | |||
163 | - split sleeping of the flexcop (misc_204.ACPI3_sig = 1;) from lnb_control | ||
164 | (enable sleeping for other demods than dvb-s) | ||
165 | - add support for CableStar (stv0297 Microtune 203x/ALPS) (almost done, incompatibilities with the Nexus-CA) | ||
166 | |||
167 | Debugging | ||
168 | --------- | ||
169 | - add verbose debugging to skystar2.c (dump the reg_dw_data) and compare it | ||
170 | with this flexcop, this is important, because i2c is now using the | ||
171 | flexcop_ibi_value union from flexcop-reg.h (do you have a better idea for | ||
172 | that, please tell us so). | ||
173 | |||
174 | Everything which is identical in the following table, can be put into a common | ||
175 | flexcop-module. | ||
176 | |||
177 | PCI USB | ||
178 | ------------------------------------------------------------------------------- | ||
179 | Different: | ||
180 | Register access: accessing IO memory USB control message | ||
181 | I2C bus: I2C bus of the FC USB control message | ||
182 | Data transfer: DMA isochronous transfer | ||
183 | EEPROM transfer: through i2c bus not clear yet | ||
184 | |||
185 | Identical: | ||
186 | Streaming: accessing registers | ||
187 | PID Filtering: accessing registers | ||
188 | Sram destinations: accessing registers | ||
189 | Tuner/Demod: I2C bus | ||
190 | DVB-stuff: can be written for common use | ||
191 | |||
192 | Acknowledgements (just for the rewriting part) | ||
193 | ================ | ||
194 | |||
195 | Bjarne Steinsbo thought a lot in the first place of the pci part for this code | ||
196 | sharing idea. | ||
197 | |||
198 | Andreas Oberritter for providing a recent PCI initialization template | ||
199 | (pluto2.c). | ||
200 | |||
201 | Boleslaw Ciesielski for pointing out a problem with firmware loader. | ||
202 | |||
203 | Vadim Catana for correcting the USB transfer. | ||
204 | |||
205 | comments, critics and ideas to linux-dvb@linuxtv.org. | ||
diff --git a/Documentation/dvb/bt8xx.txt b/Documentation/dvb/bt8xx.txt index e3cacf4f2345..d64430bf4bb6 100644 --- a/Documentation/dvb/bt8xx.txt +++ b/Documentation/dvb/bt8xx.txt | |||
@@ -17,74 +17,53 @@ Because of this, you need to enable | |||
17 | "Device drivers" => "Multimedia devices" | 17 | "Device drivers" => "Multimedia devices" |
18 | => "Video For Linux" => "BT848 Video For Linux" | 18 | => "Video For Linux" => "BT848 Video For Linux" |
19 | 19 | ||
20 | Furthermore you need to enable | ||
21 | "Device drivers" => "Multimedia devices" => "Digital Video Broadcasting Devices" | ||
22 | => "DVB for Linux" "DVB Core Support" "Nebula/Pinnacle PCTV/TwinHan PCI Cards" | ||
23 | |||
20 | 2) Loading Modules | 24 | 2) Loading Modules |
21 | ================== | 25 | ================== |
22 | 26 | ||
23 | In general you need to load the bttv driver, which will handle the gpio and | 27 | In general you need to load the bttv driver, which will handle the gpio and |
24 | i2c communication for us. Next you need the common dvb-bt8xx device driver | 28 | i2c communication for us, plus the common dvb-bt8xx device driver. |
25 | and one frontend driver. | 29 | The frontends for Nebula (nxt6000), Pinnacle PCTV (cx24110) and |
26 | 30 | TwinHan (dst) are loaded automatically by the dvb-bt8xx device driver. | |
27 | The bttv driver will HANG YOUR SYSTEM IF YOU DO NOT SPECIFY THE CORRECT | ||
28 | CARD ID! | ||
29 | |||
30 | (If you don't get your card running and you suspect that the card id you're | ||
31 | using is wrong, have a look at "bttv-cards.c" for a list of possible card | ||
32 | ids.) | ||
33 | |||
34 | Pay attention to failures when you load the frontend drivers | ||
35 | (e.g. dmesg, /var/log/messages). | ||
36 | 31 | ||
37 | 3a) Nebula / Pinnacle PCTV | 32 | 3a) Nebula / Pinnacle PCTV |
38 | -------------------------- | 33 | -------------------------- |
39 | 34 | ||
40 | $ modprobe bttv i2c_hw=1 card=0x68 | 35 | $ modprobe bttv (normally bttv is being loaded automatically by kmod) |
41 | $ modprobe dvb-bt8xx | 36 | $ modprobe dvb-bt8xx (or just place dvb-bt8xx in /etc/modules for automatic loading) |
42 | |||
43 | For Nebula cards use the "nxt6000" frontend driver: | ||
44 | $ modprobe nxt6000 | ||
45 | 37 | ||
46 | For Pinnacle PCTV cards use the "cx24110" frontend driver: | ||
47 | $ modprobe cx24110 | ||
48 | 38 | ||
49 | 3b) TwinHan | 39 | 3b) TwinHan and Clones |
50 | ----------- | 40 | -------------------------- |
51 | 41 | ||
52 | $ modprobe bttv i2c_hw=1 card=0x71 | 42 | $ modprobe bttv i2c_hw=1 card=0x71 |
53 | $ modprobe dvb-bt8xx | 43 | $ modprobe dvb-bt8xx |
54 | $ modprobe dst | 44 | $ modprobe dst |
55 | 45 | ||
56 | The value 0x71 will override the PCI type detection for dvb-bt8xx, which | 46 | The value 0x71 will override the PCI type detection for dvb-bt8xx, |
57 | is necessary for TwinHan cards.# | 47 | which is necessary for TwinHan cards. |
58 | 48 | ||
59 | If you're having an older card (blue color circuit) and card=0x71 locks your | 49 | If you're having an older card (blue color circuit) and card=0x71 locks |
60 | machine, try using 0x68, too. If that does not work, ask on the DVB mailing list. | 50 | your machine, try using 0x68, too. If that does not work, ask on the |
51 | mailing list. | ||
61 | 52 | ||
62 | The DST module takes a couple of useful parameters, in case the | 53 | The DST module takes a couple of useful parameters. |
63 | dst drivers fails to detect your type of card correctly. | ||
64 | 54 | ||
65 | dst_type takes values 0 (satellite), 1 (terrestial TV), 2 (cable). | 55 | verbose takes values 0 to 5. These values control the verbosity level. |
66 | 56 | ||
67 | dst_type_flags takes bit combined values: | 57 | debug takes values 0 and 1. You can either disable or enable debugging. |
68 | 1 = new tuner type packets. You can use this if your card is detected | ||
69 | and you have debug and you continually see the tuner packets not | ||
70 | working (make sure not a basic problem like dish alignment etc.) | ||
71 | 58 | ||
72 | 2 = TS 204. If your card tunes OK, but the picture is terrible, seemingly | 59 | dst_addons takes values 0 and 0x20. A value of 0 means it is a FTA card. |
73 | breaking up in one half continually, and crc fails a lot, then | 60 | 0x20 means it has a Conditional Access slot. |
74 | this is worth a try (or trying to turn off) | ||
75 | 61 | ||
76 | 4 = has symdiv. Some cards, mostly without new tuner packets, require | 62 | The autodected values are determined bythe cards 'response |
77 | a symbol division algorithm. Doesn't apply to terrestial TV. | ||
78 | |||
79 | You can also specify a value to have the autodetected values turned off | ||
80 | (e.g. 0). The autodected values are determined bythe cards 'response | ||
81 | string' which you can see in your logs e.g. | 63 | string' which you can see in your logs e.g. |
82 | 64 | ||
83 | dst_check_ci: recognize DST-MOT | 65 | dst_get_device_id: Recognise [DSTMCI] |
84 | |||
85 | or | ||
86 | 66 | ||
87 | dst_check_ci: unable to recognize DSTXCI or STXCI | ||
88 | 67 | ||
89 | -- | 68 | -- |
90 | Authors: Richard Walker, Jamie Honan, Michael Hunold | 69 | Authors: Richard Walker, Jamie Honan, Michael Hunold, Manu Abraham |
diff --git a/Documentation/dvb/ci.txt b/Documentation/dvb/ci.txt new file mode 100644 index 000000000000..62e0701b542a --- /dev/null +++ b/Documentation/dvb/ci.txt | |||
@@ -0,0 +1,219 @@ | |||
1 | * For the user | ||
2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
3 | NOTE: This document describes the usage of the high level CI API as | ||
4 | in accordance to the Linux DVB API. This is a not a documentation for the, | ||
5 | existing low level CI API. | ||
6 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
7 | |||
8 | To utilize the High Level CI capabilities, | ||
9 | |||
10 | (1*) This point is valid only for the Twinhan/clones | ||
11 | For the Twinhan/Twinhan clones, the dst_ca module handles the CI | ||
12 | hardware handling.This module is loaded automatically if a CI | ||
13 | (Common Interface, that holds the CAM (Conditional Access Module) | ||
14 | is detected. | ||
15 | |||
16 | (2) one requires a userspace application, ca_zap. This small userland | ||
17 | application is in charge of sending the descrambling related information | ||
18 | to the CAM. | ||
19 | |||
20 | This application requires the following to function properly as of now. | ||
21 | |||
22 | (a) Tune to a valid channel, with szap. | ||
23 | eg: $ szap -c channels.conf -r "TMC" -x | ||
24 | |||
25 | (b) a channels.conf containing a valid PMT PID | ||
26 | |||
27 | eg: TMC:11996:h:0:27500:278:512:650:321 | ||
28 | |||
29 | here 278 is a valid PMT PID. the rest of the values are the | ||
30 | same ones that szap uses. | ||
31 | |||
32 | (c) after running a szap, you have to run ca_zap, for the | ||
33 | descrambler to function, | ||
34 | |||
35 | eg: $ ca_zap patched_channels.conf "TMC" | ||
36 | |||
37 | The patched means a patch to apply to scan, such that scan can | ||
38 | generate a channels.conf_with pmt, which has this PMT PID info | ||
39 | (NOTE: szap cannot use this channels.conf with the PMT_PID) | ||
40 | |||
41 | |||
42 | (d) Hopeflly Enjoy your favourite subscribed channel as you do with | ||
43 | a FTA card. | ||
44 | |||
45 | (3) Currently ca_zap, and dst_test, both are meant for demonstration | ||
46 | purposes only, they can become full fledged applications if necessary. | ||
47 | |||
48 | |||
49 | * Cards that fall in this category | ||
50 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
51 | At present the cards that fall in this category are the Twinhan and it's | ||
52 | clones, these cards are available as VVMER, Tomato, Hercules, Orange and | ||
53 | so on. | ||
54 | |||
55 | * CI modules that are supported | ||
56 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
57 | The CI module support is largely dependant upon the firmware on the cards | ||
58 | Some cards do support almost all of the available CI modules. There is | ||
59 | nothing much that can be done in order to make additional CI modules | ||
60 | working with these cards. | ||
61 | |||
62 | Modules that have been tested by this driver at present are | ||
63 | |||
64 | (1) Irdeto 1 and 2 from SCM | ||
65 | (2) Viaccess from SCM | ||
66 | (3) Dragoncam | ||
67 | |||
68 | * The High level CI API | ||
69 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
70 | |||
71 | * For the programmer | ||
72 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
73 | With the High Level CI approach any new card with almost any random | ||
74 | architecture can be implemented with this style, the definitions | ||
75 | insidethe switch statement can be easily adapted for any card, thereby | ||
76 | eliminating the need for any additional ioctls. | ||
77 | |||
78 | The disadvantage is that the driver/hardware has to manage the rest. For | ||
79 | the application programmer it would be as simple as sending/receiving an | ||
80 | array to/from the CI ioctls as defined in the Linux DVB API. No changes | ||
81 | have been made in the API to accomodate this feature. | ||
82 | |||
83 | |||
84 | * Why the need for another CI interface ? | ||
85 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
86 | This is one of the most commonly asked question. Well a nice question. | ||
87 | Strictly speaking this is not a new interface. | ||
88 | |||
89 | The CI interface is defined in the DVB API in ca.h as | ||
90 | |||
91 | typedef struct ca_slot_info { | ||
92 | int num; /* slot number */ | ||
93 | |||
94 | int type; /* CA interface this slot supports */ | ||
95 | #define CA_CI 1 /* CI high level interface */ | ||
96 | #define CA_CI_LINK 2 /* CI link layer level interface */ | ||
97 | #define CA_CI_PHYS 4 /* CI physical layer level interface */ | ||
98 | #define CA_DESCR 8 /* built-in descrambler */ | ||
99 | #define CA_SC 128 /* simple smart card interface */ | ||
100 | |||
101 | unsigned int flags; | ||
102 | #define CA_CI_MODULE_PRESENT 1 /* module (or card) inserted */ | ||
103 | #define CA_CI_MODULE_READY 2 | ||
104 | } ca_slot_info_t; | ||
105 | |||
106 | |||
107 | |||
108 | This CI interface follows the CI high level interface, which is not | ||
109 | implemented by most applications. Hence this area is revisited. | ||
110 | |||
111 | This CI interface is quite different in the case that it tries to | ||
112 | accomodate all other CI based devices, that fall into the other categories | ||
113 | |||
114 | This means that this CI interface handles the EN50221 style tags in the | ||
115 | Application layer only and no session management is taken care of by the | ||
116 | application. The driver/hardware will take care of all that. | ||
117 | |||
118 | This interface is purely an EN50221 interface exchanging APDU's. This | ||
119 | means that no session management, link layer or a transport layer do | ||
120 | exist in this case in the application to driver communication. It is | ||
121 | as simple as that. The driver/hardware has to take care of that. | ||
122 | |||
123 | |||
124 | With this High Level CI interface, the interface can be defined with the | ||
125 | regular ioctls. | ||
126 | |||
127 | All these ioctls are also valid for the High level CI interface | ||
128 | |||
129 | #define CA_RESET _IO('o', 128) | ||
130 | #define CA_GET_CAP _IOR('o', 129, ca_caps_t) | ||
131 | #define CA_GET_SLOT_INFO _IOR('o', 130, ca_slot_info_t) | ||
132 | #define CA_GET_DESCR_INFO _IOR('o', 131, ca_descr_info_t) | ||
133 | #define CA_GET_MSG _IOR('o', 132, ca_msg_t) | ||
134 | #define CA_SEND_MSG _IOW('o', 133, ca_msg_t) | ||
135 | #define CA_SET_DESCR _IOW('o', 134, ca_descr_t) | ||
136 | #define CA_SET_PID _IOW('o', 135, ca_pid_t) | ||
137 | |||
138 | |||
139 | On querying the device, the device yields information thus | ||
140 | |||
141 | CA_GET_SLOT_INFO | ||
142 | ---------------------------- | ||
143 | Command = [info] | ||
144 | APP: Number=[1] | ||
145 | APP: Type=[1] | ||
146 | APP: flags=[1] | ||
147 | APP: CI High level interface | ||
148 | APP: CA/CI Module Present | ||
149 | |||
150 | CA_GET_CAP | ||
151 | ---------------------------- | ||
152 | Command = [caps] | ||
153 | APP: Slots=[1] | ||
154 | APP: Type=[1] | ||
155 | APP: Descrambler keys=[16] | ||
156 | APP: Type=[1] | ||
157 | |||
158 | CA_SEND_MSG | ||
159 | ---------------------------- | ||
160 | Descriptors(Program Level)=[ 09 06 06 04 05 50 ff f1] | ||
161 | Found CA descriptor @ program level | ||
162 | |||
163 | (20) ES type=[2] ES pid=[201] ES length =[0 (0x0)] | ||
164 | (25) ES type=[4] ES pid=[301] ES length =[0 (0x0)] | ||
165 | ca_message length is 25 (0x19) bytes | ||
166 | EN50221 CA MSG=[ 9f 80 32 19 03 01 2d d1 f0 08 01 09 06 06 04 05 50 ff f1 02 e0 c9 00 00 04 e1 2d 00 00] | ||
167 | |||
168 | |||
169 | Not all ioctl's are implemented in the driver from the API, the other | ||
170 | features of the hardware that cannot be implemented by the API are achieved | ||
171 | using the CA_GET_MSG and CA_SEND_MSG ioctls. An EN50221 style wrapper is | ||
172 | used to exchange the data to maintain compatibility with other hardware. | ||
173 | |||
174 | |||
175 | /* a message to/from a CI-CAM */ | ||
176 | typedef struct ca_msg { | ||
177 | unsigned int index; | ||
178 | unsigned int type; | ||
179 | unsigned int length; | ||
180 | unsigned char msg[256]; | ||
181 | } ca_msg_t; | ||
182 | |||
183 | |||
184 | The flow of data can be described thus, | ||
185 | |||
186 | |||
187 | |||
188 | |||
189 | |||
190 | App (User) | ||
191 | ----- | ||
192 | parse | ||
193 | | | ||
194 | | | ||
195 | v | ||
196 | en50221 APDU (package) | ||
197 | -------------------------------------- | ||
198 | | | | High Level CI driver | ||
199 | | | | | ||
200 | | v | | ||
201 | | en50221 APDU (unpackage) | | ||
202 | | | | | ||
203 | | | | | ||
204 | | v | | ||
205 | | sanity checks | | ||
206 | | | | | ||
207 | | | | | ||
208 | | v | | ||
209 | | do (H/W dep) | | ||
210 | -------------------------------------- | ||
211 | | Hardware | ||
212 | | | ||
213 | v | ||
214 | |||
215 | |||
216 | |||
217 | |||
218 | The High Level CI interface uses the EN50221 DVB standard, following a | ||
219 | standard ensures futureproofness. | ||
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware index 3ffdcb394299..a750f0101d9d 100644 --- a/Documentation/dvb/get_dvb_firmware +++ b/Documentation/dvb/get_dvb_firmware | |||
@@ -107,7 +107,7 @@ sub tda10045 { | |||
107 | sub tda10046 { | 107 | sub tda10046 { |
108 | my $sourcefile = "tt_budget_217g.zip"; | 108 | my $sourcefile = "tt_budget_217g.zip"; |
109 | my $url = "http://www.technotrend.de/new/217g/$sourcefile"; | 109 | my $url = "http://www.technotrend.de/new/217g/$sourcefile"; |
110 | my $hash = "a25b579e37109af60f4a36c37893957c"; | 110 | my $hash = "6a7e1e2f2644b162ff0502367553c72d"; |
111 | my $outfile = "dvb-fe-tda10046.fw"; | 111 | my $outfile = "dvb-fe-tda10046.fw"; |
112 | my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); | 112 | my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); |
113 | 113 | ||
@@ -115,7 +115,7 @@ sub tda10046 { | |||
115 | 115 | ||
116 | wgetfile($sourcefile, $url); | 116 | wgetfile($sourcefile, $url); |
117 | unzip($sourcefile, $tmpdir); | 117 | unzip($sourcefile, $tmpdir); |
118 | extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x3f731, 24479, "$tmpdir/fwtmp"); | 118 | extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x3f731, 24478, "$tmpdir/fwtmp"); |
119 | verify("$tmpdir/fwtmp", $hash); | 119 | verify("$tmpdir/fwtmp", $hash); |
120 | copy("$tmpdir/fwtmp", $outfile); | 120 | copy("$tmpdir/fwtmp", $outfile); |
121 | 121 | ||
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index d3c52dd24a2a..b9eb209318ab 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -63,3 +63,23 @@ Why: Outside of Linux, the only implementations of anything even | |||
63 | people, who might be using implementations that I am not aware | 63 | people, who might be using implementations that I am not aware |
64 | of, to adjust to this upcoming change. | 64 | of, to adjust to this upcoming change. |
65 | Who: Paul E. McKenney <paulmck@us.ibm.com> | 65 | Who: Paul E. McKenney <paulmck@us.ibm.com> |
66 | |||
67 | --------------------------- | ||
68 | |||
69 | What: IEEE1394 Audio and Music Data Transmission Protocol driver, | ||
70 | Connection Management Procedures driver | ||
71 | When: November 2005 | ||
72 | Files: drivers/ieee1394/{amdtp,cmp}* | ||
73 | Why: These are incomplete, have never worked, and are better implemented | ||
74 | in userland via raw1394 (see http://freebob.sourceforge.net/ for | ||
75 | example.) | ||
76 | Who: Jody McIntyre <scjody@steamballoon.com> | ||
77 | |||
78 | --------------------------- | ||
79 | |||
80 | What: raw1394: requests of type RAW1394_REQ_ISO_SEND, RAW1394_REQ_ISO_LISTEN | ||
81 | When: November 2005 | ||
82 | Why: Deprecated in favour of the new ioctl-based rawiso interface, which is | ||
83 | more efficient. You should really be using libraw1394 for raw1394 | ||
84 | access anyway. | ||
85 | Who: Jody McIntyre <scjody@steamballoon.com> | ||
diff --git a/Documentation/filesystems/sysfs-pci.txt b/Documentation/filesystems/sysfs-pci.txt index e97d024eae77..988a62fae11f 100644 --- a/Documentation/filesystems/sysfs-pci.txt +++ b/Documentation/filesystems/sysfs-pci.txt | |||
@@ -7,7 +7,6 @@ that support it. For example, a given bus might look like this: | |||
7 | |-- 0000:17:00.0 | 7 | |-- 0000:17:00.0 |
8 | | |-- class | 8 | | |-- class |
9 | | |-- config | 9 | | |-- config |
10 | | |-- detach_state | ||
11 | | |-- device | 10 | | |-- device |
12 | | |-- irq | 11 | | |-- irq |
13 | | |-- local_cpus | 12 | | |-- local_cpus |
@@ -19,7 +18,7 @@ that support it. For example, a given bus might look like this: | |||
19 | | |-- subsystem_device | 18 | | |-- subsystem_device |
20 | | |-- subsystem_vendor | 19 | | |-- subsystem_vendor |
21 | | `-- vendor | 20 | | `-- vendor |
22 | `-- detach_state | 21 | `-- ... |
23 | 22 | ||
24 | The topmost element describes the PCI domain and bus number. In this case, | 23 | The topmost element describes the PCI domain and bus number. In this case, |
25 | the domain number is 0000 and the bus number is 17 (both values are in hex). | 24 | the domain number is 0000 and the bus number is 17 (both values are in hex). |
@@ -31,7 +30,6 @@ files, each with their own function. | |||
31 | ---- -------- | 30 | ---- -------- |
32 | class PCI class (ascii, ro) | 31 | class PCI class (ascii, ro) |
33 | config PCI config space (binary, rw) | 32 | config PCI config space (binary, rw) |
34 | detach_state connection status (bool, rw) | ||
35 | device PCI device (ascii, ro) | 33 | device PCI device (ascii, ro) |
36 | irq IRQ number (ascii, ro) | 34 | irq IRQ number (ascii, ro) |
37 | local_cpus nearby CPU mask (cpumask, ro) | 35 | local_cpus nearby CPU mask (cpumask, ro) |
@@ -85,4 +83,4 @@ useful return codes should be provided. | |||
85 | 83 | ||
86 | Legacy resources are protected by the HAVE_PCI_LEGACY define. Platforms | 84 | Legacy resources are protected by the HAVE_PCI_LEGACY define. Platforms |
87 | wishing to support legacy functionality should define it and provide | 85 | wishing to support legacy functionality should define it and provide |
88 | pci_legacy_read, pci_legacy_write and pci_mmap_legacy_page_range functions. \ No newline at end of file | 86 | pci_legacy_read, pci_legacy_write and pci_mmap_legacy_page_range functions. |
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/power/devices.txt b/Documentation/power/devices.txt index 5d4ae9a39f1d..f987afe43e28 100644 --- a/Documentation/power/devices.txt +++ b/Documentation/power/devices.txt | |||
@@ -207,27 +207,6 @@ SYSTEM_SHUTDOWN, I do not understand this one too much. probably event | |||
207 | #READY_AFTER_RESUME | 207 | #READY_AFTER_RESUME |
208 | # | 208 | # |
209 | 209 | ||
210 | Driver Detach Power Management | ||
211 | |||
212 | The kernel now supports the ability to place a device in a low-power | ||
213 | state when it is detached from its driver, which happens when its | ||
214 | module is removed. | ||
215 | |||
216 | Each device contains a 'detach_state' file in its sysfs directory | ||
217 | which can be used to control this state. Reading from this file | ||
218 | displays what the current detach state is set to. This is 0 (On) by | ||
219 | default. A user may write a positive integer value to this file in the | ||
220 | range of 1-4 inclusive. | ||
221 | |||
222 | A value of 1-3 will indicate the device should be placed in that | ||
223 | low-power state, which will cause ->suspend() to be called for that | ||
224 | device. A value of 4 indicates that the device should be shutdown, so | ||
225 | ->shutdown() will be called for that device. | ||
226 | |||
227 | The driver is responsible for reinitializing the device when the | ||
228 | module is re-inserted during it's ->probe() (or equivalent) method. | ||
229 | The driver core will not call any extra functions when binding the | ||
230 | device to the driver. | ||
231 | 210 | ||
232 | pm_message_t meaning | 211 | pm_message_t meaning |
233 | 212 | ||
diff --git a/Documentation/powerpc/hvcs.txt b/Documentation/powerpc/hvcs.txt index c0a62e116e6e..dca75cbda6f8 100644 --- a/Documentation/powerpc/hvcs.txt +++ b/Documentation/powerpc/hvcs.txt | |||
@@ -347,8 +347,8 @@ address that is created by firmware. An example vty-server sysfs entry | |||
347 | looks like the following: | 347 | looks like the following: |
348 | 348 | ||
349 | Pow5:/sys/bus/vio/drivers/hvcs/30000004 # ls | 349 | Pow5:/sys/bus/vio/drivers/hvcs/30000004 # ls |
350 | . current_vty devspec name partner_vtys | 350 | . current_vty devspec name partner_vtys |
351 | .. detach_state index partner_clcs vterm_state | 351 | .. index partner_clcs vterm_state |
352 | 352 | ||
353 | Each entry is provided, by default with a "name" attribute. Reading the | 353 | Each entry is provided, by default with a "name" attribute. Reading the |
354 | "name" attribute will reveal the device type as shown in the following | 354 | "name" attribute will reveal the device type as shown in the following |
diff --git a/Documentation/x86_64/boot-options.txt b/Documentation/x86_64/boot-options.txt index 44b6eea60ece..b9e6be00cadf 100644 --- a/Documentation/x86_64/boot-options.txt +++ b/Documentation/x86_64/boot-options.txt | |||
@@ -25,6 +25,9 @@ APICs | |||
25 | 25 | ||
26 | noapictimer Don't set up the APIC timer | 26 | noapictimer Don't set up the APIC timer |
27 | 27 | ||
28 | no_timer_check Don't check the IO-APIC timer. This can work around | ||
29 | problems with incorrect timer initialization on some boards. | ||
30 | |||
28 | Early Console | 31 | Early Console |
29 | 32 | ||
30 | syntax: earlyprintk=vga | 33 | syntax: earlyprintk=vga |