diff options
author | Paul Mackerras <paulus@samba.org> | 2007-04-29 22:38:01 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2007-04-29 22:38:01 -0400 |
commit | 49e1900d4cc2e7bcecb681fe60f0990bec2dcce8 (patch) | |
tree | 253801ebf57e0a23856a2c7be129c2c178f62fdf /Documentation | |
parent | 34f6d749c0a328817d5e36274e53121c1db734dc (diff) | |
parent | b9099ff63c75216d6ca10bce5a1abcd9293c27e6 (diff) |
Merge branch 'linux-2.6' into for-2.6.22
Diffstat (limited to 'Documentation')
28 files changed, 1745 insertions, 285 deletions
diff --git a/Documentation/ABI/testing/sysfs-bus-usb b/Documentation/ABI/testing/sysfs-bus-usb new file mode 100644 index 000000000000..f9937add033d --- /dev/null +++ b/Documentation/ABI/testing/sysfs-bus-usb | |||
@@ -0,0 +1,41 @@ | |||
1 | What: /sys/bus/usb/devices/.../power/autosuspend | ||
2 | Date: March 2007 | ||
3 | KernelVersion: 2.6.21 | ||
4 | Contact: Alan Stern <stern@rowland.harvard.edu> | ||
5 | Description: | ||
6 | Each USB device directory will contain a file named | ||
7 | power/autosuspend. This file holds the time (in seconds) | ||
8 | the device must be idle before it will be autosuspended. | ||
9 | 0 means the device will be autosuspended as soon as | ||
10 | possible. Negative values will prevent the device from | ||
11 | being autosuspended at all, and writing a negative value | ||
12 | will resume the device if it is already suspended. | ||
13 | |||
14 | The autosuspend delay for newly-created devices is set to | ||
15 | the value of the usbcore.autosuspend module parameter. | ||
16 | |||
17 | What: /sys/bus/usb/devices/.../power/level | ||
18 | Date: March 2007 | ||
19 | KernelVersion: 2.6.21 | ||
20 | Contact: Alan Stern <stern@rowland.harvard.edu> | ||
21 | Description: | ||
22 | Each USB device directory will contain a file named | ||
23 | power/level. This file holds a power-level setting for | ||
24 | the device, one of "on", "auto", or "suspend". | ||
25 | |||
26 | "on" means that the device is not allowed to autosuspend, | ||
27 | although normal suspends for system sleep will still | ||
28 | be honored. "auto" means the device will autosuspend | ||
29 | and autoresume in the usual manner, according to the | ||
30 | capabilities of its driver. "suspend" means the device | ||
31 | is forced into a suspended state and it will not autoresume | ||
32 | in response to I/O requests. However remote-wakeup requests | ||
33 | from the device may still be enabled (the remote-wakeup | ||
34 | setting is controlled separately by the power/wakeup | ||
35 | attribute). | ||
36 | |||
37 | During normal use, devices should be left in the "auto" | ||
38 | level. The other levels are meant for administrative uses. | ||
39 | If you want to suspend a device immediately but leave it | ||
40 | free to wake up in response to I/O requests, you should | ||
41 | write "0" to power/autosuspend. | ||
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 19b4c96b2a49..5c88ba1ea262 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -6,6 +6,18 @@ be removed from this file. | |||
6 | 6 | ||
7 | --------------------------- | 7 | --------------------------- |
8 | 8 | ||
9 | What: V4L2 VIDIOC_G_MPEGCOMP and VIDIOC_S_MPEGCOMP | ||
10 | When: October 2007 | ||
11 | Why: Broken attempt to set MPEG compression parameters. These ioctls are | ||
12 | not able to implement the wide variety of parameters that can be set | ||
13 | by hardware MPEG encoders. A new MPEG control mechanism was created | ||
14 | in kernel 2.6.18 that replaces these ioctls. See the V4L2 specification | ||
15 | (section 1.9: Extended controls) for more information on this topic. | ||
16 | Who: Hans Verkuil <hverkuil@xs4all.nl> and | ||
17 | Mauro Carvalho Chehab <mchehab@infradead.org> | ||
18 | |||
19 | --------------------------- | ||
20 | |||
9 | What: /sys/devices/.../power/state | 21 | What: /sys/devices/.../power/state |
10 | dev->power.power_state | 22 | dev->power.power_state |
11 | dpm_runtime_{suspend,resume)() | 23 | dpm_runtime_{suspend,resume)() |
@@ -134,15 +146,6 @@ Who: Arjan van de Ven <arjan@linux.intel.com> | |||
134 | 146 | ||
135 | --------------------------- | 147 | --------------------------- |
136 | 148 | ||
137 | What: mount/umount uevents | ||
138 | When: February 2007 | ||
139 | Why: These events are not correct, and do not properly let userspace know | ||
140 | when a file system has been mounted or unmounted. Userspace should | ||
141 | poll the /proc/mounts file instead to detect this properly. | ||
142 | Who: Greg Kroah-Hartman <gregkh@suse.de> | ||
143 | |||
144 | --------------------------- | ||
145 | |||
146 | What: USB driver API moves to EXPORT_SYMBOL_GPL | 149 | What: USB driver API moves to EXPORT_SYMBOL_GPL |
147 | When: February 2008 | 150 | When: February 2008 |
148 | Files: include/linux/usb.h, drivers/usb/core/driver.c | 151 | Files: include/linux/usb.h, drivers/usb/core/driver.c |
@@ -211,15 +214,6 @@ Who: Adrian Bunk <bunk@stusta.de> | |||
211 | 214 | ||
212 | --------------------------- | 215 | --------------------------- |
213 | 216 | ||
214 | What: IPv4 only connection tracking/NAT/helpers | ||
215 | When: 2.6.22 | ||
216 | Why: The new layer 3 independant connection tracking replaces the old | ||
217 | IPv4 only version. After some stabilization of the new code the | ||
218 | old one will be removed. | ||
219 | Who: Patrick McHardy <kaber@trash.net> | ||
220 | |||
221 | --------------------------- | ||
222 | |||
223 | What: ACPI hooks (X86_SPEEDSTEP_CENTRINO_ACPI) in speedstep-centrino driver | 217 | What: ACPI hooks (X86_SPEEDSTEP_CENTRINO_ACPI) in speedstep-centrino driver |
224 | When: December 2006 | 218 | When: December 2006 |
225 | Why: Speedstep-centrino driver with ACPI hooks and acpi-cpufreq driver are | 219 | Why: Speedstep-centrino driver with ACPI hooks and acpi-cpufreq driver are |
@@ -294,18 +288,6 @@ Who: Richard Purdie <rpurdie@rpsys.net> | |||
294 | 288 | ||
295 | --------------------------- | 289 | --------------------------- |
296 | 290 | ||
297 | What: Wireless extensions over netlink (CONFIG_NET_WIRELESS_RTNETLINK) | ||
298 | When: with the merge of wireless-dev, 2.6.22 or later | ||
299 | Why: The option/code is | ||
300 | * not enabled on most kernels | ||
301 | * not required by any userspace tools (except an experimental one, | ||
302 | and even there only for some parts, others use ioctl) | ||
303 | * pointless since wext is no longer evolving and the ioctl | ||
304 | interface needs to be kept | ||
305 | Who: Johannes Berg <johannes@sipsolutions.net> | ||
306 | |||
307 | --------------------------- | ||
308 | |||
309 | What: i8xx_tco watchdog driver | 291 | What: i8xx_tco watchdog driver |
310 | When: in 2.6.22 | 292 | When: in 2.6.22 |
311 | Why: the i8xx_tco watchdog driver has been replaced by the iTCO_wdt | 293 | Why: the i8xx_tco watchdog driver has been replaced by the iTCO_wdt |
@@ -313,3 +295,22 @@ Why: the i8xx_tco watchdog driver has been replaced by the iTCO_wdt | |||
313 | Who: Wim Van Sebroeck <wim@iguana.be> | 295 | Who: Wim Van Sebroeck <wim@iguana.be> |
314 | 296 | ||
315 | --------------------------- | 297 | --------------------------- |
298 | |||
299 | What: Multipath cached routing support in ipv4 | ||
300 | When: in 2.6.23 | ||
301 | Why: Code was merged, then submitter immediately disappeared leaving | ||
302 | us with no maintainer and lots of bugs. The code should not have | ||
303 | been merged in the first place, and many aspects of it's | ||
304 | implementation are blocking more critical core networking | ||
305 | development. It's marked EXPERIMENTAL and no distribution | ||
306 | enables it because it cause obscure crashes due to unfixable bugs | ||
307 | (interfaces don't return errors so memory allocation can't be | ||
308 | handled, calling contexts of these interfaces make handling | ||
309 | errors impossible too because they get called after we've | ||
310 | totally commited to creating a route object, for example). | ||
311 | This problem has existed for years and no forward progress | ||
312 | has ever been made, and nobody steps up to try and salvage | ||
313 | this code, so we're going to finally just get rid of it. | ||
314 | Who: David S. Miller <davem@davemloft.net> | ||
315 | |||
316 | --------------------------- | ||
diff --git a/Documentation/filesystems/afs.txt b/Documentation/filesystems/afs.txt index 2f4237dfb8c7..12ad6c7f4e50 100644 --- a/Documentation/filesystems/afs.txt +++ b/Documentation/filesystems/afs.txt | |||
@@ -1,31 +1,82 @@ | |||
1 | ==================== | ||
1 | kAFS: AFS FILESYSTEM | 2 | kAFS: AFS FILESYSTEM |
2 | ==================== | 3 | ==================== |
3 | 4 | ||
4 | ABOUT | 5 | Contents: |
5 | ===== | 6 | |
7 | - Overview. | ||
8 | - Usage. | ||
9 | - Mountpoints. | ||
10 | - Proc filesystem. | ||
11 | - The cell database. | ||
12 | - Security. | ||
13 | - Examples. | ||
14 | |||
15 | |||
16 | ======== | ||
17 | OVERVIEW | ||
18 | ======== | ||
6 | 19 | ||
7 | This filesystem provides a fairly simple AFS filesystem driver. It is under | 20 | This filesystem provides a fairly simple secure AFS filesystem driver. It is |
8 | development and only provides very basic facilities. It does not yet support | 21 | under development and does not yet provide the full feature set. The features |
9 | the following AFS features: | 22 | it does support include: |
10 | 23 | ||
11 | (*) Write support. | 24 | (*) Security (currently only AFS kaserver and KerberosIV tickets). |
12 | (*) Communications security. | ||
13 | (*) Local caching. | ||
14 | (*) pioctl() system call. | ||
15 | (*) Automatic mounting of embedded mountpoints. | ||
16 | 25 | ||
26 | (*) File reading. | ||
17 | 27 | ||
28 | (*) Automounting. | ||
29 | |||
30 | It does not yet support the following AFS features: | ||
31 | |||
32 | (*) Write support. | ||
33 | |||
34 | (*) Local caching. | ||
35 | |||
36 | (*) pioctl() system call. | ||
37 | |||
38 | |||
39 | =========== | ||
40 | COMPILATION | ||
41 | =========== | ||
42 | |||
43 | The filesystem should be enabled by turning on the kernel configuration | ||
44 | options: | ||
45 | |||
46 | CONFIG_AF_RXRPC - The RxRPC protocol transport | ||
47 | CONFIG_RXKAD - The RxRPC Kerberos security handler | ||
48 | CONFIG_AFS - The AFS filesystem | ||
49 | |||
50 | Additionally, the following can be turned on to aid debugging: | ||
51 | |||
52 | CONFIG_AF_RXRPC_DEBUG - Permit AF_RXRPC debugging to be enabled | ||
53 | CONFIG_AFS_DEBUG - Permit AFS debugging to be enabled | ||
54 | |||
55 | They permit the debugging messages to be turned on dynamically by manipulating | ||
56 | the masks in the following files: | ||
57 | |||
58 | /sys/module/af_rxrpc/parameters/debug | ||
59 | /sys/module/afs/parameters/debug | ||
60 | |||
61 | |||
62 | ===== | ||
18 | USAGE | 63 | USAGE |
19 | ===== | 64 | ===== |
20 | 65 | ||
21 | When inserting the driver modules the root cell must be specified along with a | 66 | When inserting the driver modules the root cell must be specified along with a |
22 | list of volume location server IP addresses: | 67 | list of volume location server IP addresses: |
23 | 68 | ||
24 | insmod rxrpc.o | 69 | insmod af_rxrpc.o |
70 | insmod rxkad.o | ||
25 | insmod kafs.o rootcell=cambridge.redhat.com:172.16.18.73:172.16.18.91 | 71 | insmod kafs.o rootcell=cambridge.redhat.com:172.16.18.73:172.16.18.91 |
26 | 72 | ||
27 | The first module is a driver for the RxRPC remote operation protocol, and the | 73 | The first module is the AF_RXRPC network protocol driver. This provides the |
28 | second is the actual filesystem driver for the AFS filesystem. | 74 | RxRPC remote operation protocol and may also be accessed from userspace. See: |
75 | |||
76 | Documentation/networking/rxrpc.txt | ||
77 | |||
78 | The second module is the kerberos RxRPC security driver, and the third module | ||
79 | is the actual filesystem driver for the AFS filesystem. | ||
29 | 80 | ||
30 | Once the module has been loaded, more modules can be added by the following | 81 | Once the module has been loaded, more modules can be added by the following |
31 | procedure: | 82 | procedure: |
@@ -33,7 +84,7 @@ procedure: | |||
33 | echo add grand.central.org 18.7.14.88:128.2.191.224 >/proc/fs/afs/cells | 84 | echo add grand.central.org 18.7.14.88:128.2.191.224 >/proc/fs/afs/cells |
34 | 85 | ||
35 | Where the parameters to the "add" command are the name of a cell and a list of | 86 | Where the parameters to the "add" command are the name of a cell and a list of |
36 | volume location servers within that cell. | 87 | volume location servers within that cell, with the latter separated by colons. |
37 | 88 | ||
38 | Filesystems can be mounted anywhere by commands similar to the following: | 89 | Filesystems can be mounted anywhere by commands similar to the following: |
39 | 90 | ||
@@ -42,11 +93,6 @@ Filesystems can be mounted anywhere by commands similar to the following: | |||
42 | mount -t afs "#root.afs." /afs | 93 | mount -t afs "#root.afs." /afs |
43 | mount -t afs "#root.cell." /afs/cambridge | 94 | mount -t afs "#root.cell." /afs/cambridge |
44 | 95 | ||
45 | NB: When using this on Linux 2.4, the mount command has to be different, | ||
46 | since the filesystem doesn't have access to the device name argument: | ||
47 | |||
48 | mount -t afs none /afs -ovol="#root.afs." | ||
49 | |||
50 | Where the initial character is either a hash or a percent symbol depending on | 96 | Where the initial character is either a hash or a percent symbol depending on |
51 | whether you definitely want a R/W volume (hash) or whether you'd prefer a R/O | 97 | whether you definitely want a R/W volume (hash) or whether you'd prefer a R/O |
52 | volume, but are willing to use a R/W volume instead (percent). | 98 | volume, but are willing to use a R/W volume instead (percent). |
@@ -60,55 +106,66 @@ named volume will be looked up in the cell specified during insmod. | |||
60 | Additional cells can be added through /proc (see later section). | 106 | Additional cells can be added through /proc (see later section). |
61 | 107 | ||
62 | 108 | ||
109 | =========== | ||
63 | MOUNTPOINTS | 110 | MOUNTPOINTS |
64 | =========== | 111 | =========== |
65 | 112 | ||
66 | AFS has a concept of mountpoints. These are specially formatted symbolic links | 113 | AFS has a concept of mountpoints. In AFS terms, these are specially formatted |
67 | (of the same form as the "device name" passed to mount). kAFS presents these | 114 | symbolic links (of the same form as the "device name" passed to mount). kAFS |
68 | to the user as directories that have special properties: | 115 | presents these to the user as directories that have a follow-link capability |
116 | (ie: symbolic link semantics). If anyone attempts to access them, they will | ||
117 | automatically cause the target volume to be mounted (if possible) on that site. | ||
69 | 118 | ||
70 | (*) They cannot be listed. Running a program like "ls" on them will incur an | 119 | Automatically mounted filesystems will be automatically unmounted approximately |
71 | EREMOTE error (Object is remote). | 120 | twenty minutes after they were last used. Alternatively they can be unmounted |
121 | directly with the umount() system call. | ||
72 | 122 | ||
73 | (*) Other objects can't be looked up inside of them. This also incurs an | 123 | Manually unmounting an AFS volume will cause any idle submounts upon it to be |
74 | EREMOTE error. | 124 | culled first. If all are culled, then the requested volume will also be |
125 | unmounted, otherwise error EBUSY will be returned. | ||
75 | 126 | ||
76 | (*) They can be queried with the readlink() system call, which will return | 127 | This can be used by the administrator to attempt to unmount the whole AFS tree |
77 | the name of the mountpoint to which they point. The "readlink" program | 128 | mounted on /afs in one go by doing: |
78 | will also work. | ||
79 | 129 | ||
80 | (*) They can be mounted on (which symbolic links can't). | 130 | umount /afs |
81 | 131 | ||
82 | 132 | ||
133 | =============== | ||
83 | PROC FILESYSTEM | 134 | PROC FILESYSTEM |
84 | =============== | 135 | =============== |
85 | 136 | ||
86 | The rxrpc module creates a number of files in various places in the /proc | ||
87 | filesystem: | ||
88 | |||
89 | (*) Firstly, some information files are made available in a directory called | ||
90 | "/proc/net/rxrpc/". These list the extant transport endpoint, peer, | ||
91 | connection and call records. | ||
92 | |||
93 | (*) Secondly, some control files are made available in a directory called | ||
94 | "/proc/sys/rxrpc/". Currently, all these files can be used for is to | ||
95 | turn on various levels of tracing. | ||
96 | |||
97 | The AFS modules creates a "/proc/fs/afs/" directory and populates it: | 137 | The AFS modules creates a "/proc/fs/afs/" directory and populates it: |
98 | 138 | ||
99 | (*) A "cells" file that lists cells currently known to the afs module. | 139 | (*) A "cells" file that lists cells currently known to the afs module and |
140 | their usage counts: | ||
141 | |||
142 | [root@andromeda ~]# cat /proc/fs/afs/cells | ||
143 | USE NAME | ||
144 | 3 cambridge.redhat.com | ||
100 | 145 | ||
101 | (*) A directory per cell that contains files that list volume location | 146 | (*) A directory per cell that contains files that list volume location |
102 | servers, volumes, and active servers known within that cell. | 147 | servers, volumes, and active servers known within that cell. |
103 | 148 | ||
149 | [root@andromeda ~]# cat /proc/fs/afs/cambridge.redhat.com/servers | ||
150 | USE ADDR STATE | ||
151 | 4 172.16.18.91 0 | ||
152 | [root@andromeda ~]# cat /proc/fs/afs/cambridge.redhat.com/vlservers | ||
153 | ADDRESS | ||
154 | 172.16.18.91 | ||
155 | [root@andromeda ~]# cat /proc/fs/afs/cambridge.redhat.com/volumes | ||
156 | USE STT VLID[0] VLID[1] VLID[2] NAME | ||
157 | 1 Val 20000000 20000001 20000002 root.afs | ||
104 | 158 | ||
159 | |||
160 | ================= | ||
105 | THE CELL DATABASE | 161 | THE CELL DATABASE |
106 | ================= | 162 | ================= |
107 | 163 | ||
108 | The filesystem maintains an internal database of all the cells it knows and | 164 | The filesystem maintains an internal database of all the cells it knows and the |
109 | the IP addresses of the volume location servers for those cells. The cell to | 165 | IP addresses of the volume location servers for those cells. The cell to which |
110 | which the computer belongs is added to the database when insmod is performed | 166 | the system belongs is added to the database when insmod is performed by the |
111 | by the "rootcell=" argument. | 167 | "rootcell=" argument or, if compiled in, using a "kafs.rootcell=" argument on |
168 | the kernel command line. | ||
112 | 169 | ||
113 | Further cells can be added by commands similar to the following: | 170 | Further cells can be added by commands similar to the following: |
114 | 171 | ||
@@ -118,20 +175,65 @@ Further cells can be added by commands similar to the following: | |||
118 | No other cell database operations are available at this time. | 175 | No other cell database operations are available at this time. |
119 | 176 | ||
120 | 177 | ||
178 | ======== | ||
179 | SECURITY | ||
180 | ======== | ||
181 | |||
182 | Secure operations are initiated by acquiring a key using the klog program. A | ||
183 | very primitive klog program is available at: | ||
184 | |||
185 | http://people.redhat.com/~dhowells/rxrpc/klog.c | ||
186 | |||
187 | This should be compiled by: | ||
188 | |||
189 | make klog LDLIBS="-lcrypto -lcrypt -lkrb4 -lkeyutils" | ||
190 | |||
191 | And then run as: | ||
192 | |||
193 | ./klog | ||
194 | |||
195 | Assuming it's successful, this adds a key of type RxRPC, named for the service | ||
196 | and cell, eg: "afs@<cellname>". This can be viewed with the keyctl program or | ||
197 | by cat'ing /proc/keys: | ||
198 | |||
199 | [root@andromeda ~]# keyctl show | ||
200 | Session Keyring | ||
201 | -3 --alswrv 0 0 keyring: _ses.3268 | ||
202 | 2 --alswrv 0 0 \_ keyring: _uid.0 | ||
203 | 111416553 --als--v 0 0 \_ rxrpc: afs@CAMBRIDGE.REDHAT.COM | ||
204 | |||
205 | Currently the username, realm, password and proposed ticket lifetime are | ||
206 | compiled in to the program. | ||
207 | |||
208 | It is not required to acquire a key before using AFS facilities, but if one is | ||
209 | not acquired then all operations will be governed by the anonymous user parts | ||
210 | of the ACLs. | ||
211 | |||
212 | If a key is acquired, then all AFS operations, including mounts and automounts, | ||
213 | made by a possessor of that key will be secured with that key. | ||
214 | |||
215 | If a file is opened with a particular key and then the file descriptor is | ||
216 | passed to a process that doesn't have that key (perhaps over an AF_UNIX | ||
217 | socket), then the operations on the file will be made with key that was used to | ||
218 | open the file. | ||
219 | |||
220 | |||
221 | ======== | ||
121 | EXAMPLES | 222 | EXAMPLES |
122 | ======== | 223 | ======== |
123 | 224 | ||
124 | Here's what I use to test this. Some of the names and IP addresses are local | 225 | Here's what I use to test this. Some of the names and IP addresses are local |
125 | to my internal DNS. My "root.afs" partition has a mount point within it for | 226 | to my internal DNS. My "root.afs" partition has a mount point within it for |
126 | some public volumes volumes. | 227 | some public volumes volumes. |
127 | 228 | ||
128 | insmod -S /tmp/rxrpc.o | 229 | insmod /tmp/rxrpc.o |
129 | insmod -S /tmp/kafs.o rootcell=cambridge.redhat.com:172.16.18.73:172.16.18.91 | 230 | insmod /tmp/rxkad.o |
231 | insmod /tmp/kafs.o rootcell=cambridge.redhat.com:172.16.18.91 | ||
130 | 232 | ||
131 | mount -t afs \%root.afs. /afs | 233 | mount -t afs \%root.afs. /afs |
132 | mount -t afs \%cambridge.redhat.com:root.cell. /afs/cambridge.redhat.com/ | 234 | mount -t afs \%cambridge.redhat.com:root.cell. /afs/cambridge.redhat.com/ |
133 | 235 | ||
134 | echo add grand.central.org 18.7.14.88:128.2.191.224 > /proc/fs/afs/cells | 236 | echo add grand.central.org 18.7.14.88:128.2.191.224 > /proc/fs/afs/cells |
135 | mount -t afs "#grand.central.org:root.cell." /afs/grand.central.org/ | 237 | mount -t afs "#grand.central.org:root.cell." /afs/grand.central.org/ |
136 | mount -t afs "#grand.central.org:root.archive." /afs/grand.central.org/archive | 238 | mount -t afs "#grand.central.org:root.archive." /afs/grand.central.org/archive |
137 | mount -t afs "#grand.central.org:root.contrib." /afs/grand.central.org/contrib | 239 | mount -t afs "#grand.central.org:root.contrib." /afs/grand.central.org/contrib |
@@ -141,15 +243,7 @@ mount -t afs "#grand.central.org:root.service." /afs/grand.central.org/service | |||
141 | mount -t afs "#grand.central.org:root.software." /afs/grand.central.org/software | 243 | mount -t afs "#grand.central.org:root.software." /afs/grand.central.org/software |
142 | mount -t afs "#grand.central.org:root.user." /afs/grand.central.org/user | 244 | mount -t afs "#grand.central.org:root.user." /afs/grand.central.org/user |
143 | 245 | ||
144 | umount /afs/grand.central.org/user | ||
145 | umount /afs/grand.central.org/software | ||
146 | umount /afs/grand.central.org/service | ||
147 | umount /afs/grand.central.org/project | ||
148 | umount /afs/grand.central.org/doc | ||
149 | umount /afs/grand.central.org/contrib | ||
150 | umount /afs/grand.central.org/archive | ||
151 | umount /afs/grand.central.org | ||
152 | umount /afs/cambridge.redhat.com | ||
153 | umount /afs | 246 | umount /afs |
154 | rmmod kafs | 247 | rmmod kafs |
248 | rmmod rxkad | ||
155 | rmmod rxrpc | 249 | rmmod rxrpc |
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index 5484ab5efd4f..7aaf09b86a55 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -1421,6 +1421,15 @@ fewer messages that will be written. Message_burst controls when messages will | |||
1421 | be dropped. The default settings limit warning messages to one every five | 1421 | be dropped. The default settings limit warning messages to one every five |
1422 | seconds. | 1422 | seconds. |
1423 | 1423 | ||
1424 | warnings | ||
1425 | -------- | ||
1426 | |||
1427 | This controls console messages from the networking stack that can occur because | ||
1428 | of problems on the network like duplicate address or bad checksums. Normally, | ||
1429 | this should be enabled, but if the problem persists the messages can be | ||
1430 | disabled. | ||
1431 | |||
1432 | |||
1424 | netdev_max_backlog | 1433 | netdev_max_backlog |
1425 | ------------------ | 1434 | ------------------ |
1426 | 1435 | ||
diff --git a/Documentation/gpio.txt b/Documentation/gpio.txt index 989f1130f4f3..f8528db967fa 100644 --- a/Documentation/gpio.txt +++ b/Documentation/gpio.txt | |||
@@ -27,7 +27,7 @@ The exact capabilities of GPIOs vary between systems. Common options: | |||
27 | - Output values are writable (high=1, low=0). Some chips also have | 27 | - Output values are writable (high=1, low=0). Some chips also have |
28 | options about how that value is driven, so that for example only one | 28 | options about how that value is driven, so that for example only one |
29 | value might be driven ... supporting "wire-OR" and similar schemes | 29 | value might be driven ... supporting "wire-OR" and similar schemes |
30 | for the other value. | 30 | for the other value (notably, "open drain" signaling). |
31 | 31 | ||
32 | - Input values are likewise readable (1, 0). Some chips support readback | 32 | - Input values are likewise readable (1, 0). Some chips support readback |
33 | of pins configured as "output", which is very useful in such "wire-OR" | 33 | of pins configured as "output", which is very useful in such "wire-OR" |
@@ -247,6 +247,35 @@ with gpio_get_value(), for example to initialize or update driver state | |||
247 | when the IRQ is edge-triggered. | 247 | when the IRQ is edge-triggered. |
248 | 248 | ||
249 | 249 | ||
250 | Emulating Open Drain Signals | ||
251 | ---------------------------- | ||
252 | Sometimes shared signals need to use "open drain" signaling, where only the | ||
253 | low signal level is actually driven. (That term applies to CMOS transistors; | ||
254 | "open collector" is used for TTL.) A pullup resistor causes the high signal | ||
255 | level. This is sometimes called a "wire-AND"; or more practically, from the | ||
256 | negative logic (low=true) perspective this is a "wire-OR". | ||
257 | |||
258 | One common example of an open drain signal is a shared active-low IRQ line. | ||
259 | Also, bidirectional data bus signals sometimes use open drain signals. | ||
260 | |||
261 | Some GPIO controllers directly support open drain outputs; many don't. When | ||
262 | you need open drain signaling but your hardware doesn't directly support it, | ||
263 | there's a common idiom you can use to emulate it with any GPIO pin that can | ||
264 | be used as either an input or an output: | ||
265 | |||
266 | LOW: gpio_direction_output(gpio, 0) ... this drives the signal | ||
267 | and overrides the pullup. | ||
268 | |||
269 | HIGH: gpio_direction_input(gpio) ... this turns off the output, | ||
270 | so the pullup (or some other device) controls the signal. | ||
271 | |||
272 | If you are "driving" the signal high but gpio_get_value(gpio) reports a low | ||
273 | value (after the appropriate rise time passes), you know some other component | ||
274 | is driving the shared signal low. That's not necessarily an error. As one | ||
275 | common example, that's how I2C clocks are stretched: a slave that needs a | ||
276 | slower clock delays the rising edge of SCK, and the I2C master adjusts its | ||
277 | signaling rate accordingly. | ||
278 | |||
250 | 279 | ||
251 | What do these conventions omit? | 280 | What do these conventions omit? |
252 | =============================== | 281 | =============================== |
diff --git a/Documentation/infiniband/user_mad.txt b/Documentation/infiniband/user_mad.txt index 750fe5e80ebc..8ec54b974b67 100644 --- a/Documentation/infiniband/user_mad.txt +++ b/Documentation/infiniband/user_mad.txt | |||
@@ -91,6 +91,14 @@ Sending MADs | |||
91 | if (ret != sizeof *mad + mad_length) | 91 | if (ret != sizeof *mad + mad_length) |
92 | perror("write"); | 92 | perror("write"); |
93 | 93 | ||
94 | Transaction IDs | ||
95 | |||
96 | Users of the umad devices can use the lower 32 bits of the | ||
97 | transaction ID field (that is, the least significant half of the | ||
98 | field in network byte order) in MADs being sent to match | ||
99 | request/response pairs. The upper 32 bits are reserved for use by | ||
100 | the kernel and will be overwritten before a MAD is sent. | ||
101 | |||
94 | Setting IsSM Capability Bit | 102 | Setting IsSM Capability Bit |
95 | 103 | ||
96 | To set the IsSM capability bit for a port, simply open the | 104 | To set the IsSM capability bit for a port, simply open the |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 12533a958c51..2017942e0966 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -1792,7 +1792,7 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1792 | for newly-detected USB devices (default 2). This | 1792 | for newly-detected USB devices (default 2). This |
1793 | is the time required before an idle device will be | 1793 | is the time required before an idle device will be |
1794 | autosuspended. Devices for which the delay is set | 1794 | autosuspended. Devices for which the delay is set |
1795 | to 0 won't be autosuspended at all. | 1795 | to a negative value won't be autosuspended at all. |
1796 | 1796 | ||
1797 | usbhid.mousepoll= | 1797 | usbhid.mousepoll= |
1798 | [USBHID] The interval which mice are to be polled at. | 1798 | [USBHID] The interval which mice are to be polled at. |
diff --git a/Documentation/keys.txt b/Documentation/keys.txt index 60c665d9cfaa..81d9aa097298 100644 --- a/Documentation/keys.txt +++ b/Documentation/keys.txt | |||
@@ -859,6 +859,18 @@ payload contents" for more information. | |||
859 | void unregister_key_type(struct key_type *type); | 859 | void unregister_key_type(struct key_type *type); |
860 | 860 | ||
861 | 861 | ||
862 | Under some circumstances, it may be desirable to desirable to deal with a | ||
863 | bundle of keys. The facility provides access to the keyring type for managing | ||
864 | such a bundle: | ||
865 | |||
866 | struct key_type key_type_keyring; | ||
867 | |||
868 | This can be used with a function such as request_key() to find a specific | ||
869 | keyring in a process's keyrings. A keyring thus found can then be searched | ||
870 | with keyring_search(). Note that it is not possible to use request_key() to | ||
871 | search a specific keyring, so using keyrings in this way is of limited utility. | ||
872 | |||
873 | |||
862 | =================================== | 874 | =================================== |
863 | NOTES ON ACCESSING PAYLOAD CONTENTS | 875 | NOTES ON ACCESSING PAYLOAD CONTENTS |
864 | =================================== | 876 | =================================== |
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt index de809e58092f..1da566630831 100644 --- a/Documentation/networking/bonding.txt +++ b/Documentation/networking/bonding.txt | |||
@@ -920,40 +920,9 @@ options, you may wish to use the "max_bonds" module parameter, | |||
920 | documented above. | 920 | documented above. |
921 | 921 | ||
922 | To create multiple bonding devices with differing options, it | 922 | To create multiple bonding devices with differing options, it |
923 | is necessary to load the bonding driver multiple times. Note that | 923 | is necessary to use bonding parameters exported by sysfs, documented |
924 | current versions of the sysconfig network initialization scripts | 924 | in the section below. |
925 | handle this automatically; if your distro uses these scripts, no | ||
926 | special action is needed. See the section Configuring Bonding | ||
927 | Devices, above, if you're not sure about your network initialization | ||
928 | scripts. | ||
929 | |||
930 | To load multiple instances of the module, it is necessary to | ||
931 | specify a different name for each instance (the module loading system | ||
932 | requires that every loaded module, even multiple instances of the same | ||
933 | module, have a unique name). This is accomplished by supplying | ||
934 | multiple sets of bonding options in /etc/modprobe.conf, for example: | ||
935 | |||
936 | alias bond0 bonding | ||
937 | options bond0 -o bond0 mode=balance-rr miimon=100 | ||
938 | |||
939 | alias bond1 bonding | ||
940 | options bond1 -o bond1 mode=balance-alb miimon=50 | ||
941 | |||
942 | will load the bonding module two times. The first instance is | ||
943 | named "bond0" and creates the bond0 device in balance-rr mode with an | ||
944 | miimon of 100. The second instance is named "bond1" and creates the | ||
945 | bond1 device in balance-alb mode with an miimon of 50. | ||
946 | |||
947 | In some circumstances (typically with older distributions), | ||
948 | the above does not work, and the second bonding instance never sees | ||
949 | its options. In that case, the second options line can be substituted | ||
950 | as follows: | ||
951 | |||
952 | install bond1 /sbin/modprobe --ignore-install bonding -o bond1 \ | ||
953 | mode=balance-alb miimon=50 | ||
954 | 925 | ||
955 | This may be repeated any number of times, specifying a new and | ||
956 | unique name in place of bond1 for each subsequent instance. | ||
957 | 926 | ||
958 | 3.4 Configuring Bonding Manually via Sysfs | 927 | 3.4 Configuring Bonding Manually via Sysfs |
959 | ------------------------------------------ | 928 | ------------------------------------------ |
diff --git a/Documentation/networking/dccp.txt b/Documentation/networking/dccp.txt index 387482e46c47..4504cc59e405 100644 --- a/Documentation/networking/dccp.txt +++ b/Documentation/networking/dccp.txt | |||
@@ -57,6 +57,16 @@ DCCP_SOCKOPT_SEND_CSCOV is for the receiver and has a different meaning: it | |||
57 | coverage value are also acceptable. The higher the number, the more | 57 | coverage value are also acceptable. The higher the number, the more |
58 | restrictive this setting (see [RFC 4340, sec. 9.2.1]). | 58 | restrictive this setting (see [RFC 4340, sec. 9.2.1]). |
59 | 59 | ||
60 | The following two options apply to CCID 3 exclusively and are getsockopt()-only. | ||
61 | In either case, a TFRC info struct (defined in <linux/tfrc.h>) is returned. | ||
62 | DCCP_SOCKOPT_CCID_RX_INFO | ||
63 | Returns a `struct tfrc_rx_info' in optval; the buffer for optval and | ||
64 | optlen must be set to at least sizeof(struct tfrc_rx_info). | ||
65 | DCCP_SOCKOPT_CCID_TX_INFO | ||
66 | Returns a `struct tfrc_tx_info' in optval; the buffer for optval and | ||
67 | optlen must be set to at least sizeof(struct tfrc_tx_info). | ||
68 | |||
69 | |||
60 | Sysctl variables | 70 | Sysctl variables |
61 | ================ | 71 | ================ |
62 | Several DCCP default parameters can be managed by the following sysctls | 72 | Several DCCP default parameters can be managed by the following sysctls |
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index d3aae1f9b4c1..af6a63ab9026 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -179,11 +179,31 @@ tcp_fin_timeout - INTEGER | |||
179 | because they eat maximum 1.5K of memory, but they tend | 179 | because they eat maximum 1.5K of memory, but they tend |
180 | to live longer. Cf. tcp_max_orphans. | 180 | to live longer. Cf. tcp_max_orphans. |
181 | 181 | ||
182 | tcp_frto - BOOLEAN | 182 | tcp_frto - INTEGER |
183 | Enables F-RTO, an enhanced recovery algorithm for TCP retransmission | 183 | Enables F-RTO, an enhanced recovery algorithm for TCP retransmission |
184 | timeouts. It is particularly beneficial in wireless environments | 184 | timeouts. It is particularly beneficial in wireless environments |
185 | where packet loss is typically due to random radio interference | 185 | where packet loss is typically due to random radio interference |
186 | rather than intermediate router congestion. | 186 | rather than intermediate router congestion. If set to 1, basic |
187 | version is enabled. 2 enables SACK enhanced F-RTO, which is | ||
188 | EXPERIMENTAL. The basic version can be used also when SACK is | ||
189 | enabled for a flow through tcp_sack sysctl. | ||
190 | |||
191 | tcp_frto_response - INTEGER | ||
192 | When F-RTO has detected that a TCP retransmission timeout was | ||
193 | spurious (i.e, the timeout would have been avoided had TCP set a | ||
194 | longer retransmission timeout), TCP has several options what to do | ||
195 | next. Possible values are: | ||
196 | 0 Rate halving based; a smooth and conservative response, | ||
197 | results in halved cwnd and ssthresh after one RTT | ||
198 | 1 Very conservative response; not recommended because even | ||
199 | though being valid, it interacts poorly with the rest of | ||
200 | Linux TCP, halves cwnd and ssthresh immediately | ||
201 | 2 Aggressive response; undoes congestion control measures | ||
202 | that are now known to be unnecessary (ignoring the | ||
203 | possibility of a lost retransmission that would require | ||
204 | TCP to be more cautious), cwnd and ssthresh are restored | ||
205 | to the values prior timeout | ||
206 | Default: 0 (rate halving based) | ||
187 | 207 | ||
188 | tcp_keepalive_time - INTEGER | 208 | tcp_keepalive_time - INTEGER |
189 | How often TCP sends out keepalive messages when keepalive is enabled. | 209 | How often TCP sends out keepalive messages when keepalive is enabled. |
@@ -851,6 +871,15 @@ accept_redirects - BOOLEAN | |||
851 | Functional default: enabled if local forwarding is disabled. | 871 | Functional default: enabled if local forwarding is disabled. |
852 | disabled if local forwarding is enabled. | 872 | disabled if local forwarding is enabled. |
853 | 873 | ||
874 | accept_source_route - INTEGER | ||
875 | Accept source routing (routing extension header). | ||
876 | |||
877 | > 0: Accept routing header. | ||
878 | = 0: Accept only routing header type 2. | ||
879 | < 0: Do not accept routing header. | ||
880 | |||
881 | Default: 0 | ||
882 | |||
854 | autoconf - BOOLEAN | 883 | autoconf - BOOLEAN |
855 | Autoconfigure addresses using Prefix Information in Router | 884 | Autoconfigure addresses using Prefix Information in Router |
856 | Advertisements. | 885 | Advertisements. |
@@ -986,7 +1015,12 @@ bridge-nf-call-ip6tables - BOOLEAN | |||
986 | Default: 1 | 1015 | Default: 1 |
987 | 1016 | ||
988 | bridge-nf-filter-vlan-tagged - BOOLEAN | 1017 | bridge-nf-filter-vlan-tagged - BOOLEAN |
989 | 1 : pass bridged vlan-tagged ARP/IP traffic to arptables/iptables. | 1018 | 1 : pass bridged vlan-tagged ARP/IP/IPv6 traffic to {arp,ip,ip6}tables. |
1019 | 0 : disable this. | ||
1020 | Default: 1 | ||
1021 | |||
1022 | bridge-nf-filter-pppoe-tagged - BOOLEAN | ||
1023 | 1 : pass bridged pppoe-tagged IP/IPv6 traffic to {ip,ip6}tables. | ||
990 | 0 : disable this. | 1024 | 0 : disable this. |
991 | Default: 1 | 1025 | Default: 1 |
992 | 1026 | ||
diff --git a/Documentation/networking/rxrpc.txt b/Documentation/networking/rxrpc.txt new file mode 100644 index 000000000000..cae231b1c134 --- /dev/null +++ b/Documentation/networking/rxrpc.txt | |||
@@ -0,0 +1,859 @@ | |||
1 | ====================== | ||
2 | RxRPC NETWORK PROTOCOL | ||
3 | ====================== | ||
4 | |||
5 | The RxRPC protocol driver provides a reliable two-phase transport on top of UDP | ||
6 | that can be used to perform RxRPC remote operations. This is done over sockets | ||
7 | of AF_RXRPC family, using sendmsg() and recvmsg() with control data to send and | ||
8 | receive data, aborts and errors. | ||
9 | |||
10 | Contents of this document: | ||
11 | |||
12 | (*) Overview. | ||
13 | |||
14 | (*) RxRPC protocol summary. | ||
15 | |||
16 | (*) AF_RXRPC driver model. | ||
17 | |||
18 | (*) Control messages. | ||
19 | |||
20 | (*) Socket options. | ||
21 | |||
22 | (*) Security. | ||
23 | |||
24 | (*) Example client usage. | ||
25 | |||
26 | (*) Example server usage. | ||
27 | |||
28 | (*) AF_RXRPC kernel interface. | ||
29 | |||
30 | |||
31 | ======== | ||
32 | OVERVIEW | ||
33 | ======== | ||
34 | |||
35 | RxRPC is a two-layer protocol. There is a session layer which provides | ||
36 | reliable virtual connections using UDP over IPv4 (or IPv6) as the transport | ||
37 | layer, but implements a real network protocol; and there's the presentation | ||
38 | layer which renders structured data to binary blobs and back again using XDR | ||
39 | (as does SunRPC): | ||
40 | |||
41 | +-------------+ | ||
42 | | Application | | ||
43 | +-------------+ | ||
44 | | XDR | Presentation | ||
45 | +-------------+ | ||
46 | | RxRPC | Session | ||
47 | +-------------+ | ||
48 | | UDP | Transport | ||
49 | +-------------+ | ||
50 | |||
51 | |||
52 | AF_RXRPC provides: | ||
53 | |||
54 | (1) Part of an RxRPC facility for both kernel and userspace applications by | ||
55 | making the session part of it a Linux network protocol (AF_RXRPC). | ||
56 | |||
57 | (2) A two-phase protocol. The client transmits a blob (the request) and then | ||
58 | receives a blob (the reply), and the server receives the request and then | ||
59 | transmits the reply. | ||
60 | |||
61 | (3) Retention of the reusable bits of the transport system set up for one call | ||
62 | to speed up subsequent calls. | ||
63 | |||
64 | (4) A secure protocol, using the Linux kernel's key retention facility to | ||
65 | manage security on the client end. The server end must of necessity be | ||
66 | more active in security negotiations. | ||
67 | |||
68 | AF_RXRPC does not provide XDR marshalling/presentation facilities. That is | ||
69 | left to the application. AF_RXRPC only deals in blobs. Even the operation ID | ||
70 | is just the first four bytes of the request blob, and as such is beyond the | ||
71 | kernel's interest. | ||
72 | |||
73 | |||
74 | Sockets of AF_RXRPC family are: | ||
75 | |||
76 | (1) created as type SOCK_DGRAM; | ||
77 | |||
78 | (2) provided with a protocol of the type of underlying transport they're going | ||
79 | to use - currently only PF_INET is supported. | ||
80 | |||
81 | |||
82 | The Andrew File System (AFS) is an example of an application that uses this and | ||
83 | that has both kernel (filesystem) and userspace (utility) components. | ||
84 | |||
85 | |||
86 | ====================== | ||
87 | RXRPC PROTOCOL SUMMARY | ||
88 | ====================== | ||
89 | |||
90 | An overview of the RxRPC protocol: | ||
91 | |||
92 | (*) RxRPC sits on top of another networking protocol (UDP is the only option | ||
93 | currently), and uses this to provide network transport. UDP ports, for | ||
94 | example, provide transport endpoints. | ||
95 | |||
96 | (*) RxRPC supports multiple virtual "connections" from any given transport | ||
97 | endpoint, thus allowing the endpoints to be shared, even to the same | ||
98 | remote endpoint. | ||
99 | |||
100 | (*) Each connection goes to a particular "service". A connection may not go | ||
101 | to multiple services. A service may be considered the RxRPC equivalent of | ||
102 | a port number. AF_RXRPC permits multiple services to share an endpoint. | ||
103 | |||
104 | (*) Client-originating packets are marked, thus a transport endpoint can be | ||
105 | shared between client and server connections (connections have a | ||
106 | direction). | ||
107 | |||
108 | (*) Up to a billion connections may be supported concurrently between one | ||
109 | local transport endpoint and one service on one remote endpoint. An RxRPC | ||
110 | connection is described by seven numbers: | ||
111 | |||
112 | Local address } | ||
113 | Local port } Transport (UDP) address | ||
114 | Remote address } | ||
115 | Remote port } | ||
116 | Direction | ||
117 | Connection ID | ||
118 | Service ID | ||
119 | |||
120 | (*) Each RxRPC operation is a "call". A connection may make up to four | ||
121 | billion calls, but only up to four calls may be in progress on a | ||
122 | connection at any one time. | ||
123 | |||
124 | (*) Calls are two-phase and asymmetric: the client sends its request data, | ||
125 | which the service receives; then the service transmits the reply data | ||
126 | which the client receives. | ||
127 | |||
128 | (*) The data blobs are of indefinite size, the end of a phase is marked with a | ||
129 | flag in the packet. The number of packets of data making up one blob may | ||
130 | not exceed 4 billion, however, as this would cause the sequence number to | ||
131 | wrap. | ||
132 | |||
133 | (*) The first four bytes of the request data are the service operation ID. | ||
134 | |||
135 | (*) Security is negotiated on a per-connection basis. The connection is | ||
136 | initiated by the first data packet on it arriving. If security is | ||
137 | requested, the server then issues a "challenge" and then the client | ||
138 | replies with a "response". If the response is successful, the security is | ||
139 | set for the lifetime of that connection, and all subsequent calls made | ||
140 | upon it use that same security. In the event that the server lets a | ||
141 | connection lapse before the client, the security will be renegotiated if | ||
142 | the client uses the connection again. | ||
143 | |||
144 | (*) Calls use ACK packets to handle reliability. Data packets are also | ||
145 | explicitly sequenced per call. | ||
146 | |||
147 | (*) There are two types of positive acknowledgement: hard-ACKs and soft-ACKs. | ||
148 | A hard-ACK indicates to the far side that all the data received to a point | ||
149 | has been received and processed; a soft-ACK indicates that the data has | ||
150 | been received but may yet be discarded and re-requested. The sender may | ||
151 | not discard any transmittable packets until they've been hard-ACK'd. | ||
152 | |||
153 | (*) Reception of a reply data packet implicitly hard-ACK's all the data | ||
154 | packets that make up the request. | ||
155 | |||
156 | (*) An call is complete when the request has been sent, the reply has been | ||
157 | received and the final hard-ACK on the last packet of the reply has | ||
158 | reached the server. | ||
159 | |||
160 | (*) An call may be aborted by either end at any time up to its completion. | ||
161 | |||
162 | |||
163 | ===================== | ||
164 | AF_RXRPC DRIVER MODEL | ||
165 | ===================== | ||
166 | |||
167 | About the AF_RXRPC driver: | ||
168 | |||
169 | (*) The AF_RXRPC protocol transparently uses internal sockets of the transport | ||
170 | protocol to represent transport endpoints. | ||
171 | |||
172 | (*) AF_RXRPC sockets map onto RxRPC connection bundles. Actual RxRPC | ||
173 | connections are handled transparently. One client socket may be used to | ||
174 | make multiple simultaneous calls to the same service. One server socket | ||
175 | may handle calls from many clients. | ||
176 | |||
177 | (*) Additional parallel client connections will be initiated to support extra | ||
178 | concurrent calls, up to a tunable limit. | ||
179 | |||
180 | (*) Each connection is retained for a certain amount of time [tunable] after | ||
181 | the last call currently using it has completed in case a new call is made | ||
182 | that could reuse it. | ||
183 | |||
184 | (*) Each internal UDP socket is retained [tunable] for a certain amount of | ||
185 | time [tunable] after the last connection using it discarded, in case a new | ||
186 | connection is made that could use it. | ||
187 | |||
188 | (*) A client-side connection is only shared between calls if they have have | ||
189 | the same key struct describing their security (and assuming the calls | ||
190 | would otherwise share the connection). Non-secured calls would also be | ||
191 | able to share connections with each other. | ||
192 | |||
193 | (*) A server-side connection is shared if the client says it is. | ||
194 | |||
195 | (*) ACK'ing is handled by the protocol driver automatically, including ping | ||
196 | replying. | ||
197 | |||
198 | (*) SO_KEEPALIVE automatically pings the other side to keep the connection | ||
199 | alive [TODO]. | ||
200 | |||
201 | (*) If an ICMP error is received, all calls affected by that error will be | ||
202 | aborted with an appropriate network error passed through recvmsg(). | ||
203 | |||
204 | |||
205 | Interaction with the user of the RxRPC socket: | ||
206 | |||
207 | (*) A socket is made into a server socket by binding an address with a | ||
208 | non-zero service ID. | ||
209 | |||
210 | (*) In the client, sending a request is achieved with one or more sendmsgs, | ||
211 | followed by the reply being received with one or more recvmsgs. | ||
212 | |||
213 | (*) The first sendmsg for a request to be sent from a client contains a tag to | ||
214 | be used in all other sendmsgs or recvmsgs associated with that call. The | ||
215 | tag is carried in the control data. | ||
216 | |||
217 | (*) connect() is used to supply a default destination address for a client | ||
218 | socket. This may be overridden by supplying an alternate address to the | ||
219 | first sendmsg() of a call (struct msghdr::msg_name). | ||
220 | |||
221 | (*) If connect() is called on an unbound client, a random local port will | ||
222 | bound before the operation takes place. | ||
223 | |||
224 | (*) A server socket may also be used to make client calls. To do this, the | ||
225 | first sendmsg() of the call must specify the target address. The server's | ||
226 | transport endpoint is used to send the packets. | ||
227 | |||
228 | (*) Once the application has received the last message associated with a call, | ||
229 | the tag is guaranteed not to be seen again, and so it can be used to pin | ||
230 | client resources. A new call can then be initiated with the same tag | ||
231 | without fear of interference. | ||
232 | |||
233 | (*) In the server, a request is received with one or more recvmsgs, then the | ||
234 | the reply is transmitted with one or more sendmsgs, and then the final ACK | ||
235 | is received with a last recvmsg. | ||
236 | |||
237 | (*) When sending data for a call, sendmsg is given MSG_MORE if there's more | ||
238 | data to come on that call. | ||
239 | |||
240 | (*) When receiving data for a call, recvmsg flags MSG_MORE if there's more | ||
241 | data to come for that call. | ||
242 | |||
243 | (*) When receiving data or messages for a call, MSG_EOR is flagged by recvmsg | ||
244 | to indicate the terminal message for that call. | ||
245 | |||
246 | (*) A call may be aborted by adding an abort control message to the control | ||
247 | data. Issuing an abort terminates the kernel's use of that call's tag. | ||
248 | Any messages waiting in the receive queue for that call will be discarded. | ||
249 | |||
250 | (*) Aborts, busy notifications and challenge packets are delivered by recvmsg, | ||
251 | and control data messages will be set to indicate the context. Receiving | ||
252 | an abort or a busy message terminates the kernel's use of that call's tag. | ||
253 | |||
254 | (*) The control data part of the msghdr struct is used for a number of things: | ||
255 | |||
256 | (*) The tag of the intended or affected call. | ||
257 | |||
258 | (*) Sending or receiving errors, aborts and busy notifications. | ||
259 | |||
260 | (*) Notifications of incoming calls. | ||
261 | |||
262 | (*) Sending debug requests and receiving debug replies [TODO]. | ||
263 | |||
264 | (*) When the kernel has received and set up an incoming call, it sends a | ||
265 | message to server application to let it know there's a new call awaiting | ||
266 | its acceptance [recvmsg reports a special control message]. The server | ||
267 | application then uses sendmsg to assign a tag to the new call. Once that | ||
268 | is done, the first part of the request data will be delivered by recvmsg. | ||
269 | |||
270 | (*) The server application has to provide the server socket with a keyring of | ||
271 | secret keys corresponding to the security types it permits. When a secure | ||
272 | connection is being set up, the kernel looks up the appropriate secret key | ||
273 | in the keyring and then sends a challenge packet to the client and | ||
274 | receives a response packet. The kernel then checks the authorisation of | ||
275 | the packet and either aborts the connection or sets up the security. | ||
276 | |||
277 | (*) The name of the key a client will use to secure its communications is | ||
278 | nominated by a socket option. | ||
279 | |||
280 | |||
281 | Notes on recvmsg: | ||
282 | |||
283 | (*) If there's a sequence of data messages belonging to a particular call on | ||
284 | the receive queue, then recvmsg will keep working through them until: | ||
285 | |||
286 | (a) it meets the end of that call's received data, | ||
287 | |||
288 | (b) it meets a non-data message, | ||
289 | |||
290 | (c) it meets a message belonging to a different call, or | ||
291 | |||
292 | (d) it fills the user buffer. | ||
293 | |||
294 | If recvmsg is called in blocking mode, it will keep sleeping, awaiting the | ||
295 | reception of further data, until one of the above four conditions is met. | ||
296 | |||
297 | (2) MSG_PEEK operates similarly, but will return immediately if it has put any | ||
298 | data in the buffer rather than sleeping until it can fill the buffer. | ||
299 | |||
300 | (3) If a data message is only partially consumed in filling a user buffer, | ||
301 | then the remainder of that message will be left on the front of the queue | ||
302 | for the next taker. MSG_TRUNC will never be flagged. | ||
303 | |||
304 | (4) If there is more data to be had on a call (it hasn't copied the last byte | ||
305 | of the last data message in that phase yet), then MSG_MORE will be | ||
306 | flagged. | ||
307 | |||
308 | |||
309 | ================ | ||
310 | CONTROL MESSAGES | ||
311 | ================ | ||
312 | |||
313 | AF_RXRPC makes use of control messages in sendmsg() and recvmsg() to multiplex | ||
314 | calls, to invoke certain actions and to report certain conditions. These are: | ||
315 | |||
316 | MESSAGE ID SRT DATA MEANING | ||
317 | ======================= === =========== =============================== | ||
318 | RXRPC_USER_CALL_ID sr- User ID App's call specifier | ||
319 | RXRPC_ABORT srt Abort code Abort code to issue/received | ||
320 | RXRPC_ACK -rt n/a Final ACK received | ||
321 | RXRPC_NET_ERROR -rt error num Network error on call | ||
322 | RXRPC_BUSY -rt n/a Call rejected (server busy) | ||
323 | RXRPC_LOCAL_ERROR -rt error num Local error encountered | ||
324 | RXRPC_NEW_CALL -r- n/a New call received | ||
325 | RXRPC_ACCEPT s-- n/a Accept new call | ||
326 | |||
327 | (SRT = usable in Sendmsg / delivered by Recvmsg / Terminal message) | ||
328 | |||
329 | (*) RXRPC_USER_CALL_ID | ||
330 | |||
331 | This is used to indicate the application's call ID. It's an unsigned long | ||
332 | that the app specifies in the client by attaching it to the first data | ||
333 | message or in the server by passing it in association with an RXRPC_ACCEPT | ||
334 | message. recvmsg() passes it in conjunction with all messages except | ||
335 | those of the RXRPC_NEW_CALL message. | ||
336 | |||
337 | (*) RXRPC_ABORT | ||
338 | |||
339 | This is can be used by an application to abort a call by passing it to | ||
340 | sendmsg, or it can be delivered by recvmsg to indicate a remote abort was | ||
341 | received. Either way, it must be associated with an RXRPC_USER_CALL_ID to | ||
342 | specify the call affected. If an abort is being sent, then error EBADSLT | ||
343 | will be returned if there is no call with that user ID. | ||
344 | |||
345 | (*) RXRPC_ACK | ||
346 | |||
347 | This is delivered to a server application to indicate that the final ACK | ||
348 | of a call was received from the client. It will be associated with an | ||
349 | RXRPC_USER_CALL_ID to indicate the call that's now complete. | ||
350 | |||
351 | (*) RXRPC_NET_ERROR | ||
352 | |||
353 | This is delivered to an application to indicate that an ICMP error message | ||
354 | was encountered in the process of trying to talk to the peer. An | ||
355 | errno-class integer value will be included in the control message data | ||
356 | indicating the problem, and an RXRPC_USER_CALL_ID will indicate the call | ||
357 | affected. | ||
358 | |||
359 | (*) RXRPC_BUSY | ||
360 | |||
361 | This is delivered to a client application to indicate that a call was | ||
362 | rejected by the server due to the server being busy. It will be | ||
363 | associated with an RXRPC_USER_CALL_ID to indicate the rejected call. | ||
364 | |||
365 | (*) RXRPC_LOCAL_ERROR | ||
366 | |||
367 | This is delivered to an application to indicate that a local error was | ||
368 | encountered and that a call has been aborted because of it. An | ||
369 | errno-class integer value will be included in the control message data | ||
370 | indicating the problem, and an RXRPC_USER_CALL_ID will indicate the call | ||
371 | affected. | ||
372 | |||
373 | (*) RXRPC_NEW_CALL | ||
374 | |||
375 | This is delivered to indicate to a server application that a new call has | ||
376 | arrived and is awaiting acceptance. No user ID is associated with this, | ||
377 | as a user ID must subsequently be assigned by doing an RXRPC_ACCEPT. | ||
378 | |||
379 | (*) RXRPC_ACCEPT | ||
380 | |||
381 | This is used by a server application to attempt to accept a call and | ||
382 | assign it a user ID. It should be associated with an RXRPC_USER_CALL_ID | ||
383 | to indicate the user ID to be assigned. If there is no call to be | ||
384 | accepted (it may have timed out, been aborted, etc.), then sendmsg will | ||
385 | return error ENODATA. If the user ID is already in use by another call, | ||
386 | then error EBADSLT will be returned. | ||
387 | |||
388 | |||
389 | ============== | ||
390 | SOCKET OPTIONS | ||
391 | ============== | ||
392 | |||
393 | AF_RXRPC sockets support a few socket options at the SOL_RXRPC level: | ||
394 | |||
395 | (*) RXRPC_SECURITY_KEY | ||
396 | |||
397 | This is used to specify the description of the key to be used. The key is | ||
398 | extracted from the calling process's keyrings with request_key() and | ||
399 | should be of "rxrpc" type. | ||
400 | |||
401 | The optval pointer points to the description string, and optlen indicates | ||
402 | how long the string is, without the NUL terminator. | ||
403 | |||
404 | (*) RXRPC_SECURITY_KEYRING | ||
405 | |||
406 | Similar to above but specifies a keyring of server secret keys to use (key | ||
407 | type "keyring"). See the "Security" section. | ||
408 | |||
409 | (*) RXRPC_EXCLUSIVE_CONNECTION | ||
410 | |||
411 | This is used to request that new connections should be used for each call | ||
412 | made subsequently on this socket. optval should be NULL and optlen 0. | ||
413 | |||
414 | (*) RXRPC_MIN_SECURITY_LEVEL | ||
415 | |||
416 | This is used to specify the minimum security level required for calls on | ||
417 | this socket. optval must point to an int containing one of the following | ||
418 | values: | ||
419 | |||
420 | (a) RXRPC_SECURITY_PLAIN | ||
421 | |||
422 | Encrypted checksum only. | ||
423 | |||
424 | (b) RXRPC_SECURITY_AUTH | ||
425 | |||
426 | Encrypted checksum plus packet padded and first eight bytes of packet | ||
427 | encrypted - which includes the actual packet length. | ||
428 | |||
429 | (c) RXRPC_SECURITY_ENCRYPTED | ||
430 | |||
431 | Encrypted checksum plus entire packet padded and encrypted, including | ||
432 | actual packet length. | ||
433 | |||
434 | |||
435 | ======== | ||
436 | SECURITY | ||
437 | ======== | ||
438 | |||
439 | Currently, only the kerberos 4 equivalent protocol has been implemented | ||
440 | (security index 2 - rxkad). This requires the rxkad module to be loaded and, | ||
441 | on the client, tickets of the appropriate type to be obtained from the AFS | ||
442 | kaserver or the kerberos server and installed as "rxrpc" type keys. This is | ||
443 | normally done using the klog program. An example simple klog program can be | ||
444 | found at: | ||
445 | |||
446 | http://people.redhat.com/~dhowells/rxrpc/klog.c | ||
447 | |||
448 | The payload provided to add_key() on the client should be of the following | ||
449 | form: | ||
450 | |||
451 | struct rxrpc_key_sec2_v1 { | ||
452 | uint16_t security_index; /* 2 */ | ||
453 | uint16_t ticket_length; /* length of ticket[] */ | ||
454 | uint32_t expiry; /* time at which expires */ | ||
455 | uint8_t kvno; /* key version number */ | ||
456 | uint8_t __pad[3]; | ||
457 | uint8_t session_key[8]; /* DES session key */ | ||
458 | uint8_t ticket[0]; /* the encrypted ticket */ | ||
459 | }; | ||
460 | |||
461 | Where the ticket blob is just appended to the above structure. | ||
462 | |||
463 | |||
464 | For the server, keys of type "rxrpc_s" must be made available to the server. | ||
465 | They have a description of "<serviceID>:<securityIndex>" (eg: "52:2" for an | ||
466 | rxkad key for the AFS VL service). When such a key is created, it should be | ||
467 | given the server's secret key as the instantiation data (see the example | ||
468 | below). | ||
469 | |||
470 | add_key("rxrpc_s", "52:2", secret_key, 8, keyring); | ||
471 | |||
472 | A keyring is passed to the server socket by naming it in a sockopt. The server | ||
473 | socket then looks the server secret keys up in this keyring when secure | ||
474 | incoming connections are made. This can be seen in an example program that can | ||
475 | be found at: | ||
476 | |||
477 | http://people.redhat.com/~dhowells/rxrpc/listen.c | ||
478 | |||
479 | |||
480 | ==================== | ||
481 | EXAMPLE CLIENT USAGE | ||
482 | ==================== | ||
483 | |||
484 | A client would issue an operation by: | ||
485 | |||
486 | (1) An RxRPC socket is set up by: | ||
487 | |||
488 | client = socket(AF_RXRPC, SOCK_DGRAM, PF_INET); | ||
489 | |||
490 | Where the third parameter indicates the protocol family of the transport | ||
491 | socket used - usually IPv4 but it can also be IPv6 [TODO]. | ||
492 | |||
493 | (2) A local address can optionally be bound: | ||
494 | |||
495 | struct sockaddr_rxrpc srx = { | ||
496 | .srx_family = AF_RXRPC, | ||
497 | .srx_service = 0, /* we're a client */ | ||
498 | .transport_type = SOCK_DGRAM, /* type of transport socket */ | ||
499 | .transport.sin_family = AF_INET, | ||
500 | .transport.sin_port = htons(7000), /* AFS callback */ | ||
501 | .transport.sin_address = 0, /* all local interfaces */ | ||
502 | }; | ||
503 | bind(client, &srx, sizeof(srx)); | ||
504 | |||
505 | This specifies the local UDP port to be used. If not given, a random | ||
506 | non-privileged port will be used. A UDP port may be shared between | ||
507 | several unrelated RxRPC sockets. Security is handled on a basis of | ||
508 | per-RxRPC virtual connection. | ||
509 | |||
510 | (3) The security is set: | ||
511 | |||
512 | const char *key = "AFS:cambridge.redhat.com"; | ||
513 | setsockopt(client, SOL_RXRPC, RXRPC_SECURITY_KEY, key, strlen(key)); | ||
514 | |||
515 | This issues a request_key() to get the key representing the security | ||
516 | context. The minimum security level can be set: | ||
517 | |||
518 | unsigned int sec = RXRPC_SECURITY_ENCRYPTED; | ||
519 | setsockopt(client, SOL_RXRPC, RXRPC_MIN_SECURITY_LEVEL, | ||
520 | &sec, sizeof(sec)); | ||
521 | |||
522 | (4) The server to be contacted can then be specified (alternatively this can | ||
523 | be done through sendmsg): | ||
524 | |||
525 | struct sockaddr_rxrpc srx = { | ||
526 | .srx_family = AF_RXRPC, | ||
527 | .srx_service = VL_SERVICE_ID, | ||
528 | .transport_type = SOCK_DGRAM, /* type of transport socket */ | ||
529 | .transport.sin_family = AF_INET, | ||
530 | .transport.sin_port = htons(7005), /* AFS volume manager */ | ||
531 | .transport.sin_address = ..., | ||
532 | }; | ||
533 | connect(client, &srx, sizeof(srx)); | ||
534 | |||
535 | (5) The request data should then be posted to the server socket using a series | ||
536 | of sendmsg() calls, each with the following control message attached: | ||
537 | |||
538 | RXRPC_USER_CALL_ID - specifies the user ID for this call | ||
539 | |||
540 | MSG_MORE should be set in msghdr::msg_flags on all but the last part of | ||
541 | the request. Multiple requests may be made simultaneously. | ||
542 | |||
543 | If a call is intended to go to a destination other then the default | ||
544 | specified through connect(), then msghdr::msg_name should be set on the | ||
545 | first request message of that call. | ||
546 | |||
547 | (6) The reply data will then be posted to the server socket for recvmsg() to | ||
548 | pick up. MSG_MORE will be flagged by recvmsg() if there's more reply data | ||
549 | for a particular call to be read. MSG_EOR will be set on the terminal | ||
550 | read for a call. | ||
551 | |||
552 | All data will be delivered with the following control message attached: | ||
553 | |||
554 | RXRPC_USER_CALL_ID - specifies the user ID for this call | ||
555 | |||
556 | If an abort or error occurred, this will be returned in the control data | ||
557 | buffer instead, and MSG_EOR will be flagged to indicate the end of that | ||
558 | call. | ||
559 | |||
560 | |||
561 | ==================== | ||
562 | EXAMPLE SERVER USAGE | ||
563 | ==================== | ||
564 | |||
565 | A server would be set up to accept operations in the following manner: | ||
566 | |||
567 | (1) An RxRPC socket is created by: | ||
568 | |||
569 | server = socket(AF_RXRPC, SOCK_DGRAM, PF_INET); | ||
570 | |||
571 | Where the third parameter indicates the address type of the transport | ||
572 | socket used - usually IPv4. | ||
573 | |||
574 | (2) Security is set up if desired by giving the socket a keyring with server | ||
575 | secret keys in it: | ||
576 | |||
577 | keyring = add_key("keyring", "AFSkeys", NULL, 0, | ||
578 | KEY_SPEC_PROCESS_KEYRING); | ||
579 | |||
580 | const char secret_key[8] = { | ||
581 | 0xa7, 0x83, 0x8a, 0xcb, 0xc7, 0x83, 0xec, 0x94 }; | ||
582 | add_key("rxrpc_s", "52:2", secret_key, 8, keyring); | ||
583 | |||
584 | setsockopt(server, SOL_RXRPC, RXRPC_SECURITY_KEYRING, "AFSkeys", 7); | ||
585 | |||
586 | The keyring can be manipulated after it has been given to the socket. This | ||
587 | permits the server to add more keys, replace keys, etc. whilst it is live. | ||
588 | |||
589 | (2) A local address must then be bound: | ||
590 | |||
591 | struct sockaddr_rxrpc srx = { | ||
592 | .srx_family = AF_RXRPC, | ||
593 | .srx_service = VL_SERVICE_ID, /* RxRPC service ID */ | ||
594 | .transport_type = SOCK_DGRAM, /* type of transport socket */ | ||
595 | .transport.sin_family = AF_INET, | ||
596 | .transport.sin_port = htons(7000), /* AFS callback */ | ||
597 | .transport.sin_address = 0, /* all local interfaces */ | ||
598 | }; | ||
599 | bind(server, &srx, sizeof(srx)); | ||
600 | |||
601 | (3) The server is then set to listen out for incoming calls: | ||
602 | |||
603 | listen(server, 100); | ||
604 | |||
605 | (4) The kernel notifies the server of pending incoming connections by sending | ||
606 | it a message for each. This is received with recvmsg() on the server | ||
607 | socket. It has no data, and has a single dataless control message | ||
608 | attached: | ||
609 | |||
610 | RXRPC_NEW_CALL | ||
611 | |||
612 | The address that can be passed back by recvmsg() at this point should be | ||
613 | ignored since the call for which the message was posted may have gone by | ||
614 | the time it is accepted - in which case the first call still on the queue | ||
615 | will be accepted. | ||
616 | |||
617 | (5) The server then accepts the new call by issuing a sendmsg() with two | ||
618 | pieces of control data and no actual data: | ||
619 | |||
620 | RXRPC_ACCEPT - indicate connection acceptance | ||
621 | RXRPC_USER_CALL_ID - specify user ID for this call | ||
622 | |||
623 | (6) The first request data packet will then be posted to the server socket for | ||
624 | recvmsg() to pick up. At that point, the RxRPC address for the call can | ||
625 | be read from the address fields in the msghdr struct. | ||
626 | |||
627 | Subsequent request data will be posted to the server socket for recvmsg() | ||
628 | to collect as it arrives. All but the last piece of the request data will | ||
629 | be delivered with MSG_MORE flagged. | ||
630 | |||
631 | All data will be delivered with the following control message attached: | ||
632 | |||
633 | RXRPC_USER_CALL_ID - specifies the user ID for this call | ||
634 | |||
635 | (8) The reply data should then be posted to the server socket using a series | ||
636 | of sendmsg() calls, each with the following control messages attached: | ||
637 | |||
638 | RXRPC_USER_CALL_ID - specifies the user ID for this call | ||
639 | |||
640 | MSG_MORE should be set in msghdr::msg_flags on all but the last message | ||
641 | for a particular call. | ||
642 | |||
643 | (9) The final ACK from the client will be posted for retrieval by recvmsg() | ||
644 | when it is received. It will take the form of a dataless message with two | ||
645 | control messages attached: | ||
646 | |||
647 | RXRPC_USER_CALL_ID - specifies the user ID for this call | ||
648 | RXRPC_ACK - indicates final ACK (no data) | ||
649 | |||
650 | MSG_EOR will be flagged to indicate that this is the final message for | ||
651 | this call. | ||
652 | |||
653 | (10) Up to the point the final packet of reply data is sent, the call can be | ||
654 | aborted by calling sendmsg() with a dataless message with the following | ||
655 | control messages attached: | ||
656 | |||
657 | RXRPC_USER_CALL_ID - specifies the user ID for this call | ||
658 | RXRPC_ABORT - indicates abort code (4 byte data) | ||
659 | |||
660 | Any packets waiting in the socket's receive queue will be discarded if | ||
661 | this is issued. | ||
662 | |||
663 | Note that all the communications for a particular service take place through | ||
664 | the one server socket, using control messages on sendmsg() and recvmsg() to | ||
665 | determine the call affected. | ||
666 | |||
667 | |||
668 | ========================= | ||
669 | AF_RXRPC KERNEL INTERFACE | ||
670 | ========================= | ||
671 | |||
672 | The AF_RXRPC module also provides an interface for use by in-kernel utilities | ||
673 | such as the AFS filesystem. This permits such a utility to: | ||
674 | |||
675 | (1) Use different keys directly on individual client calls on one socket | ||
676 | rather than having to open a whole slew of sockets, one for each key it | ||
677 | might want to use. | ||
678 | |||
679 | (2) Avoid having RxRPC call request_key() at the point of issue of a call or | ||
680 | opening of a socket. Instead the utility is responsible for requesting a | ||
681 | key at the appropriate point. AFS, for instance, would do this during VFS | ||
682 | operations such as open() or unlink(). The key is then handed through | ||
683 | when the call is initiated. | ||
684 | |||
685 | (3) Request the use of something other than GFP_KERNEL to allocate memory. | ||
686 | |||
687 | (4) Avoid the overhead of using the recvmsg() call. RxRPC messages can be | ||
688 | intercepted before they get put into the socket Rx queue and the socket | ||
689 | buffers manipulated directly. | ||
690 | |||
691 | To use the RxRPC facility, a kernel utility must still open an AF_RXRPC socket, | ||
692 | bind an addess as appropriate and listen if it's to be a server socket, but | ||
693 | then it passes this to the kernel interface functions. | ||
694 | |||
695 | The kernel interface functions are as follows: | ||
696 | |||
697 | (*) Begin a new client call. | ||
698 | |||
699 | struct rxrpc_call * | ||
700 | rxrpc_kernel_begin_call(struct socket *sock, | ||
701 | struct sockaddr_rxrpc *srx, | ||
702 | struct key *key, | ||
703 | unsigned long user_call_ID, | ||
704 | gfp_t gfp); | ||
705 | |||
706 | This allocates the infrastructure to make a new RxRPC call and assigns | ||
707 | call and connection numbers. The call will be made on the UDP port that | ||
708 | the socket is bound to. The call will go to the destination address of a | ||
709 | connected client socket unless an alternative is supplied (srx is | ||
710 | non-NULL). | ||
711 | |||
712 | If a key is supplied then this will be used to secure the call instead of | ||
713 | the key bound to the socket with the RXRPC_SECURITY_KEY sockopt. Calls | ||
714 | secured in this way will still share connections if at all possible. | ||
715 | |||
716 | The user_call_ID is equivalent to that supplied to sendmsg() in the | ||
717 | control data buffer. It is entirely feasible to use this to point to a | ||
718 | kernel data structure. | ||
719 | |||
720 | If this function is successful, an opaque reference to the RxRPC call is | ||
721 | returned. The caller now holds a reference on this and it must be | ||
722 | properly ended. | ||
723 | |||
724 | (*) End a client call. | ||
725 | |||
726 | void rxrpc_kernel_end_call(struct rxrpc_call *call); | ||
727 | |||
728 | This is used to end a previously begun call. The user_call_ID is expunged | ||
729 | from AF_RXRPC's knowledge and will not be seen again in association with | ||
730 | the specified call. | ||
731 | |||
732 | (*) Send data through a call. | ||
733 | |||
734 | int rxrpc_kernel_send_data(struct rxrpc_call *call, struct msghdr *msg, | ||
735 | size_t len); | ||
736 | |||
737 | This is used to supply either the request part of a client call or the | ||
738 | reply part of a server call. msg.msg_iovlen and msg.msg_iov specify the | ||
739 | data buffers to be used. msg_iov may not be NULL and must point | ||
740 | exclusively to in-kernel virtual addresses. msg.msg_flags may be given | ||
741 | MSG_MORE if there will be subsequent data sends for this call. | ||
742 | |||
743 | The msg must not specify a destination address, control data or any flags | ||
744 | other than MSG_MORE. len is the total amount of data to transmit. | ||
745 | |||
746 | (*) Abort a call. | ||
747 | |||
748 | void rxrpc_kernel_abort_call(struct rxrpc_call *call, u32 abort_code); | ||
749 | |||
750 | This is used to abort a call if it's still in an abortable state. The | ||
751 | abort code specified will be placed in the ABORT message sent. | ||
752 | |||
753 | (*) Intercept received RxRPC messages. | ||
754 | |||
755 | typedef void (*rxrpc_interceptor_t)(struct sock *sk, | ||
756 | unsigned long user_call_ID, | ||
757 | struct sk_buff *skb); | ||
758 | |||
759 | void | ||
760 | rxrpc_kernel_intercept_rx_messages(struct socket *sock, | ||
761 | rxrpc_interceptor_t interceptor); | ||
762 | |||
763 | This installs an interceptor function on the specified AF_RXRPC socket. | ||
764 | All messages that would otherwise wind up in the socket's Rx queue are | ||
765 | then diverted to this function. Note that care must be taken to process | ||
766 | the messages in the right order to maintain DATA message sequentiality. | ||
767 | |||
768 | The interceptor function itself is provided with the address of the socket | ||
769 | and handling the incoming message, the ID assigned by the kernel utility | ||
770 | to the call and the socket buffer containing the message. | ||
771 | |||
772 | The skb->mark field indicates the type of message: | ||
773 | |||
774 | MARK MEANING | ||
775 | =============================== ======================================= | ||
776 | RXRPC_SKB_MARK_DATA Data message | ||
777 | RXRPC_SKB_MARK_FINAL_ACK Final ACK received for an incoming call | ||
778 | RXRPC_SKB_MARK_BUSY Client call rejected as server busy | ||
779 | RXRPC_SKB_MARK_REMOTE_ABORT Call aborted by peer | ||
780 | RXRPC_SKB_MARK_NET_ERROR Network error detected | ||
781 | RXRPC_SKB_MARK_LOCAL_ERROR Local error encountered | ||
782 | RXRPC_SKB_MARK_NEW_CALL New incoming call awaiting acceptance | ||
783 | |||
784 | The remote abort message can be probed with rxrpc_kernel_get_abort_code(). | ||
785 | The two error messages can be probed with rxrpc_kernel_get_error_number(). | ||
786 | A new call can be accepted with rxrpc_kernel_accept_call(). | ||
787 | |||
788 | Data messages can have their contents extracted with the usual bunch of | ||
789 | socket buffer manipulation functions. A data message can be determined to | ||
790 | be the last one in a sequence with rxrpc_kernel_is_data_last(). When a | ||
791 | data message has been used up, rxrpc_kernel_data_delivered() should be | ||
792 | called on it.. | ||
793 | |||
794 | Non-data messages should be handled to rxrpc_kernel_free_skb() to dispose | ||
795 | of. It is possible to get extra refs on all types of message for later | ||
796 | freeing, but this may pin the state of a call until the message is finally | ||
797 | freed. | ||
798 | |||
799 | (*) Accept an incoming call. | ||
800 | |||
801 | struct rxrpc_call * | ||
802 | rxrpc_kernel_accept_call(struct socket *sock, | ||
803 | unsigned long user_call_ID); | ||
804 | |||
805 | This is used to accept an incoming call and to assign it a call ID. This | ||
806 | function is similar to rxrpc_kernel_begin_call() and calls accepted must | ||
807 | be ended in the same way. | ||
808 | |||
809 | If this function is successful, an opaque reference to the RxRPC call is | ||
810 | returned. The caller now holds a reference on this and it must be | ||
811 | properly ended. | ||
812 | |||
813 | (*) Reject an incoming call. | ||
814 | |||
815 | int rxrpc_kernel_reject_call(struct socket *sock); | ||
816 | |||
817 | This is used to reject the first incoming call on the socket's queue with | ||
818 | a BUSY message. -ENODATA is returned if there were no incoming calls. | ||
819 | Other errors may be returned if the call had been aborted (-ECONNABORTED) | ||
820 | or had timed out (-ETIME). | ||
821 | |||
822 | (*) Record the delivery of a data message and free it. | ||
823 | |||
824 | void rxrpc_kernel_data_delivered(struct sk_buff *skb); | ||
825 | |||
826 | This is used to record a data message as having been delivered and to | ||
827 | update the ACK state for the call. The socket buffer will be freed. | ||
828 | |||
829 | (*) Free a message. | ||
830 | |||
831 | void rxrpc_kernel_free_skb(struct sk_buff *skb); | ||
832 | |||
833 | This is used to free a non-DATA socket buffer intercepted from an AF_RXRPC | ||
834 | socket. | ||
835 | |||
836 | (*) Determine if a data message is the last one on a call. | ||
837 | |||
838 | bool rxrpc_kernel_is_data_last(struct sk_buff *skb); | ||
839 | |||
840 | This is used to determine if a socket buffer holds the last data message | ||
841 | to be received for a call (true will be returned if it does, false | ||
842 | if not). | ||
843 | |||
844 | The data message will be part of the reply on a client call and the | ||
845 | request on an incoming call. In the latter case there will be more | ||
846 | messages, but in the former case there will not. | ||
847 | |||
848 | (*) Get the abort code from an abort message. | ||
849 | |||
850 | u32 rxrpc_kernel_get_abort_code(struct sk_buff *skb); | ||
851 | |||
852 | This is used to extract the abort code from a remote abort message. | ||
853 | |||
854 | (*) Get the error number from a local or network error message. | ||
855 | |||
856 | int rxrpc_kernel_get_error_number(struct sk_buff *skb); | ||
857 | |||
858 | This is used to extract the error number from a message indicating either | ||
859 | a local error occurred or a network error occurred. | ||
diff --git a/Documentation/networking/wan-router.txt b/Documentation/networking/wan-router.txt index 653978dcea7f..07dd6d9930a1 100644 --- a/Documentation/networking/wan-router.txt +++ b/Documentation/networking/wan-router.txt | |||
@@ -250,7 +250,6 @@ PRODUCT COMPONENTS AND RELATED FILES | |||
250 | sdladrv.h SDLA support module API definitions | 250 | sdladrv.h SDLA support module API definitions |
251 | sdlasfm.h SDLA firmware module definitions | 251 | sdlasfm.h SDLA firmware module definitions |
252 | if_wanpipe.h WANPIPE Socket definitions | 252 | if_wanpipe.h WANPIPE Socket definitions |
253 | if_wanpipe_common.h WANPIPE Socket/Driver common definitions. | ||
254 | sdlapci.h WANPIPE PCI definitions | 253 | sdlapci.h WANPIPE PCI definitions |
255 | 254 | ||
256 | 255 | ||
diff --git a/Documentation/s390/crypto/crypto-API.txt b/Documentation/s390/crypto/crypto-API.txt deleted file mode 100644 index 71ae6ca9f2c2..000000000000 --- a/Documentation/s390/crypto/crypto-API.txt +++ /dev/null | |||
@@ -1,83 +0,0 @@ | |||
1 | crypto-API support for z990 Message Security Assist (MSA) instructions | ||
2 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
3 | |||
4 | AUTHOR: Thomas Spatzier (tspat@de.ibm.com) | ||
5 | |||
6 | |||
7 | 1. Introduction crypto-API | ||
8 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
9 | See Documentation/crypto/api-intro.txt for an introduction/description of the | ||
10 | kernel crypto API. | ||
11 | According to api-intro.txt support for z990 crypto instructions has been added | ||
12 | in the algorithm api layer of the crypto API. Several files containing z990 | ||
13 | optimized implementations of crypto algorithms are placed in the | ||
14 | arch/s390/crypto directory. | ||
15 | |||
16 | |||
17 | 2. Probing for availability of MSA | ||
18 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
19 | It should be possible to use Kernels with the z990 crypto implementations both | ||
20 | on machines with MSA available and on those without MSA (pre z990 or z990 | ||
21 | without MSA). Therefore a simple probing mechanism has been implemented: | ||
22 | In the init function of each crypto module the availability of MSA and of the | ||
23 | respective crypto algorithm in particular will be tested. If the algorithm is | ||
24 | available the module will load and register its algorithm with the crypto API. | ||
25 | |||
26 | If the respective crypto algorithm is not available, the init function will | ||
27 | return -ENOSYS. In that case a fallback to the standard software implementation | ||
28 | of the crypto algorithm must be taken ( -> the standard crypto modules are | ||
29 | also built when compiling the kernel). | ||
30 | |||
31 | |||
32 | 3. Ensuring z990 crypto module preference | ||
33 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
34 | If z990 crypto instructions are available the optimized modules should be | ||
35 | preferred instead of standard modules. | ||
36 | |||
37 | 3.1. compiled-in modules | ||
38 | ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
39 | For compiled-in modules it has to be ensured that the z990 modules are linked | ||
40 | before the standard crypto modules. Then, on system startup the init functions | ||
41 | of z990 crypto modules will be called first and query for availability of z990 | ||
42 | crypto instructions. If instruction is available, the z990 module will register | ||
43 | its crypto algorithm implementation -> the load of the standard module will fail | ||
44 | since the algorithm is already registered. | ||
45 | If z990 crypto instruction is not available the load of the z990 module will | ||
46 | fail -> the standard module will load and register its algorithm. | ||
47 | |||
48 | 3.2. dynamic modules | ||
49 | ~~~~~~~~~~~~~~~~~~~~ | ||
50 | A system administrator has to take care of giving preference to z990 crypto | ||
51 | modules. If MSA is available appropriate lines have to be added to | ||
52 | /etc/modprobe.conf. | ||
53 | |||
54 | Example: z990 crypto instruction for SHA1 algorithm is available | ||
55 | |||
56 | add the following line to /etc/modprobe.conf (assuming the | ||
57 | z990 crypto modules for SHA1 is called sha1_z990): | ||
58 | |||
59 | alias sha1 sha1_z990 | ||
60 | |||
61 | -> when the sha1 algorithm is requested through the crypto API | ||
62 | (which has a module autoloader) the z990 module will be loaded. | ||
63 | |||
64 | TBD: a userspace module probing mechanism | ||
65 | something like 'probe sha1 sha1_z990 sha1' in modprobe.conf | ||
66 | -> try module sha1_z990, if it fails to load standard module sha1 | ||
67 | the 'probe' statement is currently not supported in modprobe.conf | ||
68 | |||
69 | |||
70 | 4. Currently implemented z990 crypto algorithms | ||
71 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
72 | The following crypto algorithms with z990 MSA support are currently implemented. | ||
73 | The name of each algorithm under which it is registered in crypto API and the | ||
74 | name of the respective module is given in square brackets. | ||
75 | |||
76 | - SHA1 Digest Algorithm [sha1 -> sha1_z990] | ||
77 | - DES Encrypt/Decrypt Algorithm (64bit key) [des -> des_z990] | ||
78 | - Triple DES Encrypt/Decrypt Algorithm (128bit key) [des3_ede128 -> des_z990] | ||
79 | - Triple DES Encrypt/Decrypt Algorithm (192bit key) [des3_ede -> des_z990] | ||
80 | |||
81 | In order to load, for example, the sha1_z990 module when the sha1 algorithm is | ||
82 | requested (see 3.2.) add 'alias sha1 sha1_z990' to /etc/modprobe.conf. | ||
83 | |||
diff --git a/Documentation/s390/zfcpdump.txt b/Documentation/s390/zfcpdump.txt new file mode 100644 index 000000000000..cf45d27c4608 --- /dev/null +++ b/Documentation/s390/zfcpdump.txt | |||
@@ -0,0 +1,87 @@ | |||
1 | s390 SCSI dump tool (zfcpdump) | ||
2 | |||
3 | System z machines (z900 or higher) provide hardware support for creating system | ||
4 | dumps on SCSI disks. The dump process is initiated by booting a dump tool, which | ||
5 | has to create a dump of the current (probably crashed) Linux image. In order to | ||
6 | not overwrite memory of the crashed Linux with data of the dump tool, the | ||
7 | hardware saves some memory plus the register sets of the boot cpu before the | ||
8 | dump tool is loaded. There exists an SCLP hardware interface to obtain the saved | ||
9 | memory afterwards. Currently 32 MB are saved. | ||
10 | |||
11 | This zfcpdump implementation consists of a Linux dump kernel together with | ||
12 | a userspace dump tool, which are loaded together into the saved memory region | ||
13 | below 32 MB. zfcpdump is installed on a SCSI disk using zipl (as contained in | ||
14 | the s390-tools package) to make the device bootable. The operator of a Linux | ||
15 | system can then trigger a SCSI dump by booting the SCSI disk, where zfcpdump | ||
16 | resides on. | ||
17 | |||
18 | The kernel part of zfcpdump is implemented as a debugfs file under "zcore/mem", | ||
19 | which exports memory and registers of the crashed Linux in an s390 | ||
20 | standalone dump format. It can be used in the same way as e.g. /dev/mem. The | ||
21 | dump format defines a 4K header followed by plain uncompressed memory. The | ||
22 | register sets are stored in the prefix pages of the respective cpus. To build a | ||
23 | dump enabled kernel with the zcore driver, the kernel config option | ||
24 | CONFIG_ZFCPDUMP has to be set. When reading from "zcore/mem", the part of | ||
25 | memory, which has been saved by hardware is read by the driver via the SCLP | ||
26 | hardware interface. The second part is just copied from the non overwritten real | ||
27 | memory. | ||
28 | |||
29 | The userspace application of zfcpdump can reside e.g. in an intitramfs or an | ||
30 | initrd. It reads from zcore/mem and writes the system dump to a file on a | ||
31 | SCSI disk. | ||
32 | |||
33 | To build a zfcpdump kernel use the following settings in your kernel | ||
34 | configuration: | ||
35 | * CONFIG_ZFCPDUMP=y | ||
36 | * Enable ZFCP driver | ||
37 | * Enable SCSI driver | ||
38 | * Enable ext2 and ext3 filesystems | ||
39 | * Disable as many features as possible to keep the kernel small. | ||
40 | E.g. network support is not needed at all. | ||
41 | |||
42 | To use the zfcpdump userspace application in an initramfs you have to do the | ||
43 | following: | ||
44 | |||
45 | * Copy the zfcpdump executable somewhere into your Linux tree. | ||
46 | E.g. to "arch/s390/boot/zfcpdump. If you do not want to include | ||
47 | shared libraries, compile the tool with the "-static" gcc option. | ||
48 | * If you want to include e2fsck, add it to your source tree, too. The zfcpdump | ||
49 | application attempts to start /sbin/e2fsck from the ramdisk. | ||
50 | * Use an initramfs config file like the following: | ||
51 | |||
52 | dir /dev 755 0 0 | ||
53 | nod /dev/console 644 0 0 c 5 1 | ||
54 | nod /dev/null 644 0 0 c 1 3 | ||
55 | nod /dev/sda1 644 0 0 b 8 1 | ||
56 | nod /dev/sda2 644 0 0 b 8 2 | ||
57 | nod /dev/sda3 644 0 0 b 8 3 | ||
58 | nod /dev/sda4 644 0 0 b 8 4 | ||
59 | nod /dev/sda5 644 0 0 b 8 5 | ||
60 | nod /dev/sda6 644 0 0 b 8 6 | ||
61 | nod /dev/sda7 644 0 0 b 8 7 | ||
62 | nod /dev/sda8 644 0 0 b 8 8 | ||
63 | nod /dev/sda9 644 0 0 b 8 9 | ||
64 | nod /dev/sda10 644 0 0 b 8 10 | ||
65 | nod /dev/sda11 644 0 0 b 8 11 | ||
66 | nod /dev/sda12 644 0 0 b 8 12 | ||
67 | nod /dev/sda13 644 0 0 b 8 13 | ||
68 | nod /dev/sda14 644 0 0 b 8 14 | ||
69 | nod /dev/sda15 644 0 0 b 8 15 | ||
70 | file /init arch/s390/boot/zfcpdump 755 0 0 | ||
71 | file /sbin/e2fsck arch/s390/boot/e2fsck 755 0 0 | ||
72 | dir /proc 755 0 0 | ||
73 | dir /sys 755 0 0 | ||
74 | dir /mnt 755 0 0 | ||
75 | dir /sbin 755 0 0 | ||
76 | |||
77 | * Issue "make image" to build the zfcpdump image with initramfs. | ||
78 | |||
79 | In a Linux distribution the zfcpdump enabled kernel image must be copied to | ||
80 | /usr/share/zfcpdump/zfcpdump.image, where the s390 zipl tool is looking for the | ||
81 | dump kernel when preparing a SCSI dump disk. | ||
82 | |||
83 | If you use a ramdisk copy it to "/usr/share/zfcpdump/zfcpdump.rd". | ||
84 | |||
85 | For more information on how to use zfcpdump refer to the s390 'Using the Dump | ||
86 | Tools book', which is available from | ||
87 | http://www.ibm.com/developerworks/linux/linux390. | ||
diff --git a/Documentation/usb/usbmon.txt b/Documentation/usb/usbmon.txt index 0f6808abd612..53ae866ae37b 100644 --- a/Documentation/usb/usbmon.txt +++ b/Documentation/usb/usbmon.txt | |||
@@ -16,7 +16,7 @@ situation as with tcpdump. | |||
16 | 16 | ||
17 | Unlike the packet socket, usbmon has an interface which provides traces | 17 | Unlike the packet socket, usbmon has an interface which provides traces |
18 | in a text format. This is used for two purposes. First, it serves as a | 18 | in a text format. This is used for two purposes. First, it serves as a |
19 | common trace exchange format for tools while most sophisticated formats | 19 | common trace exchange format for tools while more sophisticated formats |
20 | are finalized. Second, humans can read it in case tools are not available. | 20 | are finalized. Second, humans can read it in case tools are not available. |
21 | 21 | ||
22 | To collect a raw text trace, execute following steps. | 22 | To collect a raw text trace, execute following steps. |
@@ -34,7 +34,7 @@ if usbmon is built into the kernel. | |||
34 | Verify that bus sockets are present. | 34 | Verify that bus sockets are present. |
35 | 35 | ||
36 | # ls /sys/kernel/debug/usbmon | 36 | # ls /sys/kernel/debug/usbmon |
37 | 1s 1t 2s 2t 3s 3t 4s 4t | 37 | 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u |
38 | # | 38 | # |
39 | 39 | ||
40 | 2. Find which bus connects to the desired device | 40 | 2. Find which bus connects to the desired device |
@@ -54,7 +54,7 @@ Bus=03 means it's bus 3. | |||
54 | 54 | ||
55 | 3. Start 'cat' | 55 | 3. Start 'cat' |
56 | 56 | ||
57 | # cat /sys/kernel/debug/usbmon/3t > /tmp/1.mon.out | 57 | # cat /sys/kernel/debug/usbmon/3u > /tmp/1.mon.out |
58 | 58 | ||
59 | This process will be reading until killed. Naturally, the output can be | 59 | This process will be reading until killed. Naturally, the output can be |
60 | redirected to a desirable location. This is preferred, because it is going | 60 | redirected to a desirable location. This is preferred, because it is going |
@@ -75,46 +75,80 @@ that the file size is not excessive for your favourite editor. | |||
75 | 75 | ||
76 | * Raw text data format | 76 | * Raw text data format |
77 | 77 | ||
78 | The '1t' type data consists of a stream of events, such as URB submission, | 78 | Two formats are supported currently: the original, or '1t' format, and |
79 | the '1u' format. The '1t' format is deprecated in kernel 2.6.21. The '1u' | ||
80 | format adds a few fields, such as ISO frame descriptors, interval, etc. | ||
81 | It produces slightly longer lines, but otherwise is a perfect superset | ||
82 | of '1t' format. | ||
83 | |||
84 | If it is desired to recognize one from the other in a program, look at the | ||
85 | "address" word (see below), where '1u' format adds a bus number. If 2 colons | ||
86 | are present, it's the '1t' format, otherwise '1u'. | ||
87 | |||
88 | Any text format data consists of a stream of events, such as URB submission, | ||
79 | URB callback, submission error. Every event is a text line, which consists | 89 | URB callback, submission error. Every event is a text line, which consists |
80 | of whitespace separated words. The number or position of words may depend | 90 | of whitespace separated words. The number or position of words may depend |
81 | on the event type, but there is a set of words, common for all types. | 91 | on the event type, but there is a set of words, common for all types. |
82 | 92 | ||
83 | Here is the list of words, from left to right: | 93 | Here is the list of words, from left to right: |
94 | |||
84 | - URB Tag. This is used to identify URBs is normally a kernel mode address | 95 | - URB Tag. This is used to identify URBs is normally a kernel mode address |
85 | of the URB structure in hexadecimal. | 96 | of the URB structure in hexadecimal. |
97 | |||
86 | - Timestamp in microseconds, a decimal number. The timestamp's resolution | 98 | - Timestamp in microseconds, a decimal number. The timestamp's resolution |
87 | depends on available clock, and so it can be much worse than a microsecond | 99 | depends on available clock, and so it can be much worse than a microsecond |
88 | (if the implementation uses jiffies, for example). | 100 | (if the implementation uses jiffies, for example). |
101 | |||
89 | - Event Type. This type refers to the format of the event, not URB type. | 102 | - Event Type. This type refers to the format of the event, not URB type. |
90 | Available types are: S - submission, C - callback, E - submission error. | 103 | Available types are: S - submission, C - callback, E - submission error. |
91 | - "Pipe". The pipe concept is deprecated. This is a composite word, used to | 104 | |
92 | be derived from information in pipes. It consists of three fields, separated | 105 | - "Address" word (formerly a "pipe"). It consists of four fields, separated by |
93 | by colons: URB type and direction, Device address, Endpoint number. | 106 | colons: URB type and direction, Bus number, Device address, Endpoint number. |
94 | Type and direction are encoded with two bytes in the following manner: | 107 | Type and direction are encoded with two bytes in the following manner: |
95 | Ci Co Control input and output | 108 | Ci Co Control input and output |
96 | Zi Zo Isochronous input and output | 109 | Zi Zo Isochronous input and output |
97 | Ii Io Interrupt input and output | 110 | Ii Io Interrupt input and output |
98 | Bi Bo Bulk input and output | 111 | Bi Bo Bulk input and output |
99 | Device address and Endpoint number are 3-digit and 2-digit (respectively) | 112 | Bus number, Device address, and Endpoint are decimal numbers, but they may |
100 | decimal numbers, with leading zeroes. | 113 | have leading zeros, for the sake of human readers. |
101 | - URB Status. In most cases, this field contains a number, sometimes negative, | 114 | |
102 | which represents a "status" field of the URB. This field makes no sense for | 115 | - URB Status word. This is either a letter, or several numbers separated |
103 | submissions, but is present anyway to help scripts with parsing. When an | 116 | by colons: URB status, interval, start frame, and error count. Unlike the |
104 | error occurs, the field contains the error code. In case of a submission of | 117 | "address" word, all fields save the status are optional. Interval is printed |
105 | a Control packet, this field contains a Setup Tag instead of an error code. | 118 | only for interrupt and isochronous URBs. Start frame is printed only for |
106 | It is easy to tell whether the Setup Tag is present because it is never a | 119 | isochronous URBs. Error count is printed only for isochronous callback |
107 | number. Thus if scripts find a number in this field, they proceed to read | 120 | events. |
108 | Data Length. If they find something else, like a letter, they read the setup | 121 | |
109 | packet before reading the Data Length. | 122 | The status field is a decimal number, sometimes negative, which represents |
123 | a "status" field of the URB. This field makes no sense for submissions, but | ||
124 | is present anyway to help scripts with parsing. When an error occurs, the | ||
125 | field contains the error code. | ||
126 | |||
127 | In case of a submission of a Control packet, this field contains a Setup Tag | ||
128 | instead of an group of numbers. It is easy to tell whether the Setup Tag is | ||
129 | present because it is never a number. Thus if scripts find a set of numbers | ||
130 | in this word, they proceed to read Data Length (except for isochronous URBs). | ||
131 | If they find something else, like a letter, they read the setup packet before | ||
132 | reading the Data Length or isochronous descriptors. | ||
133 | |||
110 | - Setup packet, if present, consists of 5 words: one of each for bmRequestType, | 134 | - Setup packet, if present, consists of 5 words: one of each for bmRequestType, |
111 | bRequest, wValue, wIndex, wLength, as specified by the USB Specification 2.0. | 135 | bRequest, wValue, wIndex, wLength, as specified by the USB Specification 2.0. |
112 | These words are safe to decode if Setup Tag was 's'. Otherwise, the setup | 136 | These words are safe to decode if Setup Tag was 's'. Otherwise, the setup |
113 | packet was present, but not captured, and the fields contain filler. | 137 | packet was present, but not captured, and the fields contain filler. |
138 | |||
139 | - Number of isochronous frame descriptors and descriptors themselves. | ||
140 | If an Isochronous transfer event has a set of descriptors, a total number | ||
141 | of them in an URB is printed first, then a word per descriptor, up to a | ||
142 | total of 5. The word consists of 3 colon-separated decimal numbers for | ||
143 | status, offset, and length respectively. For submissions, initial length | ||
144 | is reported. For callbacks, actual length is reported. | ||
145 | |||
114 | - Data Length. For submissions, this is the requested length. For callbacks, | 146 | - Data Length. For submissions, this is the requested length. For callbacks, |
115 | this is the actual length. | 147 | this is the actual length. |
148 | |||
116 | - Data tag. The usbmon may not always capture data, even if length is nonzero. | 149 | - Data tag. The usbmon may not always capture data, even if length is nonzero. |
117 | The data words are present only if this tag is '='. | 150 | The data words are present only if this tag is '='. |
151 | |||
118 | - Data words follow, in big endian hexadecimal format. Notice that they are | 152 | - Data words follow, in big endian hexadecimal format. Notice that they are |
119 | not machine words, but really just a byte stream split into words to make | 153 | not machine words, but really just a byte stream split into words to make |
120 | it easier to read. Thus, the last word may contain from one to four bytes. | 154 | it easier to read. Thus, the last word may contain from one to four bytes. |
@@ -153,20 +187,18 @@ class ParsedLine { | |||
153 | } | 187 | } |
154 | } | 188 | } |
155 | 189 | ||
156 | This format may be changed in the future. | ||
157 | |||
158 | Examples: | 190 | Examples: |
159 | 191 | ||
160 | An input control transfer to get a port status. | 192 | An input control transfer to get a port status. |
161 | 193 | ||
162 | d5ea89a0 3575914555 S Ci:001:00 s a3 00 0000 0003 0004 4 < | 194 | d5ea89a0 3575914555 S Ci:1:001:0 s a3 00 0000 0003 0004 4 < |
163 | d5ea89a0 3575914560 C Ci:001:00 0 4 = 01050000 | 195 | d5ea89a0 3575914560 C Ci:1:001:0 0 4 = 01050000 |
164 | 196 | ||
165 | An output bulk transfer to send a SCSI command 0x5E in a 31-byte Bulk wrapper | 197 | An output bulk transfer to send a SCSI command 0x5E in a 31-byte Bulk wrapper |
166 | to a storage device at address 5: | 198 | to a storage device at address 5: |
167 | 199 | ||
168 | dd65f0e8 4128379752 S Bo:005:02 -115 31 = 55534243 5e000000 00000000 00000600 00000000 00000000 00000000 000000 | 200 | dd65f0e8 4128379752 S Bo:1:005:2 -115 31 = 55534243 5e000000 00000000 00000600 00000000 00000000 00000000 000000 |
169 | dd65f0e8 4128379808 C Bo:005:02 0 31 > | 201 | dd65f0e8 4128379808 C Bo:1:005:2 0 31 > |
170 | 202 | ||
171 | * Raw binary format and API | 203 | * Raw binary format and API |
172 | 204 | ||
diff --git a/Documentation/video4linux/CARDLIST.bttv b/Documentation/video4linux/CARDLIST.bttv index fc2fe9bc6713..b60639130a51 100644 --- a/Documentation/video4linux/CARDLIST.bttv +++ b/Documentation/video4linux/CARDLIST.bttv | |||
@@ -143,3 +143,5 @@ | |||
143 | 142 -> Sabrent TV-FM (bttv version) | 143 | 142 -> Sabrent TV-FM (bttv version) |
144 | 143 -> Hauppauge ImpactVCB (bt878) [0070:13eb] | 144 | 143 -> Hauppauge ImpactVCB (bt878) [0070:13eb] |
145 | 144 -> MagicTV | 145 | 144 -> MagicTV |
146 | 145 -> SSAI Security Video Interface [4149:5353] | ||
147 | 146 -> SSAI Ultrasound Video Interface [414a:5353] | ||
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88 index 62e32b49cec9..60f838beb9c8 100644 --- a/Documentation/video4linux/CARDLIST.cx88 +++ b/Documentation/video4linux/CARDLIST.cx88 | |||
@@ -37,7 +37,7 @@ | |||
37 | 36 -> AVerTV 303 (M126) [1461:000a] | 37 | 36 -> AVerTV 303 (M126) [1461:000a] |
38 | 37 -> Hauppauge Nova-S-Plus DVB-S [0070:9201,0070:9202] | 38 | 37 -> Hauppauge Nova-S-Plus DVB-S [0070:9201,0070:9202] |
39 | 38 -> Hauppauge Nova-SE2 DVB-S [0070:9200] | 39 | 38 -> Hauppauge Nova-SE2 DVB-S [0070:9200] |
40 | 39 -> KWorld DVB-S 100 [17de:08b2] | 40 | 39 -> KWorld DVB-S 100 [17de:08b2,1421:0341] |
41 | 40 -> Hauppauge WinTV-HVR1100 DVB-T/Hybrid [0070:9400,0070:9402] | 41 | 40 -> Hauppauge WinTV-HVR1100 DVB-T/Hybrid [0070:9400,0070:9402] |
42 | 41 -> Hauppauge WinTV-HVR1100 DVB-T/Hybrid (Low Profile) [0070:9800,0070:9802] | 42 | 41 -> Hauppauge WinTV-HVR1100 DVB-T/Hybrid (Low Profile) [0070:9800,0070:9802] |
43 | 42 -> digitalnow DNTV Live! DVB-T Pro [1822:0025,1822:0019] | 43 | 42 -> digitalnow DNTV Live! DVB-T Pro [1822:0025,1822:0019] |
diff --git a/Documentation/video4linux/CARDLIST.ivtv b/Documentation/video4linux/CARDLIST.ivtv new file mode 100644 index 000000000000..ddd76a0eb100 --- /dev/null +++ b/Documentation/video4linux/CARDLIST.ivtv | |||
@@ -0,0 +1,18 @@ | |||
1 | 1 -> Hauppauge WinTV PVR-250 | ||
2 | 2 -> Hauppauge WinTV PVR-350 | ||
3 | 3 -> Hauppauge WinTV PVR-150 or PVR-500 | ||
4 | 4 -> AVerMedia M179 [1461:a3ce,1461:a3cf] | ||
5 | 5 -> Yuan MPG600/Kuroutoshikou iTVC16-STVLP [12ab:fff3,12ab:ffff] | ||
6 | 6 -> Yuan MPG160/Kuroutoshikou iTVC15-STVLP [12ab:0000,10fc:40a0] | ||
7 | 7 -> Yuan PG600/DiamondMM PVR-550 [ff92:0070,ffab:0600] | ||
8 | 8 -> Adaptec AVC-2410 [9005:0093] | ||
9 | 9 -> Adaptec AVC-2010 [9005:0092] | ||
10 | 10 -> NAGASE TRANSGEAR 5000TV [1461:bfff] | ||
11 | 11 -> AOpen VA2000MAX-STN6 [0000:ff5f] | ||
12 | 12 -> YUAN MPG600GR/Kuroutoshikou CX23416GYC-STVLP [12ab:0600,fbab:0600,1154:0523] | ||
13 | 13 -> I/O Data GV-MVP/RX [10fc:d01e,10fc:d038,10fc:d039] | ||
14 | 14 -> I/O Data GV-MVP/RX2E [10fc:d025] | ||
15 | 15 -> GOTVIEW PCI DVD (partial support only) [12ab:0600] | ||
16 | 16 -> GOTVIEW PCI DVD2 Deluxe [ffac:0600] | ||
17 | 17 -> Yuan MPC622 [ff01:d998] | ||
18 | 18 -> Digital Cowboy DCT-MTVP1 [1461:bfff] | ||
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134 index a12246a9bf23..d7bb2e2e4d9b 100644 --- a/Documentation/video4linux/CARDLIST.saa7134 +++ b/Documentation/video4linux/CARDLIST.saa7134 | |||
@@ -53,7 +53,7 @@ | |||
53 | 52 -> AverMedia AverTV/305 [1461:2108] | 53 | 52 -> AverMedia AverTV/305 [1461:2108] |
54 | 53 -> ASUS TV-FM 7135 [1043:4845] | 54 | 53 -> ASUS TV-FM 7135 [1043:4845] |
55 | 54 -> LifeView FlyTV Platinum FM / Gold [5168:0214,1489:0214,5168:0304] | 55 | 54 -> LifeView FlyTV Platinum FM / Gold [5168:0214,1489:0214,5168:0304] |
56 | 55 -> LifeView FlyDVB-T DUO [5168:0306] | 56 | 55 -> LifeView FlyDVB-T DUO / MSI TV@nywhere Duo [5168:0306,4E42:0306] |
57 | 56 -> Avermedia AVerTV 307 [1461:a70a] | 57 | 56 -> Avermedia AVerTV 307 [1461:a70a] |
58 | 57 -> Avermedia AVerTV GO 007 FM [1461:f31f] | 58 | 57 -> Avermedia AVerTV GO 007 FM [1461:f31f] |
59 | 58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0351,1421:0370,1421:1370] | 59 | 58 -> ADS Tech Instant TV (saa7135) [1421:0350,1421:0351,1421:0370,1421:1370] |
@@ -76,7 +76,7 @@ | |||
76 | 75 -> AVerMedia AVerTVHD MCE A180 [1461:1044] | 76 | 75 -> AVerMedia AVerTVHD MCE A180 [1461:1044] |
77 | 76 -> SKNet MonsterTV Mobile [1131:4ee9] | 77 | 76 -> SKNet MonsterTV Mobile [1131:4ee9] |
78 | 77 -> Pinnacle PCTV 40i/50i/110i (saa7133) [11bd:002e] | 78 | 77 -> Pinnacle PCTV 40i/50i/110i (saa7133) [11bd:002e] |
79 | 78 -> ASUSTeK P7131 Dual [1043:4862,1043:4876] | 79 | 78 -> ASUSTeK P7131 Dual [1043:4862,1043:4857] |
80 | 79 -> Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B) | 80 | 79 -> Sedna/MuchTV PC TV Cardbus TV/Radio (ITO25 Rev:2B) |
81 | 80 -> ASUS Digimatrix TV [1043:0210] | 81 | 80 -> ASUS Digimatrix TV [1043:0210] |
82 | 81 -> Philips Tiger reference design [1131:2018] | 82 | 81 -> Philips Tiger reference design [1131:2018] |
@@ -107,3 +107,7 @@ | |||
107 | 106 -> Encore ENLTV [1131:2342,1131:2341,3016:2344] | 107 | 106 -> Encore ENLTV [1131:2342,1131:2341,3016:2344] |
108 | 107 -> Encore ENLTV-FM [1131:230f] | 108 | 107 -> Encore ENLTV-FM [1131:230f] |
109 | 108 -> Terratec Cinergy HT PCI [153b:1175] | 109 | 108 -> Terratec Cinergy HT PCI [153b:1175] |
110 | 109 -> Philips Tiger - S Reference design | ||
111 | 110 -> Avermedia M102 [1461:f31e] | ||
112 | 111 -> ASUS P7131 4871 [1043:4871] | ||
113 | 112 -> ASUSTeK P7131 Hybrid [1043:4876] | ||
diff --git a/Documentation/video4linux/CARDLIST.usbvision b/Documentation/video4linux/CARDLIST.usbvision new file mode 100644 index 000000000000..3d6850ef0245 --- /dev/null +++ b/Documentation/video4linux/CARDLIST.usbvision | |||
@@ -0,0 +1,64 @@ | |||
1 | 0 -> Xanboo [0a6f:0400] | ||
2 | 1 -> Belkin USB VideoBus II Adapter [050d:0106] | ||
3 | 2 -> Belkin Components USB VideoBus [050d:0207] | ||
4 | 3 -> Belkin USB VideoBus II [050d:0208] | ||
5 | 4 -> echoFX InterView Lite [0571:0002] | ||
6 | 5 -> USBGear USBG-V1 resp. HAMA USB [0573:0003] | ||
7 | 6 -> D-Link V100 [0573:0400] | ||
8 | 7 -> X10 USB Camera [0573:2000] | ||
9 | 8 -> Hauppauge WinTV USB Live (PAL B/G) [0573:2d00] | ||
10 | 9 -> Hauppauge WinTV USB Live Pro (NTSC M/N) [0573:2d01] | ||
11 | 10 -> Zoran Co. PMD (Nogatech) AV-grabber Manhattan [0573:2101] | ||
12 | 11 -> Nogatech USB-TV (NTSC) FM [0573:4100] | ||
13 | 12 -> PNY USB-TV (NTSC) FM [0573:4110] | ||
14 | 13 -> PixelView PlayTv-USB PRO (PAL) FM [0573:4450] | ||
15 | 14 -> ZTV ZT-721 2.4GHz USB A/V Receiver [0573:4550] | ||
16 | 15 -> Hauppauge WinTV USB (NTSC M/N) [0573:4d00] | ||
17 | 16 -> Hauppauge WinTV USB (PAL B/G) [0573:4d01] | ||
18 | 17 -> Hauppauge WinTV USB (PAL I) [0573:4d02] | ||
19 | 18 -> Hauppauge WinTV USB (PAL/SECAM L) [0573:4d03] | ||
20 | 19 -> Hauppauge WinTV USB (PAL D/K) [0573:4d04] | ||
21 | 20 -> Hauppauge WinTV USB (NTSC FM) [0573:4d10] | ||
22 | 21 -> Hauppauge WinTV USB (PAL B/G FM) [0573:4d11] | ||
23 | 22 -> Hauppauge WinTV USB (PAL I FM) [0573:4d12] | ||
24 | 23 -> Hauppauge WinTV USB (PAL D/K FM) [0573:4d14] | ||
25 | 24 -> Hauppauge WinTV USB Pro (NTSC M/N) [0573:4d2a] | ||
26 | 25 -> Hauppauge WinTV USB Pro (NTSC M/N) V2 [0573:4d2b] | ||
27 | 26 -> Hauppauge WinTV USB Pro (PAL/SECAM B/G/I/D/K/L) [0573:4d2c] | ||
28 | 27 -> Hauppauge WinTV USB Pro (NTSC M/N) V3 [0573:4d20] | ||
29 | 28 -> Hauppauge WinTV USB Pro (PAL B/G) [0573:4d21] | ||
30 | 29 -> Hauppauge WinTV USB Pro (PAL I) [0573:4d22] | ||
31 | 30 -> Hauppauge WinTV USB Pro (PAL/SECAM L) [0573:4d23] | ||
32 | 31 -> Hauppauge WinTV USB Pro (PAL D/K) [0573:4d24] | ||
33 | 32 -> Hauppauge WinTV USB Pro (PAL/SECAM BGDK/I/L) [0573:4d25] | ||
34 | 33 -> Hauppauge WinTV USB Pro (PAL/SECAM BGDK/I/L) V2 [0573:4d26] | ||
35 | 34 -> Hauppauge WinTV USB Pro (PAL B/G) V2 [0573:4d27] | ||
36 | 35 -> Hauppauge WinTV USB Pro (PAL B/G,D/K) [0573:4d28] | ||
37 | 36 -> Hauppauge WinTV USB Pro (PAL I,D/K) [0573:4d29] | ||
38 | 37 -> Hauppauge WinTV USB Pro (NTSC M/N FM) [0573:4d30] | ||
39 | 38 -> Hauppauge WinTV USB Pro (PAL B/G FM) [0573:4d31] | ||
40 | 39 -> Hauppauge WinTV USB Pro (PAL I FM) [0573:4d32] | ||
41 | 40 -> Hauppauge WinTV USB Pro (PAL D/K FM) [0573:4d34] | ||
42 | 41 -> Hauppauge WinTV USB Pro (Temic PAL/SECAM B/G/I/D/K/L FM) [0573:4d35] | ||
43 | 42 -> Hauppauge WinTV USB Pro (Temic PAL B/G FM) [0573:4d36] | ||
44 | 43 -> Hauppauge WinTV USB Pro (PAL/SECAM B/G/I/D/K/L FM) [0573:4d37] | ||
45 | 44 -> Hauppauge WinTV USB Pro (NTSC M/N FM) V2 [0573:4d38] | ||
46 | 45 -> Camtel Technology USB TV Genie Pro FM Model TVB330 [0768:0006] | ||
47 | 46 -> Digital Video Creator I [07d0:0001] | ||
48 | 47 -> Global Village GV-007 (NTSC) [07d0:0002] | ||
49 | 48 -> Dazzle Fusion Model DVC-50 Rev 1 (NTSC) [07d0:0003] | ||
50 | 49 -> Dazzle Fusion Model DVC-80 Rev 1 (PAL) [07d0:0004] | ||
51 | 50 -> Dazzle Fusion Model DVC-90 Rev 1 (SECAM) [07d0:0005] | ||
52 | 51 -> Eskape Labs MyTV2Go [07f8:9104] | ||
53 | 52 -> Pinnacle Studio PCTV USB (PAL) [2304:010d] | ||
54 | 53 -> Pinnacle Studio PCTV USB (SECAM) [2304:0109] | ||
55 | 54 -> Pinnacle Studio PCTV USB (PAL) FM [2304:0110] | ||
56 | 55 -> Miro PCTV USB [2304:0111] | ||
57 | 56 -> Pinnacle Studio PCTV USB (NTSC) FM [2304:0112] | ||
58 | 57 -> Pinnacle Studio PCTV USB (PAL) FM V2 [2304:0210] | ||
59 | 58 -> Pinnacle Studio PCTV USB (NTSC) FM V2 [2304:0212] | ||
60 | 59 -> Pinnacle Studio PCTV USB (PAL) FM V3 [2304:0214] | ||
61 | 60 -> Pinnacle Studio Linx Video input cable (NTSC) [2304:0300] | ||
62 | 61 -> Pinnacle Studio Linx Video input cable (PAL) [2304:0301] | ||
63 | 62 -> Pinnacle PCTV Bungee USB (PAL) FM [2304:0419] | ||
64 | 63 -> Hauppauge WinTv-USB [2400:4200] | ||
diff --git a/Documentation/video4linux/README.ivtv b/Documentation/video4linux/README.ivtv new file mode 100644 index 000000000000..73df22c40bfe --- /dev/null +++ b/Documentation/video4linux/README.ivtv | |||
@@ -0,0 +1,187 @@ | |||
1 | |||
2 | ivtv release notes | ||
3 | ================== | ||
4 | |||
5 | This is a v4l2 device driver for the Conexant cx23415/6 MPEG encoder/decoder. | ||
6 | The cx23415 can do both encoding and decoding, the cx23416 can only do MPEG | ||
7 | encoding. Currently the only card featuring full decoding support is the | ||
8 | Hauppauge PVR-350. | ||
9 | |||
10 | NOTE: this driver requires the latest encoder firmware (version 2.06.039, size | ||
11 | 376836 bytes). Get the firmware from here: | ||
12 | |||
13 | http://dl.ivtvdriver.org/ivtv/firmware/firmware.tar.gz | ||
14 | |||
15 | NOTE: 'normal' TV applications do not work with this driver, you need | ||
16 | an application that can handle MPEG input such as mplayer, xine, MythTV, | ||
17 | etc. | ||
18 | |||
19 | The primary goal of the IVTV project is to provide a "clean room" Linux | ||
20 | Open Source driver implementation for video capture cards based on the | ||
21 | iCompression iTVC15 or Conexant CX23415/CX23416 MPEG Codec. | ||
22 | |||
23 | Features: | ||
24 | * Hardware mpeg2 capture of broadcast video (and sound) via the tuner or | ||
25 | S-Video/Composite and audio line-in. | ||
26 | * Hardware mpeg2 capture of FM radio where hardware support exists | ||
27 | * Supports NTSC, PAL, SECAM with stereo sound | ||
28 | * Supports SAP and bilingual transmissions. | ||
29 | * Supports raw VBI (closed captions and teletext). | ||
30 | * Supports sliced VBI (closed captions and teletext) and is able to insert | ||
31 | this into the captured MPEG stream. | ||
32 | * Supports raw YUV and PCM input. | ||
33 | |||
34 | Additional features for the PVR-350 (CX23415 based): | ||
35 | * Provides hardware mpeg2 playback | ||
36 | * Provides comprehensive OSD (On Screen Display: ie. graphics overlaying the | ||
37 | video signal) | ||
38 | * Provides a framebuffer (allowing X applications to appear on the video | ||
39 | device) (this framebuffer is not yet part of the kernel. In the meantime it | ||
40 | is available from www.ivtvdriver.org). | ||
41 | * Supports raw YUV output. | ||
42 | |||
43 | IMPORTANT: In case of problems first read this page: | ||
44 | http://www.ivtvdriver.org/index.php/Troubleshooting | ||
45 | |||
46 | See also: | ||
47 | |||
48 | Homepage + Wiki | ||
49 | http://www.ivtvdriver.org | ||
50 | |||
51 | IRC | ||
52 | irc://irc.freenode.net/ivtv-dev | ||
53 | |||
54 | ---------------------------------------------------------- | ||
55 | |||
56 | Devices | ||
57 | ======= | ||
58 | |||
59 | A maximum of 12 ivtv boards are allowed at the moment. | ||
60 | |||
61 | Cards that don't have a video output capability (i.e. non PVR350 cards) | ||
62 | lack the vbi8, vbi16, video16 and video48 devices. They also do not | ||
63 | support the framebuffer device /dev/fbx for OSD. | ||
64 | |||
65 | The radio0 device may or may not be present, depending on whether the | ||
66 | card has a radio tuner or not. | ||
67 | |||
68 | Here is a list of the base v4l devices: | ||
69 | crw-rw---- 1 root video 81, 0 Jun 19 22:22 /dev/video0 | ||
70 | crw-rw---- 1 root video 81, 16 Jun 19 22:22 /dev/video16 | ||
71 | crw-rw---- 1 root video 81, 24 Jun 19 22:22 /dev/video24 | ||
72 | crw-rw---- 1 root video 81, 32 Jun 19 22:22 /dev/video32 | ||
73 | crw-rw---- 1 root video 81, 48 Jun 19 22:22 /dev/video48 | ||
74 | crw-rw---- 1 root video 81, 64 Jun 19 22:22 /dev/radio0 | ||
75 | crw-rw---- 1 root video 81, 224 Jun 19 22:22 /dev/vbi0 | ||
76 | crw-rw---- 1 root video 81, 228 Jun 19 22:22 /dev/vbi8 | ||
77 | crw-rw---- 1 root video 81, 232 Jun 19 22:22 /dev/vbi16 | ||
78 | |||
79 | Base devices | ||
80 | ============ | ||
81 | |||
82 | For every extra card you have the numbers increased by one. For example, | ||
83 | /dev/video0 is listed as the 'base' encoding capture device so we have: | ||
84 | |||
85 | /dev/video0 is the encoding capture device for the first card (card 0) | ||
86 | /dev/video1 is the encoding capture device for the second card (card 1) | ||
87 | /dev/video2 is the encoding capture device for the third card (card 2) | ||
88 | |||
89 | Note that if the first card doesn't have a feature (eg no decoder, so no | ||
90 | video16, the second card will still use video17. The simple rule is 'add | ||
91 | the card number to the base device number'. If you have other capture | ||
92 | cards (e.g. WinTV PCI) that are detected first, then you have to tell | ||
93 | the ivtv module about it so that it will start counting at 1 (or 2, or | ||
94 | whatever). Otherwise the device numbers can get confusing. The ivtv | ||
95 | 'ivtv_first_minor' module option can be used for that. | ||
96 | |||
97 | |||
98 | /dev/video0 | ||
99 | The encoding capture device(s). | ||
100 | Read-only. | ||
101 | |||
102 | Reading from this device gets you the MPEG1/2 program stream. | ||
103 | Example: | ||
104 | |||
105 | cat /dev/video0 > my.mpg (you need to hit ctrl-c to exit) | ||
106 | |||
107 | |||
108 | /dev/video16 | ||
109 | The decoder output device(s) | ||
110 | Write-only. Only present if the MPEG decoder (i.e. CX23415) exists. | ||
111 | |||
112 | An mpeg2 stream sent to this device will appear on the selected video | ||
113 | display, audio will appear on the line-out/audio out. It is only | ||
114 | available for cards that support video out. Example: | ||
115 | |||
116 | cat my.mpg >/dev/video16 | ||
117 | |||
118 | |||
119 | /dev/video24 | ||
120 | The raw audio capture device(s). | ||
121 | Read-only | ||
122 | |||
123 | The raw audio PCM stereo stream from the currently selected | ||
124 | tuner or audio line-in. Reading from this device results in a raw | ||
125 | (signed 16 bit Little Endian, 48000 Hz, stereo pcm) capture. | ||
126 | This device only captures audio. This should be replaced by an ALSA | ||
127 | device in the future. | ||
128 | Note that there is no corresponding raw audio output device, this is | ||
129 | not supported in the decoder firmware. | ||
130 | |||
131 | |||
132 | /dev/video32 | ||
133 | The raw video capture device(s) | ||
134 | Read-only | ||
135 | |||
136 | The raw YUV video output from the current video input. The YUV format | ||
137 | is non-standard (V4L2_PIX_FMT_HM12). | ||
138 | |||
139 | Note that the YUV and PCM streams are not synchronized, so they are of | ||
140 | limited use. | ||
141 | |||
142 | |||
143 | /dev/video48 | ||
144 | The raw video display device(s) | ||
145 | Write-only. Only present if the MPEG decoder (i.e. CX23415) exists. | ||
146 | |||
147 | Writes a YUV stream to the decoder of the card. | ||
148 | |||
149 | |||
150 | /dev/radio0 | ||
151 | The radio tuner device(s) | ||
152 | Cannot be read or written. | ||
153 | |||
154 | Used to enable the radio tuner and tune to a frequency. You cannot | ||
155 | read or write audio streams with this device. Once you use this | ||
156 | device to tune the radio, use /dev/video24 to read the raw pcm stream | ||
157 | or /dev/video0 to get an mpeg2 stream with black video. | ||
158 | |||
159 | |||
160 | /dev/vbi0 | ||
161 | The 'vertical blank interval' (Teletext, CC, WSS etc) capture device(s) | ||
162 | Read-only | ||
163 | |||
164 | Captures the raw (or sliced) video data sent during the Vertical Blank | ||
165 | Interval. This data is used to encode teletext, closed captions, VPS, | ||
166 | widescreen signalling, electronic program guide information, and other | ||
167 | services. | ||
168 | |||
169 | |||
170 | /dev/vbi8 | ||
171 | Processed vbi feedback device(s) | ||
172 | Read-only. Only present if the MPEG decoder (i.e. CX23415) exists. | ||
173 | |||
174 | The sliced VBI data embedded in an MPEG stream is reproduced on this | ||
175 | device. So while playing back a recording on /dev/video16, you can | ||
176 | read the embedded VBI data from /dev/vbi8. | ||
177 | |||
178 | |||
179 | /dev/vbi16 | ||
180 | The vbi 'display' device(s) | ||
181 | Write-only. Only present if the MPEG decoder (i.e. CX23415) exists. | ||
182 | |||
183 | Can be used to send sliced VBI data to the video-out connector. | ||
184 | |||
185 | --------------------------------- | ||
186 | |||
187 | Hans Verkuil <hverkuil@xs4all.nl> | ||
diff --git a/Documentation/video4linux/cx2341x/fw-decoder-regs.txt b/Documentation/video4linux/cx2341x/fw-decoder-regs.txt index db2366c634e8..cf52c8f20b9e 100644 --- a/Documentation/video4linux/cx2341x/fw-decoder-regs.txt +++ b/Documentation/video4linux/cx2341x/fw-decoder-regs.txt | |||
@@ -624,11 +624,11 @@ out what values are bad when it hangs. | |||
624 | 2A00 | 624 | 2A00 |
625 | bits 0:2 | 625 | bits 0:2 |
626 | osd colour mode | 626 | osd colour mode |
627 | 000 = 8 bit indexed | ||
627 | 001 = 16 bit (565) | 628 | 001 = 16 bit (565) |
628 | 010 = 15 bit (555) | 629 | 010 = 15 bit (555) |
629 | 011 = 12 bit (444) | 630 | 011 = 12 bit (444) |
630 | 100 = 32 bit (8888) | 631 | 100 = 32 bit (8888) |
631 | 101 = 8 bit indexed | ||
632 | 632 | ||
633 | bits 4:5 | 633 | bits 4:5 |
634 | osd display bpp | 634 | osd display bpp |
@@ -676,9 +676,11 @@ out what values are bad when it hangs. | |||
676 | completely transparent. When using 565, 555 or 444 colour modes, the | 676 | completely transparent. When using 565, 555 or 444 colour modes, the |
677 | colour key is always 16 bits wide. The colour to key on is set in Reg 2A18. | 677 | colour key is always 16 bits wide. The colour to key on is set in Reg 2A18. |
678 | 678 | ||
679 | Local alpha is a per-pixel 256 step transparency, with 0 being transparent | 679 | Local alpha works differently depending on the colour mode. For 32bpp & 8 |
680 | and 255 being solid. This is only available in 32 bit & 8 bit indexed | 680 | bit indexed, local alpha is a per-pixel 256 step transparency, with 0 being |
681 | colour modes. | 681 | transparent and 255 being solid. For the 16bpp modes 555 & 444, the unused |
682 | bit(s) act as a simple transparency switch, with 0 being solid & 1 being | ||
683 | fully transparent. There is no local alpha support for 16bit 565. | ||
682 | 684 | ||
683 | Global alpha is a 256 step transparency that applies to the entire osd, | 685 | Global alpha is a 256 step transparency that applies to the entire osd, |
684 | with 0 being transparent & 255 being solid. | 686 | with 0 being transparent & 255 being solid. |
@@ -811,5 +813,5 @@ out what values are bad when it hangs. | |||
811 | 813 | ||
812 | -------------------------------------------------------------------------------- | 814 | -------------------------------------------------------------------------------- |
813 | 815 | ||
814 | v0.3 - 2 February 2007 - Ian Armstrong (ian@iarmst.demon.co.uk) | 816 | v0.4 - 12 March 2007 - Ian Armstrong (ian@iarmst.demon.co.uk) |
815 | 817 | ||
diff --git a/Documentation/video4linux/cx2341x/fw-encoder-api.txt b/Documentation/video4linux/cx2341x/fw-encoder-api.txt index 242104ce5b61..5dd3109a8b3f 100644 --- a/Documentation/video4linux/cx2341x/fw-encoder-api.txt +++ b/Documentation/video4linux/cx2341x/fw-encoder-api.txt | |||
@@ -663,12 +663,13 @@ Param[0] | |||
663 | 663 | ||
664 | ------------------------------------------------------------------------------- | 664 | ------------------------------------------------------------------------------- |
665 | 665 | ||
666 | Name CX2341X_ENC_UNKNOWN | 666 | Name CX2341X_ENC_SET_VERT_CROP_LINE |
667 | Enum 219/0xDB | 667 | Enum 219/0xDB |
668 | Description | 668 | Description |
669 | Unknown API, it's used by Hauppauge though. | 669 | Something to do with 'Vertical Crop Line' |
670 | Param[0] | 670 | Param[0] |
671 | 0 This is the value Hauppauge uses, Unknown what it means. | 671 | If saa7114 and raw VBI capture and 60 Hz, then set to 10001. |
672 | Else 0. | ||
672 | 673 | ||
673 | ------------------------------------------------------------------------------- | 674 | ------------------------------------------------------------------------------- |
674 | 675 | ||
@@ -682,11 +683,9 @@ Param[0] | |||
682 | Command number: | 683 | Command number: |
683 | 1=set initial SCR value when starting encoding (works). | 684 | 1=set initial SCR value when starting encoding (works). |
684 | 2=set quality mode (apparently some test setting). | 685 | 2=set quality mode (apparently some test setting). |
685 | 3=setup advanced VIM protection handling (supposedly only for the cx23416 | 686 | 3=setup advanced VIM protection handling. |
686 | for raw YUV). | 687 | Always 1 for the cx23416 and 0 for cx23415. |
687 | Actually it looks like this should be 0 for saa7114/5 based card and 1 | 688 | 4=generate DVD compatible PTS timestamps |
688 | for cx25840 based cards. | ||
689 | 4=generate artificial PTS timestamps | ||
690 | 5=USB flush mode | 689 | 5=USB flush mode |
691 | 6=something to do with the quantization matrix | 690 | 6=something to do with the quantization matrix |
692 | 7=set navigation pack insertion for DVD: adds 0xbf (private stream 2) | 691 | 7=set navigation pack insertion for DVD: adds 0xbf (private stream 2) |
@@ -698,7 +697,9 @@ Param[0] | |||
698 | 9=set history parameters of the video input module | 697 | 9=set history parameters of the video input module |
699 | 10=set input field order of VIM | 698 | 10=set input field order of VIM |
700 | 11=set quantization matrix | 699 | 11=set quantization matrix |
701 | 12=reset audio interface | 700 | 12=reset audio interface after channel change or input switch (has no argument). |
701 | Needed for the cx2584x, not needed for the mspx4xx, but it doesn't seem to | ||
702 | do any harm calling it regardless. | ||
702 | 13=set audio volume delay | 703 | 13=set audio volume delay |
703 | 14=set audio delay | 704 | 14=set audio delay |
704 | 705 | ||
diff --git a/Documentation/video4linux/cx2341x/fw-osd-api.txt b/Documentation/video4linux/cx2341x/fw-osd-api.txt index 0a602f3e601b..89c4601042c1 100644 --- a/Documentation/video4linux/cx2341x/fw-osd-api.txt +++ b/Documentation/video4linux/cx2341x/fw-osd-api.txt | |||
@@ -21,7 +21,11 @@ Enum 66/0x42 | |||
21 | Description | 21 | Description |
22 | Query OSD format | 22 | Query OSD format |
23 | Result[0] | 23 | Result[0] |
24 | 0=8bit index, 4=AlphaRGB 8:8:8:8 | 24 | 0=8bit index |
25 | 1=16bit RGB 5:6:5 | ||
26 | 2=16bit ARGB 1:5:5:5 | ||
27 | 3=16bit ARGB 1:4:4:4 | ||
28 | 4=32bit ARGB 8:8:8:8 | ||
25 | 29 | ||
26 | ------------------------------------------------------------------------------- | 30 | ------------------------------------------------------------------------------- |
27 | 31 | ||
@@ -30,7 +34,11 @@ Enum 67/0x43 | |||
30 | Description | 34 | Description |
31 | Assign pixel format | 35 | Assign pixel format |
32 | Param[0] | 36 | Param[0] |
33 | 0=8bit index, 4=AlphaRGB 8:8:8:8 | 37 | 0=8bit index |
38 | 1=16bit RGB 5:6:5 | ||
39 | 2=16bit ARGB 1:5:5:5 | ||
40 | 3=16bit ARGB 1:4:4:4 | ||
41 | 4=32bit ARGB 8:8:8:8 | ||
34 | 42 | ||
35 | ------------------------------------------------------------------------------- | 43 | ------------------------------------------------------------------------------- |
36 | 44 | ||
diff --git a/Documentation/video4linux/sn9c102.txt b/Documentation/video4linux/sn9c102.txt index 2913da3d0878..5fe0ad7dfc20 100644 --- a/Documentation/video4linux/sn9c102.txt +++ b/Documentation/video4linux/sn9c102.txt | |||
@@ -25,7 +25,7 @@ Index | |||
25 | 25 | ||
26 | 1. Copyright | 26 | 1. Copyright |
27 | ============ | 27 | ============ |
28 | Copyright (C) 2004-2006 by Luca Risolia <luca.risolia@studio.unibo.it> | 28 | Copyright (C) 2004-2007 by Luca Risolia <luca.risolia@studio.unibo.it> |
29 | 29 | ||
30 | 30 | ||
31 | 2. Disclaimer | 31 | 2. Disclaimer |
@@ -216,10 +216,10 @@ Description: Debugging information level, from 0 to 3: | |||
216 | 1 = critical errors | 216 | 1 = critical errors |
217 | 2 = significant informations | 217 | 2 = significant informations |
218 | 3 = more verbose messages | 218 | 3 = more verbose messages |
219 | Level 3 is useful for testing only, when only one device | 219 | Level 3 is useful for testing only. It also shows some more |
220 | is used. It also shows some more informations about the | 220 | informations about the hardware being detected. |
221 | hardware being detected. This parameter can be changed at | 221 | This parameter can be changed at runtime thanks to the /sys |
222 | runtime thanks to the /sys filesystem interface. | 222 | filesystem interface. |
223 | Default: 2 | 223 | Default: 2 |
224 | ------------------------------------------------------------------------------- | 224 | ------------------------------------------------------------------------------- |
225 | 225 | ||
@@ -235,7 +235,7 @@ created in the /sys/class/video4linux/videoX directory. You can set the green | |||
235 | channel's gain by writing the desired value to it. The value may range from 0 | 235 | channel's gain by writing the desired value to it. The value may range from 0 |
236 | to 15 for the SN9C101 or SN9C102 bridges, from 0 to 127 for the SN9C103, | 236 | to 15 for the SN9C101 or SN9C102 bridges, from 0 to 127 for the SN9C103, |
237 | SN9C105 and SN9C120 bridges. | 237 | SN9C105 and SN9C120 bridges. |
238 | Similarly, only for the SN9C103, SN9C105 and SN9120 controllers, blue and red | 238 | Similarly, only for the SN9C103, SN9C105 and SN9C120 controllers, blue and red |
239 | gain control files are available in the same directory, for which accepted | 239 | gain control files are available in the same directory, for which accepted |
240 | values may range from 0 to 127. | 240 | values may range from 0 to 127. |
241 | 241 | ||
@@ -402,38 +402,49 @@ Vendor ID Product ID | |||
402 | 0x0c45 0x60bc | 402 | 0x0c45 0x60bc |
403 | 0x0c45 0x60be | 403 | 0x0c45 0x60be |
404 | 0x0c45 0x60c0 | 404 | 0x0c45 0x60c0 |
405 | 0x0c45 0x60c2 | ||
405 | 0x0c45 0x60c8 | 406 | 0x0c45 0x60c8 |
406 | 0x0c45 0x60cc | 407 | 0x0c45 0x60cc |
407 | 0x0c45 0x60ea | 408 | 0x0c45 0x60ea |
408 | 0x0c45 0x60ec | 409 | 0x0c45 0x60ec |
410 | 0x0c45 0x60ef | ||
409 | 0x0c45 0x60fa | 411 | 0x0c45 0x60fa |
410 | 0x0c45 0x60fb | 412 | 0x0c45 0x60fb |
411 | 0x0c45 0x60fc | 413 | 0x0c45 0x60fc |
412 | 0x0c45 0x60fe | 414 | 0x0c45 0x60fe |
415 | 0x0c45 0x6102 | ||
416 | 0x0c45 0x6108 | ||
417 | 0x0c45 0x610f | ||
413 | 0x0c45 0x6130 | 418 | 0x0c45 0x6130 |
419 | 0x0c45 0x6138 | ||
414 | 0x0c45 0x613a | 420 | 0x0c45 0x613a |
415 | 0x0c45 0x613b | 421 | 0x0c45 0x613b |
416 | 0x0c45 0x613c | 422 | 0x0c45 0x613c |
417 | 0x0c45 0x613e | 423 | 0x0c45 0x613e |
418 | 424 | ||
419 | The list above does not imply that all those devices work with this driver: up | 425 | The list above does not imply that all those devices work with this driver: up |
420 | until now only the ones that assemble the following image sensors are | 426 | until now only the ones that assemble the following pairs of SN9C1xx bridges |
421 | supported; kernel messages will always tell you whether this is the case (see | 427 | and image sensors are supported; kernel messages will always tell you whether |
422 | "Module loading" paragraph): | 428 | this is the case (see "Module loading" paragraph): |
423 | 429 | ||
424 | Model Manufacturer | 430 | Image sensor / SN9C1xx bridge | SN9C10[12] SN9C103 SN9C105 SN9C120 |
425 | ----- ------------ | 431 | ------------------------------------------------------------------------------- |
426 | HV7131D Hynix Semiconductor, Inc. | 432 | HV7131D Hynix Semiconductor | Yes No No No |
427 | MI-0343 Micron Technology, Inc. | 433 | HV7131R Hynix Semiconductor | No Yes Yes Yes |
428 | OV7630 OmniVision Technologies, Inc. | 434 | MI-0343 Micron Technology | Yes No No No |
429 | OV7660 OmniVision Technologies, Inc. | 435 | MI-0360 Micron Technology | No Yes No No |
430 | PAS106B PixArt Imaging, Inc. | 436 | OV7630 OmniVision Technologies | Yes Yes No No |
431 | PAS202BCA PixArt Imaging, Inc. | 437 | OV7660 OmniVision Technologies | No No Yes Yes |
432 | PAS202BCB PixArt Imaging, Inc. | 438 | PAS106B PixArt Imaging | Yes No No No |
433 | TAS5110C1B Taiwan Advanced Sensor Corporation | 439 | PAS202B PixArt Imaging | Yes Yes No No |
434 | TAS5130D1B Taiwan Advanced Sensor Corporation | 440 | TAS5110C1B Taiwan Advanced Sensor | Yes No No No |
435 | 441 | TAS5110D Taiwan Advanced Sensor | Yes No No No | |
436 | Some of the available control settings of each image sensor are supported | 442 | TAS5130D1B Taiwan Advanced Sensor | Yes No No No |
443 | |||
444 | "Yes" means that the pair is supported by the driver, while "No" means that the | ||
445 | pair does not exist or is not supported by the driver. | ||
446 | |||
447 | Only some of the available control settings of each image sensor are supported | ||
437 | through the V4L2 interface. | 448 | through the V4L2 interface. |
438 | 449 | ||
439 | Donations of new models for further testing and support would be much | 450 | Donations of new models for further testing and support would be much |
@@ -482,8 +493,8 @@ The SN9C1xx PC Camera Controllers can send images in two possible video | |||
482 | formats over the USB: either native "Sequential RGB Bayer" or compressed. | 493 | formats over the USB: either native "Sequential RGB Bayer" or compressed. |
483 | The compression is used to achieve high frame rates. With regard to the | 494 | The compression is used to achieve high frame rates. With regard to the |
484 | SN9C101, SN9C102 and SN9C103, the compression is based on the Huffman encoding | 495 | SN9C101, SN9C102 and SN9C103, the compression is based on the Huffman encoding |
485 | algorithm described below, while the SN9C105 and SN9C120 the compression is | 496 | algorithm described below, while with regard to the SN9C105 and SN9C120 the |
486 | based on the JPEG standard. | 497 | compression is based on the JPEG standard. |
487 | The current video format may be selected or queried from the user application | 498 | The current video format may be selected or queried from the user application |
488 | by calling the VIDIOC_S_FMT or VIDIOC_G_FMT ioctl's, as described in the V4L2 | 499 | by calling the VIDIOC_S_FMT or VIDIOC_G_FMT ioctl's, as described in the V4L2 |
489 | API specifications. | 500 | API specifications. |
@@ -573,4 +584,5 @@ order): | |||
573 | - Mizuno Takafumi for the donation of a webcam; | 584 | - Mizuno Takafumi for the donation of a webcam; |
574 | - an "anonymous" donator (who didn't want his name to be revealed) for the | 585 | - an "anonymous" donator (who didn't want his name to be revealed) for the |
575 | donation of a webcam. | 586 | donation of a webcam. |
576 | - an anonymous donator for the donation of four webcams. | 587 | - an anonymous donator for the donation of four webcams and two boards with ten |
588 | image sensors. | ||
diff --git a/Documentation/video4linux/zr364xx.txt b/Documentation/video4linux/zr364xx.txt new file mode 100644 index 000000000000..c76992d0ff4d --- /dev/null +++ b/Documentation/video4linux/zr364xx.txt | |||
@@ -0,0 +1,65 @@ | |||
1 | Zoran 364xx based USB webcam module version 0.72 | ||
2 | site: http://royale.zerezo.com/zr364xx/ | ||
3 | mail: royale@zerezo.com | ||
4 | |||
5 | introduction: | ||
6 | This brings support under Linux for the Aiptek PocketDV 3300 in webcam mode. | ||
7 | If you just want to get on your PC the pictures and movies on the camera, you should use the usb-storage module instead. | ||
8 | The driver works with several other cameras in webcam mode (see the list below). | ||
9 | Maybe this code can work for other JPEG/USB cams based on the Coach chips from Zoran? | ||
10 | Possible chipsets are : ZR36430 (ZR36430BGC) and maybe ZR36431, ZR36440, ZR36442... | ||
11 | You can try the experience changing the vendor/product ID values (look at the source code). | ||
12 | You can get these values by looking at /var/log/messages when you plug your camera, or by typing : cat /proc/bus/usb/devices. | ||
13 | If you manage to use your cam with this code, you can send me a mail (royale@zerezo.com) with the name of your cam and a patch if needed. | ||
14 | This is a beta release of the driver. | ||
15 | Since version 0.70, this driver is only compatible with V4L2 API and 2.6.x kernels. | ||
16 | If you need V4L1 or 2.4x kernels support, please use an older version, but the code is not maintained anymore. | ||
17 | Good luck! | ||
18 | |||
19 | install: | ||
20 | In order to use this driver, you must compile it with your kernel. | ||
21 | Location: Device Drivers -> Multimedia devices -> Video For Linux -> Video Capture Adapters -> V4L USB devices | ||
22 | |||
23 | usage: | ||
24 | modprobe zr364xx debug=X mode=Y | ||
25 | - debug : set to 1 to enable verbose debug messages | ||
26 | - mode : 0 = 320x240, 1 = 160x120, 2 = 640x480 | ||
27 | You can then use the camera with V4L2 compatible applications, for example Ekiga. | ||
28 | To capture a single image, try this: dd if=/dev/video0 of=test.jpg bs=1 count=1 | ||
29 | |||
30 | links : | ||
31 | http://mxhaard.free.fr/ (support for many others cams including some Aiptek PocketDV) | ||
32 | http://www.harmwal.nl/pccam880/ (this project also supports cameras based on this chipset) | ||
33 | |||
34 | supported devices: | ||
35 | ------ ------- ----------- ----- | ||
36 | Vendor Product Distributor Model | ||
37 | ------ ------- ----------- ----- | ||
38 | 0x08ca 0x0109 Aiptek PocketDV 3300 | ||
39 | 0x08ca 0x0109 Maxell Maxcam PRO DV3 | ||
40 | 0x041e 0x4024 Creative PC-CAM 880 | ||
41 | 0x0d64 0x0108 Aiptek Fidelity 3200 | ||
42 | 0x0d64 0x0108 Praktica DCZ 1.3 S | ||
43 | 0x0d64 0x0108 Genius Digital Camera (?) | ||
44 | 0x0d64 0x0108 DXG Technology Fashion Cam | ||
45 | 0x0546 0x3187 Polaroid iON 230 | ||
46 | 0x0d64 0x3108 Praktica Exakta DC 2200 | ||
47 | 0x0d64 0x3108 Genius G-Shot D211 | ||
48 | 0x0595 0x4343 Concord Eye-Q Duo 1300 | ||
49 | 0x0595 0x4343 Concord Eye-Q Duo 2000 | ||
50 | 0x0595 0x4343 Fujifilm EX-10 | ||
51 | 0x0595 0x4343 Ricoh RDC-6000 | ||
52 | 0x0595 0x4343 Digitrex DSC 1300 | ||
53 | 0x0595 0x4343 Firstline FDC 2000 | ||
54 | 0x0bb0 0x500d Concord EyeQ Go Wireless | ||
55 | 0x0feb 0x2004 CRS Electronic 3.3 Digital Camera | ||
56 | 0x0feb 0x2004 Packard Bell DSC-300 | ||
57 | 0x055f 0xb500 Mustek MDC 3000 | ||
58 | 0x08ca 0x2062 Aiptek PocketDV 5700 | ||
59 | 0x052b 0x1a18 Chiphead Megapix V12 | ||
60 | 0x04c8 0x0729 Konica Revio 2 | ||
61 | 0x04f2 0xa208 Creative PC-CAM 850 | ||
62 | 0x0784 0x0040 Traveler Slimline X5 | ||
63 | 0x06d6 0x0034 Trust Powerc@m 750 | ||
64 | 0x0a17 0x0062 Pentax Optio 50L | ||
65 | |||
diff --git a/Documentation/x86_64/boot-options.txt b/Documentation/x86_64/boot-options.txt index 625a21db0c2a..85f51e5a749f 100644 --- a/Documentation/x86_64/boot-options.txt +++ b/Documentation/x86_64/boot-options.txt | |||
@@ -293,7 +293,3 @@ Debugging | |||
293 | stuck (default) | 293 | stuck (default) |
294 | 294 | ||
295 | Miscellaneous | 295 | Miscellaneous |
296 | |||
297 | noreplacement Don't replace instructions with more appropriate ones | ||
298 | for the CPU. This may be useful on asymmetric MP systems | ||
299 | where some CPUs have less capabilities than others. | ||