diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2006-03-31 15:34:58 -0500 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-03-31 15:34:58 -0500 |
commit | 86579dd06deecfa6ac88d5e84e4d63c397cd6f6d (patch) | |
tree | b4475d3ccde53015ad84a06e4e55e64591171b75 /Documentation | |
parent | 7ea9ea832212c4a755650f7c7cc1ff0b63292a41 (diff) | |
parent | a0f067802576d4eb4c65d40b8ee7d6ea3c81dd61 (diff) |
Merge branch 'master'
Diffstat (limited to 'Documentation')
102 files changed, 3623 insertions, 1847 deletions
diff --git a/Documentation/BUG-HUNTING b/Documentation/BUG-HUNTING index ca29242dbc38..65b97e1dbf70 100644 --- a/Documentation/BUG-HUNTING +++ b/Documentation/BUG-HUNTING | |||
@@ -1,3 +1,56 @@ | |||
1 | Table of contents | ||
2 | ================= | ||
3 | |||
4 | Last updated: 20 December 2005 | ||
5 | |||
6 | Contents | ||
7 | ======== | ||
8 | |||
9 | - Introduction | ||
10 | - Devices not appearing | ||
11 | - Finding patch that caused a bug | ||
12 | -- Finding using git-bisect | ||
13 | -- Finding it the old way | ||
14 | - Fixing the bug | ||
15 | |||
16 | Introduction | ||
17 | ============ | ||
18 | |||
19 | Always try the latest kernel from kernel.org and build from source. If you are | ||
20 | not confident in doing that please report the bug to your distribution vendor | ||
21 | instead of to a kernel developer. | ||
22 | |||
23 | Finding bugs is not always easy. Have a go though. If you can't find it don't | ||
24 | give up. Report as much as you have found to the relevant maintainer. See | ||
25 | MAINTAINERS for who that is for the subsystem you have worked on. | ||
26 | |||
27 | Before you submit a bug report read REPORTING-BUGS. | ||
28 | |||
29 | Devices not appearing | ||
30 | ===================== | ||
31 | |||
32 | Often this is caused by udev. Check that first before blaming it on the | ||
33 | kernel. | ||
34 | |||
35 | Finding patch that caused a bug | ||
36 | =============================== | ||
37 | |||
38 | |||
39 | |||
40 | Finding using git-bisect | ||
41 | ------------------------ | ||
42 | |||
43 | Using the provided tools with git makes finding bugs easy provided the bug is | ||
44 | reproducible. | ||
45 | |||
46 | Steps to do it: | ||
47 | - start using git for the kernel source | ||
48 | - read the man page for git-bisect | ||
49 | - have fun | ||
50 | |||
51 | Finding it the old way | ||
52 | ---------------------- | ||
53 | |||
1 | [Sat Mar 2 10:32:33 PST 1996 KERNEL_BUG-HOWTO lm@sgi.com (Larry McVoy)] | 54 | [Sat Mar 2 10:32:33 PST 1996 KERNEL_BUG-HOWTO lm@sgi.com (Larry McVoy)] |
2 | 55 | ||
3 | This is how to track down a bug if you know nothing about kernel hacking. | 56 | This is how to track down a bug if you know nothing about kernel hacking. |
@@ -90,3 +143,63 @@ it does work and it lets non-hackers help fix bugs. And it is cool | |||
90 | because Linux snapshots will let you do this - something that you can't | 143 | because Linux snapshots will let you do this - something that you can't |
91 | do with vendor supplied releases. | 144 | do with vendor supplied releases. |
92 | 145 | ||
146 | Fixing the bug | ||
147 | ============== | ||
148 | |||
149 | Nobody is going to tell you how to fix bugs. Seriously. You need to work it | ||
150 | out. But below are some hints on how to use the tools. | ||
151 | |||
152 | To debug a kernel, use objdump and look for the hex offset from the crash | ||
153 | output to find the valid line of code/assembler. Without debug symbols, you | ||
154 | will see the assembler code for the routine shown, but if your kernel has | ||
155 | debug symbols the C code will also be available. (Debug symbols can be enabled | ||
156 | in the kernel hacking menu of the menu configuration.) For example: | ||
157 | |||
158 | objdump -r -S -l --disassemble net/dccp/ipv4.o | ||
159 | |||
160 | NB.: you need to be at the top level of the kernel tree for this to pick up | ||
161 | your C files. | ||
162 | |||
163 | If you don't have access to the code you can also debug on some crash dumps | ||
164 | e.g. crash dump output as shown by Dave Miller. | ||
165 | |||
166 | > EIP is at ip_queue_xmit+0x14/0x4c0 | ||
167 | > ... | ||
168 | > Code: 44 24 04 e8 6f 05 00 00 e9 e8 fe ff ff 8d 76 00 8d bc 27 00 00 | ||
169 | > 00 00 55 57 56 53 81 ec bc 00 00 00 8b ac 24 d0 00 00 00 8b 5d 08 | ||
170 | > <8b> 83 3c 01 00 00 89 44 24 14 8b 45 28 85 c0 89 44 24 18 0f 85 | ||
171 | > | ||
172 | > Put the bytes into a "foo.s" file like this: | ||
173 | > | ||
174 | > .text | ||
175 | > .globl foo | ||
176 | > foo: | ||
177 | > .byte .... /* bytes from Code: part of OOPS dump */ | ||
178 | > | ||
179 | > Compile it with "gcc -c -o foo.o foo.s" then look at the output of | ||
180 | > "objdump --disassemble foo.o". | ||
181 | > | ||
182 | > Output: | ||
183 | > | ||
184 | > ip_queue_xmit: | ||
185 | > push %ebp | ||
186 | > push %edi | ||
187 | > push %esi | ||
188 | > push %ebx | ||
189 | > sub $0xbc, %esp | ||
190 | > mov 0xd0(%esp), %ebp ! %ebp = arg0 (skb) | ||
191 | > mov 0x8(%ebp), %ebx ! %ebx = skb->sk | ||
192 | > mov 0x13c(%ebx), %eax ! %eax = inet_sk(sk)->opt | ||
193 | |||
194 | Another very useful option of the Kernel Hacking section in menuconfig is | ||
195 | Debug memory allocations. This will help you see whether data has been | ||
196 | initialised and not set before use etc. To see the values that get assigned | ||
197 | with this look at mm/slab.c and search for POISON_INUSE. When using this an | ||
198 | Oops will often show the poisoned data instead of zero which is the default. | ||
199 | |||
200 | Once you have worked out a fix please submit it upstream. After all open | ||
201 | source is about sharing what you do and don't you want to be recognised for | ||
202 | your genius? | ||
203 | |||
204 | Please do read Documentation/SubmittingPatches though to help your code get | ||
205 | accepted. | ||
diff --git a/Documentation/Changes b/Documentation/Changes index fe5ae0f55020..b02f476c2973 100644 --- a/Documentation/Changes +++ b/Documentation/Changes | |||
@@ -15,24 +15,6 @@ and therefore owes credit to the same people as that file (Jared Mauch, | |||
15 | Axel Boldt, Alessandro Sigala, and countless other users all over the | 15 | Axel Boldt, Alessandro Sigala, and countless other users all over the |
16 | 'net). | 16 | 'net). |
17 | 17 | ||
18 | The latest revision of this document, in various formats, can always | ||
19 | be found at <http://cyberbuzz.gatech.edu/kaboom/linux/Changes-2.4/>. | ||
20 | |||
21 | Feel free to translate this document. If you do so, please send me a | ||
22 | URL to your translation for inclusion in future revisions of this | ||
23 | document. | ||
24 | |||
25 | Smotrite file <http://oblom.rnc.ru/linux/kernel/Changes.ru>, yavlyaushisya | ||
26 | russkim perevodom dannogo documenta. | ||
27 | |||
28 | Visite <http://www2.adi.uam.es/~ender/tecnico/> para obtener la traducción | ||
29 | al español de este documento en varios formatos. | ||
30 | |||
31 | Eine deutsche Version dieser Datei finden Sie unter | ||
32 | <http://www.stefan-winter.de/Changes-2.4.0.txt>. | ||
33 | |||
34 | Chris Ricker (kaboom@gatech.edu or chris.ricker@genetics.utah.edu). | ||
35 | |||
36 | Current Minimal Requirements | 18 | Current Minimal Requirements |
37 | ============================ | 19 | ============================ |
38 | 20 | ||
diff --git a/Documentation/DMA-mapping.txt b/Documentation/DMA-mapping.txt index 684557474c15..ee4bb73683cd 100644 --- a/Documentation/DMA-mapping.txt +++ b/Documentation/DMA-mapping.txt | |||
@@ -199,6 +199,8 @@ address during PCI bus mastering you might do something like: | |||
199 | "mydev: 24-bit DMA addressing not available.\n"); | 199 | "mydev: 24-bit DMA addressing not available.\n"); |
200 | goto ignore_this_device; | 200 | goto ignore_this_device; |
201 | } | 201 | } |
202 | [Better use DMA_24BIT_MASK instead of 0x00ffffff. | ||
203 | See linux/include/dma-mapping.h for reference.] | ||
202 | 204 | ||
203 | When pci_set_dma_mask() is successful, and returns zero, the PCI layer | 205 | When pci_set_dma_mask() is successful, and returns zero, the PCI layer |
204 | saves away this mask you have provided. The PCI layer will use this | 206 | saves away this mask you have provided. The PCI layer will use this |
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index 1c955883cf58..7d87dd73cbe4 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile | |||
@@ -9,7 +9,7 @@ | |||
9 | DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \ | 9 | DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \ |
10 | kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ | 10 | kernel-hacking.xml kernel-locking.xml deviceiobook.xml \ |
11 | procfs-guide.xml writing_usb_driver.xml \ | 11 | procfs-guide.xml writing_usb_driver.xml \ |
12 | sis900.xml kernel-api.xml journal-api.xml lsm.xml usb.xml \ | 12 | kernel-api.xml journal-api.xml lsm.xml usb.xml \ |
13 | gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml | 13 | gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml |
14 | 14 | ||
15 | ### | 15 | ### |
@@ -28,7 +28,7 @@ PS_METHOD = $(prefer-db2x) | |||
28 | 28 | ||
29 | ### | 29 | ### |
30 | # The targets that may be used. | 30 | # The targets that may be used. |
31 | .PHONY: xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs | 31 | PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs |
32 | 32 | ||
33 | BOOKS := $(addprefix $(obj)/,$(DOCBOOKS)) | 33 | BOOKS := $(addprefix $(obj)/,$(DOCBOOKS)) |
34 | xmldocs: $(BOOKS) | 34 | xmldocs: $(BOOKS) |
@@ -211,3 +211,9 @@ clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) | |||
211 | 211 | ||
212 | #man put files in man subdir - traverse down | 212 | #man put files in man subdir - traverse down |
213 | subdir- := man/ | 213 | subdir- := man/ |
214 | |||
215 | |||
216 | # Declare the contents of the .PHONY variable as phony. We keep that | ||
217 | # information in a variable se we can use it in if_changed and friends. | ||
218 | |||
219 | .PHONY: $(PHONY) | ||
diff --git a/Documentation/DocBook/deviceiobook.tmpl b/Documentation/DocBook/deviceiobook.tmpl index 6f41f2f5c6f6..90ed23df1f68 100644 --- a/Documentation/DocBook/deviceiobook.tmpl +++ b/Documentation/DocBook/deviceiobook.tmpl | |||
@@ -270,25 +270,6 @@ CPU B: spin_unlock_irqrestore(&dev_lock, flags) | |||
270 | </para> | 270 | </para> |
271 | </sect1> | 271 | </sect1> |
272 | 272 | ||
273 | <sect1> | ||
274 | <title>ISA legacy functions</title> | ||
275 | <para> | ||
276 | On older kernels (2.2 and earlier) the ISA bus could be read or | ||
277 | written with these functions and without ioremap being used. This is | ||
278 | no longer true in Linux 2.4. A set of equivalent functions exist for | ||
279 | easy legacy driver porting. The functions available are prefixed | ||
280 | with 'isa_' and are <function>isa_readb</function>, | ||
281 | <function>isa_writeb</function>, <function>isa_readw</function>, | ||
282 | <function>isa_writew</function>, <function>isa_readl</function>, | ||
283 | <function>isa_writel</function>, <function>isa_memcpy_fromio</function> | ||
284 | and <function>isa_memcpy_toio</function> | ||
285 | </para> | ||
286 | <para> | ||
287 | These functions should not be used in new drivers, and will | ||
288 | eventually be going away. | ||
289 | </para> | ||
290 | </sect1> | ||
291 | |||
292 | </chapter> | 273 | </chapter> |
293 | 274 | ||
294 | <chapter> | 275 | <chapter> |
diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl index d260d92089ad..5bcbb6ee3bc0 100644 --- a/Documentation/DocBook/libata.tmpl +++ b/Documentation/DocBook/libata.tmpl | |||
@@ -120,14 +120,27 @@ void (*dev_config) (struct ata_port *, struct ata_device *); | |||
120 | <programlisting> | 120 | <programlisting> |
121 | void (*set_piomode) (struct ata_port *, struct ata_device *); | 121 | void (*set_piomode) (struct ata_port *, struct ata_device *); |
122 | void (*set_dmamode) (struct ata_port *, struct ata_device *); | 122 | void (*set_dmamode) (struct ata_port *, struct ata_device *); |
123 | void (*post_set_mode) (struct ata_port *ap); | 123 | void (*post_set_mode) (struct ata_port *); |
124 | unsigned int (*mode_filter) (struct ata_port *, struct ata_device *, unsigned int); | ||
124 | </programlisting> | 125 | </programlisting> |
125 | 126 | ||
126 | <para> | 127 | <para> |
127 | Hooks called prior to the issue of SET FEATURES - XFER MODE | 128 | Hooks called prior to the issue of SET FEATURES - XFER MODE |
128 | command. dev->pio_mode is guaranteed to be valid when | 129 | command. The optional ->mode_filter() hook is called when libata |
129 | ->set_piomode() is called, and dev->dma_mode is guaranteed to be | 130 | has built a mask of the possible modes. This is passed to the |
130 | valid when ->set_dmamode() is called. ->post_set_mode() is | 131 | ->mode_filter() function which should return a mask of valid modes |
132 | after filtering those unsuitable due to hardware limits. It is not | ||
133 | valid to use this interface to add modes. | ||
134 | </para> | ||
135 | <para> | ||
136 | dev->pio_mode and dev->dma_mode are guaranteed to be valid when | ||
137 | ->set_piomode() and when ->set_dmamode() is called. The timings for | ||
138 | any other drive sharing the cable will also be valid at this point. | ||
139 | That is the library records the decisions for the modes of each | ||
140 | drive on a channel before it attempts to set any of them. | ||
141 | </para> | ||
142 | <para> | ||
143 | ->post_set_mode() is | ||
131 | called unconditionally, after the SET FEATURES - XFER MODE | 144 | called unconditionally, after the SET FEATURES - XFER MODE |
132 | command completes successfully. | 145 | command completes successfully. |
133 | </para> | 146 | </para> |
@@ -230,6 +243,32 @@ void (*dev_select)(struct ata_port *ap, unsigned int device); | |||
230 | 243 | ||
231 | </sect2> | 244 | </sect2> |
232 | 245 | ||
246 | <sect2><title>Private tuning method</title> | ||
247 | <programlisting> | ||
248 | void (*set_mode) (struct ata_port *ap); | ||
249 | </programlisting> | ||
250 | |||
251 | <para> | ||
252 | By default libata performs drive and controller tuning in | ||
253 | accordance with the ATA timing rules and also applies blacklists | ||
254 | and cable limits. Some controllers need special handling and have | ||
255 | custom tuning rules, typically raid controllers that use ATA | ||
256 | commands but do not actually do drive timing. | ||
257 | </para> | ||
258 | |||
259 | <warning> | ||
260 | <para> | ||
261 | This hook should not be used to replace the standard controller | ||
262 | tuning logic when a controller has quirks. Replacing the default | ||
263 | tuning logic in that case would bypass handling for drive and | ||
264 | bridge quirks that may be important to data reliability. If a | ||
265 | controller needs to filter the mode selection it should use the | ||
266 | mode_filter hook instead. | ||
267 | </para> | ||
268 | </warning> | ||
269 | |||
270 | </sect2> | ||
271 | |||
233 | <sect2><title>Reset ATA bus</title> | 272 | <sect2><title>Reset ATA bus</title> |
234 | <programlisting> | 273 | <programlisting> |
235 | void (*phy_reset) (struct ata_port *ap); | 274 | void (*phy_reset) (struct ata_port *ap); |
diff --git a/Documentation/DocBook/sis900.tmpl b/Documentation/DocBook/sis900.tmpl deleted file mode 100644 index 6c2cbac93c3f..000000000000 --- a/Documentation/DocBook/sis900.tmpl +++ /dev/null | |||
@@ -1,585 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" | ||
3 | "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []> | ||
4 | |||
5 | <book id="SiS900Guide"> | ||
6 | |||
7 | <bookinfo> | ||
8 | |||
9 | <title>SiS 900/7016 Fast Ethernet Device Driver</title> | ||
10 | |||
11 | <authorgroup> | ||
12 | <author> | ||
13 | <firstname>Ollie</firstname> | ||
14 | <surname>Lho</surname> | ||
15 | </author> | ||
16 | |||
17 | <author> | ||
18 | <firstname>Lei Chun</firstname> | ||
19 | <surname>Chang</surname> | ||
20 | </author> | ||
21 | </authorgroup> | ||
22 | |||
23 | <edition>Document Revision: 0.3 for SiS900 driver v1.06 & v1.07</edition> | ||
24 | <pubdate>November 16, 2000</pubdate> | ||
25 | |||
26 | <copyright> | ||
27 | <year>1999</year> | ||
28 | <holder>Silicon Integrated System Corp.</holder> | ||
29 | </copyright> | ||
30 | |||
31 | <legalnotice> | ||
32 | <para> | ||
33 | This program is free software; you can redistribute it and/or modify | ||
34 | it under the terms of the GNU General Public License as published by | ||
35 | the Free Software Foundation; either version 2 of the License, or | ||
36 | (at your option) any later version. | ||
37 | </para> | ||
38 | |||
39 | <para> | ||
40 | This program is distributed in the hope that it will be useful, | ||
41 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
42 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
43 | GNU General Public License for more details. | ||
44 | </para> | ||
45 | |||
46 | <para> | ||
47 | You should have received a copy of the GNU General Public License | ||
48 | along with this program; if not, write to the Free Software | ||
49 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
50 | </para> | ||
51 | </legalnotice> | ||
52 | |||
53 | <abstract> | ||
54 | <para> | ||
55 | This document gives some information on installation and usage of SiS 900/7016 | ||
56 | device driver under Linux. | ||
57 | </para> | ||
58 | </abstract> | ||
59 | |||
60 | </bookinfo> | ||
61 | |||
62 | <toc></toc> | ||
63 | |||
64 | <chapter id="intro"> | ||
65 | <title>Introduction</title> | ||
66 | |||
67 | <para> | ||
68 | This document describes the revision 1.06 and 1.07 of SiS 900/7016 Fast Ethernet | ||
69 | device driver under Linux. The driver is developed by Silicon Integrated | ||
70 | System Corp. and distributed freely under the GNU General Public License (GPL). | ||
71 | The driver can be compiled as a loadable module and used under Linux kernel | ||
72 | version 2.2.x. (rev. 1.06) | ||
73 | With minimal changes, the driver can also be used under 2.3.x and 2.4.x kernel | ||
74 | (rev. 1.07), please see | ||
75 | <xref linkend="install"/>. If you are intended to | ||
76 | use the driver for earlier kernels, you are on your own. | ||
77 | </para> | ||
78 | |||
79 | <para> | ||
80 | The driver is tested with usual TCP/IP applications including | ||
81 | FTP, Telnet, Netscape etc. and is used constantly by the developers. | ||
82 | </para> | ||
83 | |||
84 | <para> | ||
85 | Please send all comments/fixes/questions to | ||
86 | <ulink url="mailto:lcchang@sis.com.tw">Lei-Chun Chang</ulink>. | ||
87 | </para> | ||
88 | </chapter> | ||
89 | |||
90 | <chapter id="changes"> | ||
91 | <title>Changes</title> | ||
92 | |||
93 | <para> | ||
94 | Changes made in Revision 1.07 | ||
95 | |||
96 | <orderedlist> | ||
97 | <listitem> | ||
98 | <para> | ||
99 | Separation of sis900.c and sis900.h in order to move most | ||
100 | constant definition to sis900.h (many of those constants were | ||
101 | corrected) | ||
102 | </para> | ||
103 | </listitem> | ||
104 | |||
105 | <listitem> | ||
106 | <para> | ||
107 | Clean up PCI detection, the pci-scan from Donald Becker were not used, | ||
108 | just simple pci_find_*. | ||
109 | </para> | ||
110 | </listitem> | ||
111 | |||
112 | <listitem> | ||
113 | <para> | ||
114 | MII detection is modified to support multiple mii transceiver. | ||
115 | </para> | ||
116 | </listitem> | ||
117 | |||
118 | <listitem> | ||
119 | <para> | ||
120 | Bugs in read_eeprom, mdio_* were removed. | ||
121 | </para> | ||
122 | </listitem> | ||
123 | |||
124 | <listitem> | ||
125 | <para> | ||
126 | Lot of sis900 irrelevant comments were removed/changed and | ||
127 | more comments were added to reflect the real situation. | ||
128 | </para> | ||
129 | </listitem> | ||
130 | |||
131 | <listitem> | ||
132 | <para> | ||
133 | Clean up of physical/virtual address space mess in buffer | ||
134 | descriptors. | ||
135 | </para> | ||
136 | </listitem> | ||
137 | |||
138 | <listitem> | ||
139 | <para> | ||
140 | Better transmit/receive error handling. | ||
141 | </para> | ||
142 | </listitem> | ||
143 | |||
144 | <listitem> | ||
145 | <para> | ||
146 | The driver now uses zero-copy single buffer management | ||
147 | scheme to improve performance. | ||
148 | </para> | ||
149 | </listitem> | ||
150 | |||
151 | <listitem> | ||
152 | <para> | ||
153 | Names of variables were changed to be more consistent. | ||
154 | </para> | ||
155 | </listitem> | ||
156 | |||
157 | <listitem> | ||
158 | <para> | ||
159 | Clean up of auo-negotiation and timer code. | ||
160 | </para> | ||
161 | </listitem> | ||
162 | |||
163 | <listitem> | ||
164 | <para> | ||
165 | Automatic detection and change of PHY on the fly. | ||
166 | </para> | ||
167 | </listitem> | ||
168 | |||
169 | <listitem> | ||
170 | <para> | ||
171 | Bug in mac probing fixed. | ||
172 | </para> | ||
173 | </listitem> | ||
174 | |||
175 | <listitem> | ||
176 | <para> | ||
177 | Fix 630E equalier problem by modifying the equalizer workaround rule. | ||
178 | </para> | ||
179 | </listitem> | ||
180 | |||
181 | <listitem> | ||
182 | <para> | ||
183 | Support for ICS1893 10/100 Interated PHYceiver. | ||
184 | </para> | ||
185 | </listitem> | ||
186 | |||
187 | <listitem> | ||
188 | <para> | ||
189 | Support for media select by ifconfig. | ||
190 | </para> | ||
191 | </listitem> | ||
192 | |||
193 | <listitem> | ||
194 | <para> | ||
195 | Added kernel-doc extratable documentation. | ||
196 | </para> | ||
197 | </listitem> | ||
198 | |||
199 | </orderedlist> | ||
200 | </para> | ||
201 | </chapter> | ||
202 | |||
203 | <chapter id="tested"> | ||
204 | <title>Tested Environment</title> | ||
205 | |||
206 | <para> | ||
207 | This driver is developed on the following hardware | ||
208 | |||
209 | <itemizedlist> | ||
210 | <listitem> | ||
211 | |||
212 | <para> | ||
213 | Intel Celeron 500 with SiS 630 (rev 02) chipset | ||
214 | </para> | ||
215 | </listitem> | ||
216 | <listitem> | ||
217 | |||
218 | <para> | ||
219 | SiS 900 (rev 01) and SiS 7016/7014 Fast Ethernet Card | ||
220 | </para> | ||
221 | </listitem> | ||
222 | |||
223 | </itemizedlist> | ||
224 | |||
225 | and tested with these software environments | ||
226 | |||
227 | <itemizedlist> | ||
228 | <listitem> | ||
229 | |||
230 | <para> | ||
231 | Red Hat Linux version 6.2 | ||
232 | </para> | ||
233 | </listitem> | ||
234 | <listitem> | ||
235 | |||
236 | <para> | ||
237 | Linux kernel version 2.4.0 | ||
238 | </para> | ||
239 | </listitem> | ||
240 | <listitem> | ||
241 | |||
242 | <para> | ||
243 | Netscape version 4.6 | ||
244 | </para> | ||
245 | </listitem> | ||
246 | <listitem> | ||
247 | |||
248 | <para> | ||
249 | NcFTP 3.0.0 beta 18 | ||
250 | </para> | ||
251 | </listitem> | ||
252 | <listitem> | ||
253 | |||
254 | <para> | ||
255 | Samba version 2.0.3 | ||
256 | </para> | ||
257 | </listitem> | ||
258 | |||
259 | </itemizedlist> | ||
260 | |||
261 | </para> | ||
262 | |||
263 | </chapter> | ||
264 | |||
265 | <chapter id="files"> | ||
266 | <title>Files in This Package</title> | ||
267 | |||
268 | <para> | ||
269 | In the package you can find these files: | ||
270 | </para> | ||
271 | |||
272 | <para> | ||
273 | <variablelist> | ||
274 | |||
275 | <varlistentry> | ||
276 | <term>sis900.c</term> | ||
277 | <listitem> | ||
278 | <para> | ||
279 | Driver source file in C | ||
280 | </para> | ||
281 | </listitem> | ||
282 | </varlistentry> | ||
283 | |||
284 | <varlistentry> | ||
285 | <term>sis900.h</term> | ||
286 | <listitem> | ||
287 | <para> | ||
288 | Header file for sis900.c | ||
289 | </para> | ||
290 | </listitem> | ||
291 | </varlistentry> | ||
292 | |||
293 | <varlistentry> | ||
294 | <term>sis900.sgml</term> | ||
295 | <listitem> | ||
296 | <para> | ||
297 | DocBook SGML source of the document | ||
298 | </para> | ||
299 | </listitem> | ||
300 | </varlistentry> | ||
301 | |||
302 | <varlistentry> | ||
303 | <term>sis900.txt</term> | ||
304 | <listitem> | ||
305 | <para> | ||
306 | Driver document in plain text | ||
307 | </para> | ||
308 | </listitem> | ||
309 | </varlistentry> | ||
310 | |||
311 | </variablelist> | ||
312 | </para> | ||
313 | </chapter> | ||
314 | |||
315 | <chapter id="install"> | ||
316 | <title>Installation</title> | ||
317 | |||
318 | <para> | ||
319 | Silicon Integrated System Corp. is cooperating closely with core Linux Kernel | ||
320 | developers. The revisions of SiS 900 driver are distributed by the usuall channels | ||
321 | for kernel tar files and patches. Those kernel tar files for official kernel and | ||
322 | patches for kernel pre-release can be download at | ||
323 | <ulink url="http://ftp.kernel.org/pub/linux/kernel/">official kernel ftp site</ulink> | ||
324 | and its mirrors. | ||
325 | The 1.06 revision can be found in kernel version later than 2.3.15 and pre-2.2.14, | ||
326 | and 1.07 revision can be found in kernel version 2.4.0. | ||
327 | If you have no prior experience in networking under Linux, please read | ||
328 | <ulink url="http://www.tldp.org/">Ethernet HOWTO</ulink> and | ||
329 | <ulink url="http://www.tldp.org/">Networking HOWTO</ulink> available from | ||
330 | Linux Documentation Project (LDP). | ||
331 | </para> | ||
332 | |||
333 | <para> | ||
334 | The driver is bundled in release later than 2.2.11 and 2.3.15 so this | ||
335 | is the most easy case. | ||
336 | Be sure you have the appropriate packages for compiling kernel source. | ||
337 | Those packages are listed in Document/Changes in kernel source | ||
338 | distribution. If you have to install the driver other than those bundled | ||
339 | in kernel release, you should have your driver file | ||
340 | <filename>sis900.c</filename> and <filename>sis900.h</filename> | ||
341 | copied into <filename class="directory">/usr/src/linux/drivers/net/</filename> first. | ||
342 | There are two alternative ways to install the driver | ||
343 | </para> | ||
344 | |||
345 | <sect1> | ||
346 | <title>Building the driver as loadable module</title> | ||
347 | |||
348 | <para> | ||
349 | To build the driver as a loadable kernel module you have to reconfigure | ||
350 | the kernel to activate network support by | ||
351 | </para> | ||
352 | |||
353 | <para><screen> | ||
354 | make menuconfig | ||
355 | </screen></para> | ||
356 | |||
357 | <para> | ||
358 | Choose <quote>Loadable module support ---></quote>, | ||
359 | then select <quote>Enable loadable module support</quote>. | ||
360 | </para> | ||
361 | |||
362 | <para> | ||
363 | Choose <quote>Network Device Support ---></quote>, select | ||
364 | <quote>Ethernet (10 or 100Mbit)</quote>. | ||
365 | Then select <quote>EISA, VLB, PCI and on board controllers</quote>, | ||
366 | and choose <quote>SiS 900/7016 PCI Fast Ethernet Adapter support</quote> | ||
367 | to <quote>M</quote>. | ||
368 | </para> | ||
369 | |||
370 | <para> | ||
371 | After reconfiguring the kernel, you can make the driver module by | ||
372 | </para> | ||
373 | |||
374 | <para><screen> | ||
375 | make modules | ||
376 | </screen></para> | ||
377 | |||
378 | <para> | ||
379 | The driver should be compiled with no errors. After compiling the driver, | ||
380 | the driver can be installed to proper place by | ||
381 | </para> | ||
382 | |||
383 | <para><screen> | ||
384 | make modules_install | ||
385 | </screen></para> | ||
386 | |||
387 | <para> | ||
388 | Load the driver into kernel by | ||
389 | </para> | ||
390 | |||
391 | <para><screen> | ||
392 | insmod sis900 | ||
393 | </screen></para> | ||
394 | |||
395 | <para> | ||
396 | When loading the driver into memory, some information message can be view by | ||
397 | </para> | ||
398 | |||
399 | <para> | ||
400 | <screen> | ||
401 | dmesg | ||
402 | </screen> | ||
403 | |||
404 | or | ||
405 | |||
406 | <screen> | ||
407 | cat /var/log/message | ||
408 | </screen> | ||
409 | </para> | ||
410 | |||
411 | <para> | ||
412 | If the driver is loaded properly you will have messages similar to this: | ||
413 | </para> | ||
414 | |||
415 | <para><screen> | ||
416 | sis900.c: v1.07.06 11/07/2000 | ||
417 | eth0: SiS 900 PCI Fast Ethernet at 0xd000, IRQ 10, 00:00:e8:83:7f:a4. | ||
418 | eth0: SiS 900 Internal MII PHY transceiver found at address 1. | ||
419 | eth0: Using SiS 900 Internal MII PHY as default | ||
420 | </screen></para> | ||
421 | |||
422 | <para> | ||
423 | showing the version of the driver and the results of probing routine. | ||
424 | </para> | ||
425 | |||
426 | <para> | ||
427 | Once the driver is loaded, network can be brought up by | ||
428 | </para> | ||
429 | |||
430 | <para><screen> | ||
431 | /sbin/ifconfig eth0 IPADDR broadcast BROADCAST netmask NETMASK media TYPE | ||
432 | </screen></para> | ||
433 | |||
434 | <para> | ||
435 | where IPADDR, BROADCAST, NETMASK are your IP address, broadcast address and | ||
436 | netmask respectively. TYPE is used to set medium type used by the device. | ||
437 | Typical values are "10baseT"(twisted-pair 10Mbps Ethernet) or "100baseT" | ||
438 | (twisted-pair 100Mbps Ethernet). For more information on how to configure | ||
439 | network interface, please refer to | ||
440 | <ulink url="http://www.tldp.org/">Networking HOWTO</ulink>. | ||
441 | </para> | ||
442 | |||
443 | <para> | ||
444 | The link status is also shown by kernel messages. For example, after the | ||
445 | network interface is activated, you may have the message: | ||
446 | </para> | ||
447 | |||
448 | <para><screen> | ||
449 | eth0: Media Link On 100mbps full-duplex | ||
450 | </screen></para> | ||
451 | |||
452 | <para> | ||
453 | If you try to unplug the twist pair (TP) cable you will get | ||
454 | </para> | ||
455 | |||
456 | <para><screen> | ||
457 | eth0: Media Link Off | ||
458 | </screen></para> | ||
459 | |||
460 | <para> | ||
461 | indicating that the link is failed. | ||
462 | </para> | ||
463 | </sect1> | ||
464 | |||
465 | <sect1> | ||
466 | <title>Building the driver into kernel</title> | ||
467 | |||
468 | <para> | ||
469 | If you want to make the driver into kernel, choose <quote>Y</quote> | ||
470 | rather than <quote>M</quote> on | ||
471 | <quote>SiS 900/7016 PCI Fast Ethernet Adapter support</quote> | ||
472 | when configuring the kernel. Build the kernel image in the usual way | ||
473 | </para> | ||
474 | |||
475 | <para><screen> | ||
476 | make clean | ||
477 | |||
478 | make bzlilo | ||
479 | </screen></para> | ||
480 | |||
481 | <para> | ||
482 | Next time the system reboot, you have the driver in memory. | ||
483 | </para> | ||
484 | |||
485 | </sect1> | ||
486 | </chapter> | ||
487 | |||
488 | <chapter id="problems"> | ||
489 | <title>Known Problems and Bugs</title> | ||
490 | |||
491 | <para> | ||
492 | There are some known problems and bugs. If you find any other bugs please | ||
493 | mail to <ulink url="mailto:lcchang@sis.com.tw">lcchang@sis.com.tw</ulink> | ||
494 | |||
495 | <orderedlist> | ||
496 | |||
497 | <listitem> | ||
498 | <para> | ||
499 | AM79C901 HomePNA PHY is not thoroughly tested, there may be some | ||
500 | bugs in the <quote>on the fly</quote> change of transceiver. | ||
501 | </para> | ||
502 | </listitem> | ||
503 | |||
504 | <listitem> | ||
505 | <para> | ||
506 | A bug is hidden somewhere in the receive buffer management code, | ||
507 | the bug causes NULL pointer reference in the kernel. This fault is | ||
508 | caught before bad things happen and reported with the message: | ||
509 | |||
510 | <computeroutput> | ||
511 | eth0: NULL pointer encountered in Rx ring, skipping | ||
512 | </computeroutput> | ||
513 | |||
514 | which can be viewed with <literal remap="tt">dmesg</literal> or | ||
515 | <literal remap="tt">cat /var/log/message</literal>. | ||
516 | </para> | ||
517 | </listitem> | ||
518 | |||
519 | <listitem> | ||
520 | <para> | ||
521 | The media type change from 10Mbps to 100Mbps twisted-pair ethernet | ||
522 | by ifconfig causes the media link down. | ||
523 | </para> | ||
524 | </listitem> | ||
525 | |||
526 | </orderedlist> | ||
527 | </para> | ||
528 | </chapter> | ||
529 | |||
530 | <chapter id="RHistory"> | ||
531 | <title>Revision History</title> | ||
532 | |||
533 | <para> | ||
534 | <itemizedlist> | ||
535 | |||
536 | <listitem> | ||
537 | <para> | ||
538 | November 13, 2000, Revision 1.07, seventh release, 630E problem fixed | ||
539 | and further clean up. | ||
540 | </para> | ||
541 | </listitem> | ||
542 | |||
543 | <listitem> | ||
544 | <para> | ||
545 | November 4, 1999, Revision 1.06, Second release, lots of clean up | ||
546 | and optimization. | ||
547 | </para> | ||
548 | </listitem> | ||
549 | |||
550 | <listitem> | ||
551 | <para> | ||
552 | August 8, 1999, Revision 1.05, Initial Public Release | ||
553 | </para> | ||
554 | </listitem> | ||
555 | |||
556 | </itemizedlist> | ||
557 | </para> | ||
558 | </chapter> | ||
559 | |||
560 | <chapter id="acknowledgements"> | ||
561 | <title>Acknowledgements</title> | ||
562 | |||
563 | <para> | ||
564 | This driver was originally derived form | ||
565 | <ulink url="mailto:becker@cesdis1.gsfc.nasa.gov">Donald Becker</ulink>'s | ||
566 | <ulink url="ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/kern-2.3/pci-skeleton.c" | ||
567 | >pci-skeleton</ulink> and | ||
568 | <ulink url="ftp://cesdis.gsfc.nasa.gov/pub/linux/drivers/kern-2.3/rtl8139.c" | ||
569 | >rtl8139</ulink> drivers. Donald also provided various suggestion | ||
570 | regarded with improvements made in revision 1.06. | ||
571 | </para> | ||
572 | |||
573 | <para> | ||
574 | The 1.05 revision was created by | ||
575 | <ulink url="mailto:cmhuang@sis.com.tw">Jim Huang</ulink>, AMD 79c901 | ||
576 | support was added by <ulink url="mailto:lcs@sis.com.tw">Chin-Shan Li</ulink>. | ||
577 | </para> | ||
578 | </chapter> | ||
579 | |||
580 | <chapter id="functions"> | ||
581 | <title>List of Functions</title> | ||
582 | !Idrivers/net/sis900.c | ||
583 | </chapter> | ||
584 | |||
585 | </book> | ||
diff --git a/Documentation/RCU/whatisRCU.txt b/Documentation/RCU/whatisRCU.txt index 5ed85af88789..07cb93b82ba9 100644 --- a/Documentation/RCU/whatisRCU.txt +++ b/Documentation/RCU/whatisRCU.txt | |||
@@ -360,7 +360,7 @@ uses of RCU may be found in listRCU.txt, arrayRCU.txt, and NMI-RCU.txt. | |||
360 | struct foo *new_fp; | 360 | struct foo *new_fp; |
361 | struct foo *old_fp; | 361 | struct foo *old_fp; |
362 | 362 | ||
363 | new_fp = kmalloc(sizeof(*fp), GFP_KERNEL); | 363 | new_fp = kmalloc(sizeof(*new_fp), GFP_KERNEL); |
364 | spin_lock(&foo_mutex); | 364 | spin_lock(&foo_mutex); |
365 | old_fp = gbl_foo; | 365 | old_fp = gbl_foo; |
366 | *new_fp = *old_fp; | 366 | *new_fp = *old_fp; |
@@ -461,7 +461,7 @@ The foo_update_a() function might then be written as follows: | |||
461 | struct foo *new_fp; | 461 | struct foo *new_fp; |
462 | struct foo *old_fp; | 462 | struct foo *old_fp; |
463 | 463 | ||
464 | new_fp = kmalloc(sizeof(*fp), GFP_KERNEL); | 464 | new_fp = kmalloc(sizeof(*new_fp), GFP_KERNEL); |
465 | spin_lock(&foo_mutex); | 465 | spin_lock(&foo_mutex); |
466 | old_fp = gbl_foo; | 466 | old_fp = gbl_foo; |
467 | *new_fp = *old_fp; | 467 | *new_fp = *old_fp; |
@@ -605,7 +605,7 @@ are the same as those shown in the preceding section, so they are omitted. | |||
605 | { | 605 | { |
606 | int cpu; | 606 | int cpu; |
607 | 607 | ||
608 | for_each_cpu(cpu) | 608 | for_each_possible_cpu(cpu) |
609 | run_on(cpu); | 609 | run_on(cpu); |
610 | } | 610 | } |
611 | 611 | ||
diff --git a/Documentation/aoe/mkdevs.sh b/Documentation/aoe/mkdevs.sh index ec5a6de1cd7b..97374aacacb2 100644 --- a/Documentation/aoe/mkdevs.sh +++ b/Documentation/aoe/mkdevs.sh | |||
@@ -27,6 +27,8 @@ rm -f $dir/discover | |||
27 | mknod -m 0200 $dir/discover c $MAJOR 3 | 27 | mknod -m 0200 $dir/discover c $MAJOR 3 |
28 | rm -f $dir/interfaces | 28 | rm -f $dir/interfaces |
29 | mknod -m 0200 $dir/interfaces c $MAJOR 4 | 29 | mknod -m 0200 $dir/interfaces c $MAJOR 4 |
30 | rm -f $dir/revalidate | ||
31 | mknod -m 0200 $dir/revalidate c $MAJOR 5 | ||
30 | 32 | ||
31 | export n_partitions | 33 | export n_partitions |
32 | mkshelf=`echo $0 | sed 's!mkdevs!mkshelf!'` | 34 | mkshelf=`echo $0 | sed 's!mkdevs!mkshelf!'` |
diff --git a/Documentation/aoe/udev.txt b/Documentation/aoe/udev.txt index ab39d8bb634c..a7ed1dc4f331 100644 --- a/Documentation/aoe/udev.txt +++ b/Documentation/aoe/udev.txt | |||
@@ -18,6 +18,7 @@ | |||
18 | SUBSYSTEM="aoe", KERNEL="discover", NAME="etherd/%k", GROUP="disk", MODE="0220" | 18 | SUBSYSTEM="aoe", KERNEL="discover", NAME="etherd/%k", GROUP="disk", MODE="0220" |
19 | SUBSYSTEM="aoe", KERNEL="err", NAME="etherd/%k", GROUP="disk", MODE="0440" | 19 | SUBSYSTEM="aoe", KERNEL="err", NAME="etherd/%k", GROUP="disk", MODE="0440" |
20 | SUBSYSTEM="aoe", KERNEL="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220" | 20 | SUBSYSTEM="aoe", KERNEL="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220" |
21 | SUBSYSTEM="aoe", KERNEL="revalidate", NAME="etherd/%k", GROUP="disk", MODE="0220" | ||
21 | 22 | ||
22 | # aoe block devices | 23 | # aoe block devices |
23 | KERNEL="etherd*", NAME="%k", GROUP="disk" | 24 | KERNEL="etherd*", NAME="%k", GROUP="disk" |
diff --git a/Documentation/arm/Booting b/Documentation/arm/Booting index fad566bb02fc..76850295af8f 100644 --- a/Documentation/arm/Booting +++ b/Documentation/arm/Booting | |||
@@ -118,7 +118,7 @@ to store page tables. The recommended placement is 32KiB into RAM. | |||
118 | 118 | ||
119 | In either case, the following conditions must be met: | 119 | In either case, the following conditions must be met: |
120 | 120 | ||
121 | - Quiesce all DMA capable devicess so that memory does not get | 121 | - Quiesce all DMA capable devices so that memory does not get |
122 | corrupted by bogus network packets or disk data. This will save | 122 | corrupted by bogus network packets or disk data. This will save |
123 | you many hours of debug. | 123 | you many hours of debug. |
124 | 124 | ||
diff --git a/Documentation/arm/README b/Documentation/arm/README index 5ed6f3530b86..9b9c8226fdc4 100644 --- a/Documentation/arm/README +++ b/Documentation/arm/README | |||
@@ -89,7 +89,7 @@ Modules | |||
89 | Although modularisation is supported (and required for the FP emulator), | 89 | Although modularisation is supported (and required for the FP emulator), |
90 | each module on an ARM2/ARM250/ARM3 machine when is loaded will take | 90 | each module on an ARM2/ARM250/ARM3 machine when is loaded will take |
91 | memory up to the next 32k boundary due to the size of the pages. | 91 | memory up to the next 32k boundary due to the size of the pages. |
92 | Therefore, modularisation on these machines really worth it? | 92 | Therefore, is modularisation on these machines really worth it? |
93 | 93 | ||
94 | However, ARM6 and up machines allow modules to take multiples of 4k, and | 94 | However, ARM6 and up machines allow modules to take multiples of 4k, and |
95 | as such Acorn RiscPCs and other architectures using these processors can | 95 | as such Acorn RiscPCs and other architectures using these processors can |
diff --git a/Documentation/arm/SA1100/Assabet b/Documentation/arm/SA1100/Assabet index cbbe5587c78d..78bc1c1b04e5 100644 --- a/Documentation/arm/SA1100/Assabet +++ b/Documentation/arm/SA1100/Assabet | |||
@@ -26,7 +26,7 @@ Installing a bootloader | |||
26 | 26 | ||
27 | A couple of bootloaders able to boot Linux on Assabet are available: | 27 | A couple of bootloaders able to boot Linux on Assabet are available: |
28 | 28 | ||
29 | BLOB (http://www.lart.tudelft.nl/lartware/blob/) | 29 | BLOB (http://www.lartmaker.nl/lartware/blob/) |
30 | 30 | ||
31 | BLOB is a bootloader used within the LART project. Some contributed | 31 | BLOB is a bootloader used within the LART project. Some contributed |
32 | patches were merged into BLOB to add support for Assabet. | 32 | patches were merged into BLOB to add support for Assabet. |
diff --git a/Documentation/arm/SA1100/LART b/Documentation/arm/SA1100/LART index 2f73f513e16a..6d412b685598 100644 --- a/Documentation/arm/SA1100/LART +++ b/Documentation/arm/SA1100/LART | |||
@@ -11,4 +11,4 @@ is under development, with plenty of others in different stages of | |||
11 | planning. | 11 | planning. |
12 | 12 | ||
13 | The hardware designs for this board have been released under an open license; | 13 | The hardware designs for this board have been released under an open license; |
14 | see the LART page at http://www.lart.tudelft.nl/ for more information. | 14 | see the LART page at http://www.lartmaker.nl/ for more information. |
diff --git a/Documentation/arm/Samsung-S3C24XX/Overview.txt b/Documentation/arm/Samsung-S3C24XX/Overview.txt index 89aa89d526ac..8c6ee684174c 100644 --- a/Documentation/arm/Samsung-S3C24XX/Overview.txt +++ b/Documentation/arm/Samsung-S3C24XX/Overview.txt | |||
@@ -10,6 +10,8 @@ Introduction | |||
10 | by the 's3c2410' architecture of ARM Linux. Currently the S3C2410 and | 10 | by the 's3c2410' architecture of ARM Linux. Currently the S3C2410 and |
11 | the S3C2440 are supported CPUs. | 11 | the S3C2440 are supported CPUs. |
12 | 12 | ||
13 | Support for the S3C2400 series is in progress. | ||
14 | |||
13 | 15 | ||
14 | Configuration | 16 | Configuration |
15 | ------------- | 17 | ------------- |
@@ -32,6 +34,11 @@ Machines | |||
32 | A general purpose development board, see EB2410ITX.txt for further | 34 | A general purpose development board, see EB2410ITX.txt for further |
33 | details | 35 | details |
34 | 36 | ||
37 | Simtec Electronics IM2440D20 (Osiris) | ||
38 | |||
39 | CPU Module from Simtec Electronics, with a S3C2440A CPU, nand flash | ||
40 | and a PCMCIA controller. | ||
41 | |||
35 | Samsung SMDK2410 | 42 | Samsung SMDK2410 |
36 | 43 | ||
37 | Samsung's own development board, geared for PDA work. | 44 | Samsung's own development board, geared for PDA work. |
@@ -85,6 +92,26 @@ Adding New Machines | |||
85 | mailing list information. | 92 | mailing list information. |
86 | 93 | ||
87 | 94 | ||
95 | I2C | ||
96 | --- | ||
97 | |||
98 | The hardware I2C core in the CPU is supported in single master | ||
99 | mode, and can be configured via platform data. | ||
100 | |||
101 | |||
102 | RTC | ||
103 | --- | ||
104 | |||
105 | Support for the onboard RTC unit, including alarm function. | ||
106 | |||
107 | |||
108 | Watchdog | ||
109 | -------- | ||
110 | |||
111 | The onchip watchdog is available via the standard watchdog | ||
112 | interface. | ||
113 | |||
114 | |||
88 | NAND | 115 | NAND |
89 | ---- | 116 | ---- |
90 | 117 | ||
@@ -121,6 +148,15 @@ Clock Management | |||
121 | various clock units | 148 | various clock units |
122 | 149 | ||
123 | 150 | ||
151 | Suspend to RAM | ||
152 | -------------- | ||
153 | |||
154 | For boards that provide support for suspend to RAM, the | ||
155 | system can be placed into low power suspend. | ||
156 | |||
157 | See Suspend.txt for more information. | ||
158 | |||
159 | |||
124 | Platform Data | 160 | Platform Data |
125 | ------------- | 161 | ------------- |
126 | 162 | ||
@@ -158,6 +194,7 @@ Platform Data | |||
158 | exported outside arch/arm/mach-s3c2410/, or exported to | 194 | exported outside arch/arm/mach-s3c2410/, or exported to |
159 | modules via EXPORT_SYMBOL() and related functions. | 195 | modules via EXPORT_SYMBOL() and related functions. |
160 | 196 | ||
197 | |||
161 | Port Contributors | 198 | Port Contributors |
162 | ----------------- | 199 | ----------------- |
163 | 200 | ||
@@ -188,8 +225,11 @@ Document Changes | |||
188 | 08 Mar 2005 - BJD - Added LCVR to list of people, updated introduction | 225 | 08 Mar 2005 - BJD - Added LCVR to list of people, updated introduction |
189 | 08 Mar 2005 - BJD - Added section on adding machines | 226 | 08 Mar 2005 - BJD - Added section on adding machines |
190 | 09 Sep 2005 - BJD - Added section on platform data | 227 | 09 Sep 2005 - BJD - Added section on platform data |
228 | 11 Feb 2006 - BJD - Added I2C, RTC and Watchdog sections | ||
229 | 11 Feb 2006 - BJD - Added Osiris machine, and S3C2400 information | ||
230 | |||
191 | 231 | ||
192 | Document Author | 232 | Document Author |
193 | --------------- | 233 | --------------- |
194 | 234 | ||
195 | Ben Dooks, (c) 2004-2005 Simtec Electronics | 235 | Ben Dooks, (c) 2004-2005,2006 Simtec Electronics |
diff --git a/Documentation/arm/Setup b/Documentation/arm/Setup index 0abd0720d7ed..0cb1e64bde80 100644 --- a/Documentation/arm/Setup +++ b/Documentation/arm/Setup | |||
@@ -58,7 +58,7 @@ below: | |||
58 | video_y | 58 | video_y |
59 | 59 | ||
60 | This describes the character position of cursor on VGA console, and | 60 | This describes the character position of cursor on VGA console, and |
61 | is otherwise unused. (should not used for other console types, and | 61 | is otherwise unused. (should not be used for other console types, and |
62 | should not be used for other purposes). | 62 | should not be used for other purposes). |
63 | 63 | ||
64 | memc_control_reg | 64 | memc_control_reg |
diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt index 8e63831971d5..f989a9e839b4 100644 --- a/Documentation/block/biodoc.txt +++ b/Documentation/block/biodoc.txt | |||
@@ -132,8 +132,18 @@ Some new queue property settings: | |||
132 | limit. No highmem default. | 132 | limit. No highmem default. |
133 | 133 | ||
134 | blk_queue_max_sectors(q, max_sectors) | 134 | blk_queue_max_sectors(q, max_sectors) |
135 | Maximum size request you can handle in units of 512 byte | 135 | Sets two variables that limit the size of the request. |
136 | sectors. 255 default. | 136 | |
137 | - The request queue's max_sectors, which is a soft size in | ||
138 | in units of 512 byte sectors, and could be dynamically varied | ||
139 | by the core kernel. | ||
140 | |||
141 | - The request queue's max_hw_sectors, which is a hard limit | ||
142 | and reflects the maximum size request a driver can handle | ||
143 | in units of 512 byte sectors. | ||
144 | |||
145 | The default for both max_sectors and max_hw_sectors is | ||
146 | 255. The upper limit of max_sectors is 1024. | ||
137 | 147 | ||
138 | blk_queue_max_phys_segments(q, max_segments) | 148 | blk_queue_max_phys_segments(q, max_segments) |
139 | Maximum physical segments you can handle in a request. 128 | 149 | Maximum physical segments you can handle in a request. 128 |
diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt index 4ae418889b88..53245c429f7d 100644 --- a/Documentation/cachetlb.txt +++ b/Documentation/cachetlb.txt | |||
@@ -362,6 +362,27 @@ maps this page at its virtual address. | |||
362 | likely that you will need to flush the instruction cache | 362 | likely that you will need to flush the instruction cache |
363 | for copy_to_user_page(). | 363 | for copy_to_user_page(). |
364 | 364 | ||
365 | void flush_anon_page(struct page *page, unsigned long vmaddr) | ||
366 | When the kernel needs to access the contents of an anonymous | ||
367 | page, it calls this function (currently only | ||
368 | get_user_pages()). Note: flush_dcache_page() deliberately | ||
369 | doesn't work for an anonymous page. The default | ||
370 | implementation is a nop (and should remain so for all coherent | ||
371 | architectures). For incoherent architectures, it should flush | ||
372 | the cache of the page at vmaddr in the current user process. | ||
373 | |||
374 | void flush_kernel_dcache_page(struct page *page) | ||
375 | When the kernel needs to modify a user page is has obtained | ||
376 | with kmap, it calls this function after all modifications are | ||
377 | complete (but before kunmapping it) to bring the underlying | ||
378 | page up to date. It is assumed here that the user has no | ||
379 | incoherent cached copies (i.e. the original page was obtained | ||
380 | from a mechanism like get_user_pages()). The default | ||
381 | implementation is a nop and should remain so on all coherent | ||
382 | architectures. On incoherent architectures, this should flush | ||
383 | the kernel cache for page (using page_address(page)). | ||
384 | |||
385 | |||
365 | void flush_icache_range(unsigned long start, unsigned long end) | 386 | void flush_icache_range(unsigned long start, unsigned long end) |
366 | When the kernel stores into addresses that it will execute | 387 | When the kernel stores into addresses that it will execute |
367 | out of (eg when loading modules), this function is called. | 388 | out of (eg when loading modules), this function is called. |
diff --git a/Documentation/connector/connector.txt b/Documentation/connector/connector.txt index 57a314b14cf8..ad6e0ba7b38c 100644 --- a/Documentation/connector/connector.txt +++ b/Documentation/connector/connector.txt | |||
@@ -69,10 +69,11 @@ Unregisters new callback with connector core. | |||
69 | 69 | ||
70 | struct cb_id *id - unique connector's user identifier. | 70 | struct cb_id *id - unique connector's user identifier. |
71 | 71 | ||
72 | void cn_netlink_send(struct cn_msg *msg, u32 __groups, int gfp_mask); | 72 | int cn_netlink_send(struct cn_msg *msg, u32 __groups, int gfp_mask); |
73 | 73 | ||
74 | Sends message to the specified groups. It can be safely called from | 74 | Sends message to the specified groups. It can be safely called from |
75 | any context, but may silently fail under strong memory pressure. | 75 | softirq context, but may silently fail under strong memory pressure. |
76 | If there are no listeners for given group -ESRCH can be returned. | ||
76 | 77 | ||
77 | struct cn_msg * - message header(with attached data). | 78 | struct cn_msg * - message header(with attached data). |
78 | u32 __group - destination group. | 79 | u32 __group - destination group. |
diff --git a/Documentation/cpu-hotplug.txt b/Documentation/cpu-hotplug.txt index 57a09f99ecb0..1bcf69996c9d 100644 --- a/Documentation/cpu-hotplug.txt +++ b/Documentation/cpu-hotplug.txt | |||
@@ -97,13 +97,13 @@ at which time hotplug is disabled. | |||
97 | 97 | ||
98 | You really dont need to manipulate any of the system cpu maps. They should | 98 | You really dont need to manipulate any of the system cpu maps. They should |
99 | be read-only for most use. When setting up per-cpu resources almost always use | 99 | be read-only for most use. When setting up per-cpu resources almost always use |
100 | cpu_possible_map/for_each_cpu() to iterate. | 100 | cpu_possible_map/for_each_possible_cpu() to iterate. |
101 | 101 | ||
102 | Never use anything other than cpumask_t to represent bitmap of CPUs. | 102 | Never use anything other than cpumask_t to represent bitmap of CPUs. |
103 | 103 | ||
104 | #include <linux/cpumask.h> | 104 | #include <linux/cpumask.h> |
105 | 105 | ||
106 | for_each_cpu - Iterate over cpu_possible_map | 106 | for_each_possible_cpu - Iterate over cpu_possible_map |
107 | for_each_online_cpu - Iterate over cpu_online_map | 107 | for_each_online_cpu - Iterate over cpu_online_map |
108 | for_each_present_cpu - Iterate over cpu_present_map | 108 | for_each_present_cpu - Iterate over cpu_present_map |
109 | for_each_cpu_mask(x,mask) - Iterate over some random collection of cpu mask. | 109 | for_each_cpu_mask(x,mask) - Iterate over some random collection of cpu mask. |
diff --git a/Documentation/cpusets.txt b/Documentation/cpusets.txt index 30c41459953c..159e2a0c3e80 100644 --- a/Documentation/cpusets.txt +++ b/Documentation/cpusets.txt | |||
@@ -18,7 +18,8 @@ CONTENTS: | |||
18 | 1.4 What are exclusive cpusets ? | 18 | 1.4 What are exclusive cpusets ? |
19 | 1.5 What does notify_on_release do ? | 19 | 1.5 What does notify_on_release do ? |
20 | 1.6 What is memory_pressure ? | 20 | 1.6 What is memory_pressure ? |
21 | 1.7 How do I use cpusets ? | 21 | 1.7 What is memory spread ? |
22 | 1.8 How do I use cpusets ? | ||
22 | 2. Usage Examples and Syntax | 23 | 2. Usage Examples and Syntax |
23 | 2.1 Basic Usage | 24 | 2.1 Basic Usage |
24 | 2.2 Adding/removing cpus | 25 | 2.2 Adding/removing cpus |
@@ -317,7 +318,78 @@ the tasks in the cpuset, in units of reclaims attempted per second, | |||
317 | times 1000. | 318 | times 1000. |
318 | 319 | ||
319 | 320 | ||
320 | 1.7 How do I use cpusets ? | 321 | 1.7 What is memory spread ? |
322 | --------------------------- | ||
323 | There are two boolean flag files per cpuset that control where the | ||
324 | kernel allocates pages for the file system buffers and related in | ||
325 | kernel data structures. They are called 'memory_spread_page' and | ||
326 | 'memory_spread_slab'. | ||
327 | |||
328 | If the per-cpuset boolean flag file 'memory_spread_page' is set, then | ||
329 | the kernel will spread the file system buffers (page cache) evenly | ||
330 | over all the nodes that the faulting task is allowed to use, instead | ||
331 | of preferring to put those pages on the node where the task is running. | ||
332 | |||
333 | If the per-cpuset boolean flag file 'memory_spread_slab' is set, | ||
334 | then the kernel will spread some file system related slab caches, | ||
335 | such as for inodes and dentries evenly over all the nodes that the | ||
336 | faulting task is allowed to use, instead of preferring to put those | ||
337 | pages on the node where the task is running. | ||
338 | |||
339 | The setting of these flags does not affect anonymous data segment or | ||
340 | stack segment pages of a task. | ||
341 | |||
342 | By default, both kinds of memory spreading are off, and memory | ||
343 | pages are allocated on the node local to where the task is running, | ||
344 | except perhaps as modified by the tasks NUMA mempolicy or cpuset | ||
345 | configuration, so long as sufficient free memory pages are available. | ||
346 | |||
347 | When new cpusets are created, they inherit the memory spread settings | ||
348 | of their parent. | ||
349 | |||
350 | Setting memory spreading causes allocations for the affected page | ||
351 | or slab caches to ignore the tasks NUMA mempolicy and be spread | ||
352 | instead. Tasks using mbind() or set_mempolicy() calls to set NUMA | ||
353 | mempolicies will not notice any change in these calls as a result of | ||
354 | their containing tasks memory spread settings. If memory spreading | ||
355 | is turned off, then the currently specified NUMA mempolicy once again | ||
356 | applies to memory page allocations. | ||
357 | |||
358 | Both 'memory_spread_page' and 'memory_spread_slab' are boolean flag | ||
359 | files. By default they contain "0", meaning that the feature is off | ||
360 | for that cpuset. If a "1" is written to that file, then that turns | ||
361 | the named feature on. | ||
362 | |||
363 | The implementation is simple. | ||
364 | |||
365 | Setting the flag 'memory_spread_page' turns on a per-process flag | ||
366 | PF_SPREAD_PAGE for each task that is in that cpuset or subsequently | ||
367 | joins that cpuset. The page allocation calls for the page cache | ||
368 | is modified to perform an inline check for this PF_SPREAD_PAGE task | ||
369 | flag, and if set, a call to a new routine cpuset_mem_spread_node() | ||
370 | returns the node to prefer for the allocation. | ||
371 | |||
372 | Similarly, setting 'memory_spread_cache' turns on the flag | ||
373 | PF_SPREAD_SLAB, and appropriately marked slab caches will allocate | ||
374 | pages from the node returned by cpuset_mem_spread_node(). | ||
375 | |||
376 | The cpuset_mem_spread_node() routine is also simple. It uses the | ||
377 | value of a per-task rotor cpuset_mem_spread_rotor to select the next | ||
378 | node in the current tasks mems_allowed to prefer for the allocation. | ||
379 | |||
380 | This memory placement policy is also known (in other contexts) as | ||
381 | round-robin or interleave. | ||
382 | |||
383 | This policy can provide substantial improvements for jobs that need | ||
384 | to place thread local data on the corresponding node, but that need | ||
385 | to access large file system data sets that need to be spread across | ||
386 | the several nodes in the jobs cpuset in order to fit. Without this | ||
387 | policy, especially for jobs that might have one thread reading in the | ||
388 | data set, the memory allocation across the nodes in the jobs cpuset | ||
389 | can become very uneven. | ||
390 | |||
391 | |||
392 | 1.8 How do I use cpusets ? | ||
321 | -------------------------- | 393 | -------------------------- |
322 | 394 | ||
323 | In order to minimize the impact of cpusets on critical kernel | 395 | In order to minimize the impact of cpusets on critical kernel |
diff --git a/Documentation/cputopology.txt b/Documentation/cputopology.txt index ff280e2e1613..2b28e9ec4e3a 100644 --- a/Documentation/cputopology.txt +++ b/Documentation/cputopology.txt | |||
@@ -1,5 +1,5 @@ | |||
1 | 1 | ||
2 | Export cpu topology info by sysfs. Items (attributes) are similar | 2 | Export cpu topology info via sysfs. Items (attributes) are similar |
3 | to /proc/cpuinfo. | 3 | to /proc/cpuinfo. |
4 | 4 | ||
5 | 1) /sys/devices/system/cpu/cpuX/topology/physical_package_id: | 5 | 1) /sys/devices/system/cpu/cpuX/topology/physical_package_id: |
@@ -12,7 +12,7 @@ represent the thread siblings to cpu X in the same core; | |||
12 | represent the thread siblings to cpu X in the same physical package; | 12 | represent the thread siblings to cpu X in the same physical package; |
13 | 13 | ||
14 | To implement it in an architecture-neutral way, a new source file, | 14 | To implement it in an architecture-neutral way, a new source file, |
15 | driver/base/topology.c, is to export the 5 attributes. | 15 | drivers/base/topology.c, is to export the 4 attributes. |
16 | 16 | ||
17 | If one architecture wants to support this feature, it just needs to | 17 | If one architecture wants to support this feature, it just needs to |
18 | implement 4 defines, typically in file include/asm-XXX/topology.h. | 18 | implement 4 defines, typically in file include/asm-XXX/topology.h. |
diff --git a/Documentation/drivers/edac/edac.txt b/Documentation/drivers/edac/edac.txt index d37191fe5681..70d96a62e5e1 100644 --- a/Documentation/drivers/edac/edac.txt +++ b/Documentation/drivers/edac/edac.txt | |||
@@ -21,7 +21,7 @@ within the computer system. In the initial release, memory Correctable Errors | |||
21 | 21 | ||
22 | Detecting CE events, then harvesting those events and reporting them, | 22 | Detecting CE events, then harvesting those events and reporting them, |
23 | CAN be a predictor of future UE events. With CE events, the system can | 23 | CAN be a predictor of future UE events. With CE events, the system can |
24 | continue to operate, but with less safety. Preventive maintainence and | 24 | continue to operate, but with less safety. Preventive maintenance and |
25 | proactive part replacement of memory DIMMs exhibiting CEs can reduce | 25 | proactive part replacement of memory DIMMs exhibiting CEs can reduce |
26 | the likelihood of the dreaded UE events and system 'panics'. | 26 | the likelihood of the dreaded UE events and system 'panics'. |
27 | 27 | ||
@@ -29,13 +29,13 @@ the likelihood of the dreaded UE events and system 'panics'. | |||
29 | In addition, PCI Bus Parity and SERR Errors are scanned for on PCI devices | 29 | In addition, PCI Bus Parity and SERR Errors are scanned for on PCI devices |
30 | in order to determine if errors are occurring on data transfers. | 30 | in order to determine if errors are occurring on data transfers. |
31 | The presence of PCI Parity errors must be examined with a grain of salt. | 31 | The presence of PCI Parity errors must be examined with a grain of salt. |
32 | There are several addin adapters that do NOT follow the PCI specification | 32 | There are several add-in adapters that do NOT follow the PCI specification |
33 | with regards to Parity generation and reporting. The specification says | 33 | with regards to Parity generation and reporting. The specification says |
34 | the vendor should tie the parity status bits to 0 if they do not intend | 34 | the vendor should tie the parity status bits to 0 if they do not intend |
35 | to generate parity. Some vendors do not do this, and thus the parity bit | 35 | to generate parity. Some vendors do not do this, and thus the parity bit |
36 | can "float" giving false positives. | 36 | can "float" giving false positives. |
37 | 37 | ||
38 | The PCI Parity EDAC device has the ability to "skip" known flakey | 38 | The PCI Parity EDAC device has the ability to "skip" known flaky |
39 | cards during the parity scan. These are set by the parity "blacklist" | 39 | cards during the parity scan. These are set by the parity "blacklist" |
40 | interface in the sysfs for PCI Parity. (See the PCI section in the sysfs | 40 | interface in the sysfs for PCI Parity. (See the PCI section in the sysfs |
41 | section below.) There is also a parity "whitelist" which is used as | 41 | section below.) There is also a parity "whitelist" which is used as |
@@ -101,7 +101,7 @@ Memory Controller (mc) Model | |||
101 | 101 | ||
102 | First a background on the memory controller's model abstracted in EDAC. | 102 | First a background on the memory controller's model abstracted in EDAC. |
103 | Each mc device controls a set of DIMM memory modules. These modules are | 103 | Each mc device controls a set of DIMM memory modules. These modules are |
104 | layed out in a Chip-Select Row (csrowX) and Channel table (chX). There can | 104 | laid out in a Chip-Select Row (csrowX) and Channel table (chX). There can |
105 | be multiple csrows and two channels. | 105 | be multiple csrows and two channels. |
106 | 106 | ||
107 | Memory controllers allow for several csrows, with 8 csrows being a typical value. | 107 | Memory controllers allow for several csrows, with 8 csrows being a typical value. |
@@ -131,7 +131,7 @@ for memory DIMMs: | |||
131 | DIMM_B1 | 131 | DIMM_B1 |
132 | 132 | ||
133 | Labels for these slots are usually silk screened on the motherboard. Slots | 133 | Labels for these slots are usually silk screened on the motherboard. Slots |
134 | labeled 'A' are channel 0 in this example. Slots labled 'B' | 134 | labeled 'A' are channel 0 in this example. Slots labeled 'B' |
135 | are channel 1. Notice that there are two csrows possible on a | 135 | are channel 1. Notice that there are two csrows possible on a |
136 | physical DIMM. These csrows are allocated their csrow assignment | 136 | physical DIMM. These csrows are allocated their csrow assignment |
137 | based on the slot into which the memory DIMM is placed. Thus, when 1 DIMM | 137 | based on the slot into which the memory DIMM is placed. Thus, when 1 DIMM |
@@ -140,7 +140,7 @@ is placed in each Channel, the csrows cross both DIMMs. | |||
140 | Memory DIMMs come single or dual "ranked". A rank is a populated csrow. | 140 | Memory DIMMs come single or dual "ranked". A rank is a populated csrow. |
141 | Thus, 2 single ranked DIMMs, placed in slots DIMM_A0 and DIMM_B0 above | 141 | Thus, 2 single ranked DIMMs, placed in slots DIMM_A0 and DIMM_B0 above |
142 | will have 1 csrow, csrow0. csrow1 will be empty. On the other hand, | 142 | will have 1 csrow, csrow0. csrow1 will be empty. On the other hand, |
143 | when 2 dual ranked DIMMs are similiaryly placed, then both csrow0 and | 143 | when 2 dual ranked DIMMs are similarly placed, then both csrow0 and |
144 | csrow1 will be populated. The pattern repeats itself for csrow2 and | 144 | csrow1 will be populated. The pattern repeats itself for csrow2 and |
145 | csrow3. | 145 | csrow3. |
146 | 146 | ||
@@ -246,7 +246,7 @@ Module Version read-only attribute file: | |||
246 | 246 | ||
247 | 'mc_version' | 247 | 'mc_version' |
248 | 248 | ||
249 | The EDAC CORE modules's version and compile date are shown here to | 249 | The EDAC CORE module's version and compile date are shown here to |
250 | indicate what EDAC is running. | 250 | indicate what EDAC is running. |
251 | 251 | ||
252 | 252 | ||
@@ -423,7 +423,7 @@ Total memory managed by this csrow attribute file: | |||
423 | 'size_mb' | 423 | 'size_mb' |
424 | 424 | ||
425 | This attribute file displays, in count of megabytes, of memory | 425 | This attribute file displays, in count of megabytes, of memory |
426 | that this csrow contatins. | 426 | that this csrow contains. |
427 | 427 | ||
428 | 428 | ||
429 | Memory Type attribute file: | 429 | Memory Type attribute file: |
@@ -557,7 +557,7 @@ On Header Type 00 devices the primary status is looked at | |||
557 | for any parity error regardless of whether Parity is enabled on the | 557 | for any parity error regardless of whether Parity is enabled on the |
558 | device. (The spec indicates parity is generated in some cases). | 558 | device. (The spec indicates parity is generated in some cases). |
559 | On Header Type 01 bridges, the secondary status register is also | 559 | On Header Type 01 bridges, the secondary status register is also |
560 | looked at to see if parity ocurred on the bus on the other side of | 560 | looked at to see if parity occurred on the bus on the other side of |
561 | the bridge. | 561 | the bridge. |
562 | 562 | ||
563 | 563 | ||
@@ -588,7 +588,7 @@ Panic on PCI PARITY Error: | |||
588 | 'panic_on_pci_parity' | 588 | 'panic_on_pci_parity' |
589 | 589 | ||
590 | 590 | ||
591 | This control files enables or disables panic'ing when a parity | 591 | This control files enables or disables panicking when a parity |
592 | error has been detected. | 592 | error has been detected. |
593 | 593 | ||
594 | 594 | ||
@@ -616,12 +616,12 @@ PCI Device Whitelist: | |||
616 | 616 | ||
617 | This control file allows for an explicit list of PCI devices to be | 617 | This control file allows for an explicit list of PCI devices to be |
618 | scanned for parity errors. Only devices found on this list will | 618 | scanned for parity errors. Only devices found on this list will |
619 | be examined. The list is a line of hexadecimel VENDOR and DEVICE | 619 | be examined. The list is a line of hexadecimal VENDOR and DEVICE |
620 | ID tuples: | 620 | ID tuples: |
621 | 621 | ||
622 | 1022:7450,1434:16a6 | 622 | 1022:7450,1434:16a6 |
623 | 623 | ||
624 | One or more can be inserted, seperated by a comma. | 624 | One or more can be inserted, separated by a comma. |
625 | 625 | ||
626 | To write the above list doing the following as one command line: | 626 | To write the above list doing the following as one command line: |
627 | 627 | ||
@@ -639,11 +639,11 @@ PCI Device Blacklist: | |||
639 | 639 | ||
640 | This control file allows for a list of PCI devices to be | 640 | This control file allows for a list of PCI devices to be |
641 | skipped for scanning. | 641 | skipped for scanning. |
642 | The list is a line of hexadecimel VENDOR and DEVICE ID tuples: | 642 | The list is a line of hexadecimal VENDOR and DEVICE ID tuples: |
643 | 643 | ||
644 | 1022:7450,1434:16a6 | 644 | 1022:7450,1434:16a6 |
645 | 645 | ||
646 | One or more can be inserted, seperated by a comma. | 646 | One or more can be inserted, separated by a comma. |
647 | 647 | ||
648 | To write the above list doing the following as one command line: | 648 | To write the above list doing the following as one command line: |
649 | 649 | ||
@@ -651,14 +651,14 @@ PCI Device Blacklist: | |||
651 | > /sys/devices/system/edac/pci/pci_parity_blacklist | 651 | > /sys/devices/system/edac/pci/pci_parity_blacklist |
652 | 652 | ||
653 | 653 | ||
654 | To display what the whitelist current contatins, | 654 | To display what the whitelist currently contains, |
655 | simply 'cat' the same file. | 655 | simply 'cat' the same file. |
656 | 656 | ||
657 | ======================================================================= | 657 | ======================================================================= |
658 | 658 | ||
659 | PCI Vendor and Devices IDs can be obtained with the lspci command. Using | 659 | PCI Vendor and Devices IDs can be obtained with the lspci command. Using |
660 | the -n option lspci will display the vendor and device IDs. The system | 660 | the -n option lspci will display the vendor and device IDs. The system |
661 | adminstrator will have to determine which devices should be scanned or | 661 | administrator will have to determine which devices should be scanned or |
662 | skipped. | 662 | skipped. |
663 | 663 | ||
664 | 664 | ||
@@ -669,5 +669,5 @@ Turn OFF a whitelist by an empty echo command: | |||
669 | 669 | ||
670 | echo > /sys/devices/system/edac/pci/pci_parity_whitelist | 670 | echo > /sys/devices/system/edac/pci/pci_parity_whitelist |
671 | 671 | ||
672 | and any previous blacklist will be utililzed. | 672 | and any previous blacklist will be utilized. |
673 | 673 | ||
diff --git a/Documentation/dvb/avermedia.txt b/Documentation/dvb/avermedia.txt index 068070ff13cd..8bab8461a4af 100644 --- a/Documentation/dvb/avermedia.txt +++ b/Documentation/dvb/avermedia.txt | |||
@@ -1,4 +1,3 @@ | |||
1 | |||
2 | HOWTO: Get An Avermedia DVB-T working under Linux | 1 | HOWTO: Get An Avermedia DVB-T working under Linux |
3 | ______________________________________________ | 2 | ______________________________________________ |
4 | 3 | ||
@@ -137,11 +136,8 @@ Getting the card going | |||
137 | To power up the card, load the following modules in the | 136 | To power up the card, load the following modules in the |
138 | following order: | 137 | following order: |
139 | 138 | ||
140 | * insmod dvb-core.o | 139 | * modprobe bttv (normally loaded automatically) |
141 | * modprobe bttv.o | 140 | * modprobe dvb-bt8xx (or place dvb-bt8xx in /etc/modules) |
142 | * insmod bt878.o | ||
143 | * insmod dvb-bt8xx.o | ||
144 | * insmod sp887x.o | ||
145 | 141 | ||
146 | Insertion of these modules into the running kernel will | 142 | Insertion of these modules into the running kernel will |
147 | activate the appropriate DVB device nodes. It is then possible | 143 | activate the appropriate DVB device nodes. It is then possible |
@@ -302,4 +298,4 @@ Further Update | |||
302 | Many thanks to Nigel Pearson for the updates to this document | 298 | Many thanks to Nigel Pearson for the updates to this document |
303 | since the recent revision of the driver. | 299 | since the recent revision of the driver. |
304 | 300 | ||
305 | January 29th 2004 | 301 | February 14th 2006 |
diff --git a/Documentation/dvb/bt8xx.txt b/Documentation/dvb/bt8xx.txt index 52ed462061df..4e7614e606c5 100644 --- a/Documentation/dvb/bt8xx.txt +++ b/Documentation/dvb/bt8xx.txt | |||
@@ -1,118 +1,78 @@ | |||
1 | How to get the Nebula, PCTV, FusionHDTV Lite and Twinhan DST cards working | 1 | How to get the bt8xx cards working |
2 | ========================================================================== | 2 | ================================== |
3 | 3 | ||
4 | This class of cards has a bt878a as the PCI interface, and | 4 | 1) General information |
5 | require the bttv driver. | 5 | ====================== |
6 | 6 | ||
7 | Please pay close attention to the warning about the bttv module | 7 | This class of cards has a bt878a as the PCI interface, and require the bttv driver |
8 | options below for the DST card. | 8 | for accessing the i2c bus and the gpio pins of the bt8xx chipset. |
9 | Please see Documentation/dvb/cards.txt => o Cards based on the Conexant Bt8xx PCI bridge: | ||
9 | 10 | ||
10 | 1) General informations | 11 | Compiling kernel please enable: |
11 | ======================= | 12 | a.)"Device drivers" => "Multimedia devices" => "Video For Linux" => "BT848 Video For Linux" |
12 | 13 | b.)"Device drivers" => "Multimedia devices" => "Digital Video Broadcasting Devices" | |
13 | These drivers require the bttv driver to provide the means to access | 14 | => "DVB for Linux" "DVB Core Support" "Bt8xx based PCI Cards" |
14 | the i2c bus and the gpio pins of the bt8xx chipset. | ||
15 | |||
16 | Because of this, you need to enable | ||
17 | "Device drivers" => "Multimedia devices" | ||
18 | => "Video For Linux" => "BT848 Video For Linux" | ||
19 | |||
20 | Furthermore you need to enable | ||
21 | "Device drivers" => "Multimedia devices" => "Digital Video Broadcasting Devices" | ||
22 | => "DVB for Linux" "DVB Core Support" "BT8xx based PCI cards" | ||
23 | 15 | ||
24 | 2) Loading Modules | 16 | 2) Loading Modules |
25 | ================== | 17 | ================== |
26 | 18 | ||
27 | In general you need to load the bttv driver, which will handle the gpio and | 19 | In default cases bttv is loaded automatically. |
28 | i2c communication for us, plus the common dvb-bt8xx device driver. | 20 | To load the backend either place dvb-bt8xx in etc/modules, or apply manually: |
29 | The frontends for Nebula (nxt6000), Pinnacle PCTV (cx24110), TwinHan (dst), | ||
30 | FusionHDTV DVB-T Lite (mt352) and FusionHDTV5 Lite (lgdt330x) are loaded | ||
31 | automatically by the dvb-bt8xx device driver. | ||
32 | |||
33 | 3a) Nebula / Pinnacle PCTV / FusionHDTV Lite | ||
34 | --------------------------------------------- | ||
35 | |||
36 | $ modprobe bttv (normally bttv is being loaded automatically by kmod) | ||
37 | $ modprobe dvb-bt8xx | ||
38 | |||
39 | (or just place dvb-bt8xx in /etc/modules for automatic loading) | ||
40 | |||
41 | |||
42 | 3b) TwinHan and Clones | ||
43 | -------------------------- | ||
44 | 21 | ||
45 | $ modprobe bttv card=0x71 | 22 | $ modprobe dvb-bt8xx |
46 | $ modprobe dvb-bt8xx | ||
47 | $ modprobe dst | ||
48 | 23 | ||
49 | The value 0x71 will override the PCI type detection for dvb-bt8xx, | 24 | All frontends will be loaded automatically. |
50 | which is necessary for TwinHan cards. Omission of this parameter might result | 25 | People running udev please see Documentation/dvb/udev.txt. |
51 | in a system lockup. | ||
52 | 26 | ||
53 | If you're having an older card (blue color PCB) and card=0x71 locks up | 27 | In the following cases overriding the PCI type detection for dvb-bt8xx might be necessary: |
54 | your machine, try using 0x68, too. If that does not work, ask on the | ||
55 | mailing list. | ||
56 | 28 | ||
57 | The DST module takes a couple of useful parameters. | 29 | 2a) Running TwinHan and Clones |
30 | ------------------------------ | ||
58 | 31 | ||
59 | verbose takes values 0 to 4. These values control the verbosity level, | 32 | $ modprobe bttv card=113 |
60 | and can be used to debug also. | 33 | $ modprobe dvb-bt8xx |
34 | $ modprobe dst | ||
61 | 35 | ||
62 | verbose=0 means complete disabling of messages | 36 | Useful parameters for verbosity level and debugging the dst module: |
63 | 1 only error messages are displayed | ||
64 | 2 notifications are also displayed | ||
65 | 3 informational messages are also displayed | ||
66 | 4 debug setting | ||
67 | 37 | ||
68 | dst_addons takes values 0 and 0x20. A value of 0 means it is a FTA card. | 38 | verbose=0: messages are disabled |
69 | 0x20 means it has a Conditional Access slot. | 39 | 1: only error messages are displayed |
40 | 2: notifications are displayed | ||
41 | 3: other useful messages are displayed | ||
42 | 4: debug setting | ||
43 | dst_addons=0: card is a free to air (FTA) card only | ||
44 | 0x20: card has a conditional access slot for scrambled channels | ||
70 | 45 | ||
71 | The autodetected values are determined by the cards 'response string' | 46 | The autodetected values are determined by the cards' "response string". |
72 | which you can see in your logs e.g. | 47 | In your logs see f. ex.: dst_get_device_id: Recognize [DSTMCI]. |
48 | For bug reports please send in a complete log with verbose=4 activated. | ||
49 | Please also see Documentation/dvb/ci.txt. | ||
73 | 50 | ||
74 | dst_get_device_id: Recognise [DSTMCI] | 51 | 2b) Running multiple cards |
75 | |||
76 | If you need to sent in bug reports on the dst, please do send in a complete | ||
77 | log with the verbose=4 module parameter. For general usage, the default setting | ||
78 | of verbose=1 is ideal. | ||
79 | |||
80 | |||
81 | 4) Multiple cards | ||
82 | -------------------------- | 52 | -------------------------- |
83 | 53 | ||
84 | If you happen to be running multiple cards, it would be advisable to load | 54 | Examples of card ID's: |
85 | the bttv module with the card id. This would help to solve any module loading | ||
86 | problems that you might face. | ||
87 | |||
88 | For example, if you have a Twinhan and Clones card along with a FusionHDTV5 Lite | ||
89 | 55 | ||
90 | $ modprobe bttv card=0x71 card=0x87 | 56 | Pinnacle PCTV Sat: 94 |
91 | 57 | Nebula Electronics Digi TV: 104 | |
92 | Here the order of the card id is important and should be the same as that of the | 58 | pcHDTV HD-2000 TV: 112 |
93 | physical order of the cards. Here card=0x71 represents the Twinhan and clones | 59 | Twinhan DST and clones: 113 |
94 | and card=0x87 represents Fusion HDTV5 Lite. These arguments can also be | 60 | Avermedia AverTV DVB-T 771: 123 |
95 | specified in decimal, rather than hex: | 61 | Avermedia AverTV DVB-T 761: 124 |
62 | DViCO FusionHDTV DVB-T Lite: 128 | ||
63 | DViCO FusionHDTV 5 Lite: 135 | ||
96 | 64 | ||
65 | Notice: The order of the card ID should be uprising: | ||
66 | Example: | ||
97 | $ modprobe bttv card=113 card=135 | 67 | $ modprobe bttv card=113 card=135 |
68 | $ modprobe dvb-bt8xx | ||
98 | 69 | ||
99 | Some examples of card-id's | 70 | For a full list of card ID's please see Documentation/video4linux/CARDLIST.bttv. |
100 | 71 | In case of further problems send questions to the mailing list: www.linuxdvb.org. | |
101 | Pinnacle Sat 0x5e (94) | ||
102 | Nebula Digi TV 0x68 (104) | ||
103 | PC HDTV 0x70 (112) | ||
104 | Twinhan 0x71 (113) | ||
105 | FusionHDTV DVB-T Lite 0x80 (128) | ||
106 | FusionHDTV5 Lite 0x87 (135) | ||
107 | |||
108 | For a full list of card-id's, see the V4L Documentation within the kernel | ||
109 | source: linux/Documentation/video4linux/CARDLIST.bttv | ||
110 | |||
111 | If you have problems with this please do ask on the mailing list. | ||
112 | 72 | ||
113 | -- | ||
114 | Authors: Richard Walker, | 73 | Authors: Richard Walker, |
115 | Jamie Honan, | 74 | Jamie Honan, |
116 | Michael Hunold, | 75 | Michael Hunold, |
117 | Manu Abraham, | 76 | Manu Abraham, |
77 | Uwe Bugla, | ||
118 | Michael Krufky | 78 | Michael Krufky |
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware index 75c28a174092..15fc8fbef67e 100644 --- a/Documentation/dvb/get_dvb_firmware +++ b/Documentation/dvb/get_dvb_firmware | |||
@@ -21,8 +21,9 @@ | |||
21 | use File::Temp qw/ tempdir /; | 21 | use File::Temp qw/ tempdir /; |
22 | use IO::Handle; | 22 | use IO::Handle; |
23 | 23 | ||
24 | @components = ( "sp8870", "sp887x", "tda10045", "tda10046", "av7110", "dec2000t", | 24 | @components = ( "sp8870", "sp887x", "tda10045", "tda10046", |
25 | "dec2540t", "dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004", | 25 | "tda10046lifeview", "av7110", "dec2000t", "dec2540t", |
26 | "dec3000s", "vp7041", "dibusb", "nxt2002", "nxt2004", | ||
26 | "or51211", "or51132_qam", "or51132_vsb", "bluebird"); | 27 | "or51211", "or51132_qam", "or51132_vsb", "bluebird"); |
27 | 28 | ||
28 | # Check args | 29 | # Check args |
@@ -126,6 +127,24 @@ sub tda10046 { | |||
126 | $outfile; | 127 | $outfile; |
127 | } | 128 | } |
128 | 129 | ||
130 | sub tda10046lifeview { | ||
131 | my $sourcefile = "Drv_2.11.02.zip"; | ||
132 | my $url = "http://www.lifeview.com.tw/drivers/pci_card/FlyDVB-T/$sourcefile"; | ||
133 | my $hash = "1ea24dee4eea8fe971686981f34fd2e0"; | ||
134 | my $outfile = "dvb-fe-tda10046.fw"; | ||
135 | my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); | ||
136 | |||
137 | checkstandard(); | ||
138 | |||
139 | wgetfile($sourcefile, $url); | ||
140 | unzip($sourcefile, $tmpdir); | ||
141 | extract("$tmpdir/LVHybrid.sys", 0x8b088, 24602, "$tmpdir/fwtmp"); | ||
142 | verify("$tmpdir/fwtmp", $hash); | ||
143 | copy("$tmpdir/fwtmp", $outfile); | ||
144 | |||
145 | $outfile; | ||
146 | } | ||
147 | |||
129 | sub av7110 { | 148 | sub av7110 { |
130 | my $sourcefile = "dvb-ttpci-01.fw-261d"; | 149 | my $sourcefile = "dvb-ttpci-01.fw-261d"; |
131 | my $url = "http://www.linuxtv.org/downloads/firmware/$sourcefile"; | 150 | my $url = "http://www.linuxtv.org/downloads/firmware/$sourcefile"; |
@@ -227,7 +246,7 @@ sub vp7041 { | |||
227 | } | 246 | } |
228 | 247 | ||
229 | sub dibusb { | 248 | sub dibusb { |
230 | my $url = "http://www.linuxtv.org/downloads/firmware/dvb-dibusb-5.0.0.11.fw"; | 249 | my $url = "http://www.linuxtv.org/downloads/firmware/dvb-usb-dibusb-5.0.0.11.fw"; |
231 | my $outfile = "dvb-dibusb-5.0.0.11.fw"; | 250 | my $outfile = "dvb-dibusb-5.0.0.11.fw"; |
232 | my $hash = "fa490295a527360ca16dcdf3224ca243"; | 251 | my $hash = "fa490295a527360ca16dcdf3224ca243"; |
233 | 252 | ||
diff --git a/Documentation/dvb/readme.txt b/Documentation/dvb/readme.txt index f5c50b22de3b..0b0380c91990 100644 --- a/Documentation/dvb/readme.txt +++ b/Documentation/dvb/readme.txt | |||
@@ -20,11 +20,23 @@ http://linuxtv.org/downloads/ | |||
20 | 20 | ||
21 | What's inside this directory: | 21 | What's inside this directory: |
22 | 22 | ||
23 | "avermedia.txt" | ||
24 | contains detailed information about the | ||
25 | Avermedia DVB-T cards. See also "bt8xx.txt". | ||
26 | |||
27 | "bt8xx.txt" | ||
28 | contains detailed information about the | ||
29 | various bt8xx based "budget" DVB cards. | ||
30 | |||
23 | "cards.txt" | 31 | "cards.txt" |
24 | contains a list of supported hardware. | 32 | contains a list of supported hardware. |
25 | 33 | ||
34 | "ci.txt" | ||
35 | contains detailed information about the | ||
36 | CI module as part from TwinHan cards and Clones. | ||
37 | |||
26 | "contributors.txt" | 38 | "contributors.txt" |
27 | is the who-is-who of DVB development | 39 | is the who-is-who of DVB development. |
28 | 40 | ||
29 | "faq.txt" | 41 | "faq.txt" |
30 | contains frequently asked questions and their answers. | 42 | contains frequently asked questions and their answers. |
@@ -34,19 +46,17 @@ script to download and extract firmware for those devices | |||
34 | that require it. | 46 | that require it. |
35 | 47 | ||
36 | "ttusb-dec.txt" | 48 | "ttusb-dec.txt" |
37 | contains detailed informations about the | 49 | contains detailed information about the |
38 | TT DEC2000/DEC3000 USB DVB hardware. | 50 | TT DEC2000/DEC3000 USB DVB hardware. |
39 | 51 | ||
40 | "bt8xx.txt" | ||
41 | contains detailed installation instructions for the | ||
42 | various bt8xx based "budget" DVB cards | ||
43 | (Nebula, Pinnacle PCTV, Twinhan DST) | ||
44 | |||
45 | "README.dibusb" | ||
46 | contains detailed information about adapters | ||
47 | based on DiBcom reference design. | ||
48 | |||
49 | "udev.txt" | 52 | "udev.txt" |
50 | how to get DVB and udev up and running. | 53 | how to get DVB and udev up and running. |
51 | 54 | ||
55 | "README.dvb-usb" | ||
56 | contains detailed information about the DVB USB cards. | ||
57 | |||
58 | "README.flexcop" | ||
59 | contains detailed information about the | ||
60 | Technisat- and Flexcop B2C2 drivers. | ||
61 | |||
52 | Good luck and have fun! | 62 | Good luck and have fun! |
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index 81bc51369f59..495858b236b6 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -116,6 +116,17 @@ Who: Harald Welte <laforge@netfilter.org> | |||
116 | 116 | ||
117 | --------------------------- | 117 | --------------------------- |
118 | 118 | ||
119 | What: remove EXPORT_SYMBOL(kernel_thread) | ||
120 | When: August 2006 | ||
121 | Files: arch/*/kernel/*_ksyms.c | ||
122 | Why: kernel_thread is a low-level implementation detail. Drivers should | ||
123 | use the <linux/kthread.h> API instead which shields them from | ||
124 | implementation details and provides a higherlevel interface that | ||
125 | prevents bugs and code duplication | ||
126 | Who: Christoph Hellwig <hch@lst.de> | ||
127 | |||
128 | --------------------------- | ||
129 | |||
119 | What: EXPORT_SYMBOL(lookup_hash) | 130 | What: EXPORT_SYMBOL(lookup_hash) |
120 | When: January 2006 | 131 | When: January 2006 |
121 | Why: Too low-level interface. Use lookup_one_len or lookup_create instead. | 132 | Why: Too low-level interface. Use lookup_one_len or lookup_create instead. |
@@ -151,10 +162,10 @@ Who: Ralf Baechle <ralf@linux-mips.org> | |||
151 | 162 | ||
152 | --------------------------- | 163 | --------------------------- |
153 | 164 | ||
154 | What: Legacy /proc/pci interface (PCI_LEGACY_PROC) | 165 | What: eepro100 network driver |
155 | When: March 2006 | 166 | When: January 2007 |
156 | Why: deprecated since 2.5.53 in favor of lspci(8) | 167 | Why: replaced by the e100 driver |
157 | Who: Adrian Bunk <bunk@stusta.de> | 168 | Who: Adrian Bunk <bunk@stusta.de> |
158 | 169 | ||
159 | --------------------------- | 170 | --------------------------- |
160 | 171 | ||
@@ -165,6 +176,18 @@ Who: Richard Knutsson <ricknu-0@student.ltu.se> and Greg Kroah-Hartman <gregkh@s | |||
165 | 176 | ||
166 | --------------------------- | 177 | --------------------------- |
167 | 178 | ||
179 | What: Usage of invalid timevals in setitimer | ||
180 | When: March 2007 | ||
181 | Why: POSIX requires to validate timevals in the setitimer call. This | ||
182 | was never done by Linux. The invalid (e.g. negative timevals) were | ||
183 | silently converted to more or less random timeouts and intervals. | ||
184 | Until the removal a per boot limited number of warnings is printed | ||
185 | and the timevals are sanitized. | ||
186 | |||
187 | Who: Thomas Gleixner <tglx@linutronix.de> | ||
188 | |||
189 | --------------------------- | ||
190 | |||
168 | What: I2C interface of the it87 driver | 191 | What: I2C interface of the it87 driver |
169 | When: January 2007 | 192 | When: January 2007 |
170 | Why: The ISA interface is faster and should be always available. The I2C | 193 | Why: The ISA interface is faster and should be always available. The I2C |
@@ -174,6 +197,17 @@ Who: Jean Delvare <khali@linux-fr.org> | |||
174 | 197 | ||
175 | --------------------------- | 198 | --------------------------- |
176 | 199 | ||
200 | What: remove EXPORT_SYMBOL(tasklist_lock) | ||
201 | When: August 2006 | ||
202 | Files: kernel/fork.c | ||
203 | Why: tasklist_lock protects the kernel internal task list. Modules have | ||
204 | no business looking at it, and all instances in drivers have been due | ||
205 | to use of too-lowlevel APIs. Having this symbol exported prevents | ||
206 | moving to more scalable locking schemes for the task list. | ||
207 | Who: Christoph Hellwig <hch@lst.de> | ||
208 | |||
209 | --------------------------- | ||
210 | |||
177 | What: mount/umount uevents | 211 | What: mount/umount uevents |
178 | When: February 2007 | 212 | When: February 2007 |
179 | Why: These events are not correct, and do not properly let userspace know | 213 | Why: These events are not correct, and do not properly let userspace know |
@@ -189,3 +223,21 @@ Why: Board specific code doesn't build anymore since ~2.6.0 and no | |||
189 | users have complained indicating there is no more need for these | 223 | users have complained indicating there is no more need for these |
190 | boards. This should really be considered a last call. | 224 | boards. This should really be considered a last call. |
191 | Who: Ralf Baechle <ralf@linux-mips.org> | 225 | Who: Ralf Baechle <ralf@linux-mips.org> |
226 | |||
227 | --------------------------- | ||
228 | |||
229 | What: USB driver API moves to EXPORT_SYMBOL_GPL | ||
230 | When: Febuary 2008 | ||
231 | Files: include/linux/usb.h, drivers/usb/core/driver.c | ||
232 | Why: The USB subsystem has changed a lot over time, and it has been | ||
233 | possible to create userspace USB drivers using usbfs/libusb/gadgetfs | ||
234 | that operate as fast as the USB bus allows. Because of this, the USB | ||
235 | subsystem will not be allowing closed source kernel drivers to | ||
236 | register with it, after this grace period is over. If anyone needs | ||
237 | any help in converting their closed source drivers over to use the | ||
238 | userspace filesystems, please contact the | ||
239 | linux-usb-devel@lists.sourceforge.net mailing list, and the developers | ||
240 | there will be glad to help you out. | ||
241 | Who: Greg Kroah-Hartman <gregkh@suse.de> | ||
242 | |||
243 | --------------------------- | ||
diff --git a/Documentation/filesystems/00-INDEX b/Documentation/filesystems/00-INDEX index 74052d22d868..66fdc0744fe0 100644 --- a/Documentation/filesystems/00-INDEX +++ b/Documentation/filesystems/00-INDEX | |||
@@ -1,27 +1,47 @@ | |||
1 | 00-INDEX | 1 | 00-INDEX |
2 | - this file (info on some of the filesystems supported by linux). | 2 | - this file (info on some of the filesystems supported by linux). |
3 | Exporting | ||
4 | - explanation of how to make filesystems exportable. | ||
3 | Locking | 5 | Locking |
4 | - info on locking rules as they pertain to Linux VFS. | 6 | - info on locking rules as they pertain to Linux VFS. |
5 | adfs.txt | 7 | adfs.txt |
6 | - info and mount options for the Acorn Advanced Disc Filing System. | 8 | - info and mount options for the Acorn Advanced Disc Filing System. |
9 | afs.txt | ||
10 | - info and examples for the distributed AFS (Andrew File System) fs. | ||
7 | affs.txt | 11 | affs.txt |
8 | - info and mount options for the Amiga Fast File System. | 12 | - info and mount options for the Amiga Fast File System. |
13 | automount-support.txt | ||
14 | - information about filesystem automount support. | ||
15 | befs.txt | ||
16 | - information about the BeOS filesystem for Linux. | ||
9 | bfs.txt | 17 | bfs.txt |
10 | - info for the SCO UnixWare Boot Filesystem (BFS). | 18 | - info for the SCO UnixWare Boot Filesystem (BFS). |
11 | cifs.txt | 19 | cifs.txt |
12 | - description of the CIFS filesystem | 20 | - description of the CIFS filesystem. |
13 | coda.txt | 21 | coda.txt |
14 | - description of the CODA filesystem. | 22 | - description of the CODA filesystem. |
15 | configfs/ | 23 | configfs/ |
16 | - directory containing configfs documentation and example code. | 24 | - directory containing configfs documentation and example code. |
17 | cramfs.txt | 25 | cramfs.txt |
18 | - info on the cram filesystem for small storage (ROMs etc) | 26 | - info on the cram filesystem for small storage (ROMs etc). |
27 | dentry-locking.txt | ||
28 | - info on the RCU-based dcache locking model. | ||
19 | devfs/ | 29 | devfs/ |
20 | - directory containing devfs documentation. | 30 | - directory containing devfs documentation. |
31 | directory-locking | ||
32 | - info about the locking scheme used for directory operations. | ||
21 | dlmfs.txt | 33 | dlmfs.txt |
22 | - info on the userspace interface to the OCFS2 DLM. | 34 | - info on the userspace interface to the OCFS2 DLM. |
23 | ext2.txt | 35 | ext2.txt |
24 | - info, mount options and specifications for the Ext2 filesystem. | 36 | - info, mount options and specifications for the Ext2 filesystem. |
37 | ext3.txt | ||
38 | - info, mount options and specifications for the Ext3 filesystem. | ||
39 | files.txt | ||
40 | - info on file management in the Linux kernel. | ||
41 | fuse.txt | ||
42 | - info on the Filesystem in User SpacE including mount options. | ||
43 | hfs.txt | ||
44 | - info on the Macintosh HFS Filesystem for Linux. | ||
25 | hpfs.txt | 45 | hpfs.txt |
26 | - info and mount options for the OS/2 HPFS. | 46 | - info and mount options for the OS/2 HPFS. |
27 | isofs.txt | 47 | isofs.txt |
@@ -32,23 +52,43 @@ ncpfs.txt | |||
32 | - info on Novell Netware(tm) filesystem using NCP protocol. | 52 | - info on Novell Netware(tm) filesystem using NCP protocol. |
33 | ntfs.txt | 53 | ntfs.txt |
34 | - info and mount options for the NTFS filesystem (Windows NT). | 54 | - info and mount options for the NTFS filesystem (Windows NT). |
35 | proc.txt | ||
36 | - info on Linux's /proc filesystem. | ||
37 | ocfs2.txt | 55 | ocfs2.txt |
38 | - info and mount options for the OCFS2 clustered filesystem. | 56 | - info and mount options for the OCFS2 clustered filesystem. |
57 | porting | ||
58 | - various information on filesystem porting. | ||
59 | proc.txt | ||
60 | - info on Linux's /proc filesystem. | ||
61 | ramfs-rootfs-initramfs.txt | ||
62 | - info on the 'in memory' filesystems ramfs, rootfs and initramfs. | ||
63 | reiser4.txt | ||
64 | - info on the Reiser4 filesystem based on dancing tree algorithms. | ||
65 | relayfs.txt | ||
66 | - info on relayfs, for efficient streaming from kernel to user space. | ||
39 | romfs.txt | 67 | romfs.txt |
40 | - Description of the ROMFS filesystem. | 68 | - description of the ROMFS filesystem. |
41 | smbfs.txt | 69 | smbfs.txt |
42 | - info on using filesystems with the SMB protocol (Windows 3.11 and NT) | 70 | - info on using filesystems with the SMB protocol (Win 3.11 and NT). |
71 | spufs.txt | ||
72 | - info and mount options for the SPU filesystem used on Cell. | ||
73 | sysfs-pci.txt | ||
74 | - info on accessing PCI device resources through sysfs. | ||
75 | sysfs.txt | ||
76 | - info on sysfs, a ram-based filesystem for exporting kernel objects. | ||
43 | sysv-fs.txt | 77 | sysv-fs.txt |
44 | - info on the SystemV/V7/Xenix/Coherent filesystem. | 78 | - info on the SystemV/V7/Xenix/Coherent filesystem. |
79 | tmpfs.txt | ||
80 | - info on tmpfs, a filesystem that holds all files in virtual memory. | ||
45 | udf.txt | 81 | udf.txt |
46 | - info and mount options for the UDF filesystem. | 82 | - info and mount options for the UDF filesystem. |
47 | ufs.txt | 83 | ufs.txt |
48 | - info on the ufs filesystem. | 84 | - info on the ufs filesystem. |
85 | v9fs.txt | ||
86 | - v9fs is a Unix implementation of the Plan 9 9p remote fs protocol. | ||
49 | vfat.txt | 87 | vfat.txt |
50 | - info on using the VFAT filesystem used in Windows NT and Windows 95 | 88 | - info on using the VFAT filesystem used in Windows NT and Windows 95 |
51 | vfs.txt | 89 | vfs.txt |
52 | - Overview of the Virtual File System | 90 | - overview of the Virtual File System |
53 | xfs.txt | 91 | xfs.txt |
54 | - info and mount options for the XFS filesystem. | 92 | - info and mount options for the XFS filesystem. |
93 | xip.txt | ||
94 | - info on execute-in-place for file mappings. | ||
diff --git a/Documentation/filesystems/v9fs.txt b/Documentation/filesystems/9p.txt index 24c7a9c41f0d..43b89c214d20 100644 --- a/Documentation/filesystems/v9fs.txt +++ b/Documentation/filesystems/9p.txt | |||
@@ -1,5 +1,5 @@ | |||
1 | V9FS: 9P2000 for Linux | 1 | v9fs: Plan 9 Resource Sharing for Linux |
2 | ====================== | 2 | ======================================= |
3 | 3 | ||
4 | ABOUT | 4 | ABOUT |
5 | ===== | 5 | ===== |
@@ -9,18 +9,19 @@ v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol. | |||
9 | This software was originally developed by Ron Minnich <rminnich@lanl.gov> | 9 | This software was originally developed by Ron Minnich <rminnich@lanl.gov> |
10 | and Maya Gokhale <maya@lanl.gov>. Additional development by Greg Watson | 10 | and Maya Gokhale <maya@lanl.gov>. Additional development by Greg Watson |
11 | <gwatson@lanl.gov> and most recently Eric Van Hensbergen | 11 | <gwatson@lanl.gov> and most recently Eric Van Hensbergen |
12 | <ericvh@gmail.com> and Latchesar Ionkov <lucho@ionkov.net>. | 12 | <ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox |
13 | <rsc@swtch.com>. | ||
13 | 14 | ||
14 | USAGE | 15 | USAGE |
15 | ===== | 16 | ===== |
16 | 17 | ||
17 | For remote file server: | 18 | For remote file server: |
18 | 19 | ||
19 | mount -t 9P 10.10.1.2 /mnt/9 | 20 | mount -t 9p 10.10.1.2 /mnt/9 |
20 | 21 | ||
21 | For Plan 9 From User Space applications (http://swtch.com/plan9) | 22 | For Plan 9 From User Space applications (http://swtch.com/plan9) |
22 | 23 | ||
23 | mount -t 9P `namespace`/acme /mnt/9 -o proto=unix,name=$USER | 24 | mount -t 9p `namespace`/acme /mnt/9 -o proto=unix,uname=$USER |
24 | 25 | ||
25 | OPTIONS | 26 | OPTIONS |
26 | ======= | 27 | ======= |
@@ -32,7 +33,7 @@ OPTIONS | |||
32 | fd - used passed file descriptors for connection | 33 | fd - used passed file descriptors for connection |
33 | (see rfdno and wfdno) | 34 | (see rfdno and wfdno) |
34 | 35 | ||
35 | name=name user name to attempt mount as on the remote server. The | 36 | uname=name user name to attempt mount as on the remote server. The |
36 | server may override or ignore this value. Certain user | 37 | server may override or ignore this value. Certain user |
37 | names may require authentication. | 38 | names may require authentication. |
38 | 39 | ||
@@ -42,7 +43,7 @@ OPTIONS | |||
42 | debug=n specifies debug level. The debug level is a bitmask. | 43 | debug=n specifies debug level. The debug level is a bitmask. |
43 | 0x01 = display verbose error messages | 44 | 0x01 = display verbose error messages |
44 | 0x02 = developer debug (DEBUG_CURRENT) | 45 | 0x02 = developer debug (DEBUG_CURRENT) |
45 | 0x04 = display 9P trace | 46 | 0x04 = display 9p trace |
46 | 0x08 = display VFS trace | 47 | 0x08 = display VFS trace |
47 | 0x10 = display Marshalling debug | 48 | 0x10 = display Marshalling debug |
48 | 0x20 = display RPC debug | 49 | 0x20 = display RPC debug |
@@ -53,11 +54,11 @@ OPTIONS | |||
53 | 54 | ||
54 | wfdno=n the file descriptor for writing with proto=fd | 55 | wfdno=n the file descriptor for writing with proto=fd |
55 | 56 | ||
56 | maxdata=n the number of bytes to use for 9P packet payload (msize) | 57 | maxdata=n the number of bytes to use for 9p packet payload (msize) |
57 | 58 | ||
58 | port=n port to connect to on the remote server | 59 | port=n port to connect to on the remote server |
59 | 60 | ||
60 | noextend force legacy mode (no 9P2000.u semantics) | 61 | noextend force legacy mode (no 9p2000.u semantics) |
61 | 62 | ||
62 | uid attempt to mount as a particular uid | 63 | uid attempt to mount as a particular uid |
63 | 64 | ||
@@ -72,7 +73,7 @@ OPTIONS | |||
72 | RESOURCES | 73 | RESOURCES |
73 | ========= | 74 | ========= |
74 | 75 | ||
75 | The Linux version of the 9P server is now maintained under the npfs project | 76 | The Linux version of the 9p server is now maintained under the npfs project |
76 | on sourceforge (http://sourceforge.net/projects/npfs). | 77 | on sourceforge (http://sourceforge.net/projects/npfs). |
77 | 78 | ||
78 | There are user and developer mailing lists available through the v9fs project | 79 | There are user and developer mailing lists available through the v9fs project |
diff --git a/Documentation/filesystems/isofs.txt b/Documentation/filesystems/isofs.txt index 424585ff6ea1..758e50401c16 100644 --- a/Documentation/filesystems/isofs.txt +++ b/Documentation/filesystems/isofs.txt | |||
@@ -9,9 +9,9 @@ when using discs encoded using Microsoft's Joliet extensions. | |||
9 | iocharset=name Character set to use for converting from Unicode to | 9 | iocharset=name Character set to use for converting from Unicode to |
10 | ASCII. Joliet filenames are stored in Unicode format, but | 10 | ASCII. Joliet filenames are stored in Unicode format, but |
11 | Unix for the most part doesn't know how to deal with Unicode. | 11 | Unix for the most part doesn't know how to deal with Unicode. |
12 | There is also an option of doing UTF8 translations with the | 12 | There is also an option of doing UTF-8 translations with the |
13 | utf8 option. | 13 | utf8 option. |
14 | utf8 Encode Unicode names in UTF8 format. Default is no. | 14 | utf8 Encode Unicode names in UTF-8 format. Default is no. |
15 | 15 | ||
16 | Mount options unique to the isofs filesystem. | 16 | Mount options unique to the isofs filesystem. |
17 | block=512 Set the block size for the disk to 512 bytes | 17 | block=512 Set the block size for the disk to 512 bytes |
diff --git a/Documentation/filesystems/jfs.txt b/Documentation/filesystems/jfs.txt index 3e992daf99ad..bae128663748 100644 --- a/Documentation/filesystems/jfs.txt +++ b/Documentation/filesystems/jfs.txt | |||
@@ -6,7 +6,7 @@ The following mount options are supported: | |||
6 | 6 | ||
7 | iocharset=name Character set to use for converting from Unicode to | 7 | iocharset=name Character set to use for converting from Unicode to |
8 | ASCII. The default is to do no conversion. Use | 8 | ASCII. The default is to do no conversion. Use |
9 | iocharset=utf8 for UTF8 translations. This requires | 9 | iocharset=utf8 for UTF-8 translations. This requires |
10 | CONFIG_NLS_UTF8 to be set in the kernel .config file. | 10 | CONFIG_NLS_UTF8 to be set in the kernel .config file. |
11 | iocharset=none specifies the default behavior explicitly. | 11 | iocharset=none specifies the default behavior explicitly. |
12 | 12 | ||
diff --git a/Documentation/filesystems/ntfs.txt b/Documentation/filesystems/ntfs.txt index 251168587899..638cbd3d2b00 100644 --- a/Documentation/filesystems/ntfs.txt +++ b/Documentation/filesystems/ntfs.txt | |||
@@ -457,6 +457,11 @@ ChangeLog | |||
457 | 457 | ||
458 | Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog. | 458 | Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog. |
459 | 459 | ||
460 | 2.1.27: | ||
461 | - Implement page migration support so the kernel can move memory used | ||
462 | by NTFS files and directories around for management purposes. | ||
463 | - Add support for writing to sparse files created with Windows XP SP2. | ||
464 | - Many minor improvements and bug fixes. | ||
460 | 2.1.26: | 465 | 2.1.26: |
461 | - Implement support for sector sizes above 512 bytes (up to the maximum | 466 | - Implement support for sector sizes above 512 bytes (up to the maximum |
462 | supported by NTFS which is 4096 bytes). | 467 | supported by NTFS which is 4096 bytes). |
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index 944cf109a6f5..99902ae6804e 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -121,7 +121,7 @@ Table 1-1: Process specific entries in /proc | |||
121 | .............................................................................. | 121 | .............................................................................. |
122 | File Content | 122 | File Content |
123 | cmdline Command line arguments | 123 | cmdline Command line arguments |
124 | cpu Current and last cpu in wich it was executed (2.4)(smp) | 124 | cpu Current and last cpu in which it was executed (2.4)(smp) |
125 | cwd Link to the current working directory | 125 | cwd Link to the current working directory |
126 | environ Values of environment variables | 126 | environ Values of environment variables |
127 | exe Link to the executable of this process | 127 | exe Link to the executable of this process |
@@ -309,13 +309,13 @@ is the same by default: | |||
309 | > cat /proc/irq/0/smp_affinity | 309 | > cat /proc/irq/0/smp_affinity |
310 | ffffffff | 310 | ffffffff |
311 | 311 | ||
312 | It's a bitmask, in wich you can specify wich CPUs can handle the IRQ, you can | 312 | It's a bitmask, in which you can specify which CPUs can handle the IRQ, you can |
313 | set it by doing: | 313 | set it by doing: |
314 | 314 | ||
315 | > echo 1 > /proc/irq/prof_cpu_mask | 315 | > echo 1 > /proc/irq/prof_cpu_mask |
316 | 316 | ||
317 | This means that only the first CPU will handle the IRQ, but you can also echo 5 | 317 | This means that only the first CPU will handle the IRQ, but you can also echo 5 |
318 | wich means that only the first and fourth CPU can handle the IRQ. | 318 | which means that only the first and fourth CPU can handle the IRQ. |
319 | 319 | ||
320 | The way IRQs are routed is handled by the IO-APIC, and it's Round Robin | 320 | The way IRQs are routed is handled by the IO-APIC, and it's Round Robin |
321 | between all the CPUs which are allowed to handle it. As usual the kernel has | 321 | between all the CPUs which are allowed to handle it. As usual the kernel has |
diff --git a/Documentation/filesystems/udf.txt b/Documentation/filesystems/udf.txt index e5213bc301f7..511b4230c053 100644 --- a/Documentation/filesystems/udf.txt +++ b/Documentation/filesystems/udf.txt | |||
@@ -26,6 +26,20 @@ The following mount options are supported: | |||
26 | nostrict Unset strict conformance | 26 | nostrict Unset strict conformance |
27 | iocharset= Set the NLS character set | 27 | iocharset= Set the NLS character set |
28 | 28 | ||
29 | The uid= and gid= options need a bit more explaining. They will accept a | ||
30 | decimal numeric value which will be used as the default ID for that mount. | ||
31 | They will also accept the string "ignore" and "forget". For files on the disk | ||
32 | that are owned by nobody ( -1 ), they will instead look as if they are owned | ||
33 | by the default ID. The ignore option causes the default ID to override all | ||
34 | IDs on the disk, not just -1. The forget option causes all IDs to be written | ||
35 | to disk as -1, so when the media is later remounted, they will appear to be | ||
36 | owned by whatever default ID it is mounted with at that time. | ||
37 | |||
38 | For typical desktop use of removable media, you should set the ID to that | ||
39 | of the interactively logged on user, and also specify both the forget and | ||
40 | ignore options. This way the interactive user will always see the files | ||
41 | on the disk as belonging to him. | ||
42 | |||
29 | The remaining are for debugging and disaster recovery: | 43 | The remaining are for debugging and disaster recovery: |
30 | 44 | ||
31 | novrs Skip volume sequence recognition | 45 | novrs Skip volume sequence recognition |
diff --git a/Documentation/filesystems/vfat.txt b/Documentation/filesystems/vfat.txt index 5ead20c6c744..2001abbc60e6 100644 --- a/Documentation/filesystems/vfat.txt +++ b/Documentation/filesystems/vfat.txt | |||
@@ -28,16 +28,16 @@ iocharset=name -- Character set to use for converting between the | |||
28 | know how to deal with Unicode. | 28 | know how to deal with Unicode. |
29 | By default, FAT_DEFAULT_IOCHARSET setting is used. | 29 | By default, FAT_DEFAULT_IOCHARSET setting is used. |
30 | 30 | ||
31 | There is also an option of doing UTF8 translations | 31 | There is also an option of doing UTF-8 translations |
32 | with the utf8 option. | 32 | with the utf8 option. |
33 | 33 | ||
34 | NOTE: "iocharset=utf8" is not recommended. If unsure, | 34 | NOTE: "iocharset=utf8" is not recommended. If unsure, |
35 | you should consider the following option instead. | 35 | you should consider the following option instead. |
36 | 36 | ||
37 | utf8=<bool> -- UTF8 is the filesystem safe version of Unicode that | 37 | utf8=<bool> -- UTF-8 is the filesystem safe version of Unicode that |
38 | is used by the console. It can be be enabled for the | 38 | is used by the console. It can be be enabled for the |
39 | filesystem with this option. If 'uni_xlate' gets set, | 39 | filesystem with this option. If 'uni_xlate' gets set, |
40 | UTF8 gets disabled. | 40 | UTF-8 gets disabled. |
41 | 41 | ||
42 | uni_xlate=<bool> -- Translate unhandled Unicode characters to special | 42 | uni_xlate=<bool> -- Translate unhandled Unicode characters to special |
43 | escaped sequences. This would let you backup and | 43 | escaped sequences. This would let you backup and |
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index e56e842847d3..adaa899e5c90 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt | |||
@@ -230,10 +230,15 @@ only called from a process context (i.e. not from an interrupt handler | |||
230 | or bottom half). | 230 | or bottom half). |
231 | 231 | ||
232 | alloc_inode: this method is called by inode_alloc() to allocate memory | 232 | alloc_inode: this method is called by inode_alloc() to allocate memory |
233 | for struct inode and initialize it. | 233 | for struct inode and initialize it. If this function is not |
234 | defined, a simple 'struct inode' is allocated. Normally | ||
235 | alloc_inode will be used to allocate a larger structure which | ||
236 | contains a 'struct inode' embedded within it. | ||
234 | 237 | ||
235 | destroy_inode: this method is called by destroy_inode() to release | 238 | destroy_inode: this method is called by destroy_inode() to release |
236 | resources allocated for struct inode. | 239 | resources allocated for struct inode. It is only required if |
240 | ->alloc_inode was defined and simply undoes anything done by | ||
241 | ->alloc_inode. | ||
237 | 242 | ||
238 | read_inode: this method is called to read a specific inode from the | 243 | read_inode: this method is called to read a specific inode from the |
239 | mounted filesystem. The i_ino member in the struct inode is | 244 | mounted filesystem. The i_ino member in the struct inode is |
@@ -443,14 +448,81 @@ otherwise noted. | |||
443 | The Address Space Object | 448 | The Address Space Object |
444 | ======================== | 449 | ======================== |
445 | 450 | ||
446 | The address space object is used to identify pages in the page cache. | 451 | The address space object is used to group and manage pages in the page |
447 | 452 | cache. It can be used to keep track of the pages in a file (or | |
453 | anything else) and also track the mapping of sections of the file into | ||
454 | process address spaces. | ||
455 | |||
456 | There are a number of distinct yet related services that an | ||
457 | address-space can provide. These include communicating memory | ||
458 | pressure, page lookup by address, and keeping track of pages tagged as | ||
459 | Dirty or Writeback. | ||
460 | |||
461 | The first can be used independently to the others. The VM can try to | ||
462 | either write dirty pages in order to clean them, or release clean | ||
463 | pages in order to reuse them. To do this it can call the ->writepage | ||
464 | method on dirty pages, and ->releasepage on clean pages with | ||
465 | PagePrivate set. Clean pages without PagePrivate and with no external | ||
466 | references will be released without notice being given to the | ||
467 | address_space. | ||
468 | |||
469 | To achieve this functionality, pages need to be placed on an LRU with | ||
470 | lru_cache_add and mark_page_active needs to be called whenever the | ||
471 | page is used. | ||
472 | |||
473 | Pages are normally kept in a radix tree index by ->index. This tree | ||
474 | maintains information about the PG_Dirty and PG_Writeback status of | ||
475 | each page, so that pages with either of these flags can be found | ||
476 | quickly. | ||
477 | |||
478 | The Dirty tag is primarily used by mpage_writepages - the default | ||
479 | ->writepages method. It uses the tag to find dirty pages to call | ||
480 | ->writepage on. If mpage_writepages is not used (i.e. the address | ||
481 | provides its own ->writepages) , the PAGECACHE_TAG_DIRTY tag is | ||
482 | almost unused. write_inode_now and sync_inode do use it (through | ||
483 | __sync_single_inode) to check if ->writepages has been successful in | ||
484 | writing out the whole address_space. | ||
485 | |||
486 | The Writeback tag is used by filemap*wait* and sync_page* functions, | ||
487 | via wait_on_page_writeback_range, to wait for all writeback to | ||
488 | complete. While waiting ->sync_page (if defined) will be called on | ||
489 | each page that is found to require writeback. | ||
490 | |||
491 | An address_space handler may attach extra information to a page, | ||
492 | typically using the 'private' field in the 'struct page'. If such | ||
493 | information is attached, the PG_Private flag should be set. This will | ||
494 | cause various VM routines to make extra calls into the address_space | ||
495 | handler to deal with that data. | ||
496 | |||
497 | An address space acts as an intermediate between storage and | ||
498 | application. Data is read into the address space a whole page at a | ||
499 | time, and provided to the application either by copying of the page, | ||
500 | or by memory-mapping the page. | ||
501 | Data is written into the address space by the application, and then | ||
502 | written-back to storage typically in whole pages, however the | ||
503 | address_space has finer control of write sizes. | ||
504 | |||
505 | The read process essentially only requires 'readpage'. The write | ||
506 | process is more complicated and uses prepare_write/commit_write or | ||
507 | set_page_dirty to write data into the address_space, and writepage, | ||
508 | sync_page, and writepages to writeback data to storage. | ||
509 | |||
510 | Adding and removing pages to/from an address_space is protected by the | ||
511 | inode's i_mutex. | ||
512 | |||
513 | When data is written to a page, the PG_Dirty flag should be set. It | ||
514 | typically remains set until writepage asks for it to be written. This | ||
515 | should clear PG_Dirty and set PG_Writeback. It can be actually | ||
516 | written at any point after PG_Dirty is clear. Once it is known to be | ||
517 | safe, PG_Writeback is cleared. | ||
518 | |||
519 | Writeback makes use of a writeback_control structure... | ||
448 | 520 | ||
449 | struct address_space_operations | 521 | struct address_space_operations |
450 | ------------------------------- | 522 | ------------------------------- |
451 | 523 | ||
452 | This describes how the VFS can manipulate mapping of a file to page cache in | 524 | This describes how the VFS can manipulate mapping of a file to page cache in |
453 | your filesystem. As of kernel 2.6.13, the following members are defined: | 525 | your filesystem. As of kernel 2.6.16, the following members are defined: |
454 | 526 | ||
455 | struct address_space_operations { | 527 | struct address_space_operations { |
456 | int (*writepage)(struct page *page, struct writeback_control *wbc); | 528 | int (*writepage)(struct page *page, struct writeback_control *wbc); |
@@ -469,47 +541,148 @@ struct address_space_operations { | |||
469 | loff_t offset, unsigned long nr_segs); | 541 | loff_t offset, unsigned long nr_segs); |
470 | struct page* (*get_xip_page)(struct address_space *, sector_t, | 542 | struct page* (*get_xip_page)(struct address_space *, sector_t, |
471 | int); | 543 | int); |
544 | /* migrate the contents of a page to the specified target */ | ||
545 | int (*migratepage) (struct page *, struct page *); | ||
472 | }; | 546 | }; |
473 | 547 | ||
474 | writepage: called by the VM write a dirty page to backing store. | 548 | writepage: called by the VM to write a dirty page to backing store. |
549 | This may happen for data integrity reasons (i.e. 'sync'), or | ||
550 | to free up memory (flush). The difference can be seen in | ||
551 | wbc->sync_mode. | ||
552 | The PG_Dirty flag has been cleared and PageLocked is true. | ||
553 | writepage should start writeout, should set PG_Writeback, | ||
554 | and should make sure the page is unlocked, either synchronously | ||
555 | or asynchronously when the write operation completes. | ||
556 | |||
557 | If wbc->sync_mode is WB_SYNC_NONE, ->writepage doesn't have to | ||
558 | try too hard if there are problems, and may choose to write out | ||
559 | other pages from the mapping if that is easier (e.g. due to | ||
560 | internal dependencies). If it chooses not to start writeout, it | ||
561 | should return AOP_WRITEPAGE_ACTIVATE so that the VM will not keep | ||
562 | calling ->writepage on that page. | ||
563 | |||
564 | See the file "Locking" for more details. | ||
475 | 565 | ||
476 | readpage: called by the VM to read a page from backing store. | 566 | readpage: called by the VM to read a page from backing store. |
567 | The page will be Locked when readpage is called, and should be | ||
568 | unlocked and marked uptodate once the read completes. | ||
569 | If ->readpage discovers that it needs to unlock the page for | ||
570 | some reason, it can do so, and then return AOP_TRUNCATED_PAGE. | ||
571 | In this case, the page will be relocated, relocked and if | ||
572 | that all succeeds, ->readpage will be called again. | ||
477 | 573 | ||
478 | sync_page: called by the VM to notify the backing store to perform all | 574 | sync_page: called by the VM to notify the backing store to perform all |
479 | queued I/O operations for a page. I/O operations for other pages | 575 | queued I/O operations for a page. I/O operations for other pages |
480 | associated with this address_space object may also be performed. | 576 | associated with this address_space object may also be performed. |
481 | 577 | ||
578 | This function is optional and is called only for pages with | ||
579 | PG_Writeback set while waiting for the writeback to complete. | ||
580 | |||
482 | writepages: called by the VM to write out pages associated with the | 581 | writepages: called by the VM to write out pages associated with the |
483 | address_space object. | 582 | address_space object. If wbc->sync_mode is WBC_SYNC_ALL, then |
583 | the writeback_control will specify a range of pages that must be | ||
584 | written out. If it is WBC_SYNC_NONE, then a nr_to_write is given | ||
585 | and that many pages should be written if possible. | ||
586 | If no ->writepages is given, then mpage_writepages is used | ||
587 | instead. This will choose pages from the address space that are | ||
588 | tagged as DIRTY and will pass them to ->writepage. | ||
484 | 589 | ||
485 | set_page_dirty: called by the VM to set a page dirty. | 590 | set_page_dirty: called by the VM to set a page dirty. |
591 | This is particularly needed if an address space attaches | ||
592 | private data to a page, and that data needs to be updated when | ||
593 | a page is dirtied. This is called, for example, when a memory | ||
594 | mapped page gets modified. | ||
595 | If defined, it should set the PageDirty flag, and the | ||
596 | PAGECACHE_TAG_DIRTY tag in the radix tree. | ||
486 | 597 | ||
487 | readpages: called by the VM to read pages associated with the address_space | 598 | readpages: called by the VM to read pages associated with the address_space |
488 | object. | 599 | object. This is essentially just a vector version of |
600 | readpage. Instead of just one page, several pages are | ||
601 | requested. | ||
602 | readpages is only used for read-ahead, so read errors are | ||
603 | ignored. If anything goes wrong, feel free to give up. | ||
489 | 604 | ||
490 | prepare_write: called by the generic write path in VM to set up a write | 605 | prepare_write: called by the generic write path in VM to set up a write |
491 | request for a page. | 606 | request for a page. This indicates to the address space that |
492 | 607 | the given range of bytes is about to be written. The | |
493 | commit_write: called by the generic write path in VM to write page to | 608 | address_space should check that the write will be able to |
494 | its backing store. | 609 | complete, by allocating space if necessary and doing any other |
610 | internal housekeeping. If the write will update parts of | ||
611 | any basic-blocks on storage, then those blocks should be | ||
612 | pre-read (if they haven't been read already) so that the | ||
613 | updated blocks can be written out properly. | ||
614 | The page will be locked. If prepare_write wants to unlock the | ||
615 | page it, like readpage, may do so and return | ||
616 | AOP_TRUNCATED_PAGE. | ||
617 | In this case the prepare_write will be retried one the lock is | ||
618 | regained. | ||
619 | |||
620 | commit_write: If prepare_write succeeds, new data will be copied | ||
621 | into the page and then commit_write will be called. It will | ||
622 | typically update the size of the file (if appropriate) and | ||
623 | mark the inode as dirty, and do any other related housekeeping | ||
624 | operations. It should avoid returning an error if possible - | ||
625 | errors should have been handled by prepare_write. | ||
495 | 626 | ||
496 | bmap: called by the VFS to map a logical block offset within object to | 627 | bmap: called by the VFS to map a logical block offset within object to |
497 | physical block number. This method is use by for the legacy FIBMAP | 628 | physical block number. This method is used by the FIBMAP |
498 | ioctl. Other uses are discouraged. | 629 | ioctl and for working with swap-files. To be able to swap to |
499 | 630 | a file, the file must have a stable mapping to a block | |
500 | invalidatepage: called by the VM on truncate to disassociate a page from its | 631 | device. The swap system does not go through the filesystem |
501 | address_space mapping. | 632 | but instead uses bmap to find out where the blocks in the file |
502 | 633 | are and uses those addresses directly. | |
503 | releasepage: called by the VFS to release filesystem specific metadata from | 634 | |
504 | a page. | 635 | |
505 | 636 | invalidatepage: If a page has PagePrivate set, then invalidatepage | |
506 | direct_IO: called by the VM for direct I/O writes and reads. | 637 | will be called when part or all of the page is to be removed |
638 | from the address space. This generally corresponds to either a | ||
639 | truncation or a complete invalidation of the address space | ||
640 | (in the latter case 'offset' will always be 0). | ||
641 | Any private data associated with the page should be updated | ||
642 | to reflect this truncation. If offset is 0, then | ||
643 | the private data should be released, because the page | ||
644 | must be able to be completely discarded. This may be done by | ||
645 | calling the ->releasepage function, but in this case the | ||
646 | release MUST succeed. | ||
647 | |||
648 | releasepage: releasepage is called on PagePrivate pages to indicate | ||
649 | that the page should be freed if possible. ->releasepage | ||
650 | should remove any private data from the page and clear the | ||
651 | PagePrivate flag. It may also remove the page from the | ||
652 | address_space. If this fails for some reason, it may indicate | ||
653 | failure with a 0 return value. | ||
654 | This is used in two distinct though related cases. The first | ||
655 | is when the VM finds a clean page with no active users and | ||
656 | wants to make it a free page. If ->releasepage succeeds, the | ||
657 | page will be removed from the address_space and become free. | ||
658 | |||
659 | The second case if when a request has been made to invalidate | ||
660 | some or all pages in an address_space. This can happen | ||
661 | through the fadvice(POSIX_FADV_DONTNEED) system call or by the | ||
662 | filesystem explicitly requesting it as nfs and 9fs do (when | ||
663 | they believe the cache may be out of date with storage) by | ||
664 | calling invalidate_inode_pages2(). | ||
665 | If the filesystem makes such a call, and needs to be certain | ||
666 | that all pages are invalidated, then its releasepage will | ||
667 | need to ensure this. Possibly it can clear the PageUptodate | ||
668 | bit if it cannot free private data yet. | ||
669 | |||
670 | direct_IO: called by the generic read/write routines to perform | ||
671 | direct_IO - that is IO requests which bypass the page cache | ||
672 | and transfer data directly between the storage and the | ||
673 | application's address space. | ||
507 | 674 | ||
508 | get_xip_page: called by the VM to translate a block number to a page. | 675 | get_xip_page: called by the VM to translate a block number to a page. |
509 | The page is valid until the corresponding filesystem is unmounted. | 676 | The page is valid until the corresponding filesystem is unmounted. |
510 | Filesystems that want to use execute-in-place (XIP) need to implement | 677 | Filesystems that want to use execute-in-place (XIP) need to implement |
511 | it. An example implementation can be found in fs/ext2/xip.c. | 678 | it. An example implementation can be found in fs/ext2/xip.c. |
512 | 679 | ||
680 | migrate_page: This is used to compact the physical memory usage. | ||
681 | If the VM wants to relocate a page (maybe off a memory card | ||
682 | that is signalling imminent failure) it will pass a new page | ||
683 | and an old page to this function. migrate_page should | ||
684 | transfer any private data across and update any references | ||
685 | that it has to the page. | ||
513 | 686 | ||
514 | The File Object | 687 | The File Object |
515 | =============== | 688 | =============== |
diff --git a/Documentation/firmware_class/firmware_sample_driver.c b/Documentation/firmware_class/firmware_sample_driver.c index d3ad2c24490a..ad3edaba4533 100644 --- a/Documentation/firmware_class/firmware_sample_driver.c +++ b/Documentation/firmware_class/firmware_sample_driver.c | |||
@@ -23,7 +23,6 @@ char __init inkernel_firmware[] = "let's say that this is firmware\n"; | |||
23 | #endif | 23 | #endif |
24 | 24 | ||
25 | static struct device ghost_device = { | 25 | static struct device ghost_device = { |
26 | .name = "Ghost Device", | ||
27 | .bus_id = "ghost0", | 26 | .bus_id = "ghost0", |
28 | }; | 27 | }; |
29 | 28 | ||
@@ -92,7 +91,7 @@ static void sample_probe_async(void) | |||
92 | { | 91 | { |
93 | /* Let's say that I can't sleep */ | 92 | /* Let's say that I can't sleep */ |
94 | int error; | 93 | int error; |
95 | error = request_firmware_nowait (THIS_MODULE, | 94 | error = request_firmware_nowait (THIS_MODULE, FW_ACTION_NOHOTPLUG, |
96 | "sample_driver_fw", &ghost_device, | 95 | "sample_driver_fw", &ghost_device, |
97 | "my device pointer", | 96 | "my device pointer", |
98 | sample_probe_async_cont); | 97 | sample_probe_async_cont); |
diff --git a/Documentation/firmware_class/firmware_sample_firmware_class.c b/Documentation/firmware_class/firmware_sample_firmware_class.c index 57b956aecbc5..9e1b0e4051cd 100644 --- a/Documentation/firmware_class/firmware_sample_firmware_class.c +++ b/Documentation/firmware_class/firmware_sample_firmware_class.c | |||
@@ -172,7 +172,6 @@ static void fw_remove_class_device(struct class_device *class_dev) | |||
172 | static struct class_device *class_dev; | 172 | static struct class_device *class_dev; |
173 | 173 | ||
174 | static struct device my_device = { | 174 | static struct device my_device = { |
175 | .name = "Sample Device", | ||
176 | .bus_id = "my_dev0", | 175 | .bus_id = "my_dev0", |
177 | }; | 176 | }; |
178 | 177 | ||
diff --git a/Documentation/hwmon/w83627hf b/Documentation/hwmon/w83627hf index bbeaba680443..792231921241 100644 --- a/Documentation/hwmon/w83627hf +++ b/Documentation/hwmon/w83627hf | |||
@@ -18,6 +18,10 @@ Supported chips: | |||
18 | Prefix: 'w83637hf' | 18 | Prefix: 'w83637hf' |
19 | Addresses scanned: ISA address retrieved from Super I/O registers | 19 | Addresses scanned: ISA address retrieved from Super I/O registers |
20 | Datasheet: http://www.winbond.com/PDF/sheet/w83637hf.pdf | 20 | Datasheet: http://www.winbond.com/PDF/sheet/w83637hf.pdf |
21 | * Winbond W83687THF | ||
22 | Prefix: 'w83687thf' | ||
23 | Addresses scanned: ISA address retrieved from Super I/O registers | ||
24 | Datasheet: Provided by Winbond on request | ||
21 | 25 | ||
22 | Authors: | 26 | Authors: |
23 | Frodo Looijaard <frodol@dds.nl>, | 27 | Frodo Looijaard <frodol@dds.nl>, |
diff --git a/Documentation/hwmon/w83781d b/Documentation/hwmon/w83781d index e5459333ba68..b1e9f80098ee 100644 --- a/Documentation/hwmon/w83781d +++ b/Documentation/hwmon/w83781d | |||
@@ -36,6 +36,11 @@ Module parameters | |||
36 | Use 'init=0' to bypass initializing the chip. | 36 | Use 'init=0' to bypass initializing the chip. |
37 | Try this if your computer crashes when you load the module. | 37 | Try this if your computer crashes when you load the module. |
38 | 38 | ||
39 | * reset int | ||
40 | (default 0) | ||
41 | The driver used to reset the chip on load, but does no more. Use | ||
42 | 'reset=1' to restore the old behavior. Report if you need to do this. | ||
43 | |||
39 | force_subclients=bus,caddr,saddr,saddr | 44 | force_subclients=bus,caddr,saddr,saddr |
40 | This is used to force the i2c addresses for subclients of | 45 | This is used to force the i2c addresses for subclients of |
41 | a certain chip. Typical usage is `force_subclients=0,0x2d,0x4a,0x4b' | 46 | a certain chip. Typical usage is `force_subclients=0,0x2d,0x4a,0x4b' |
@@ -123,6 +128,25 @@ When an alarm goes off, you can be warned by a beeping signal through | |||
123 | your computer speaker. It is possible to enable all beeping globally, | 128 | your computer speaker. It is possible to enable all beeping globally, |
124 | or only the beeping for some alarms. | 129 | or only the beeping for some alarms. |
125 | 130 | ||
131 | Individual alarm and beep bits: | ||
132 | |||
133 | 0x000001: in0 | ||
134 | 0x000002: in1 | ||
135 | 0x000004: in2 | ||
136 | 0x000008: in3 | ||
137 | 0x000010: temp1 | ||
138 | 0x000020: temp2 (+temp3 on W83781D) | ||
139 | 0x000040: fan1 | ||
140 | 0x000080: fan2 | ||
141 | 0x000100: in4 | ||
142 | 0x000200: in5 | ||
143 | 0x000400: in6 | ||
144 | 0x000800: fan3 | ||
145 | 0x001000: chassis | ||
146 | 0x002000: temp3 (W83782D and W83627HF only) | ||
147 | 0x010000: in7 (W83782D and W83627HF only) | ||
148 | 0x020000: in8 (W83782D and W83627HF only) | ||
149 | |||
126 | If an alarm triggers, it will remain triggered until the hardware register | 150 | If an alarm triggers, it will remain triggered until the hardware register |
127 | is read at least once. This means that the cause for the alarm may | 151 | is read at least once. This means that the cause for the alarm may |
128 | already have disappeared! Note that in the current implementation, all | 152 | already have disappeared! Note that in the current implementation, all |
diff --git a/Documentation/i2c/busses/i2c-piix4 b/Documentation/i2c/busses/i2c-piix4 index 856b4b8b962c..a1c8f581afed 100644 --- a/Documentation/i2c/busses/i2c-piix4 +++ b/Documentation/i2c/busses/i2c-piix4 | |||
@@ -4,7 +4,7 @@ Supported adapters: | |||
4 | * Intel 82371AB PIIX4 and PIIX4E | 4 | * Intel 82371AB PIIX4 and PIIX4E |
5 | * Intel 82443MX (440MX) | 5 | * Intel 82443MX (440MX) |
6 | Datasheet: Publicly available at the Intel website | 6 | Datasheet: Publicly available at the Intel website |
7 | * ServerWorks OSB4, CSB5 and CSB6 southbridges | 7 | * ServerWorks OSB4, CSB5, CSB6 and HT-1000 southbridges |
8 | Datasheet: Only available via NDA from ServerWorks | 8 | Datasheet: Only available via NDA from ServerWorks |
9 | * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge | 9 | * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge |
10 | Datasheet: Publicly available at the SMSC website http://www.smsc.com | 10 | Datasheet: Publicly available at the SMSC website http://www.smsc.com |
diff --git a/Documentation/i2c/busses/scx200_acb b/Documentation/i2c/busses/scx200_acb index 08c8cd1df60c..f50e69981ec6 100644 --- a/Documentation/i2c/busses/scx200_acb +++ b/Documentation/i2c/busses/scx200_acb | |||
@@ -6,9 +6,10 @@ Module Parameters | |||
6 | ----------------- | 6 | ----------------- |
7 | 7 | ||
8 | * base: int | 8 | * base: int |
9 | Base addresses for the ACCESS.bus controllers | 9 | Base addresses for the ACCESS.bus controllers on SCx200 and SC1100 devices |
10 | 10 | ||
11 | Description | 11 | Description |
12 | ----------- | 12 | ----------- |
13 | 13 | ||
14 | Enable the use of the ACCESS.bus controllers of a SCx200 processor. | 14 | Enable the use of the ACCESS.bus controller on the Geode SCx200 and |
15 | SC1100 processors and the CS5535 and CS5536 Geode companion devices. | ||
diff --git a/Documentation/ioctl-number.txt b/Documentation/ioctl-number.txt index 7d5ce496f39f..93a86ac23cdd 100644 --- a/Documentation/ioctl-number.txt +++ b/Documentation/ioctl-number.txt | |||
@@ -78,8 +78,6 @@ Code Seq# Include File Comments | |||
78 | '#' 00-3F IEEE 1394 Subsystem Block for the entire subsystem | 78 | '#' 00-3F IEEE 1394 Subsystem Block for the entire subsystem |
79 | '1' 00-1F <linux/timepps.h> PPS kit from Ulrich Windl | 79 | '1' 00-1F <linux/timepps.h> PPS kit from Ulrich Windl |
80 | <ftp://ftp.de.kernel.org/pub/linux/daemons/ntp/PPS/> | 80 | <ftp://ftp.de.kernel.org/pub/linux/daemons/ntp/PPS/> |
81 | '6' 00-10 <asm-i386/processor.h> Intel IA32 microcode update driver | ||
82 | <mailto:tigran@veritas.com> | ||
83 | '8' all SNP8023 advanced NIC card | 81 | '8' all SNP8023 advanced NIC card |
84 | <mailto:mcr@solidum.com> | 82 | <mailto:mcr@solidum.com> |
85 | 'A' 00-1F linux/apm_bios.h | 83 | 'A' 00-1F linux/apm_bios.h |
diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt index 443230b43e09..a9c00facdf40 100644 --- a/Documentation/kbuild/makefiles.txt +++ b/Documentation/kbuild/makefiles.txt | |||
@@ -17,6 +17,7 @@ This document describes the Linux kernel Makefiles. | |||
17 | --- 3.8 Command line dependency | 17 | --- 3.8 Command line dependency |
18 | --- 3.9 Dependency tracking | 18 | --- 3.9 Dependency tracking |
19 | --- 3.10 Special Rules | 19 | --- 3.10 Special Rules |
20 | --- 3.11 $(CC) support functions | ||
20 | 21 | ||
21 | === 4 Host Program support | 22 | === 4 Host Program support |
22 | --- 4.1 Simple Host Program | 23 | --- 4.1 Simple Host Program |
@@ -38,7 +39,6 @@ This document describes the Linux kernel Makefiles. | |||
38 | --- 6.6 Commands useful for building a boot image | 39 | --- 6.6 Commands useful for building a boot image |
39 | --- 6.7 Custom kbuild commands | 40 | --- 6.7 Custom kbuild commands |
40 | --- 6.8 Preprocessing linker scripts | 41 | --- 6.8 Preprocessing linker scripts |
41 | --- 6.9 $(CC) support functions | ||
42 | 42 | ||
43 | === 7 Kbuild Variables | 43 | === 7 Kbuild Variables |
44 | === 8 Makefile language | 44 | === 8 Makefile language |
@@ -106,9 +106,9 @@ This document is aimed towards normal developers and arch developers. | |||
106 | Most Makefiles within the kernel are kbuild Makefiles that use the | 106 | Most Makefiles within the kernel are kbuild Makefiles that use the |
107 | kbuild infrastructure. This chapter introduce the syntax used in the | 107 | kbuild infrastructure. This chapter introduce the syntax used in the |
108 | kbuild makefiles. | 108 | kbuild makefiles. |
109 | The preferred name for the kbuild files is 'Kbuild' but 'Makefile' will | 109 | The preferred name for the kbuild files are 'Makefile' but 'Kbuild' can |
110 | continue to be supported. All new developmen is expected to use the | 110 | be used and if both a 'Makefile' and a 'Kbuild' file exists then the 'Kbuild' |
111 | Kbuild filename. | 111 | file will be used. |
112 | 112 | ||
113 | Section 3.1 "Goal definitions" is a quick intro, further chapters provide | 113 | Section 3.1 "Goal definitions" is a quick intro, further chapters provide |
114 | more details, with real examples. | 114 | more details, with real examples. |
@@ -385,6 +385,102 @@ more details, with real examples. | |||
385 | to prerequisites are referenced with $(src) (because they are not | 385 | to prerequisites are referenced with $(src) (because they are not |
386 | generated files). | 386 | generated files). |
387 | 387 | ||
388 | --- 3.11 $(CC) support functions | ||
389 | |||
390 | The kernel may be build with several different versions of | ||
391 | $(CC), each supporting a unique set of features and options. | ||
392 | kbuild provide basic support to check for valid options for $(CC). | ||
393 | $(CC) is useally the gcc compiler, but other alternatives are | ||
394 | available. | ||
395 | |||
396 | as-option | ||
397 | as-option is used to check if $(CC) when used to compile | ||
398 | assembler (*.S) files supports the given option. An optional | ||
399 | second option may be specified if first option are not supported. | ||
400 | |||
401 | Example: | ||
402 | #arch/sh/Makefile | ||
403 | cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),) | ||
404 | |||
405 | In the above example cflags-y will be assinged the the option | ||
406 | -Wa$(comma)-isa=$(isa-y) if it is supported by $(CC). | ||
407 | The second argument is optional, and if supplied will be used | ||
408 | if first argument is not supported. | ||
409 | |||
410 | cc-option | ||
411 | cc-option is used to check if $(CC) support a given option, and not | ||
412 | supported to use an optional second option. | ||
413 | |||
414 | Example: | ||
415 | #arch/i386/Makefile | ||
416 | cflags-y += $(call cc-option,-march=pentium-mmx,-march=i586) | ||
417 | |||
418 | In the above example cflags-y will be assigned the option | ||
419 | -march=pentium-mmx if supported by $(CC), otherwise -march-i586. | ||
420 | The second argument to cc-option is optional, and if omitted | ||
421 | cflags-y will be assigned no value if first option is not supported. | ||
422 | |||
423 | cc-option-yn | ||
424 | cc-option-yn is used to check if gcc supports a given option | ||
425 | and return 'y' if supported, otherwise 'n'. | ||
426 | |||
427 | Example: | ||
428 | #arch/ppc/Makefile | ||
429 | biarch := $(call cc-option-yn, -m32) | ||
430 | aflags-$(biarch) += -a32 | ||
431 | cflags-$(biarch) += -m32 | ||
432 | |||
433 | In the above example $(biarch) is set to y if $(CC) supports the -m32 | ||
434 | option. When $(biarch) equals to y the expanded variables $(aflags-y) | ||
435 | and $(cflags-y) will be assigned the values -a32 and -m32. | ||
436 | |||
437 | cc-option-align | ||
438 | gcc version >= 3.0 shifted type of options used to speify | ||
439 | alignment of functions, loops etc. $(cc-option-align) whrn used | ||
440 | as prefix to the align options will select the right prefix: | ||
441 | gcc < 3.00 | ||
442 | cc-option-align = -malign | ||
443 | gcc >= 3.00 | ||
444 | cc-option-align = -falign | ||
445 | |||
446 | Example: | ||
447 | CFLAGS += $(cc-option-align)-functions=4 | ||
448 | |||
449 | In the above example the option -falign-functions=4 is used for | ||
450 | gcc >= 3.00. For gcc < 3.00 -malign-functions=4 is used. | ||
451 | |||
452 | cc-version | ||
453 | cc-version return a numerical version of the $(CC) compiler version. | ||
454 | The format is <major><minor> where both are two digits. So for example | ||
455 | gcc 3.41 would return 0341. | ||
456 | cc-version is useful when a specific $(CC) version is faulty in one | ||
457 | area, for example the -mregparm=3 were broken in some gcc version | ||
458 | even though the option was accepted by gcc. | ||
459 | |||
460 | Example: | ||
461 | #arch/i386/Makefile | ||
462 | cflags-y += $(shell \ | ||
463 | if [ $(call cc-version) -ge 0300 ] ; then \ | ||
464 | echo "-mregparm=3"; fi ;) | ||
465 | |||
466 | In the above example -mregparm=3 is only used for gcc version greater | ||
467 | than or equal to gcc 3.0. | ||
468 | |||
469 | cc-ifversion | ||
470 | cc-ifversion test the version of $(CC) and equals last argument if | ||
471 | version expression is true. | ||
472 | |||
473 | Example: | ||
474 | #fs/reiserfs/Makefile | ||
475 | EXTRA_CFLAGS := $(call cc-ifversion, -lt, 0402, -O1) | ||
476 | |||
477 | In this example EXTRA_CFLAGS will be assigned the value -O1 if the | ||
478 | $(CC) version is less than 4.2. | ||
479 | cc-ifversion takes all the shell operators: | ||
480 | -eq, -ne, -lt, -le, -gt, and -ge | ||
481 | The third parameter may be a text as in this example, but it may also | ||
482 | be an expanded variable or a macro. | ||
483 | |||
388 | 484 | ||
389 | === 4 Host Program support | 485 | === 4 Host Program support |
390 | 486 | ||
@@ -973,74 +1069,6 @@ When kbuild executes the following steps are followed (roughly): | |||
973 | architecture specific files. | 1069 | architecture specific files. |
974 | 1070 | ||
975 | 1071 | ||
976 | --- 6.9 $(CC) support functions | ||
977 | |||
978 | The kernel may be build with several different versions of | ||
979 | $(CC), each supporting a unique set of features and options. | ||
980 | kbuild provide basic support to check for valid options for $(CC). | ||
981 | $(CC) is useally the gcc compiler, but other alternatives are | ||
982 | available. | ||
983 | |||
984 | cc-option | ||
985 | cc-option is used to check if $(CC) support a given option, and not | ||
986 | supported to use an optional second option. | ||
987 | |||
988 | Example: | ||
989 | #arch/i386/Makefile | ||
990 | cflags-y += $(call cc-option,-march=pentium-mmx,-march=i586) | ||
991 | |||
992 | In the above example cflags-y will be assigned the option | ||
993 | -march=pentium-mmx if supported by $(CC), otherwise -march-i586. | ||
994 | The second argument to cc-option is optional, and if omitted | ||
995 | cflags-y will be assigned no value if first option is not supported. | ||
996 | |||
997 | cc-option-yn | ||
998 | cc-option-yn is used to check if gcc supports a given option | ||
999 | and return 'y' if supported, otherwise 'n'. | ||
1000 | |||
1001 | Example: | ||
1002 | #arch/ppc/Makefile | ||
1003 | biarch := $(call cc-option-yn, -m32) | ||
1004 | aflags-$(biarch) += -a32 | ||
1005 | cflags-$(biarch) += -m32 | ||
1006 | |||
1007 | In the above example $(biarch) is set to y if $(CC) supports the -m32 | ||
1008 | option. When $(biarch) equals to y the expanded variables $(aflags-y) | ||
1009 | and $(cflags-y) will be assigned the values -a32 and -m32. | ||
1010 | |||
1011 | cc-option-align | ||
1012 | gcc version >= 3.0 shifted type of options used to speify | ||
1013 | alignment of functions, loops etc. $(cc-option-align) whrn used | ||
1014 | as prefix to the align options will select the right prefix: | ||
1015 | gcc < 3.00 | ||
1016 | cc-option-align = -malign | ||
1017 | gcc >= 3.00 | ||
1018 | cc-option-align = -falign | ||
1019 | |||
1020 | Example: | ||
1021 | CFLAGS += $(cc-option-align)-functions=4 | ||
1022 | |||
1023 | In the above example the option -falign-functions=4 is used for | ||
1024 | gcc >= 3.00. For gcc < 3.00 -malign-functions=4 is used. | ||
1025 | |||
1026 | cc-version | ||
1027 | cc-version return a numerical version of the $(CC) compiler version. | ||
1028 | The format is <major><minor> where both are two digits. So for example | ||
1029 | gcc 3.41 would return 0341. | ||
1030 | cc-version is useful when a specific $(CC) version is faulty in one | ||
1031 | area, for example the -mregparm=3 were broken in some gcc version | ||
1032 | even though the option was accepted by gcc. | ||
1033 | |||
1034 | Example: | ||
1035 | #arch/i386/Makefile | ||
1036 | cflags-y += $(shell \ | ||
1037 | if [ $(call cc-version) -ge 0300 ] ; then \ | ||
1038 | echo "-mregparm=3"; fi ;) | ||
1039 | |||
1040 | In the above example -mregparm=3 is only used for gcc version greater | ||
1041 | than or equal to gcc 3.0. | ||
1042 | |||
1043 | |||
1044 | === 7 Kbuild Variables | 1072 | === 7 Kbuild Variables |
1045 | 1073 | ||
1046 | The top Makefile exports the following variables: | 1074 | The top Makefile exports the following variables: |
diff --git a/Documentation/kbuild/modules.txt b/Documentation/kbuild/modules.txt index 7e77f93634ea..fcccf2432f98 100644 --- a/Documentation/kbuild/modules.txt +++ b/Documentation/kbuild/modules.txt | |||
@@ -13,6 +13,7 @@ In this document you will find information about: | |||
13 | --- 2.2 Available targets | 13 | --- 2.2 Available targets |
14 | --- 2.3 Available options | 14 | --- 2.3 Available options |
15 | --- 2.4 Preparing the kernel tree for module build | 15 | --- 2.4 Preparing the kernel tree for module build |
16 | --- 2.5 Building separate files for a module | ||
16 | === 3. Example commands | 17 | === 3. Example commands |
17 | === 4. Creating a kbuild file for an external module | 18 | === 4. Creating a kbuild file for an external module |
18 | === 5. Include files | 19 | === 5. Include files |
@@ -22,7 +23,10 @@ In this document you will find information about: | |||
22 | === 6. Module installation | 23 | === 6. Module installation |
23 | --- 6.1 INSTALL_MOD_PATH | 24 | --- 6.1 INSTALL_MOD_PATH |
24 | --- 6.2 INSTALL_MOD_DIR | 25 | --- 6.2 INSTALL_MOD_DIR |
25 | === 7. Module versioning | 26 | === 7. Module versioning & Module.symvers |
27 | --- 7.1 Symbols fron the kernel (vmlinux + modules) | ||
28 | --- 7.2 Symbols and external modules | ||
29 | --- 7.3 Symbols from another external module | ||
26 | === 8. Tips & Tricks | 30 | === 8. Tips & Tricks |
27 | --- 8.1 Testing for CONFIG_FOO_BAR | 31 | --- 8.1 Testing for CONFIG_FOO_BAR |
28 | 32 | ||
@@ -88,7 +92,8 @@ when building an external module. | |||
88 | make -C $KDIR M=$PWD modules_install | 92 | make -C $KDIR M=$PWD modules_install |
89 | Install the external module(s). | 93 | Install the external module(s). |
90 | Installation default is in /lib/modules/<kernel-version>/extra, | 94 | Installation default is in /lib/modules/<kernel-version>/extra, |
91 | but may be prefixed with INSTALL_MOD_PATH - see separate chapter. | 95 | but may be prefixed with INSTALL_MOD_PATH - see separate |
96 | chapter. | ||
92 | 97 | ||
93 | make -C $KDIR M=$PWD clean | 98 | make -C $KDIR M=$PWD clean |
94 | Remove all generated files for the module - the kernel | 99 | Remove all generated files for the module - the kernel |
@@ -131,6 +136,16 @@ when building an external module. | |||
131 | Therefore a full kernel build needs to be executed to make | 136 | Therefore a full kernel build needs to be executed to make |
132 | module versioning work. | 137 | module versioning work. |
133 | 138 | ||
139 | --- 2.5 Building separate files for a module | ||
140 | It is possible to build single files which is part of a module. | ||
141 | This works equal for the kernel, a module and even for external | ||
142 | modules. | ||
143 | Examples (module foo.ko, consist of bar.o, baz.o): | ||
144 | make -C $KDIR M=`pwd` bar.lst | ||
145 | make -C $KDIR M=`pwd` bar.o | ||
146 | make -C $KDIR M=`pwd` foo.ko | ||
147 | make -C $KDIR M=`pwd` / | ||
148 | |||
134 | 149 | ||
135 | === 3. Example commands | 150 | === 3. Example commands |
136 | 151 | ||
@@ -422,7 +437,7 @@ External modules are installed in the directory: | |||
422 | => Install dir: /lib/modules/$(KERNELRELEASE)/gandalf | 437 | => Install dir: /lib/modules/$(KERNELRELEASE)/gandalf |
423 | 438 | ||
424 | 439 | ||
425 | === 7. Module versioning | 440 | === 7. Module versioning & Module.symvers |
426 | 441 | ||
427 | Module versioning is enabled by the CONFIG_MODVERSIONS tag. | 442 | Module versioning is enabled by the CONFIG_MODVERSIONS tag. |
428 | 443 | ||
@@ -432,11 +447,80 @@ when a module is loaded/used then the CRC values contained in the kernel are | |||
432 | compared with similar values in the module. If they are not equal then the | 447 | compared with similar values in the module. If they are not equal then the |
433 | kernel refuses to load the module. | 448 | kernel refuses to load the module. |
434 | 449 | ||
435 | During a kernel build a file named Module.symvers will be generated. This | 450 | Module.symvers contains a list of all exported symbols from a kernel build. |
436 | file includes the symbol version of all symbols within the kernel. If the | 451 | |
437 | Module.symvers file is saved from the last full kernel compile one does not | 452 | --- 7.1 Symbols fron the kernel (vmlinux + modules) |
438 | have to do a full kernel compile to build a module version's compatible module. | 453 | |
454 | During a kernel build a file named Module.symvers will be generated. | ||
455 | Module.symvers contains all exported symbols from the kernel and | ||
456 | compiled modules. For each symbols the corresponding CRC value | ||
457 | is stored too. | ||
458 | |||
459 | The syntax of the Module.symvers file is: | ||
460 | <CRC> <Symbol> <module> | ||
461 | Sample: | ||
462 | 0x2d036834 scsi_remove_host drivers/scsi/scsi_mod | ||
439 | 463 | ||
464 | For a kernel build without CONFIG_MODVERSIONING enabled the crc | ||
465 | would read: 0x00000000 | ||
466 | |||
467 | Module.symvers serve two purposes. | ||
468 | 1) It list all exported symbols both from vmlinux and all modules | ||
469 | 2) It list CRC if CONFIG_MODVERSION is enabled | ||
470 | |||
471 | --- 7.2 Symbols and external modules | ||
472 | |||
473 | When building an external module the build system needs access to | ||
474 | the symbols from the kernel to check if all external symbols are | ||
475 | defined. This is done in the MODPOST step and to obtain all | ||
476 | symbols modpost reads Module.symvers from the kernel. | ||
477 | If a Module.symvers file is present in the directory where | ||
478 | the external module is being build this file will be read too. | ||
479 | During the MODPOST step a new Module.symvers file will be written | ||
480 | containing all exported symbols that was not defined in the kernel. | ||
481 | |||
482 | --- 7.3 Symbols from another external module | ||
483 | |||
484 | Sometimes one external module uses exported symbols from another | ||
485 | external module. Kbuild needs to have full knowledge on all symbols | ||
486 | to avoid spitting out warnings about undefined symbols. | ||
487 | Two solutions exist to let kbuild know all symbols of more than | ||
488 | one external module. | ||
489 | The method with a top-level kbuild file is recommended but may be | ||
490 | impractical in certain situations. | ||
491 | |||
492 | Use a top-level Kbuild file | ||
493 | If you have two modules: 'foo', 'bar' and 'foo' needs symbols | ||
494 | from 'bar' then one can use a common top-level kbuild file so | ||
495 | both modules are compiled in same build. | ||
496 | |||
497 | Consider following directory layout: | ||
498 | ./foo/ <= contains the foo module | ||
499 | ./bar/ <= contains the bar module | ||
500 | The top-level Kbuild file would then look like: | ||
501 | |||
502 | #./Kbuild: (this file may also be named Makefile) | ||
503 | obj-y := foo/ bar/ | ||
504 | |||
505 | Executing: | ||
506 | make -C $KDIR M=`pwd` | ||
507 | |||
508 | will then do the expected and compile both modules with full | ||
509 | knowledge on symbols from both modules. | ||
510 | |||
511 | Use an extra Module.symvers file | ||
512 | When an external module is build a Module.symvers file is | ||
513 | generated containing all exported symbols which are not | ||
514 | defined in the kernel. | ||
515 | To get access to symbols from module 'bar' one can copy the | ||
516 | Module.symvers file from the compilation of the 'bar' module | ||
517 | to the directory where the 'foo' module is build. | ||
518 | During the module build kbuild will read the Module.symvers | ||
519 | file in the directory of the external module and when the | ||
520 | build is finished a new Module.symvers file is created | ||
521 | containing the sum of all symbols defined and not part of the | ||
522 | kernel. | ||
523 | |||
440 | === 8. Tips & Tricks | 524 | === 8. Tips & Tricks |
441 | 525 | ||
442 | --- 8.1 Testing for CONFIG_FOO_BAR | 526 | --- 8.1 Testing for CONFIG_FOO_BAR |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index fc99075e0af4..f8cb55c30b0f 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -49,6 +49,7 @@ restrictions referred to are that the relevant option is valid if: | |||
49 | MCA MCA bus support is enabled. | 49 | MCA MCA bus support is enabled. |
50 | MDA MDA console support is enabled. | 50 | MDA MDA console support is enabled. |
51 | MOUSE Appropriate mouse support is enabled. | 51 | MOUSE Appropriate mouse support is enabled. |
52 | MSI Message Signaled Interrupts (PCI). | ||
52 | MTD MTD support is enabled. | 53 | MTD MTD support is enabled. |
53 | NET Appropriate network support is enabled. | 54 | NET Appropriate network support is enabled. |
54 | NUMA NUMA support is enabled. | 55 | NUMA NUMA support is enabled. |
@@ -366,12 +367,17 @@ running once the system is up. | |||
366 | tty<n> Use the virtual console device <n>. | 367 | tty<n> Use the virtual console device <n>. |
367 | 368 | ||
368 | ttyS<n>[,options] | 369 | ttyS<n>[,options] |
370 | ttyUSB0[,options] | ||
369 | Use the specified serial port. The options are of | 371 | Use the specified serial port. The options are of |
370 | the form "bbbbpn", where "bbbb" is the baud rate, | 372 | the form "bbbbpnf", where "bbbb" is the baud rate, |
371 | "p" is parity ("n", "o", or "e"), and "n" is bits. | 373 | "p" is parity ("n", "o", or "e"), "n" is number of |
372 | Default is "9600n8". | 374 | bits, and "f" is flow control ("r" for RTS or |
375 | omit it). Default is "9600n8". | ||
373 | 376 | ||
374 | See also Documentation/serial-console.txt. | 377 | See Documentation/serial-console.txt for more |
378 | information. See | ||
379 | Documentation/networking/netconsole.txt for an | ||
380 | alternative. | ||
375 | 381 | ||
376 | uart,io,<addr>[,options] | 382 | uart,io,<addr>[,options] |
377 | uart,mmio,<addr>[,options] | 383 | uart,mmio,<addr>[,options] |
@@ -1008,7 +1014,9 @@ running once the system is up. | |||
1008 | noexec=on: enable non-executable mappings (default) | 1014 | noexec=on: enable non-executable mappings (default) |
1009 | noexec=off: disable nn-executable mappings | 1015 | noexec=off: disable nn-executable mappings |
1010 | 1016 | ||
1011 | nofxsr [BUGS=IA-32] | 1017 | nofxsr [BUGS=IA-32] Disables x86 floating point extended |
1018 | register save and restore. The kernel will only save | ||
1019 | legacy floating-point registers on task switch. | ||
1012 | 1020 | ||
1013 | nohlt [BUGS=ARM] | 1021 | nohlt [BUGS=ARM] |
1014 | 1022 | ||
@@ -1053,6 +1061,8 @@ running once the system is up. | |||
1053 | 1061 | ||
1054 | nosbagart [IA-64] | 1062 | nosbagart [IA-64] |
1055 | 1063 | ||
1064 | nosep [BUGS=IA-32] Disables x86 SYSENTER/SYSEXIT support. | ||
1065 | |||
1056 | nosmp [SMP] Tells an SMP kernel to act as a UP kernel. | 1066 | nosmp [SMP] Tells an SMP kernel to act as a UP kernel. |
1057 | 1067 | ||
1058 | nosync [HW,M68K] Disables sync negotiation for all devices. | 1068 | nosync [HW,M68K] Disables sync negotiation for all devices. |
@@ -1122,6 +1132,11 @@ running once the system is up. | |||
1122 | pas16= [HW,SCSI] | 1132 | pas16= [HW,SCSI] |
1123 | See header of drivers/scsi/pas16.c. | 1133 | See header of drivers/scsi/pas16.c. |
1124 | 1134 | ||
1135 | pause_on_oops= | ||
1136 | Halt all CPUs after the first oops has been printed for | ||
1137 | the specified number of seconds. This is to be used if | ||
1138 | your oopses keep scrolling off the screen. | ||
1139 | |||
1125 | pcbit= [HW,ISDN] | 1140 | pcbit= [HW,ISDN] |
1126 | 1141 | ||
1127 | pcd. [PARIDE] | 1142 | pcd. [PARIDE] |
@@ -1143,6 +1158,9 @@ running once the system is up. | |||
1143 | Mechanism 2. | 1158 | Mechanism 2. |
1144 | nommconf [IA-32,X86_64] Disable use of MMCONFIG for PCI | 1159 | nommconf [IA-32,X86_64] Disable use of MMCONFIG for PCI |
1145 | Configuration | 1160 | Configuration |
1161 | nomsi [MSI] If the PCI_MSI kernel config parameter is | ||
1162 | enabled, this kernel boot option can be used to | ||
1163 | disable the use of MSI interrupts system-wide. | ||
1146 | nosort [IA-32] Don't sort PCI devices according to | 1164 | nosort [IA-32] Don't sort PCI devices according to |
1147 | order given by the PCI BIOS. This sorting is | 1165 | order given by the PCI BIOS. This sorting is |
1148 | done to get a device order compatible with | 1166 | done to get a device order compatible with |
diff --git a/Documentation/m68k/README.buddha b/Documentation/m68k/README.buddha index bf802ffc98ad..ef484a719bb9 100644 --- a/Documentation/m68k/README.buddha +++ b/Documentation/m68k/README.buddha | |||
@@ -29,7 +29,7 @@ address is written to $4a, then the whole Byte is written to | |||
29 | $48, while it doesn't matter how often you're writing to $4a | 29 | $48, while it doesn't matter how often you're writing to $4a |
30 | as long as $48 is not touched. After $48 has been written, | 30 | as long as $48 is not touched. After $48 has been written, |
31 | the whole card disappears from $e8 and is mapped to the new | 31 | the whole card disappears from $e8 and is mapped to the new |
32 | address just written. Make shure $4a is written before $48, | 32 | address just written. Make sure $4a is written before $48, |
33 | otherwise your chance is only 1:16 to find the board :-). | 33 | otherwise your chance is only 1:16 to find the board :-). |
34 | 34 | ||
35 | The local memory-map is even active when mapped to $e8: | 35 | The local memory-map is even active when mapped to $e8: |
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX index 5b01d5cc4e95..b1181ce232d9 100644 --- a/Documentation/networking/00-INDEX +++ b/Documentation/networking/00-INDEX | |||
@@ -92,8 +92,6 @@ routing.txt | |||
92 | - the new routing mechanism | 92 | - the new routing mechanism |
93 | shaper.txt | 93 | shaper.txt |
94 | - info on the module that can shape/limit transmitted traffic. | 94 | - info on the module that can shape/limit transmitted traffic. |
95 | sis900.txt | ||
96 | - SiS 900/7016 Fast Ethernet device driver info. | ||
97 | sk98lin.txt | 95 | sk98lin.txt |
98 | - Marvell Yukon Chipset / SysKonnect SK-98xx compliant Gigabit | 96 | - Marvell Yukon Chipset / SysKonnect SK-98xx compliant Gigabit |
99 | Ethernet Adapter family driver info | 97 | Ethernet Adapter family driver info |
diff --git a/Documentation/networking/README.ipw2100 b/Documentation/networking/README.ipw2100 index 3ab40379d1cf..f3fcaa41f774 100644 --- a/Documentation/networking/README.ipw2100 +++ b/Documentation/networking/README.ipw2100 | |||
@@ -3,18 +3,18 @@ Intel(R) PRO/Wireless 2100 Driver for Linux in support of: | |||
3 | 3 | ||
4 | Intel(R) PRO/Wireless 2100 Network Connection | 4 | Intel(R) PRO/Wireless 2100 Network Connection |
5 | 5 | ||
6 | Copyright (C) 2003-2005, Intel Corporation | 6 | Copyright (C) 2003-2006, Intel Corporation |
7 | 7 | ||
8 | README.ipw2100 | 8 | README.ipw2100 |
9 | 9 | ||
10 | Version: 1.1.3 | 10 | Version: git-1.1.5 |
11 | Date : October 17, 2005 | 11 | Date : January 25, 2006 |
12 | 12 | ||
13 | Index | 13 | Index |
14 | ----------------------------------------------- | 14 | ----------------------------------------------- |
15 | 0. IMPORTANT INFORMATION BEFORE USING THIS DRIVER | 15 | 0. IMPORTANT INFORMATION BEFORE USING THIS DRIVER |
16 | 1. Introduction | 16 | 1. Introduction |
17 | 2. Release 1.1.3 Current Features | 17 | 2. Release git-1.1.5 Current Features |
18 | 3. Command Line Parameters | 18 | 3. Command Line Parameters |
19 | 4. Sysfs Helper Files | 19 | 4. Sysfs Helper Files |
20 | 5. Radio Kill Switch | 20 | 5. Radio Kill Switch |
@@ -89,7 +89,7 @@ potential fixes and patches, as well as links to the development mailing list | |||
89 | for the driver project. | 89 | for the driver project. |
90 | 90 | ||
91 | 91 | ||
92 | 2. Release 1.1.3 Current Supported Features | 92 | 2. Release git-1.1.5 Current Supported Features |
93 | ----------------------------------------------- | 93 | ----------------------------------------------- |
94 | - Managed (BSS) and Ad-Hoc (IBSS) | 94 | - Managed (BSS) and Ad-Hoc (IBSS) |
95 | - WEP (shared key and open) | 95 | - WEP (shared key and open) |
@@ -270,7 +270,7 @@ For installation support on the ipw2100 1.1.0 driver on Linux kernels | |||
270 | 9. License | 270 | 9. License |
271 | ----------------------------------------------- | 271 | ----------------------------------------------- |
272 | 272 | ||
273 | Copyright(c) 2003 - 2005 Intel Corporation. All rights reserved. | 273 | Copyright(c) 2003 - 2006 Intel Corporation. All rights reserved. |
274 | 274 | ||
275 | This program is free software; you can redistribute it and/or modify it | 275 | This program is free software; you can redistribute it and/or modify it |
276 | under the terms of the GNU General Public License (version 2) as | 276 | under the terms of the GNU General Public License (version 2) as |
diff --git a/Documentation/networking/README.ipw2200 b/Documentation/networking/README.ipw2200 index c6492d3839fa..acb30c5dcff3 100644 --- a/Documentation/networking/README.ipw2200 +++ b/Documentation/networking/README.ipw2200 | |||
@@ -10,7 +10,7 @@ both hardware adapters listed above. In this document the Intel(R) | |||
10 | PRO/Wireless 2915ABG Driver for Linux will be used to reference the | 10 | PRO/Wireless 2915ABG Driver for Linux will be used to reference the |
11 | unified driver. | 11 | unified driver. |
12 | 12 | ||
13 | Copyright (C) 2004-2005, Intel Corporation | 13 | Copyright (C) 2004-2006, Intel Corporation |
14 | 14 | ||
15 | README.ipw2200 | 15 | README.ipw2200 |
16 | 16 | ||
@@ -26,9 +26,11 @@ Index | |||
26 | 1.2. Module parameters | 26 | 1.2. Module parameters |
27 | 1.3. Wireless Extension Private Methods | 27 | 1.3. Wireless Extension Private Methods |
28 | 1.4. Sysfs Helper Files | 28 | 1.4. Sysfs Helper Files |
29 | 1.5. Supported channels | ||
29 | 2. Ad-Hoc Networking | 30 | 2. Ad-Hoc Networking |
30 | 3. Interacting with Wireless Tools | 31 | 3. Interacting with Wireless Tools |
31 | 3.1. iwconfig mode | 32 | 3.1. iwconfig mode |
33 | 3.2. iwconfig sens | ||
32 | 4. About the Version Numbers | 34 | 4. About the Version Numbers |
33 | 5. Firmware installation | 35 | 5. Firmware installation |
34 | 6. Support | 36 | 6. Support |
@@ -314,6 +316,35 @@ For the device level files, see /sys/bus/pci/drivers/ipw2200: | |||
314 | running ifconfig and is therefore disabled by default. | 316 | running ifconfig and is therefore disabled by default. |
315 | 317 | ||
316 | 318 | ||
319 | 1.5. Supported channels | ||
320 | ----------------------------------------------- | ||
321 | |||
322 | Upon loading the Intel(R) PRO/Wireless 2915ABG Driver for Linux, a | ||
323 | message stating the detected geography code and the number of 802.11 | ||
324 | channels supported by the card will be displayed in the log. | ||
325 | |||
326 | The geography code corresponds to a regulatory domain as shown in the | ||
327 | table below. | ||
328 | |||
329 | Supported channels | ||
330 | Code Geography 802.11bg 802.11a | ||
331 | |||
332 | --- Restricted 11 0 | ||
333 | ZZF Custom US/Canada 11 8 | ||
334 | ZZD Rest of World 13 0 | ||
335 | ZZA Custom USA & Europe & High 11 13 | ||
336 | ZZB Custom NA & Europe 11 13 | ||
337 | ZZC Custom Japan 11 4 | ||
338 | ZZM Custom 11 0 | ||
339 | ZZE Europe 13 19 | ||
340 | ZZJ Custom Japan 14 4 | ||
341 | ZZR Rest of World 14 0 | ||
342 | ZZH High Band 13 4 | ||
343 | ZZG Custom Europe 13 4 | ||
344 | ZZK Europe 13 24 | ||
345 | ZZL Europe 11 13 | ||
346 | |||
347 | |||
317 | 2. Ad-Hoc Networking | 348 | 2. Ad-Hoc Networking |
318 | ----------------------------------------------- | 349 | ----------------------------------------------- |
319 | 350 | ||
@@ -353,6 +384,15 @@ When configuring the mode of the adapter, all run-time configured parameters | |||
353 | are reset to the value used when the module was loaded. This includes | 384 | are reset to the value used when the module was loaded. This includes |
354 | channels, rates, ESSID, etc. | 385 | channels, rates, ESSID, etc. |
355 | 386 | ||
387 | 3.2 iwconfig sens | ||
388 | ----------------------------------------------- | ||
389 | |||
390 | The 'iwconfig ethX sens XX' command will not set the signal sensitivity | ||
391 | threshold, as described in iwconfig documentation, but rather the number | ||
392 | of consecutive missed beacons that will trigger handover, i.e. roaming | ||
393 | to another access point. At the same time, it will set the disassociation | ||
394 | threshold to 3 times the given value. | ||
395 | |||
356 | 396 | ||
357 | 4. About the Version Numbers | 397 | 4. About the Version Numbers |
358 | ----------------------------------------------- | 398 | ----------------------------------------------- |
@@ -408,7 +448,7 @@ For general information and support, go to: | |||
408 | 7. License | 448 | 7. License |
409 | ----------------------------------------------- | 449 | ----------------------------------------------- |
410 | 450 | ||
411 | Copyright(c) 2003 - 2005 Intel Corporation. All rights reserved. | 451 | Copyright(c) 2003 - 2006 Intel Corporation. All rights reserved. |
412 | 452 | ||
413 | This program is free software; you can redistribute it and/or modify it | 453 | This program is free software; you can redistribute it and/or modify it |
414 | under the terms of the GNU General Public License version 2 as | 454 | under the terms of the GNU General Public License version 2 as |
diff --git a/Documentation/networking/TODO b/Documentation/networking/TODO deleted file mode 100644 index 66d36ff14bae..000000000000 --- a/Documentation/networking/TODO +++ /dev/null | |||
@@ -1,18 +0,0 @@ | |||
1 | To-do items for network drivers | ||
2 | ------------------------------- | ||
3 | |||
4 | * Move ethernet crc routine to generic code | ||
5 | |||
6 | * (for 2.5) Integrate Jamal Hadi Salim's netdev Rx polling API change | ||
7 | |||
8 | * Audit all net drivers to make sure magic packet / wake-on-lan / | ||
9 | similar features are disabled in the driver by default. | ||
10 | |||
11 | * Audit all net drivers to make sure the module always prints out a | ||
12 | version string when loaded as a module, but only prints a version | ||
13 | string when built into the kernel if a device is detected. | ||
14 | |||
15 | * Add ETHTOOL_GDRVINFO ioctl support to all ethernet drivers. | ||
16 | |||
17 | * dmfe PCI DMA is totally wrong and only works on x86 | ||
18 | |||
diff --git a/Documentation/networking/bcm43xx.txt b/Documentation/networking/bcm43xx.txt new file mode 100644 index 000000000000..28541d2bee1e --- /dev/null +++ b/Documentation/networking/bcm43xx.txt | |||
@@ -0,0 +1,36 @@ | |||
1 | |||
2 | BCM43xx Linux Driver Project | ||
3 | ============================ | ||
4 | |||
5 | About this software | ||
6 | ------------------- | ||
7 | |||
8 | The goal of this project is to develop a linux driver for Broadcom | ||
9 | BCM43xx chips, based on the specification at | ||
10 | http://bcm-specs.sipsolutions.net/ | ||
11 | |||
12 | The project page is http://bcm43xx.berlios.de/ | ||
13 | |||
14 | |||
15 | Requirements | ||
16 | ------------ | ||
17 | |||
18 | 1) Linux Kernel 2.6.16 or later | ||
19 | http://www.kernel.org/ | ||
20 | |||
21 | You may want to configure your kernel with: | ||
22 | |||
23 | CONFIG_DEBUG_FS (optional): | ||
24 | -> Kernel hacking | ||
25 | -> Debug Filesystem | ||
26 | |||
27 | 2) SoftMAC IEEE 802.11 Networking Stack extension and patched ieee80211 | ||
28 | modules: | ||
29 | http://softmac.sipsolutions.net/ | ||
30 | |||
31 | 3) Firmware Files | ||
32 | |||
33 | Please try fwcutter. Fwcutter can extract the firmware from various | ||
34 | binary driver files. It supports driver files from Windows, MacOS and | ||
35 | Linux. You can get fwcutter from http://bcm43xx.berlios.de/. | ||
36 | Also, fwcutter comes with a README file for further instructions. | ||
diff --git a/Documentation/networking/e100.txt b/Documentation/networking/e100.txt index 4ef9f7cd5dc3..944aa55e79f8 100644 --- a/Documentation/networking/e100.txt +++ b/Documentation/networking/e100.txt | |||
@@ -1,16 +1,17 @@ | |||
1 | Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters | 1 | Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters |
2 | ============================================================== | 2 | ============================================================== |
3 | 3 | ||
4 | November 17, 2004 | 4 | November 15, 2005 |
5 | |||
6 | 5 | ||
7 | Contents | 6 | Contents |
8 | ======== | 7 | ======== |
9 | 8 | ||
10 | - In This Release | 9 | - In This Release |
11 | - Identifying Your Adapter | 10 | - Identifying Your Adapter |
11 | - Building and Installation | ||
12 | - Driver Configuration Parameters | 12 | - Driver Configuration Parameters |
13 | - Additional Configurations | 13 | - Additional Configurations |
14 | - Known Issues | ||
14 | - Support | 15 | - Support |
15 | 16 | ||
16 | 17 | ||
@@ -18,18 +19,30 @@ In This Release | |||
18 | =============== | 19 | =============== |
19 | 20 | ||
20 | This file describes the Linux* Base Driver for the Intel(R) PRO/100 Family of | 21 | This file describes the Linux* Base Driver for the Intel(R) PRO/100 Family of |
21 | Adapters, version 3.3.x. This driver supports 2.4.x and 2.6.x kernels. | 22 | Adapters. This driver includes support for Itanium(R)2-based systems. |
23 | |||
24 | For questions related to hardware requirements, refer to the documentation | ||
25 | supplied with your Intel PRO/100 adapter. | ||
26 | |||
27 | The following features are now available in supported kernels: | ||
28 | - Native VLANs | ||
29 | - Channel Bonding (teaming) | ||
30 | - SNMP | ||
31 | |||
32 | Channel Bonding documentation can be found in the Linux kernel source: | ||
33 | /Documentation/networking/bonding.txt | ||
34 | |||
22 | 35 | ||
23 | Identifying Your Adapter | 36 | Identifying Your Adapter |
24 | ======================== | 37 | ======================== |
25 | 38 | ||
26 | For more information on how to identify your adapter, go to the Adapter & | 39 | For more information on how to identify your adapter, go to the Adapter & |
27 | Driver ID Guide at: | 40 | Driver ID Guide at: |
28 | 41 | ||
29 | http://support.intel.com/support/network/adapter/pro100/21397.htm | 42 | http://support.intel.com/support/network/adapter/pro100/21397.htm |
30 | 43 | ||
31 | For the latest Intel network drivers for Linux, refer to the following | 44 | For the latest Intel network drivers for Linux, refer to the following |
32 | website. In the search field, enter your adapter name or type, or use the | 45 | website. In the search field, enter your adapter name or type, or use the |
33 | networking link on the left to search for your adapter: | 46 | networking link on the left to search for your adapter: |
34 | 47 | ||
35 | http://downloadfinder.intel.com/scripts-df/support_intel.asp | 48 | http://downloadfinder.intel.com/scripts-df/support_intel.asp |
@@ -40,73 +53,75 @@ Driver Configuration Parameters | |||
40 | The default value for each parameter is generally the recommended setting, | 53 | The default value for each parameter is generally the recommended setting, |
41 | unless otherwise noted. | 54 | unless otherwise noted. |
42 | 55 | ||
43 | Rx Descriptors: Number of receive descriptors. A receive descriptor is a data | 56 | Rx Descriptors: Number of receive descriptors. A receive descriptor is a data |
44 | structure that describes a receive buffer and its attributes to the network | 57 | structure that describes a receive buffer and its attributes to the network |
45 | controller. The data in the descriptor is used by the controller to write | 58 | controller. The data in the descriptor is used by the controller to write |
46 | data from the controller to host memory. In the 3.0.x driver the valid | 59 | data from the controller to host memory. In the 3.x.x driver the valid range |
47 | range for this parameter is 64-256. The default value is 64. This parameter | 60 | for this parameter is 64-256. The default value is 64. This parameter can be |
48 | can be changed using the command | 61 | changed using the command: |
49 | 62 | ||
50 | ethtool -G eth? rx n, where n is the number of desired rx descriptors. | 63 | ethtool -G eth? rx n, where n is the number of desired rx descriptors. |
51 | 64 | ||
52 | Tx Descriptors: Number of transmit descriptors. A transmit descriptor is a | 65 | Tx Descriptors: Number of transmit descriptors. A transmit descriptor is a data |
53 | data structure that describes a transmit buffer and its attributes to the | 66 | structure that describes a transmit buffer and its attributes to the network |
54 | network controller. The data in the descriptor is used by the controller to | 67 | controller. The data in the descriptor is used by the controller to read |
55 | read data from the host memory to the controller. In the 3.0.x driver the | 68 | data from the host memory to the controller. In the 3.x.x driver the valid |
56 | valid range for this parameter is 64-256. The default value is 64. This | 69 | range for this parameter is 64-256. The default value is 64. This parameter |
57 | parameter can be changed using the command | 70 | can be changed using the command: |
58 | 71 | ||
59 | ethtool -G eth? tx n, where n is the number of desired tx descriptors. | 72 | ethtool -G eth? tx n, where n is the number of desired tx descriptors. |
60 | 73 | ||
61 | Speed/Duplex: The driver auto-negotiates the link speed and duplex settings by | 74 | Speed/Duplex: The driver auto-negotiates the link speed and duplex settings by |
62 | default. Ethtool can be used as follows to force speed/duplex. | 75 | default. Ethtool can be used as follows to force speed/duplex. |
63 | 76 | ||
64 | ethtool -s eth? autoneg off speed {10|100} duplex {full|half} | 77 | ethtool -s eth? autoneg off speed {10|100} duplex {full|half} |
65 | 78 | ||
66 | NOTE: setting the speed/duplex to incorrect values will cause the link to | 79 | NOTE: setting the speed/duplex to incorrect values will cause the link to |
67 | fail. | 80 | fail. |
68 | 81 | ||
69 | Event Log Message Level: The driver uses the message level flag to log events | 82 | Event Log Message Level: The driver uses the message level flag to log events |
70 | to syslog. The message level can be set at driver load time. It can also be | 83 | to syslog. The message level can be set at driver load time. It can also be |
71 | set using the command | 84 | set using the command: |
72 | 85 | ||
73 | ethtool -s eth? msglvl n | 86 | ethtool -s eth? msglvl n |
74 | 87 | ||
88 | |||
75 | Additional Configurations | 89 | Additional Configurations |
76 | ========================= | 90 | ========================= |
77 | 91 | ||
78 | Configuring the Driver on Different Distributions | 92 | Configuring the Driver on Different Distributions |
79 | ------------------------------------------------- | 93 | ------------------------------------------------- |
80 | 94 | ||
81 | Configuring a network driver to load properly when the system is started is | 95 | Configuring a network driver to load properly when the system is started is |
82 | distribution dependent. Typically, the configuration process involves adding | 96 | distribution dependent. Typically, the configuration process involves adding |
83 | an alias line to /etc/modules.conf as well as editing other system startup | 97 | an alias line to /etc/modules.conf or /etc/modprobe.conf as well as editing |
84 | scripts and/or configuration files. Many popular Linux distributions ship | 98 | other system startup scripts and/or configuration files. Many popular Linux |
85 | with tools to make these changes for you. To learn the proper way to | 99 | distributions ship with tools to make these changes for you. To learn the |
86 | configure a network device for your system, refer to your distribution | 100 | proper way to configure a network device for your system, refer to your |
87 | documentation. If during this process you are asked for the driver or module | 101 | distribution documentation. If during this process you are asked for the |
88 | name, the name for the Linux Base Driver for the Intel PRO/100 Family of | 102 | driver or module name, the name for the Linux Base Driver for the Intel |
89 | Adapters is e100. | 103 | PRO/100 Family of Adapters is e100. |
90 | 104 | ||
91 | As an example, if you install the e100 driver for two PRO/100 adapters | 105 | As an example, if you install the e100 driver for two PRO/100 adapters |
92 | (eth0 and eth1), add the following to modules.conf: | 106 | (eth0 and eth1), add the following to modules.conf or modprobe.conf: |
93 | 107 | ||
94 | alias eth0 e100 | 108 | alias eth0 e100 |
95 | alias eth1 e100 | 109 | alias eth1 e100 |
96 | 110 | ||
97 | Viewing Link Messages | 111 | Viewing Link Messages |
98 | --------------------- | 112 | --------------------- |
99 | In order to see link messages and other Intel driver information on your | 113 | In order to see link messages and other Intel driver information on your |
100 | console, you must set the dmesg level up to six. This can be done by | 114 | console, you must set the dmesg level up to six. This can be done by |
101 | entering the following on the command line before loading the e100 driver: | 115 | entering the following on the command line before loading the e100 driver: |
102 | 116 | ||
103 | dmesg -n 8 | 117 | dmesg -n 8 |
104 | 118 | ||
105 | If you wish to see all messages issued by the driver, including debug | 119 | If you wish to see all messages issued by the driver, including debug |
106 | messages, set the dmesg level to eight. | 120 | messages, set the dmesg level to eight. |
107 | 121 | ||
108 | NOTE: This setting is not saved across reboots. | 122 | NOTE: This setting is not saved across reboots. |
109 | 123 | ||
124 | |||
110 | Ethtool | 125 | Ethtool |
111 | ------- | 126 | ------- |
112 | 127 | ||
@@ -114,29 +129,27 @@ Additional Configurations | |||
114 | diagnostics, as well as displaying statistical information. Ethtool | 129 | diagnostics, as well as displaying statistical information. Ethtool |
115 | version 1.6 or later is required for this functionality. | 130 | version 1.6 or later is required for this functionality. |
116 | 131 | ||
117 | The latest release of ethtool can be found at: | 132 | The latest release of ethtool can be found from |
118 | http://sf.net/projects/gkernel. | 133 | http://sourceforge.net/projects/gkernel. |
119 | 134 | ||
120 | NOTE: This driver uses mii support from the kernel. As a result, when | 135 | NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support |
121 | there is no link, ethtool will report speed/duplex to be 10/half. | 136 | for a more complete ethtool feature set can be enabled by upgrading |
137 | ethtool to ethtool-1.8.1. | ||
122 | 138 | ||
123 | NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support | ||
124 | for a more complete ethtool feature set can be enabled by upgrading | ||
125 | ethtool to ethtool-1.8.1. | ||
126 | 139 | ||
127 | Enabling Wake on LAN* (WoL) | 140 | Enabling Wake on LAN* (WoL) |
128 | --------------------------- | 141 | --------------------------- |
129 | WoL is provided through the Ethtool* utility. Ethtool is included with Red | 142 | WoL is provided through the Ethtool* utility. Ethtool is included with Red |
130 | Hat* 8.0. For other Linux distributions, download and install Ethtool from | 143 | Hat* 8.0. For other Linux distributions, download and install Ethtool from |
131 | the following website: http://sourceforge.net/projects/gkernel. | 144 | the following website: http://sourceforge.net/projects/gkernel. |
132 | 145 | ||
133 | For instructions on enabling WoL with Ethtool, refer to the Ethtool man | 146 | For instructions on enabling WoL with Ethtool, refer to the Ethtool man page. |
134 | page. | ||
135 | 147 | ||
136 | WoL will be enabled on the system during the next shut down or reboot. For | 148 | WoL will be enabled on the system during the next shut down or reboot. For |
137 | this driver version, in order to enable WoL, the e100 driver must be | 149 | this driver version, in order to enable WoL, the e100 driver must be |
138 | loaded when shutting down or rebooting the system. | 150 | loaded when shutting down or rebooting the system. |
139 | 151 | ||
152 | |||
140 | NAPI | 153 | NAPI |
141 | ---- | 154 | ---- |
142 | 155 | ||
@@ -144,6 +157,25 @@ Additional Configurations | |||
144 | 157 | ||
145 | See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. | 158 | See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. |
146 | 159 | ||
160 | Multiple Interfaces on Same Ethernet Broadcast Network | ||
161 | ------------------------------------------------------ | ||
162 | |||
163 | Due to the default ARP behavior on Linux, it is not possible to have | ||
164 | one system on two IP networks in the same Ethernet broadcast domain | ||
165 | (non-partitioned switch) behave as expected. All Ethernet interfaces | ||
166 | will respond to IP traffic for any IP address assigned to the system. | ||
167 | This results in unbalanced receive traffic. | ||
168 | |||
169 | If you have multiple interfaces in a server, either turn on ARP | ||
170 | filtering by | ||
171 | |||
172 | (1) entering: echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter | ||
173 | (this only works if your kernel's version is higher than 2.4.5), or | ||
174 | |||
175 | (2) installing the interfaces in separate broadcast domains (either | ||
176 | in different switches or in a switch partitioned to VLANs). | ||
177 | |||
178 | |||
147 | Support | 179 | Support |
148 | ======= | 180 | ======= |
149 | 181 | ||
@@ -151,20 +183,24 @@ For general information, go to the Intel support website at: | |||
151 | 183 | ||
152 | http://support.intel.com | 184 | http://support.intel.com |
153 | 185 | ||
186 | or the Intel Wired Networking project hosted by Sourceforge at: | ||
187 | |||
188 | http://sourceforge.net/projects/e1000 | ||
189 | |||
154 | If an issue is identified with the released source code on the supported | 190 | If an issue is identified with the released source code on the supported |
155 | kernel with a supported adapter, email the specific information related to | 191 | kernel with a supported adapter, email the specific information related to the |
156 | the issue to linux.nics@intel.com. | 192 | issue to e1000-devel@lists.sourceforge.net. |
157 | 193 | ||
158 | 194 | ||
159 | License | 195 | License |
160 | ======= | 196 | ======= |
161 | 197 | ||
162 | This software program is released under the terms of a license agreement | 198 | This software program is released under the terms of a license agreement |
163 | between you ('Licensee') and Intel. Do not use or load this software or any | 199 | between you ('Licensee') and Intel. Do not use or load this software or any |
164 | associated materials (collectively, the 'Software') until you have carefully | 200 | associated materials (collectively, the 'Software') until you have carefully |
165 | read the full terms and conditions of the LICENSE located in this software | 201 | read the full terms and conditions of the file COPYING located in this software |
166 | package. By loading or using the Software, you agree to the terms of this | 202 | package. By loading or using the Software, you agree to the terms of this |
167 | Agreement. If you do not agree with the terms of this Agreement, do not | 203 | Agreement. If you do not agree with the terms of this Agreement, do not install |
168 | install or use the Software. | 204 | or use the Software. |
169 | 205 | ||
170 | * Other names and brands may be claimed as the property of others. | 206 | * Other names and brands may be claimed as the property of others. |
diff --git a/Documentation/networking/e1000.txt b/Documentation/networking/e1000.txt index 2ebd4058d46d..71fe15af356c 100644 --- a/Documentation/networking/e1000.txt +++ b/Documentation/networking/e1000.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters | 1 | Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters |
2 | =============================================================== | 2 | =============================================================== |
3 | 3 | ||
4 | November 17, 2004 | 4 | November 15, 2005 |
5 | 5 | ||
6 | 6 | ||
7 | Contents | 7 | Contents |
@@ -20,254 +20,316 @@ In This Release | |||
20 | =============== | 20 | =============== |
21 | 21 | ||
22 | This file describes the Linux* Base Driver for the Intel(R) PRO/1000 Family | 22 | This file describes the Linux* Base Driver for the Intel(R) PRO/1000 Family |
23 | of Adapters, version 5.x.x. | 23 | of Adapters. This driver includes support for Itanium(R)2-based systems. |
24 | 24 | ||
25 | For questions related to hardware requirements, refer to the documentation | 25 | For questions related to hardware requirements, refer to the documentation |
26 | supplied with your Intel PRO/1000 adapter. All hardware requirements listed | 26 | supplied with your Intel PRO/1000 adapter. All hardware requirements listed |
27 | apply to use with Linux. | 27 | apply to use with Linux. |
28 | 28 | ||
29 | Native VLANs are now available with supported kernels. | 29 | The following features are now available in supported kernels: |
30 | - Native VLANs | ||
31 | - Channel Bonding (teaming) | ||
32 | - SNMP | ||
33 | |||
34 | Channel Bonding documentation can be found in the Linux kernel source: | ||
35 | /Documentation/networking/bonding.txt | ||
36 | |||
37 | The driver information previously displayed in the /proc filesystem is not | ||
38 | supported in this release. Alternatively, you can use ethtool (version 1.6 | ||
39 | or later), lspci, and ifconfig to obtain the same information. | ||
40 | |||
41 | Instructions on updating ethtool can be found in the section "Additional | ||
42 | Configurations" later in this document. | ||
43 | |||
30 | 44 | ||
31 | Identifying Your Adapter | 45 | Identifying Your Adapter |
32 | ======================== | 46 | ======================== |
33 | 47 | ||
34 | For more information on how to identify your adapter, go to the Adapter & | 48 | For more information on how to identify your adapter, go to the Adapter & |
35 | Driver ID Guide at: | 49 | Driver ID Guide at: |
36 | 50 | ||
37 | http://support.intel.com/support/network/adapter/pro100/21397.htm | 51 | http://support.intel.com/support/network/adapter/pro100/21397.htm |
38 | 52 | ||
39 | For the latest Intel network drivers for Linux, refer to the following | 53 | For the latest Intel network drivers for Linux, refer to the following |
40 | website. In the search field, enter your adapter name or type, or use the | 54 | website. In the search field, enter your adapter name or type, or use the |
41 | networking link on the left to search for your adapter: | 55 | networking link on the left to search for your adapter: |
42 | 56 | ||
43 | http://downloadfinder.intel.com/scripts-df/support_intel.asp | 57 | http://downloadfinder.intel.com/scripts-df/support_intel.asp |
44 | 58 | ||
45 | Command Line Parameters | ||
46 | ======================= | ||
47 | 59 | ||
48 | If the driver is built as a module, the following optional parameters are | 60 | Command Line Parameters ======================= |
49 | used by entering them on the command line with the modprobe or insmod command | 61 | |
50 | using this syntax: | 62 | If the driver is built as a module, the following optional parameters |
63 | are used by entering them on the command line with the modprobe or insmod | ||
64 | command using this syntax: | ||
51 | 65 | ||
52 | modprobe e1000 [<option>=<VAL1>,<VAL2>,...] | 66 | modprobe e1000 [<option>=<VAL1>,<VAL2>,...] |
53 | 67 | ||
54 | insmod e1000 [<option>=<VAL1>,<VAL2>,...] | 68 | insmod e1000 [<option>=<VAL1>,<VAL2>,...] |
55 | 69 | ||
56 | For example, with two PRO/1000 PCI adapters, entering: | 70 | For example, with two PRO/1000 PCI adapters, entering: |
57 | 71 | ||
58 | insmod e1000 TxDescriptors=80,128 | 72 | insmod e1000 TxDescriptors=80,128 |
59 | 73 | ||
60 | loads the e1000 driver with 80 TX descriptors for the first adapter and 128 TX | 74 | loads the e1000 driver with 80 TX descriptors for the first adapter and 128 |
61 | descriptors for the second adapter. | 75 | TX descriptors for the second adapter. |
62 | 76 | ||
63 | The default value for each parameter is generally the recommended setting, | 77 | The default value for each parameter is generally the recommended setting, |
64 | unless otherwise noted. Also, if the driver is statically built into the | 78 | unless otherwise noted. |
65 | kernel, the driver is loaded with the default values for all the parameters. | 79 | |
66 | Ethtool can be used to change some of the parameters at runtime. | 80 | NOTES: For more information about the AutoNeg, Duplex, and Speed |
81 | parameters, see the "Speed and Duplex Configuration" section in | ||
82 | this document. | ||
67 | 83 | ||
68 | NOTES: For more information about the AutoNeg, Duplex, and Speed | 84 | For more information about the InterruptThrottleRate, |
69 | parameters, see the "Speed and Duplex Configuration" section in | 85 | RxIntDelay, TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay |
70 | this document. | 86 | parameters, see the application note at: |
87 | http://www.intel.com/design/network/applnots/ap450.htm | ||
71 | 88 | ||
72 | For more information about the InterruptThrottleRate, RxIntDelay, | 89 | A descriptor describes a data buffer and attributes related to |
73 | TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay parameters, see the | 90 | the data buffer. This information is accessed by the hardware. |
74 | application note at: | ||
75 | http://www.intel.com/design/network/applnots/ap450.htm | ||
76 | 91 | ||
77 | A descriptor describes a data buffer and attributes related to the | ||
78 | data buffer. This information is accessed by the hardware. | ||
79 | 92 | ||
80 | AutoNeg (adapters using copper connections only) | 93 | AutoNeg |
81 | Valid Range: 0x01-0x0F, 0x20-0x2F | 94 | ------- |
95 | (Supported only on adapters with copper connections) | ||
96 | Valid Range: 0x01-0x0F, 0x20-0x2F | ||
82 | Default Value: 0x2F | 97 | Default Value: 0x2F |
83 | This parameter is a bit mask that specifies which speed and duplex | 98 | |
84 | settings the board advertises. When this parameter is used, the Speed and | 99 | This parameter is a bit mask that specifies which speed and duplex |
85 | Duplex parameters must not be specified. | 100 | settings the board advertises. When this parameter is used, the Speed |
86 | NOTE: Refer to the Speed and Duplex section of this readme for more | 101 | and Duplex parameters must not be specified. |
87 | information on the AutoNeg parameter. | 102 | |
88 | 103 | NOTE: Refer to the Speed and Duplex section of this readme for more | |
89 | Duplex (adapters using copper connections only) | 104 | information on the AutoNeg parameter. |
90 | Valid Range: 0-2 (0=auto-negotiate, 1=half, 2=full) | 105 | |
106 | |||
107 | Duplex | ||
108 | ------ | ||
109 | (Supported only on adapters with copper connections) | ||
110 | Valid Range: 0-2 (0=auto-negotiate, 1=half, 2=full) | ||
91 | Default Value: 0 | 111 | Default Value: 0 |
92 | Defines the direction in which data is allowed to flow. Can be either one | 112 | |
93 | or two-directional. If both Duplex and the link partner are set to auto- | 113 | Defines the direction in which data is allowed to flow. Can be either |
94 | negotiate, the board auto-detects the correct duplex. If the link partner | 114 | one or two-directional. If both Duplex and the link partner are set to |
95 | is forced (either full or half), Duplex defaults to half-duplex. | 115 | auto-negotiate, the board auto-detects the correct duplex. If the link |
116 | partner is forced (either full or half), Duplex defaults to half-duplex. | ||
117 | |||
96 | 118 | ||
97 | FlowControl | 119 | FlowControl |
98 | Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx) | 120 | ---------- |
99 | Default: Read flow control settings from the EEPROM | 121 | Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx) |
100 | This parameter controls the automatic generation(Tx) and response(Rx) to | 122 | Default Value: Reads flow control settings from the EEPROM |
101 | Ethernet PAUSE frames. | 123 | |
124 | This parameter controls the automatic generation(Tx) and response(Rx) | ||
125 | to Ethernet PAUSE frames. | ||
126 | |||
102 | 127 | ||
103 | InterruptThrottleRate | 128 | InterruptThrottleRate |
104 | Valid Range: 100-100000 (0=off, 1=dynamic) | 129 | --------------------- |
130 | (not supported on Intel 82542, 82543 or 82544-based adapters) | ||
131 | Valid Range: 100-100000 (0=off, 1=dynamic) | ||
105 | Default Value: 8000 | 132 | Default Value: 8000 |
106 | This value represents the maximum number of interrupts per second the | 133 | |
107 | controller generates. InterruptThrottleRate is another setting used in | 134 | This value represents the maximum number of interrupts per second the |
108 | interrupt moderation. Dynamic mode uses a heuristic algorithm to adjust | 135 | controller generates. InterruptThrottleRate is another setting used in |
109 | InterruptThrottleRate based on the current traffic load. | 136 | interrupt moderation. Dynamic mode uses a heuristic algorithm to adjust |
110 | Un-supported Adapters: InterruptThrottleRate is NOT supported by 82542, 82543 | 137 | InterruptThrottleRate based on the current traffic load. |
111 | or 82544-based adapters. | 138 | |
112 | 139 | NOTE: InterruptThrottleRate takes precedence over the TxAbsIntDelay and | |
113 | NOTE: InterruptThrottleRate takes precedence over the TxAbsIntDelay and | 140 | RxAbsIntDelay parameters. In other words, minimizing the receive |
114 | RxAbsIntDelay parameters. In other words, minimizing the receive | 141 | and/or transmit absolute delays does not force the controller to |
115 | and/or transmit absolute delays does not force the controller to | 142 | generate more interrupts than what the Interrupt Throttle Rate |
116 | generate more interrupts than what the Interrupt Throttle Rate | 143 | allows. |
117 | allows. | 144 | |
118 | CAUTION: If you are using the Intel PRO/1000 CT Network Connection | 145 | CAUTION: If you are using the Intel PRO/1000 CT Network Connection |
119 | (controller 82547), setting InterruptThrottleRate to a value | 146 | (controller 82547), setting InterruptThrottleRate to a value |
120 | greater than 75,000, may hang (stop transmitting) adapters under | 147 | greater than 75,000, may hang (stop transmitting) adapters |
121 | certain network conditions. If this occurs a NETDEV WATCHDOG | 148 | under certain network conditions. If this occurs a NETDEV |
122 | message is logged in the system event log. In addition, the | 149 | WATCHDOG message is logged in the system event log. In |
123 | controller is automatically reset, restoring the network | 150 | addition, the controller is automatically reset, restoring |
124 | connection. To eliminate the potential for the hang, ensure | 151 | the network connection. To eliminate the potential for the |
125 | that InterruptThrottleRate is set no greater than 75,000 and is | 152 | hang, ensure that InterruptThrottleRate is set no greater |
126 | not set to 0. | 153 | than 75,000 and is not set to 0. |
127 | NOTE: When e1000 is loaded with default settings and multiple adapters are | 154 | |
128 | in use simultaneously, the CPU utilization may increase non-linearly. | 155 | NOTE: When e1000 is loaded with default settings and multiple adapters |
129 | In order to limit the CPU utilization without impacting the overall | 156 | are in use simultaneously, the CPU utilization may increase non- |
130 | throughput, we recommend that you load the driver as follows: | 157 | linearly. In order to limit the CPU utilization without impacting |
131 | 158 | the overall throughput, we recommend that you load the driver as | |
132 | insmod e1000.o InterruptThrottleRate=3000,3000,3000 | 159 | follows: |
133 | 160 | ||
134 | This sets the InterruptThrottleRate to 3000 interrupts/sec for the | 161 | insmod e1000.o InterruptThrottleRate=3000,3000,3000 |
135 | first, second, and third instances of the driver. The range of 2000 to | 162 | |
136 | 3000 interrupts per second works on a majority of systems and is a | 163 | This sets the InterruptThrottleRate to 3000 interrupts/sec for |
137 | good starting point, but the optimal value will be platform-specific. | 164 | the first, second, and third instances of the driver. The range |
138 | If CPU utilization is not a concern, use RX_POLLING (NAPI) and default | 165 | of 2000 to 3000 interrupts per second works on a majority of |
139 | driver settings. | 166 | systems and is a good starting point, but the optimal value will |
167 | be platform-specific. If CPU utilization is not a concern, use | ||
168 | RX_POLLING (NAPI) and default driver settings. | ||
169 | |||
140 | 170 | ||
141 | RxDescriptors | 171 | RxDescriptors |
142 | Valid Range: 80-256 for 82542 and 82543-based adapters | 172 | ------------- |
143 | 80-4096 for all other supported adapters | 173 | Valid Range: 80-256 for 82542 and 82543-based adapters |
174 | 80-4096 for all other supported adapters | ||
144 | Default Value: 256 | 175 | Default Value: 256 |
145 | This value is the number of receive descriptors allocated by the driver. | ||
146 | Increasing this value allows the driver to buffer more incoming packets. | ||
147 | Each descriptor is 16 bytes. A receive buffer is allocated for each | ||
148 | descriptor and can either be 2048 or 4096 bytes long, depending on the MTU | ||
149 | 176 | ||
150 | setting. An incoming packet can span one or more receive descriptors. | 177 | This value specifies the number of receive descriptors allocated by the |
151 | The maximum MTU size is 16110. | 178 | driver. Increasing this value allows the driver to buffer more incoming |
179 | packets. Each descriptor is 16 bytes. A receive buffer is also | ||
180 | allocated for each descriptor and is 2048. | ||
152 | 181 | ||
153 | NOTE: MTU designates the frame size. It only needs to be set for Jumbo | ||
154 | Frames. | ||
155 | NOTE: Depending on the available system resources, the request for a | ||
156 | higher number of receive descriptors may be denied. In this case, | ||
157 | use a lower number. | ||
158 | 182 | ||
159 | RxIntDelay | 183 | RxIntDelay |
160 | Valid Range: 0-65535 (0=off) | 184 | ---------- |
185 | Valid Range: 0-65535 (0=off) | ||
161 | Default Value: 0 | 186 | Default Value: 0 |
162 | This value delays the generation of receive interrupts in units of 1.024 | 187 | |
163 | microseconds. Receive interrupt reduction can improve CPU efficiency if | 188 | This value delays the generation of receive interrupts in units of 1.024 |
164 | properly tuned for specific network traffic. Increasing this value adds | 189 | microseconds. Receive interrupt reduction can improve CPU efficiency if |
165 | extra latency to frame reception and can end up decreasing the throughput | 190 | properly tuned for specific network traffic. Increasing this value adds |
166 | of TCP traffic. If the system is reporting dropped receives, this value | 191 | extra latency to frame reception and can end up decreasing the throughput |
167 | may be set too high, causing the driver to run out of available receive | 192 | of TCP traffic. If the system is reporting dropped receives, this value |
168 | descriptors. | 193 | may be set too high, causing the driver to run out of available receive |
169 | 194 | descriptors. | |
170 | CAUTION: When setting RxIntDelay to a value other than 0, adapters may | 195 | |
171 | hang (stop transmitting) under certain network conditions. If | 196 | CAUTION: When setting RxIntDelay to a value other than 0, adapters may |
172 | this occurs a NETDEV WATCHDOG message is logged in the system | 197 | hang (stop transmitting) under certain network conditions. If |
173 | event log. In addition, the controller is automatically reset, | 198 | this occurs a NETDEV WATCHDOG message is logged in the system |
174 | restoring the network connection. To eliminate the potential for | 199 | event log. In addition, the controller is automatically reset, |
175 | the hang ensure that RxIntDelay is set to 0. | 200 | restoring the network connection. To eliminate the potential |
176 | 201 | for the hang ensure that RxIntDelay is set to 0. | |
177 | RxAbsIntDelay (82540, 82545 and later adapters only) | 202 | |
178 | Valid Range: 0-65535 (0=off) | 203 | |
204 | RxAbsIntDelay | ||
205 | ------------- | ||
206 | (This parameter is supported only on 82540, 82545 and later adapters.) | ||
207 | Valid Range: 0-65535 (0=off) | ||
179 | Default Value: 128 | 208 | Default Value: 128 |
180 | This value, in units of 1.024 microseconds, limits the delay in which a | 209 | |
181 | receive interrupt is generated. Useful only if RxIntDelay is non-zero, | 210 | This value, in units of 1.024 microseconds, limits the delay in which a |
182 | this value ensures that an interrupt is generated after the initial | 211 | receive interrupt is generated. Useful only if RxIntDelay is non-zero, |
183 | packet is received within the set amount of time. Proper tuning, | 212 | this value ensures that an interrupt is generated after the initial |
184 | along with RxIntDelay, may improve traffic throughput in specific network | 213 | packet is received within the set amount of time. Proper tuning, |
185 | conditions. | 214 | along with RxIntDelay, may improve traffic throughput in specific network |
186 | 215 | conditions. | |
187 | Speed (adapters using copper connections only) | 216 | |
217 | |||
218 | Speed | ||
219 | ----- | ||
220 | (This parameter is supported only on adapters with copper connections.) | ||
188 | Valid Settings: 0, 10, 100, 1000 | 221 | Valid Settings: 0, 10, 100, 1000 |
189 | Default Value: 0 (auto-negotiate at all supported speeds) | 222 | Default Value: 0 (auto-negotiate at all supported speeds) |
190 | Speed forces the line speed to the specified value in megabits per second | 223 | |
191 | (Mbps). If this parameter is not specified or is set to 0 and the link | 224 | Speed forces the line speed to the specified value in megabits per second |
192 | partner is set to auto-negotiate, the board will auto-detect the correct | 225 | (Mbps). If this parameter is not specified or is set to 0 and the link |
193 | speed. Duplex should also be set when Speed is set to either 10 or 100. | 226 | partner is set to auto-negotiate, the board will auto-detect the correct |
227 | speed. Duplex should also be set when Speed is set to either 10 or 100. | ||
228 | |||
194 | 229 | ||
195 | TxDescriptors | 230 | TxDescriptors |
196 | Valid Range: 80-256 for 82542 and 82543-based adapters | 231 | ------------- |
197 | 80-4096 for all other supported adapters | 232 | Valid Range: 80-256 for 82542 and 82543-based adapters |
233 | 80-4096 for all other supported adapters | ||
198 | Default Value: 256 | 234 | Default Value: 256 |
199 | This value is the number of transmit descriptors allocated by the driver. | ||
200 | Increasing this value allows the driver to queue more transmits. Each | ||
201 | descriptor is 16 bytes. | ||
202 | 235 | ||
203 | NOTE: Depending on the available system resources, the request for a | 236 | This value is the number of transmit descriptors allocated by the driver. |
204 | higher number of transmit descriptors may be denied. In this case, | 237 | Increasing this value allows the driver to queue more transmits. Each |
205 | use a lower number. | 238 | descriptor is 16 bytes. |
239 | |||
240 | NOTE: Depending on the available system resources, the request for a | ||
241 | higher number of transmit descriptors may be denied. In this case, | ||
242 | use a lower number. | ||
243 | |||
206 | 244 | ||
207 | TxIntDelay | 245 | TxIntDelay |
208 | Valid Range: 0-65535 (0=off) | 246 | ---------- |
247 | Valid Range: 0-65535 (0=off) | ||
209 | Default Value: 64 | 248 | Default Value: 64 |
210 | This value delays the generation of transmit interrupts in units of | 249 | |
211 | 1.024 microseconds. Transmit interrupt reduction can improve CPU | 250 | This value delays the generation of transmit interrupts in units of |
212 | efficiency if properly tuned for specific network traffic. If the | 251 | 1.024 microseconds. Transmit interrupt reduction can improve CPU |
213 | system is reporting dropped transmits, this value may be set too high | 252 | efficiency if properly tuned for specific network traffic. If the |
214 | causing the driver to run out of available transmit descriptors. | 253 | system is reporting dropped transmits, this value may be set too high |
215 | 254 | causing the driver to run out of available transmit descriptors. | |
216 | TxAbsIntDelay (82540, 82545 and later adapters only) | 255 | |
217 | Valid Range: 0-65535 (0=off) | 256 | |
257 | TxAbsIntDelay | ||
258 | ------------- | ||
259 | (This parameter is supported only on 82540, 82545 and later adapters.) | ||
260 | Valid Range: 0-65535 (0=off) | ||
218 | Default Value: 64 | 261 | Default Value: 64 |
219 | This value, in units of 1.024 microseconds, limits the delay in which a | 262 | |
220 | transmit interrupt is generated. Useful only if TxIntDelay is non-zero, | 263 | This value, in units of 1.024 microseconds, limits the delay in which a |
221 | this value ensures that an interrupt is generated after the initial | 264 | transmit interrupt is generated. Useful only if TxIntDelay is non-zero, |
222 | packet is sent on the wire within the set amount of time. Proper tuning, | 265 | this value ensures that an interrupt is generated after the initial |
223 | along with TxIntDelay, may improve traffic throughput in specific | 266 | packet is sent on the wire within the set amount of time. Proper tuning, |
224 | network conditions. | 267 | along with TxIntDelay, may improve traffic throughput in specific |
225 | 268 | network conditions. | |
226 | XsumRX (not available on the 82542-based adapter) | 269 | |
227 | Valid Range: 0-1 | 270 | XsumRX |
271 | ------ | ||
272 | (This parameter is NOT supported on the 82542-based adapter.) | ||
273 | Valid Range: 0-1 | ||
228 | Default Value: 1 | 274 | Default Value: 1 |
229 | A value of '1' indicates that the driver should enable IP checksum | 275 | |
230 | offload for received packets (both UDP and TCP) to the adapter hardware. | 276 | A value of '1' indicates that the driver should enable IP checksum |
277 | offload for received packets (both UDP and TCP) to the adapter hardware. | ||
278 | |||
231 | 279 | ||
232 | Speed and Duplex Configuration | 280 | Speed and Duplex Configuration |
233 | ============================== | 281 | ============================== |
234 | 282 | ||
235 | Three keywords are used to control the speed and duplex configuration. These | 283 | Three keywords are used to control the speed and duplex configuration. |
236 | keywords are Speed, Duplex, and AutoNeg. | 284 | These keywords are Speed, Duplex, and AutoNeg. |
237 | 285 | ||
238 | If the board uses a fiber interface, these keywords are ignored, and the | 286 | If the board uses a fiber interface, these keywords are ignored, and the |
239 | fiber interface board only links at 1000 Mbps full-duplex. | 287 | fiber interface board only links at 1000 Mbps full-duplex. |
240 | 288 | ||
241 | For copper-based boards, the keywords interact as follows: | 289 | For copper-based boards, the keywords interact as follows: |
242 | 290 | ||
243 | The default operation is auto-negotiate. The board advertises all supported | 291 | The default operation is auto-negotiate. The board advertises all |
244 | speed and duplex combinations, and it links at the highest common speed and | 292 | supported speed and duplex combinations, and it links at the highest |
245 | duplex mode IF the link partner is set to auto-negotiate. | 293 | common speed and duplex mode IF the link partner is set to auto-negotiate. |
246 | 294 | ||
247 | If Speed = 1000, limited auto-negotiation is enabled and only 1000 Mbps is | 295 | If Speed = 1000, limited auto-negotiation is enabled and only 1000 Mbps |
248 | advertised (The 1000BaseT spec requires auto-negotiation.) | 296 | is advertised (The 1000BaseT spec requires auto-negotiation.) |
249 | 297 | ||
250 | If Speed = 10 or 100, then both Speed and Duplex should be set. Auto- | 298 | If Speed = 10 or 100, then both Speed and Duplex should be set. Auto- |
251 | negotiation is disabled, and the AutoNeg parameter is ignored. Partner SHOULD | 299 | negotiation is disabled, and the AutoNeg parameter is ignored. Partner |
252 | also be forced. | 300 | SHOULD also be forced. |
301 | |||
302 | The AutoNeg parameter is used when more control is required over the | ||
303 | auto-negotiation process. It should be used when you wish to control which | ||
304 | speed and duplex combinations are advertised during the auto-negotiation | ||
305 | process. | ||
306 | |||
307 | The parameter may be specified as either a decimal or hexidecimal value as | ||
308 | determined by the bitmap below. | ||
253 | 309 | ||
254 | The AutoNeg parameter is used when more control is required over the auto- | 310 | Bit position 7 6 5 4 3 2 1 0 |
255 | negotiation process. When this parameter is used, Speed and Duplex parameters | 311 | Decimal Value 128 64 32 16 8 4 2 1 |
256 | must not be specified. The following table describes supported values for the | 312 | Hex value 80 40 20 10 8 4 2 1 |
257 | AutoNeg parameter: | 313 | Speed (Mbps) N/A N/A 1000 N/A 100 100 10 10 |
314 | Duplex Full Full Half Full Half | ||
258 | 315 | ||
259 | Speed (Mbps) 1000 100 100 10 10 | 316 | Some examples of using AutoNeg: |
260 | Duplex Full Full Half Full Half | ||
261 | Value (in base 16) 0x20 0x08 0x04 0x02 0x01 | ||
262 | 317 | ||
263 | Example: insmod e1000 AutoNeg=0x03, loads e1000 and specifies (10 full duplex, | 318 | modprobe e1000 AutoNeg=0x01 (Restricts autonegotiation to 10 Half) |
264 | 10 half duplex) for negotiation with the peer. | 319 | modprobe e1000 AutoNeg=1 (Same as above) |
320 | modprobe e1000 AutoNeg=0x02 (Restricts autonegotiation to 10 Full) | ||
321 | modprobe e1000 AutoNeg=0x03 (Restricts autonegotiation to 10 Half or 10 Full) | ||
322 | modprobe e1000 AutoNeg=0x04 (Restricts autonegotiation to 100 Half) | ||
323 | modprobe e1000 AutoNeg=0x05 (Restricts autonegotiation to 10 Half or 100 | ||
324 | Half) | ||
325 | modprobe e1000 AutoNeg=0x020 (Restricts autonegotiation to 1000 Full) | ||
326 | modprobe e1000 AutoNeg=32 (Same as above) | ||
265 | 327 | ||
266 | Note that setting AutoNeg does not guarantee that the board will link at the | 328 | Note that when this parameter is used, Speed and Duplex must not be specified. |
267 | highest specified speed or duplex mode, but the board will link at the | 329 | |
268 | highest possible speed/duplex of the link partner IF the link partner is also | 330 | If the link partner is forced to a specific speed and duplex, then this |
269 | set to auto-negotiate. If the link partner is forced speed/duplex, the | 331 | parameter should not be used. Instead, use the Speed and Duplex parameters |
270 | adapter MUST be forced to the same speed/duplex. | 332 | previously mentioned to force the adapter to the same speed and duplex. |
271 | 333 | ||
272 | 334 | ||
273 | Additional Configurations | 335 | Additional Configurations |
@@ -276,19 +338,19 @@ Additional Configurations | |||
276 | Configuring the Driver on Different Distributions | 338 | Configuring the Driver on Different Distributions |
277 | ------------------------------------------------- | 339 | ------------------------------------------------- |
278 | 340 | ||
279 | Configuring a network driver to load properly when the system is started is | 341 | Configuring a network driver to load properly when the system is started |
280 | distribution dependent. Typically, the configuration process involves adding | 342 | is distribution dependent. Typically, the configuration process involves |
281 | an alias line to /etc/modules.conf as well as editing other system startup | 343 | adding an alias line to /etc/modules.conf or /etc/modprobe.conf as well |
282 | scripts and/or configuration files. Many popular Linux distributions ship | 344 | as editing other system startup scripts and/or configuration files. Many |
283 | with tools to make these changes for you. To learn the proper way to | 345 | popular Linux distributions ship with tools to make these changes for you. |
284 | configure a network device for your system, refer to your distribution | 346 | To learn the proper way to configure a network device for your system, |
285 | documentation. If during this process you are asked for the driver or module | 347 | refer to your distribution documentation. If during this process you are |
286 | name, the name for the Linux Base Driver for the Intel PRO/1000 Family of | 348 | asked for the driver or module name, the name for the Linux Base Driver |
287 | Adapters is e1000. | 349 | for the Intel PRO/1000 Family of Adapters is e1000. |
288 | 350 | ||
289 | As an example, if you install the e1000 driver for two PRO/1000 adapters | 351 | As an example, if you install the e1000 driver for two PRO/1000 adapters |
290 | (eth0 and eth1) and set the speed and duplex to 10full and 100half, add the | 352 | (eth0 and eth1) and set the speed and duplex to 10full and 100half, add |
291 | following to modules.conf: | 353 | the following to modules.conf or or modprobe.conf: |
292 | 354 | ||
293 | alias eth0 e1000 | 355 | alias eth0 e1000 |
294 | alias eth1 e1000 | 356 | alias eth1 e1000 |
@@ -297,9 +359,9 @@ Additional Configurations | |||
297 | Viewing Link Messages | 359 | Viewing Link Messages |
298 | --------------------- | 360 | --------------------- |
299 | 361 | ||
300 | Link messages will not be displayed to the console if the distribution is | 362 | Link messages will not be displayed to the console if the distribution is |
301 | restricting system messages. In order to see network driver link messages on | 363 | restricting system messages. In order to see network driver link messages |
302 | your console, set dmesg to eight by entering the following: | 364 | on your console, set dmesg to eight by entering the following: |
303 | 365 | ||
304 | dmesg -n 8 | 366 | dmesg -n 8 |
305 | 367 | ||
@@ -308,22 +370,42 @@ Additional Configurations | |||
308 | Jumbo Frames | 370 | Jumbo Frames |
309 | ------------ | 371 | ------------ |
310 | 372 | ||
311 | The driver supports Jumbo Frames for all adapters except 82542-based | 373 | The driver supports Jumbo Frames for all adapters except 82542 and |
312 | adapters. Jumbo Frames support is enabled by changing the MTU to a value | 374 | 82573-based adapters. Jumbo Frames support is enabled by changing the |
313 | larger than the default of 1500. Use the ifconfig command to increase the | 375 | MTU to a value larger than the default of 1500. Use the ifconfig command |
314 | MTU size. For example: | 376 | to increase the MTU size. For example: |
377 | |||
378 | ifconfig eth<x> mtu 9000 up | ||
379 | |||
380 | This setting is not saved across reboots. It can be made permanent if | ||
381 | you add: | ||
382 | |||
383 | MTU=9000 | ||
315 | 384 | ||
316 | ifconfig ethx mtu 9000 up | 385 | to the file /etc/sysconfig/network-scripts/ifcfg-eth<x>. This example |
386 | applies to the Red Hat distributions; other distributions may store this | ||
387 | setting in a different location. | ||
317 | 388 | ||
318 | The maximum MTU setting for Jumbo Frames is 16110. This value coincides | 389 | Notes: |
319 | with the maximum Jumbo Frames size of 16128. | ||
320 | 390 | ||
321 | NOTE: Jumbo Frames are supported at 1000 Mbps only. Using Jumbo Frames at | 391 | - To enable Jumbo Frames, increase the MTU size on the interface beyond |
322 | 10 or 100 Mbps may result in poor performance or loss of link. | 392 | 1500. |
393 | - The maximum MTU setting for Jumbo Frames is 16110. This value coincides | ||
394 | with the maximum Jumbo Frames size of 16128. | ||
395 | - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or | ||
396 | loss of link. | ||
397 | - Some Intel gigabit adapters that support Jumbo Frames have a frame size | ||
398 | limit of 9238 bytes, with a corresponding MTU size limit of 9216 bytes. | ||
399 | The adapters with this limitation are based on the Intel 82571EB and | ||
400 | 82572EI controllers, which correspond to these product names: | ||
401 | Intel® PRO/1000 PT Dual Port Server Adapter | ||
402 | Intel® PRO/1000 PF Dual Port Server Adapter | ||
403 | Intel® PRO/1000 PT Server Adapter | ||
404 | Intel® PRO/1000 PT Desktop Adapter | ||
405 | Intel® PRO/1000 PF Server Adapter | ||
323 | 406 | ||
407 | - The Intel PRO/1000 PM Network Connection does not support jumbo frames. | ||
324 | 408 | ||
325 | NOTE: MTU designates the frame size. To enable Jumbo Frames, increase the | ||
326 | MTU size on the interface beyond 1500. | ||
327 | 409 | ||
328 | Ethtool | 410 | Ethtool |
329 | ------- | 411 | ------- |
@@ -333,32 +415,41 @@ Additional Configurations | |||
333 | version 1.6 or later is required for this functionality. | 415 | version 1.6 or later is required for this functionality. |
334 | 416 | ||
335 | The latest release of ethtool can be found from | 417 | The latest release of ethtool can be found from |
336 | http://sf.net/projects/gkernel. | 418 | http://sourceforge.net/projects/gkernel. |
337 | 419 | ||
338 | NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support | 420 | NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support |
339 | for a more complete ethtool feature set can be enabled by upgrading | 421 | for a more complete ethtool feature set can be enabled by upgrading |
340 | ethtool to ethtool-1.8.1. | 422 | ethtool to ethtool-1.8.1. |
341 | 423 | ||
342 | Enabling Wake on LAN* (WoL) | 424 | Enabling Wake on LAN* (WoL) |
343 | --------------------------- | 425 | --------------------------- |
344 | 426 | ||
345 | WoL is configured through the Ethtool* utility. Ethtool is included with | 427 | WoL is configured through the Ethtool* utility. Ethtool is included with |
346 | all versions of Red Hat after Red Hat 7.2. For other Linux distributions, | 428 | all versions of Red Hat after Red Hat 7.2. For other Linux distributions, |
347 | download and install Ethtool from the following website: | 429 | download and install Ethtool from the following website: |
348 | http://sourceforge.net/projects/gkernel. | 430 | http://sourceforge.net/projects/gkernel. |
349 | 431 | ||
350 | For instructions on enabling WoL with Ethtool, refer to the website listed | 432 | For instructions on enabling WoL with Ethtool, refer to the website listed |
351 | above. | 433 | above. |
352 | 434 | ||
353 | WoL will be enabled on the system during the next shut down or reboot. | 435 | WoL will be enabled on the system during the next shut down or reboot. |
354 | For this driver version, in order to enable WoL, the e1000 driver must be | 436 | For this driver version, in order to enable WoL, the e1000 driver must be |
355 | loaded when shutting down or rebooting the system. | 437 | loaded when shutting down or rebooting the system. |
356 | 438 | ||
357 | NAPI | 439 | NAPI |
358 | ---- | 440 | ---- |
359 | 441 | ||
360 | NAPI (Rx polling mode) is supported in the e1000 driver. NAPI is enabled | 442 | NAPI (Rx polling mode) is supported in the e1000 driver. NAPI is enabled |
361 | or disabled based on the configuration of the kernel. | 443 | or disabled based on the configuration of the kernel. To override |
444 | the default, use the following compile-time flags. | ||
445 | |||
446 | To enable NAPI, compile the driver module, passing in a configuration option: | ||
447 | |||
448 | make CFLAGS_EXTRA=-DE1000_NAPI install | ||
449 | |||
450 | To disable NAPI, compile the driver module, passing in a configuration option: | ||
451 | |||
452 | make CFLAGS_EXTRA=-DE1000_NO_NAPI install | ||
362 | 453 | ||
363 | See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. | 454 | See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. |
364 | 455 | ||
@@ -369,10 +460,85 @@ Known Issues | |||
369 | Jumbo Frames System Requirement | 460 | Jumbo Frames System Requirement |
370 | ------------------------------- | 461 | ------------------------------- |
371 | 462 | ||
372 | Memory allocation failures have been observed on Linux systems with 64 MB | 463 | Memory allocation failures have been observed on Linux systems with 64 MB |
373 | of RAM or less that are running Jumbo Frames. If you are using Jumbo Frames, | 464 | of RAM or less that are running Jumbo Frames. If you are using Jumbo |
374 | your system may require more than the advertised minimum requirement of 64 MB | 465 | Frames, your system may require more than the advertised minimum |
375 | of system memory. | 466 | requirement of 64 MB of system memory. |
467 | |||
468 | Performance Degradation with Jumbo Frames | ||
469 | ----------------------------------------- | ||
470 | |||
471 | Degradation in throughput performance may be observed in some Jumbo frames | ||
472 | environments. If this is observed, increasing the application's socket | ||
473 | buffer size and/or increasing the /proc/sys/net/ipv4/tcp_*mem entry values | ||
474 | may help. See the specific application manual and | ||
475 | /usr/src/linux*/Documentation/ | ||
476 | networking/ip-sysctl.txt for more details. | ||
477 | |||
478 | Jumbo frames on Foundry BigIron 8000 switch | ||
479 | ------------------------------------------- | ||
480 | There is a known issue using Jumbo frames when connected to a Foundry | ||
481 | BigIron 8000 switch. This is a 3rd party limitation. If you experience | ||
482 | loss of packets, lower the MTU size. | ||
483 | |||
484 | Multiple Interfaces on Same Ethernet Broadcast Network | ||
485 | ------------------------------------------------------ | ||
486 | |||
487 | Due to the default ARP behavior on Linux, it is not possible to have | ||
488 | one system on two IP networks in the same Ethernet broadcast domain | ||
489 | (non-partitioned switch) behave as expected. All Ethernet interfaces | ||
490 | will respond to IP traffic for any IP address assigned to the system. | ||
491 | This results in unbalanced receive traffic. | ||
492 | |||
493 | If you have multiple interfaces in a server, either turn on ARP | ||
494 | filtering by entering: | ||
495 | |||
496 | echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter | ||
497 | (this only works if your kernel's version is higher than 2.4.5), | ||
498 | |||
499 | NOTE: This setting is not saved across reboots. The configuration | ||
500 | change can be made permanent by adding the line: | ||
501 | net.ipv4.conf.all.arp_filter = 1 | ||
502 | to the file /etc/sysctl.conf | ||
503 | |||
504 | or, | ||
505 | |||
506 | install the interfaces in separate broadcast domains (either in | ||
507 | different switches or in a switch partitioned to VLANs). | ||
508 | |||
509 | 82541/82547 can't link or are slow to link with some link partners | ||
510 | ----------------------------------------------------------------- | ||
511 | |||
512 | There is a known compatibility issue with 82541/82547 and some | ||
513 | low-end switches where the link will not be established, or will | ||
514 | be slow to establish. In particular, these switches are known to | ||
515 | be incompatible with 82541/82547: | ||
516 | |||
517 | Planex FXG-08TE | ||
518 | I-O Data ETG-SH8 | ||
519 | |||
520 | To workaround this issue, the driver can be compiled with an override | ||
521 | of the PHY's master/slave setting. Forcing master or forcing slave | ||
522 | mode will improve time-to-link. | ||
523 | |||
524 | # make EXTRA_CFLAGS=-DE1000_MASTER_SLAVE=<n> | ||
525 | |||
526 | Where <n> is: | ||
527 | |||
528 | 0 = Hardware default | ||
529 | 1 = Master mode | ||
530 | 2 = Slave mode | ||
531 | 3 = Auto master/slave | ||
532 | |||
533 | Disable rx flow control with ethtool | ||
534 | ------------------------------------ | ||
535 | |||
536 | In order to disable receive flow control using ethtool, you must turn | ||
537 | off auto-negotiation on the same command line. | ||
538 | |||
539 | For example: | ||
540 | |||
541 | ethtool -A eth? autoneg off rx off | ||
376 | 542 | ||
377 | 543 | ||
378 | Support | 544 | Support |
@@ -382,20 +548,24 @@ For general information, go to the Intel support website at: | |||
382 | 548 | ||
383 | http://support.intel.com | 549 | http://support.intel.com |
384 | 550 | ||
551 | or the Intel Wired Networking project hosted by Sourceforge at: | ||
552 | |||
553 | http://sourceforge.net/projects/e1000 | ||
554 | |||
385 | If an issue is identified with the released source code on the supported | 555 | If an issue is identified with the released source code on the supported |
386 | kernel with a supported adapter, email the specific information related to | 556 | kernel with a supported adapter, email the specific information related |
387 | the issue to linux.nics@intel.com. | 557 | to the issue to e1000-devel@lists.sourceforge.net |
388 | 558 | ||
389 | 559 | ||
390 | License | 560 | License |
391 | ======= | 561 | ======= |
392 | 562 | ||
393 | This software program is released under the terms of a license agreement | 563 | This software program is released under the terms of a license agreement |
394 | between you ('Licensee') and Intel. Do not use or load this software or any | 564 | between you ('Licensee') and Intel. Do not use or load this software or any |
395 | associated materials (collectively, the 'Software') until you have carefully | 565 | associated materials (collectively, the 'Software') until you have carefully |
396 | read the full terms and conditions of the LICENSE located in this software | 566 | read the full terms and conditions of the file COPYING located in this software |
397 | package. By loading or using the Software, you agree to the terms of this | 567 | package. By loading or using the Software, you agree to the terms of this |
398 | Agreement. If you do not agree with the terms of this Agreement, do not | 568 | Agreement. If you do not agree with the terms of this Agreement, do not |
399 | install or use the Software. | 569 | install or use the Software. |
400 | 570 | ||
401 | * Other names and brands may be claimed as the property of others. | 571 | * Other names and brands may be claimed as the property of others. |
diff --git a/Documentation/networking/ifenslave.c b/Documentation/networking/ifenslave.c index 545447ac503a..a12059886755 100644 --- a/Documentation/networking/ifenslave.c +++ b/Documentation/networking/ifenslave.c | |||
@@ -87,7 +87,7 @@ | |||
87 | * would fail and generate an error message in the system log. | 87 | * would fail and generate an error message in the system log. |
88 | * - For opt_c: slave should not be set to the master's setting | 88 | * - For opt_c: slave should not be set to the master's setting |
89 | * while it is running. It was already set during enslave. To | 89 | * while it is running. It was already set during enslave. To |
90 | * simplify things, it is now handeled separately. | 90 | * simplify things, it is now handled separately. |
91 | * | 91 | * |
92 | * - 2003/12/01 - Shmulik Hen <shmulik.hen at intel dot com> | 92 | * - 2003/12/01 - Shmulik Hen <shmulik.hen at intel dot com> |
93 | * - Code cleanup and style changes | 93 | * - Code cleanup and style changes |
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index 26364d06ae92..f12007b80a46 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -355,6 +355,13 @@ somaxconn - INTEGER | |||
355 | Defaults to 128. See also tcp_max_syn_backlog for additional tuning | 355 | Defaults to 128. See also tcp_max_syn_backlog for additional tuning |
356 | for TCP sockets. | 356 | for TCP sockets. |
357 | 357 | ||
358 | tcp_workaround_signed_windows - BOOLEAN | ||
359 | If set, assume no receipt of a window scaling option means the | ||
360 | remote TCP is broken and treats the window as a signed quantity. | ||
361 | If unset, assume the remote TCP is not broken even if we do | ||
362 | not receive a window scaling option from them. | ||
363 | Default: 0 | ||
364 | |||
358 | IP Variables: | 365 | IP Variables: |
359 | 366 | ||
360 | ip_local_port_range - 2 INTEGERS | 367 | ip_local_port_range - 2 INTEGERS |
@@ -619,6 +626,11 @@ arp_ignore - INTEGER | |||
619 | The max value from conf/{all,interface}/arp_ignore is used | 626 | The max value from conf/{all,interface}/arp_ignore is used |
620 | when ARP request is received on the {interface} | 627 | when ARP request is received on the {interface} |
621 | 628 | ||
629 | arp_accept - BOOLEAN | ||
630 | Define behavior when gratuitous arp replies are received: | ||
631 | 0 - drop gratuitous arp frames | ||
632 | 1 - accept gratuitous arp frames | ||
633 | |||
622 | app_solicit - INTEGER | 634 | app_solicit - INTEGER |
623 | The maximum number of probes to send to the user space ARP daemon | 635 | The maximum number of probes to send to the user space ARP daemon |
624 | via netlink before dropping back to multicast probes (see | 636 | via netlink before dropping back to multicast probes (see |
@@ -717,6 +729,33 @@ accept_ra - BOOLEAN | |||
717 | Functional default: enabled if local forwarding is disabled. | 729 | Functional default: enabled if local forwarding is disabled. |
718 | disabled if local forwarding is enabled. | 730 | disabled if local forwarding is enabled. |
719 | 731 | ||
732 | accept_ra_defrtr - BOOLEAN | ||
733 | Learn default router in Router Advertisement. | ||
734 | |||
735 | Functional default: enabled if accept_ra is enabled. | ||
736 | disabled if accept_ra is disabled. | ||
737 | |||
738 | accept_ra_pinfo - BOOLEAN | ||
739 | Learn Prefix Inforamtion in Router Advertisement. | ||
740 | |||
741 | Functional default: enabled if accept_ra is enabled. | ||
742 | disabled if accept_ra is disabled. | ||
743 | |||
744 | accept_ra_rt_info_max_plen - INTEGER | ||
745 | Maximum prefix length of Route Information in RA. | ||
746 | |||
747 | Route Information w/ prefix larger than or equal to this | ||
748 | variable shall be ignored. | ||
749 | |||
750 | Functional default: 0 if accept_ra_rtr_pref is enabled. | ||
751 | -1 if accept_ra_rtr_pref is disabled. | ||
752 | |||
753 | accept_ra_rtr_pref - BOOLEAN | ||
754 | Accept Router Preference in RA. | ||
755 | |||
756 | Functional default: enabled if accept_ra is enabled. | ||
757 | disabled if accept_ra is disabled. | ||
758 | |||
720 | accept_redirects - BOOLEAN | 759 | accept_redirects - BOOLEAN |
721 | Accept Redirects. | 760 | Accept Redirects. |
722 | 761 | ||
@@ -727,8 +766,8 @@ autoconf - BOOLEAN | |||
727 | Autoconfigure addresses using Prefix Information in Router | 766 | Autoconfigure addresses using Prefix Information in Router |
728 | Advertisements. | 767 | Advertisements. |
729 | 768 | ||
730 | Functional default: enabled if accept_ra is enabled. | 769 | Functional default: enabled if accept_ra_pinfo is enabled. |
731 | disabled if accept_ra is disabled. | 770 | disabled if accept_ra_pinfo is disabled. |
732 | 771 | ||
733 | dad_transmits - INTEGER | 772 | dad_transmits - INTEGER |
734 | The amount of Duplicate Address Detection probes to send. | 773 | The amount of Duplicate Address Detection probes to send. |
@@ -771,6 +810,12 @@ mtu - INTEGER | |||
771 | Default Maximum Transfer Unit | 810 | Default Maximum Transfer Unit |
772 | Default: 1280 (IPv6 required minimum) | 811 | Default: 1280 (IPv6 required minimum) |
773 | 812 | ||
813 | router_probe_interval - INTEGER | ||
814 | Minimum interval (in seconds) between Router Probing described | ||
815 | in RFC4191. | ||
816 | |||
817 | Default: 60 | ||
818 | |||
774 | router_solicitation_delay - INTEGER | 819 | router_solicitation_delay - INTEGER |
775 | Number of seconds to wait after interface is brought up | 820 | Number of seconds to wait after interface is brought up |
776 | before sending Router Solicitations. | 821 | before sending Router Solicitations. |
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt index 8d4cf78258e4..4fc8e9874320 100644 --- a/Documentation/networking/packet_mmap.txt +++ b/Documentation/networking/packet_mmap.txt | |||
@@ -40,7 +40,7 @@ network interface card supports some sort of interrupt load mitigation or | |||
40 | + How to use CONFIG_PACKET_MMAP | 40 | + How to use CONFIG_PACKET_MMAP |
41 | -------------------------------------------------------------------------------- | 41 | -------------------------------------------------------------------------------- |
42 | 42 | ||
43 | From the user standpoint, you should use the higher level libpcap library, wich | 43 | From the user standpoint, you should use the higher level libpcap library, which |
44 | is a de facto standard, portable across nearly all operating systems | 44 | is a de facto standard, portable across nearly all operating systems |
45 | including Win32. | 45 | including Win32. |
46 | 46 | ||
@@ -217,8 +217,8 @@ called pg_vec, its size limits the number of blocks that can be allocated. | |||
217 | 217 | ||
218 | kmalloc allocates any number of bytes of phisically contiguous memory from | 218 | kmalloc allocates any number of bytes of phisically contiguous memory from |
219 | a pool of pre-determined sizes. This pool of memory is mantained by the slab | 219 | a pool of pre-determined sizes. This pool of memory is mantained by the slab |
220 | allocator wich is at the end the responsible for doing the allocation and | 220 | allocator which is at the end the responsible for doing the allocation and |
221 | hence wich imposes the maximum memory that kmalloc can allocate. | 221 | hence which imposes the maximum memory that kmalloc can allocate. |
222 | 222 | ||
223 | In a 2.4/2.6 kernel and the i386 architecture, the limit is 131072 bytes. The | 223 | In a 2.4/2.6 kernel and the i386 architecture, the limit is 131072 bytes. The |
224 | predetermined sizes that kmalloc uses can be checked in the "size-<bytes>" | 224 | predetermined sizes that kmalloc uses can be checked in the "size-<bytes>" |
@@ -254,7 +254,7 @@ and, the number of frames be | |||
254 | 254 | ||
255 | <block number> * <block size> / <frame size> | 255 | <block number> * <block size> / <frame size> |
256 | 256 | ||
257 | Suposse the following parameters, wich apply for 2.6 kernel and an | 257 | Suposse the following parameters, which apply for 2.6 kernel and an |
258 | i386 architecture: | 258 | i386 architecture: |
259 | 259 | ||
260 | <size-max> = 131072 bytes | 260 | <size-max> = 131072 bytes |
@@ -360,7 +360,7 @@ TP_STATUS_LOSING : indicates there were packet drops from last time | |||
360 | statistics where checked with getsockopt() and | 360 | statistics where checked with getsockopt() and |
361 | the PACKET_STATISTICS option. | 361 | the PACKET_STATISTICS option. |
362 | 362 | ||
363 | TP_STATUS_CSUMNOTREADY: currently it's used for outgoing IP packets wich | 363 | TP_STATUS_CSUMNOTREADY: currently it's used for outgoing IP packets which |
364 | it's checksum will be done in hardware. So while | 364 | it's checksum will be done in hardware. So while |
365 | reading the packet we should not try to check the | 365 | reading the packet we should not try to check the |
366 | checksum. | 366 | checksum. |
diff --git a/Documentation/networking/pktgen.txt b/Documentation/networking/pktgen.txt index cc4b4d04129c..278771c9ad99 100644 --- a/Documentation/networking/pktgen.txt +++ b/Documentation/networking/pktgen.txt | |||
@@ -109,6 +109,22 @@ Examples: | |||
109 | cycle through the port range. | 109 | cycle through the port range. |
110 | pgset "udp_dst_max 9" set UDP destination port max. | 110 | pgset "udp_dst_max 9" set UDP destination port max. |
111 | 111 | ||
112 | pgset "mpls 0001000a,0002000a,0000000a" set MPLS labels (in this example | ||
113 | outer label=16,middle label=32, | ||
114 | inner label=0 (IPv4 NULL)) Note that | ||
115 | there must be no spaces between the | ||
116 | arguments. Leading zeros are required. | ||
117 | Do not set the bottom of stack bit, | ||
118 | thats done automatically. If you do | ||
119 | set the bottom of stack bit, that | ||
120 | indicates that you want to randomly | ||
121 | generate that address and the flag | ||
122 | MPLS_RND will be turned on. You | ||
123 | can have any mix of random and fixed | ||
124 | labels in the label stack. | ||
125 | |||
126 | pgset "mpls 0" turn off mpls (or any invalid argument works too!) | ||
127 | |||
112 | pgset stop aborts injection. Also, ^C aborts generator. | 128 | pgset stop aborts injection. Also, ^C aborts generator. |
113 | 129 | ||
114 | 130 | ||
@@ -167,6 +183,8 @@ pkt_size | |||
167 | min_pkt_size | 183 | min_pkt_size |
168 | max_pkt_size | 184 | max_pkt_size |
169 | 185 | ||
186 | mpls | ||
187 | |||
170 | udp_src_min | 188 | udp_src_min |
171 | udp_src_max | 189 | udp_src_max |
172 | 190 | ||
@@ -211,4 +229,4 @@ Grant Grundler for testing on IA-64 and parisc, Harald Welte, Lennert Buytenhek | |||
211 | Stephen Hemminger, Andi Kleen, Dave Miller and many others. | 229 | Stephen Hemminger, Andi Kleen, Dave Miller and many others. |
212 | 230 | ||
213 | 231 | ||
214 | Good luck with the linux net-development. \ No newline at end of file | 232 | Good luck with the linux net-development. |
diff --git a/Documentation/networking/ray_cs.txt b/Documentation/networking/ray_cs.txt index 5427f8c7df95..145d27a52395 100644 --- a/Documentation/networking/ray_cs.txt +++ b/Documentation/networking/ray_cs.txt | |||
@@ -25,7 +25,7 @@ the essid= string parameter is available via the kernel command line. | |||
25 | This will change after the method of sorting out parameters for all | 25 | This will change after the method of sorting out parameters for all |
26 | the PCMCIA drivers is agreed upon. If you must have a built in driver | 26 | the PCMCIA drivers is agreed upon. If you must have a built in driver |
27 | with nondefault parameters, they can be edited in | 27 | with nondefault parameters, they can be edited in |
28 | /usr/src/linux/drivers/net/pcmcia/ray_cs.c. Searching for MODULE_PARM | 28 | /usr/src/linux/drivers/net/pcmcia/ray_cs.c. Searching for module_param |
29 | will find them all. | 29 | will find them all. |
30 | 30 | ||
31 | Information on card services is available at: | 31 | Information on card services is available at: |
diff --git a/Documentation/networking/sis900.txt b/Documentation/networking/sis900.txt deleted file mode 100644 index bddffd7385ae..000000000000 --- a/Documentation/networking/sis900.txt +++ /dev/null | |||
@@ -1,257 +0,0 @@ | |||
1 | |||
2 | SiS 900/7016 Fast Ethernet Device Driver | ||
3 | |||
4 | Ollie Lho | ||
5 | |||
6 | Lei Chun Chang | ||
7 | |||
8 | Copyright © 1999 by Silicon Integrated System Corp. | ||
9 | |||
10 | This document gives some information on installation and usage of SiS | ||
11 | 900/7016 device driver under Linux. | ||
12 | |||
13 | This program is free software; you can redistribute it and/or modify | ||
14 | it under the terms of the GNU General Public License as published by | ||
15 | the Free Software Foundation; either version 2 of the License, or (at | ||
16 | your option) any later version. | ||
17 | |||
18 | This program is distributed in the hope that it will be useful, but | ||
19 | WITHOUT ANY WARRANTY; without even the implied warranty of | ||
20 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
21 | General Public License for more details. | ||
22 | |||
23 | You should have received a copy of the GNU General Public License | ||
24 | along with this program; if not, write to the Free Software | ||
25 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 | ||
26 | USA | ||
27 | _________________________________________________________________ | ||
28 | |||
29 | Table of Contents | ||
30 | 1. Introduction | ||
31 | 2. Changes | ||
32 | 3. Tested Environment | ||
33 | 4. Files in This Package | ||
34 | 5. Installation | ||
35 | |||
36 | Building the driver as loadable module | ||
37 | Building the driver into kernel | ||
38 | |||
39 | 6. Known Problems and Bugs | ||
40 | 7. Revision History | ||
41 | 8. Acknowledgements | ||
42 | _________________________________________________________________ | ||
43 | |||
44 | Chapter 1. Introduction | ||
45 | |||
46 | This document describes the revision 1.06 and 1.07 of SiS 900/7016 | ||
47 | Fast Ethernet device driver under Linux. The driver is developed by | ||
48 | Silicon Integrated System Corp. and distributed freely under the GNU | ||
49 | General Public License (GPL). The driver can be compiled as a loadable | ||
50 | module and used under Linux kernel version 2.2.x. (rev. 1.06) With | ||
51 | minimal changes, the driver can also be used under 2.3.x and 2.4.x | ||
52 | kernel (rev. 1.07), please see Chapter 5. If you are intended to use | ||
53 | the driver for earlier kernels, you are on your own. | ||
54 | |||
55 | The driver is tested with usual TCP/IP applications including FTP, | ||
56 | Telnet, Netscape etc. and is used constantly by the developers. | ||
57 | |||
58 | Please send all comments/fixes/questions to Lei-Chun Chang. | ||
59 | _________________________________________________________________ | ||
60 | |||
61 | Chapter 2. Changes | ||
62 | |||
63 | Changes made in Revision 1.07 | ||
64 | |||
65 | 1. Separation of sis900.c and sis900.h in order to move most constant | ||
66 | definition to sis900.h (many of those constants were corrected) | ||
67 | 2. Clean up PCI detection, the pci-scan from Donald Becker were not | ||
68 | used, just simple pci_find_*. | ||
69 | 3. MII detection is modified to support multiple mii transceiver. | ||
70 | 4. Bugs in read_eeprom, mdio_* were removed. | ||
71 | 5. Lot of sis900 irrelevant comments were removed/changed and more | ||
72 | comments were added to reflect the real situation. | ||
73 | 6. Clean up of physical/virtual address space mess in buffer | ||
74 | descriptors. | ||
75 | 7. Better transmit/receive error handling. | ||
76 | 8. The driver now uses zero-copy single buffer management scheme to | ||
77 | improve performance. | ||
78 | 9. Names of variables were changed to be more consistent. | ||
79 | 10. Clean up of auo-negotiation and timer code. | ||
80 | 11. Automatic detection and change of PHY on the fly. | ||
81 | 12. Bug in mac probing fixed. | ||
82 | 13. Fix 630E equalier problem by modifying the equalizer workaround | ||
83 | rule. | ||
84 | 14. Support for ICS1893 10/100 Interated PHYceiver. | ||
85 | 15. Support for media select by ifconfig. | ||
86 | 16. Added kernel-doc extratable documentation. | ||
87 | _________________________________________________________________ | ||
88 | |||
89 | Chapter 3. Tested Environment | ||
90 | |||
91 | This driver is developed on the following hardware | ||
92 | |||
93 | * Intel Celeron 500 with SiS 630 (rev 02) chipset | ||
94 | * SiS 900 (rev 01) and SiS 7016/7014 Fast Ethernet Card | ||
95 | |||
96 | and tested with these software environments | ||
97 | |||
98 | * Red Hat Linux version 6.2 | ||
99 | * Linux kernel version 2.4.0 | ||
100 | * Netscape version 4.6 | ||
101 | * NcFTP 3.0.0 beta 18 | ||
102 | * Samba version 2.0.3 | ||
103 | _________________________________________________________________ | ||
104 | |||
105 | Chapter 4. Files in This Package | ||
106 | |||
107 | In the package you can find these files: | ||
108 | |||
109 | sis900.c | ||
110 | Driver source file in C | ||
111 | |||
112 | sis900.h | ||
113 | Header file for sis900.c | ||
114 | |||
115 | sis900.sgml | ||
116 | DocBook SGML source of the document | ||
117 | |||
118 | sis900.txt | ||
119 | Driver document in plain text | ||
120 | _________________________________________________________________ | ||
121 | |||
122 | Chapter 5. Installation | ||
123 | |||
124 | Silicon Integrated System Corp. is cooperating closely with core Linux | ||
125 | Kernel developers. The revisions of SiS 900 driver are distributed by | ||
126 | the usuall channels for kernel tar files and patches. Those kernel tar | ||
127 | files for official kernel and patches for kernel pre-release can be | ||
128 | download at official kernel ftp site and its mirrors. The 1.06 | ||
129 | revision can be found in kernel version later than 2.3.15 and | ||
130 | pre-2.2.14, and 1.07 revision can be found in kernel version 2.4.0. If | ||
131 | you have no prior experience in networking under Linux, please read | ||
132 | Ethernet HOWTO and Networking HOWTO available from Linux Documentation | ||
133 | Project (LDP). | ||
134 | |||
135 | The driver is bundled in release later than 2.2.11 and 2.3.15 so this | ||
136 | is the most easy case. Be sure you have the appropriate packages for | ||
137 | compiling kernel source. Those packages are listed in Document/Changes | ||
138 | in kernel source distribution. If you have to install the driver other | ||
139 | than those bundled in kernel release, you should have your driver file | ||
140 | sis900.c and sis900.h copied into /usr/src/linux/drivers/net/ first. | ||
141 | There are two alternative ways to install the driver | ||
142 | _________________________________________________________________ | ||
143 | |||
144 | Building the driver as loadable module | ||
145 | |||
146 | To build the driver as a loadable kernel module you have to | ||
147 | reconfigure the kernel to activate network support by | ||
148 | |||
149 | make menuconfig | ||
150 | |||
151 | Choose "Loadable module support --->", then select "Enable loadable | ||
152 | module support". | ||
153 | |||
154 | Choose "Network Device Support --->", select "Ethernet (10 or | ||
155 | 100Mbit)". Then select "EISA, VLB, PCI and on board controllers", and | ||
156 | choose "SiS 900/7016 PCI Fast Ethernet Adapter support" to "M". | ||
157 | |||
158 | After reconfiguring the kernel, you can make the driver module by | ||
159 | |||
160 | make modules | ||
161 | |||
162 | The driver should be compiled with no errors. After compiling the | ||
163 | driver, the driver can be installed to proper place by | ||
164 | |||
165 | make modules_install | ||
166 | |||
167 | Load the driver into kernel by | ||
168 | |||
169 | insmod sis900 | ||
170 | |||
171 | When loading the driver into memory, some information message can be | ||
172 | view by | ||
173 | |||
174 | dmesg | ||
175 | |||
176 | or | ||
177 | cat /var/log/message | ||
178 | |||
179 | If the driver is loaded properly you will have messages similar to | ||
180 | this: | ||
181 | |||
182 | sis900.c: v1.07.06 11/07/2000 | ||
183 | eth0: SiS 900 PCI Fast Ethernet at 0xd000, IRQ 10, 00:00:e8:83:7f:a4. | ||
184 | eth0: SiS 900 Internal MII PHY transceiver found at address 1. | ||
185 | eth0: Using SiS 900 Internal MII PHY as default | ||
186 | |||
187 | showing the version of the driver and the results of probing routine. | ||
188 | |||
189 | Once the driver is loaded, network can be brought up by | ||
190 | |||
191 | /sbin/ifconfig eth0 IPADDR broadcast BROADCAST netmask NETMASK media TYPE | ||
192 | |||
193 | where IPADDR, BROADCAST, NETMASK are your IP address, broadcast | ||
194 | address and netmask respectively. TYPE is used to set medium type used | ||
195 | by the device. Typical values are "10baseT"(twisted-pair 10Mbps | ||
196 | Ethernet) or "100baseT" (twisted-pair 100Mbps Ethernet). For more | ||
197 | information on how to configure network interface, please refer to | ||
198 | Networking HOWTO. | ||
199 | |||
200 | The link status is also shown by kernel messages. For example, after | ||
201 | the network interface is activated, you may have the message: | ||
202 | |||
203 | eth0: Media Link On 100mbps full-duplex | ||
204 | |||
205 | If you try to unplug the twist pair (TP) cable you will get | ||
206 | |||
207 | eth0: Media Link Off | ||
208 | |||
209 | indicating that the link is failed. | ||
210 | _________________________________________________________________ | ||
211 | |||
212 | Building the driver into kernel | ||
213 | |||
214 | If you want to make the driver into kernel, choose "Y" rather than "M" | ||
215 | on "SiS 900/7016 PCI Fast Ethernet Adapter support" when configuring | ||
216 | the kernel. Build the kernel image in the usual way | ||
217 | |||
218 | make clean | ||
219 | |||
220 | make bzlilo | ||
221 | |||
222 | Next time the system reboot, you have the driver in memory. | ||
223 | _________________________________________________________________ | ||
224 | |||
225 | Chapter 6. Known Problems and Bugs | ||
226 | |||
227 | There are some known problems and bugs. If you find any other bugs | ||
228 | please mail to lcchang@sis.com.tw | ||
229 | |||
230 | 1. AM79C901 HomePNA PHY is not thoroughly tested, there may be some | ||
231 | bugs in the "on the fly" change of transceiver. | ||
232 | 2. A bug is hidden somewhere in the receive buffer management code, | ||
233 | the bug causes NULL pointer reference in the kernel. This fault is | ||
234 | caught before bad things happen and reported with the message: | ||
235 | eth0: NULL pointer encountered in Rx ring, skipping which can be | ||
236 | viewed with dmesg or cat /var/log/message. | ||
237 | 3. The media type change from 10Mbps to 100Mbps twisted-pair ethernet | ||
238 | by ifconfig causes the media link down. | ||
239 | _________________________________________________________________ | ||
240 | |||
241 | Chapter 7. Revision History | ||
242 | |||
243 | * November 13, 2000, Revision 1.07, seventh release, 630E problem | ||
244 | fixed and further clean up. | ||
245 | * November 4, 1999, Revision 1.06, Second release, lots of clean up | ||
246 | and optimization. | ||
247 | * August 8, 1999, Revision 1.05, Initial Public Release | ||
248 | _________________________________________________________________ | ||
249 | |||
250 | Chapter 8. Acknowledgements | ||
251 | |||
252 | This driver was originally derived form Donald Becker's pci-skeleton | ||
253 | and rtl8139 drivers. Donald also provided various suggestion regarded | ||
254 | with improvements made in revision 1.06. | ||
255 | |||
256 | The 1.05 revision was created by Jim Huang, AMD 79c901 support was | ||
257 | added by Chin-Shan Li. | ||
diff --git a/Documentation/networking/vortex.txt b/Documentation/networking/vortex.txt index 3759acf95b29..6091e5f6794f 100644 --- a/Documentation/networking/vortex.txt +++ b/Documentation/networking/vortex.txt | |||
@@ -24,36 +24,44 @@ Since kernel 2.3.99-pre6, this driver incorporates the support for the | |||
24 | 24 | ||
25 | This driver supports the following hardware: | 25 | This driver supports the following hardware: |
26 | 26 | ||
27 | 3c590 Vortex 10Mbps | 27 | 3c590 Vortex 10Mbps |
28 | 3c592 EISA 10mbps Demon/Vortex | 28 | 3c592 EISA 10Mbps Demon/Vortex |
29 | 3c597 EISA Fast Demon/Vortex | 29 | 3c597 EISA Fast Demon/Vortex |
30 | 3c595 Vortex 100baseTx | 30 | 3c595 Vortex 100baseTx |
31 | 3c595 Vortex 100baseT4 | 31 | 3c595 Vortex 100baseT4 |
32 | 3c595 Vortex 100base-MII | 32 | 3c595 Vortex 100base-MII |
33 | 3Com Vortex | 33 | 3c900 Boomerang 10baseT |
34 | 3c900 Boomerang 10baseT | 34 | 3c900 Boomerang 10Mbps Combo |
35 | 3c900 Boomerang 10Mbps Combo | 35 | 3c900 Cyclone 10Mbps TPO |
36 | 3c900 Cyclone 10Mbps TPO | 36 | 3c900 Cyclone 10Mbps Combo |
37 | 3c900B Cyclone 10Mbps T | 37 | 3c900 Cyclone 10Mbps TPC |
38 | 3c900 Cyclone 10Mbps Combo | 38 | 3c900B-FL Cyclone 10base-FL |
39 | 3c900 Cyclone 10Mbps TPC | 39 | 3c905 Boomerang 100baseTx |
40 | 3c900B-FL Cyclone 10base-FL | 40 | 3c905 Boomerang 100baseT4 |
41 | 3c905 Boomerang 100baseTx | 41 | 3c905B Cyclone 100baseTx |
42 | 3c905 Boomerang 100baseT4 | 42 | 3c905B Cyclone 10/100/BNC |
43 | 3c905B Cyclone 100baseTx | 43 | 3c905B-FX Cyclone 100baseFx |
44 | 3c905B Cyclone 10/100/BNC | 44 | 3c905C Tornado |
45 | 3c905B-FX Cyclone 100baseFx | 45 | 3c920B-EMB-WNM (ATI Radeon 9100 IGP) |
46 | 3c905C Tornado | 46 | 3c980 Cyclone |
47 | 3c980 Cyclone | 47 | 3c980C Python-T |
48 | 3cSOHO100-TX Hurricane | 48 | 3cSOHO100-TX Hurricane |
49 | 3c555 Laptop Hurricane | 49 | 3c555 Laptop Hurricane |
50 | 3c575 Boomerang CardBus | 50 | 3c556 Laptop Tornado |
51 | 3CCFE575 Cyclone CardBus | 51 | 3c556B Laptop Hurricane |
52 | 3CCFE575CT Cyclone CardBus | 52 | 3c575 [Megahertz] 10/100 LAN CardBus |
53 | 3CCFE656 Cyclone CardBus | 53 | 3c575 Boomerang CardBus |
54 | 3CCFEM656 Cyclone CardBus | 54 | 3CCFE575BT Cyclone CardBus |
55 | 3c450 Cyclone/unknown | 55 | 3CCFE575CT Tornado CardBus |
56 | 56 | 3CCFE656 Cyclone CardBus | |
57 | 3CCFEM656B Cyclone+Winmodem CardBus | ||
58 | 3CXFEM656C Tornado+Winmodem CardBus | ||
59 | 3c450 HomePNA Tornado | ||
60 | 3c920 Tornado | ||
61 | 3c982 Hydra Dual Port A | ||
62 | 3c982 Hydra Dual Port B | ||
63 | 3c905B-T4 | ||
64 | 3c920B-EMB-WNM Tornado | ||
57 | 65 | ||
58 | Module parameters | 66 | Module parameters |
59 | ================= | 67 | ================= |
@@ -293,11 +301,6 @@ Donald's wake-on-LAN page: | |||
293 | 301 | ||
294 | http://www.scyld.com/wakeonlan.html | 302 | http://www.scyld.com/wakeonlan.html |
295 | 303 | ||
296 | 3Com's documentation for many NICs, including the ones supported by | ||
297 | this driver is available at | ||
298 | |||
299 | http://support.3com.com/partners/developer/developer_form.html | ||
300 | |||
301 | 3Com's DOS-based application for setting up the NICs EEPROMs: | 304 | 3Com's DOS-based application for setting up the NICs EEPROMs: |
302 | 305 | ||
303 | ftp://ftp.3com.com/pub/nic/3c90x/3c90xx2.exe | 306 | ftp://ftp.3com.com/pub/nic/3c90x/3c90xx2.exe |
@@ -312,10 +315,10 @@ Autonegotiation notes | |||
312 | --------------------- | 315 | --------------------- |
313 | 316 | ||
314 | The driver uses a one-minute heartbeat for adapting to changes in | 317 | The driver uses a one-minute heartbeat for adapting to changes in |
315 | the external LAN environment. This means that when, for example, a | 318 | the external LAN environment if link is up and 5 seconds if link is down. |
316 | machine is unplugged from a hubbed 10baseT LAN plugged into a | 319 | This means that when, for example, a machine is unplugged from a hubbed |
317 | switched 100baseT LAN, the throughput will be quite dreadful for up | 320 | 10baseT LAN plugged into a switched 100baseT LAN, the throughput |
318 | to sixty seconds. Be patient. | 321 | will be quite dreadful for up to sixty seconds. Be patient. |
319 | 322 | ||
320 | Cisco interoperability note from Walter Wong <wcw+@CMU.EDU>: | 323 | Cisco interoperability note from Walter Wong <wcw+@CMU.EDU>: |
321 | 324 | ||
diff --git a/Documentation/nfsroot.txt b/Documentation/nfsroot.txt index a87d4af216c0..d56dc71d9430 100644 --- a/Documentation/nfsroot.txt +++ b/Documentation/nfsroot.txt | |||
@@ -3,6 +3,7 @@ Mounting the root filesystem via NFS (nfsroot) | |||
3 | 3 | ||
4 | Written 1996 by Gero Kuhlmann <gero@gkminix.han.de> | 4 | Written 1996 by Gero Kuhlmann <gero@gkminix.han.de> |
5 | Updated 1997 by Martin Mares <mj@atrey.karlin.mff.cuni.cz> | 5 | Updated 1997 by Martin Mares <mj@atrey.karlin.mff.cuni.cz> |
6 | Updated 2006 by Nico Schottelius <nico-kernel-nfsroot@schottelius.org> | ||
6 | 7 | ||
7 | 8 | ||
8 | 9 | ||
@@ -168,7 +169,6 @@ depend on what facilities are available: | |||
168 | root. If it got a BOOTP answer the directory name in that answer | 169 | root. If it got a BOOTP answer the directory name in that answer |
169 | is used. | 170 | is used. |
170 | 171 | ||
171 | |||
172 | 3.2) Using LILO | 172 | 3.2) Using LILO |
173 | When using LILO you can specify all necessary command line | 173 | When using LILO you can specify all necessary command line |
174 | parameters with the 'append=' command in the LILO configuration | 174 | parameters with the 'append=' command in the LILO configuration |
@@ -177,7 +177,11 @@ depend on what facilities are available: | |||
177 | LILO and its 'append=' command please refer to the LILO | 177 | LILO and its 'append=' command please refer to the LILO |
178 | documentation. | 178 | documentation. |
179 | 179 | ||
180 | 3.3) Using loadlin | 180 | 3.3) Using GRUB |
181 | When you use GRUB, you simply append the parameters after the kernel | ||
182 | specification: "kernel <kernel> <parameters>" (without the quotes). | ||
183 | |||
184 | 3.4) Using loadlin | ||
181 | When you want to boot Linux from a DOS command prompt without | 185 | When you want to boot Linux from a DOS command prompt without |
182 | having a local hard disk to mount as root, you can use loadlin. | 186 | having a local hard disk to mount as root, you can use loadlin. |
183 | I was told that it works, but haven't used it myself yet. In | 187 | I was told that it works, but haven't used it myself yet. In |
@@ -185,7 +189,7 @@ depend on what facilities are available: | |||
185 | lar to how LILO is doing it. Please refer to the loadlin docu- | 189 | lar to how LILO is doing it. Please refer to the loadlin docu- |
186 | mentation for further information. | 190 | mentation for further information. |
187 | 191 | ||
188 | 3.4) Using a boot ROM | 192 | 3.5) Using a boot ROM |
189 | This is probably the most elegant way of booting a diskless | 193 | This is probably the most elegant way of booting a diskless |
190 | client. With a boot ROM the kernel gets loaded using the TFTP | 194 | client. With a boot ROM the kernel gets loaded using the TFTP |
191 | protocol. As far as I know, no commercial boot ROMs yet | 195 | protocol. As far as I know, no commercial boot ROMs yet |
@@ -194,6 +198,13 @@ depend on what facilities are available: | |||
194 | and its mirrors. They are called 'netboot-nfs' and 'etherboot'. | 198 | and its mirrors. They are called 'netboot-nfs' and 'etherboot'. |
195 | Both contain everything you need to boot a diskless Linux client. | 199 | Both contain everything you need to boot a diskless Linux client. |
196 | 200 | ||
201 | 3.6) Using pxelinux | ||
202 | Using pxelinux you specify the kernel you built with | ||
203 | "kernel <relative-path-below /tftpboot>". The nfsroot parameters | ||
204 | are passed to the kernel by adding them to the "append" line. | ||
205 | You may perhaps also want to fine tune the console output, | ||
206 | see Documentation/serial-console.txt for serial console help. | ||
207 | |||
197 | 208 | ||
198 | 209 | ||
199 | 210 | ||
diff --git a/Documentation/pnp.txt b/Documentation/pnp.txt index af0f6eabfa1c..9529c9c9fd59 100644 --- a/Documentation/pnp.txt +++ b/Documentation/pnp.txt | |||
@@ -115,6 +115,9 @@ pnp_unregister_protocol | |||
115 | pnp_register_driver | 115 | pnp_register_driver |
116 | - adds a PnP driver to the Plug and Play Layer | 116 | - adds a PnP driver to the Plug and Play Layer |
117 | - this includes driver model integration | 117 | - this includes driver model integration |
118 | - returns zero for success or a negative error number for failure; count | ||
119 | calls to the .add() method if you need to know how many devices bind to | ||
120 | the driver | ||
118 | 121 | ||
119 | pnp_unregister_driver | 122 | pnp_unregister_driver |
120 | - removes a PnP driver from the Plug and Play Layer | 123 | - removes a PnP driver from the Plug and Play Layer |
diff --git a/Documentation/power/swsusp.txt b/Documentation/power/swsusp.txt index b28b7f04abb8..d7814a113ee1 100644 --- a/Documentation/power/swsusp.txt +++ b/Documentation/power/swsusp.txt | |||
@@ -17,6 +17,11 @@ Some warnings, first. | |||
17 | * but it will probably only crash. | 17 | * but it will probably only crash. |
18 | * | 18 | * |
19 | * (*) suspend/resume support is needed to make it safe. | 19 | * (*) suspend/resume support is needed to make it safe. |
20 | * | ||
21 | * If you have any filesystems on USB devices mounted before suspend, | ||
22 | * they won't be accessible after resume and you may lose data, as though | ||
23 | * you have unplugged the USB devices with mounted filesystems on them | ||
24 | * (see the FAQ below for details). | ||
20 | 25 | ||
21 | You need to append resume=/dev/your_swap_partition to kernel command | 26 | You need to append resume=/dev/your_swap_partition to kernel command |
22 | line. Then you suspend by | 27 | line. Then you suspend by |
@@ -27,19 +32,18 @@ echo shutdown > /sys/power/disk; echo disk > /sys/power/state | |||
27 | 32 | ||
28 | echo platform > /sys/power/disk; echo disk > /sys/power/state | 33 | echo platform > /sys/power/disk; echo disk > /sys/power/state |
29 | 34 | ||
35 | . If you have SATA disks, you'll need recent kernels with SATA suspend | ||
36 | support. For suspend and resume to work, make sure your disk drivers | ||
37 | are built into kernel -- not modules. [There's way to make | ||
38 | suspend/resume with modular disk drivers, see FAQ, but you probably | ||
39 | should not do that.] | ||
40 | |||
30 | If you want to limit the suspend image size to N bytes, do | 41 | If you want to limit the suspend image size to N bytes, do |
31 | 42 | ||
32 | echo N > /sys/power/image_size | 43 | echo N > /sys/power/image_size |
33 | 44 | ||
34 | before suspend (it is limited to 500 MB by default). | 45 | before suspend (it is limited to 500 MB by default). |
35 | 46 | ||
36 | Encrypted suspend image: | ||
37 | ------------------------ | ||
38 | If you want to store your suspend image encrypted with a temporary | ||
39 | key to prevent data gathering after resume you must compile | ||
40 | crypto and the aes algorithm into the kernel - modules won't work | ||
41 | as they cannot be loaded at resume time. | ||
42 | |||
43 | 47 | ||
44 | Article about goals and implementation of Software Suspend for Linux | 48 | Article about goals and implementation of Software Suspend for Linux |
45 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 49 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
@@ -333,4 +337,37 @@ init=/bin/bash, then swapon and starting suspend sequence manually | |||
333 | usually does the trick. Then it is good idea to try with latest | 337 | usually does the trick. Then it is good idea to try with latest |
334 | vanilla kernel. | 338 | vanilla kernel. |
335 | 339 | ||
340 | Q: How can distributions ship a swsusp-supporting kernel with modular | ||
341 | disk drivers (especially SATA)? | ||
342 | |||
343 | A: Well, it can be done, load the drivers, then do echo into | ||
344 | /sys/power/disk/resume file from initrd. Be sure not to mount | ||
345 | anything, not even read-only mount, or you are going to lose your | ||
346 | data. | ||
347 | |||
348 | Q: How do I make suspend more verbose? | ||
349 | |||
350 | A: If you want to see any non-error kernel messages on the virtual | ||
351 | terminal the kernel switches to during suspend, you have to set the | ||
352 | kernel console loglevel to at least 5, for example by doing | ||
353 | |||
354 | echo 5 > /proc/sys/kernel/printk | ||
355 | |||
356 | Q: Is this true that if I have a mounted filesystem on a USB device and | ||
357 | I suspend to disk, I can lose data unless the filesystem has been mounted | ||
358 | with "sync"? | ||
359 | |||
360 | A: That's right. It depends on your hardware, and it could be true even for | ||
361 | suspend-to-RAM. In fact, even with "-o sync" you can lose data if your | ||
362 | programs have information in buffers they haven't written out to disk. | ||
363 | |||
364 | If you're lucky, your hardware will support low-power modes for USB | ||
365 | controllers while the system is asleep. Lots of hardware doesn't, | ||
366 | however. Shutting off the power to a USB controller is equivalent to | ||
367 | unplugging all the attached devices. | ||
368 | |||
369 | Remember that it's always a bad idea to unplug a disk drive containing a | ||
370 | mounted filesystem. With USB that's true even when your system is asleep! | ||
371 | The safest thing is to unmount all USB-based filesystems before suspending | ||
372 | and remount them after resuming. | ||
336 | 373 | ||
diff --git a/Documentation/power/userland-swsusp.txt b/Documentation/power/userland-swsusp.txt new file mode 100644 index 000000000000..94058220aaf0 --- /dev/null +++ b/Documentation/power/userland-swsusp.txt | |||
@@ -0,0 +1,149 @@ | |||
1 | Documentation for userland software suspend interface | ||
2 | (C) 2006 Rafael J. Wysocki <rjw@sisk.pl> | ||
3 | |||
4 | First, the warnings at the beginning of swsusp.txt still apply. | ||
5 | |||
6 | Second, you should read the FAQ in swsusp.txt _now_ if you have not | ||
7 | done it already. | ||
8 | |||
9 | Now, to use the userland interface for software suspend you need special | ||
10 | utilities that will read/write the system memory snapshot from/to the | ||
11 | kernel. Such utilities are available, for example, from | ||
12 | <http://www.sisk.pl/kernel/utilities/suspend>. You may want to have | ||
13 | a look at them if you are going to develop your own suspend/resume | ||
14 | utilities. | ||
15 | |||
16 | The interface consists of a character device providing the open(), | ||
17 | release(), read(), and write() operations as well as several ioctl() | ||
18 | commands defined in kernel/power/power.h. The major and minor | ||
19 | numbers of the device are, respectively, 10 and 231, and they can | ||
20 | be read from /sys/class/misc/snapshot/dev. | ||
21 | |||
22 | The device can be open either for reading or for writing. If open for | ||
23 | reading, it is considered to be in the suspend mode. Otherwise it is | ||
24 | assumed to be in the resume mode. The device cannot be open for reading | ||
25 | and writing. It is also impossible to have the device open more than once | ||
26 | at a time. | ||
27 | |||
28 | The ioctl() commands recognized by the device are: | ||
29 | |||
30 | SNAPSHOT_FREEZE - freeze user space processes (the current process is | ||
31 | not frozen); this is required for SNAPSHOT_ATOMIC_SNAPSHOT | ||
32 | and SNAPSHOT_ATOMIC_RESTORE to succeed | ||
33 | |||
34 | SNAPSHOT_UNFREEZE - thaw user space processes frozen by SNAPSHOT_FREEZE | ||
35 | |||
36 | SNAPSHOT_ATOMIC_SNAPSHOT - create a snapshot of the system memory; the | ||
37 | last argument of ioctl() should be a pointer to an int variable, | ||
38 | the value of which will indicate whether the call returned after | ||
39 | creating the snapshot (1) or after restoring the system memory state | ||
40 | from it (0) (after resume the system finds itself finishing the | ||
41 | SNAPSHOT_ATOMIC_SNAPSHOT ioctl() again); after the snapshot | ||
42 | has been created the read() operation can be used to transfer | ||
43 | it out of the kernel | ||
44 | |||
45 | SNAPSHOT_ATOMIC_RESTORE - restore the system memory state from the | ||
46 | uploaded snapshot image; before calling it you should transfer | ||
47 | the system memory snapshot back to the kernel using the write() | ||
48 | operation; this call will not succeed if the snapshot | ||
49 | image is not available to the kernel | ||
50 | |||
51 | SNAPSHOT_FREE - free memory allocated for the snapshot image | ||
52 | |||
53 | SNAPSHOT_SET_IMAGE_SIZE - set the preferred maximum size of the image | ||
54 | (the kernel will do its best to ensure the image size will not exceed | ||
55 | this number, but if it turns out to be impossible, the kernel will | ||
56 | create the smallest image possible) | ||
57 | |||
58 | SNAPSHOT_AVAIL_SWAP - return the amount of available swap in bytes (the last | ||
59 | argument should be a pointer to an unsigned int variable that will | ||
60 | contain the result if the call is successful). | ||
61 | |||
62 | SNAPSHOT_GET_SWAP_PAGE - allocate a swap page from the resume partition | ||
63 | (the last argument should be a pointer to a loff_t variable that | ||
64 | will contain the swap page offset if the call is successful) | ||
65 | |||
66 | SNAPSHOT_FREE_SWAP_PAGES - free all swap pages allocated with | ||
67 | SNAPSHOT_GET_SWAP_PAGE | ||
68 | |||
69 | SNAPSHOT_SET_SWAP_FILE - set the resume partition (the last ioctl() argument | ||
70 | should specify the device's major and minor numbers in the old | ||
71 | two-byte format, as returned by the stat() function in the .st_rdev | ||
72 | member of the stat structure); it is recommended to always use this | ||
73 | call, because the code to set the resume partition could be removed from | ||
74 | future kernels | ||
75 | |||
76 | The device's read() operation can be used to transfer the snapshot image from | ||
77 | the kernel. It has the following limitations: | ||
78 | - you cannot read() more than one virtual memory page at a time | ||
79 | - read()s accross page boundaries are impossible (ie. if ypu read() 1/2 of | ||
80 | a page in the previous call, you will only be able to read() | ||
81 | _at_ _most_ 1/2 of the page in the next call) | ||
82 | |||
83 | The device's write() operation is used for uploading the system memory snapshot | ||
84 | into the kernel. It has the same limitations as the read() operation. | ||
85 | |||
86 | The release() operation frees all memory allocated for the snapshot image | ||
87 | and all swap pages allocated with SNAPSHOT_GET_SWAP_PAGE (if any). | ||
88 | Thus it is not necessary to use either SNAPSHOT_FREE or | ||
89 | SNAPSHOT_FREE_SWAP_PAGES before closing the device (in fact it will also | ||
90 | unfreeze user space processes frozen by SNAPSHOT_UNFREEZE if they are | ||
91 | still frozen when the device is being closed). | ||
92 | |||
93 | Currently it is assumed that the userland utilities reading/writing the | ||
94 | snapshot image from/to the kernel will use a swap parition, called the resume | ||
95 | partition, as storage space. However, this is not really required, as they | ||
96 | can use, for example, a special (blank) suspend partition or a file on a partition | ||
97 | that is unmounted before SNAPSHOT_ATOMIC_SNAPSHOT and mounted afterwards. | ||
98 | |||
99 | These utilities SHOULD NOT make any assumptions regarding the ordering of | ||
100 | data within the snapshot image, except for the image header that MAY be | ||
101 | assumed to start with an swsusp_info structure, as specified in | ||
102 | kernel/power/power.h. This structure MAY be used by the userland utilities | ||
103 | to obtain some information about the snapshot image, such as the size | ||
104 | of the snapshot image, including the metadata and the header itself, | ||
105 | contained in the .size member of swsusp_info. | ||
106 | |||
107 | The snapshot image MUST be written to the kernel unaltered (ie. all of the image | ||
108 | data, metadata and header MUST be written in _exactly_ the same amount, form | ||
109 | and order in which they have been read). Otherwise, the behavior of the | ||
110 | resumed system may be totally unpredictable. | ||
111 | |||
112 | While executing SNAPSHOT_ATOMIC_RESTORE the kernel checks if the | ||
113 | structure of the snapshot image is consistent with the information stored | ||
114 | in the image header. If any inconsistencies are detected, | ||
115 | SNAPSHOT_ATOMIC_RESTORE will not succeed. Still, this is not a fool-proof | ||
116 | mechanism and the userland utilities using the interface SHOULD use additional | ||
117 | means, such as checksums, to ensure the integrity of the snapshot image. | ||
118 | |||
119 | The suspending and resuming utilities MUST lock themselves in memory, | ||
120 | preferrably using mlockall(), before calling SNAPSHOT_FREEZE. | ||
121 | |||
122 | The suspending utility MUST check the value stored by SNAPSHOT_ATOMIC_SNAPSHOT | ||
123 | in the memory location pointed to by the last argument of ioctl() and proceed | ||
124 | in accordance with it: | ||
125 | 1. If the value is 1 (ie. the system memory snapshot has just been | ||
126 | created and the system is ready for saving it): | ||
127 | (a) The suspending utility MUST NOT close the snapshot device | ||
128 | _unless_ the whole suspend procedure is to be cancelled, in | ||
129 | which case, if the snapshot image has already been saved, the | ||
130 | suspending utility SHOULD destroy it, preferrably by zapping | ||
131 | its header. If the suspend is not to be cancelled, the | ||
132 | system MUST be powered off or rebooted after the snapshot | ||
133 | image has been saved. | ||
134 | (b) The suspending utility SHOULD NOT attempt to perform any | ||
135 | file system operations (including reads) on the file systems | ||
136 | that were mounted before SNAPSHOT_ATOMIC_SNAPSHOT has been | ||
137 | called. However, it MAY mount a file system that was not | ||
138 | mounted at that time and perform some operations on it (eg. | ||
139 | use it for saving the image). | ||
140 | 2. If the value is 0 (ie. the system state has just been restored from | ||
141 | the snapshot image), the suspending utility MUST close the snapshot | ||
142 | device. Afterwards it will be treated as a regular userland process, | ||
143 | so it need not exit. | ||
144 | |||
145 | The resuming utility SHOULD NOT attempt to mount any file systems that could | ||
146 | be mounted before suspend and SHOULD NOT attempt to perform any operations | ||
147 | involving such file systems. | ||
148 | |||
149 | For details, please refer to the source code. | ||
diff --git a/Documentation/power/video.txt b/Documentation/power/video.txt index 912bed87c758..d18a57d1a531 100644 --- a/Documentation/power/video.txt +++ b/Documentation/power/video.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | 1 | ||
2 | Video issues with S3 resume | 2 | Video issues with S3 resume |
3 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 3 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
4 | 2003-2005, Pavel Machek | 4 | 2003-2006, Pavel Machek |
5 | 5 | ||
6 | During S3 resume, hardware needs to be reinitialized. For most | 6 | During S3 resume, hardware needs to be reinitialized. For most |
7 | devices, this is easy, and kernel driver knows how to do | 7 | devices, this is easy, and kernel driver knows how to do |
@@ -15,6 +15,27 @@ run normally so video card is normally initialized. It should not be | |||
15 | problem for S1 standby, because hardware should retain its state over | 15 | problem for S1 standby, because hardware should retain its state over |
16 | that. | 16 | that. |
17 | 17 | ||
18 | We either have to run video BIOS during early resume, or interpret it | ||
19 | using vbetool later, or maybe nothing is neccessary on particular | ||
20 | system because video state is preserved. Unfortunately different | ||
21 | methods work on different systems, and no known method suits all of | ||
22 | them. | ||
23 | |||
24 | Userland application called s2ram has been developed; it contains long | ||
25 | whitelist of systems, and automatically selects working method for a | ||
26 | given system. It can be downloaded from CVS at | ||
27 | www.sf.net/projects/suspend . If you get a system that is not in the | ||
28 | whitelist, please try to find a working solution, and submit whitelist | ||
29 | entry so that work does not need to be repeated. | ||
30 | |||
31 | Currently, VBE_SAVE method (6 below) works on most | ||
32 | systems. Unfortunately, vbetool only runs after userland is resumed, | ||
33 | so it makes debugging of early resume problems | ||
34 | hard/impossible. Methods that do not rely on userland are preferable. | ||
35 | |||
36 | Details | ||
37 | ~~~~~~~ | ||
38 | |||
18 | There are a few types of systems where video works after S3 resume: | 39 | There are a few types of systems where video works after S3 resume: |
19 | 40 | ||
20 | (1) systems where video state is preserved over S3. | 41 | (1) systems where video state is preserved over S3. |
@@ -104,6 +125,7 @@ HP NX7000 ??? (*) | |||
104 | HP Pavilion ZD7000 vbetool post needed, need open-source nv driver for X | 125 | HP Pavilion ZD7000 vbetool post needed, need open-source nv driver for X |
105 | HP Omnibook XE3 athlon version none (1) | 126 | HP Omnibook XE3 athlon version none (1) |
106 | HP Omnibook XE3GC none (1), video is S3 Savage/IX-MV | 127 | HP Omnibook XE3GC none (1), video is S3 Savage/IX-MV |
128 | HP Omnibook 5150 none (1), (S1 also works OK) | ||
107 | IBM TP T20, model 2647-44G none (1), video is S3 Inc. 86C270-294 Savage/IX-MV, vesafb gets "interesting" but X work. | 129 | IBM TP T20, model 2647-44G none (1), video is S3 Inc. 86C270-294 Savage/IX-MV, vesafb gets "interesting" but X work. |
108 | IBM TP A31 / Type 2652-M5G s3_mode (3) [works ok with BIOS 1.04 2002-08-23, but not at all with BIOS 1.11 2004-11-05 :-(] | 130 | IBM TP A31 / Type 2652-M5G s3_mode (3) [works ok with BIOS 1.04 2002-08-23, but not at all with BIOS 1.11 2004-11-05 :-(] |
109 | IBM TP R32 / Type 2658-MMG none (1) | 131 | IBM TP R32 / Type 2658-MMG none (1) |
@@ -120,18 +142,24 @@ IBM ThinkPad T42p (2373-GTG) s3_bios (2) | |||
120 | IBM TP X20 ??? (*) | 142 | IBM TP X20 ??? (*) |
121 | IBM TP X30 s3_bios (2) | 143 | IBM TP X30 s3_bios (2) |
122 | IBM TP X31 / Type 2672-XXH none (1), use radeontool (http://fdd.com/software/radeon/) to turn off backlight. | 144 | IBM TP X31 / Type 2672-XXH none (1), use radeontool (http://fdd.com/software/radeon/) to turn off backlight. |
123 | IBM TP X32 none (1), but backlight is on and video is trashed after long suspend | 145 | IBM TP X32 none (1), but backlight is on and video is trashed after long suspend. s3_bios,s3_mode (4) works too. Perhaps that gets better results? |
124 | IBM Thinkpad X40 Type 2371-7JG s3_bios,s3_mode (4) | 146 | IBM Thinkpad X40 Type 2371-7JG s3_bios,s3_mode (4) |
147 | IBM TP 600e none(1), but a switch to console and back to X is needed | ||
125 | Medion MD4220 ??? (*) | 148 | Medion MD4220 ??? (*) |
126 | Samsung P35 vbetool needed (6) | 149 | Samsung P35 vbetool needed (6) |
127 | Sharp PC-AR10 (ATI rage) none (1) | 150 | Sharp PC-AR10 (ATI rage) none (1), backlight does not switch off |
128 | Sony Vaio PCG-C1VRX/K s3_bios (2) | 151 | Sony Vaio PCG-C1VRX/K s3_bios (2) |
129 | Sony Vaio PCG-F403 ??? (*) | 152 | Sony Vaio PCG-F403 ??? (*) |
153 | Sony Vaio PCG-GRT995MP none (1), works with 'nv' X driver | ||
154 | Sony Vaio PCG-GR7/K none (1), but needs radeonfb, use radeontool (http://fdd.com/software/radeon/) to turn off backlight. | ||
130 | Sony Vaio PCG-N505SN ??? (*) | 155 | Sony Vaio PCG-N505SN ??? (*) |
131 | Sony Vaio vgn-s260 X or boot-radeon can init it (5) | 156 | Sony Vaio vgn-s260 X or boot-radeon can init it (5) |
157 | Sony Vaio vgn-S580BH vga=normal, but suspend from X. Console will be blank unless you return to X. | ||
158 | Sony Vaio vgn-FS115B s3_bios (2),s3_mode (4) | ||
132 | Toshiba Libretto L5 none (1) | 159 | Toshiba Libretto L5 none (1) |
133 | Toshiba Satellite 4030CDT s3_mode (3) | 160 | Toshiba Portege 3020CT s3_mode (3) |
134 | Toshiba Satellite 4080XCDT s3_mode (3) | 161 | Toshiba Satellite 4030CDT s3_mode (3) (S1 also works OK) |
162 | Toshiba Satellite 4080XCDT s3_mode (3) (S1 also works OK) | ||
135 | Toshiba Satellite 4090XCDT ??? (*) | 163 | Toshiba Satellite 4090XCDT ??? (*) |
136 | Toshiba Satellite P10-554 s3_bios,s3_mode (4)(****) | 164 | Toshiba Satellite P10-554 s3_bios,s3_mode (4)(****) |
137 | Toshiba M30 (2) xor X with nvidia driver using internal AGP | 165 | Toshiba M30 (2) xor X with nvidia driver using internal AGP |
@@ -151,39 +179,3 @@ Asus A7V8X nVidia RIVA TNT2 model 64 s3_bios,s3_mode (4) | |||
151 | (***) To be tested with a newer kernel. | 179 | (***) To be tested with a newer kernel. |
152 | 180 | ||
153 | (****) Not with SMP kernel, UP only. | 181 | (****) Not with SMP kernel, UP only. |
154 | |||
155 | VBEtool details | ||
156 | ~~~~~~~~~~~~~~~ | ||
157 | (with thanks to Carl-Daniel Hailfinger) | ||
158 | |||
159 | First, boot into X and run the following script ONCE: | ||
160 | #!/bin/bash | ||
161 | statedir=/root/s3/state | ||
162 | mkdir -p $statedir | ||
163 | chvt 2 | ||
164 | sleep 1 | ||
165 | vbetool vbestate save >$statedir/vbe | ||
166 | |||
167 | |||
168 | To suspend and resume properly, call the following script as root: | ||
169 | #!/bin/bash | ||
170 | statedir=/root/s3/state | ||
171 | curcons=`fgconsole` | ||
172 | fuser /dev/tty$curcons 2>/dev/null|xargs ps -o comm= -p|grep -q X && chvt 2 | ||
173 | cat /dev/vcsa >$statedir/vcsa | ||
174 | sync | ||
175 | echo 3 >/proc/acpi/sleep | ||
176 | sync | ||
177 | vbetool post | ||
178 | vbetool vbestate restore <$statedir/vbe | ||
179 | cat $statedir/vcsa >/dev/vcsa | ||
180 | rckbd restart | ||
181 | chvt $[curcons%6+1] | ||
182 | chvt $curcons | ||
183 | |||
184 | |||
185 | Unless you change your graphics card or other hardware configuration, | ||
186 | the state once saved will be OK for every resume afterwards. | ||
187 | NOTE: The "rckbd restart" command may be different for your | ||
188 | distribution. Simply replace it with the command you would use to | ||
189 | set the fonts on screen. | ||
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt index d02c64953dcd..217e51768b87 100644 --- a/Documentation/powerpc/booting-without-of.txt +++ b/Documentation/powerpc/booting-without-of.txt | |||
@@ -719,6 +719,11 @@ address which can extend beyond that limit. | |||
719 | - model : this is your board name/model | 719 | - model : this is your board name/model |
720 | - #address-cells : address representation for "root" devices | 720 | - #address-cells : address representation for "root" devices |
721 | - #size-cells: the size representation for "root" devices | 721 | - #size-cells: the size representation for "root" devices |
722 | - device_type : This property shouldn't be necessary. However, if | ||
723 | you decide to create a device_type for your root node, make sure it | ||
724 | is _not_ "chrp" unless your platform is a pSeries or PAPR compliant | ||
725 | one for 64-bit, or a CHRP-type machine for 32-bit as this will | ||
726 | matched by the kernel this way. | ||
722 | 727 | ||
723 | Additionally, some recommended properties are: | 728 | Additionally, some recommended properties are: |
724 | 729 | ||
@@ -1365,6 +1370,78 @@ platforms are moved over to use the flattened-device-tree model. | |||
1365 | }; | 1370 | }; |
1366 | 1371 | ||
1367 | 1372 | ||
1373 | g) Freescale SOC SEC Security Engines | ||
1374 | |||
1375 | Required properties: | ||
1376 | |||
1377 | - device_type : Should be "crypto" | ||
1378 | - model : Model of the device. Should be "SEC1" or "SEC2" | ||
1379 | - compatible : Should be "talitos" | ||
1380 | - reg : Offset and length of the register set for the device | ||
1381 | - interrupts : <a b> where a is the interrupt number and b is a | ||
1382 | field that represents an encoding of the sense and level | ||
1383 | information for the interrupt. This should be encoded based on | ||
1384 | the information in section 2) depending on the type of interrupt | ||
1385 | controller you have. | ||
1386 | - interrupt-parent : the phandle for the interrupt controller that | ||
1387 | services interrupts for this device. | ||
1388 | - num-channels : An integer representing the number of channels | ||
1389 | available. | ||
1390 | - channel-fifo-len : An integer representing the number of | ||
1391 | descriptor pointers each channel fetch fifo can hold. | ||
1392 | - exec-units-mask : The bitmask representing what execution units | ||
1393 | (EUs) are available. It's a single 32 bit cell. EU information | ||
1394 | should be encoded following the SEC's Descriptor Header Dword | ||
1395 | EU_SEL0 field documentation, i.e. as follows: | ||
1396 | |||
1397 | bit 0 = reserved - should be 0 | ||
1398 | bit 1 = set if SEC has the ARC4 EU (AFEU) | ||
1399 | bit 2 = set if SEC has the DES/3DES EU (DEU) | ||
1400 | bit 3 = set if SEC has the message digest EU (MDEU) | ||
1401 | bit 4 = set if SEC has the random number generator EU (RNG) | ||
1402 | bit 5 = set if SEC has the public key EU (PKEU) | ||
1403 | bit 6 = set if SEC has the AES EU (AESU) | ||
1404 | bit 7 = set if SEC has the Kasumi EU (KEU) | ||
1405 | |||
1406 | bits 8 through 31 are reserved for future SEC EUs. | ||
1407 | |||
1408 | - descriptor-types-mask : The bitmask representing what descriptors | ||
1409 | are available. It's a single 32 bit cell. Descriptor type | ||
1410 | information should be encoded following the SEC's Descriptor | ||
1411 | Header Dword DESC_TYPE field documentation, i.e. as follows: | ||
1412 | |||
1413 | bit 0 = set if SEC supports the aesu_ctr_nonsnoop desc. type | ||
1414 | bit 1 = set if SEC supports the ipsec_esp descriptor type | ||
1415 | bit 2 = set if SEC supports the common_nonsnoop desc. type | ||
1416 | bit 3 = set if SEC supports the 802.11i AES ccmp desc. type | ||
1417 | bit 4 = set if SEC supports the hmac_snoop_no_afeu desc. type | ||
1418 | bit 5 = set if SEC supports the srtp descriptor type | ||
1419 | bit 6 = set if SEC supports the non_hmac_snoop_no_afeu desc.type | ||
1420 | bit 7 = set if SEC supports the pkeu_assemble descriptor type | ||
1421 | bit 8 = set if SEC supports the aesu_key_expand_output desc.type | ||
1422 | bit 9 = set if SEC supports the pkeu_ptmul descriptor type | ||
1423 | bit 10 = set if SEC supports the common_nonsnoop_afeu desc. type | ||
1424 | bit 11 = set if SEC supports the pkeu_ptadd_dbl descriptor type | ||
1425 | |||
1426 | ..and so on and so forth. | ||
1427 | |||
1428 | Example: | ||
1429 | |||
1430 | /* MPC8548E */ | ||
1431 | crypto@30000 { | ||
1432 | device_type = "crypto"; | ||
1433 | model = "SEC2"; | ||
1434 | compatible = "talitos"; | ||
1435 | reg = <30000 10000>; | ||
1436 | interrupts = <1d 3>; | ||
1437 | interrupt-parent = <40000>; | ||
1438 | num-channels = <4>; | ||
1439 | channel-fifo-len = <24>; | ||
1440 | exec-units-mask = <000000fe>; | ||
1441 | descriptor-types-mask = <073f1127>; | ||
1442 | }; | ||
1443 | |||
1444 | |||
1368 | More devices will be defined as this spec matures. | 1445 | More devices will be defined as this spec matures. |
1369 | 1446 | ||
1370 | 1447 | ||
diff --git a/Documentation/powerpc/eeh-pci-error-recovery.txt b/Documentation/powerpc/eeh-pci-error-recovery.txt index 67a11a36270c..3764dd4b12cb 100644 --- a/Documentation/powerpc/eeh-pci-error-recovery.txt +++ b/Documentation/powerpc/eeh-pci-error-recovery.txt | |||
@@ -121,7 +121,7 @@ accomplished. | |||
121 | 121 | ||
122 | EEH must be enabled in the PHB's very early during the boot process, | 122 | EEH must be enabled in the PHB's very early during the boot process, |
123 | and if a PCI slot is hot-plugged. The former is performed by | 123 | and if a PCI slot is hot-plugged. The former is performed by |
124 | eeh_init() in arch/ppc64/kernel/eeh.c, and the later by | 124 | eeh_init() in arch/powerpc/platforms/pseries/eeh.c, and the later by |
125 | drivers/pci/hotplug/pSeries_pci.c calling in to the eeh.c code. | 125 | drivers/pci/hotplug/pSeries_pci.c calling in to the eeh.c code. |
126 | EEH must be enabled before a PCI scan of the device can proceed. | 126 | EEH must be enabled before a PCI scan of the device can proceed. |
127 | Current Power5 hardware will not work unless EEH is enabled; | 127 | Current Power5 hardware will not work unless EEH is enabled; |
@@ -133,7 +133,7 @@ error. Given an arbitrary address, the routine | |||
133 | pci_get_device_by_addr() will find the pci device associated | 133 | pci_get_device_by_addr() will find the pci device associated |
134 | with that address (if any). | 134 | with that address (if any). |
135 | 135 | ||
136 | The default include/asm-ppc64/io.h macros readb(), inb(), insb(), | 136 | The default include/asm-powerpc/io.h macros readb(), inb(), insb(), |
137 | etc. include a check to see if the i/o read returned all-0xff's. | 137 | etc. include a check to see if the i/o read returned all-0xff's. |
138 | If so, these make a call to eeh_dn_check_failure(), which in turn | 138 | If so, these make a call to eeh_dn_check_failure(), which in turn |
139 | asks the firmware if the all-ff's value is the sign of a true EEH | 139 | asks the firmware if the all-ff's value is the sign of a true EEH |
@@ -143,11 +143,12 @@ seen in /proc/ppc64/eeh (subject to change). Normally, almost | |||
143 | all of these occur during boot, when the PCI bus is scanned, where | 143 | all of these occur during boot, when the PCI bus is scanned, where |
144 | a large number of 0xff reads are part of the bus scan procedure. | 144 | a large number of 0xff reads are part of the bus scan procedure. |
145 | 145 | ||
146 | If a frozen slot is detected, code in arch/ppc64/kernel/eeh.c will | 146 | If a frozen slot is detected, code in |
147 | print a stack trace to syslog (/var/log/messages). This stack trace | 147 | arch/powerpc/platforms/pseries/eeh.c will print a stack trace to |
148 | has proven to be very useful to device-driver authors for finding | 148 | syslog (/var/log/messages). This stack trace has proven to be very |
149 | out at what point the EEH error was detected, as the error itself | 149 | useful to device-driver authors for finding out at what point the EEH |
150 | usually occurs slightly beforehand. | 150 | error was detected, as the error itself usually occurs slightly |
151 | beforehand. | ||
151 | 152 | ||
152 | Next, it uses the Linux kernel notifier chain/work queue mechanism to | 153 | Next, it uses the Linux kernel notifier chain/work queue mechanism to |
153 | allow any interested parties to find out about the failure. Device | 154 | allow any interested parties to find out about the failure. Device |
diff --git a/Documentation/powerpc/hvcs.txt b/Documentation/powerpc/hvcs.txt index dca75cbda6f8..1e38166f4e54 100644 --- a/Documentation/powerpc/hvcs.txt +++ b/Documentation/powerpc/hvcs.txt | |||
@@ -558,9 +558,9 @@ partitions. | |||
558 | 558 | ||
559 | The proper channel for reporting bugs is either through the Linux OS | 559 | The proper channel for reporting bugs is either through the Linux OS |
560 | distribution company that provided your OS or by posting issues to the | 560 | distribution company that provided your OS or by posting issues to the |
561 | ppc64 development mailing list at: | 561 | PowerPC development mailing list at: |
562 | 562 | ||
563 | linuxppc64-dev@lists.linuxppc.org | 563 | linuxppc-dev@ozlabs.org |
564 | 564 | ||
565 | This request is to provide a documented and searchable public exchange | 565 | This request is to provide a documented and searchable public exchange |
566 | of the problems and solutions surrounding this driver for the benefit of | 566 | of the problems and solutions surrounding this driver for the benefit of |
diff --git a/Documentation/robust-futex-ABI.txt b/Documentation/robust-futex-ABI.txt new file mode 100644 index 000000000000..8529a17ffaa1 --- /dev/null +++ b/Documentation/robust-futex-ABI.txt | |||
@@ -0,0 +1,182 @@ | |||
1 | Started by Paul Jackson <pj@sgi.com> | ||
2 | |||
3 | The robust futex ABI | ||
4 | -------------------- | ||
5 | |||
6 | Robust_futexes provide a mechanism that is used in addition to normal | ||
7 | futexes, for kernel assist of cleanup of held locks on task exit. | ||
8 | |||
9 | The interesting data as to what futexes a thread is holding is kept on a | ||
10 | linked list in user space, where it can be updated efficiently as locks | ||
11 | are taken and dropped, without kernel intervention. The only additional | ||
12 | kernel intervention required for robust_futexes above and beyond what is | ||
13 | required for futexes is: | ||
14 | |||
15 | 1) a one time call, per thread, to tell the kernel where its list of | ||
16 | held robust_futexes begins, and | ||
17 | 2) internal kernel code at exit, to handle any listed locks held | ||
18 | by the exiting thread. | ||
19 | |||
20 | The existing normal futexes already provide a "Fast Userspace Locking" | ||
21 | mechanism, which handles uncontested locking without needing a system | ||
22 | call, and handles contested locking by maintaining a list of waiting | ||
23 | threads in the kernel. Options on the sys_futex(2) system call support | ||
24 | waiting on a particular futex, and waking up the next waiter on a | ||
25 | particular futex. | ||
26 | |||
27 | For robust_futexes to work, the user code (typically in a library such | ||
28 | as glibc linked with the application) has to manage and place the | ||
29 | necessary list elements exactly as the kernel expects them. If it fails | ||
30 | to do so, then improperly listed locks will not be cleaned up on exit, | ||
31 | probably causing deadlock or other such failure of the other threads | ||
32 | waiting on the same locks. | ||
33 | |||
34 | A thread that anticipates possibly using robust_futexes should first | ||
35 | issue the system call: | ||
36 | |||
37 | asmlinkage long | ||
38 | sys_set_robust_list(struct robust_list_head __user *head, size_t len); | ||
39 | |||
40 | The pointer 'head' points to a structure in the threads address space | ||
41 | consisting of three words. Each word is 32 bits on 32 bit arch's, or 64 | ||
42 | bits on 64 bit arch's, and local byte order. Each thread should have | ||
43 | its own thread private 'head'. | ||
44 | |||
45 | If a thread is running in 32 bit compatibility mode on a 64 native arch | ||
46 | kernel, then it can actually have two such structures - one using 32 bit | ||
47 | words for 32 bit compatibility mode, and one using 64 bit words for 64 | ||
48 | bit native mode. The kernel, if it is a 64 bit kernel supporting 32 bit | ||
49 | compatibility mode, will attempt to process both lists on each task | ||
50 | exit, if the corresponding sys_set_robust_list() call has been made to | ||
51 | setup that list. | ||
52 | |||
53 | The first word in the memory structure at 'head' contains a | ||
54 | pointer to a single linked list of 'lock entries', one per lock, | ||
55 | as described below. If the list is empty, the pointer will point | ||
56 | to itself, 'head'. The last 'lock entry' points back to the 'head'. | ||
57 | |||
58 | The second word, called 'offset', specifies the offset from the | ||
59 | address of the associated 'lock entry', plus or minus, of what will | ||
60 | be called the 'lock word', from that 'lock entry'. The 'lock word' | ||
61 | is always a 32 bit word, unlike the other words above. The 'lock | ||
62 | word' holds 3 flag bits in the upper 3 bits, and the thread id (TID) | ||
63 | of the thread holding the lock in the bottom 29 bits. See further | ||
64 | below for a description of the flag bits. | ||
65 | |||
66 | The third word, called 'list_op_pending', contains transient copy of | ||
67 | the address of the 'lock entry', during list insertion and removal, | ||
68 | and is needed to correctly resolve races should a thread exit while | ||
69 | in the middle of a locking or unlocking operation. | ||
70 | |||
71 | Each 'lock entry' on the single linked list starting at 'head' consists | ||
72 | of just a single word, pointing to the next 'lock entry', or back to | ||
73 | 'head' if there are no more entries. In addition, nearby to each 'lock | ||
74 | entry', at an offset from the 'lock entry' specified by the 'offset' | ||
75 | word, is one 'lock word'. | ||
76 | |||
77 | The 'lock word' is always 32 bits, and is intended to be the same 32 bit | ||
78 | lock variable used by the futex mechanism, in conjunction with | ||
79 | robust_futexes. The kernel will only be able to wakeup the next thread | ||
80 | waiting for a lock on a threads exit if that next thread used the futex | ||
81 | mechanism to register the address of that 'lock word' with the kernel. | ||
82 | |||
83 | For each futex lock currently held by a thread, if it wants this | ||
84 | robust_futex support for exit cleanup of that lock, it should have one | ||
85 | 'lock entry' on this list, with its associated 'lock word' at the | ||
86 | specified 'offset'. Should a thread die while holding any such locks, | ||
87 | the kernel will walk this list, mark any such locks with a bit | ||
88 | indicating their holder died, and wakeup the next thread waiting for | ||
89 | that lock using the futex mechanism. | ||
90 | |||
91 | When a thread has invoked the above system call to indicate it | ||
92 | anticipates using robust_futexes, the kernel stores the passed in 'head' | ||
93 | pointer for that task. The task may retrieve that value later on by | ||
94 | using the system call: | ||
95 | |||
96 | asmlinkage long | ||
97 | sys_get_robust_list(int pid, struct robust_list_head __user **head_ptr, | ||
98 | size_t __user *len_ptr); | ||
99 | |||
100 | It is anticipated that threads will use robust_futexes embedded in | ||
101 | larger, user level locking structures, one per lock. The kernel | ||
102 | robust_futex mechanism doesn't care what else is in that structure, so | ||
103 | long as the 'offset' to the 'lock word' is the same for all | ||
104 | robust_futexes used by that thread. The thread should link those locks | ||
105 | it currently holds using the 'lock entry' pointers. It may also have | ||
106 | other links between the locks, such as the reverse side of a double | ||
107 | linked list, but that doesn't matter to the kernel. | ||
108 | |||
109 | By keeping its locks linked this way, on a list starting with a 'head' | ||
110 | pointer known to the kernel, the kernel can provide to a thread the | ||
111 | essential service available for robust_futexes, which is to help clean | ||
112 | up locks held at the time of (a perhaps unexpectedly) exit. | ||
113 | |||
114 | Actual locking and unlocking, during normal operations, is handled | ||
115 | entirely by user level code in the contending threads, and by the | ||
116 | existing futex mechanism to wait for, and wakeup, locks. The kernels | ||
117 | only essential involvement in robust_futexes is to remember where the | ||
118 | list 'head' is, and to walk the list on thread exit, handling locks | ||
119 | still held by the departing thread, as described below. | ||
120 | |||
121 | There may exist thousands of futex lock structures in a threads shared | ||
122 | memory, on various data structures, at a given point in time. Only those | ||
123 | lock structures for locks currently held by that thread should be on | ||
124 | that thread's robust_futex linked lock list a given time. | ||
125 | |||
126 | A given futex lock structure in a user shared memory region may be held | ||
127 | at different times by any of the threads with access to that region. The | ||
128 | thread currently holding such a lock, if any, is marked with the threads | ||
129 | TID in the lower 29 bits of the 'lock word'. | ||
130 | |||
131 | When adding or removing a lock from its list of held locks, in order for | ||
132 | the kernel to correctly handle lock cleanup regardless of when the task | ||
133 | exits (perhaps it gets an unexpected signal 9 in the middle of | ||
134 | manipulating this list), the user code must observe the following | ||
135 | protocol on 'lock entry' insertion and removal: | ||
136 | |||
137 | On insertion: | ||
138 | 1) set the 'list_op_pending' word to the address of the 'lock word' | ||
139 | to be inserted, | ||
140 | 2) acquire the futex lock, | ||
141 | 3) add the lock entry, with its thread id (TID) in the bottom 29 bits | ||
142 | of the 'lock word', to the linked list starting at 'head', and | ||
143 | 4) clear the 'list_op_pending' word. | ||
144 | |||
145 | On removal: | ||
146 | 1) set the 'list_op_pending' word to the address of the 'lock word' | ||
147 | to be removed, | ||
148 | 2) remove the lock entry for this lock from the 'head' list, | ||
149 | 2) release the futex lock, and | ||
150 | 2) clear the 'lock_op_pending' word. | ||
151 | |||
152 | On exit, the kernel will consider the address stored in | ||
153 | 'list_op_pending' and the address of each 'lock word' found by walking | ||
154 | the list starting at 'head'. For each such address, if the bottom 29 | ||
155 | bits of the 'lock word' at offset 'offset' from that address equals the | ||
156 | exiting threads TID, then the kernel will do two things: | ||
157 | |||
158 | 1) if bit 31 (0x80000000) is set in that word, then attempt a futex | ||
159 | wakeup on that address, which will waken the next thread that has | ||
160 | used to the futex mechanism to wait on that address, and | ||
161 | 2) atomically set bit 30 (0x40000000) in the 'lock word'. | ||
162 | |||
163 | In the above, bit 31 was set by futex waiters on that lock to indicate | ||
164 | they were waiting, and bit 30 is set by the kernel to indicate that the | ||
165 | lock owner died holding the lock. | ||
166 | |||
167 | The kernel exit code will silently stop scanning the list further if at | ||
168 | any point: | ||
169 | |||
170 | 1) the 'head' pointer or an subsequent linked list pointer | ||
171 | is not a valid address of a user space word | ||
172 | 2) the calculated location of the 'lock word' (address plus | ||
173 | 'offset') is not the valud address of a 32 bit user space | ||
174 | word | ||
175 | 3) if the list contains more than 1 million (subject to | ||
176 | future kernel configuration changes) elements. | ||
177 | |||
178 | When the kernel sees a list entry whose 'lock word' doesn't have the | ||
179 | current threads TID in the lower 29 bits, it does nothing with that | ||
180 | entry, and goes on to the next entry. | ||
181 | |||
182 | Bit 29 (0x20000000) of the 'lock word' is reserved for future use. | ||
diff --git a/Documentation/robust-futexes.txt b/Documentation/robust-futexes.txt new file mode 100644 index 000000000000..df82d75245a0 --- /dev/null +++ b/Documentation/robust-futexes.txt | |||
@@ -0,0 +1,218 @@ | |||
1 | Started by: Ingo Molnar <mingo@redhat.com> | ||
2 | |||
3 | Background | ||
4 | ---------- | ||
5 | |||
6 | what are robust futexes? To answer that, we first need to understand | ||
7 | what futexes are: normal futexes are special types of locks that in the | ||
8 | noncontended case can be acquired/released from userspace without having | ||
9 | to enter the kernel. | ||
10 | |||
11 | A futex is in essence a user-space address, e.g. a 32-bit lock variable | ||
12 | field. If userspace notices contention (the lock is already owned and | ||
13 | someone else wants to grab it too) then the lock is marked with a value | ||
14 | that says "there's a waiter pending", and the sys_futex(FUTEX_WAIT) | ||
15 | syscall is used to wait for the other guy to release it. The kernel | ||
16 | creates a 'futex queue' internally, so that it can later on match up the | ||
17 | waiter with the waker - without them having to know about each other. | ||
18 | When the owner thread releases the futex, it notices (via the variable | ||
19 | value) that there were waiter(s) pending, and does the | ||
20 | sys_futex(FUTEX_WAKE) syscall to wake them up. Once all waiters have | ||
21 | taken and released the lock, the futex is again back to 'uncontended' | ||
22 | state, and there's no in-kernel state associated with it. The kernel | ||
23 | completely forgets that there ever was a futex at that address. This | ||
24 | method makes futexes very lightweight and scalable. | ||
25 | |||
26 | "Robustness" is about dealing with crashes while holding a lock: if a | ||
27 | process exits prematurely while holding a pthread_mutex_t lock that is | ||
28 | also shared with some other process (e.g. yum segfaults while holding a | ||
29 | pthread_mutex_t, or yum is kill -9-ed), then waiters for that lock need | ||
30 | to be notified that the last owner of the lock exited in some irregular | ||
31 | way. | ||
32 | |||
33 | To solve such types of problems, "robust mutex" userspace APIs were | ||
34 | created: pthread_mutex_lock() returns an error value if the owner exits | ||
35 | prematurely - and the new owner can decide whether the data protected by | ||
36 | the lock can be recovered safely. | ||
37 | |||
38 | There is a big conceptual problem with futex based mutexes though: it is | ||
39 | the kernel that destroys the owner task (e.g. due to a SEGFAULT), but | ||
40 | the kernel cannot help with the cleanup: if there is no 'futex queue' | ||
41 | (and in most cases there is none, futexes being fast lightweight locks) | ||
42 | then the kernel has no information to clean up after the held lock! | ||
43 | Userspace has no chance to clean up after the lock either - userspace is | ||
44 | the one that crashes, so it has no opportunity to clean up. Catch-22. | ||
45 | |||
46 | In practice, when e.g. yum is kill -9-ed (or segfaults), a system reboot | ||
47 | is needed to release that futex based lock. This is one of the leading | ||
48 | bugreports against yum. | ||
49 | |||
50 | To solve this problem, the traditional approach was to extend the vma | ||
51 | (virtual memory area descriptor) concept to have a notion of 'pending | ||
52 | robust futexes attached to this area'. This approach requires 3 new | ||
53 | syscall variants to sys_futex(): FUTEX_REGISTER, FUTEX_DEREGISTER and | ||
54 | FUTEX_RECOVER. At do_exit() time, all vmas are searched to see whether | ||
55 | they have a robust_head set. This approach has two fundamental problems | ||
56 | left: | ||
57 | |||
58 | - it has quite complex locking and race scenarios. The vma-based | ||
59 | approach had been pending for years, but they are still not completely | ||
60 | reliable. | ||
61 | |||
62 | - they have to scan _every_ vma at sys_exit() time, per thread! | ||
63 | |||
64 | The second disadvantage is a real killer: pthread_exit() takes around 1 | ||
65 | microsecond on Linux, but with thousands (or tens of thousands) of vmas | ||
66 | every pthread_exit() takes a millisecond or more, also totally | ||
67 | destroying the CPU's L1 and L2 caches! | ||
68 | |||
69 | This is very much noticeable even for normal process sys_exit_group() | ||
70 | calls: the kernel has to do the vma scanning unconditionally! (this is | ||
71 | because the kernel has no knowledge about how many robust futexes there | ||
72 | are to be cleaned up, because a robust futex might have been registered | ||
73 | in another task, and the futex variable might have been simply mmap()-ed | ||
74 | into this process's address space). | ||
75 | |||
76 | This huge overhead forced the creation of CONFIG_FUTEX_ROBUST so that | ||
77 | normal kernels can turn it off, but worse than that: the overhead makes | ||
78 | robust futexes impractical for any type of generic Linux distribution. | ||
79 | |||
80 | So something had to be done. | ||
81 | |||
82 | New approach to robust futexes | ||
83 | ------------------------------ | ||
84 | |||
85 | At the heart of this new approach there is a per-thread private list of | ||
86 | robust locks that userspace is holding (maintained by glibc) - which | ||
87 | userspace list is registered with the kernel via a new syscall [this | ||
88 | registration happens at most once per thread lifetime]. At do_exit() | ||
89 | time, the kernel checks this user-space list: are there any robust futex | ||
90 | locks to be cleaned up? | ||
91 | |||
92 | In the common case, at do_exit() time, there is no list registered, so | ||
93 | the cost of robust futexes is just a simple current->robust_list != NULL | ||
94 | comparison. If the thread has registered a list, then normally the list | ||
95 | is empty. If the thread/process crashed or terminated in some incorrect | ||
96 | way then the list might be non-empty: in this case the kernel carefully | ||
97 | walks the list [not trusting it], and marks all locks that are owned by | ||
98 | this thread with the FUTEX_OWNER_DEAD bit, and wakes up one waiter (if | ||
99 | any). | ||
100 | |||
101 | The list is guaranteed to be private and per-thread at do_exit() time, | ||
102 | so it can be accessed by the kernel in a lockless way. | ||
103 | |||
104 | There is one race possible though: since adding to and removing from the | ||
105 | list is done after the futex is acquired by glibc, there is a few | ||
106 | instructions window for the thread (or process) to die there, leaving | ||
107 | the futex hung. To protect against this possibility, userspace (glibc) | ||
108 | also maintains a simple per-thread 'list_op_pending' field, to allow the | ||
109 | kernel to clean up if the thread dies after acquiring the lock, but just | ||
110 | before it could have added itself to the list. Glibc sets this | ||
111 | list_op_pending field before it tries to acquire the futex, and clears | ||
112 | it after the list-add (or list-remove) has finished. | ||
113 | |||
114 | That's all that is needed - all the rest of robust-futex cleanup is done | ||
115 | in userspace [just like with the previous patches]. | ||
116 | |||
117 | Ulrich Drepper has implemented the necessary glibc support for this new | ||
118 | mechanism, which fully enables robust mutexes. | ||
119 | |||
120 | Key differences of this userspace-list based approach, compared to the | ||
121 | vma based method: | ||
122 | |||
123 | - it's much, much faster: at thread exit time, there's no need to loop | ||
124 | over every vma (!), which the VM-based method has to do. Only a very | ||
125 | simple 'is the list empty' op is done. | ||
126 | |||
127 | - no VM changes are needed - 'struct address_space' is left alone. | ||
128 | |||
129 | - no registration of individual locks is needed: robust mutexes dont | ||
130 | need any extra per-lock syscalls. Robust mutexes thus become a very | ||
131 | lightweight primitive - so they dont force the application designer | ||
132 | to do a hard choice between performance and robustness - robust | ||
133 | mutexes are just as fast. | ||
134 | |||
135 | - no per-lock kernel allocation happens. | ||
136 | |||
137 | - no resource limits are needed. | ||
138 | |||
139 | - no kernel-space recovery call (FUTEX_RECOVER) is needed. | ||
140 | |||
141 | - the implementation and the locking is "obvious", and there are no | ||
142 | interactions with the VM. | ||
143 | |||
144 | Performance | ||
145 | ----------- | ||
146 | |||
147 | I have benchmarked the time needed for the kernel to process a list of 1 | ||
148 | million (!) held locks, using the new method [on a 2GHz CPU]: | ||
149 | |||
150 | - with FUTEX_WAIT set [contended mutex]: 130 msecs | ||
151 | - without FUTEX_WAIT set [uncontended mutex]: 30 msecs | ||
152 | |||
153 | I have also measured an approach where glibc does the lock notification | ||
154 | [which it currently does for !pshared robust mutexes], and that took 256 | ||
155 | msecs - clearly slower, due to the 1 million FUTEX_WAKE syscalls | ||
156 | userspace had to do. | ||
157 | |||
158 | (1 million held locks are unheard of - we expect at most a handful of | ||
159 | locks to be held at a time. Nevertheless it's nice to know that this | ||
160 | approach scales nicely.) | ||
161 | |||
162 | Implementation details | ||
163 | ---------------------- | ||
164 | |||
165 | The patch adds two new syscalls: one to register the userspace list, and | ||
166 | one to query the registered list pointer: | ||
167 | |||
168 | asmlinkage long | ||
169 | sys_set_robust_list(struct robust_list_head __user *head, | ||
170 | size_t len); | ||
171 | |||
172 | asmlinkage long | ||
173 | sys_get_robust_list(int pid, struct robust_list_head __user **head_ptr, | ||
174 | size_t __user *len_ptr); | ||
175 | |||
176 | List registration is very fast: the pointer is simply stored in | ||
177 | current->robust_list. [Note that in the future, if robust futexes become | ||
178 | widespread, we could extend sys_clone() to register a robust-list head | ||
179 | for new threads, without the need of another syscall.] | ||
180 | |||
181 | So there is virtually zero overhead for tasks not using robust futexes, | ||
182 | and even for robust futex users, there is only one extra syscall per | ||
183 | thread lifetime, and the cleanup operation, if it happens, is fast and | ||
184 | straightforward. The kernel doesnt have any internal distinction between | ||
185 | robust and normal futexes. | ||
186 | |||
187 | If a futex is found to be held at exit time, the kernel sets the | ||
188 | following bit of the futex word: | ||
189 | |||
190 | #define FUTEX_OWNER_DIED 0x40000000 | ||
191 | |||
192 | and wakes up the next futex waiter (if any). User-space does the rest of | ||
193 | the cleanup. | ||
194 | |||
195 | Otherwise, robust futexes are acquired by glibc by putting the TID into | ||
196 | the futex field atomically. Waiters set the FUTEX_WAITERS bit: | ||
197 | |||
198 | #define FUTEX_WAITERS 0x80000000 | ||
199 | |||
200 | and the remaining bits are for the TID. | ||
201 | |||
202 | Testing, architecture support | ||
203 | ----------------------------- | ||
204 | |||
205 | i've tested the new syscalls on x86 and x86_64, and have made sure the | ||
206 | parsing of the userspace list is robust [ ;-) ] even if the list is | ||
207 | deliberately corrupted. | ||
208 | |||
209 | i386 and x86_64 syscalls are wired up at the moment, and Ulrich has | ||
210 | tested the new glibc code (on x86_64 and i386), and it works for his | ||
211 | robust-mutex testcases. | ||
212 | |||
213 | All other architectures should build just fine too - but they wont have | ||
214 | the new syscalls yet. | ||
215 | |||
216 | Architectures need to implement the new futex_atomic_cmpxchg_inatomic() | ||
217 | inline function before writing up the syscalls (that function returns | ||
218 | -ENOSYS right now). | ||
diff --git a/Documentation/rpc-cache.txt b/Documentation/rpc-cache.txt index 2b5d4434fa5a..5f757c8cf979 100644 --- a/Documentation/rpc-cache.txt +++ b/Documentation/rpc-cache.txt | |||
@@ -1,4 +1,4 @@ | |||
1 | This document gives a brief introduction to the caching | 1 | This document gives a brief introduction to the caching |
2 | mechanisms in the sunrpc layer that is used, in particular, | 2 | mechanisms in the sunrpc layer that is used, in particular, |
3 | for NFS authentication. | 3 | for NFS authentication. |
4 | 4 | ||
@@ -25,25 +25,17 @@ The common code handles such things as: | |||
25 | - supporting 'NEGATIVE' as well as positive entries | 25 | - supporting 'NEGATIVE' as well as positive entries |
26 | - allowing an EXPIRED time on cache items, and removing | 26 | - allowing an EXPIRED time on cache items, and removing |
27 | items after they expire, and are no longe in-use. | 27 | items after they expire, and are no longe in-use. |
28 | |||
29 | Future code extensions are expect to handle | ||
30 | - making requests to user-space to fill in cache entries | 28 | - making requests to user-space to fill in cache entries |
31 | - allowing user-space to directly set entries in the cache | 29 | - allowing user-space to directly set entries in the cache |
32 | - delaying RPC requests that depend on as-yet incomplete | 30 | - delaying RPC requests that depend on as-yet incomplete |
33 | cache entries, and replaying those requests when the cache entry | 31 | cache entries, and replaying those requests when the cache entry |
34 | is complete. | 32 | is complete. |
35 | - maintaining last-access times on cache entries | 33 | - clean out old entries as they expire. |
36 | - clean out old entries when the caches become full | ||
37 | |||
38 | The code for performing a cache lookup is also common, but in the form | ||
39 | of a template. i.e. a #define. | ||
40 | Each cache defines a lookup function by using the DefineCacheLookup | ||
41 | macro, or the simpler DefineSimpleCacheLookup macro | ||
42 | 34 | ||
43 | Creating a Cache | 35 | Creating a Cache |
44 | ---------------- | 36 | ---------------- |
45 | 37 | ||
46 | 1/ A cache needs a datum to cache. This is in the form of a | 38 | 1/ A cache needs a datum to store. This is in the form of a |
47 | structure definition that must contain a | 39 | structure definition that must contain a |
48 | struct cache_head | 40 | struct cache_head |
49 | as an element, usually the first. | 41 | as an element, usually the first. |
@@ -51,35 +43,69 @@ Creating a Cache | |||
51 | Each cache element is reference counted and contains | 43 | Each cache element is reference counted and contains |
52 | expiry and update times for use in cache management. | 44 | expiry and update times for use in cache management. |
53 | 2/ A cache needs a "cache_detail" structure that | 45 | 2/ A cache needs a "cache_detail" structure that |
54 | describes the cache. This stores the hash table, and some | 46 | describes the cache. This stores the hash table, some |
55 | parameters for cache management. | 47 | parameters for cache management, and some operations detailing how |
56 | 3/ A cache needs a lookup function. This is created using | 48 | to work with particular cache items. |
57 | the DefineCacheLookup macro. This lookup function is used both | 49 | The operations requires are: |
58 | to find entries and to update entries. The normal mode for | 50 | struct cache_head *alloc(void) |
59 | updating an entry is to replace the old entry with a new | 51 | This simply allocates appropriate memory and returns |
60 | entry. However it is possible to allow update-in-place | 52 | a pointer to the cache_detail embedded within the |
61 | for those caches where it makes sense (no atomicity issues | 53 | structure |
62 | or indirect reference counting issue) | 54 | void cache_put(struct kref *) |
63 | 4/ A cache needs to be registered using cache_register(). This | 55 | This is called when the last reference to an item is |
64 | includes in on a list of caches that will be regularly | 56 | is dropped. The pointer passed is to the 'ref' field |
65 | cleaned to discard old data. For this to work, some | 57 | in the cache_head. cache_put should release any |
66 | thread must periodically call cache_clean | 58 | references create by 'cache_init' and, if CACHE_VALID |
67 | 59 | is set, any references created by cache_update. | |
60 | It should then release the memory allocated by | ||
61 | 'alloc'. | ||
62 | int match(struct cache_head *orig, struct cache_head *new) | ||
63 | test if the keys in the two structures match. Return | ||
64 | 1 if they do, 0 if they don't. | ||
65 | void init(struct cache_head *orig, struct cache_head *new) | ||
66 | Set the 'key' fields in 'new' from 'orig'. This may | ||
67 | include taking references to shared objects. | ||
68 | void update(struct cache_head *orig, struct cache_head *new) | ||
69 | Set the 'content' fileds in 'new' from 'orig'. | ||
70 | int cache_show(struct seq_file *m, struct cache_detail *cd, | ||
71 | struct cache_head *h) | ||
72 | Optional. Used to provide a /proc file that lists the | ||
73 | contents of a cache. This should show one item, | ||
74 | usually on just one line. | ||
75 | int cache_request(struct cache_detail *cd, struct cache_head *h, | ||
76 | char **bpp, int *blen) | ||
77 | Format a request to be send to user-space for an item | ||
78 | to be instantiated. *bpp is a buffer of size *blen. | ||
79 | bpp should be moved forward over the encoded message, | ||
80 | and *blen should be reduced to show how much free | ||
81 | space remains. Return 0 on success or <0 if not | ||
82 | enough room or other problem. | ||
83 | int cache_parse(struct cache_detail *cd, char *buf, int len) | ||
84 | A message from user space has arrived to fill out a | ||
85 | cache entry. It is in 'buf' of length 'len'. | ||
86 | cache_parse should parse this, find the item in the | ||
87 | cache with sunrpc_cache_lookup, and update the item | ||
88 | with sunrpc_cache_update. | ||
89 | |||
90 | |||
91 | 3/ A cache needs to be registered using cache_register(). This | ||
92 | includes it on a list of caches that will be regularly | ||
93 | cleaned to discard old data. | ||
94 | |||
68 | Using a cache | 95 | Using a cache |
69 | ------------- | 96 | ------------- |
70 | 97 | ||
71 | To find a value in a cache, call the lookup function passing it a the | 98 | To find a value in a cache, call sunrpc_cache_lookup passing a pointer |
72 | datum which contains key, and possibly content, and a flag saying | 99 | to the cache_head in a sample item with the 'key' fields filled in. |
73 | whether to update the cache with new data from the datum. Depending | 100 | This will be passed to ->match to identify the target entry. If no |
74 | on how the cache lookup function was defined, it may take an extra | 101 | entry is found, a new entry will be create, added to the cache, and |
75 | argument to identify the particular cache in question. | 102 | marked as not containing valid data. |
76 | 103 | ||
77 | Except in cases of kmalloc failure, the lookup function | 104 | The item returned is typically passed to cache_check which will check |
78 | will return a new datum which will store the key and | 105 | if the data is valid, and may initiate an up-call to get fresh data. |
79 | may contain valid content, or may not. | 106 | cache_check will return -ENOENT in the entry is negative or if an up |
80 | This datum is typically passed to cache_check which determines the | 107 | call is needed but not possible, -EAGAIN if an upcall is pending, |
81 | validity of the datum and may later initiate an upcall to fill | 108 | or 0 if the data is valid; |
82 | in the data. | ||
83 | 109 | ||
84 | cache_check can be passed a "struct cache_req *". This structure is | 110 | cache_check can be passed a "struct cache_req *". This structure is |
85 | typically embedded in the actual request and can be used to create a | 111 | typically embedded in the actual request and can be used to create a |
@@ -90,6 +116,13 @@ item does become valid, the deferred copy of the request will be | |||
90 | revisited (->revisit). It is expected that this method will | 116 | revisited (->revisit). It is expected that this method will |
91 | reschedule the request for processing. | 117 | reschedule the request for processing. |
92 | 118 | ||
119 | The value returned by sunrpc_cache_lookup can also be passed to | ||
120 | sunrpc_cache_update to set the content for the item. A second item is | ||
121 | passed which should hold the content. If the item found by _lookup | ||
122 | has valid data, then it is discarded and a new item is created. This | ||
123 | saves any user of an item from worrying about content changing while | ||
124 | it is being inspected. If the item found by _lookup does not contain | ||
125 | valid data, then the content is copied across and CACHE_VALID is set. | ||
93 | 126 | ||
94 | Populating a cache | 127 | Populating a cache |
95 | ------------------ | 128 | ------------------ |
@@ -114,8 +147,8 @@ should be create or updated to have the given content, and the | |||
114 | expiry time should be set on that item. | 147 | expiry time should be set on that item. |
115 | 148 | ||
116 | Reading from a channel is a bit more interesting. When a cache | 149 | Reading from a channel is a bit more interesting. When a cache |
117 | lookup fail, or when it suceeds but finds an entry that may soon | 150 | lookup fails, or when it succeeds but finds an entry that may soon |
118 | expiry, a request is lodged for that cache item to be updated by | 151 | expire, a request is lodged for that cache item to be updated by |
119 | user-space. These requests appear in the channel file. | 152 | user-space. These requests appear in the channel file. |
120 | 153 | ||
121 | Successive reads will return successive requests. | 154 | Successive reads will return successive requests. |
@@ -130,7 +163,7 @@ Thus a user-space helper is likely to: | |||
130 | write a response | 163 | write a response |
131 | loop. | 164 | loop. |
132 | 165 | ||
133 | If it dies and needs to be restarted, any requests that have not be | 166 | If it dies and needs to be restarted, any requests that have not been |
134 | answered will still appear in the file and will be read by the new | 167 | answered will still appear in the file and will be read by the new |
135 | instance of the helper. | 168 | instance of the helper. |
136 | 169 | ||
@@ -142,10 +175,9 @@ Each cache should also define a "cache_request" method which | |||
142 | takes a cache item and encodes a request into the buffer | 175 | takes a cache item and encodes a request into the buffer |
143 | provided. | 176 | provided. |
144 | 177 | ||
145 | |||
146 | Note: If a cache has no active readers on the channel, and has had not | 178 | Note: If a cache has no active readers on the channel, and has had not |
147 | active readers for more than 60 seconds, further requests will not be | 179 | active readers for more than 60 seconds, further requests will not be |
148 | added to the channel but instead all looks that do not find a valid | 180 | added to the channel but instead all lookups that do not find a valid |
149 | entry will fail. This is partly for backward compatibility: The | 181 | entry will fail. This is partly for backward compatibility: The |
150 | previous nfs exports table was deemed to be authoritative and a | 182 | previous nfs exports table was deemed to be authoritative and a |
151 | failed lookup meant a definite 'no'. | 183 | failed lookup meant a definite 'no'. |
@@ -154,18 +186,17 @@ request/response format | |||
154 | ----------------------- | 186 | ----------------------- |
155 | 187 | ||
156 | While each cache is free to use it's own format for requests | 188 | While each cache is free to use it's own format for requests |
157 | and responses over channel, the following is recommended are | 189 | and responses over channel, the following is recommended as |
158 | appropriate and support routines are available to help: | 190 | appropriate and support routines are available to help: |
159 | Each request or response record should be printable ASCII | 191 | Each request or response record should be printable ASCII |
160 | with precisely one newline character which should be at the end. | 192 | with precisely one newline character which should be at the end. |
161 | Fields within the record should be separated by spaces, normally one. | 193 | Fields within the record should be separated by spaces, normally one. |
162 | If spaces, newlines, or nul characters are needed in a field they | 194 | If spaces, newlines, or nul characters are needed in a field they |
163 | much be quotes. two mechanisms are available: | 195 | much be quoted. two mechanisms are available: |
164 | 1/ If a field begins '\x' then it must contain an even number of | 196 | 1/ If a field begins '\x' then it must contain an even number of |
165 | hex digits, and pairs of these digits provide the bytes in the | 197 | hex digits, and pairs of these digits provide the bytes in the |
166 | field. | 198 | field. |
167 | 2/ otherwise a \ in the field must be followed by 3 octal digits | 199 | 2/ otherwise a \ in the field must be followed by 3 octal digits |
168 | which give the code for a byte. Other characters are treated | 200 | which give the code for a byte. Other characters are treated |
169 | as them selves. At the very least, space, newlines nul, and | 201 | as them selves. At the very least, space, newline, nul, and |
170 | '\' must be quoted in this way. | 202 | '\' must be quoted in this way. |
171 | |||
diff --git a/Documentation/s390/driver-model.txt b/Documentation/s390/driver-model.txt index df09758bf3fe..efb674eda4d4 100644 --- a/Documentation/s390/driver-model.txt +++ b/Documentation/s390/driver-model.txt | |||
@@ -16,10 +16,12 @@ devices/ | |||
16 | - 0.0.0000/0.0.0815/ | 16 | - 0.0.0000/0.0.0815/ |
17 | - 0.0.0001/0.0.4711/ | 17 | - 0.0.0001/0.0.4711/ |
18 | - 0.0.0002/ | 18 | - 0.0.0002/ |
19 | - 0.1.0000/0.1.1234/ | ||
19 | ... | 20 | ... |
20 | 21 | ||
21 | In this example, device 0815 is accessed via subchannel 0, device 4711 via | 22 | In this example, device 0815 is accessed via subchannel 0 in subchannel set 0, |
22 | subchannel 1, and subchannel 2 is a non-I/O subchannel. | 23 | device 4711 via subchannel 1 in subchannel set 0, and subchannel 2 is a non-I/O |
24 | subchannel. Device 1234 is accessed via subchannel 0 in subchannel set 1. | ||
23 | 25 | ||
24 | You should address a ccw device via its bus id (e.g. 0.0.4711); the device can | 26 | You should address a ccw device via its bus id (e.g. 0.0.4711); the device can |
25 | be found under bus/ccw/devices/. | 27 | be found under bus/ccw/devices/. |
@@ -97,7 +99,7 @@ is not available to the device driver. | |||
97 | 99 | ||
98 | Each driver should declare in a MODULE_DEVICE_TABLE into which CU types/models | 100 | Each driver should declare in a MODULE_DEVICE_TABLE into which CU types/models |
99 | and/or device types/models it is interested. This information can later be found | 101 | and/or device types/models it is interested. This information can later be found |
100 | found in the struct ccw_device_id fields: | 102 | in the struct ccw_device_id fields: |
101 | 103 | ||
102 | struct ccw_device_id { | 104 | struct ccw_device_id { |
103 | __u16 match_flags; | 105 | __u16 match_flags; |
@@ -208,6 +210,11 @@ Each ccwgroup device also provides an 'ungroup' attribute to destroy the device | |||
208 | again (only when offline). This is a generic ccwgroup mechanism (the driver does | 210 | again (only when offline). This is a generic ccwgroup mechanism (the driver does |
209 | not need to implement anything beyond normal removal routines). | 211 | not need to implement anything beyond normal removal routines). |
210 | 212 | ||
213 | A ccw device which is a member of a ccwgroup device carries a pointer to the | ||
214 | ccwgroup device in the driver_data of its device struct. This field must not be | ||
215 | touched by the driver - it should use the ccwgroup device's driver_data for its | ||
216 | private data. | ||
217 | |||
211 | To implement a ccwgroup driver, please refer to include/asm/ccwgroup.h. Keep in | 218 | To implement a ccwgroup driver, please refer to include/asm/ccwgroup.h. Keep in |
212 | mind that most drivers will need to implement both a ccwgroup and a ccw driver | 219 | mind that most drivers will need to implement both a ccwgroup and a ccw driver |
213 | (unless you have a meta ccw driver, like cu3088 for lcs and ctc). | 220 | (unless you have a meta ccw driver, like cu3088 for lcs and ctc). |
@@ -230,6 +237,8 @@ status - Can be 'online' or 'offline'. | |||
230 | a channel path the user knows to be online, but the machine hasn't | 237 | a channel path the user knows to be online, but the machine hasn't |
231 | created a machine check for. | 238 | created a machine check for. |
232 | 239 | ||
240 | type - The physical type of the channel path. | ||
241 | |||
233 | 242 | ||
234 | 3. System devices | 243 | 3. System devices |
235 | ----------------- | 244 | ----------------- |
diff --git a/Documentation/serial-console.txt b/Documentation/serial-console.txt index 6c689b0df2b8..9a7bc8b3f479 100644 --- a/Documentation/serial-console.txt +++ b/Documentation/serial-console.txt | |||
@@ -17,11 +17,13 @@ The format of this option is: | |||
17 | ttyX for any other virtual console | 17 | ttyX for any other virtual console |
18 | ttySx for a serial port | 18 | ttySx for a serial port |
19 | lp0 for the first parallel port | 19 | lp0 for the first parallel port |
20 | ttyUSB0 for the first USB serial device | ||
20 | 21 | ||
21 | options: depend on the driver. For the serial port this | 22 | options: depend on the driver. For the serial port this |
22 | defines the baudrate/parity/bits of the port, | 23 | defines the baudrate/parity/bits/flow control of |
23 | in the format BBBBPN, where BBBB is the speed, | 24 | the port, in the format BBBBPNF, where BBBB is the |
24 | P is parity (n/o/e), and N is bits. Default is | 25 | speed, P is parity (n/o/e), N is number of bits, |
26 | and F is flow control ('r' for RTS). Default is | ||
25 | 9600n8. The maximum baudrate is 115200. | 27 | 9600n8. The maximum baudrate is 115200. |
26 | 28 | ||
27 | You can specify multiple console= options on the kernel command line. | 29 | You can specify multiple console= options on the kernel command line. |
@@ -45,6 +47,9 @@ become the console. | |||
45 | You will need to create a new device to use /dev/console. The official | 47 | You will need to create a new device to use /dev/console. The official |
46 | /dev/console is now character device 5,1. | 48 | /dev/console is now character device 5,1. |
47 | 49 | ||
50 | (You can also use a network device as a console. See | ||
51 | Documentation/networking/netconsole.txt for information on that.) | ||
52 | |||
48 | Here's an example that will use /dev/ttyS1 (COM2) as the console. | 53 | Here's an example that will use /dev/ttyS1 (COM2) as the console. |
49 | Replace the sample values as needed. | 54 | Replace the sample values as needed. |
50 | 55 | ||
diff --git a/Documentation/smart-config.txt b/Documentation/smart-config.txt index c9bed4cf8773..8467447b5a87 100644 --- a/Documentation/smart-config.txt +++ b/Documentation/smart-config.txt | |||
@@ -56,10 +56,6 @@ Here is the solution: | |||
56 | writing one file per option. It updates only the files for options | 56 | writing one file per option. It updates only the files for options |
57 | that have changed. | 57 | that have changed. |
58 | 58 | ||
59 | mkdep.c no longer generates warning messages for missing or unneeded | ||
60 | <linux/config.h> lines. The new top-level target 'make checkconfig' | ||
61 | checks for these problems. | ||
62 | |||
63 | Flag Dependencies | 59 | Flag Dependencies |
64 | 60 | ||
65 | Martin Von Loewis contributed another feature to this patch: | 61 | Martin Von Loewis contributed another feature to this patch: |
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt index 36b511c7cade..1def6049784c 100644 --- a/Documentation/sound/alsa/ALSA-Configuration.txt +++ b/Documentation/sound/alsa/ALSA-Configuration.txt | |||
@@ -513,6 +513,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
513 | 513 | ||
514 | This module supports multiple cards and autoprobe. | 514 | This module supports multiple cards and autoprobe. |
515 | 515 | ||
516 | The power-management is supported. | ||
517 | |||
516 | Module snd-ens1371 | 518 | Module snd-ens1371 |
517 | ------------------ | 519 | ------------------ |
518 | 520 | ||
@@ -526,6 +528,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
526 | 528 | ||
527 | This module supports multiple cards and autoprobe. | 529 | This module supports multiple cards and autoprobe. |
528 | 530 | ||
531 | The power-management is supported. | ||
532 | |||
529 | Module snd-es968 | 533 | Module snd-es968 |
530 | ---------------- | 534 | ---------------- |
531 | 535 | ||
@@ -671,6 +675,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
671 | 675 | ||
672 | model - force the model name | 676 | model - force the model name |
673 | position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size) | 677 | position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size) |
678 | single_cmd - Use single immediate commands to communicate with | ||
679 | codecs (for debugging only) | ||
674 | 680 | ||
675 | This module supports one card and autoprobe. | 681 | This module supports one card and autoprobe. |
676 | 682 | ||
@@ -694,13 +700,34 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
694 | asus 3-jack | 700 | asus 3-jack |
695 | uniwill 3-jack | 701 | uniwill 3-jack |
696 | F1734 2-jack | 702 | F1734 2-jack |
703 | lg LG laptop (m1 express dual) | ||
697 | test for testing/debugging purpose, almost all controls can be | 704 | test for testing/debugging purpose, almost all controls can be |
698 | adjusted. Appearing only when compiled with | 705 | adjusted. Appearing only when compiled with |
699 | $CONFIG_SND_DEBUG=y | 706 | $CONFIG_SND_DEBUG=y |
707 | auto auto-config reading BIOS (default) | ||
700 | 708 | ||
701 | ALC260 | 709 | ALC260 |
702 | hp HP machines | 710 | hp HP machines |
703 | fujitsu Fujitsu S7020 | 711 | fujitsu Fujitsu S7020 |
712 | acer Acer TravelMate | ||
713 | basic fixed pin assignment (old default model) | ||
714 | auto auto-config reading BIOS (default) | ||
715 | |||
716 | ALC262 | ||
717 | fujitsu Fujitsu Laptop | ||
718 | basic fixed pin assignment w/o SPDIF | ||
719 | auto auto-config reading BIOS (default) | ||
720 | |||
721 | ALC882/883/885 | ||
722 | 3stack-dig 3-jack with SPDIF I/O | ||
723 | 6stck-dig 6-jack digital with SPDIF I/O | ||
724 | auto auto-config reading BIOS (default) | ||
725 | |||
726 | ALC861 | ||
727 | 3stack 3-jack | ||
728 | 3stack-dig 3-jack with SPDIF I/O | ||
729 | 6stack-dig 6-jack with SPDIF I/O | ||
730 | auto auto-config reading BIOS (default) | ||
704 | 731 | ||
705 | CMI9880 | 732 | CMI9880 |
706 | minimal 3-jack in back | 733 | minimal 3-jack in back |
@@ -710,6 +737,28 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
710 | allout 5-jack in back, 2-jack in front, SPDIF out | 737 | allout 5-jack in back, 2-jack in front, SPDIF out |
711 | auto auto-config reading BIOS (default) | 738 | auto auto-config reading BIOS (default) |
712 | 739 | ||
740 | AD1981 | ||
741 | basic 3-jack (default) | ||
742 | hp HP nx6320 | ||
743 | |||
744 | AD1986A | ||
745 | 6stack 6-jack, separate surrounds (default) | ||
746 | 3stack 3-stack, shared surrounds | ||
747 | laptop 2-channel only (FSC V2060, Samsung M50) | ||
748 | laptop-eapd 2-channel with EAPD (Samsung R65, ASUS A6J) | ||
749 | |||
750 | AD1988 | ||
751 | 6stack 6-jack | ||
752 | 6stack-dig ditto with SPDIF | ||
753 | 3stack 3-jack | ||
754 | 3stack-dig ditto with SPDIF | ||
755 | laptop 3-jack with hp-jack automute | ||
756 | laptop-dig ditto with SPDIF | ||
757 | auto auto-confgi reading BIOS (default) | ||
758 | |||
759 | STAC7661(?) | ||
760 | vaio Setup for VAIO FE550G/SZ110 | ||
761 | |||
713 | If the default configuration doesn't work and one of the above | 762 | If the default configuration doesn't work and one of the above |
714 | matches with your device, report it together with the PCI | 763 | matches with your device, report it together with the PCI |
715 | subsystem ID (output of "lspci -nv") to ALSA BTS or alsa-devel | 764 | subsystem ID (output of "lspci -nv") to ALSA BTS or alsa-devel |
@@ -723,6 +772,17 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
723 | (Usually SD_LPLIB register is more accurate than the | 772 | (Usually SD_LPLIB register is more accurate than the |
724 | position buffer.) | 773 | position buffer.) |
725 | 774 | ||
775 | NB: If you get many "azx_get_response timeout" messages at | ||
776 | loading, it's likely a problem of interrupts (e.g. ACPI irq | ||
777 | routing). Try to boot with options like "pci=noacpi". Also, you | ||
778 | can try "single_cmd=1" module option. This will switch the | ||
779 | communication method between HDA controller and codecs to the | ||
780 | single immediate commands instead of CORB/RIRB. Basically, the | ||
781 | single command mode is provided only for BIOS, and you won't get | ||
782 | unsolicited events, too. But, at least, this works independently | ||
783 | from the irq. Remember this is a last resort, and should be | ||
784 | avoided as much as possible... | ||
785 | |||
726 | The power-management is supported. | 786 | The power-management is supported. |
727 | 787 | ||
728 | Module snd-hdsp | 788 | Module snd-hdsp |
@@ -802,6 +862,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
802 | ------------------ | 862 | ------------------ |
803 | 863 | ||
804 | Module for Envy24HT (VT/ICE1724), Envy24PT (VT1720) based PCI sound cards. | 864 | Module for Envy24HT (VT/ICE1724), Envy24PT (VT1720) based PCI sound cards. |
865 | * MidiMan M Audio Revolution 5.1 | ||
805 | * MidiMan M Audio Revolution 7.1 | 866 | * MidiMan M Audio Revolution 7.1 |
806 | * AMP Ltd AUDIO2000 | 867 | * AMP Ltd AUDIO2000 |
807 | * TerraTec Aureon 5.1 Sky | 868 | * TerraTec Aureon 5.1 Sky |
@@ -810,6 +871,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
810 | * TerraTec Phase 22 | 871 | * TerraTec Phase 22 |
811 | * TerraTec Phase 28 | 872 | * TerraTec Phase 28 |
812 | * AudioTrak Prodigy 7.1 | 873 | * AudioTrak Prodigy 7.1 |
874 | * AudioTrak Prodigy 7.1LT | ||
813 | * AudioTrak Prodigy 192 | 875 | * AudioTrak Prodigy 192 |
814 | * Pontis MS300 | 876 | * Pontis MS300 |
815 | * Albatron K8X800 Pro II | 877 | * Albatron K8X800 Pro II |
@@ -820,9 +882,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
820 | * Shuttle SN25P | 882 | * Shuttle SN25P |
821 | 883 | ||
822 | model - Use the given board model, one of the following: | 884 | model - Use the given board model, one of the following: |
823 | revo71, amp2000, prodigy71, prodigy192, aureon51, | 885 | revo51, revo71, amp2000, prodigy71, prodigy71lt, |
824 | aureon71, universe, k8x800, phase22, phase28, ms300, | 886 | prodigy192, aureon51, aureon71, universe, |
825 | av710 | 887 | k8x800, phase22, phase28, ms300, av710 |
826 | 888 | ||
827 | This module supports multiple cards and autoprobe. | 889 | This module supports multiple cards and autoprobe. |
828 | 890 | ||
@@ -1353,6 +1415,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed. | |||
1353 | 1415 | ||
1354 | vid - Vendor ID for the device (optional) | 1416 | vid - Vendor ID for the device (optional) |
1355 | pid - Product ID for the device (optional) | 1417 | pid - Product ID for the device (optional) |
1418 | device_setup - Device specific magic number (optional) | ||
1419 | - Influence depends on the device | ||
1420 | - Default: 0x0000 | ||
1356 | 1421 | ||
1357 | This module supports multiple devices, autoprobe and hotplugging. | 1422 | This module supports multiple devices, autoprobe and hotplugging. |
1358 | 1423 | ||
diff --git a/Documentation/sound/alsa/Audiophile-Usb.txt b/Documentation/sound/alsa/Audiophile-Usb.txt new file mode 100644 index 000000000000..4692c8e77dc1 --- /dev/null +++ b/Documentation/sound/alsa/Audiophile-Usb.txt | |||
@@ -0,0 +1,333 @@ | |||
1 | Guide to using M-Audio Audiophile USB with ALSA and Jack v1.2 | ||
2 | ======================================================== | ||
3 | |||
4 | Thibault Le Meur <Thibault.LeMeur@supelec.fr> | ||
5 | |||
6 | This document is a guide to using the M-Audio Audiophile USB (tm) device with | ||
7 | ALSA and JACK. | ||
8 | |||
9 | 1 - Audiophile USB Specs and correct usage | ||
10 | ========================================== | ||
11 | This part is a reminder of important facts about the functions and limitations | ||
12 | of the device. | ||
13 | |||
14 | The device has 4 audio interfaces, and 2 MIDI ports: | ||
15 | * Analog Stereo Input (Ai) | ||
16 | - This port supports 2 pairs of line-level audio inputs (1/4" TS and RCA) | ||
17 | - When the 1/4" TS (jack) connectors are connected, the RCA connectors | ||
18 | are disabled | ||
19 | * Analog Stereo Output (Ao) | ||
20 | * Digital Stereo Input (Di) | ||
21 | * Digital Stereo Output (Do) | ||
22 | * Midi In (Mi) | ||
23 | * Midi Out (Mo) | ||
24 | |||
25 | The internal DAC/ADC has the following caracteristics: | ||
26 | * sample depth of 16 or 24 bits | ||
27 | * sample rate from 8kHz to 96kHz | ||
28 | * Two ports can't use different sample depths at the same time.Moreover, the | ||
29 | Audiophile USB documentation gives the following Warning: "Please exit any | ||
30 | audio application running before switching between bit depths" | ||
31 | |||
32 | Due to the USB 1.1 bandwidth limitation, a limited number of interfaces can be | ||
33 | activated at the same time depending on the audio mode selected: | ||
34 | * 16-bit/48kHz ==> 4 channels in/ 4 channels out | ||
35 | - Ai+Ao+Di+Do | ||
36 | * 24-bit/48kHz ==> 4 channels in/2 channels out, | ||
37 | or 2 channels in/4 channels out | ||
38 | - Ai+Ao+Do or Ai+Di+Ao or Ai+Di+Do or Di+Ao+Do | ||
39 | * 24-bit/96kHz ==> 2 channels in, or 2 channels out (half duplex only) | ||
40 | - Ai or Ao or Di or Do | ||
41 | |||
42 | Important facts about the Digital interface: | ||
43 | -------------------------------------------- | ||
44 | * The Do port additionnaly supports surround-encoded AC-3 and DTS passthrough, | ||
45 | though I haven't tested it under linux | ||
46 | - Note that in this setup only the Do interface can be enabled | ||
47 | * Apart from recording an audio digital stream, enabling the Di port is a way | ||
48 | to synchronize the device to an external sample clock | ||
49 | - As a consequence, the Di port must be enable only if an active Digital | ||
50 | source is connected | ||
51 | - Enabling Di when no digital source is connected can result in a | ||
52 | synchronization error (for instance sound played at an odd sample rate) | ||
53 | |||
54 | |||
55 | 2 - Audiophile USB support in ALSA | ||
56 | ================================== | ||
57 | |||
58 | 2.1 - MIDI ports | ||
59 | ---------------- | ||
60 | The Audiophile USB MIDI ports will be automatically supported once the | ||
61 | following modules have been loaded: | ||
62 | * snd-usb-audio | ||
63 | * snd-seq | ||
64 | * snd-seq-midi | ||
65 | |||
66 | No additionnal setting is required. | ||
67 | |||
68 | 2.2 - Audio ports | ||
69 | ----------------- | ||
70 | |||
71 | Audio functions of the Audiophile USB device are handled by the snd-usb-audio | ||
72 | module. This module can work in a default mode (without any device-specific | ||
73 | parameter), or in an advanced mode with the device-specific parameter called | ||
74 | "device_setup". | ||
75 | |||
76 | 2.2.1 - Default Alsa driver mode | ||
77 | |||
78 | The default behaviour of the snd-usb-audio driver is to parse the device | ||
79 | capabilities at startup and enable all functions inside the device (including | ||
80 | all ports at any sample rates and any sample depths supported). This approach | ||
81 | has the advantage to let the driver easily switch from sample rates/depths | ||
82 | automatically according to the need of the application claiming the device. | ||
83 | |||
84 | In this case the Audiophile ports are mapped to alsa pcm devices in the | ||
85 | following way (I suppose the device's index is 1): | ||
86 | * hw:1,0 is Ao in playback and Di in capture | ||
87 | * hw:1,1 is Do in playback and Ai in capture | ||
88 | * hw:1,2 is Do in AC3/DTS passthrough mode | ||
89 | |||
90 | You must note as well that the device uses Big Endian byte encoding so that | ||
91 | supported audio format are S16_BE for 16-bit depth modes and S24_3BE for | ||
92 | 24-bits depth mode. One exception is the hw:1,2 port which is Little Endian | ||
93 | compliant and thus uses S16_LE. | ||
94 | |||
95 | Examples: | ||
96 | * playing a S24_3BE encoded raw file to the Ao port | ||
97 | % aplay -D hw:1,0 -c2 -t raw -r48000 -fS24_3BE test.raw | ||
98 | * recording a S24_3BE encoded raw file from the Ai port | ||
99 | % arecord -D hw:1,1 -c2 -t raw -r48000 -fS24_3BE test.raw | ||
100 | * playing a S16_BE encoded raw file to the Do port | ||
101 | % aplay -D hw:1,1 -c2 -t raw -r48000 -fS16_BE test.raw | ||
102 | |||
103 | If you're happy with the default Alsa driver setup and don't experience any | ||
104 | issue with this mode, then you can skip the following chapter. | ||
105 | |||
106 | 2.2.2 - Advanced module setup | ||
107 | |||
108 | Due to the hardware constraints described above, the device initialization made | ||
109 | by the Alsa driver in default mode may result in a corrupted state of the | ||
110 | device. For instance, a particularly annoying issue is that the sound captured | ||
111 | from the Ai port sounds distorted (as if boosted with an excessive high volume | ||
112 | gain). | ||
113 | |||
114 | For people having this problem, the snd-usb-audio module has a new module | ||
115 | parameter called "device_setup". | ||
116 | |||
117 | 2.2.2.1 - Initializing the working mode of the Audiohile USB | ||
118 | |||
119 | As far as the Audiohile USB device is concerned, this value let the user | ||
120 | specify: | ||
121 | * the sample depth | ||
122 | * the sample rate | ||
123 | * whether the Di port is used or not | ||
124 | |||
125 | Here is a list of supported device_setup values for this device: | ||
126 | * device_setup=0x00 (or omitted) | ||
127 | - Alsa driver default mode | ||
128 | - maintains backward compatibility with setups that do not use this | ||
129 | parameter by not introducing any change | ||
130 | - results sometimes in corrupted sound as decribed earlier | ||
131 | * device_setup=0x01 | ||
132 | - 16bits 48kHz mode with Di disabled | ||
133 | - Ai,Ao,Do can be used at the same time | ||
134 | - hw:1,0 is not available in capture mode | ||
135 | - hw:1,2 is not available | ||
136 | * device_setup=0x11 | ||
137 | - 16bits 48kHz mode with Di enabled | ||
138 | - Ai,Ao,Di,Do can be used at the same time | ||
139 | - hw:1,0 is available in capture mode | ||
140 | - hw:1,2 is not available | ||
141 | * device_setup=0x09 | ||
142 | - 24bits 48kHz mode with Di disabled | ||
143 | - Ai,Ao,Do can be used at the same time | ||
144 | - hw:1,0 is not available in capture mode | ||
145 | - hw:1,2 is not available | ||
146 | * device_setup=0x19 | ||
147 | - 24bits 48kHz mode with Di enabled | ||
148 | - 3 ports from {Ai,Ao,Di,Do} can be used at the same time | ||
149 | - hw:1,0 is available in capture mode and an active digital source must be | ||
150 | connected to Di | ||
151 | - hw:1,2 is not available | ||
152 | * device_setup=0x0D or 0x10 | ||
153 | - 24bits 96kHz mode | ||
154 | - Di is enabled by default for this mode but does not need to be connected | ||
155 | to an active source | ||
156 | - Only 1 port from {Ai,Ao,Di,Do} can be used at the same time | ||
157 | - hw:1,0 is available in captured mode | ||
158 | - hw:1,2 is not available | ||
159 | * device_setup=0x03 | ||
160 | - 16bits 48kHz mode with only the Do port enabled | ||
161 | - AC3 with DTS passthru (not tested) | ||
162 | - Caution with this setup the Do port is mapped to the pcm device hw:1,0 | ||
163 | |||
164 | 2.2.2.2 - Setting and switching configurations with the device_setup parameter | ||
165 | |||
166 | The parameter can be given: | ||
167 | * By manually probing the device (as root): | ||
168 | # modprobe -r snd-usb-audio | ||
169 | # modprobe snd-usb-audio index=1 device_setup=0x09 | ||
170 | * Or while configuring the modules options in your modules configuration file | ||
171 | - For Fedora distributions, edit the /etc/modprobe.conf file: | ||
172 | alias snd-card-1 snd-usb-audio | ||
173 | options snd-usb-audio index=1 device_setup=0x09 | ||
174 | |||
175 | IMPORTANT NOTE WHEN SWITCHING CONFIGURATION: | ||
176 | ------------------------------------------- | ||
177 | * You may need to _first_ intialize the module with the correct device_setup | ||
178 | parameter and _only_after_ turn on the Audiophile USB device | ||
179 | * This is especially true when switching the sample depth: | ||
180 | - first trun off the device | ||
181 | - de-register the snd-usb-audio module | ||
182 | - change the device_setup parameter (by either manually reprobing the module | ||
183 | or changing modprobe.conf) | ||
184 | - turn on the device | ||
185 | |||
186 | 2.2.2.3 - Audiophile USB's device_setup structure | ||
187 | |||
188 | If you want to understand the device_setup magic numbers for the Audiophile | ||
189 | USB, you need some very basic understanding of binary computation. However, | ||
190 | this is not required to use the parameter and you may skip thi section. | ||
191 | |||
192 | The device_setup is one byte long and its structure is the following: | ||
193 | |||
194 | +---+---+---+---+---+---+---+---+ | ||
195 | | b7| b6| b5| b4| b3| b2| b1| b0| | ||
196 | +---+---+---+---+---+---+---+---+ | ||
197 | | 0 | 0 | 0 | Di|24B|96K|DTS|SET| | ||
198 | +---+---+---+---+---+---+---+---+ | ||
199 | |||
200 | Where: | ||
201 | * b0 is the "SET" bit | ||
202 | - it MUST be set if device_setup is initialized | ||
203 | * b1 is the "DTS" bit | ||
204 | - it is set only for Digital output with DTS/AC3 | ||
205 | - this setup is not tested | ||
206 | * b2 is the Rate selection flag | ||
207 | - When set to "1" the rate range is 48.1-96kHz | ||
208 | - Otherwise the sample rate range is 8-48kHz | ||
209 | * b3 is the bit depth selection flag | ||
210 | - When set to "1" samples are 24bits long | ||
211 | - Otherwise they are 16bits long | ||
212 | - Note that b2 implies b3 as the 96kHz mode is only supported for 24 bits | ||
213 | samples | ||
214 | * b4 is the Digital input flag | ||
215 | - When set to "1" the device assumes that an active digital source is | ||
216 | connected | ||
217 | - You shouldn't enable Di if no source is seen on the port (this leads to | ||
218 | synchronization issues) | ||
219 | - b4 is implied by b2 (since only one port is enabled at a time no synch | ||
220 | error can occur) | ||
221 | * b5 to b7 are reserved for future uses, and must be set to "0" | ||
222 | - might become Ao, Do, Ai, for b7, b6, b4 respectively | ||
223 | |||
224 | Caution: | ||
225 | * there is no check on the value you will give to device_setup | ||
226 | - for instance choosing 0x05 (16bits 96kHz) will fail back to 0x09 since | ||
227 | b2 implies b3. But _there_will_be_no_warning_ in /var/log/messages | ||
228 | * Hardware constraints due to the USB bus limitation aren't checked | ||
229 | - choosing b2 will prepare all interfaces for 24bits/96kHz but you'll | ||
230 | only be able to use one at the same time | ||
231 | |||
232 | 2.2.3 - USB implementation details for this device | ||
233 | |||
234 | You may safely skip this section if you're not interrested in driver | ||
235 | development. | ||
236 | |||
237 | This section describes some internals aspect of the device and summarize the | ||
238 | data I got by usb-snooping the windows and linux drivers. | ||
239 | |||
240 | The M-Audio Audiophile USB has 7 USB Interfaces: | ||
241 | a "USB interface": | ||
242 | * USB Interface nb.0 | ||
243 | * USB Interface nb.1 | ||
244 | - Audio Control function | ||
245 | * USB Interface nb.2 | ||
246 | - Analog Output | ||
247 | * USB Interface nb.3 | ||
248 | - Digital Output | ||
249 | * USB Interface nb.4 | ||
250 | - Analog Input | ||
251 | * USB Interface nb.5 | ||
252 | - Digital Input | ||
253 | * USB Interface nb.6 | ||
254 | - MIDI interface compliant with the MIDIMAN quirk | ||
255 | |||
256 | Each interface has 5 altsettings (AltSet 1,2,3,4,5) except: | ||
257 | * Interface 3 (Digital Out) has an extra Alset nb.6 | ||
258 | * Interface 5 (Digital In) does not have Alset nb.3 and 5 | ||
259 | |||
260 | Here is a short description of the AltSettings capabilities: | ||
261 | * AltSettings 1 corresponds to | ||
262 | - 24-bit depth, 48.1-96kHz sample mode | ||
263 | - Adaptive playback (Ao and Do), Synch capture (Ai), or Asynch capture (Di) | ||
264 | * AltSettings 2 corresponds to | ||
265 | - 24-bit depth, 8-48kHz sample mode | ||
266 | - Asynch capture and playback (Ao,Ai,Do,Di) | ||
267 | * AltSettings 3 corresponds to | ||
268 | - 24-bit depth, 8-48kHz sample mode | ||
269 | - Synch capture (Ai) and Adaptive playback (Ao,Do) | ||
270 | * AltSettings 4 corresponds to | ||
271 | - 16-bit depth, 8-48kHz sample mode | ||
272 | - Asynch capture and playback (Ao,Ai,Do,Di) | ||
273 | * AltSettings 5 corresponds to | ||
274 | - 16-bit depth, 8-48kHz sample mode | ||
275 | - Synch capture (Ai) and Adaptive playback (Ao,Do) | ||
276 | * AltSettings 6 corresponds to | ||
277 | - 16-bit depth, 8-48kHz sample mode | ||
278 | - Synch playback (Do), audio format type III IEC1937_AC-3 | ||
279 | |||
280 | In order to ensure a correct intialization of the device, the driver | ||
281 | _must_know_ how the device will be used: | ||
282 | * if DTS is choosen, only Interface 2 with AltSet nb.6 must be | ||
283 | registered | ||
284 | * if 96KHz only AltSets nb.1 of each interface must be selected | ||
285 | * if samples are using 24bits/48KHz then AltSet 2 must me used if | ||
286 | Digital input is connected, and only AltSet nb.3 if Digital input | ||
287 | is not connected | ||
288 | * if samples are using 16bits/48KHz then AltSet 4 must me used if | ||
289 | Digital input is connected, and only AltSet nb.5 if Digital input | ||
290 | is not connected | ||
291 | |||
292 | When device_setup is given as a parameter to the snd-usb-audio module, the | ||
293 | parse_audio_enpoint function uses a quirk called | ||
294 | "audiophile_skip_setting_quirk" in order to prevent AltSettings not | ||
295 | corresponding to device_setup from being registered in the driver. | ||
296 | |||
297 | 3 - Audiophile USB and Jack support | ||
298 | =================================== | ||
299 | |||
300 | This section deals with support of the Audiophile USB device in Jack. | ||
301 | The main issue regarding this support is that the device is Big Endian | ||
302 | compliant. | ||
303 | |||
304 | 3.1 - Using the plug alsa plugin | ||
305 | -------------------------------- | ||
306 | |||
307 | Jack doesn't directly support big endian devices. Thus, one way to have support | ||
308 | for this device with Alsa is to use the Alsa "plug" converter. | ||
309 | |||
310 | For instance here is one way to run Jack with 2 playback channels on Ao and 2 | ||
311 | capture channels from Ai: | ||
312 | % jackd -R -dalsa -dplughw:1 -r48000 -p256 -n2 -D -Cplughw:1,1 | ||
313 | |||
314 | |||
315 | However you may see the following warning message: | ||
316 | "You appear to be using the ALSA software "plug" layer, probably a result of | ||
317 | using the "default" ALSA device. This is less efficient than it could be. | ||
318 | Consider using a hardware device instead rather than using the plug layer." | ||
319 | |||
320 | |||
321 | 3.2 - Patching alsa to use direct pcm device | ||
322 | ------------------------------------------- | ||
323 | A patch for Jack by Andreas Steinmetz adds support for Big Endian devices. | ||
324 | However it has not been included in the CVS tree. | ||
325 | |||
326 | You can find it at the following URL: | ||
327 | http://sourceforge.net/tracker/index.php?func=detail&aid=1289682&group_id=39687& | ||
328 | atid=425939 | ||
329 | |||
330 | After having applied the patch you can run jackd with the following command | ||
331 | line: | ||
332 | % jackd -R -dalsa -Phw:1,0 -r48000 -p128 -n2 -D -Chw:1,1 | ||
333 | |||
diff --git a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl index 4251085d38d3..6feef9e82b63 100644 --- a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl +++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl | |||
@@ -1834,7 +1834,7 @@ | |||
1834 | mychip_set_sample_format(chip, runtime->format); | 1834 | mychip_set_sample_format(chip, runtime->format); |
1835 | mychip_set_sample_rate(chip, runtime->rate); | 1835 | mychip_set_sample_rate(chip, runtime->rate); |
1836 | mychip_set_channels(chip, runtime->channels); | 1836 | mychip_set_channels(chip, runtime->channels); |
1837 | mychip_set_dma_setup(chip, runtime->dma_area, | 1837 | mychip_set_dma_setup(chip, runtime->dma_addr, |
1838 | chip->buffer_size, | 1838 | chip->buffer_size, |
1839 | chip->period_size); | 1839 | chip->period_size); |
1840 | return 0; | 1840 | return 0; |
@@ -2836,7 +2836,7 @@ struct _snd_pcm_runtime { | |||
2836 | 2836 | ||
2837 | <para> | 2837 | <para> |
2838 | Note that this callback became non-atomic since the recent version. | 2838 | Note that this callback became non-atomic since the recent version. |
2839 | You can use schedule-related fucntions safely in this callback now. | 2839 | You can use schedule-related functions safely in this callback now. |
2840 | </para> | 2840 | </para> |
2841 | 2841 | ||
2842 | <para> | 2842 | <para> |
@@ -3388,7 +3388,7 @@ struct _snd_pcm_runtime { | |||
3388 | .name = "PCM Playback Switch", | 3388 | .name = "PCM Playback Switch", |
3389 | .index = 0, | 3389 | .index = 0, |
3390 | .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, | 3390 | .access = SNDRV_CTL_ELEM_ACCESS_READWRITE, |
3391 | .private_values = 0xffff, | 3391 | .private_value = 0xffff, |
3392 | .info = my_control_info, | 3392 | .info = my_control_info, |
3393 | .get = my_control_get, | 3393 | .get = my_control_get, |
3394 | .put = my_control_put | 3394 | .put = my_control_put |
@@ -3449,7 +3449,7 @@ struct _snd_pcm_runtime { | |||
3449 | </para> | 3449 | </para> |
3450 | 3450 | ||
3451 | <para> | 3451 | <para> |
3452 | The <structfield>private_values</structfield> field contains | 3452 | The <structfield>private_value</structfield> field contains |
3453 | an arbitrary long integer value for this record. When using | 3453 | an arbitrary long integer value for this record. When using |
3454 | generic <structfield>info</structfield>, | 3454 | generic <structfield>info</structfield>, |
3455 | <structfield>get</structfield> and | 3455 | <structfield>get</structfield> and |
diff --git a/Documentation/sound/oss/Introduction b/Documentation/sound/oss/Introduction index 15d4fb975ac0..f04ba6bb7395 100644 --- a/Documentation/sound/oss/Introduction +++ b/Documentation/sound/oss/Introduction | |||
@@ -69,7 +69,7 @@ are available, for example IRQ, address, DMA. | |||
69 | 69 | ||
70 | Warning, the options for different cards sometime use different names | 70 | Warning, the options for different cards sometime use different names |
71 | for the same or a similar feature (dma1= versus dma16=). As a last | 71 | for the same or a similar feature (dma1= versus dma16=). As a last |
72 | resort, inspect the code (search for MODULE_PARM). | 72 | resort, inspect the code (search for module_param). |
73 | 73 | ||
74 | Notes: | 74 | Notes: |
75 | 75 | ||
diff --git a/Documentation/sound/oss/cs46xx b/Documentation/sound/oss/cs46xx index 88d6cf8b39f3..b54432709863 100644 --- a/Documentation/sound/oss/cs46xx +++ b/Documentation/sound/oss/cs46xx | |||
@@ -88,7 +88,7 @@ parameters. for a copy email: twoller@crystal.cirrus.com | |||
88 | 88 | ||
89 | MODULE_PARMS definitions | 89 | MODULE_PARMS definitions |
90 | ------------------------ | 90 | ------------------------ |
91 | MODULE_PARM(defaultorder, "i"); | 91 | module_param(defaultorder, ulong, 0); |
92 | defaultorder=N | 92 | defaultorder=N |
93 | where N is a value from 1 to 12 | 93 | where N is a value from 1 to 12 |
94 | The buffer order determines the size of the dma buffer for the driver. | 94 | The buffer order determines the size of the dma buffer for the driver. |
@@ -98,18 +98,18 @@ to not underrun the dma buffer as easily. As default, use 32k (order=3) | |||
98 | rather than 64k as some of the games work more responsively. | 98 | rather than 64k as some of the games work more responsively. |
99 | (2^N) * PAGE_SIZE = allocated buffer size | 99 | (2^N) * PAGE_SIZE = allocated buffer size |
100 | 100 | ||
101 | MODULE_PARM(cs_debuglevel, "i"); | 101 | module_param(cs_debuglevel, ulong, 0644); |
102 | MODULE_PARM(cs_debugmask, "i"); | 102 | module_param(cs_debugmask, ulong, 0644); |
103 | cs_debuglevel=N | 103 | cs_debuglevel=N |
104 | cs_debugmask=0xMMMMMMMM | 104 | cs_debugmask=0xMMMMMMMM |
105 | where N is a value from 0 (no debug printfs), to 9 (maximum) | 105 | where N is a value from 0 (no debug printfs), to 9 (maximum) |
106 | 0xMMMMMMMM is a debug mask corresponding to the CS_xxx bits (see driver source). | 106 | 0xMMMMMMMM is a debug mask corresponding to the CS_xxx bits (see driver source). |
107 | 107 | ||
108 | MODULE_PARM(hercules_egpio_disable, "i"); | 108 | module_param(hercules_egpio_disable, ulong, 0); |
109 | hercules_egpio_disable=N | 109 | hercules_egpio_disable=N |
110 | where N is a 0 (enable egpio), or a 1 (disable egpio support) | 110 | where N is a 0 (enable egpio), or a 1 (disable egpio support) |
111 | 111 | ||
112 | MODULE_PARM(initdelay, "i"); | 112 | module_param(initdelay, ulong, 0); |
113 | initdelay=N | 113 | initdelay=N |
114 | This value is used to determine the millescond delay during the initialization | 114 | This value is used to determine the millescond delay during the initialization |
115 | code prior to powering up the PLL. On laptops this value can be used to | 115 | code prior to powering up the PLL. On laptops this value can be used to |
@@ -118,19 +118,19 @@ system is booted under battery power then the mdelay()/udelay() functions fail t | |||
118 | properly delay the required time. Also, if the system is booted under AC power | 118 | properly delay the required time. Also, if the system is booted under AC power |
119 | and then the power removed, the mdelay()/udelay() functions will not delay properly. | 119 | and then the power removed, the mdelay()/udelay() functions will not delay properly. |
120 | 120 | ||
121 | MODULE_PARM(powerdown, "i"); | 121 | module_param(powerdown, ulong, 0); |
122 | powerdown=N | 122 | powerdown=N |
123 | where N is 0 (disable any powerdown of the internal blocks) or 1 (enable powerdown) | 123 | where N is 0 (disable any powerdown of the internal blocks) or 1 (enable powerdown) |
124 | 124 | ||
125 | 125 | ||
126 | MODULE_PARM(external_amp, "i"); | 126 | module_param(external_amp, bool, 0); |
127 | external_amp=1 | 127 | external_amp=1 |
128 | if N is set to 1, then force enabling the EAPD support in the primary AC97 codec. | 128 | if N is set to 1, then force enabling the EAPD support in the primary AC97 codec. |
129 | override the detection logic and force the external amp bit in the AC97 0x26 register | 129 | override the detection logic and force the external amp bit in the AC97 0x26 register |
130 | to be reset (0). EAPD should be 0 for powerup, and 1 for powerdown. The VTB Santa Cruz | 130 | to be reset (0). EAPD should be 0 for powerup, and 1 for powerdown. The VTB Santa Cruz |
131 | card has inverted logic, so there is a special function for these cards. | 131 | card has inverted logic, so there is a special function for these cards. |
132 | 132 | ||
133 | MODULE_PARM(thinkpad, "i"); | 133 | module_param(thinkpad, bool, 0); |
134 | thinkpad=1 | 134 | thinkpad=1 |
135 | if N is set to 1, then force enabling the clkrun functionality. | 135 | if N is set to 1, then force enabling the clkrun functionality. |
136 | Currently, when the part is being used, then clkrun is disabled for the entire system, | 136 | Currently, when the part is being used, then clkrun is disabled for the entire system, |
diff --git a/Documentation/spinlocks.txt b/Documentation/spinlocks.txt index c2122996631e..a661d684768e 100644 --- a/Documentation/spinlocks.txt +++ b/Documentation/spinlocks.txt | |||
@@ -9,7 +9,7 @@ removed soon. So for any new code dynamic initialization should be used: | |||
9 | static int __init xxx_init(void) | 9 | static int __init xxx_init(void) |
10 | { | 10 | { |
11 | spin_lock_init(&xxx_lock); | 11 | spin_lock_init(&xxx_lock); |
12 | rw_lock_init(&xxx_rw_lock); | 12 | rwlock_init(&xxx_rw_lock); |
13 | ... | 13 | ... |
14 | } | 14 | } |
15 | 15 | ||
diff --git a/Documentation/usb/et61x251.txt b/Documentation/usb/et61x251.txt index b44dda407ce2..29340282ab5f 100644 --- a/Documentation/usb/et61x251.txt +++ b/Documentation/usb/et61x251.txt | |||
@@ -176,6 +176,14 @@ Description: Force the application to unmap previously mapped buffer memory | |||
176 | 1 = force memory unmapping (save memory) | 176 | 1 = force memory unmapping (save memory) |
177 | Default: 0 | 177 | Default: 0 |
178 | ------------------------------------------------------------------------------- | 178 | ------------------------------------------------------------------------------- |
179 | Name: frame_timeout | ||
180 | Type: uint array (min = 0, max = 64) | ||
181 | Syntax: <n[,...]> | ||
182 | Description: Timeout for a video frame in seconds. This parameter is | ||
183 | specific for each detected camera. This parameter can be | ||
184 | changed at runtime thanks to the /sys filesystem interface. | ||
185 | Default: 2 | ||
186 | ------------------------------------------------------------------------------- | ||
179 | Name: debug | 187 | Name: debug |
180 | Type: ushort | 188 | Type: ushort |
181 | Syntax: <n> | 189 | Syntax: <n> |
@@ -266,7 +274,7 @@ the V4L2 interface. | |||
266 | 274 | ||
267 | 275 | ||
268 | 10. Notes for V4L2 application developers | 276 | 10. Notes for V4L2 application developers |
269 | ======================================== | 277 | ========================================= |
270 | This driver follows the V4L2 API specifications. In particular, it enforces two | 278 | This driver follows the V4L2 API specifications. In particular, it enforces two |
271 | rules: | 279 | rules: |
272 | 280 | ||
diff --git a/Documentation/usb/sn9c102.txt b/Documentation/usb/sn9c102.txt index c6b76414172c..b957beae5607 100644 --- a/Documentation/usb/sn9c102.txt +++ b/Documentation/usb/sn9c102.txt | |||
@@ -196,6 +196,14 @@ Description: Force the application to unmap previously mapped buffer memory | |||
196 | 1 = force memory unmapping (save memory) | 196 | 1 = force memory unmapping (save memory) |
197 | Default: 0 | 197 | Default: 0 |
198 | ------------------------------------------------------------------------------- | 198 | ------------------------------------------------------------------------------- |
199 | Name: frame_timeout | ||
200 | Type: uint array (min = 0, max = 64) | ||
201 | Syntax: <n[,...]> | ||
202 | Description: Timeout for a video frame in seconds. This parameter is | ||
203 | specific for each detected camera. This parameter can be | ||
204 | changed at runtime thanks to the /sys filesystem interface. | ||
205 | Default: 2 | ||
206 | ------------------------------------------------------------------------------- | ||
199 | Name: debug | 207 | Name: debug |
200 | Type: ushort | 208 | Type: ushort |
201 | Syntax: <n> | 209 | Syntax: <n> |
@@ -321,6 +329,7 @@ Vendor ID Product ID | |||
321 | --------- ---------- | 329 | --------- ---------- |
322 | 0x0c45 0x6001 | 330 | 0x0c45 0x6001 |
323 | 0x0c45 0x6005 | 331 | 0x0c45 0x6005 |
332 | 0x0c45 0x6007 | ||
324 | 0x0c45 0x6009 | 333 | 0x0c45 0x6009 |
325 | 0x0c45 0x600d | 334 | 0x0c45 0x600d |
326 | 0x0c45 0x6024 | 335 | 0x0c45 0x6024 |
@@ -370,6 +379,7 @@ HV7131D Hynix Semiconductor, Inc. | |||
370 | MI-0343 Micron Technology, Inc. | 379 | MI-0343 Micron Technology, Inc. |
371 | OV7630 OmniVision Technologies, Inc. | 380 | OV7630 OmniVision Technologies, Inc. |
372 | PAS106B PixArt Imaging, Inc. | 381 | PAS106B PixArt Imaging, Inc. |
382 | PAS202BCA PixArt Imaging, Inc. | ||
373 | PAS202BCB PixArt Imaging, Inc. | 383 | PAS202BCB PixArt Imaging, Inc. |
374 | TAS5110C1B Taiwan Advanced Sensor Corporation | 384 | TAS5110C1B Taiwan Advanced Sensor Corporation |
375 | TAS5130D1B Taiwan Advanced Sensor Corporation | 385 | TAS5130D1B Taiwan Advanced Sensor Corporation |
@@ -493,6 +503,7 @@ Many thanks to following persons for their contribute (listed in alphabetical | |||
493 | order): | 503 | order): |
494 | 504 | ||
495 | - Luca Capello for the donation of a webcam; | 505 | - Luca Capello for the donation of a webcam; |
506 | - Philippe Coval for having helped testing the PAS202BCA image sensor; | ||
496 | - Joao Rodrigo Fuzaro, Joao Limirio, Claudio Filho and Caio Begotti for the | 507 | - Joao Rodrigo Fuzaro, Joao Limirio, Claudio Filho and Caio Begotti for the |
497 | donation of a webcam; | 508 | donation of a webcam; |
498 | - Jon Hollstrom for the donation of a webcam; | 509 | - Jon Hollstrom for the donation of a webcam; |
diff --git a/Documentation/usb/zc0301.txt b/Documentation/usb/zc0301.txt new file mode 100644 index 000000000000..f55262c6733b --- /dev/null +++ b/Documentation/usb/zc0301.txt | |||
@@ -0,0 +1,254 @@ | |||
1 | |||
2 | ZC0301 Image Processor and Control Chip | ||
3 | Driver for Linux | ||
4 | ======================================= | ||
5 | |||
6 | - Documentation - | ||
7 | |||
8 | |||
9 | Index | ||
10 | ===== | ||
11 | 1. Copyright | ||
12 | 2. Disclaimer | ||
13 | 3. License | ||
14 | 4. Overview and features | ||
15 | 5. Module dependencies | ||
16 | 6. Module loading | ||
17 | 7. Module parameters | ||
18 | 8. Supported devices | ||
19 | 9. Notes for V4L2 application developers | ||
20 | 10. Contact information | ||
21 | 11. Credits | ||
22 | |||
23 | |||
24 | 1. Copyright | ||
25 | ============ | ||
26 | Copyright (C) 2006 by Luca Risolia <luca.risolia@studio.unibo.it> | ||
27 | |||
28 | |||
29 | 2. Disclaimer | ||
30 | ============= | ||
31 | This software is not developed or sponsored by Z-Star Microelectronics Corp. | ||
32 | Trademarks are property of their respective owner. | ||
33 | |||
34 | |||
35 | 3. License | ||
36 | ========== | ||
37 | This program is free software; you can redistribute it and/or modify | ||
38 | it under the terms of the GNU General Public License as published by | ||
39 | the Free Software Foundation; either version 2 of the License, or | ||
40 | (at your option) any later version. | ||
41 | |||
42 | This program is distributed in the hope that it will be useful, | ||
43 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
44 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
45 | GNU General Public License for more details. | ||
46 | |||
47 | You should have received a copy of the GNU General Public License | ||
48 | along with this program; if not, write to the Free Software | ||
49 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
50 | |||
51 | |||
52 | 4. Overview and features | ||
53 | ======================== | ||
54 | This driver supports the video interface of the devices mounting the ZC0301 | ||
55 | Image Processor and Control Chip. | ||
56 | |||
57 | The driver relies on the Video4Linux2 and USB core modules. It has been | ||
58 | designed to run properly on SMP systems as well. | ||
59 | |||
60 | The latest version of the ZC0301 driver can be found at the following URL: | ||
61 | http://www.linux-projects.org/ | ||
62 | |||
63 | Some of the features of the driver are: | ||
64 | |||
65 | - full compliance with the Video4Linux2 API (see also "Notes for V4L2 | ||
66 | application developers" paragraph); | ||
67 | - available mmap or read/poll methods for video streaming through isochronous | ||
68 | data transfers; | ||
69 | - automatic detection of image sensor; | ||
70 | - video format is standard JPEG; | ||
71 | - dynamic driver control thanks to various module parameters (see "Module | ||
72 | parameters" paragraph); | ||
73 | - up to 64 cameras can be handled at the same time; they can be connected and | ||
74 | disconnected from the host many times without turning off the computer, if | ||
75 | the system supports hotplugging; | ||
76 | |||
77 | |||
78 | 5. Module dependencies | ||
79 | ====================== | ||
80 | For it to work properly, the driver needs kernel support for Video4Linux and | ||
81 | USB. | ||
82 | |||
83 | The following options of the kernel configuration file must be enabled and | ||
84 | corresponding modules must be compiled: | ||
85 | |||
86 | # Multimedia devices | ||
87 | # | ||
88 | CONFIG_VIDEO_DEV=m | ||
89 | |||
90 | # USB support | ||
91 | # | ||
92 | CONFIG_USB=m | ||
93 | |||
94 | In addition, depending on the hardware being used, the modules below are | ||
95 | necessary: | ||
96 | |||
97 | # USB Host Controller Drivers | ||
98 | # | ||
99 | CONFIG_USB_EHCI_HCD=m | ||
100 | CONFIG_USB_UHCI_HCD=m | ||
101 | CONFIG_USB_OHCI_HCD=m | ||
102 | |||
103 | The ZC0301 controller also provides a built-in microphone interface. It is | ||
104 | supported by the USB Audio driver thanks to the ALSA API: | ||
105 | |||
106 | # Sound | ||
107 | # | ||
108 | CONFIG_SOUND=y | ||
109 | |||
110 | # Advanced Linux Sound Architecture | ||
111 | # | ||
112 | CONFIG_SND=m | ||
113 | |||
114 | # USB devices | ||
115 | # | ||
116 | CONFIG_SND_USB_AUDIO=m | ||
117 | |||
118 | And finally: | ||
119 | |||
120 | # USB Multimedia devices | ||
121 | # | ||
122 | CONFIG_USB_ZC0301=m | ||
123 | |||
124 | |||
125 | 6. Module loading | ||
126 | ================= | ||
127 | To use the driver, it is necessary to load the "zc0301" module into memory | ||
128 | after every other module required: "videodev", "usbcore" and, depending on | ||
129 | the USB host controller you have, "ehci-hcd", "uhci-hcd" or "ohci-hcd". | ||
130 | |||
131 | Loading can be done as shown below: | ||
132 | |||
133 | [root@localhost home]# modprobe zc0301 | ||
134 | |||
135 | At this point the devices should be recognized. You can invoke "dmesg" to | ||
136 | analyze kernel messages and verify that the loading process has gone well: | ||
137 | |||
138 | [user@localhost home]$ dmesg | ||
139 | |||
140 | |||
141 | 7. Module parameters | ||
142 | ==================== | ||
143 | Module parameters are listed below: | ||
144 | ------------------------------------------------------------------------------- | ||
145 | Name: video_nr | ||
146 | Type: short array (min = 0, max = 64) | ||
147 | Syntax: <-1|n[,...]> | ||
148 | Description: Specify V4L2 minor mode number: | ||
149 | -1 = use next available | ||
150 | n = use minor number n | ||
151 | You can specify up to 64 cameras this way. | ||
152 | For example: | ||
153 | video_nr=-1,2,-1 would assign minor number 2 to the second | ||
154 | registered camera and use auto for the first one and for every | ||
155 | other camera. | ||
156 | Default: -1 | ||
157 | ------------------------------------------------------------------------------- | ||
158 | Name: force_munmap | ||
159 | Type: bool array (min = 0, max = 64) | ||
160 | Syntax: <0|1[,...]> | ||
161 | Description: Force the application to unmap previously mapped buffer memory | ||
162 | before calling any VIDIOC_S_CROP or VIDIOC_S_FMT ioctl's. Not | ||
163 | all the applications support this feature. This parameter is | ||
164 | specific for each detected camera. | ||
165 | 0 = do not force memory unmapping | ||
166 | 1 = force memory unmapping (save memory) | ||
167 | Default: 0 | ||
168 | ------------------------------------------------------------------------------- | ||
169 | Name: frame_timeout | ||
170 | Type: uint array (min = 0, max = 64) | ||
171 | Syntax: <n[,...]> | ||
172 | Description: Timeout for a video frame in seconds. This parameter is | ||
173 | specific for each detected camera. This parameter can be | ||
174 | changed at runtime thanks to the /sys filesystem interface. | ||
175 | Default: 2 | ||
176 | ------------------------------------------------------------------------------- | ||
177 | Name: debug | ||
178 | Type: ushort | ||
179 | Syntax: <n> | ||
180 | Description: Debugging information level, from 0 to 3: | ||
181 | 0 = none (use carefully) | ||
182 | 1 = critical errors | ||
183 | 2 = significant informations | ||
184 | 3 = more verbose messages | ||
185 | Level 3 is useful for testing only, when only one device | ||
186 | is used at the same time. It also shows some more informations | ||
187 | about the hardware being detected. This module parameter can be | ||
188 | changed at runtime thanks to the /sys filesystem interface. | ||
189 | Default: 2 | ||
190 | ------------------------------------------------------------------------------- | ||
191 | |||
192 | |||
193 | 8. Supported devices | ||
194 | ==================== | ||
195 | None of the names of the companies as well as their products will be mentioned | ||
196 | here. They have never collaborated with the author, so no advertising. | ||
197 | |||
198 | From the point of view of a driver, what unambiguously identify a device are | ||
199 | its vendor and product USB identifiers. Below is a list of known identifiers of | ||
200 | devices mounting the ZC0301 Image Processor and Control Chips: | ||
201 | |||
202 | Vendor ID Product ID | ||
203 | --------- ---------- | ||
204 | 0x041e 0x4017 | ||
205 | 0x041e 0x401c | ||
206 | 0x041e 0x401e | ||
207 | 0x041e 0x4034 | ||
208 | 0x041e 0x4035 | ||
209 | 0x046d 0x08ae | ||
210 | 0x0ac8 0x0301 | ||
211 | 0x10fd 0x8050 | ||
212 | |||
213 | The list above does not imply that all those devices work with this driver: up | ||
214 | until now only the ones that mount the following image sensors are supported; | ||
215 | kernel messages will always tell you whether this is the case: | ||
216 | |||
217 | Model Manufacturer | ||
218 | ----- ------------ | ||
219 | PAS202BCB PixArt Imaging, Inc. | ||
220 | |||
221 | |||
222 | 9. Notes for V4L2 application developers | ||
223 | ======================================== | ||
224 | This driver follows the V4L2 API specifications. In particular, it enforces two | ||
225 | rules: | ||
226 | |||
227 | - exactly one I/O method, either "mmap" or "read", is associated with each | ||
228 | file descriptor. Once it is selected, the application must close and reopen the | ||
229 | device to switch to the other I/O method; | ||
230 | |||
231 | - although it is not mandatory, previously mapped buffer memory should always | ||
232 | be unmapped before calling any "VIDIOC_S_CROP" or "VIDIOC_S_FMT" ioctl's. | ||
233 | The same number of buffers as before will be allocated again to match the size | ||
234 | of the new video frames, so you have to map the buffers again before any I/O | ||
235 | attempts on them. | ||
236 | |||
237 | |||
238 | 10. Contact information | ||
239 | ======================= | ||
240 | The author may be contacted by e-mail at <luca.risolia@studio.unibo.it>. | ||
241 | |||
242 | GPG/PGP encrypted e-mail's are accepted. The GPG key ID of the author is | ||
243 | 'FCE635A4'; the public 1024-bit key should be available at any keyserver; | ||
244 | the fingerprint is: '88E8 F32F 7244 68BA 3958 5D40 99DA 5D2A FCE6 35A4'. | ||
245 | |||
246 | |||
247 | 11. Credits | ||
248 | =========== | ||
249 | - Informations about the chip internals needed to enable the I2C protocol have | ||
250 | been taken from the documentation of the ZC030x Video4Linux1 driver written | ||
251 | by Andrew Birkett <andy@nobugs.org>; | ||
252 | - The initialization values of the ZC0301 controller connected to the PAS202BCB | ||
253 | image sensor have been taken from the SPCA5XX driver maintained by | ||
254 | Michel Xhaard <mxhaard@magic.fr>. | ||
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88 index 8bea3fbd0548..3b39a91b24bd 100644 --- a/Documentation/video4linux/CARDLIST.cx88 +++ b/Documentation/video4linux/CARDLIST.cx88 | |||
@@ -43,3 +43,5 @@ | |||
43 | 42 -> digitalnow DNTV Live! DVB-T Pro [1822:0025] | 43 | 42 -> digitalnow DNTV Live! DVB-T Pro [1822:0025] |
44 | 43 -> KWorld/VStream XPert DVB-T with cx22702 [17de:08a1] | 44 | 43 -> KWorld/VStream XPert DVB-T with cx22702 [17de:08a1] |
45 | 44 -> DViCO FusionHDTV DVB-T Dual Digital [18ac:db50,18ac:db54] | 45 | 44 -> DViCO FusionHDTV DVB-T Dual Digital [18ac:db50,18ac:db54] |
46 | 45 -> KWorld HardwareMpegTV XPert [17de:0840] | ||
47 | 46 -> DViCO FusionHDTV DVB-T Hybrid [18ac:db40,18ac:db44] | ||
diff --git a/Documentation/video4linux/CARDLIST.em28xx b/Documentation/video4linux/CARDLIST.em28xx index a0c7cad20971..a3026689bbe6 100644 --- a/Documentation/video4linux/CARDLIST.em28xx +++ b/Documentation/video4linux/CARDLIST.em28xx | |||
@@ -8,3 +8,4 @@ | |||
8 | 7 -> Leadtek Winfast USB II (em2800) | 8 | 7 -> Leadtek Winfast USB II (em2800) |
9 | 8 -> Kworld USB2800 (em2800) | 9 | 8 -> Kworld USB2800 (em2800) |
10 | 9 -> Pinnacle Dazzle DVC 90 (em2820/em2840) [2304:0207] | 10 | 9 -> Pinnacle Dazzle DVC 90 (em2820/em2840) [2304:0207] |
11 | 12 -> Kworld PVR TV 2800 RF (em2820/em2840) | ||
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134 index da4fb890165f..8c7195455963 100644 --- a/Documentation/video4linux/CARDLIST.saa7134 +++ b/Documentation/video4linux/CARDLIST.saa7134 | |||
@@ -83,3 +83,12 @@ | |||
83 | 82 -> MSI TV@Anywhere plus [1462:6231] | 83 | 82 -> MSI TV@Anywhere plus [1462:6231] |
84 | 83 -> Terratec Cinergy 250 PCI TV [153b:1160] | 84 | 83 -> Terratec Cinergy 250 PCI TV [153b:1160] |
85 | 84 -> LifeView FlyDVB Trio [5168:0319] | 85 | 84 -> LifeView FlyDVB Trio [5168:0319] |
86 | 85 -> AverTV DVB-T 777 [1461:2c05] | ||
87 | 86 -> LifeView FlyDVB-T [5168:0301] | ||
88 | 87 -> ADS Instant TV Duo Cardbus PTV331 [0331:1421] | ||
89 | 88 -> Tevion/KWorld DVB-T 220RF [17de:7201] | ||
90 | 89 -> ELSA EX-VISION 700TV [1048:226c] | ||
91 | 90 -> Kworld ATSC110 [17de:7350] | ||
92 | 91 -> AVerMedia A169 B [1461:7360] | ||
93 | 92 -> AVerMedia A169 B1 [1461:6360] | ||
94 | 93 -> Medion 7134 Bridge #2 [16be:0005] | ||
diff --git a/Documentation/video4linux/CARDLIST.tuner b/Documentation/video4linux/CARDLIST.tuner index f6d0cf7b7922..1bcdac67dd8c 100644 --- a/Documentation/video4linux/CARDLIST.tuner +++ b/Documentation/video4linux/CARDLIST.tuner | |||
@@ -64,8 +64,10 @@ tuner=62 - Philips TEA5767HN FM Radio | |||
64 | tuner=63 - Philips FMD1216ME MK3 Hybrid Tuner | 64 | tuner=63 - Philips FMD1216ME MK3 Hybrid Tuner |
65 | tuner=64 - LG TDVS-H062F/TUA6034 | 65 | tuner=64 - LG TDVS-H062F/TUA6034 |
66 | tuner=65 - Ymec TVF66T5-B/DFF | 66 | tuner=65 - Ymec TVF66T5-B/DFF |
67 | tuner=66 - LG NTSC (TALN mini series) | 67 | tuner=66 - LG TALN series |
68 | tuner=67 - Philips TD1316 Hybrid Tuner | 68 | tuner=67 - Philips TD1316 Hybrid Tuner |
69 | tuner=68 - Philips TUV1236D ATSC/NTSC dual in | 69 | tuner=68 - Philips TUV1236D ATSC/NTSC dual in |
70 | tuner=69 - Tena TNF 5335 MF | 70 | tuner=69 - Tena TNF 5335 and similar models |
71 | tuner=70 - Samsung TCPN 2121P30A | 71 | tuner=70 - Samsung TCPN 2121P30A |
72 | tuner=71 - Xceive xc3028 | ||
73 | tuner=72 - Thomson FE6600 | ||
diff --git a/Documentation/video4linux/CQcam.txt b/Documentation/video4linux/CQcam.txt index e415e3604539..464e4cec94cb 100644 --- a/Documentation/video4linux/CQcam.txt +++ b/Documentation/video4linux/CQcam.txt | |||
@@ -1,7 +1,7 @@ | |||
1 | c-qcam - Connectix Color QuickCam video4linux kernel driver | 1 | c-qcam - Connectix Color QuickCam video4linux kernel driver |
2 | 2 | ||
3 | Copyright (C) 1999 Dave Forrest <drf5n@virginia.edu> | 3 | Copyright (C) 1999 Dave Forrest <drf5n@virginia.edu> |
4 | released under GNU GPL. | 4 | released under GNU GPL. |
5 | 5 | ||
6 | 1999-12-08 Dave Forrest, written with kernel version 2.2.12 in mind | 6 | 1999-12-08 Dave Forrest, written with kernel version 2.2.12 in mind |
7 | 7 | ||
@@ -45,21 +45,21 @@ configuration. The appropriate flags are: | |||
45 | CONFIG_PNP_PARPORT M for autoprobe.o IEEE1284 readback module | 45 | CONFIG_PNP_PARPORT M for autoprobe.o IEEE1284 readback module |
46 | CONFIG_PRINTER_READBACK M for parport_probe.o IEEE1284 readback module | 46 | CONFIG_PRINTER_READBACK M for parport_probe.o IEEE1284 readback module |
47 | CONFIG_VIDEO_DEV M for videodev.o video4linux module | 47 | CONFIG_VIDEO_DEV M for videodev.o video4linux module |
48 | CONFIG_VIDEO_CQCAM M for c-qcam.o Color Quickcam module | 48 | CONFIG_VIDEO_CQCAM M for c-qcam.o Color Quickcam module |
49 | 49 | ||
50 | With these flags, the kernel should compile and install the modules. | 50 | With these flags, the kernel should compile and install the modules. |
51 | To record and monitor the compilation, I use: | 51 | To record and monitor the compilation, I use: |
52 | 52 | ||
53 | (make zlilo ; \ | 53 | (make zlilo ; \ |
54 | make modules; \ | 54 | make modules; \ |
55 | make modules_install ; | 55 | make modules_install ; |
56 | depmod -a ) &>log & | 56 | depmod -a ) &>log & |
57 | less log # then a capital 'F' to watch the progress | 57 | less log # then a capital 'F' to watch the progress |
58 | 58 | ||
59 | But that is my personal preference. | 59 | But that is my personal preference. |
60 | 60 | ||
61 | 2.2 Configuration | 61 | 2.2 Configuration |
62 | 62 | ||
63 | The configuration requires module configuration and device | 63 | The configuration requires module configuration and device |
64 | configuration. I like kmod or kerneld process with the | 64 | configuration. I like kmod or kerneld process with the |
65 | /etc/modprobe.conf file so the modules can automatically load/unload as | 65 | /etc/modprobe.conf file so the modules can automatically load/unload as |
@@ -68,7 +68,7 @@ using MAKEDEV, or need to be created. The following sections detail | |||
68 | these procedures. | 68 | these procedures. |
69 | 69 | ||
70 | 70 | ||
71 | 2.1 Module Configuration | 71 | 2.1 Module Configuration |
72 | 72 | ||
73 | Using modules requires a bit of work to install and pass the | 73 | Using modules requires a bit of work to install and pass the |
74 | parameters. Understand that entries in /etc/modprobe.conf of: | 74 | parameters. Understand that entries in /etc/modprobe.conf of: |
@@ -128,9 +128,9 @@ system (CONFIG_PROC_FS), the parallel printer support | |||
128 | (CONFIG_PRINTER), the IEEE 1284 system,(CONFIG_PRINTER_READBACK), you | 128 | (CONFIG_PRINTER), the IEEE 1284 system,(CONFIG_PRINTER_READBACK), you |
129 | should be able to read some identification from your quickcam with | 129 | should be able to read some identification from your quickcam with |
130 | 130 | ||
131 | modprobe -v parport | 131 | modprobe -v parport |
132 | modprobe -v parport_probe | 132 | modprobe -v parport_probe |
133 | cat /proc/parport/PORTNUMBER/autoprobe | 133 | cat /proc/parport/PORTNUMBER/autoprobe |
134 | Returns: | 134 | Returns: |
135 | CLASS:MEDIA; | 135 | CLASS:MEDIA; |
136 | MODEL:Color QuickCam 2.0; | 136 | MODEL:Color QuickCam 2.0; |
@@ -140,7 +140,7 @@ Returns: | |||
140 | and well. A common problem is that the current driver does not | 140 | and well. A common problem is that the current driver does not |
141 | reliably detect a c-qcam, even though one is attached. In this case, | 141 | reliably detect a c-qcam, even though one is attached. In this case, |
142 | 142 | ||
143 | modprobe -v c-qcam | 143 | modprobe -v c-qcam |
144 | or | 144 | or |
145 | insmod -v c-qcam | 145 | insmod -v c-qcam |
146 | 146 | ||
@@ -152,16 +152,16 @@ video4linux mailing list and archive for more current information. | |||
152 | 3.1 Checklist: | 152 | 3.1 Checklist: |
153 | 153 | ||
154 | Can you get an image? | 154 | Can you get an image? |
155 | v4lgrab >qcam.ppm ; wc qcam.ppm ; xv qcam.ppm | 155 | v4lgrab >qcam.ppm ; wc qcam.ppm ; xv qcam.ppm |
156 | 156 | ||
157 | Is a working c-qcam connected to the port? | 157 | Is a working c-qcam connected to the port? |
158 | grep ^ /proc/parport/?/autoprobe | 158 | grep ^ /proc/parport/?/autoprobe |
159 | 159 | ||
160 | Do the /dev/video* files exist? | 160 | Do the /dev/video* files exist? |
161 | ls -lad /dev/video | 161 | ls -lad /dev/video |
162 | 162 | ||
163 | Is the c-qcam module loaded? | 163 | Is the c-qcam module loaded? |
164 | modprobe -v c-qcam ; lsmod | 164 | modprobe -v c-qcam ; lsmod |
165 | 165 | ||
166 | Does the camera work with alternate programs? cqcam, etc? | 166 | Does the camera work with alternate programs? cqcam, etc? |
167 | 167 | ||
@@ -174,7 +174,7 @@ video4linux mailing list and archive for more current information. | |||
174 | isn't, you might try patching the c-qcam module to add a parport=xxx | 174 | isn't, you might try patching the c-qcam module to add a parport=xxx |
175 | option as in the bw-qcam module so you can specify the parallel port: | 175 | option as in the bw-qcam module so you can specify the parallel port: |
176 | 176 | ||
177 | insmod -v c-qcam parport=0 | 177 | insmod -v c-qcam parport=0 |
178 | 178 | ||
179 | And bypass the detection code, see ../../drivers/char/c-qcam.c and | 179 | And bypass the detection code, see ../../drivers/char/c-qcam.c and |
180 | look for the 'qc_detect' code and call. | 180 | look for the 'qc_detect' code and call. |
@@ -183,12 +183,12 @@ look for the 'qc_detect' code and call. | |||
183 | this work is documented at the video4linux2 site listed below. | 183 | this work is documented at the video4linux2 site listed below. |
184 | 184 | ||
185 | 185 | ||
186 | 9.0 --- A sample program using v4lgrabber, | 186 | 9.0 --- A sample program using v4lgrabber, |
187 | 187 | ||
188 | This program is a simple image grabber that will copy a frame from the | 188 | This program is a simple image grabber that will copy a frame from the |
189 | first video device, /dev/video0 to standard output in portable pixmap | 189 | first video device, /dev/video0 to standard output in portable pixmap |
190 | format (.ppm) Using this like: 'v4lgrab | convert - c-qcam.jpg' | 190 | format (.ppm) Using this like: 'v4lgrab | convert - c-qcam.jpg' |
191 | produced this picture of me at | 191 | produced this picture of me at |
192 | http://mug.sys.virginia.edu/~drf5n/extras/c-qcam.jpg | 192 | http://mug.sys.virginia.edu/~drf5n/extras/c-qcam.jpg |
193 | 193 | ||
194 | -------------------- 8< ---------------- 8< ----------------------------- | 194 | -------------------- 8< ---------------- 8< ----------------------------- |
@@ -202,8 +202,8 @@ produced this picture of me at | |||
202 | * Use as: | 202 | * Use as: |
203 | * v4lgrab >image.ppm | 203 | * v4lgrab >image.ppm |
204 | * | 204 | * |
205 | * Copyright (C) 1998-05-03, Phil Blundell <philb@gnu.org> | 205 | * Copyright (C) 1998-05-03, Phil Blundell <philb@gnu.org> |
206 | * Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c | 206 | * Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c |
207 | * with minor modifications (Dave Forrest, drf5n@virginia.edu). | 207 | * with minor modifications (Dave Forrest, drf5n@virginia.edu). |
208 | * | 208 | * |
209 | */ | 209 | */ |
@@ -225,55 +225,55 @@ produced this picture of me at | |||
225 | 225 | ||
226 | #define READ_VIDEO_PIXEL(buf, format, depth, r, g, b) \ | 226 | #define READ_VIDEO_PIXEL(buf, format, depth, r, g, b) \ |
227 | { \ | 227 | { \ |
228 | switch (format) \ | 228 | switch (format) \ |
229 | { \ | 229 | { \ |
230 | case VIDEO_PALETTE_GREY: \ | 230 | case VIDEO_PALETTE_GREY: \ |
231 | switch (depth) \ | 231 | switch (depth) \ |
232 | { \ | 232 | { \ |
233 | case 4: \ | 233 | case 4: \ |
234 | case 6: \ | 234 | case 6: \ |
235 | case 8: \ | 235 | case 8: \ |
236 | (r) = (g) = (b) = (*buf++ << 8);\ | 236 | (r) = (g) = (b) = (*buf++ << 8);\ |
237 | break; \ | 237 | break; \ |
238 | \ | 238 | \ |
239 | case 16: \ | 239 | case 16: \ |
240 | (r) = (g) = (b) = \ | 240 | (r) = (g) = (b) = \ |
241 | *((unsigned short *) buf); \ | 241 | *((unsigned short *) buf); \ |
242 | buf += 2; \ | 242 | buf += 2; \ |
243 | break; \ | 243 | break; \ |
244 | } \ | 244 | } \ |
245 | break; \ | 245 | break; \ |
246 | \ | 246 | \ |
247 | \ | 247 | \ |
248 | case VIDEO_PALETTE_RGB565: \ | 248 | case VIDEO_PALETTE_RGB565: \ |
249 | { \ | 249 | { \ |
250 | unsigned short tmp = *(unsigned short *)buf; \ | 250 | unsigned short tmp = *(unsigned short *)buf; \ |
251 | (r) = tmp&0xF800; \ | 251 | (r) = tmp&0xF800; \ |
252 | (g) = (tmp<<5)&0xFC00; \ | 252 | (g) = (tmp<<5)&0xFC00; \ |
253 | (b) = (tmp<<11)&0xF800; \ | 253 | (b) = (tmp<<11)&0xF800; \ |
254 | buf += 2; \ | 254 | buf += 2; \ |
255 | } \ | 255 | } \ |
256 | break; \ | 256 | break; \ |
257 | \ | 257 | \ |
258 | case VIDEO_PALETTE_RGB555: \ | 258 | case VIDEO_PALETTE_RGB555: \ |
259 | (r) = (buf[0]&0xF8)<<8; \ | 259 | (r) = (buf[0]&0xF8)<<8; \ |
260 | (g) = ((buf[0] << 5 | buf[1] >> 3)&0xF8)<<8; \ | 260 | (g) = ((buf[0] << 5 | buf[1] >> 3)&0xF8)<<8; \ |
261 | (b) = ((buf[1] << 2 ) & 0xF8)<<8; \ | 261 | (b) = ((buf[1] << 2 ) & 0xF8)<<8; \ |
262 | buf += 2; \ | 262 | buf += 2; \ |
263 | break; \ | 263 | break; \ |
264 | \ | 264 | \ |
265 | case VIDEO_PALETTE_RGB24: \ | 265 | case VIDEO_PALETTE_RGB24: \ |
266 | (r) = buf[0] << 8; (g) = buf[1] << 8; \ | 266 | (r) = buf[0] << 8; (g) = buf[1] << 8; \ |
267 | (b) = buf[2] << 8; \ | 267 | (b) = buf[2] << 8; \ |
268 | buf += 3; \ | 268 | buf += 3; \ |
269 | break; \ | 269 | break; \ |
270 | \ | 270 | \ |
271 | default: \ | 271 | default: \ |
272 | fprintf(stderr, \ | 272 | fprintf(stderr, \ |
273 | "Format %d not yet supported\n", \ | 273 | "Format %d not yet supported\n", \ |
274 | format); \ | 274 | format); \ |
275 | } \ | 275 | } \ |
276 | } | 276 | } |
277 | 277 | ||
278 | int get_brightness_adj(unsigned char *image, long size, int *brightness) { | 278 | int get_brightness_adj(unsigned char *image, long size, int *brightness) { |
279 | long i, tot = 0; | 279 | long i, tot = 0; |
@@ -324,40 +324,40 @@ int main(int argc, char ** argv) | |||
324 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | 324 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { |
325 | vpic.depth=6; | 325 | vpic.depth=6; |
326 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | 326 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { |
327 | vpic.depth=4; | 327 | vpic.depth=4; |
328 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | 328 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { |
329 | fprintf(stderr, "Unable to find a supported capture format.\n"); | 329 | fprintf(stderr, "Unable to find a supported capture format.\n"); |
330 | close(fd); | 330 | close(fd); |
331 | exit(1); | 331 | exit(1); |
332 | } | 332 | } |
333 | } | 333 | } |
334 | } | 334 | } |
335 | } else { | 335 | } else { |
336 | vpic.depth=24; | 336 | vpic.depth=24; |
337 | vpic.palette=VIDEO_PALETTE_RGB24; | 337 | vpic.palette=VIDEO_PALETTE_RGB24; |
338 | 338 | ||
339 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { | 339 | if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) { |
340 | vpic.palette=VIDEO_PALETTE_RGB565; | 340 | vpic.palette=VIDEO_PALETTE_RGB565; |
341 | vpic.depth=16; | 341 | vpic.depth=16; |
342 | 342 | ||
343 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { | 343 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { |
344 | vpic.palette=VIDEO_PALETTE_RGB555; | 344 | vpic.palette=VIDEO_PALETTE_RGB555; |
345 | vpic.depth=15; | 345 | vpic.depth=15; |
346 | 346 | ||
347 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { | 347 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { |
348 | fprintf(stderr, "Unable to find a supported capture format.\n"); | 348 | fprintf(stderr, "Unable to find a supported capture format.\n"); |
349 | return -1; | 349 | return -1; |
350 | } | 350 | } |
351 | } | 351 | } |
352 | } | 352 | } |
353 | } | 353 | } |
354 | 354 | ||
355 | buffer = malloc(win.width * win.height * bpp); | 355 | buffer = malloc(win.width * win.height * bpp); |
356 | if (!buffer) { | 356 | if (!buffer) { |
357 | fprintf(stderr, "Out of memory.\n"); | 357 | fprintf(stderr, "Out of memory.\n"); |
358 | exit(1); | 358 | exit(1); |
359 | } | 359 | } |
360 | 360 | ||
361 | do { | 361 | do { |
362 | int newbright; | 362 | int newbright; |
363 | read(fd, buffer, win.width * win.height * bpp); | 363 | read(fd, buffer, win.width * win.height * bpp); |
@@ -365,8 +365,8 @@ int main(int argc, char ** argv) | |||
365 | if (f) { | 365 | if (f) { |
366 | vpic.brightness += (newbright << 8); | 366 | vpic.brightness += (newbright << 8); |
367 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { | 367 | if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) { |
368 | perror("VIDIOSPICT"); | 368 | perror("VIDIOSPICT"); |
369 | break; | 369 | break; |
370 | } | 370 | } |
371 | } | 371 | } |
372 | } while (f); | 372 | } while (f); |
@@ -381,7 +381,7 @@ int main(int argc, char ** argv) | |||
381 | fputc(g>>8, stdout); | 381 | fputc(g>>8, stdout); |
382 | fputc(b>>8, stdout); | 382 | fputc(b>>8, stdout); |
383 | } | 383 | } |
384 | 384 | ||
385 | close(fd); | 385 | close(fd); |
386 | return 0; | 386 | return 0; |
387 | } | 387 | } |
diff --git a/Documentation/video4linux/README.cpia b/Documentation/video4linux/README.cpia index c95e7bbc0fdf..19cd3bf24981 100644 --- a/Documentation/video4linux/README.cpia +++ b/Documentation/video4linux/README.cpia | |||
@@ -87,7 +87,7 @@ hardware configuration of the parport. You can give the boot-parameter | |||
87 | at the LILO-prompt or specify it in lilo.conf. I use the following | 87 | at the LILO-prompt or specify it in lilo.conf. I use the following |
88 | append-line in lilo.conf: | 88 | append-line in lilo.conf: |
89 | 89 | ||
90 | append="parport=0x378,7,3" | 90 | append="parport=0x378,7,3" |
91 | 91 | ||
92 | See Documentation/parport.txt for more information about the | 92 | See Documentation/parport.txt for more information about the |
93 | configuration of the parport and the values given above. Do not simply | 93 | configuration of the parport and the values given above. Do not simply |
@@ -175,7 +175,7 @@ THANKS (in no particular order): | |||
175 | - Manuel J. Petit de Gabriel <mpetit@dit.upm.es> for providing help | 175 | - Manuel J. Petit de Gabriel <mpetit@dit.upm.es> for providing help |
176 | with Isabel (http://isabel.dit.upm.es/) | 176 | with Isabel (http://isabel.dit.upm.es/) |
177 | - Bas Huisman <bhuism@cs.utwente.nl> for writing the initial parport code | 177 | - Bas Huisman <bhuism@cs.utwente.nl> for writing the initial parport code |
178 | - Jarl Totland <Jarl.Totland@bdc.no> for setting up the mailing list | 178 | - Jarl Totland <Jarl.Totland@bdc.no> for setting up the mailing list |
179 | and maintaining the web-server[3] | 179 | and maintaining the web-server[3] |
180 | - Chris Whiteford <Chris@informinteractive.com> for fixes related to the | 180 | - Chris Whiteford <Chris@informinteractive.com> for fixes related to the |
181 | 1.02 firmware | 181 | 1.02 firmware |
diff --git a/Documentation/video4linux/README.cpia2 b/Documentation/video4linux/README.cpia2 new file mode 100644 index 000000000000..ce8213d28b67 --- /dev/null +++ b/Documentation/video4linux/README.cpia2 | |||
@@ -0,0 +1,130 @@ | |||
1 | $Id: README,v 1.7 2005/08/29 23:39:57 sbertin Exp $ | ||
2 | |||
3 | 1. Introduction | ||
4 | |||
5 | This is a driver for STMicroelectronics's CPiA2 (second generation | ||
6 | Colour Processor Interface ASIC) based cameras. This camera outputs an MJPEG | ||
7 | stream at up to vga size. It implements the Video4Linux interface as much as | ||
8 | possible. Since the V4L interface does not support compressed formats, only | ||
9 | an mjpeg enabled application can be used with the camera. We have modified the | ||
10 | gqcam application to view this stream. | ||
11 | |||
12 | The driver is implemented as two kernel modules. The cpia2 module | ||
13 | contains the camera functions and the V4L interface. The cpia2_usb module | ||
14 | contains usb specific functions. The main reason for this was the size of the | ||
15 | module was getting out of hand, so I separted them. It is not likely that | ||
16 | there will be a parallel port version. | ||
17 | |||
18 | FEATURES: | ||
19 | - Supports cameras with the Vision stv6410 (CIF) and stv6500 (VGA) cmos | ||
20 | sensors. I only have the vga sensor, so can't test the other. | ||
21 | - Image formats: VGA, QVGA, CIF, QCIF, and a number of sizes in between. | ||
22 | VGA and QVGA are the native image sizes for the VGA camera. CIF is done | ||
23 | in the coprocessor by scaling QVGA. All other sizes are done by clipping. | ||
24 | - Palette: YCrCb, compressed with MJPEG. | ||
25 | - Some compression parameters are settable. | ||
26 | - Sensor framerate is adjustable (up to 30 fps CIF, 15 fps VGA). | ||
27 | - Adjust brightness, color, contrast while streaming. | ||
28 | - Flicker control settable for 50 or 60 Hz mains frequency. | ||
29 | |||
30 | 2. Making and installing the stv672 driver modules: | ||
31 | |||
32 | Requirements: | ||
33 | ------------- | ||
34 | This should work with 2.4 (2.4.23 and later) and 2.6 kernels, but has | ||
35 | only been tested on 2.6. Video4Linux must be either compiled into the kernel or | ||
36 | available as a module. Video4Linux2 is automatically detected and made | ||
37 | available at compile time. | ||
38 | |||
39 | Compiling: | ||
40 | ---------- | ||
41 | As root, do a make install. This will compile and install the modules | ||
42 | into the media/video directory in the module tree. For 2.4 kernels, use | ||
43 | Makefile_2.4 (aka do make -f Makefile_2.4 install). | ||
44 | |||
45 | Setup: | ||
46 | ------ | ||
47 | Use 'modprobe cpia2' to load and 'modprobe -r cpia2' to unload. This | ||
48 | may be done automatically by your distribution. | ||
49 | |||
50 | 3. Driver options | ||
51 | |||
52 | Option Description | ||
53 | ------ ----------- | ||
54 | video_nr video device to register (0=/dev/video0, etc) | ||
55 | range -1 to 64. default is -1 (first available) | ||
56 | If you have more than 1 camera, this MUST be -1. | ||
57 | buffer_size Size for each frame buffer in bytes (default 68k) | ||
58 | num_buffers Number of frame buffers (1-32, default 3) | ||
59 | alternate USB Alternate (2-7, default 7) | ||
60 | flicker_freq Frequency for flicker reduction(50 or 60, default 60) | ||
61 | flicker_mode 0 to disable, or 1 to enable flicker reduction. | ||
62 | (default 0). This is only effective if the camera | ||
63 | uses a stv0672 coprocessor. | ||
64 | |||
65 | Setting the options: | ||
66 | -------------------- | ||
67 | If you are using modules, edit /etc/modules.conf and add an options | ||
68 | line like this: | ||
69 | options cpia2 num_buffers=3 buffer_size=65535 | ||
70 | |||
71 | If the driver is compiled into the kernel, at boot time specify them | ||
72 | like this: | ||
73 | cpia2.num_buffers=3 cpia2.buffer_size=65535 | ||
74 | |||
75 | What buffer size should I use? | ||
76 | ------------------------------ | ||
77 | The maximum image size depends on the alternate you choose, and the | ||
78 | frame rate achieved by the camera. If the compression engine is able to | ||
79 | keep up with the frame rate, the maximum image size is given by the table | ||
80 | below. | ||
81 | The compression engine starts out at maximum compression, and will | ||
82 | increase image quality until it is close to the size in the table. As long | ||
83 | as the compression engine can keep up with the frame rate, after a short time | ||
84 | the images will all be about the size in the table, regardless of resolution. | ||
85 | At low alternate settings, the compression engine may not be able to | ||
86 | compress the image enough and will reduce the frame rate by producing larger | ||
87 | images. | ||
88 | The default of 68k should be good for most users. This will handle | ||
89 | any alternate at frame rates down to 15fps. For lower frame rates, it may | ||
90 | be necessary to increase the buffer size to avoid having frames dropped due | ||
91 | to insufficient space. | ||
92 | |||
93 | Image size(bytes) | ||
94 | Alternate bytes/ms 15fps 30fps | ||
95 | 2 128 8533 4267 | ||
96 | 3 384 25600 12800 | ||
97 | 4 640 42667 21333 | ||
98 | 5 768 51200 25600 | ||
99 | 6 896 59733 29867 | ||
100 | 7 1023 68200 34100 | ||
101 | |||
102 | How many buffers should I use? | ||
103 | ------------------------------ | ||
104 | For normal streaming, 3 should give the best results. With only 2, | ||
105 | it is possible for the camera to finish sending one image just after a | ||
106 | program has started reading the other. If this happens, the driver must drop | ||
107 | a frame. The exception to this is if you have a heavily loaded machine. In | ||
108 | this case use 2 buffers. You are probably not reading at the full frame rate. | ||
109 | If the camera can send multiple images before a read finishes, it could | ||
110 | overwrite the third buffer before the read finishes, leading to a corrupt | ||
111 | image. Single and double buffering have extra checks to avoid overwriting. | ||
112 | |||
113 | 4. Using the camera | ||
114 | |||
115 | We are providing a modified gqcam application to view the output. In | ||
116 | order to avoid confusion, here it is called mview. There is also the qx5view | ||
117 | program which can also control the lights on the qx5 microscope. MJPEG Tools | ||
118 | (http://mjpeg.sourceforge.net) can also be used to record from the camera. | ||
119 | |||
120 | 5. Notes to developers: | ||
121 | |||
122 | - This is a driver version stripped of the 2.4 back compatibility | ||
123 | and old MJPEG ioctl API. See cpia2.sf.net for 2.4 support. | ||
124 | |||
125 | 6. Thanks: | ||
126 | |||
127 | - Peter Pregler <Peter_Pregler@email.com>, | ||
128 | Scott J. Bertin <scottbertin@yahoo.com>, and | ||
129 | Jarl Totland <Jarl.Totland@bdc.no> for the original cpia driver, which | ||
130 | this one was modelled from. | ||
diff --git a/Documentation/video4linux/Zoran b/Documentation/video4linux/Zoran index 52c94bd7dca1..be9f21b84555 100644 --- a/Documentation/video4linux/Zoran +++ b/Documentation/video4linux/Zoran | |||
@@ -28,7 +28,7 @@ Iomega Buz: | |||
28 | * Philips saa7111 TV decoder | 28 | * Philips saa7111 TV decoder |
29 | * Philips saa7185 TV encoder | 29 | * Philips saa7185 TV encoder |
30 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 30 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
31 | videocodec, saa7111, saa7185, zr36060, zr36067 | 31 | videocodec, saa7111, saa7185, zr36060, zr36067 |
32 | Inputs/outputs: Composite and S-video | 32 | Inputs/outputs: Composite and S-video |
33 | Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) | 33 | Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) |
34 | Card number: 7 | 34 | Card number: 7 |
@@ -39,7 +39,7 @@ Linux Media Labs LML33: | |||
39 | * Brooktree bt819 TV decoder | 39 | * Brooktree bt819 TV decoder |
40 | * Brooktree bt856 TV encoder | 40 | * Brooktree bt856 TV encoder |
41 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 41 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
42 | videocodec, bt819, bt856, zr36060, zr36067 | 42 | videocodec, bt819, bt856, zr36060, zr36067 |
43 | Inputs/outputs: Composite and S-video | 43 | Inputs/outputs: Composite and S-video |
44 | Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) | 44 | Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) |
45 | Card number: 5 | 45 | Card number: 5 |
@@ -50,7 +50,7 @@ Linux Media Labs LML33R10: | |||
50 | * Philips saa7114 TV decoder | 50 | * Philips saa7114 TV decoder |
51 | * Analog Devices adv7170 TV encoder | 51 | * Analog Devices adv7170 TV encoder |
52 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 52 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
53 | videocodec, saa7114, adv7170, zr36060, zr36067 | 53 | videocodec, saa7114, adv7170, zr36060, zr36067 |
54 | Inputs/outputs: Composite and S-video | 54 | Inputs/outputs: Composite and S-video |
55 | Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) | 55 | Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps) |
56 | Card number: 6 | 56 | Card number: 6 |
@@ -61,7 +61,7 @@ Pinnacle/Miro DC10(new): | |||
61 | * Philips saa7110a TV decoder | 61 | * Philips saa7110a TV decoder |
62 | * Analog Devices adv7176 TV encoder | 62 | * Analog Devices adv7176 TV encoder |
63 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 63 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
64 | videocodec, saa7110, adv7175, zr36060, zr36067 | 64 | videocodec, saa7110, adv7175, zr36060, zr36067 |
65 | Inputs/outputs: Composite, S-video and Internal | 65 | Inputs/outputs: Composite, S-video and Internal |
66 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) | 66 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) |
67 | Card number: 1 | 67 | Card number: 1 |
@@ -84,7 +84,7 @@ Pinnacle/Miro DC10(old): * | |||
84 | * Micronas vpx3220a TV decoder | 84 | * Micronas vpx3220a TV decoder |
85 | * mse3000 TV encoder or Analog Devices adv7176 TV encoder * | 85 | * mse3000 TV encoder or Analog Devices adv7176 TV encoder * |
86 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 86 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
87 | videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067 | 87 | videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067 |
88 | Inputs/outputs: Composite, S-video and Internal | 88 | Inputs/outputs: Composite, S-video and Internal |
89 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) | 89 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) |
90 | Card number: 0 | 90 | Card number: 0 |
@@ -96,7 +96,7 @@ Pinnacle/Miro DC30: * | |||
96 | * Micronas vpx3225d/vpx3220a/vpx3216b TV decoder | 96 | * Micronas vpx3225d/vpx3220a/vpx3216b TV decoder |
97 | * Analog Devices adv7176 TV encoder | 97 | * Analog Devices adv7176 TV encoder |
98 | Drivers to use: videodev, i2c-core, i2c-algo-bit, | 98 | Drivers to use: videodev, i2c-core, i2c-algo-bit, |
99 | videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067 | 99 | videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067 |
100 | Inputs/outputs: Composite, S-video and Internal | 100 | Inputs/outputs: Composite, S-video and Internal |
101 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) | 101 | Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps) |
102 | Card number: 3 | 102 | Card number: 3 |
@@ -123,11 +123,11 @@ Note: use encoder=X or decoder=X for non-default i2c chips (see i2c-id.h) | |||
123 | 123 | ||
124 | The best know TV standards are NTSC/PAL/SECAM. but for decoding a frame that | 124 | The best know TV standards are NTSC/PAL/SECAM. but for decoding a frame that |
125 | information is not enough. There are several formats of the TV standards. | 125 | information is not enough. There are several formats of the TV standards. |
126 | And not every TV decoder is able to handle every format. Also the every | 126 | And not every TV decoder is able to handle every format. Also the every |
127 | combination is supported by the driver. There are currently 11 different | 127 | combination is supported by the driver. There are currently 11 different |
128 | tv broadcast formats all aver the world. | 128 | tv broadcast formats all aver the world. |
129 | 129 | ||
130 | The CCIR defines parameters needed for broadcasting the signal. | 130 | The CCIR defines parameters needed for broadcasting the signal. |
131 | The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,... | 131 | The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,... |
132 | The CCIR says not much about about the colorsystem used !!! | 132 | The CCIR says not much about about the colorsystem used !!! |
133 | And talking about a colorsystem says not to much about how it is broadcast. | 133 | And talking about a colorsystem says not to much about how it is broadcast. |
@@ -136,18 +136,18 @@ The CCIR standards A,E,F are not used any more. | |||
136 | 136 | ||
137 | When you speak about NTSC, you usually mean the standard: CCIR - M using | 137 | When you speak about NTSC, you usually mean the standard: CCIR - M using |
138 | the NTSC colorsystem which is used in the USA, Japan, Mexico, Canada | 138 | the NTSC colorsystem which is used in the USA, Japan, Mexico, Canada |
139 | and a few others. | 139 | and a few others. |
140 | 140 | ||
141 | When you talk about PAL, you usually mean: CCIR - B/G using the PAL | 141 | When you talk about PAL, you usually mean: CCIR - B/G using the PAL |
142 | colorsystem which is used in many Countries. | 142 | colorsystem which is used in many Countries. |
143 | 143 | ||
144 | When you talk about SECAM, you mean: CCIR - L using the SECAM Colorsystem | 144 | When you talk about SECAM, you mean: CCIR - L using the SECAM Colorsystem |
145 | which is used in France, and a few others. | 145 | which is used in France, and a few others. |
146 | 146 | ||
147 | There the other version of SECAM, CCIR - D/K is used in Bulgaria, China, | 147 | There the other version of SECAM, CCIR - D/K is used in Bulgaria, China, |
148 | Slovakai, Hungary, Korea (Rep.), Poland, Rumania and a others. | 148 | Slovakai, Hungary, Korea (Rep.), Poland, Rumania and a others. |
149 | 149 | ||
150 | The CCIR - H uses the PAL colorsystem (sometimes SECAM) and is used in | 150 | The CCIR - H uses the PAL colorsystem (sometimes SECAM) and is used in |
151 | Egypt, Libya, Sri Lanka, Syrain Arab. Rep. | 151 | Egypt, Libya, Sri Lanka, Syrain Arab. Rep. |
152 | 152 | ||
153 | The CCIR - I uses the PAL colorsystem, and is used in Great Britain, Hong Kong, | 153 | The CCIR - I uses the PAL colorsystem, and is used in Great Britain, Hong Kong, |
@@ -158,30 +158,30 @@ and is used in Argentinia, Uruguay, an a few others | |||
158 | 158 | ||
159 | We do not talk about how the audio is broadcast ! | 159 | We do not talk about how the audio is broadcast ! |
160 | 160 | ||
161 | A rather good sites about the TV standards are: | 161 | A rather good sites about the TV standards are: |
162 | http://www.sony.jp/ServiceArea/Voltage_map/ | 162 | http://www.sony.jp/ServiceArea/Voltage_map/ |
163 | http://info.electronicwerkstatt.de/bereiche/fernsehtechnik/frequenzen_und_normen/Fernsehnormen/ | 163 | http://info.electronicwerkstatt.de/bereiche/fernsehtechnik/frequenzen_und_normen/Fernsehnormen/ |
164 | and http://www.cabl.com/restaurant/channel.html | 164 | and http://www.cabl.com/restaurant/channel.html |
165 | 165 | ||
166 | Other weird things around: NTSC 4.43 is a modificated NTSC, which is mainly | 166 | Other weird things around: NTSC 4.43 is a modificated NTSC, which is mainly |
167 | used in PAL VCR's that are able to play back NTSC. PAL 60 seems to be the same | 167 | used in PAL VCR's that are able to play back NTSC. PAL 60 seems to be the same |
168 | as NTSC 4.43 . The Datasheets also talk about NTSC 44, It seems as if it would | 168 | as NTSC 4.43 . The Datasheets also talk about NTSC 44, It seems as if it would |
169 | be the same as NTSC 4.43. | 169 | be the same as NTSC 4.43. |
170 | NTSC Combs seems to be a decoder mode where the decoder uses a comb filter | 170 | NTSC Combs seems to be a decoder mode where the decoder uses a comb filter |
171 | to split coma and luma instead of a Delay line. | 171 | to split coma and luma instead of a Delay line. |
172 | 172 | ||
173 | But I did not defiantly find out what NTSC Comb is. | 173 | But I did not defiantly find out what NTSC Comb is. |
174 | 174 | ||
175 | Philips saa7111 TV decoder | 175 | Philips saa7111 TV decoder |
176 | was introduced in 1997, is used in the BUZ and | 176 | was introduced in 1997, is used in the BUZ and |
177 | can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC N, NTSC 4.43 and SECAM | 177 | can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC N, NTSC 4.43 and SECAM |
178 | 178 | ||
179 | Philips saa7110a TV decoder | 179 | Philips saa7110a TV decoder |
180 | was introduced in 1995, is used in the Pinnacle/Miro DC10(new), DC10+ and | 180 | was introduced in 1995, is used in the Pinnacle/Miro DC10(new), DC10+ and |
181 | can handle: PAL B/G, NTSC M and SECAM | 181 | can handle: PAL B/G, NTSC M and SECAM |
182 | 182 | ||
183 | Philips saa7114 TV decoder | 183 | Philips saa7114 TV decoder |
184 | was introduced in 2000, is used in the LML33R10 and | 184 | was introduced in 2000, is used in the LML33R10 and |
185 | can handle: PAL B/G/D/H/I/N, PAL N, PAL M, NTSC M, NTSC 4.43 and SECAM | 185 | can handle: PAL B/G/D/H/I/N, PAL N, PAL M, NTSC M, NTSC 4.43 and SECAM |
186 | 186 | ||
187 | Brooktree bt819 TV decoder | 187 | Brooktree bt819 TV decoder |
@@ -206,7 +206,7 @@ was introduced in 1996, is used in the BUZ | |||
206 | can generate: PAL B/G, NTSC M | 206 | can generate: PAL B/G, NTSC M |
207 | 207 | ||
208 | Brooktree bt856 TV Encoder | 208 | Brooktree bt856 TV Encoder |
209 | was introduced in 1994, is used in the LML33 | 209 | was introduced in 1994, is used in the LML33 |
210 | can generate: PAL B/D/G/H/I/N, PAL M, NTSC M, PAL-N (Argentina) | 210 | can generate: PAL B/D/G/H/I/N, PAL M, NTSC M, PAL-N (Argentina) |
211 | 211 | ||
212 | Analog Devices adv7170 TV Encoder | 212 | Analog Devices adv7170 TV Encoder |
@@ -221,9 +221,9 @@ ITT mse3000 TV encoder | |||
221 | was introduced in 1991, is used in the DC10 old | 221 | was introduced in 1991, is used in the DC10 old |
222 | can generate: PAL , NTSC , SECAM | 222 | can generate: PAL , NTSC , SECAM |
223 | 223 | ||
224 | The adv717x, should be able to produce PAL N. But you find nothing PAL N | 224 | The adv717x, should be able to produce PAL N. But you find nothing PAL N |
225 | specific in the registers. Seem that you have to reuse a other standard | 225 | specific in the registers. Seem that you have to reuse a other standard |
226 | to generate PAL N, maybe it would work if you use the PAL M settings. | 226 | to generate PAL N, maybe it would work if you use the PAL M settings. |
227 | 227 | ||
228 | ========================== | 228 | ========================== |
229 | 229 | ||
@@ -261,7 +261,7 @@ Here's my experience of using LML33 and Buz on various motherboards: | |||
261 | 261 | ||
262 | VIA MVP3 | 262 | VIA MVP3 |
263 | Forget it. Pointless. Doesn't work. | 263 | Forget it. Pointless. Doesn't work. |
264 | Intel 430FX (Pentium 200) | 264 | Intel 430FX (Pentium 200) |
265 | LML33 perfect, Buz tolerable (3 or 4 frames dropped per movie) | 265 | LML33 perfect, Buz tolerable (3 or 4 frames dropped per movie) |
266 | Intel 440BX (early stepping) | 266 | Intel 440BX (early stepping) |
267 | LML33 tolerable. Buz starting to get annoying (6-10 frames/hour) | 267 | LML33 tolerable. Buz starting to get annoying (6-10 frames/hour) |
@@ -438,52 +438,52 @@ importance of buffer sizes: | |||
438 | > -q 25 -b 128 : 24.655.992 | 438 | > -q 25 -b 128 : 24.655.992 |
439 | > -q 25 -b 256 : 25.859.820 | 439 | > -q 25 -b 256 : 25.859.820 |
440 | 440 | ||
441 | I woke up, and can't go to sleep again. I'll kill some time explaining why | 441 | I woke up, and can't go to sleep again. I'll kill some time explaining why |
442 | this doesn't look strange to me. | 442 | this doesn't look strange to me. |
443 | 443 | ||
444 | Let's do some math using a width of 704 pixels. I'm not sure whether the Buz | 444 | Let's do some math using a width of 704 pixels. I'm not sure whether the Buz |
445 | actually use that number or not, but that's not too important right now. | 445 | actually use that number or not, but that's not too important right now. |
446 | 446 | ||
447 | 704x288 pixels, one field, is 202752 pixels. Divided by 64 pixels per block; | 447 | 704x288 pixels, one field, is 202752 pixels. Divided by 64 pixels per block; |
448 | 3168 blocks per field. Each pixel consist of two bytes; 128 bytes per block; | 448 | 3168 blocks per field. Each pixel consist of two bytes; 128 bytes per block; |
449 | 1024 bits per block. 100% in the new driver mean 1:2 compression; the maximum | 449 | 1024 bits per block. 100% in the new driver mean 1:2 compression; the maximum |
450 | output becomes 512 bits per block. Actually 510, but 512 is simpler to use | 450 | output becomes 512 bits per block. Actually 510, but 512 is simpler to use |
451 | for calculations. | 451 | for calculations. |
452 | 452 | ||
453 | Let's say that we specify d1q50. We thus want 256 bits per block; times 3168 | 453 | Let's say that we specify d1q50. We thus want 256 bits per block; times 3168 |
454 | becomes 811008 bits; 101376 bytes per field. We're talking raw bits and bytes | 454 | becomes 811008 bits; 101376 bytes per field. We're talking raw bits and bytes |
455 | here, so we don't need to do any fancy corrections for bits-per-pixel or such | 455 | here, so we don't need to do any fancy corrections for bits-per-pixel or such |
456 | things. 101376 bytes per field. | 456 | things. 101376 bytes per field. |
457 | 457 | ||
458 | d1 video contains two fields per frame. Those sum up to 202752 bytes per | 458 | d1 video contains two fields per frame. Those sum up to 202752 bytes per |
459 | frame, and one of those frames goes into each buffer. | 459 | frame, and one of those frames goes into each buffer. |
460 | 460 | ||
461 | But wait a second! -b128 gives 128kB buffers! It's not possible to cram | 461 | But wait a second! -b128 gives 128kB buffers! It's not possible to cram |
462 | 202752 bytes of JPEG data into 128kB! | 462 | 202752 bytes of JPEG data into 128kB! |
463 | 463 | ||
464 | This is what the driver notice and automatically compensate for in your | 464 | This is what the driver notice and automatically compensate for in your |
465 | examples. Let's do some math using this information: | 465 | examples. Let's do some math using this information: |
466 | 466 | ||
467 | 128kB is 131072 bytes. In this buffer, we want to store two fields, which | 467 | 128kB is 131072 bytes. In this buffer, we want to store two fields, which |
468 | leaves 65536 bytes for each field. Using 3168 blocks per field, we get | 468 | leaves 65536 bytes for each field. Using 3168 blocks per field, we get |
469 | 20.68686868... available bytes per block; 165 bits. We can't allow the | 469 | 20.68686868... available bytes per block; 165 bits. We can't allow the |
470 | request for 256 bits per block when there's only 165 bits available! The -q50 | 470 | request for 256 bits per block when there's only 165 bits available! The -q50 |
471 | option is silently overridden, and the -b128 option takes precedence, leaving | 471 | option is silently overridden, and the -b128 option takes precedence, leaving |
472 | us with the equivalence of -q32. | 472 | us with the equivalence of -q32. |
473 | 473 | ||
474 | This gives us a data rate of 165 bits per block, which, times 3168, sums up | 474 | This gives us a data rate of 165 bits per block, which, times 3168, sums up |
475 | to 65340 bytes per field, out of the allowed 65536. The current driver has | 475 | to 65340 bytes per field, out of the allowed 65536. The current driver has |
476 | another level of rate limiting; it won't accept -q values that fill more than | 476 | another level of rate limiting; it won't accept -q values that fill more than |
477 | 6/8 of the specified buffers. (I'm not sure why. "Playing it safe" seem to be | 477 | 6/8 of the specified buffers. (I'm not sure why. "Playing it safe" seem to be |
478 | a safe bet. Personally, I think I would have lowered requested-bits-per-block | 478 | a safe bet. Personally, I think I would have lowered requested-bits-per-block |
479 | by one, or something like that.) We can't use 165 bits per block, but have to | 479 | by one, or something like that.) We can't use 165 bits per block, but have to |
480 | lower it again, to 6/8 of the available buffer space: We end up with 124 bits | 480 | lower it again, to 6/8 of the available buffer space: We end up with 124 bits |
481 | per block, the equivalence of -q24. With 128kB buffers, you can't use greater | 481 | per block, the equivalence of -q24. With 128kB buffers, you can't use greater |
482 | than -q24 at -d1. (And PAL, and 704 pixels width...) | 482 | than -q24 at -d1. (And PAL, and 704 pixels width...) |
483 | 483 | ||
484 | The third example is limited to -q24 through the same process. The second | 484 | The third example is limited to -q24 through the same process. The second |
485 | example, using very similar calculations, is limited to -q48. The only | 485 | example, using very similar calculations, is limited to -q48. The only |
486 | example that actually grab at the specified -q value is the last one, which | 486 | example that actually grab at the specified -q value is the last one, which |
487 | is clearly visible, looking at the file size. | 487 | is clearly visible, looking at the file size. |
488 | -- | 488 | -- |
489 | 489 | ||
diff --git a/Documentation/video4linux/bttv/ICs b/Documentation/video4linux/bttv/ICs index 6b7491336967..611315f87c3e 100644 --- a/Documentation/video4linux/bttv/ICs +++ b/Documentation/video4linux/bttv/ICs | |||
@@ -14,13 +14,13 @@ Hauppauge Win/TV pci (version 405): | |||
14 | 14 | ||
15 | Microchip 24LC02B or | 15 | Microchip 24LC02B or |
16 | Philips 8582E2Y: 256 Byte EEPROM with configuration information | 16 | Philips 8582E2Y: 256 Byte EEPROM with configuration information |
17 | I2C 0xa0-0xa1, (24LC02B also responds to 0xa2-0xaf) | 17 | I2C 0xa0-0xa1, (24LC02B also responds to 0xa2-0xaf) |
18 | Philips SAA5246AGP/E: Videotext decoder chip, I2C 0x22-0x23 | 18 | Philips SAA5246AGP/E: Videotext decoder chip, I2C 0x22-0x23 |
19 | TDA9800: sound decoder | 19 | TDA9800: sound decoder |
20 | Winbond W24257AS-35: 32Kx8 CMOS static RAM (Videotext buffer mem) | 20 | Winbond W24257AS-35: 32Kx8 CMOS static RAM (Videotext buffer mem) |
21 | 14052B: analog switch for selection of sound source | 21 | 14052B: analog switch for selection of sound source |
22 | 22 | ||
23 | PAL: | 23 | PAL: |
24 | TDA5737: VHF, hyperband and UHF mixer/oscillator for TV and VCR 3-band tuners | 24 | TDA5737: VHF, hyperband and UHF mixer/oscillator for TV and VCR 3-band tuners |
25 | TSA5522: 1.4 GHz I2C-bus controlled synthesizer, I2C 0xc2-0xc3 | 25 | TSA5522: 1.4 GHz I2C-bus controlled synthesizer, I2C 0xc2-0xc3 |
26 | 26 | ||
diff --git a/Documentation/video4linux/bttv/PROBLEMS b/Documentation/video4linux/bttv/PROBLEMS index 8e31e9e36bf7..2b8b0079f7c7 100644 --- a/Documentation/video4linux/bttv/PROBLEMS +++ b/Documentation/video4linux/bttv/PROBLEMS | |||
@@ -3,7 +3,7 @@ | |||
3 | - Start capturing by pressing "c" or by selecting it via a menu!!! | 3 | - Start capturing by pressing "c" or by selecting it via a menu!!! |
4 | 4 | ||
5 | - The memory of some S3 cards is not recognized right: | 5 | - The memory of some S3 cards is not recognized right: |
6 | 6 | ||
7 | First of all, if you are not using XFree-3.2 or newer, upgrade AT LEAST to | 7 | First of all, if you are not using XFree-3.2 or newer, upgrade AT LEAST to |
8 | XFree-3.2A! This solved the problem for most people. | 8 | XFree-3.2A! This solved the problem for most people. |
9 | 9 | ||
@@ -31,23 +31,23 @@ | |||
31 | (mostly with Trio 64 but also with some others) | 31 | (mostly with Trio 64 but also with some others) |
32 | Get the free demo version of Accelerated X from www.xinside.com and try | 32 | Get the free demo version of Accelerated X from www.xinside.com and try |
33 | bttv with it. bttv seems to work with most S3 cards with Accelerated X. | 33 | bttv with it. bttv seems to work with most S3 cards with Accelerated X. |
34 | 34 | ||
35 | Since I do not know much (better make that almost nothing) about VGA card | 35 | Since I do not know much (better make that almost nothing) about VGA card |
36 | programming I do not know the reason for this. | 36 | programming I do not know the reason for this. |
37 | Looks like XFree does something different when setting up the video memory? | 37 | Looks like XFree does something different when setting up the video memory? |
38 | Maybe somebody can enlighten me? | 38 | Maybe somebody can enlighten me? |
39 | Would be nice if somebody could get this to work with XFree since | 39 | Would be nice if somebody could get this to work with XFree since |
40 | Accelerated X costs more than some of the grabber cards ... | 40 | Accelerated X costs more than some of the grabber cards ... |
41 | 41 | ||
42 | Better linear frame buffer support for S3 cards will probably be in | 42 | Better linear frame buffer support for S3 cards will probably be in |
43 | XFree 4.0. | 43 | XFree 4.0. |
44 | 44 | ||
45 | - Grabbing is not switched off when changing consoles with XFree. | 45 | - Grabbing is not switched off when changing consoles with XFree. |
46 | That's because XFree and some AcceleratedX versions do not send unmap | 46 | That's because XFree and some AcceleratedX versions do not send unmap |
47 | events. | 47 | events. |
48 | 48 | ||
49 | - Some popup windows (e.g. of the window manager) are not refreshed. | 49 | - Some popup windows (e.g. of the window manager) are not refreshed. |
50 | 50 | ||
51 | Disable backing store by starting X with the option "-bs" | 51 | Disable backing store by starting X with the option "-bs" |
52 | 52 | ||
53 | - When using 32 bpp in XFree or 24+8bpp mode in AccelX 3.1 the system | 53 | - When using 32 bpp in XFree or 24+8bpp mode in AccelX 3.1 the system |
diff --git a/Documentation/video4linux/bttv/README.quirks b/Documentation/video4linux/bttv/README.quirks index e8edb87df711..92e03929a6b2 100644 --- a/Documentation/video4linux/bttv/README.quirks +++ b/Documentation/video4linux/bttv/README.quirks | |||
@@ -38,9 +38,9 @@ tolerate. | |||
38 | ------------------------ | 38 | ------------------------ |
39 | 39 | ||
40 | When using the 430FX PCI, the following rules will ensure | 40 | When using the 430FX PCI, the following rules will ensure |
41 | compatibility: | 41 | compatibility: |
42 | 42 | ||
43 | (1) Deassert REQ at the same time as asserting FRAME. | 43 | (1) Deassert REQ at the same time as asserting FRAME. |
44 | (2) Do not reassert REQ to request another bus transaction until after | 44 | (2) Do not reassert REQ to request another bus transaction until after |
45 | finish-ing the previous transaction. | 45 | finish-ing the previous transaction. |
46 | 46 | ||
diff --git a/Documentation/video4linux/bttv/THANKS b/Documentation/video4linux/bttv/THANKS index 2085399da7d4..950aa781c2e9 100644 --- a/Documentation/video4linux/bttv/THANKS +++ b/Documentation/video4linux/bttv/THANKS | |||
@@ -1,6 +1,6 @@ | |||
1 | Many thanks to: | 1 | Many thanks to: |
2 | 2 | ||
3 | - Markus Schroeder <schroedm@uni-duesseldorf.de> for information on the Bt848 | 3 | - Markus Schroeder <schroedm@uni-duesseldorf.de> for information on the Bt848 |
4 | and tuner programming and his control program xtvc. | 4 | and tuner programming and his control program xtvc. |
5 | 5 | ||
6 | - Martin Buck <martin-2.buck@student.uni-ulm.de> for his great Videotext | 6 | - Martin Buck <martin-2.buck@student.uni-ulm.de> for his great Videotext |
@@ -16,7 +16,7 @@ Many thanks to: | |||
16 | - MIRO for providing a free PCTV card and detailed information about the | 16 | - MIRO for providing a free PCTV card and detailed information about the |
17 | components on their cards. (E.g. how the tuner type is detected) | 17 | components on their cards. (E.g. how the tuner type is detected) |
18 | Without their card I could not have debugged the NTSC mode. | 18 | Without their card I could not have debugged the NTSC mode. |
19 | 19 | ||
20 | - Hauppauge for telling how the sound input is selected and what components | 20 | - Hauppauge for telling how the sound input is selected and what components |
21 | they do and will use on their radio cards. | 21 | they do and will use on their radio cards. |
22 | Also many thanks for faxing me the FM1216 data sheet. | 22 | Also many thanks for faxing me the FM1216 data sheet. |
diff --git a/Documentation/video4linux/cpia2_overview.txt b/Documentation/video4linux/cpia2_overview.txt new file mode 100644 index 000000000000..a6e53665216b --- /dev/null +++ b/Documentation/video4linux/cpia2_overview.txt | |||
@@ -0,0 +1,38 @@ | |||
1 | Programmer's View of Cpia2 | ||
2 | |||
3 | Cpia2 is the second generation video coprocessor from VLSI Vision Ltd (now a | ||
4 | division of ST Microelectronics). There are two versions. The first is the | ||
5 | STV0672, which is capable of up to 30 frames per second (fps) in frame sizes | ||
6 | up to CIF, and 15 fps for VGA frames. The STV0676 is an improved version, | ||
7 | which can handle up to 30 fps VGA. Both coprocessors can be attached to two | ||
8 | CMOS sensors - the vvl6410 CIF sensor and the vvl6500 VGA sensor. These will | ||
9 | be referred to as the 410 and the 500 sensors, or the CIF and VGA sensors. | ||
10 | |||
11 | The two chipsets operate almost identically. The core is an 8051 processor, | ||
12 | running two different versions of firmware. The 672 runs the VP4 video | ||
13 | processor code, the 676 runs VP5. There are a few differences in register | ||
14 | mappings for the two chips. In these cases, the symbols defined in the | ||
15 | header files are marked with VP4 or VP5 as part of the symbol name. | ||
16 | |||
17 | The cameras appear externally as three sets of registers. Setting register | ||
18 | values is the only way to control the camera. Some settings are | ||
19 | interdependant, such as the sequence required to power up the camera. I will | ||
20 | try to make note of all of these cases. | ||
21 | |||
22 | The register sets are called blocks. Block 0 is the system block. This | ||
23 | section is always powered on when the camera is plugged in. It contains | ||
24 | registers that control housekeeping functions such as powering up the video | ||
25 | processor. The video processor is the VP block. These registers control | ||
26 | how the video from the sensor is processed. Examples are timing registers, | ||
27 | user mode (vga, qvga), scaling, cropping, framerates, and so on. The last | ||
28 | block is the video compressor (VC). The video stream sent from the camera is | ||
29 | compressed as Motion JPEG (JPEGA). The VC controls all of the compression | ||
30 | parameters. Looking at the file cpia2_registers.h, you can get a full view | ||
31 | of these registers and the possible values for most of them. | ||
32 | |||
33 | One or more registers can be set or read by sending a usb control message to | ||
34 | the camera. There are three modes for this. Block mode requests a number | ||
35 | of contiguous registers. Random mode reads or writes random registers with | ||
36 | a tuple structure containing address/value pairs. The repeat mode is only | ||
37 | used by VP4 to load a firmware patch. It contains a starting address and | ||
38 | a sequence of bytes to be written into a gpio port. \ No newline at end of file | ||
diff --git a/Documentation/video4linux/radiotrack.txt b/Documentation/video4linux/radiotrack.txt index 2b75345f13e3..d1f3ed199186 100644 --- a/Documentation/video4linux/radiotrack.txt +++ b/Documentation/video4linux/radiotrack.txt | |||
@@ -131,17 +131,17 @@ Check Stereo: BASE <-- 0xd8 (current volume, stereo detect, | |||
131 | x=0xff ==> "not stereo", x=0xfd ==> "stereo detected" | 131 | x=0xff ==> "not stereo", x=0xfd ==> "stereo detected" |
132 | 132 | ||
133 | Set Frequency: code = (freq*40) + 10486188 | 133 | Set Frequency: code = (freq*40) + 10486188 |
134 | foreach of the 24 bits in code, | 134 | foreach of the 24 bits in code, |
135 | (from Least to Most Significant): | 135 | (from Least to Most Significant): |
136 | to write a "zero" bit, | 136 | to write a "zero" bit, |
137 | BASE <-- 0x01 (audio mute, no stereo detect, radio | 137 | BASE <-- 0x01 (audio mute, no stereo detect, radio |
138 | disable, "zero" bit phase 1, tuner adjust) | 138 | disable, "zero" bit phase 1, tuner adjust) |
139 | BASE <-- 0x03 (audio mute, no stereo detect, radio | 139 | BASE <-- 0x03 (audio mute, no stereo detect, radio |
140 | disable, "zero" bit phase 2, tuner adjust) | 140 | disable, "zero" bit phase 2, tuner adjust) |
141 | to write a "one" bit, | 141 | to write a "one" bit, |
142 | BASE <-- 0x05 (audio mute, no stereo detect, radio | 142 | BASE <-- 0x05 (audio mute, no stereo detect, radio |
143 | disable, "one" bit phase 1, tuner adjust) | 143 | disable, "one" bit phase 1, tuner adjust) |
144 | BASE <-- 0x07 (audio mute, no stereo detect, radio | 144 | BASE <-- 0x07 (audio mute, no stereo detect, radio |
145 | disable, "one" bit phase 2, tuner adjust) | 145 | disable, "one" bit phase 2, tuner adjust) |
146 | 146 | ||
147 | ---------------------------------------------------------------------------- | 147 | ---------------------------------------------------------------------------- |
diff --git a/Documentation/video4linux/w9966.txt b/Documentation/video4linux/w9966.txt index e7ac33a7eb06..78a651254b84 100644 --- a/Documentation/video4linux/w9966.txt +++ b/Documentation/video4linux/w9966.txt | |||
@@ -26,7 +26,7 @@ is called VIDEO_PALETTE_YUV422 (16 bpp). | |||
26 | A minimal test application (with source) is available from: | 26 | A minimal test application (with source) is available from: |
27 | http://hem.fyristorg.com/mogul/w9966.html | 27 | http://hem.fyristorg.com/mogul/w9966.html |
28 | 28 | ||
29 | The slow framerate is due to missing DMA ECP read support in the | 29 | The slow framerate is due to missing DMA ECP read support in the |
30 | parport drivers. I might add working EPP support later. | 30 | parport drivers. I might add working EPP support later. |
31 | 31 | ||
32 | Good luck! | 32 | Good luck! |
diff --git a/Documentation/video4linux/zr36120.txt b/Documentation/video4linux/zr36120.txt index 5d6357eefde4..ac6d92d01944 100644 --- a/Documentation/video4linux/zr36120.txt +++ b/Documentation/video4linux/zr36120.txt | |||
@@ -2,7 +2,7 @@ Driver for Trust Computer Products Framegrabber, version 0.6.1 | |||
2 | ------ --- ----- -------- -------- ------------ ------- - - - | 2 | ------ --- ----- -------- -------- ------------ ------- - - - |
3 | 3 | ||
4 | - ZORAN ------------------------------------------------------ | 4 | - ZORAN ------------------------------------------------------ |
5 | Author: Pauline Middelink <middelin@polyware.nl> | 5 | Author: Pauline Middelink <middelin@polyware.nl> |
6 | Date: 18 September 1999 | 6 | Date: 18 September 1999 |
7 | Version: 0.6.1 | 7 | Version: 0.6.1 |
8 | 8 | ||
@@ -115,7 +115,7 @@ After making/checking the devices do: | |||
115 | <n> is the cardtype of the card you have. The cardnumber can | 115 | <n> is the cardtype of the card you have. The cardnumber can |
116 | be found in the source of zr36120. Look for tvcards. If your | 116 | be found in the source of zr36120. Look for tvcards. If your |
117 | card is not there, please try if any other card gives some | 117 | card is not there, please try if any other card gives some |
118 | response, and mail me if you got a working tvcard addition. | 118 | response, and mail me if you got a working tvcard addition. |
119 | 119 | ||
120 | PS. <TVCard editors behold!) | 120 | PS. <TVCard editors behold!) |
121 | Dont forget to set video_input to the number of inputs | 121 | Dont forget to set video_input to the number of inputs |
diff --git a/Documentation/w1/masters/ds2482 b/Documentation/w1/masters/ds2482 new file mode 100644 index 000000000000..c5d5478d90b2 --- /dev/null +++ b/Documentation/w1/masters/ds2482 | |||
@@ -0,0 +1,31 @@ | |||
1 | Kernel driver ds2482 | ||
2 | ==================== | ||
3 | |||
4 | Supported chips: | ||
5 | * Maxim DS2482-100, Maxim DS2482-800 | ||
6 | Prefix: 'ds2482' | ||
7 | Addresses scanned: None | ||
8 | Datasheets: | ||
9 | http://pdfserv.maxim-ic.com/en/ds/DS2482-100-DS2482S-100.pdf | ||
10 | http://pdfserv.maxim-ic.com/en/ds/DS2482-800-DS2482S-800.pdf | ||
11 | |||
12 | Author: Ben Gardner <bgardner@wabtec.com> | ||
13 | |||
14 | |||
15 | Description | ||
16 | ----------- | ||
17 | |||
18 | The Maixm/Dallas Semiconductor DS2482 is a I2C device that provides | ||
19 | one (DS2482-100) or eight (DS2482-800) 1-wire busses. | ||
20 | |||
21 | |||
22 | General Remarks | ||
23 | --------------- | ||
24 | |||
25 | Valid addresses are 0x18, 0x19, 0x1a, and 0x1b. | ||
26 | However, the device cannot be detected without writing to the i2c bus, so no | ||
27 | detection is done. | ||
28 | You should force the device address. | ||
29 | |||
30 | $ modprobe ds2482 force=0,0x18 | ||
31 | |||