diff options
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/ABI/stable/sysfs-class-ubi | 212 | ||||
-rw-r--r-- | Documentation/DocBook/Makefile | 5 | ||||
-rw-r--r-- | Documentation/HOWTO | 30 | ||||
-rw-r--r-- | Documentation/arm/Samsung-S3C24XX/NAND.txt | 30 | ||||
-rw-r--r-- | Documentation/arm/Samsung-S3C24XX/Overview.txt | 2 | ||||
-rw-r--r-- | Documentation/device-mapper/dm-crypt.txt | 52 | ||||
-rw-r--r-- | Documentation/filesystems/nfs-rdma.txt | 14 | ||||
-rw-r--r-- | Documentation/filesystems/seq_file.txt | 19 | ||||
-rw-r--r-- | Documentation/kbuild/modules.txt | 9 | ||||
-rw-r--r-- | Documentation/networking/phy.txt | 38 | ||||
-rw-r--r-- | Documentation/usb/anchors.txt | 50 | ||||
-rw-r--r-- | Documentation/usb/callbacks.txt | 132 | ||||
-rw-r--r-- | Documentation/usb/persist.txt | 43 | ||||
-rw-r--r-- | Documentation/usb/usb-serial.txt | 7 |
14 files changed, 595 insertions, 48 deletions
diff --git a/Documentation/ABI/stable/sysfs-class-ubi b/Documentation/ABI/stable/sysfs-class-ubi new file mode 100644 index 000000000000..18d471d9faea --- /dev/null +++ b/Documentation/ABI/stable/sysfs-class-ubi | |||
@@ -0,0 +1,212 @@ | |||
1 | What: /sys/class/ubi/ | ||
2 | Date: July 2006 | ||
3 | KernelVersion: 2.6.22 | ||
4 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
5 | Description: | ||
6 | The ubi/ class sub-directory belongs to the UBI subsystem and | ||
7 | provides general UBI information, per-UBI device information | ||
8 | and per-UBI volume information. | ||
9 | |||
10 | What: /sys/class/ubi/version | ||
11 | Date: July 2006 | ||
12 | KernelVersion: 2.6.22 | ||
13 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
14 | Description: | ||
15 | This file contains version of the latest supported UBI on-media | ||
16 | format. Currently it is 1, and there is no plan to change this. | ||
17 | However, if in the future UBI needs on-flash format changes | ||
18 | which cannot be done in a compatible manner, a new format | ||
19 | version will be added. So this is a mechanism for possible | ||
20 | future backward-compatible (but forward-incompatible) | ||
21 | improvements. | ||
22 | |||
23 | What: /sys/class/ubiX/ | ||
24 | Date: July 2006 | ||
25 | KernelVersion: 2.6.22 | ||
26 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
27 | Description: | ||
28 | The /sys/class/ubi0, /sys/class/ubi1, etc directories describe | ||
29 | UBI devices (UBI device 0, 1, etc). They contain general UBI | ||
30 | device information and per UBI volume information (each UBI | ||
31 | device may have many UBI volumes) | ||
32 | |||
33 | What: /sys/class/ubi/ubiX/avail_eraseblocks | ||
34 | Date: July 2006 | ||
35 | KernelVersion: 2.6.22 | ||
36 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
37 | Description: | ||
38 | Amount of available logical eraseblock. For example, one may | ||
39 | create a new UBI volume which has this amount of logical | ||
40 | eraseblocks. | ||
41 | |||
42 | What: /sys/class/ubi/ubiX/bad_peb_count | ||
43 | Date: July 2006 | ||
44 | KernelVersion: 2.6.22 | ||
45 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
46 | Description: | ||
47 | Count of bad physical eraseblocks on the underlying MTD device. | ||
48 | |||
49 | What: /sys/class/ubi/ubiX/bgt_enabled | ||
50 | Date: July 2006 | ||
51 | KernelVersion: 2.6.22 | ||
52 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
53 | Description: | ||
54 | Contains ASCII "0\n" if the UBI background thread is disabled, | ||
55 | and ASCII "1\n" if it is enabled. | ||
56 | |||
57 | What: /sys/class/ubi/ubiX/dev | ||
58 | Date: July 2006 | ||
59 | KernelVersion: 2.6.22 | ||
60 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
61 | Description: | ||
62 | Major and minor numbers of the character device corresponding | ||
63 | to this UBI device (in <major>:<minor> format). | ||
64 | |||
65 | What: /sys/class/ubi/ubiX/eraseblock_size | ||
66 | Date: July 2006 | ||
67 | KernelVersion: 2.6.22 | ||
68 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
69 | Description: | ||
70 | Maximum logical eraseblock size this UBI device may provide. UBI | ||
71 | volumes may have smaller logical eraseblock size because of their | ||
72 | alignment. | ||
73 | |||
74 | What: /sys/class/ubi/ubiX/max_ec | ||
75 | Date: July 2006 | ||
76 | KernelVersion: 2.6.22 | ||
77 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
78 | Description: | ||
79 | Maximum physical eraseblock erase counter value. | ||
80 | |||
81 | What: /sys/class/ubi/ubiX/max_vol_count | ||
82 | Date: July 2006 | ||
83 | KernelVersion: 2.6.22 | ||
84 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
85 | Description: | ||
86 | Maximum number of volumes which this UBI device may have. | ||
87 | |||
88 | What: /sys/class/ubi/ubiX/min_io_size | ||
89 | Date: July 2006 | ||
90 | KernelVersion: 2.6.22 | ||
91 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
92 | Description: | ||
93 | Minimum input/output unit size. All the I/O may only be done | ||
94 | in fractions of the contained number. | ||
95 | |||
96 | What: /sys/class/ubi/ubiX/mtd_num | ||
97 | Date: January 2008 | ||
98 | KernelVersion: 2.6.25 | ||
99 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
100 | Description: | ||
101 | Number of the underlying MTD device. | ||
102 | |||
103 | What: /sys/class/ubi/ubiX/reserved_for_bad | ||
104 | Date: July 2006 | ||
105 | KernelVersion: 2.6.22 | ||
106 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
107 | Description: | ||
108 | Number of physical eraseblocks reserved for bad block handling. | ||
109 | |||
110 | What: /sys/class/ubi/ubiX/total_eraseblocks | ||
111 | Date: July 2006 | ||
112 | KernelVersion: 2.6.22 | ||
113 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
114 | Description: | ||
115 | Total number of good (not marked as bad) physical eraseblocks on | ||
116 | the underlying MTD device. | ||
117 | |||
118 | What: /sys/class/ubi/ubiX/volumes_count | ||
119 | Date: July 2006 | ||
120 | KernelVersion: 2.6.22 | ||
121 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
122 | Description: | ||
123 | Count of volumes on this UBI device. | ||
124 | |||
125 | What: /sys/class/ubi/ubiX/ubiX_Y/ | ||
126 | Date: July 2006 | ||
127 | KernelVersion: 2.6.22 | ||
128 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
129 | Description: | ||
130 | The /sys/class/ubi/ubiX/ubiX_0/, /sys/class/ubi/ubiX/ubiX_1/, | ||
131 | etc directories describe UBI volumes on UBI device X (volumes | ||
132 | 0, 1, etc). | ||
133 | |||
134 | What: /sys/class/ubi/ubiX/ubiX_Y/alignment | ||
135 | Date: July 2006 | ||
136 | KernelVersion: 2.6.22 | ||
137 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
138 | Description: | ||
139 | Volume alignment - the value the logical eraseblock size of | ||
140 | this volume has to be aligned on. For example, 2048 means that | ||
141 | logical eraseblock size is multiple of 2048. In other words, | ||
142 | volume logical eraseblock size is UBI device logical eraseblock | ||
143 | size aligned to the alignment value. | ||
144 | |||
145 | What: /sys/class/ubi/ubiX/ubiX_Y/corrupted | ||
146 | Date: July 2006 | ||
147 | KernelVersion: 2.6.22 | ||
148 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
149 | Description: | ||
150 | Contains ASCII "0\n" if the UBI volume is OK, and ASCII "1\n" | ||
151 | if it is corrupted (e.g., due to an interrupted volume update). | ||
152 | |||
153 | What: /sys/class/ubi/ubiX/ubiX_Y/data_bytes | ||
154 | Date: July 2006 | ||
155 | KernelVersion: 2.6.22 | ||
156 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
157 | Description: | ||
158 | The amount of data this volume contains. This value makes sense | ||
159 | only for static volumes, and for dynamic volume it equivalent | ||
160 | to the total volume size in bytes. | ||
161 | |||
162 | What: /sys/class/ubi/ubiX/ubiX_Y/dev | ||
163 | Date: July 2006 | ||
164 | KernelVersion: 2.6.22 | ||
165 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
166 | Description: | ||
167 | Major and minor numbers of the character device corresponding | ||
168 | to this UBI volume (in <major>:<minor> format). | ||
169 | |||
170 | What: /sys/class/ubi/ubiX/ubiX_Y/name | ||
171 | Date: July 2006 | ||
172 | KernelVersion: 2.6.22 | ||
173 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
174 | Description: | ||
175 | Volume name. | ||
176 | |||
177 | What: /sys/class/ubi/ubiX/ubiX_Y/reserved_ebs | ||
178 | Date: July 2006 | ||
179 | KernelVersion: 2.6.22 | ||
180 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
181 | Description: | ||
182 | Count of physical eraseblock reserved for this volume. | ||
183 | Equivalent to the volume size in logical eraseblocks. | ||
184 | |||
185 | What: /sys/class/ubi/ubiX/ubiX_Y/type | ||
186 | Date: July 2006 | ||
187 | KernelVersion: 2.6.22 | ||
188 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
189 | Description: | ||
190 | Volume type. Contains ASCII "dynamic\n" for dynamic volumes and | ||
191 | "static\n" for static volumes. | ||
192 | |||
193 | What: /sys/class/ubi/ubiX/ubiX_Y/upd_marker | ||
194 | Date: July 2006 | ||
195 | KernelVersion: 2.6.22 | ||
196 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
197 | Description: | ||
198 | Contains ASCII "0\n" if the update marker is not set for this | ||
199 | volume, and "1\n" if it is set. The update marker is set when | ||
200 | volume update starts, and cleaned when it ends. So the presence | ||
201 | of the update marker indicates that the volume is being updated | ||
202 | at the moment of the update was interrupted. The later may be | ||
203 | checked using the "corrupted" sysfs file. | ||
204 | |||
205 | What: /sys/class/ubi/ubiX/ubiX_Y/usable_eb_size | ||
206 | Date: July 2006 | ||
207 | KernelVersion: 2.6.22 | ||
208 | Contact: Artem Bityutskiy <dedekind@infradead.org> | ||
209 | Description: | ||
210 | Logical eraseblock size of this volume. Equivalent to logical | ||
211 | eraseblock size of the device aligned on the volume alignment | ||
212 | value. | ||
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index b2b6366bba51..83966e94cc32 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
@@ -187,8 +187,11 @@ quiet_cmd_fig2png = FIG2PNG $@ | |||
187 | 187 | ||
188 | ### | 188 | ### |
189 | # Rule to convert a .c file to inline XML documentation | 189 | # Rule to convert a .c file to inline XML documentation |
190 | gen_xml = : | ||
191 | quiet_gen_xml = echo ' GEN $@' | ||
192 | silent_gen_xml = : | ||
190 | %.xml: %.c | 193 | %.xml: %.c |
191 | @echo ' GEN $@' | 194 | @$($(quiet)gen_xml) |
192 | @( \ | 195 | @( \ |
193 | echo "<programlisting>"; \ | 196 | echo "<programlisting>"; \ |
194 | expand --tabs=8 < $< | \ | 197 | expand --tabs=8 < $< | \ |
diff --git a/Documentation/HOWTO b/Documentation/HOWTO index 54835610b3d6..0291ade44c17 100644 --- a/Documentation/HOWTO +++ b/Documentation/HOWTO | |||
@@ -249,9 +249,11 @@ process is as follows: | |||
249 | release a new -rc kernel every week. | 249 | release a new -rc kernel every week. |
250 | - Process continues until the kernel is considered "ready", the | 250 | - Process continues until the kernel is considered "ready", the |
251 | process should last around 6 weeks. | 251 | process should last around 6 weeks. |
252 | - A list of known regressions present in each -rc release is | 252 | - Known regressions in each release are periodically posted to the |
253 | tracked at the following URI: | 253 | linux-kernel mailing list. The goal is to reduce the length of |
254 | http://kernelnewbies.org/known_regressions | 254 | that list to zero before declaring the kernel to be "ready," but, in |
255 | the real world, a small number of regressions often remain at | ||
256 | release time. | ||
255 | 257 | ||
256 | It is worth mentioning what Andrew Morton wrote on the linux-kernel | 258 | It is worth mentioning what Andrew Morton wrote on the linux-kernel |
257 | mailing list about kernel releases: | 259 | mailing list about kernel releases: |
@@ -261,7 +263,7 @@ mailing list about kernel releases: | |||
261 | 263 | ||
262 | 2.6.x.y -stable kernel tree | 264 | 2.6.x.y -stable kernel tree |
263 | --------------------------- | 265 | --------------------------- |
264 | Kernels with 4 digit versions are -stable kernels. They contain | 266 | Kernels with 4-part versions are -stable kernels. They contain |
265 | relatively small and critical fixes for security problems or significant | 267 | relatively small and critical fixes for security problems or significant |
266 | regressions discovered in a given 2.6.x kernel. | 268 | regressions discovered in a given 2.6.x kernel. |
267 | 269 | ||
@@ -273,7 +275,10 @@ If no 2.6.x.y kernel is available, then the highest numbered 2.6.x | |||
273 | kernel is the current stable kernel. | 275 | kernel is the current stable kernel. |
274 | 276 | ||
275 | 2.6.x.y are maintained by the "stable" team <stable@kernel.org>, and are | 277 | 2.6.x.y are maintained by the "stable" team <stable@kernel.org>, and are |
276 | released almost every other week. | 278 | released as needs dictate. The normal release period is approximately |
279 | two weeks, but it can be longer if there are no pressing problems. A | ||
280 | security-related problem, instead, can cause a release to happen almost | ||
281 | instantly. | ||
277 | 282 | ||
278 | The file Documentation/stable_kernel_rules.txt in the kernel tree | 283 | The file Documentation/stable_kernel_rules.txt in the kernel tree |
279 | documents what kinds of changes are acceptable for the -stable tree, and | 284 | documents what kinds of changes are acceptable for the -stable tree, and |
@@ -298,7 +303,9 @@ a while Andrew or the subsystem maintainer pushes it on to Linus for | |||
298 | inclusion in mainline. | 303 | inclusion in mainline. |
299 | 304 | ||
300 | It is heavily encouraged that all new patches get tested in the -mm tree | 305 | It is heavily encouraged that all new patches get tested in the -mm tree |
301 | before they are sent to Linus for inclusion in the main kernel tree. | 306 | before they are sent to Linus for inclusion in the main kernel tree. Code |
307 | which does not make an appearance in -mm before the opening of the merge | ||
308 | window will prove hard to merge into the mainline. | ||
302 | 309 | ||
303 | These kernels are not appropriate for use on systems that are supposed | 310 | These kernels are not appropriate for use on systems that are supposed |
304 | to be stable and they are more risky to run than any of the other | 311 | to be stable and they are more risky to run than any of the other |
@@ -354,11 +361,12 @@ Here is a list of some of the different kernel trees available: | |||
354 | - SCSI, James Bottomley <James.Bottomley@SteelEye.com> | 361 | - SCSI, James Bottomley <James.Bottomley@SteelEye.com> |
355 | git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git | 362 | git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git |
356 | 363 | ||
364 | - x86, Ingo Molnar <mingo@elte.hu> | ||
365 | git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git | ||
366 | |||
357 | quilt trees: | 367 | quilt trees: |
358 | - USB, PCI, Driver Core, and I2C, Greg Kroah-Hartman <gregkh@suse.de> | 368 | - USB, Driver Core, and I2C, Greg Kroah-Hartman <gregkh@suse.de> |
359 | kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ | 369 | kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ |
360 | - x86-64, partly i386, Andi Kleen <ak@suse.de> | ||
361 | ftp.firstfloor.org:/pub/ak/x86_64/quilt/ | ||
362 | 370 | ||
363 | Other kernel trees can be found listed at http://git.kernel.org/ and in | 371 | Other kernel trees can be found listed at http://git.kernel.org/ and in |
364 | the MAINTAINERS file. | 372 | the MAINTAINERS file. |
@@ -392,8 +400,8 @@ If you want to be advised of the future bug reports, you can subscribe to the | |||
392 | bugme-new mailing list (only new bug reports are mailed here) or to the | 400 | bugme-new mailing list (only new bug reports are mailed here) or to the |
393 | bugme-janitor mailing list (every change in the bugzilla is mailed here) | 401 | bugme-janitor mailing list (every change in the bugzilla is mailed here) |
394 | 402 | ||
395 | http://lists.osdl.org/mailman/listinfo/bugme-new | 403 | http://lists.linux-foundation.org/mailman/listinfo/bugme-new |
396 | http://lists.osdl.org/mailman/listinfo/bugme-janitors | 404 | http://lists.linux-foundation.org/mailman/listinfo/bugme-janitors |
397 | 405 | ||
398 | 406 | ||
399 | 407 | ||
diff --git a/Documentation/arm/Samsung-S3C24XX/NAND.txt b/Documentation/arm/Samsung-S3C24XX/NAND.txt new file mode 100644 index 000000000000..bc478a3409b8 --- /dev/null +++ b/Documentation/arm/Samsung-S3C24XX/NAND.txt | |||
@@ -0,0 +1,30 @@ | |||
1 | S3C24XX NAND Support | ||
2 | ==================== | ||
3 | |||
4 | Introduction | ||
5 | ------------ | ||
6 | |||
7 | Small Page NAND | ||
8 | --------------- | ||
9 | |||
10 | The driver uses a 512 byte (1 page) ECC code for this setup. The | ||
11 | ECC code is not directly compatible with the default kernel ECC | ||
12 | code, so the driver enforces its own OOB layout and ECC parameters | ||
13 | |||
14 | Large Page NAND | ||
15 | --------------- | ||
16 | |||
17 | The driver is capable of handling NAND flash with a 2KiB page | ||
18 | size, with support for hardware ECC generation and correction. | ||
19 | |||
20 | Unlike the 512byte page mode, the driver generates ECC data for | ||
21 | each 256 byte block in an 2KiB page. This means that more than | ||
22 | one error in a page can be rectified. It also means that the | ||
23 | OOB layout remains the default kernel layout for these flashes. | ||
24 | |||
25 | |||
26 | Document Author | ||
27 | --------------- | ||
28 | |||
29 | Ben Dooks, Copyright 2007 Simtec Electronics | ||
30 | |||
diff --git a/Documentation/arm/Samsung-S3C24XX/Overview.txt b/Documentation/arm/Samsung-S3C24XX/Overview.txt index c31b76fa66c4..d04e1e30c47f 100644 --- a/Documentation/arm/Samsung-S3C24XX/Overview.txt +++ b/Documentation/arm/Samsung-S3C24XX/Overview.txt | |||
@@ -156,6 +156,8 @@ NAND | |||
156 | controller. If there are any problems the latest linux-mtd | 156 | controller. If there are any problems the latest linux-mtd |
157 | code can be found from http://www.linux-mtd.infradead.org/ | 157 | code can be found from http://www.linux-mtd.infradead.org/ |
158 | 158 | ||
159 | For more information see Documentation/arm/Samsung-S3C24XX/NAND.txt | ||
160 | |||
159 | 161 | ||
160 | Serial | 162 | Serial |
161 | ------ | 163 | ------ |
diff --git a/Documentation/device-mapper/dm-crypt.txt b/Documentation/device-mapper/dm-crypt.txt new file mode 100644 index 000000000000..6680cab2c705 --- /dev/null +++ b/Documentation/device-mapper/dm-crypt.txt | |||
@@ -0,0 +1,52 @@ | |||
1 | dm-crypt | ||
2 | ========= | ||
3 | |||
4 | Device-Mapper's "crypt" target provides transparent encryption of block devices | ||
5 | using the kernel crypto API. | ||
6 | |||
7 | Parameters: <cipher> <key> <iv_offset> <device path> <offset> | ||
8 | |||
9 | <cipher> | ||
10 | Encryption cipher and an optional IV generation mode. | ||
11 | (In format cipher-chainmode-ivopts:ivmode). | ||
12 | Examples: | ||
13 | des | ||
14 | aes-cbc-essiv:sha256 | ||
15 | twofish-ecb | ||
16 | |||
17 | /proc/crypto contains supported crypto modes | ||
18 | |||
19 | <key> | ||
20 | Key used for encryption. It is encoded as a hexadecimal number. | ||
21 | You can only use key sizes that are valid for the selected cipher. | ||
22 | |||
23 | <iv_offset> | ||
24 | The IV offset is a sector count that is added to the sector number | ||
25 | before creating the IV. | ||
26 | |||
27 | <device path> | ||
28 | This is the device that is going to be used as backend and contains the | ||
29 | encrypted data. You can specify it as a path like /dev/xxx or a device | ||
30 | number <major>:<minor>. | ||
31 | |||
32 | <offset> | ||
33 | Starting sector within the device where the encrypted data begins. | ||
34 | |||
35 | Example scripts | ||
36 | =============== | ||
37 | LUKS (Linux Unified Key Setup) is now the preferred way to set up disk | ||
38 | encryption with dm-crypt using the 'cryptsetup' utility, see | ||
39 | http://luks.endorphin.org/ | ||
40 | |||
41 | [[ | ||
42 | #!/bin/sh | ||
43 | # Create a crypt device using dmsetup | ||
44 | dmsetup create crypt1 --table "0 `blockdev --getsize $1` crypt aes-cbc-essiv:sha256 babebabebabebabebabebabebabebabe 0 $1 0" | ||
45 | ]] | ||
46 | |||
47 | [[ | ||
48 | #!/bin/sh | ||
49 | # Create a crypt device using cryptsetup and LUKS header with default cipher | ||
50 | cryptsetup luksFormat $1 | ||
51 | cryptsetup luksOpen $1 crypt1 | ||
52 | ]] | ||
diff --git a/Documentation/filesystems/nfs-rdma.txt b/Documentation/filesystems/nfs-rdma.txt index 1ae34879574b..d0ec45ae4e7d 100644 --- a/Documentation/filesystems/nfs-rdma.txt +++ b/Documentation/filesystems/nfs-rdma.txt | |||
@@ -5,7 +5,7 @@ | |||
5 | ################################################################################ | 5 | ################################################################################ |
6 | 6 | ||
7 | Author: NetApp and Open Grid Computing | 7 | Author: NetApp and Open Grid Computing |
8 | Date: February 25, 2008 | 8 | Date: April 15, 2008 |
9 | 9 | ||
10 | Table of Contents | 10 | Table of Contents |
11 | ~~~~~~~~~~~~~~~~~ | 11 | ~~~~~~~~~~~~~~~~~ |
@@ -197,12 +197,16 @@ NFS/RDMA Setup | |||
197 | - On the server system, configure the /etc/exports file and | 197 | - On the server system, configure the /etc/exports file and |
198 | start the NFS/RDMA server. | 198 | start the NFS/RDMA server. |
199 | 199 | ||
200 | Exports entries with the following format have been tested: | 200 | Exports entries with the following formats have been tested: |
201 | 201 | ||
202 | /vol0 10.97.103.47(rw,async) 192.168.0.47(rw,async,insecure,no_root_squash) | 202 | /vol0 192.168.0.47(fsid=0,rw,async,insecure,no_root_squash) |
203 | /vol0 192.168.0.0/255.255.255.0(fsid=0,rw,async,insecure,no_root_squash) | ||
203 | 204 | ||
204 | Here the first IP address is the client's Ethernet address and the second | 205 | The IP address(es) is(are) the client's IPoIB address for an InfiniBand HCA or the |
205 | IP address is the clients IPoIB address. | 206 | cleint's iWARP address(es) for an RNIC. |
207 | |||
208 | NOTE: The "insecure" option must be used because the NFS/RDMA client does not | ||
209 | use a reserved port. | ||
206 | 210 | ||
207 | Each time a machine boots: | 211 | Each time a machine boots: |
208 | 212 | ||
diff --git a/Documentation/filesystems/seq_file.txt b/Documentation/filesystems/seq_file.txt index 7fb8e6dc62bf..b843743aa0b5 100644 --- a/Documentation/filesystems/seq_file.txt +++ b/Documentation/filesystems/seq_file.txt | |||
@@ -122,8 +122,7 @@ stop() is the place to free it. | |||
122 | } | 122 | } |
123 | 123 | ||
124 | Finally, the show() function should format the object currently pointed to | 124 | Finally, the show() function should format the object currently pointed to |
125 | by the iterator for output. It should return zero, or an error code if | 125 | by the iterator for output. The example module's show() function is: |
126 | something goes wrong. The example module's show() function is: | ||
127 | 126 | ||
128 | static int ct_seq_show(struct seq_file *s, void *v) | 127 | static int ct_seq_show(struct seq_file *s, void *v) |
129 | { | 128 | { |
@@ -132,6 +131,12 @@ something goes wrong. The example module's show() function is: | |||
132 | return 0; | 131 | return 0; |
133 | } | 132 | } |
134 | 133 | ||
134 | If all is well, the show() function should return zero. A negative error | ||
135 | code in the usual manner indicates that something went wrong; it will be | ||
136 | passed back to user space. This function can also return SEQ_SKIP, which | ||
137 | causes the current item to be skipped; if the show() function has already | ||
138 | generated output before returning SEQ_SKIP, that output will be dropped. | ||
139 | |||
135 | We will look at seq_printf() in a moment. But first, the definition of the | 140 | We will look at seq_printf() in a moment. But first, the definition of the |
136 | seq_file iterator is finished by creating a seq_operations structure with | 141 | seq_file iterator is finished by creating a seq_operations structure with |
137 | the four functions we have just defined: | 142 | the four functions we have just defined: |
@@ -182,12 +187,18 @@ The first two output a single character and a string, just like one would | |||
182 | expect. seq_escape() is like seq_puts(), except that any character in s | 187 | expect. seq_escape() is like seq_puts(), except that any character in s |
183 | which is in the string esc will be represented in octal form in the output. | 188 | which is in the string esc will be represented in octal form in the output. |
184 | 189 | ||
185 | There is also a function for printing filenames: | 190 | There is also a pair of functions for printing filenames: |
186 | 191 | ||
187 | int seq_path(struct seq_file *m, struct path *path, char *esc); | 192 | int seq_path(struct seq_file *m, struct path *path, char *esc); |
193 | int seq_path_root(struct seq_file *m, struct path *path, | ||
194 | struct path *root, char *esc) | ||
188 | 195 | ||
189 | Here, path indicates the file of interest, and esc is a set of characters | 196 | Here, path indicates the file of interest, and esc is a set of characters |
190 | which should be escaped in the output. | 197 | which should be escaped in the output. A call to seq_path() will output |
198 | the path relative to the current process's filesystem root. If a different | ||
199 | root is desired, it can be used with seq_path_root(). Note that, if it | ||
200 | turns out that path cannot be reached from root, the value of root will be | ||
201 | changed in seq_file_root() to a root which *does* work. | ||
191 | 202 | ||
192 | 203 | ||
193 | Making it all work | 204 | Making it all work |
diff --git a/Documentation/kbuild/modules.txt b/Documentation/kbuild/modules.txt index 1d247d59ad56..1821c077b435 100644 --- a/Documentation/kbuild/modules.txt +++ b/Documentation/kbuild/modules.txt | |||
@@ -486,7 +486,7 @@ Module.symvers contains a list of all exported symbols from a kernel build. | |||
486 | Sometimes, an external module uses exported symbols from another | 486 | Sometimes, an external module uses exported symbols from another |
487 | external module. Kbuild needs to have full knowledge on all symbols | 487 | external module. Kbuild needs to have full knowledge on all symbols |
488 | to avoid spitting out warnings about undefined symbols. | 488 | to avoid spitting out warnings about undefined symbols. |
489 | Two solutions exist to let kbuild know all symbols of more than | 489 | Three solutions exist to let kbuild know all symbols of more than |
490 | one external module. | 490 | one external module. |
491 | The method with a top-level kbuild file is recommended but may be | 491 | The method with a top-level kbuild file is recommended but may be |
492 | impractical in certain situations. | 492 | impractical in certain situations. |
@@ -523,6 +523,13 @@ Module.symvers contains a list of all exported symbols from a kernel build. | |||
523 | containing the sum of all symbols defined and not part of the | 523 | containing the sum of all symbols defined and not part of the |
524 | kernel. | 524 | kernel. |
525 | 525 | ||
526 | Use make variable KBUILD_EXTRA_SYMBOLS in the Makefile | ||
527 | If it is impractical to copy Module.symvers from another | ||
528 | module, you can assign a space separated list of files to | ||
529 | KBUILD_EXTRA_SYMBOLS in your Makfile. These files will be | ||
530 | loaded by modpost during the initialisation of its symbol | ||
531 | tables. | ||
532 | |||
526 | === 8. Tips & Tricks | 533 | === 8. Tips & Tricks |
527 | 534 | ||
528 | --- 8.1 Testing for CONFIG_FOO_BAR | 535 | --- 8.1 Testing for CONFIG_FOO_BAR |
diff --git a/Documentation/networking/phy.txt b/Documentation/networking/phy.txt index 0bc95eab1512..8df6a7b0e66c 100644 --- a/Documentation/networking/phy.txt +++ b/Documentation/networking/phy.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | 1 | ||
2 | ------- | 2 | ------- |
3 | PHY Abstraction Layer | 3 | PHY Abstraction Layer |
4 | (Updated 2006-11-30) | 4 | (Updated 2008-04-08) |
5 | 5 | ||
6 | Purpose | 6 | Purpose |
7 | 7 | ||
@@ -291,3 +291,39 @@ Writing a PHY driver | |||
291 | Feel free to look at the Marvell, Cicada, and Davicom drivers in | 291 | Feel free to look at the Marvell, Cicada, and Davicom drivers in |
292 | drivers/net/phy/ for examples (the lxt and qsemi drivers have | 292 | drivers/net/phy/ for examples (the lxt and qsemi drivers have |
293 | not been tested as of this writing) | 293 | not been tested as of this writing) |
294 | |||
295 | Board Fixups | ||
296 | |||
297 | Sometimes the specific interaction between the platform and the PHY requires | ||
298 | special handling. For instance, to change where the PHY's clock input is, | ||
299 | or to add a delay to account for latency issues in the data path. In order | ||
300 | to support such contingencies, the PHY Layer allows platform code to register | ||
301 | fixups to be run when the PHY is brought up (or subsequently reset). | ||
302 | |||
303 | When the PHY Layer brings up a PHY it checks to see if there are any fixups | ||
304 | registered for it, matching based on UID (contained in the PHY device's phy_id | ||
305 | field) and the bus identifier (contained in phydev->dev.bus_id). Both must | ||
306 | match, however two constants, PHY_ANY_ID and PHY_ANY_UID, are provided as | ||
307 | wildcards for the bus ID and UID, respectively. | ||
308 | |||
309 | When a match is found, the PHY layer will invoke the run function associated | ||
310 | with the fixup. This function is passed a pointer to the phy_device of | ||
311 | interest. It should therefore only operate on that PHY. | ||
312 | |||
313 | The platform code can either register the fixup using phy_register_fixup(): | ||
314 | |||
315 | int phy_register_fixup(const char *phy_id, | ||
316 | u32 phy_uid, u32 phy_uid_mask, | ||
317 | int (*run)(struct phy_device *)); | ||
318 | |||
319 | Or using one of the two stubs, phy_register_fixup_for_uid() and | ||
320 | phy_register_fixup_for_id(): | ||
321 | |||
322 | int phy_register_fixup_for_uid(u32 phy_uid, u32 phy_uid_mask, | ||
323 | int (*run)(struct phy_device *)); | ||
324 | int phy_register_fixup_for_id(const char *phy_id, | ||
325 | int (*run)(struct phy_device *)); | ||
326 | |||
327 | The stubs set one of the two matching criteria, and set the other one to | ||
328 | match anything. | ||
329 | |||
diff --git a/Documentation/usb/anchors.txt b/Documentation/usb/anchors.txt new file mode 100644 index 000000000000..7304bcf5a306 --- /dev/null +++ b/Documentation/usb/anchors.txt | |||
@@ -0,0 +1,50 @@ | |||
1 | What is anchor? | ||
2 | =============== | ||
3 | |||
4 | A USB driver needs to support some callbacks requiring | ||
5 | a driver to cease all IO to an interface. To do so, a | ||
6 | driver has to keep track of the URBs it has submitted | ||
7 | to know they've all completed or to call usb_kill_urb | ||
8 | for them. The anchor is a data structure takes care of | ||
9 | keeping track of URBs and provides methods to deal with | ||
10 | multiple URBs. | ||
11 | |||
12 | Allocation and Initialisation | ||
13 | ============================= | ||
14 | |||
15 | There's no API to allocate an anchor. It is simply declared | ||
16 | as struct usb_anchor. init_usb_anchor() must be called to | ||
17 | initialise the data structure. | ||
18 | |||
19 | Deallocation | ||
20 | ============ | ||
21 | |||
22 | Once it has no more URBs associated with it, the anchor can be | ||
23 | freed with normal memory management operations. | ||
24 | |||
25 | Association and disassociation of URBs with anchors | ||
26 | =================================================== | ||
27 | |||
28 | An association of URBs to an anchor is made by an explicit | ||
29 | call to usb_anchor_urb(). The association is maintained until | ||
30 | an URB is finished by (successfull) completion. Thus disassociation | ||
31 | is automatic. A function is provided to forcibly finish (kill) | ||
32 | all URBs associated with an anchor. | ||
33 | Furthermore, disassociation can be made with usb_unanchor_urb() | ||
34 | |||
35 | Operations on multitudes of URBs | ||
36 | ================================ | ||
37 | |||
38 | usb_kill_anchored_urbs() | ||
39 | ------------------------ | ||
40 | |||
41 | This function kills all URBs associated with an anchor. The URBs | ||
42 | are called in the reverse temporal order they were submitted. | ||
43 | This way no data can be reordered. | ||
44 | |||
45 | usb_wait_anchor_empty_timeout() | ||
46 | ------------------------------- | ||
47 | |||
48 | This function waits for all URBs associated with an anchor to finish | ||
49 | or a timeout, whichever comes first. Its return value will tell you | ||
50 | whether the timeout was reached. | ||
diff --git a/Documentation/usb/callbacks.txt b/Documentation/usb/callbacks.txt new file mode 100644 index 000000000000..7c812411945b --- /dev/null +++ b/Documentation/usb/callbacks.txt | |||
@@ -0,0 +1,132 @@ | |||
1 | What callbacks will usbcore do? | ||
2 | =============================== | ||
3 | |||
4 | Usbcore will call into a driver through callbacks defined in the driver | ||
5 | structure and through the completion handler of URBs a driver submits. | ||
6 | Only the former are in the scope of this document. These two kinds of | ||
7 | callbacks are completely independent of each other. Information on the | ||
8 | completion callback can be found in Documentation/usb/URB.txt. | ||
9 | |||
10 | The callbacks defined in the driver structure are: | ||
11 | |||
12 | 1. Hotplugging callbacks: | ||
13 | |||
14 | * @probe: Called to see if the driver is willing to manage a particular | ||
15 | * interface on a device. | ||
16 | * @disconnect: Called when the interface is no longer accessible, usually | ||
17 | * because its device has been (or is being) disconnected or the | ||
18 | * driver module is being unloaded. | ||
19 | |||
20 | 2. Odd backdoor through usbfs: | ||
21 | |||
22 | * @ioctl: Used for drivers that want to talk to userspace through | ||
23 | * the "usbfs" filesystem. This lets devices provide ways to | ||
24 | * expose information to user space regardless of where they | ||
25 | * do (or don't) show up otherwise in the filesystem. | ||
26 | |||
27 | 3. Power management (PM) callbacks: | ||
28 | |||
29 | * @suspend: Called when the device is going to be suspended. | ||
30 | * @resume: Called when the device is being resumed. | ||
31 | * @reset_resume: Called when the suspended device has been reset instead | ||
32 | * of being resumed. | ||
33 | |||
34 | 4. Device level operations: | ||
35 | |||
36 | * @pre_reset: Called when the device is about to be reset. | ||
37 | * @post_reset: Called after the device has been reset | ||
38 | |||
39 | The ioctl interface (2) should be used only if you have a very good | ||
40 | reason. Sysfs is preferred these days. The PM callbacks are covered | ||
41 | separately in Documentation/usb/power-management.txt. | ||
42 | |||
43 | Calling conventions | ||
44 | =================== | ||
45 | |||
46 | All callbacks are mutually exclusive. There's no need for locking | ||
47 | against other USB callbacks. All callbacks are called from a task | ||
48 | context. You may sleep. However, it is important that all sleeps have a | ||
49 | small fixed upper limit in time. In particular you must not call out to | ||
50 | user space and await results. | ||
51 | |||
52 | Hotplugging callbacks | ||
53 | ===================== | ||
54 | |||
55 | These callbacks are intended to associate and disassociate a driver with | ||
56 | an interface. A driver's bond to an interface is exclusive. | ||
57 | |||
58 | The probe() callback | ||
59 | -------------------- | ||
60 | |||
61 | int (*probe) (struct usb_interface *intf, | ||
62 | const struct usb_device_id *id); | ||
63 | |||
64 | Accept or decline an interface. If you accept the device return 0, | ||
65 | otherwise -ENODEV or -ENXIO. Other error codes should be used only if a | ||
66 | genuine error occurred during initialisation which prevented a driver | ||
67 | from accepting a device that would else have been accepted. | ||
68 | You are strongly encouraged to use usbcore'sfacility, | ||
69 | usb_set_intfdata(), to associate a data structure with an interface, so | ||
70 | that you know which internal state and identity you associate with a | ||
71 | particular interface. The device will not be suspended and you may do IO | ||
72 | to the interface you are called for and endpoint 0 of the device. Device | ||
73 | initialisation that doesn't take too long is a good idea here. | ||
74 | |||
75 | The disconnect() callback | ||
76 | ------------------------- | ||
77 | |||
78 | void (*disconnect) (struct usb_interface *intf); | ||
79 | |||
80 | This callback is a signal to break any connection with an interface. | ||
81 | You are not allowed any IO to a device after returning from this | ||
82 | callback. You also may not do any other operation that may interfere | ||
83 | with another driver bound the interface, eg. a power management | ||
84 | operation. | ||
85 | If you are called due to a physical disconnection, all your URBs will be | ||
86 | killed by usbcore. Note that in this case disconnect will be called some | ||
87 | time after the physical disconnection. Thus your driver must be prepared | ||
88 | to deal with failing IO even prior to the callback. | ||
89 | |||
90 | Device level callbacks | ||
91 | ====================== | ||
92 | |||
93 | pre_reset | ||
94 | --------- | ||
95 | |||
96 | int (*pre_reset)(struct usb_interface *intf); | ||
97 | |||
98 | Another driver or user space is triggering a reset on the device which | ||
99 | contains the interface passed as an argument. Cease IO and save any | ||
100 | device state you need to restore. | ||
101 | |||
102 | If you need to allocate memory here, use GFP_NOIO or GFP_ATOMIC, if you | ||
103 | are in atomic context. | ||
104 | |||
105 | post_reset | ||
106 | ---------- | ||
107 | |||
108 | int (*post_reset)(struct usb_interface *intf); | ||
109 | |||
110 | The reset has completed. Restore any saved device state and begin | ||
111 | using the device again. | ||
112 | |||
113 | If you need to allocate memory here, use GFP_NOIO or GFP_ATOMIC, if you | ||
114 | are in atomic context. | ||
115 | |||
116 | Call sequences | ||
117 | ============== | ||
118 | |||
119 | No callbacks other than probe will be invoked for an interface | ||
120 | that isn't bound to your driver. | ||
121 | |||
122 | Probe will never be called for an interface bound to a driver. | ||
123 | Hence following a successful probe, disconnect will be called | ||
124 | before there is another probe for the same interface. | ||
125 | |||
126 | Once your driver is bound to an interface, disconnect can be | ||
127 | called at any time except in between pre_reset and post_reset. | ||
128 | pre_reset is always followed by post_reset, even if the reset | ||
129 | failed or the device has been unplugged. | ||
130 | |||
131 | suspend is always followed by one of: resume, reset_resume, or | ||
132 | disconnect. | ||
diff --git a/Documentation/usb/persist.txt b/Documentation/usb/persist.txt index df54d645cbb5..d56cb1a11550 100644 --- a/Documentation/usb/persist.txt +++ b/Documentation/usb/persist.txt | |||
@@ -2,7 +2,7 @@ | |||
2 | 2 | ||
3 | Alan Stern <stern@rowland.harvard.edu> | 3 | Alan Stern <stern@rowland.harvard.edu> |
4 | 4 | ||
5 | September 2, 2006 (Updated May 29, 2007) | 5 | September 2, 2006 (Updated February 25, 2008) |
6 | 6 | ||
7 | 7 | ||
8 | What is the problem? | 8 | What is the problem? |
@@ -65,9 +65,10 @@ much better.) | |||
65 | 65 | ||
66 | What is the solution? | 66 | What is the solution? |
67 | 67 | ||
68 | Setting CONFIG_USB_PERSIST will cause the kernel to work around these | 68 | The kernel includes a feature called USB-persist. It tries to work |
69 | issues. It enables a mode in which the core USB device data | 69 | around these issues by allowing the core USB device data structures to |
70 | structures are allowed to persist across a power-session disruption. | 70 | persist across a power-session disruption. |
71 | |||
71 | It works like this. If the kernel sees that a USB host controller is | 72 | It works like this. If the kernel sees that a USB host controller is |
72 | not in the expected state during resume (i.e., if the controller was | 73 | not in the expected state during resume (i.e., if the controller was |
73 | reset or otherwise had lost power) then it applies a persistence check | 74 | reset or otherwise had lost power) then it applies a persistence check |
@@ -80,28 +81,30 @@ re-enumeration shows that the device now attached to that port has the | |||
80 | same descriptors as before, including the Vendor and Product IDs, then | 81 | same descriptors as before, including the Vendor and Product IDs, then |
81 | the kernel continues to use the same device structure. In effect, the | 82 | the kernel continues to use the same device structure. In effect, the |
82 | kernel treats the device as though it had merely been reset instead of | 83 | kernel treats the device as though it had merely been reset instead of |
83 | unplugged. | 84 | unplugged. The same thing happens if the host controller is in the |
85 | expected state but a USB device was unplugged and then replugged. | ||
84 | 86 | ||
85 | If no device is now attached to the port, or if the descriptors are | 87 | If no device is now attached to the port, or if the descriptors are |
86 | different from what the kernel remembers, then the treatment is what | 88 | different from what the kernel remembers, then the treatment is what |
87 | you would expect. The kernel destroys the old device structure and | 89 | you would expect. The kernel destroys the old device structure and |
88 | behaves as though the old device had been unplugged and a new device | 90 | behaves as though the old device had been unplugged and a new device |
89 | plugged in, just as it would without the CONFIG_USB_PERSIST option. | 91 | plugged in. |
90 | 92 | ||
91 | The end result is that the USB device remains available and usable. | 93 | The end result is that the USB device remains available and usable. |
92 | Filesystem mounts and memory mappings are unaffected, and the world is | 94 | Filesystem mounts and memory mappings are unaffected, and the world is |
93 | now a good and happy place. | 95 | now a good and happy place. |
94 | 96 | ||
95 | Note that even when CONFIG_USB_PERSIST is set, the "persist" feature | 97 | Note that the "USB-persist" feature will be applied only to those |
96 | will be applied only to those devices for which it is enabled. You | 98 | devices for which it is enabled. You can enable the feature by doing |
97 | can enable the feature by doing (as root): | 99 | (as root): |
98 | 100 | ||
99 | echo 1 >/sys/bus/usb/devices/.../power/persist | 101 | echo 1 >/sys/bus/usb/devices/.../power/persist |
100 | 102 | ||
101 | where the "..." should be filled in the with the device's ID. Disable | 103 | where the "..." should be filled in the with the device's ID. Disable |
102 | the feature by writing 0 instead of 1. For hubs the feature is | 104 | the feature by writing 0 instead of 1. For hubs the feature is |
103 | automatically and permanently enabled, so you only have to worry about | 105 | automatically and permanently enabled and the power/persist file |
104 | setting it for devices where it really matters. | 106 | doesn't even exist, so you only have to worry about setting it for |
107 | devices where it really matters. | ||
105 | 108 | ||
106 | 109 | ||
107 | Is this the best solution? | 110 | Is this the best solution? |
@@ -112,19 +115,19 @@ centralized Logical Volume Manager. Such a solution would allow you | |||
112 | to plug in a USB flash device, create a persistent volume associated | 115 | to plug in a USB flash device, create a persistent volume associated |
113 | with it, unplug the flash device, plug it back in later, and still | 116 | with it, unplug the flash device, plug it back in later, and still |
114 | have the same persistent volume associated with the device. As such | 117 | have the same persistent volume associated with the device. As such |
115 | it would be more far-reaching than CONFIG_USB_PERSIST. | 118 | it would be more far-reaching than USB-persist. |
116 | 119 | ||
117 | On the other hand, writing a persistent volume manager would be a big | 120 | On the other hand, writing a persistent volume manager would be a big |
118 | job and using it would require significant input from the user. This | 121 | job and using it would require significant input from the user. This |
119 | solution is much quicker and easier -- and it exists now, a giant | 122 | solution is much quicker and easier -- and it exists now, a giant |
120 | point in its favor! | 123 | point in its favor! |
121 | 124 | ||
122 | Furthermore, the USB_PERSIST option applies to _all_ USB devices, not | 125 | Furthermore, the USB-persist feature applies to _all_ USB devices, not |
123 | just mass-storage devices. It might turn out to be equally useful for | 126 | just mass-storage devices. It might turn out to be equally useful for |
124 | other device types, such as network interfaces. | 127 | other device types, such as network interfaces. |
125 | 128 | ||
126 | 129 | ||
127 | WARNING: Using CONFIG_USB_PERSIST can be dangerous!! | 130 | WARNING: USB-persist can be dangerous!! |
128 | 131 | ||
129 | When recovering an interrupted power session the kernel does its best | 132 | When recovering an interrupted power session the kernel does its best |
130 | to make sure the USB device hasn't been changed; that is, the same | 133 | to make sure the USB device hasn't been changed; that is, the same |
@@ -133,10 +136,10 @@ aren't guaranteed to be 100% accurate. | |||
133 | 136 | ||
134 | If you replace one USB device with another of the same type (same | 137 | If you replace one USB device with another of the same type (same |
135 | manufacturer, same IDs, and so on) there's an excellent chance the | 138 | manufacturer, same IDs, and so on) there's an excellent chance the |
136 | kernel won't detect the change. Serial numbers and other strings are | 139 | kernel won't detect the change. The serial number string and other |
137 | not compared. In many cases it wouldn't help if they were, because | 140 | descriptors are compared with the kernel's stored values, but this |
138 | manufacturers frequently omit serial numbers entirely in their | 141 | might not help since manufacturers frequently omit serial numbers |
139 | devices. | 142 | entirely in their devices. |
140 | 143 | ||
141 | Furthermore it's quite possible to leave a USB device exactly the same | 144 | Furthermore it's quite possible to leave a USB device exactly the same |
142 | while changing its media. If you replace the flash memory card in a | 145 | while changing its media. If you replace the flash memory card in a |
@@ -152,5 +155,5 @@ but yourself. | |||
152 | YOU HAVE BEEN WARNED! USE AT YOUR OWN RISK! | 155 | YOU HAVE BEEN WARNED! USE AT YOUR OWN RISK! |
153 | 156 | ||
154 | That having been said, most of the time there shouldn't be any trouble | 157 | That having been said, most of the time there shouldn't be any trouble |
155 | at all. The "persist" feature can be extremely useful. Make the most | 158 | at all. The USB-persist feature can be extremely useful. Make the |
156 | of it. | 159 | most of it. |
diff --git a/Documentation/usb/usb-serial.txt b/Documentation/usb/usb-serial.txt index 8b077e43eee7..ff2c1ff57ba2 100644 --- a/Documentation/usb/usb-serial.txt +++ b/Documentation/usb/usb-serial.txt | |||
@@ -192,12 +192,9 @@ Keyspan USA-series Serial Adapters | |||
192 | 192 | ||
193 | FTDI Single Port Serial Driver | 193 | FTDI Single Port Serial Driver |
194 | 194 | ||
195 | This is a single port DB-25 serial adapter. More information about this | 195 | This is a single port DB-25 serial adapter. |
196 | device and the Linux driver can be found at: | ||
197 | http://reality.sgi.com/bryder_wellington/ftdi_sio/ | ||
198 | 196 | ||
199 | For any questions or problems with this driver, please contact Bill Ryder | 197 | For any questions or problems with this driver, please contact Bill Ryder. |
200 | at bryder@sgi.com | ||
201 | 198 | ||
202 | 199 | ||
203 | ZyXEL omni.net lcd plus ISDN TA | 200 | ZyXEL omni.net lcd plus ISDN TA |