aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/00-INDEX2
-rw-r--r--Documentation/DMA-API.txt3
-rw-r--r--Documentation/DocBook/Makefile2
-rw-r--r--Documentation/DocBook/deviceiobook.tmpl3
-rw-r--r--Documentation/DocBook/kernel-api.tmpl26
-rw-r--r--Documentation/DocBook/kernel-hacking.tmpl4
-rw-r--r--Documentation/DocBook/mcabook.tmpl2
-rw-r--r--Documentation/DocBook/mtdnand.tmpl5
-rw-r--r--Documentation/DocBook/s390-drivers.tmpl149
-rw-r--r--Documentation/HOWTO4
-rw-r--r--Documentation/MSI-HOWTO.txt69
-rw-r--r--Documentation/ManagementStyle2
-rw-r--r--Documentation/SubmittingPatches4
-rw-r--r--Documentation/accounting/getdelays.c2
-rw-r--r--Documentation/block/biodoc.txt20
-rw-r--r--Documentation/block/ioprio.txt11
-rw-r--r--Documentation/crypto/async-tx-api.txt219
-rw-r--r--Documentation/devices.txt2
-rw-r--r--Documentation/dvb/faq.txt2
-rw-r--r--Documentation/dvb/get_dvb_firmware24
-rw-r--r--Documentation/feature-removal-schedule.txt37
-rw-r--r--Documentation/filesystems/00-INDEX2
-rw-r--r--Documentation/filesystems/9p.txt24
-rw-r--r--Documentation/filesystems/ntfs.txt4
-rw-r--r--Documentation/filesystems/ocfs2.txt13
-rw-r--r--Documentation/hwmon/coretemp2
-rw-r--r--Documentation/hwmon/dme173733
-rw-r--r--Documentation/hwmon/f71805f7
-rw-r--r--Documentation/hwmon/it873
-rw-r--r--Documentation/hwmon/lm7810
-rw-r--r--Documentation/hwmon/lm93126
-rw-r--r--Documentation/hwmon/sysfs-interface131
-rw-r--r--Documentation/hwmon/w83791d96
-rw-r--r--Documentation/i2c/busses/i2c-i8013
-rw-r--r--Documentation/i2c/busses/i2c-piix42
-rw-r--r--Documentation/i2c/chips/pcf85748
-rw-r--r--Documentation/i2c/dev-interface11
-rw-r--r--Documentation/i2c/i2c-stub18
-rw-r--r--Documentation/infiniband/user_mad.txt14
-rw-r--r--Documentation/input/iforce-protocol.txt508
-rw-r--r--Documentation/ja_JP/HOWTO84
-rw-r--r--Documentation/kernel-parameters.txt52
-rw-r--r--Documentation/ko_KR/HOWTO623
-rw-r--r--Documentation/kobject.txt22
-rw-r--r--Documentation/lguest/lguest.c4
-rw-r--r--Documentation/lockstat.txt120
-rw-r--r--Documentation/networking/00-INDEX3
-rw-r--r--Documentation/networking/NAPI_HOWTO.txt766
-rw-r--r--Documentation/networking/dccp.txt21
-rw-r--r--Documentation/networking/dgrs.txt52
-rw-r--r--Documentation/networking/ip-sysctl.txt17
-rw-r--r--Documentation/networking/mac80211-injection.txt32
-rw-r--r--Documentation/networking/multiqueue.txt10
-rw-r--r--Documentation/networking/netconsole.txt99
-rw-r--r--Documentation/networking/netdevices.txt15
-rw-r--r--Documentation/networking/sk98lin.txt568
-rw-r--r--Documentation/powerpc/booting-without-of.txt490
-rw-r--r--Documentation/rfkill.txt89
-rw-r--r--Documentation/s390/00-INDEX26
-rw-r--r--Documentation/s390/CommonIO51
-rw-r--r--Documentation/s390/cds.txt8
-rw-r--r--Documentation/sparc/sbus_drivers.txt4
-rw-r--r--Documentation/sysrq.txt2
-rw-r--r--Documentation/thinkpad-acpi.txt96
-rw-r--r--Documentation/usb/authorization.txt92
-rw-r--r--Documentation/usb/power-management.txt517
-rw-r--r--Documentation/usb/usb-serial.txt11
-rw-r--r--Documentation/usb/usbmon.txt9
-rw-r--r--Documentation/video4linux/CARDLIST.bttv1
-rw-r--r--Documentation/video4linux/CARDLIST.cx238855
-rw-r--r--Documentation/video4linux/CARDLIST.saa71345
-rw-r--r--Documentation/video4linux/cx2341x/fw-encoder-api.txt4
-rw-r--r--Documentation/vm/numa_memory_policy.txt332
-rw-r--r--Documentation/watchdog/00-INDEX10
74 files changed, 4226 insertions, 1621 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX
index 8b0563633442..43e89b1537d9 100644
--- a/Documentation/00-INDEX
+++ b/Documentation/00-INDEX
@@ -134,8 +134,6 @@ dvb/
134 - info on Linux Digital Video Broadcast (DVB) subsystem. 134 - info on Linux Digital Video Broadcast (DVB) subsystem.
135early-userspace/ 135early-userspace/
136 - info about initramfs, klibc, and userspace early during boot. 136 - info about initramfs, klibc, and userspace early during boot.
137ecryptfs.txt
138 - docs on eCryptfs: stacked cryptographic filesystem for Linux.
139eisa.txt 137eisa.txt
140 - info on EISA bus support. 138 - info on EISA bus support.
141exception.txt 139exception.txt
diff --git a/Documentation/DMA-API.txt b/Documentation/DMA-API.txt
index cc7a8c39fb6f..b939ebb62871 100644
--- a/Documentation/DMA-API.txt
+++ b/Documentation/DMA-API.txt
@@ -68,6 +68,9 @@ size and dma_handle must all be the same as those passed into the
68consistent allocate. cpu_addr must be the virtual address returned by 68consistent allocate. cpu_addr must be the virtual address returned by
69the consistent allocate. 69the consistent allocate.
70 70
71Note that unlike their sibling allocation calls, these routines
72may only be called with IRQs enabled.
73
71 74
72Part Ib - Using small dma-coherent buffers 75Part Ib - Using small dma-coherent buffers
73------------------------------------------ 76------------------------------------------
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index 08687e45e19d..1a7f53068ec2 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -11,7 +11,7 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
11 procfs-guide.xml writing_usb_driver.xml \ 11 procfs-guide.xml writing_usb_driver.xml \
12 kernel-api.xml filesystems.xml lsm.xml usb.xml \ 12 kernel-api.xml filesystems.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 genericirq.xml 14 genericirq.xml s390-drivers.xml
15 15
16### 16###
17# The build process is as follows (targets): 17# The build process is as follows (targets):
diff --git a/Documentation/DocBook/deviceiobook.tmpl b/Documentation/DocBook/deviceiobook.tmpl
index 90ed23df1f68..361c884d860d 100644
--- a/Documentation/DocBook/deviceiobook.tmpl
+++ b/Documentation/DocBook/deviceiobook.tmpl
@@ -316,7 +316,8 @@ CPU B: spin_unlock_irqrestore(&dev_lock, flags)
316 316
317 <chapter id="pubfunctions"> 317 <chapter id="pubfunctions">
318 <title>Public Functions Provided</title> 318 <title>Public Functions Provided</title>
319!Einclude/asm-i386/io.h 319!Iinclude/asm-x86/io_32.h
320!Elib/iomap.c
320 </chapter> 321 </chapter>
321 322
322</book> 323</book>
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index b886f52a9aac..230cbf753782 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -45,8 +45,8 @@
45 </sect1> 45 </sect1>
46 46
47 <sect1><title>Atomic and pointer manipulation</title> 47 <sect1><title>Atomic and pointer manipulation</title>
48!Iinclude/asm-i386/atomic.h 48!Iinclude/asm-x86/atomic_32.h
49!Iinclude/asm-i386/unaligned.h 49!Iinclude/asm-x86/unaligned_32.h
50 </sect1> 50 </sect1>
51 51
52 <sect1><title>Delaying, scheduling, and timer routines</title> 52 <sect1><title>Delaying, scheduling, and timer routines</title>
@@ -119,7 +119,7 @@ X!Ilib/string.c
119!Elib/string.c 119!Elib/string.c
120 </sect1> 120 </sect1>
121 <sect1><title>Bit Operations</title> 121 <sect1><title>Bit Operations</title>
122!Iinclude/asm-i386/bitops.h 122!Iinclude/asm-x86/bitops_32.h
123 </sect1> 123 </sect1>
124 </chapter> 124 </chapter>
125 125
@@ -155,8 +155,8 @@ X!Ilib/string.c
155!Emm/slab.c 155!Emm/slab.c
156 </sect1> 156 </sect1>
157 <sect1><title>User Space Memory Access</title> 157 <sect1><title>User Space Memory Access</title>
158!Iinclude/asm-i386/uaccess.h 158!Iinclude/asm-x86/uaccess_32.h
159!Earch/i386/lib/usercopy.c 159!Earch/x86/lib/usercopy_32.c
160 </sect1> 160 </sect1>
161 <sect1><title>More Memory Management Functions</title> 161 <sect1><title>More Memory Management Functions</title>
162!Emm/readahead.c 162!Emm/readahead.c
@@ -240,17 +240,23 @@ X!Ilib/string.c
240 <sect1><title>Driver Support</title> 240 <sect1><title>Driver Support</title>
241!Enet/core/dev.c 241!Enet/core/dev.c
242!Enet/ethernet/eth.c 242!Enet/ethernet/eth.c
243!Enet/sched/sch_generic.c
243!Iinclude/linux/etherdevice.h 244!Iinclude/linux/etherdevice.h
245!Iinclude/linux/netdevice.h
246 </sect1>
247 <sect1><title>PHY Support</title>
244!Edrivers/net/phy/phy.c 248!Edrivers/net/phy/phy.c
245!Idrivers/net/phy/phy.c 249!Idrivers/net/phy/phy.c
246!Edrivers/net/phy/phy_device.c 250!Edrivers/net/phy/phy_device.c
247!Idrivers/net/phy/phy_device.c 251!Idrivers/net/phy/phy_device.c
248!Edrivers/net/phy/mdio_bus.c 252!Edrivers/net/phy/mdio_bus.c
249!Idrivers/net/phy/mdio_bus.c 253!Idrivers/net/phy/mdio_bus.c
254 </sect1>
250<!-- FIXME: Removed for now since no structured comments in source 255<!-- FIXME: Removed for now since no structured comments in source
256 <sect1><title>Wireless</title>
251X!Enet/core/wireless.c 257X!Enet/core/wireless.c
252-->
253 </sect1> 258 </sect1>
259-->
254 <sect1><title>Synchronous PPP</title> 260 <sect1><title>Synchronous PPP</title>
255!Edrivers/net/wan/syncppp.c 261!Edrivers/net/wan/syncppp.c
256 </sect1> 262 </sect1>
@@ -287,7 +293,7 @@ X!Ekernel/module.c
287 </sect1> 293 </sect1>
288 294
289 <sect1><title>MTRR Handling</title> 295 <sect1><title>MTRR Handling</title>
290!Earch/i386/kernel/cpu/mtrr/main.c 296!Earch/x86/kernel/cpu/mtrr/main.c
291 </sect1> 297 </sect1>
292 298
293 <sect1><title>PCI Support Library</title> 299 <sect1><title>PCI Support Library</title>
@@ -310,14 +316,14 @@ X!Edrivers/pci/hotplug.c
310 <sect1><title>MCA Architecture</title> 316 <sect1><title>MCA Architecture</title>
311 <sect2><title>MCA Device Functions</title> 317 <sect2><title>MCA Device Functions</title>
312 <para> 318 <para>
313 Refer to the file arch/i386/kernel/mca.c for more information. 319 Refer to the file arch/x86/kernel/mca_32.c for more information.
314 </para> 320 </para>
315<!-- FIXME: Removed for now since no structured comments in source 321<!-- FIXME: Removed for now since no structured comments in source
316X!Earch/i386/kernel/mca.c 322X!Earch/x86/kernel/mca_32.c
317--> 323-->
318 </sect2> 324 </sect2>
319 <sect2><title>MCA Bus DMA</title> 325 <sect2><title>MCA Bus DMA</title>
320!Iinclude/asm-i386/mca_dma.h 326!Iinclude/asm-x86/mca_dma.h
321 </sect2> 327 </sect2>
322 </sect1> 328 </sect1>
323 </chapter> 329 </chapter>
diff --git a/Documentation/DocBook/kernel-hacking.tmpl b/Documentation/DocBook/kernel-hacking.tmpl
index 582032eea872..4c63e5864160 100644
--- a/Documentation/DocBook/kernel-hacking.tmpl
+++ b/Documentation/DocBook/kernel-hacking.tmpl
@@ -1239,7 +1239,7 @@ static struct block_device_operations opt_fops = {
1239 </para> 1239 </para>
1240 1240
1241 <para> 1241 <para>
1242 <filename>include/asm-i386/delay.h:</filename> 1242 <filename>include/asm-x86/delay_32.h:</filename>
1243 </para> 1243 </para>
1244 <programlisting> 1244 <programlisting>
1245#define ndelay(n) (__builtin_constant_p(n) ? \ 1245#define ndelay(n) (__builtin_constant_p(n) ? \
@@ -1265,7 +1265,7 @@ static struct block_device_operations opt_fops = {
1265</programlisting> 1265</programlisting>
1266 1266
1267 <para> 1267 <para>
1268 <filename>include/asm-i386/uaccess.h:</filename> 1268 <filename>include/asm-x86/uaccess_32.h:</filename>
1269 </para> 1269 </para>
1270 1270
1271 <programlisting> 1271 <programlisting>
diff --git a/Documentation/DocBook/mcabook.tmpl b/Documentation/DocBook/mcabook.tmpl
index 42a760cd7467..529a53dc1389 100644
--- a/Documentation/DocBook/mcabook.tmpl
+++ b/Documentation/DocBook/mcabook.tmpl
@@ -101,7 +101,7 @@
101 101
102 <chapter id="dmafunctions"> 102 <chapter id="dmafunctions">
103 <title>DMA Functions Provided</title> 103 <title>DMA Functions Provided</title>
104!Iinclude/asm-i386/mca_dma.h 104!Iinclude/asm-x86/mca_dma.h
105 </chapter> 105 </chapter>
106 106
107</book> 107</book>
diff --git a/Documentation/DocBook/mtdnand.tmpl b/Documentation/DocBook/mtdnand.tmpl
index a8c8cce50633..6fbc41d98c1e 100644
--- a/Documentation/DocBook/mtdnand.tmpl
+++ b/Documentation/DocBook/mtdnand.tmpl
@@ -275,16 +275,13 @@ int __init board_init (void)
275 int err = 0; 275 int err = 0;
276 276
277 /* Allocate memory for MTD device structure and private data */ 277 /* Allocate memory for MTD device structure and private data */
278 board_mtd = kmalloc (sizeof(struct mtd_info) + sizeof (struct nand_chip), GFP_KERNEL); 278 board_mtd = kzalloc(sizeof(struct mtd_info) + sizeof(struct nand_chip), GFP_KERNEL);
279 if (!board_mtd) { 279 if (!board_mtd) {
280 printk ("Unable to allocate NAND MTD device structure.\n"); 280 printk ("Unable to allocate NAND MTD device structure.\n");
281 err = -ENOMEM; 281 err = -ENOMEM;
282 goto out; 282 goto out;
283 } 283 }
284 284
285 /* Initialize structures */
286 memset ((char *) board_mtd, 0, sizeof(struct mtd_info) + sizeof(struct nand_chip));
287
288 /* map physical adress */ 285 /* map physical adress */
289 baseaddr = (unsigned long)ioremap(CHIP_PHYSICAL_ADDRESS, 1024); 286 baseaddr = (unsigned long)ioremap(CHIP_PHYSICAL_ADDRESS, 1024);
290 if(!baseaddr){ 287 if(!baseaddr){
diff --git a/Documentation/DocBook/s390-drivers.tmpl b/Documentation/DocBook/s390-drivers.tmpl
new file mode 100644
index 000000000000..254e769282a4
--- /dev/null
+++ b/Documentation/DocBook/s390-drivers.tmpl
@@ -0,0 +1,149 @@
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="s390drivers">
6 <bookinfo>
7 <title>Writing s390 channel device drivers</title>
8
9 <authorgroup>
10 <author>
11 <firstname>Cornelia</firstname>
12 <surname>Huck</surname>
13 <affiliation>
14 <address>
15 <email>cornelia.huck@de.ibm.com</email>
16 </address>
17 </affiliation>
18 </author>
19 </authorgroup>
20
21 <copyright>
22 <year>2007</year>
23 <holder>IBM Corp.</holder>
24 </copyright>
25
26 <legalnotice>
27 <para>
28 This documentation is free software; you can redistribute
29 it and/or modify it under the terms of the GNU General Public
30 License as published by the Free Software Foundation; either
31 version 2 of the License, or (at your option) any later
32 version.
33 </para>
34
35 <para>
36 This program is distributed in the hope that it will be
37 useful, but WITHOUT ANY WARRANTY; without even the implied
38 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
39 See the GNU General Public License for more details.
40 </para>
41
42 <para>
43 You should have received a copy of the GNU General Public
44 License along with this program; if not, write to the Free
45 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
46 MA 02111-1307 USA
47 </para>
48
49 <para>
50 For more details see the file COPYING in the source
51 distribution of Linux.
52 </para>
53 </legalnotice>
54 </bookinfo>
55
56<toc></toc>
57
58 <chapter id="intro">
59 <title>Introduction</title>
60 <para>
61 This document describes the interfaces available for device drivers that
62 drive s390 based channel attached devices. This includes interfaces for
63 interaction with the hardware and interfaces for interacting with the
64 common driver core. Those interfaces are provided by the s390 common I/O
65 layer.
66 </para>
67 <para>
68 The document assumes a familarity with the technical terms associated
69 with the s390 channel I/O architecture. For a description of this
70 architecture, please refer to the "z/Architecture: Principles of
71 Operation", IBM publication no. SA22-7832.
72 </para>
73 <para>
74 While most I/O devices on a s390 system are typically driven through the
75 channel I/O mechanism described here, there are various other methods
76 (like the diag interface). These are out of the scope of this document.
77 </para>
78 <para>
79 Some additional information can also be found in the kernel source
80 under Documentation/s390/driver-model.txt.
81 </para>
82 </chapter>
83 <chapter id="ccw">
84 <title>The ccw bus</title>
85 <para>
86 The ccw bus typically contains the majority of devices available to
87 a s390 system. Named after the channel command word (ccw), the basic
88 command structure used to address its devices, the ccw bus contains
89 so-called channel attached devices. They are addressed via subchannels,
90 visible on the css bus. A device driver, however, will never interact
91 with the subchannel directly, but only via the device on the ccw bus,
92 the ccw device.
93 </para>
94 <sect1 id="channelIO">
95 <title>I/O functions for channel-attached devices</title>
96 <para>
97 Some hardware structures have been translated into C structures for use
98 by the common I/O layer and device drivers. For more information on
99 the hardware structures represented here, please consult the Principles
100 of Operation.
101 </para>
102!Iinclude/asm-s390/cio.h
103 </sect1>
104 <sect1 id="ccwdev">
105 <title>ccw devices</title>
106 <para>
107 Devices that want to initiate channel I/O need to attach to the ccw bus.
108 Interaction with the driver core is done via the common I/O layer, which
109 provides the abstractions of ccw devices and ccw device drivers.
110 </para>
111 <para>
112 The functions that initiate or terminate channel I/O all act upon a
113 ccw device structure. Device drivers must not bypass those functions
114 or strange side effects may happen.
115 </para>
116!Iinclude/asm-s390/ccwdev.h
117!Edrivers/s390/cio/device.c
118!Edrivers/s390/cio/device_ops.c
119 </sect1>
120 <sect1 id="cmf">
121 <title>The channel-measurement facility</title>
122 <para>
123 The channel-measurement facility provides a means to collect
124 measurement data which is made available by the channel subsystem
125 for each channel attached device.
126 </para>
127!Iinclude/asm-s390/cmb.h
128!Edrivers/s390/cio/cmf.c
129 </sect1>
130 </chapter>
131
132 <chapter id="ccwgroup">
133 <title>The ccwgroup bus</title>
134 <para>
135 The ccwgroup bus only contains artificial devices, created by the user.
136 Many networking devices (e.g. qeth) are in fact composed of several
137 ccw devices (like read, write and data channel for qeth). The
138 ccwgroup bus provides a mechanism to create a meta-device which
139 contains those ccw devices as slave devices and can be associated
140 with the netdevice.
141 </para>
142 <sect1 id="ccwgroupdevices">
143 <title>ccw group devices</title>
144!Iinclude/asm-s390/ccwgroup.h
145!Edrivers/s390/cio/ccwgroup.c
146 </sect1>
147 </chapter>
148
149</book>
diff --git a/Documentation/HOWTO b/Documentation/HOWTO
index f8cc3f8ed152..c64e969dc33b 100644
--- a/Documentation/HOWTO
+++ b/Documentation/HOWTO
@@ -208,7 +208,7 @@ tools. One such tool that is particularly recommended is the Linux
208Cross-Reference project, which is able to present source code in a 208Cross-Reference project, which is able to present source code in a
209self-referential, indexed webpage format. An excellent up-to-date 209self-referential, indexed webpage format. An excellent up-to-date
210repository of the kernel code may be found at: 210repository of the kernel code may be found at:
211 http://sosdg.org/~coywolf/lxr/ 211 http://users.sosdg.org/~qiyong/lxr/
212 212
213 213
214The development process 214The development process
@@ -384,7 +384,7 @@ One of the best ways to put into practice your hacking skills is by fixing
384bugs reported by other people. Not only you will help to make the kernel 384bugs reported by other people. Not only you will help to make the kernel
385more stable, you'll learn to fix real world problems and you will improve 385more stable, you'll learn to fix real world problems and you will improve
386your skills, and other developers will be aware of your presence. Fixing 386your skills, and other developers will be aware of your presence. Fixing
387bugs is one of the best ways to earn merit amongst the developers, because 387bugs is one of the best ways to get merits among other developers, because
388not many people like wasting time fixing other people's bugs. 388not many people like wasting time fixing other people's bugs.
389 389
390To work in the already reported bug reports, go to http://bugzilla.kernel.org. 390To work in the already reported bug reports, go to http://bugzilla.kernel.org.
diff --git a/Documentation/MSI-HOWTO.txt b/Documentation/MSI-HOWTO.txt
index 0d8240774fca..a51f693c1541 100644
--- a/Documentation/MSI-HOWTO.txt
+++ b/Documentation/MSI-HOWTO.txt
@@ -241,68 +241,7 @@ address space of the MSI-X table/MSI-X PBA. Otherwise, the PCI subsystem
241will fail enabling MSI-X on its hardware device when it calls the function 241will fail enabling MSI-X on its hardware device when it calls the function
242pci_enable_msix(). 242pci_enable_msix().
243 243
2445.3.2 Handling MSI-X allocation 2445.3.2 API pci_enable_msix
245
246Determining the number of MSI-X vectors allocated to a function is
247dependent on the number of MSI capable devices and MSI-X capable
248devices populated in the system. The policy of allocating MSI-X
249vectors to a function is defined as the following:
250
251#of MSI-X vectors allocated to a function = (x - y)/z where
252
253x = The number of available PCI vector resources by the time
254 the device driver calls pci_enable_msix(). The PCI vector
255 resources is the sum of the number of unassigned vectors
256 (new) and the number of released vectors when any MSI/MSI-X
257 device driver switches its hardware device back to a legacy
258 mode or is hot-removed. The number of unassigned vectors
259 may exclude some vectors reserved, as defined in parameter
260 NR_HP_RESERVED_VECTORS, for the case where the system is
261 capable of supporting hot-add/hot-remove operations. Users
262 may change the value defined in NR_HR_RESERVED_VECTORS to
263 meet their specific needs.
264
265y = The number of MSI capable devices populated in the system.
266 This policy ensures that each MSI capable device has its
267 vector reserved to avoid the case where some MSI-X capable
268 drivers may attempt to claim all available vector resources.
269
270z = The number of MSI-X capable devices populated in the system.
271 This policy ensures that maximum (x - y) is distributed
272 evenly among MSI-X capable devices.
273
274Note that the PCI subsystem scans y and z during a bus enumeration.
275When the PCI subsystem completes configuring MSI/MSI-X capability
276structure of a device as requested by its device driver, y/z is
277decremented accordingly.
278
2795.3.3 Handling MSI-X shortages
280
281For the case where fewer MSI-X vectors are allocated to a function
282than requested, the function pci_enable_msix() will return the
283maximum number of MSI-X vectors available to the caller. A device
284driver may re-send its request with fewer or equal vectors indicated
285in the return. For example, if a device driver requests 5 vectors, but
286the number of available vectors is 3 vectors, a value of 3 will be
287returned as a result of pci_enable_msix() call. A function could be
288designed for its driver to use only 3 MSI-X table entries as
289different combinations as ABC--, A-B-C, A--CB, etc. Note that this
290patch does not support multiple entries with the same vector. Such
291attempt by a device driver to use 5 MSI-X table entries with 3 vectors
292as ABBCC, AABCC, BCCBA, etc will result as a failure by the function
293pci_enable_msix(). Below are the reasons why supporting multiple
294entries with the same vector is an undesirable solution.
295
296 - The PCI subsystem cannot determine the entry that
297 generated the message to mask/unmask MSI while handling
298 software driver ISR. Attempting to walk through all MSI-X
299 table entries (2048 max) to mask/unmask any match vector
300 is an undesirable solution.
301
302 - Walking through all MSI-X table entries (2048 max) to handle
303 SMP affinity of any match vector is an undesirable solution.
304
3055.3.4 API pci_enable_msix
306 245
307int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec) 246int pci_enable_msix(struct pci_dev *dev, struct msix_entry *entries, int nvec)
308 247
@@ -339,7 +278,7 @@ a failure. This failure may be a result of duplicate entries
339specified in second argument, or a result of no available vector, 278specified in second argument, or a result of no available vector,
340or a result of failing to initialize MSI-X table entries. 279or a result of failing to initialize MSI-X table entries.
341 280
3425.3.5 API pci_disable_msix 2815.3.3 API pci_disable_msix
343 282
344void pci_disable_msix(struct pci_dev *dev) 283void pci_disable_msix(struct pci_dev *dev)
345 284
@@ -349,7 +288,7 @@ always call free_irq() on all MSI-X vectors it has done request_irq()
349on before calling this API. Failure to do so results in a BUG_ON() and 288on before calling this API. Failure to do so results in a BUG_ON() and
350a device will be left with MSI-X enabled and leaks its vectors. 289a device will be left with MSI-X enabled and leaks its vectors.
351 290
3525.3.6 MSI-X mode vs. legacy mode diagram 2915.3.4 MSI-X mode vs. legacy mode diagram
353 292
354The below diagram shows the events which switch the interrupt 293The below diagram shows the events which switch the interrupt
355mode on the MSI-X capable device function between MSI-X mode and 294mode on the MSI-X capable device function between MSI-X mode and
@@ -407,7 +346,7 @@ between MSI mod MSI-X mode during a run-time.
407MSI/MSI-X support requires support from both system hardware and 346MSI/MSI-X support requires support from both system hardware and
408individual hardware device functions. 347individual hardware device functions.
409 348
4105.5.1 System hardware support 3495.5.1 Required x86 hardware support
411 350
412Since the target of MSI address is the local APIC CPU, enabling 351Since the target of MSI address is the local APIC CPU, enabling
413MSI/MSI-X support in the Linux kernel is dependent on whether existing 352MSI/MSI-X support in the Linux kernel is dependent on whether existing
diff --git a/Documentation/ManagementStyle b/Documentation/ManagementStyle
index cbbebfb51ffe..49a8efa5afeb 100644
--- a/Documentation/ManagementStyle
+++ b/Documentation/ManagementStyle
@@ -166,7 +166,7 @@ To solve this problem, you really only have two options:
166The option of being unfailingly polite really doesn't exist. Nobody will 166The option of being unfailingly polite really doesn't exist. Nobody will
167trust somebody who is so clearly hiding his true character. 167trust somebody who is so clearly hiding his true character.
168 168
169(*) Paul Simon sang "Fifty Ways to Lose Your Lover", because quite 169(*) Paul Simon sang "Fifty Ways to Leave Your Lover", because quite
170frankly, "A Million Ways to Tell a Developer He Is a D*ckhead" doesn't 170frankly, "A Million Ways to Tell a Developer He Is a D*ckhead" doesn't
171scan nearly as well. But I'm sure he thought about it. 171scan nearly as well. But I'm sure he thought about it.
172 172
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index d6b45a9b29b4..a30dd4480ad4 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -126,7 +126,7 @@ the reviewers time and will get your patch rejected, probably
126without even being read. 126without even being read.
127 127
128At a minimum you should check your patches with the patch style 128At a minimum you should check your patches with the patch style
129checker prior to submission (scripts/patchcheck.pl). You should 129checker prior to submission (scripts/checkpatch.pl). You should
130be able to justify all violations that remain in your patch. 130be able to justify all violations that remain in your patch.
131 131
132 132
@@ -560,7 +560,7 @@ NO!!!! No more huge patch bombs to linux-kernel@vger.kernel.org people!
560 <http://marc.theaimsgroup.com/?l=linux-kernel&m=112112749912944&w=2> 560 <http://marc.theaimsgroup.com/?l=linux-kernel&m=112112749912944&w=2>
561 561
562Kernel Documentation/CodingStyle: 562Kernel Documentation/CodingStyle:
563 <http://sosdg.org/~coywolf/lxr/source/Documentation/CodingStyle> 563 <http://users.sosdg.org/~qiyong/lxr/source/Documentation/CodingStyle>
564 564
565Linus Torvalds's mail on the canonical patch format: 565Linus Torvalds's mail on the canonical patch format:
566 <http://lkml.org/lkml/2005/4/7/183> 566 <http://lkml.org/lkml/2005/4/7/183>
diff --git a/Documentation/accounting/getdelays.c b/Documentation/accounting/getdelays.c
index 24c5aade8998..cbee3a27f768 100644
--- a/Documentation/accounting/getdelays.c
+++ b/Documentation/accounting/getdelays.c
@@ -196,7 +196,7 @@ void print_delayacct(struct taskstats *t)
196 "IO %15s%15s\n" 196 "IO %15s%15s\n"
197 " %15llu%15llu\n" 197 " %15llu%15llu\n"
198 "MEM %15s%15s\n" 198 "MEM %15s%15s\n"
199 " %15llu%15llu\n" 199 " %15llu%15llu\n",
200 "count", "real total", "virtual total", "delay total", 200 "count", "real total", "virtual total", "delay total",
201 t->cpu_count, t->cpu_run_real_total, t->cpu_run_virtual_total, 201 t->cpu_count, t->cpu_run_real_total, t->cpu_run_virtual_total,
202 t->cpu_delay_total, 202 t->cpu_delay_total,
diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt
index 8af392fc6ef0..dc3f49e3e539 100644
--- a/Documentation/block/biodoc.txt
+++ b/Documentation/block/biodoc.txt
@@ -477,9 +477,9 @@ With this multipage bio design:
477 the same bi_io_vec array, but with the index and size accordingly modified) 477 the same bi_io_vec array, but with the index and size accordingly modified)
478- A linked list of bios is used as before for unrelated merges (*) - this 478- A linked list of bios is used as before for unrelated merges (*) - this
479 avoids reallocs and makes independent completions easier to handle. 479 avoids reallocs and makes independent completions easier to handle.
480- Code that traverses the req list needs to make a distinction between 480- Code that traverses the req list can find all the segments of a bio
481 segments of a request (bio_for_each_segment) and the distinct completion 481 by using rq_for_each_segment. This handles the fact that a request
482 units/bios (rq_for_each_bio). 482 has multiple bios, each of which can have multiple segments.
483- Drivers which can't process a large bio in one shot can use the bi_idx 483- Drivers which can't process a large bio in one shot can use the bi_idx
484 field to keep track of the next bio_vec entry to process. 484 field to keep track of the next bio_vec entry to process.
485 (e.g a 1MB bio_vec needs to be handled in max 128kB chunks for IDE) 485 (e.g a 1MB bio_vec needs to be handled in max 128kB chunks for IDE)
@@ -664,14 +664,14 @@ in lvm or md.
664 664
6653.2.1 Traversing segments and completion units in a request 6653.2.1 Traversing segments and completion units in a request
666 666
667The macros bio_for_each_segment() and rq_for_each_bio() should be used for 667The macro rq_for_each_segment() should be used for traversing the bios
668traversing the bios in the request list (drivers should avoid directly 668in the request list (drivers should avoid directly trying to do it
669trying to do it themselves). Using these helpers should also make it easier 669themselves). Using these helpers should also make it easier to cope
670to cope with block changes in the future. 670with block changes in the future.
671 671
672 rq_for_each_bio(bio, rq) 672 struct req_iterator iter;
673 bio_for_each_segment(bio_vec, bio, i) 673 rq_for_each_segment(bio_vec, rq, iter)
674 /* bio_vec is now current segment */ 674 /* bio_vec is now current segment */
675 675
676I/O completion callbacks are per-bio rather than per-segment, so drivers 676I/O completion callbacks are per-bio rather than per-segment, so drivers
677that traverse bio chains on completion need to keep that in mind. Drivers 677that traverse bio chains on completion need to keep that in mind. Drivers
diff --git a/Documentation/block/ioprio.txt b/Documentation/block/ioprio.txt
index 1b930ef5a079..35e516b0b8a9 100644
--- a/Documentation/block/ioprio.txt
+++ b/Documentation/block/ioprio.txt
@@ -86,8 +86,15 @@ extern int sys_ioprio_get(int, int);
86#error "Unsupported arch" 86#error "Unsupported arch"
87#endif 87#endif
88 88
89_syscall3(int, ioprio_set, int, which, int, who, int, ioprio); 89static inline int ioprio_set(int which, int who, int ioprio)
90_syscall2(int, ioprio_get, int, which, int, who); 90{
91 return syscall(__NR_ioprio_set, which, who, ioprio);
92}
93
94static inline int ioprio_get(int which, int who)
95{
96 return syscall(__NR_ioprio_get, which, who);
97}
91 98
92enum { 99enum {
93 IOPRIO_CLASS_NONE, 100 IOPRIO_CLASS_NONE,
diff --git a/Documentation/crypto/async-tx-api.txt b/Documentation/crypto/async-tx-api.txt
new file mode 100644
index 000000000000..c1e9545c59bd
--- /dev/null
+++ b/Documentation/crypto/async-tx-api.txt
@@ -0,0 +1,219 @@
1 Asynchronous Transfers/Transforms API
2
31 INTRODUCTION
4
52 GENEALOGY
6
73 USAGE
83.1 General format of the API
93.2 Supported operations
103.3 Descriptor management
113.4 When does the operation execute?
123.5 When does the operation complete?
133.6 Constraints
143.7 Example
15
164 DRIVER DEVELOPER NOTES
174.1 Conformance points
184.2 "My application needs finer control of hardware channels"
19
205 SOURCE
21
22---
23
241 INTRODUCTION
25
26The async_tx API provides methods for describing a chain of asynchronous
27bulk memory transfers/transforms with support for inter-transactional
28dependencies. It is implemented as a dmaengine client that smooths over
29the details of different hardware offload engine implementations. Code
30that is written to the API can optimize for asynchronous operation and
31the API will fit the chain of operations to the available offload
32resources.
33
342 GENEALOGY
35
36The API was initially designed to offload the memory copy and
37xor-parity-calculations of the md-raid5 driver using the offload engines
38present in the Intel(R) Xscale series of I/O processors. It also built
39on the 'dmaengine' layer developed for offloading memory copies in the
40network stack using Intel(R) I/OAT engines. The following design
41features surfaced as a result:
421/ implicit synchronous path: users of the API do not need to know if
43 the platform they are running on has offload capabilities. The
44 operation will be offloaded when an engine is available and carried out
45 in software otherwise.
462/ cross channel dependency chains: the API allows a chain of dependent
47 operations to be submitted, like xor->copy->xor in the raid5 case. The
48 API automatically handles cases where the transition from one operation
49 to another implies a hardware channel switch.
503/ dmaengine extensions to support multiple clients and operation types
51 beyond 'memcpy'
52
533 USAGE
54
553.1 General format of the API:
56struct dma_async_tx_descriptor *
57async_<operation>(<op specific parameters>,
58 enum async_tx_flags flags,
59 struct dma_async_tx_descriptor *dependency,
60 dma_async_tx_callback callback_routine,
61 void *callback_parameter);
62
633.2 Supported operations:
64memcpy - memory copy between a source and a destination buffer
65memset - fill a destination buffer with a byte value
66xor - xor a series of source buffers and write the result to a
67 destination buffer
68xor_zero_sum - xor a series of source buffers and set a flag if the
69 result is zero. The implementation attempts to prevent
70 writes to memory
71
723.3 Descriptor management:
73The return value is non-NULL and points to a 'descriptor' when the operation
74has been queued to execute asynchronously. Descriptors are recycled
75resources, under control of the offload engine driver, to be reused as
76operations complete. When an application needs to submit a chain of
77operations it must guarantee that the descriptor is not automatically recycled
78before the dependency is submitted. This requires that all descriptors be
79acknowledged by the application before the offload engine driver is allowed to
80recycle (or free) the descriptor. A descriptor can be acked by one of the
81following methods:
821/ setting the ASYNC_TX_ACK flag if no child operations are to be submitted
832/ setting the ASYNC_TX_DEP_ACK flag to acknowledge the parent
84 descriptor of a new operation.
853/ calling async_tx_ack() on the descriptor.
86
873.4 When does the operation execute?
88Operations do not immediately issue after return from the
89async_<operation> call. Offload engine drivers batch operations to
90improve performance by reducing the number of mmio cycles needed to
91manage the channel. Once a driver-specific threshold is met the driver
92automatically issues pending operations. An application can force this
93event by calling async_tx_issue_pending_all(). This operates on all
94channels since the application has no knowledge of channel to operation
95mapping.
96
973.5 When does the operation complete?
98There are two methods for an application to learn about the completion
99of an operation.
1001/ Call dma_wait_for_async_tx(). This call causes the CPU to spin while
101 it polls for the completion of the operation. It handles dependency
102 chains and issuing pending operations.
1032/ Specify a completion callback. The callback routine runs in tasklet
104 context if the offload engine driver supports interrupts, or it is
105 called in application context if the operation is carried out
106 synchronously in software. The callback can be set in the call to
107 async_<operation>, or when the application needs to submit a chain of
108 unknown length it can use the async_trigger_callback() routine to set a
109 completion interrupt/callback at the end of the chain.
110
1113.6 Constraints:
1121/ Calls to async_<operation> are not permitted in IRQ context. Other
113 contexts are permitted provided constraint #2 is not violated.
1142/ Completion callback routines cannot submit new operations. This
115 results in recursion in the synchronous case and spin_locks being
116 acquired twice in the asynchronous case.
117
1183.7 Example:
119Perform a xor->copy->xor operation where each operation depends on the
120result from the previous operation:
121
122void complete_xor_copy_xor(void *param)
123{
124 printk("complete\n");
125}
126
127int run_xor_copy_xor(struct page **xor_srcs,
128 int xor_src_cnt,
129 struct page *xor_dest,
130 size_t xor_len,
131 struct page *copy_src,
132 struct page *copy_dest,
133 size_t copy_len)
134{
135 struct dma_async_tx_descriptor *tx;
136
137 tx = async_xor(xor_dest, xor_srcs, 0, xor_src_cnt, xor_len,
138 ASYNC_TX_XOR_DROP_DST, NULL, NULL, NULL);
139 tx = async_memcpy(copy_dest, copy_src, 0, 0, copy_len,
140 ASYNC_TX_DEP_ACK, tx, NULL, NULL);
141 tx = async_xor(xor_dest, xor_srcs, 0, xor_src_cnt, xor_len,
142 ASYNC_TX_XOR_DROP_DST | ASYNC_TX_DEP_ACK | ASYNC_TX_ACK,
143 tx, complete_xor_copy_xor, NULL);
144
145 async_tx_issue_pending_all();
146}
147
148See include/linux/async_tx.h for more information on the flags. See the
149ops_run_* and ops_complete_* routines in drivers/md/raid5.c for more
150implementation examples.
151
1524 DRIVER DEVELOPMENT NOTES
1534.1 Conformance points:
154There are a few conformance points required in dmaengine drivers to
155accommodate assumptions made by applications using the async_tx API:
1561/ Completion callbacks are expected to happen in tasklet context
1572/ dma_async_tx_descriptor fields are never manipulated in IRQ context
1583/ Use async_tx_run_dependencies() in the descriptor clean up path to
159 handle submission of dependent operations
160
1614.2 "My application needs finer control of hardware channels"
162This requirement seems to arise from cases where a DMA engine driver is
163trying to support device-to-memory DMA. The dmaengine and async_tx
164implementations were designed for offloading memory-to-memory
165operations; however, there are some capabilities of the dmaengine layer
166that can be used for platform-specific channel management.
167Platform-specific constraints can be handled by registering the
168application as a 'dma_client' and implementing a 'dma_event_callback' to
169apply a filter to the available channels in the system. Before showing
170how to implement a custom dma_event callback some background of
171dmaengine's client support is required.
172
173The following routines in dmaengine support multiple clients requesting
174use of a channel:
175- dma_async_client_register(struct dma_client *client)
176- dma_async_client_chan_request(struct dma_client *client)
177
178dma_async_client_register takes a pointer to an initialized dma_client
179structure. It expects that the 'event_callback' and 'cap_mask' fields
180are already initialized.
181
182dma_async_client_chan_request triggers dmaengine to notify the client of
183all channels that satisfy the capability mask. It is up to the client's
184event_callback routine to track how many channels the client needs and
185how many it is currently using. The dma_event_callback routine returns a
186dma_state_client code to let dmaengine know the status of the
187allocation.
188
189Below is the example of how to extend this functionality for
190platform-specific filtering of the available channels beyond the
191standard capability mask:
192
193static enum dma_state_client
194my_dma_client_callback(struct dma_client *client,
195 struct dma_chan *chan, enum dma_state state)
196{
197 struct dma_device *dma_dev;
198 struct my_platform_specific_dma *plat_dma_dev;
199
200 dma_dev = chan->device;
201 plat_dma_dev = container_of(dma_dev,
202 struct my_platform_specific_dma,
203 dma_dev);
204
205 if (!plat_dma_dev->platform_specific_capability)
206 return DMA_DUP;
207
208 . . .
209}
210
2115 SOURCE
212include/linux/dmaengine.h: core header file for DMA drivers and clients
213drivers/dma/dmaengine.c: offload engine channel management routines
214drivers/dma/: location for offload engine drivers
215include/linux/async_tx.h: core header file for the async_tx api
216crypto/async_tx/async_tx.c: async_tx interface to dmaengine and common code
217crypto/async_tx/async_memcpy.c: copy offload
218crypto/async_tx/async_memset.c: memory fill offload
219crypto/async_tx/async_xor.c: xor and xor zero sum offload
diff --git a/Documentation/devices.txt b/Documentation/devices.txt
index 8de132a02ba9..6c46730c631a 100644
--- a/Documentation/devices.txt
+++ b/Documentation/devices.txt
@@ -94,6 +94,8 @@ Your cooperation is appreciated.
94 9 = /dev/urandom Faster, less secure random number gen. 94 9 = /dev/urandom Faster, less secure random number gen.
95 10 = /dev/aio Asynchronous I/O notification interface 95 10 = /dev/aio Asynchronous I/O notification interface
96 11 = /dev/kmsg Writes to this come out as printk's 96 11 = /dev/kmsg Writes to this come out as printk's
97 12 = /dev/oldmem Used by crashdump kernels to access
98 the memory of the kernel that crashed.
97 99
98 1 block RAM disk 100 1 block RAM disk
99 0 = /dev/ram0 First RAM disk 101 0 = /dev/ram0 First RAM disk
diff --git a/Documentation/dvb/faq.txt b/Documentation/dvb/faq.txt
index dbcedf5833ee..2511a335abd6 100644
--- a/Documentation/dvb/faq.txt
+++ b/Documentation/dvb/faq.txt
@@ -150,7 +150,7 @@ Some very frequently asked questions about linuxtv-dvb
150 - saa7146_vv: SAA7146 video and vbi functions. These are only needed 150 - saa7146_vv: SAA7146 video and vbi functions. These are only needed
151 for full-featured cards. 151 for full-featured cards.
152 152
153 - video-buf: capture helper module for the saa7146_vv driver. This 153 - videobuf-dma-sg: capture helper module for the saa7146_vv driver. This
154 one is responsible to handle capture buffers. 154 one is responsible to handle capture buffers.
155 155
156 - dvb-ttpci: The main driver for AV7110 based, full-featured 156 - dvb-ttpci: The main driver for AV7110 based, full-featured
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware
index b4d306ae9234..f2e908d7f90d 100644
--- a/Documentation/dvb/get_dvb_firmware
+++ b/Documentation/dvb/get_dvb_firmware
@@ -111,21 +111,21 @@ sub tda10045 {
111} 111}
112 112
113sub tda10046 { 113sub tda10046 {
114 my $sourcefile = "tt_budget_217g.zip"; 114 my $sourcefile = "TT_PCI_2.19h_28_11_2006.zip";
115 my $url = "http://www.technotrend.de/new/217g/$sourcefile"; 115 my $url = "http://technotrend-online.com/download/software/219/$sourcefile";
116 my $hash = "6a7e1e2f2644b162ff0502367553c72d"; 116 my $hash = "6a7e1e2f2644b162ff0502367553c72d";
117 my $outfile = "dvb-fe-tda10046.fw"; 117 my $outfile = "dvb-fe-tda10046.fw";
118 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); 118 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
119 119
120 checkstandard(); 120 checkstandard();
121 121
122 wgetfile($sourcefile, $url); 122 wgetfile($sourcefile, $url);
123 unzip($sourcefile, $tmpdir); 123 unzip($sourcefile, $tmpdir);
124 extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x3f731, 24478, "$tmpdir/fwtmp"); 124 extract("$tmpdir/TT_PCI_2.19h_28_11_2006/software/OEM/PCI/App/ttlcdacc.dll", 0x65389, 24478, "$tmpdir/fwtmp");
125 verify("$tmpdir/fwtmp", $hash); 125 verify("$tmpdir/fwtmp", $hash);
126 copy("$tmpdir/fwtmp", $outfile); 126 copy("$tmpdir/fwtmp", $outfile);
127 127
128 $outfile; 128 $outfile;
129} 129}
130 130
131sub tda10046lifeview { 131sub tda10046lifeview {
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index a43d2878a4ef..63df2262d41a 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -197,6 +197,14 @@ Who: Len Brown <len.brown@intel.com>
197 197
198--------------------------- 198---------------------------
199 199
200What: /proc/acpi/event
201When: February 2008
202Why: /proc/acpi/event has been replaced by events via the input layer
203 and netlink since 2.6.23.
204Who: Len Brown <len.brown@intel.com>
205
206---------------------------
207
200What: Compaq touchscreen device emulation 208What: Compaq touchscreen device emulation
201When: Oct 2007 209When: Oct 2007
202Files: drivers/input/tsdev.c 210Files: drivers/input/tsdev.c
@@ -290,3 +298,32 @@ Why: All mthca hardware also supports MSI-X, which provides
290Who: Roland Dreier <rolandd@cisco.com> 298Who: Roland Dreier <rolandd@cisco.com>
291 299
292--------------------------- 300---------------------------
301
302What: sk98lin network driver
303When: Feburary 2008
304Why: In kernel tree version of driver is unmaintained. Sk98lin driver
305 replaced by the skge driver.
306Who: Stephen Hemminger <shemminger@linux-foundation.org>
307
308---------------------------
309
310What: i386/x86_64 bzImage symlinks
311When: April 2008
312
313Why: The i386/x86_64 merge provides a symlink to the old bzImage
314 location so not yet updated user space tools, e.g. package
315 scripts, do not break.
316Who: Thomas Gleixner <tglx@linutronix.de>
317
318---------------------------
319
320What: shaper network driver
321When: January 2008
322Files: drivers/net/shaper.c, include/linux/if_shaper.h
323Why: This driver has been marked obsolete for many years.
324 It was only designed to work on lower speed links and has design
325 flaws that lead to machine crashes. The qdisc infrastructure in
326 2.4 or later kernels, provides richer features and is more robust.
327Who: Stephen Hemminger <shemminger@linux-foundation.org>
328
329---------------------------
diff --git a/Documentation/filesystems/00-INDEX b/Documentation/filesystems/00-INDEX
index 571785887a4f..59db1bca7027 100644
--- a/Documentation/filesystems/00-INDEX
+++ b/Documentation/filesystems/00-INDEX
@@ -32,6 +32,8 @@ directory-locking
32 - info about the locking scheme used for directory operations. 32 - info about the locking scheme used for directory operations.
33dlmfs.txt 33dlmfs.txt
34 - info on the userspace interface to the OCFS2 DLM. 34 - info on the userspace interface to the OCFS2 DLM.
35ecryptfs.txt
36 - docs on eCryptfs: stacked cryptographic filesystem for Linux.
35ext2.txt 37ext2.txt
36 - info, mount options and specifications for the Ext2 filesystem. 38 - info, mount options and specifications for the Ext2 filesystem.
37ext3.txt 39ext3.txt
diff --git a/Documentation/filesystems/9p.txt b/Documentation/filesystems/9p.txt
index bbd8b28c13de..cda6905cbe49 100644
--- a/Documentation/filesystems/9p.txt
+++ b/Documentation/filesystems/9p.txt
@@ -6,12 +6,26 @@ ABOUT
6 6
7v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol. 7v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
8 8
9This software was originally developed by Ron Minnich <rminnich@lanl.gov> 9This software was originally developed by Ron Minnich <rminnich@sandia.gov>
10and Maya Gokhale <maya@lanl.gov>. Additional development by Greg Watson 10and Maya Gokhale. 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>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox 12<ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
13<rsc@swtch.com>. 13<rsc@swtch.com>.
14 14
15The best detailed explanation of the Linux implementation and applications of
16the 9p client is available in the form of a USENIX paper:
17 http://www.usenix.org/events/usenix05/tech/freenix/hensbergen.html
18
19Other applications are described in the following papers:
20 * XCPU & Clustering
21 http://www.xcpu.org/xcpu-talk.pdf
22 * KVMFS: control file system for KVM
23 http://www.xcpu.org/kvmfs.pdf
24 * CellFS: A New ProgrammingModel for the Cell BE
25 http://www.xcpu.org/cellfs-talk.pdf
26 * PROSE I/O: Using 9p to enable Application Partitions
27 http://plan9.escet.urjc.es/iwp9/cready/PROSE_iwp9_2006.pdf
28
15USAGE 29USAGE
16===== 30=====
17 31
@@ -90,9 +104,9 @@ subset of the namespace by extending the path: '#U*'/tmp would just export
90and export. 104and export.
91 105
92A Linux version of the 9p server is now maintained under the npfs project 106A Linux version of the 9p server is now maintained under the npfs project
93on sourceforge (http://sourceforge.net/projects/npfs). There is also a 107on sourceforge (http://sourceforge.net/projects/npfs). The currently
94more stable single-threaded version of the server (named spfs) available from 108maintained version is the single-threaded version of the server (named spfs)
95the same CVS repository. 109available from the same CVS repository.
96 110
97There are user and developer mailing lists available through the v9fs project 111There are user and developer mailing lists available through the v9fs project
98on sourceforge (http://sourceforge.net/projects/v9fs). 112on sourceforge (http://sourceforge.net/projects/v9fs).
diff --git a/Documentation/filesystems/ntfs.txt b/Documentation/filesystems/ntfs.txt
index 8ee10ec88293..e79ee2db183a 100644
--- a/Documentation/filesystems/ntfs.txt
+++ b/Documentation/filesystems/ntfs.txt
@@ -407,7 +407,7 @@ raiddev /dev/md0
407 device /dev/hda5 407 device /dev/hda5
408 raid-disk 0 408 raid-disk 0
409 device /dev/hdb1 409 device /dev/hdb1
410 raid-disl 1 410 raid-disk 1
411 411
412For linear raid, just change the raid-level above to "raid-level linear", for 412For linear raid, just change the raid-level above to "raid-level linear", for
413mirrors, change it to "raid-level 1", and for stripe sets with parity, change 413mirrors, change it to "raid-level 1", and for stripe sets with parity, change
@@ -457,6 +457,8 @@ ChangeLog
457 457
458Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog. 458Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog.
459 459
4602.1.29:
461 - Fix a deadlock when mounting read-write.
4602.1.28: 4622.1.28:
461 - Fix a deadlock. 463 - Fix a deadlock.
4622.1.27: 4642.1.27:
diff --git a/Documentation/filesystems/ocfs2.txt b/Documentation/filesystems/ocfs2.txt
index 8ccf0c1b58ed..ed55238023a9 100644
--- a/Documentation/filesystems/ocfs2.txt
+++ b/Documentation/filesystems/ocfs2.txt
@@ -28,11 +28,7 @@ Manish Singh <manish.singh@oracle.com>
28Caveats 28Caveats
29======= 29=======
30Features which OCFS2 does not support yet: 30Features which OCFS2 does not support yet:
31 - sparse files
32 - extended attributes 31 - extended attributes
33 - shared writable mmap
34 - loopback is supported, but data written will not
35 be cluster coherent.
36 - quotas 32 - quotas
37 - cluster aware flock 33 - cluster aware flock
38 - cluster aware lockf 34 - cluster aware lockf
@@ -57,3 +53,12 @@ nointr Do not allow signals to interrupt cluster
57atime_quantum=60(*) OCFS2 will not update atime unless this number 53atime_quantum=60(*) OCFS2 will not update atime unless this number
58 of seconds has passed since the last update. 54 of seconds has passed since the last update.
59 Set to zero to always update atime. 55 Set to zero to always update atime.
56data=ordered (*) All data are forced directly out to the main file
57 system prior to its metadata being committed to the
58 journal.
59data=writeback Data ordering is not preserved, data may be written
60 into the main file system after its metadata has been
61 committed to the journal.
62preferred_slot=0(*) During mount, try to use this filesystem slot first. If
63 it is in use by another node, the first empty one found
64 will be chosen. Invalid values will be ignored.
diff --git a/Documentation/hwmon/coretemp b/Documentation/hwmon/coretemp
index 870cda9416e9..170bf862437b 100644
--- a/Documentation/hwmon/coretemp
+++ b/Documentation/hwmon/coretemp
@@ -4,7 +4,7 @@ Kernel driver coretemp
4Supported chips: 4Supported chips:
5 * All Intel Core family 5 * All Intel Core family
6 Prefix: 'coretemp' 6 Prefix: 'coretemp'
7 CPUID: family 0x6, models 0xe, 0xf 7 CPUID: family 0x6, models 0xe, 0xf, 0x16
8 Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual 8 Datasheet: Intel 64 and IA-32 Architectures Software Developer's Manual
9 Volume 3A: System Programming Guide 9 Volume 3A: System Programming Guide
10 10
diff --git a/Documentation/hwmon/dme1737 b/Documentation/hwmon/dme1737
index 1a0f3d64ab80..8f446070e64a 100644
--- a/Documentation/hwmon/dme1737
+++ b/Documentation/hwmon/dme1737
@@ -6,6 +6,10 @@ Supported chips:
6 Prefix: 'dme1737' 6 Prefix: 'dme1737'
7 Addresses scanned: I2C 0x2c, 0x2d, 0x2e 7 Addresses scanned: I2C 0x2c, 0x2d, 0x2e
8 Datasheet: Provided by SMSC upon request and under NDA 8 Datasheet: Provided by SMSC upon request and under NDA
9 * SMSC SCH3112, SCH3114, SCH3116
10 Prefix: 'sch311x'
11 Addresses scanned: none, address read from Super-I/O config space
12 Datasheet: http://www.nuhorizons.com/FeaturedProducts/Volume1/SMSC/311x.pdf
9 13
10Authors: 14Authors:
11 Juerg Haefliger <juergh@gmail.com> 15 Juerg Haefliger <juergh@gmail.com>
@@ -27,16 +31,25 @@ Description
27----------- 31-----------
28 32
29This driver implements support for the hardware monitoring capabilities of the 33This driver implements support for the hardware monitoring capabilities of the
30SMSC DME1737 and Asus A8000 (which are the same) Super-I/O chips. This chip 34SMSC DME1737 and Asus A8000 (which are the same) and SMSC SCH311x Super-I/O
31features monitoring of 3 temp sensors temp[1-3] (2 remote diodes and 1 35chips. These chips feature monitoring of 3 temp sensors temp[1-3] (2 remote
32internal), 7 voltages in[0-6] (6 external and 1 internal) and 6 fan speeds 36diodes and 1 internal), 7 voltages in[0-6] (6 external and 1 internal) and up
33fan[1-6]. Additionally, the chip implements 5 PWM outputs pwm[1-3,5-6] for 37to 6 fan speeds fan[1-6]. Additionally, the chips implement up to 5 PWM
34controlling fan speeds both manually and automatically. 38outputs pwm[1-3,5-6] for controlling fan speeds both manually and
35 39automatically.
36Fan[3-6] and pwm[3,5-6] are optional features and their availability is 40
37dependent on the configuration of the chip. The driver will detect which 41For the DME1737 and A8000, fan[1-2] and pwm[1-2] are always present. Fan[3-6]
38features are present during initialization and create the sysfs attributes 42and pwm[3,5-6] are optional features and their availability depends on the
39accordingly. 43configuration of the chip. The driver will detect which features are present
44during initialization and create the sysfs attributes accordingly.
45
46For the SCH311x, fan[1-3] and pwm[1-3] are always present and fan[4-6] and
47pwm[5-6] don't exist.
48
49The hardware monitoring features of the DME1737 and A8000 are only accessible
50via SMBus, while the SCH311x only provides access via the ISA bus. The driver
51will therefore register itself as an I2C client driver if it detects a DME1737
52or A8000 and as a platform driver if it detects a SCH311x chip.
40 53
41 54
42Voltage Monitoring 55Voltage Monitoring
diff --git a/Documentation/hwmon/f71805f b/Documentation/hwmon/f71805f
index 94e0d2cbd3d2..f0d55976740a 100644
--- a/Documentation/hwmon/f71805f
+++ b/Documentation/hwmon/f71805f
@@ -6,6 +6,10 @@ Supported chips:
6 Prefix: 'f71805f' 6 Prefix: 'f71805f'
7 Addresses scanned: none, address read from Super I/O config space 7 Addresses scanned: none, address read from Super I/O config space
8 Datasheet: Available from the Fintek website 8 Datasheet: Available from the Fintek website
9 * Fintek F71806F/FG
10 Prefix: 'f71872f'
11 Addresses scanned: none, address read from Super I/O config space
12 Datasheet: Available from the Fintek website
9 * Fintek F71872F/FG 13 * Fintek F71872F/FG
10 Prefix: 'f71872f' 14 Prefix: 'f71872f'
11 Addresses scanned: none, address read from Super I/O config space 15 Addresses scanned: none, address read from Super I/O config space
@@ -38,6 +42,9 @@ The Fintek F71872F/FG Super I/O chip is almost the same, with two
38additional internal voltages monitored (VSB and battery). It also features 42additional internal voltages monitored (VSB and battery). It also features
396 VID inputs. The VID inputs are not yet supported by this driver. 436 VID inputs. The VID inputs are not yet supported by this driver.
40 44
45The Fintek F71806F/FG Super-I/O chip is essentially the same as the
46F71872F/FG, and is undistinguishable therefrom.
47
41The driver assumes that no more than one chip is present, which seems 48The driver assumes that no more than one chip is present, which seems
42reasonable. 49reasonable.
43 50
diff --git a/Documentation/hwmon/it87 b/Documentation/hwmon/it87
index 81ecc7e41c50..5b704a40256b 100644
--- a/Documentation/hwmon/it87
+++ b/Documentation/hwmon/it87
@@ -90,7 +90,8 @@ upper VID bits share their pins with voltage inputs (in5 and in6) so you
90can't have both on a given board. 90can't have both on a given board.
91 91
92The IT8716F, IT8718F and later IT8712F revisions have support for 92The IT8716F, IT8718F and later IT8712F revisions have support for
932 additional fans. They are not yet supported by the driver. 932 additional fans. They are supported by the driver for the IT8716F and
94IT8718F but not for the IT8712F
94 95
95The IT8716F and IT8718F, and late IT8712F and IT8705F also have optional 96The IT8716F and IT8718F, and late IT8712F and IT8705F also have optional
9616-bit tachometer counters for fans 1 to 3. This is better (no more fan 9716-bit tachometer counters for fans 1 to 3. This is better (no more fan
diff --git a/Documentation/hwmon/lm78 b/Documentation/hwmon/lm78
index fd5dc7a19f0e..dfc318a60fd4 100644
--- a/Documentation/hwmon/lm78
+++ b/Documentation/hwmon/lm78
@@ -56,16 +56,6 @@ should work with. This is hardcoded by the mainboard and/or processor itself.
56It is a value in volts. When it is unconnected, you will often find the 56It is a value in volts. When it is unconnected, you will often find the
57value 3.50 V here. 57value 3.50 V here.
58 58
59In addition to the alarms described above, there are a couple of additional
60ones. There is a BTI alarm, which gets triggered when an external chip has
61crossed its limits. Usually, this is connected to all LM75 chips; if at
62least one crosses its limits, this bit gets set. The CHAS alarm triggers
63if your computer case is open. The FIFO alarms should never trigger; it
64indicates an internal error. The SMI_IN alarm indicates some other chip
65has triggered an SMI interrupt. As we do not use SMI interrupts at all,
66this condition usually indicates there is a problem with some other
67device.
68
69If an alarm triggers, it will remain triggered until the hardware register 59If an alarm triggers, it will remain triggered until the hardware register
70is read at least once. This means that the cause for the alarm may 60is read at least once. This means that the cause for the alarm may
71already have disappeared! Note that in the current implementation, all 61already have disappeared! Note that in the current implementation, all
diff --git a/Documentation/hwmon/lm93 b/Documentation/hwmon/lm93
index 4e4a1dc1d2da..ac711f357faf 100644
--- a/Documentation/hwmon/lm93
+++ b/Documentation/hwmon/lm93
@@ -7,7 +7,7 @@ Supported chips:
7 Addresses scanned: I2C 0x2c-0x2e 7 Addresses scanned: I2C 0x2c-0x2e
8 Datasheet: http://www.national.com/ds.cgi/LM/LM93.pdf 8 Datasheet: http://www.national.com/ds.cgi/LM/LM93.pdf
9 9
10Author: 10Authors:
11 Mark M. Hoffman <mhoffman@lightlink.com> 11 Mark M. Hoffman <mhoffman@lightlink.com>
12 Ported to 2.6 by Eric J. Bowersox <ericb@aspsys.com> 12 Ported to 2.6 by Eric J. Bowersox <ericb@aspsys.com>
13 Adapted to 2.6.20 by Carsten Emde <ce@osadl.org> 13 Adapted to 2.6.20 by Carsten Emde <ce@osadl.org>
@@ -16,7 +16,6 @@ Author:
16Module Parameters 16Module Parameters
17----------------- 17-----------------
18 18
19(specific to LM93)
20* init: integer 19* init: integer
21 Set to non-zero to force some initializations (default is 0). 20 Set to non-zero to force some initializations (default is 0).
22* disable_block: integer 21* disable_block: integer
@@ -37,30 +36,13 @@ Module Parameters
37 I.e. this parameter controls the VID pin input thresholds; if your VID 36 I.e. this parameter controls the VID pin input thresholds; if your VID
38 inputs are not working, try changing this. The default value is "0". 37 inputs are not working, try changing this. The default value is "0".
39 38
40(common among sensor drivers)
41* force: short array (min = 1, max = 48)
42 List of adapter,address pairs to assume to be present. Autodetection
43 of the target device will still be attempted. Use one of the more
44 specific force directives below if this doesn't detect the device.
45* force_lm93: short array (min = 1, max = 48)
46 List of adapter,address pairs which are unquestionably assumed to contain
47 a 'lm93' chip
48* ignore: short array (min = 1, max = 48)
49 List of adapter,address pairs not to scan
50* ignore_range: short array (min = 1, max = 48)
51 List of adapter,start-addr,end-addr triples not to scan
52* probe: short array (min = 1, max = 48)
53 List of adapter,address pairs to scan additionally
54* probe_range: short array (min = 1, max = 48)
55 List of adapter,start-addr,end-addr triples to scan additionally
56
57 39
58Hardware Description 40Hardware Description
59-------------------- 41--------------------
60 42
61(from the datasheet) 43(from the datasheet)
62 44
63The LM93, hardware monitor, has a two wire digital interface compatible with 45The LM93 hardware monitor has a two wire digital interface compatible with
64SMBus 2.0. Using an 8-bit ADC, the LM93 measures the temperature of two remote 46SMBus 2.0. Using an 8-bit ADC, the LM93 measures the temperature of two remote
65diode connected transistors as well as its own die and 16 power supply 47diode connected transistors as well as its own die and 16 power supply
66voltages. To set fan speed, the LM93 has two PWM outputs that are each 48voltages. To set fan speed, the LM93 has two PWM outputs that are each
@@ -69,18 +51,12 @@ table based. The LM93 includes a digital filter that can be invoked to smooth
69temperature readings for better control of fan speed. The LM93 has four 51temperature readings for better control of fan speed. The LM93 has four
70tachometer inputs to measure fan speed. Limit and status registers for all 52tachometer inputs to measure fan speed. Limit and status registers for all
71measured values are included. The LM93 builds upon the functionality of 53measured values are included. The LM93 builds upon the functionality of
72previous motherboard management ASICs and uses some of the LM85 s features 54previous motherboard management ASICs and uses some of the LM85's features
73(i.e. smart tachometer mode). It also adds measurement and control support 55(i.e. smart tachometer mode). It also adds measurement and control support
74for dynamic Vccp monitoring and PROCHOT. It is designed to monitor a dual 56for dynamic Vccp monitoring and PROCHOT. It is designed to monitor a dual
75processor Xeon class motherboard with a minimum of external components. 57processor Xeon class motherboard with a minimum of external components.
76 58
77 59
78Driver Description
79------------------
80
81This driver implements support for the National Semiconductor LM93.
82
83
84User Interface 60User Interface
85-------------- 61--------------
86 62
@@ -101,7 +77,7 @@ These intervals can be found in the sysfs files prochot1_interval and
101prochot2_interval. The values in these files specify the intervals for 77prochot2_interval. The values in these files specify the intervals for
102#P1_PROCHOT and #P2_PROCHOT, respectively. Selecting a value not in this 78#P1_PROCHOT and #P2_PROCHOT, respectively. Selecting a value not in this
103list will cause the driver to use the next largest interval. The available 79list will cause the driver to use the next largest interval. The available
104intervals are: 80intervals are (in seconds):
105 81
106#PROCHOT intervals: 0.73, 1.46, 2.9, 5.8, 11.7, 23.3, 46.6, 93.2, 186, 372 82#PROCHOT intervals: 0.73, 1.46, 2.9, 5.8, 11.7, 23.3, 46.6, 93.2, 186, 372
107 83
@@ -111,12 +87,12 @@ assert #P2_PROCHOT, and vice-versa. This mode is enabled by writing a
111non-zero integer to the sysfs file prochot_short. 87non-zero integer to the sysfs file prochot_short.
112 88
113The LM93 can also override the #PROCHOT pins by driving a PWM signal onto 89The LM93 can also override the #PROCHOT pins by driving a PWM signal onto
114one or both of them. When overridden, the signal has a period of 3.56 mS, 90one or both of them. When overridden, the signal has a period of 3.56 ms,
115a minimum pulse width of 5 clocks (at 22.5kHz => 6.25% duty cycle), and 91a minimum pulse width of 5 clocks (at 22.5kHz => 6.25% duty cycle), and
116a maximum pulse width of 80 clocks (at 22.5kHz => 99.88% duty cycle). 92a maximum pulse width of 80 clocks (at 22.5kHz => 99.88% duty cycle).
117 93
118The sysfs files prochot1_override and prochot2_override contain boolean 94The sysfs files prochot1_override and prochot2_override contain boolean
119intgers which enable or disable the override function for #P1_PROCHOT and 95integers which enable or disable the override function for #P1_PROCHOT and
120#P2_PROCHOT, respectively. The sysfs file prochot_override_duty_cycle 96#P2_PROCHOT, respectively. The sysfs file prochot_override_duty_cycle
121contains a value controlling the duty cycle for the PWM signal used when 97contains a value controlling the duty cycle for the PWM signal used when
122the override function is enabled. This value ranges from 0 to 15, with 0 98the override function is enabled. This value ranges from 0 to 15, with 0
@@ -166,7 +142,7 @@ frequency values are constrained by the hardware. Selecting a value which is
166not available will cause the driver to use the next largest value. Also note 142not available will cause the driver to use the next largest value. Also note
167that this parameter has implications for the Smart Tach Mode (see above). 143that this parameter has implications for the Smart Tach Mode (see above).
168 144
169PWM Output Frequencies: 12, 36, 48, 60, 72, 84, 96, 22500 (h/w default) 145PWM Output Frequencies (in Hz): 12, 36, 48, 60, 72, 84, 96, 22500 (default)
170 146
171Automatic PWM: 147Automatic PWM:
172 148
@@ -178,7 +154,7 @@ individual control sources to which the PWM output is bound.
178The eight control sources are: temp1-temp4 (aka "zones" in the datasheet), 154The eight control sources are: temp1-temp4 (aka "zones" in the datasheet),
179#PROCHOT 1 & 2, and #VRDHOT 1 & 2. The bindings are expressed as a bitmask 155#PROCHOT 1 & 2, and #VRDHOT 1 & 2. The bindings are expressed as a bitmask
180in the sysfs files pwm<n>_auto_channels, where a "1" enables the binding, and 156in the sysfs files pwm<n>_auto_channels, where a "1" enables the binding, and
181 a "0" disables it. The h/w default is 0x0f (all temperatures bound). 157a "0" disables it. The h/w default is 0x0f (all temperatures bound).
182 158
183 0x01 - Temp 1 159 0x01 - Temp 1
184 0x02 - Temp 2 160 0x02 - Temp 2
@@ -324,89 +300,3 @@ LM93 Unique sysfs Files
324 300
325 gpio input state of 8 GPIO pins; read-only 301 gpio input state of 8 GPIO pins; read-only
326 302
327
328Sample Configuration File
329-------------------------
330
331Here is a sample LM93 chip config for sensors.conf:
332
333---------- cut here ----------
334chip "lm93-*"
335
336# VOLTAGE INPUTS
337
338 # labels and scaling based on datasheet recommendations
339 label in1 "+12V1"
340 compute in1 @ * 12.945, @ / 12.945
341 set in1_min 12 * 0.90
342 set in1_max 12 * 1.10
343
344 label in2 "+12V2"
345 compute in2 @ * 12.945, @ / 12.945
346 set in2_min 12 * 0.90
347 set in2_max 12 * 1.10
348
349 label in3 "+12V3"
350 compute in3 @ * 12.945, @ / 12.945
351 set in3_min 12 * 0.90
352 set in3_max 12 * 1.10
353
354 label in4 "FSB_Vtt"
355
356 label in5 "3GIO"
357
358 label in6 "ICH_Core"
359
360 label in7 "Vccp1"
361
362 label in8 "Vccp2"
363
364 label in9 "+3.3V"
365 set in9_min 3.3 * 0.90
366 set in9_max 3.3 * 1.10
367
368 label in10 "+5V"
369 set in10_min 5.0 * 0.90
370 set in10_max 5.0 * 1.10
371
372 label in11 "SCSI_Core"
373
374 label in12 "Mem_Core"
375
376 label in13 "Mem_Vtt"
377
378 label in14 "Gbit_Core"
379
380 # Assuming R1/R2 = 4.1143, and 3.3V reference
381 # -12V = (4.1143 + 1) * (@ - 3.3) + 3.3
382 label in15 "-12V"
383 compute in15 @ * 5.1143 - 13.57719, (@ + 13.57719) / 5.1143
384 set in15_min -12 * 0.90
385 set in15_max -12 * 1.10
386
387 label in16 "+3.3VSB"
388 set in16_min 3.3 * 0.90
389 set in16_max 3.3 * 1.10
390
391# TEMPERATURE INPUTS
392
393 label temp1 "CPU1"
394 label temp2 "CPU2"
395 label temp3 "LM93"
396
397# TACHOMETER INPUTS
398
399 label fan1 "Fan1"
400 set fan1_min 3000
401 label fan2 "Fan2"
402 set fan2_min 3000
403 label fan3 "Fan3"
404 set fan3_min 3000
405 label fan4 "Fan4"
406 set fan4_min 3000
407
408# PWM OUTPUTS
409
410 label pwm1 "CPU1"
411 label pwm2 "CPU2"
412
diff --git a/Documentation/hwmon/sysfs-interface b/Documentation/hwmon/sysfs-interface
index b3a9e1b9dbda..a17b692d2679 100644
--- a/Documentation/hwmon/sysfs-interface
+++ b/Documentation/hwmon/sysfs-interface
@@ -67,6 +67,10 @@ between readings to be caught and alarmed. The exact definition of an
67alarm (for example, whether a threshold must be met or must be exceeded 67alarm (for example, whether a threshold must be met or must be exceeded
68to cause an alarm) is chip-dependent. 68to cause an alarm) is chip-dependent.
69 69
70When setting values of hwmon sysfs attributes, the string representation of
71the desired value must be written, note that strings which are not a number
72are interpreted as 0! For more on how written strings are interpreted see the
73"sysfs attribute writes interpretation" section at the end of this file.
70 74
71------------------------------------------------------------------------- 75-------------------------------------------------------------------------
72 76
@@ -78,8 +82,21 @@ RW read/write value
78Read/write values may be read-only for some chips, depending on the 82Read/write values may be read-only for some chips, depending on the
79hardware implementation. 83hardware implementation.
80 84
81All entries are optional, and should only be created in a given driver 85All entries (except name) are optional, and should only be created in a
82if the chip has the feature. 86given driver if the chip has the feature.
87
88
89********
90* Name *
91********
92
93name The chip name.
94 This should be a short, lowercase string, not containing
95 spaces nor dashes, representing the chip name. This is
96 the only mandatory attribute.
97 I2C devices get this attribute created automatically.
98 RO
99
83 100
84************ 101************
85* Voltages * 102* Voltages *
@@ -104,18 +121,17 @@ in[0-*]_input Voltage input value.
104 by the chip driver, and must be done by the application. 121 by the chip driver, and must be done by the application.
105 However, some drivers (notably lm87 and via686a) 122 However, some drivers (notably lm87 and via686a)
106 do scale, because of internal resistors built into a chip. 123 do scale, because of internal resistors built into a chip.
107 These drivers will output the actual voltage. 124 These drivers will output the actual voltage. Rule of
108 125 thumb: drivers should report the voltage values at the
109 Typical usage: 126 "pins" of the chip.
110 in0_* CPU #1 voltage (not scaled) 127
111 in1_* CPU #2 voltage (not scaled) 128in[0-*]_label Suggested voltage channel label.
112 in2_* 3.3V nominal (not scaled) 129 Text string
113 in3_* 5.0V nominal (scaled) 130 Should only be created if the driver has hints about what
114 in4_* 12.0V nominal (scaled) 131 this voltage channel is being used for, and user-space
115 in5_* -12.0V nominal (scaled) 132 doesn't. In all other cases, the label is provided by
116 in6_* -5.0V nominal (scaled) 133 user-space.
117 in7_* varies 134 RO
118 in8_* varies
119 135
120cpu[0-*]_vid CPU core reference voltage. 136cpu[0-*]_vid CPU core reference voltage.
121 Unit: millivolt 137 Unit: millivolt
@@ -159,6 +175,13 @@ fan[1-*]_target
159 Only makes sense if the chip supports closed-loop fan speed 175 Only makes sense if the chip supports closed-loop fan speed
160 control based on the measured fan speed. 176 control based on the measured fan speed.
161 177
178fan[1-*]_label Suggested fan channel label.
179 Text string
180 Should only be created if the driver has hints about what
181 this fan channel is being used for, and user-space doesn't.
182 In all other cases, the label is provided by user-space.
183 RO
184
162Also see the Alarms section for status flags associated with fans. 185Also see the Alarms section for status flags associated with fans.
163 186
164 187
@@ -219,12 +242,12 @@ temp[1-*]_auto_point[1-*]_temp_hyst
219**************** 242****************
220 243
221temp[1-*]_type Sensor type selection. 244temp[1-*]_type Sensor type selection.
222 Integers 1 to 6 or thermistor Beta value (typically 3435) 245 Integers 1 to 6
223 RW 246 RW
224 1: PII/Celeron Diode 247 1: PII/Celeron Diode
225 2: 3904 transistor 248 2: 3904 transistor
226 3: thermal diode 249 3: thermal diode
227 4: thermistor (default/unknown Beta) 250 4: thermistor
228 5: AMD AMDSI 251 5: AMD AMDSI
229 6: Intel PECI 252 6: Intel PECI
230 Not all types are supported by all chips 253 Not all types are supported by all chips
@@ -260,18 +283,19 @@ temp[1-*]_crit_hyst
260 from the critical value. 283 from the critical value.
261 RW 284 RW
262 285
263temp[1-4]_offset 286temp[1-*]_offset
264 Temperature offset which is added to the temperature reading 287 Temperature offset which is added to the temperature reading
265 by the chip. 288 by the chip.
266 Unit: millidegree Celsius 289 Unit: millidegree Celsius
267 Read/Write value. 290 Read/Write value.
268 291
269 If there are multiple temperature sensors, temp1_* is 292temp[1-*]_label Suggested temperature channel label.
270 generally the sensor inside the chip itself, 293 Text string
271 reported as "motherboard temperature". temp2_* to 294 Should only be created if the driver has hints about what
272 temp4_* are generally sensors external to the chip 295 this temperature channel is being used for, and user-space
273 itself, for example the thermal diode inside the CPU or 296 doesn't. In all other cases, the label is provided by
274 a thermistor nearby. 297 user-space.
298 RO
275 299
276Some chips measure temperature using external thermistors and an ADC, and 300Some chips measure temperature using external thermistors and an ADC, and
277report the temperature measurement as a voltage. Converting this voltage 301report the temperature measurement as a voltage. Converting this voltage
@@ -393,14 +417,53 @@ beep_mask Bitmask for beep.
393 RW 417 RW
394 418
395 419
396********* 420sysfs attribute writes interpretation
397* Other * 421-------------------------------------
398********* 422
399 423hwmon sysfs attributes always contain numbers, so the first thing to do is to
400eeprom Raw EEPROM data in binary form. 424convert the input to a number, there are 2 ways todo this depending whether
401 RO 425the number can be negative or not:
402 426unsigned long u = simple_strtoul(buf, NULL, 10);
403pec Enable or disable PEC (SMBus only) 427long s = simple_strtol(buf, NULL, 10);
404 0: disable 428
405 1: enable 429With buf being the buffer with the user input being passed by the kernel.
406 RW 430Notice that we do not use the second argument of strto[u]l, and thus cannot
431tell when 0 is returned, if this was really 0 or is caused by invalid input.
432This is done deliberately as checking this everywhere would add a lot of
433code to the kernel.
434
435Notice that it is important to always store the converted value in an
436unsigned long or long, so that no wrap around can happen before any further
437checking.
438
439After the input string is converted to an (unsigned) long, the value should be
440checked if its acceptable. Be careful with further conversions on the value
441before checking it for validity, as these conversions could still cause a wrap
442around before the check. For example do not multiply the result, and only
443add/subtract if it has been divided before the add/subtract.
444
445What to do if a value is found to be invalid, depends on the type of the
446sysfs attribute that is being set. If it is a continuous setting like a
447tempX_max or inX_max attribute, then the value should be clamped to its
448limits using SENSORS_LIMIT(value, min_limit, max_limit). If it is not
449continuous like for example a tempX_type, then when an invalid value is
450written, -EINVAL should be returned.
451
452Example1, temp1_max, register is a signed 8 bit value (-128 - 127 degrees):
453
454 long v = simple_strtol(buf, NULL, 10) / 1000;
455 v = SENSORS_LIMIT(v, -128, 127);
456 /* write v to register */
457
458Example2, fan divider setting, valid values 2, 4 and 8:
459
460 unsigned long v = simple_strtoul(buf, NULL, 10);
461
462 switch (v) {
463 case 2: v = 1; break;
464 case 4: v = 2; break;
465 case 8: v = 3; break;
466 default:
467 return -EINVAL;
468 }
469 /* write v to register */
diff --git a/Documentation/hwmon/w83791d b/Documentation/hwmon/w83791d
index db9881df88a5..f153b2f6d62c 100644
--- a/Documentation/hwmon/w83791d
+++ b/Documentation/hwmon/w83791d
@@ -75,46 +75,64 @@ Voltage sensors (also known as IN sensors) report their values in millivolts.
75An alarm is triggered if the voltage has crossed a programmable minimum 75An alarm is triggered if the voltage has crossed a programmable minimum
76or maximum limit. 76or maximum limit.
77 77
78The bit ordering for the alarm "realtime status register" and the 78The w83791d has a global bit used to enable beeping from the speaker when an
79"beep enable registers" are different. 79alarm is triggered as well as a bitmask to enable or disable the beep for
80 80specific alarms. You need both the global beep enable bit and the
81in0 (VCORE) : alarms: 0x000001 beep_enable: 0x000001 81corresponding beep bit to be on for a triggered alarm to sound a beep.
82in1 (VINR0) : alarms: 0x000002 beep_enable: 0x002000 <== mismatch 82
83in2 (+3.3VIN): alarms: 0x000004 beep_enable: 0x000004 83The sysfs interface to the gloabal enable is via the sysfs beep_enable file.
84in3 (5VDD) : alarms: 0x000008 beep_enable: 0x000008 84This file is used for both legacy and new code.
85in4 (+12VIN) : alarms: 0x000100 beep_enable: 0x000100 85
86in5 (-12VIN) : alarms: 0x000200 beep_enable: 0x000200 86The sysfs interface to the beep bitmask has migrated from the original legacy
87in6 (-5VIN) : alarms: 0x000400 beep_enable: 0x000400 87method of a single sysfs beep_mask file to a newer method using multiple
88in7 (VSB) : alarms: 0x080000 beep_enable: 0x010000 <== mismatch 88*_beep files as described in .../Documentation/hwmon/sysfs-interface.
89in8 (VBAT) : alarms: 0x100000 beep_enable: 0x020000 <== mismatch 89
90in9 (VINR1) : alarms: 0x004000 beep_enable: 0x004000 90A similar change has occured for the bitmap corresponding to the alarms. The
91temp1 : alarms: 0x000010 beep_enable: 0x000010 91original legacy method used a single sysfs alarms file containing a bitmap
92temp2 : alarms: 0x000020 beep_enable: 0x000020 92of triggered alarms. The newer method uses multiple sysfs *_alarm files
93temp3 : alarms: 0x002000 beep_enable: 0x000002 <== mismatch 93(again following the pattern described in sysfs-interface).
94fan1 : alarms: 0x000040 beep_enable: 0x000040 94
95fan2 : alarms: 0x000080 beep_enable: 0x000080 95Since both methods read and write the underlying hardware, they can be used
96fan3 : alarms: 0x000800 beep_enable: 0x000800 96interchangeably and changes in one will automatically be reflected by
97fan4 : alarms: 0x200000 beep_enable: 0x200000 97the other. If you use the legacy bitmask method, your user-space code is
98fan5 : alarms: 0x400000 beep_enable: 0x400000 98responsible for handling the fact that the alarms and beep_mask bitmaps
99tart1 : alarms: 0x010000 beep_enable: 0x040000 <== mismatch 99are not the same (see the table below).
100tart2 : alarms: 0x020000 beep_enable: 0x080000 <== mismatch 100
101tart3 : alarms: 0x040000 beep_enable: 0x100000 <== mismatch 101NOTE: All new code should be written to use the newer sysfs-interface
102case_open : alarms: 0x001000 beep_enable: 0x001000 102specification as that avoids bitmap problems and is the preferred interface
103user_enable : alarms: -------- beep_enable: 0x800000 103going forward.
104 104
105*** NOTE: It is the responsibility of user-space code to handle the fact 105The driver reads the hardware chip values at most once every three seconds.
106that the beep enable and alarm bits are in different positions when using that 106User mode code requesting values more often will receive cached values.
107feature of the chip. 107
108 108Alarms bitmap vs. beep_mask bitmask
109When an alarm goes off, you can be warned by a beeping signal through your 109------------------------------------
110computer speaker. It is possible to enable all beeping globally, or only 110For legacy code using the alarms and beep_mask files:
111the beeping for some alarms. 111
112 112in0 (VCORE) : alarms: 0x000001 beep_mask: 0x000001
113The driver only reads the chip values each 3 seconds; reading them more 113in1 (VINR0) : alarms: 0x000002 beep_mask: 0x002000 <== mismatch
114often will do no harm, but will return 'old' values. 114in2 (+3.3VIN): alarms: 0x000004 beep_mask: 0x000004
115in3 (5VDD) : alarms: 0x000008 beep_mask: 0x000008
116in4 (+12VIN) : alarms: 0x000100 beep_mask: 0x000100
117in5 (-12VIN) : alarms: 0x000200 beep_mask: 0x000200
118in6 (-5VIN) : alarms: 0x000400 beep_mask: 0x000400
119in7 (VSB) : alarms: 0x080000 beep_mask: 0x010000 <== mismatch
120in8 (VBAT) : alarms: 0x100000 beep_mask: 0x020000 <== mismatch
121in9 (VINR1) : alarms: 0x004000 beep_mask: 0x004000
122temp1 : alarms: 0x000010 beep_mask: 0x000010
123temp2 : alarms: 0x000020 beep_mask: 0x000020
124temp3 : alarms: 0x002000 beep_mask: 0x000002 <== mismatch
125fan1 : alarms: 0x000040 beep_mask: 0x000040
126fan2 : alarms: 0x000080 beep_mask: 0x000080
127fan3 : alarms: 0x000800 beep_mask: 0x000800
128fan4 : alarms: 0x200000 beep_mask: 0x200000
129fan5 : alarms: 0x400000 beep_mask: 0x400000
130tart1 : alarms: 0x010000 beep_mask: 0x040000 <== mismatch
131tart2 : alarms: 0x020000 beep_mask: 0x080000 <== mismatch
132tart3 : alarms: 0x040000 beep_mask: 0x100000 <== mismatch
133case_open : alarms: 0x001000 beep_mask: 0x001000
134global_enable: alarms: -------- beep_mask: 0x800000 (modified via beep_enable)
115 135
116W83791D TODO: 136W83791D TODO:
117--------------- 137---------------
118Provide a patch for per-file alarms and beep enables as defined in the hwmon
119 documentation (Documentation/hwmon/sysfs-interface)
120Provide a patch for smart-fan control (still need appropriate motherboard/fans) 138Provide a patch for smart-fan control (still need appropriate motherboard/fans)
diff --git a/Documentation/i2c/busses/i2c-i801 b/Documentation/i2c/busses/i2c-i801
index fe6406f2f9a6..fde4420e3f75 100644
--- a/Documentation/i2c/busses/i2c-i801
+++ b/Documentation/i2c/busses/i2c-i801
@@ -13,7 +13,8 @@ Supported adapters:
13 * Intel 631xESB/632xESB (ESB2) 13 * Intel 631xESB/632xESB (ESB2)
14 * Intel 82801H (ICH8) 14 * Intel 82801H (ICH8)
15 * Intel ICH9 15 * Intel ICH9
16 Datasheets: Publicly available at the Intel website 16 * Intel Tolapai
17 Datasheets: Publicly available at the Intel website
17 18
18Authors: 19Authors:
19 Frodo Looijaard <frodol@dds.nl>, 20 Frodo Looijaard <frodol@dds.nl>,
diff --git a/Documentation/i2c/busses/i2c-piix4 b/Documentation/i2c/busses/i2c-piix4
index fa0c786a8bf5..cf6b6cb02aa1 100644
--- a/Documentation/i2c/busses/i2c-piix4
+++ b/Documentation/i2c/busses/i2c-piix4
@@ -6,7 +6,7 @@ Supported adapters:
6 Datasheet: Publicly available at the Intel website 6 Datasheet: Publicly available at the Intel website
7 * ServerWorks OSB4, CSB5, CSB6 and HT-1000 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 * ATI IXP200, IXP300, IXP400, SB600 and SB700 southbridges 9 * ATI IXP200, IXP300, IXP400, SB600, SB700 and SB800 southbridges
10 Datasheet: Not publicly available 10 Datasheet: Not publicly available
11 * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge 11 * Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge
12 Datasheet: Publicly available at the SMSC website http://www.smsc.com 12 Datasheet: Publicly available at the SMSC website http://www.smsc.com
diff --git a/Documentation/i2c/chips/pcf8574 b/Documentation/i2c/chips/pcf8574
index 2752c8ce3167..5c1ad1376b62 100644
--- a/Documentation/i2c/chips/pcf8574
+++ b/Documentation/i2c/chips/pcf8574
@@ -62,8 +62,6 @@ if the corresponding output is set as 1, otherwise the current output
62value, that is to say 0. 62value, that is to say 0.
63 63
64The write file is read/write. Writing a value outputs it on the I/O 64The write file is read/write. Writing a value outputs it on the I/O
65port. Reading returns the last written value. 65port. Reading returns the last written value. As it is not possible
66 66to read this value from the chip, you need to write at least once to
67On module initialization the chip is configured as eight inputs (all 67this file before you can read back from it.
68outputs to 1), so you can connect any circuit to the PCF8574(A) without
69being afraid of short-circuit.
diff --git a/Documentation/i2c/dev-interface b/Documentation/i2c/dev-interface
index b849ad636583..9dd79123ddd9 100644
--- a/Documentation/i2c/dev-interface
+++ b/Documentation/i2c/dev-interface
@@ -90,12 +90,15 @@ ioctl(file,I2C_SLAVE,long addr)
90 90
91ioctl(file,I2C_TENBIT,long select) 91ioctl(file,I2C_TENBIT,long select)
92 Selects ten bit addresses if select not equals 0, selects normal 7 bit 92 Selects ten bit addresses if select not equals 0, selects normal 7 bit
93 addresses if select equals 0. Default 0. 93 addresses if select equals 0. Default 0. This request is only valid
94 if the adapter has I2C_FUNC_10BIT_ADDR.
94 95
95ioctl(file,I2C_PEC,long select) 96ioctl(file,I2C_PEC,long select)
96 Selects SMBus PEC (packet error checking) generation and verification 97 Selects SMBus PEC (packet error checking) generation and verification
97 if select not equals 0, disables if select equals 0. Default 0. 98 if select not equals 0, disables if select equals 0. Default 0.
98 Used only for SMBus transactions. 99 Used only for SMBus transactions. This request only has an effect if the
100 the adapter has I2C_FUNC_SMBUS_PEC; it is still safe if not, it just
101 doesn't have any effect.
99 102
100ioctl(file,I2C_FUNCS,unsigned long *funcs) 103ioctl(file,I2C_FUNCS,unsigned long *funcs)
101 Gets the adapter functionality and puts it in *funcs. 104 Gets the adapter functionality and puts it in *funcs.
@@ -103,8 +106,10 @@ ioctl(file,I2C_FUNCS,unsigned long *funcs)
103ioctl(file,I2C_RDWR,struct i2c_rdwr_ioctl_data *msgset) 106ioctl(file,I2C_RDWR,struct i2c_rdwr_ioctl_data *msgset)
104 107
105 Do combined read/write transaction without stop in between. 108 Do combined read/write transaction without stop in between.
106 The argument is a pointer to a struct i2c_rdwr_ioctl_data { 109 Only valid if the adapter has I2C_FUNC_I2C. The argument is
110 a pointer to a
107 111
112 struct i2c_rdwr_ioctl_data {
108 struct i2c_msg *msgs; /* ptr to array of simple messages */ 113 struct i2c_msg *msgs; /* ptr to array of simple messages */
109 int nmsgs; /* number of messages to exchange */ 114 int nmsgs; /* number of messages to exchange */
110 } 115 }
diff --git a/Documentation/i2c/i2c-stub b/Documentation/i2c/i2c-stub
index 9cc081e69764..89e69ad3436c 100644
--- a/Documentation/i2c/i2c-stub
+++ b/Documentation/i2c/i2c-stub
@@ -6,13 +6,14 @@ This module is a very simple fake I2C/SMBus driver. It implements four
6types of SMBus commands: write quick, (r/w) byte, (r/w) byte data, and 6types of SMBus commands: write quick, (r/w) byte, (r/w) byte data, and
7(r/w) word data. 7(r/w) word data.
8 8
9You need to provide a chip address as a module parameter when loading 9You need to provide chip addresses as a module parameter when loading this
10this driver, which will then only react to SMBus commands to this address. 10driver, which will then only react to SMBus commands to these addresses.
11 11
12No hardware is needed nor associated with this module. It will accept write 12No hardware is needed nor associated with this module. It will accept write
13quick commands to one address; it will respond to the other commands (also 13quick commands to the specified addresses; it will respond to the other
14to one address) by reading from or writing to an array in memory. It will 14commands (also to the specified addresses) by reading from or writing to
15also spam the kernel logs for every command it handles. 15arrays in memory. It will also spam the kernel logs for every command it
16handles.
16 17
17A pointer register with auto-increment is implemented for all byte 18A pointer register with auto-increment is implemented for all byte
18operations. This allows for continuous byte reads like those supported by 19operations. This allows for continuous byte reads like those supported by
@@ -26,8 +27,8 @@ The typical use-case is like this:
26 27
27PARAMETERS: 28PARAMETERS:
28 29
29int chip_addr: 30int chip_addr[10]:
30 The SMBus address to emulate a chip at. 31 The SMBus addresses to emulate chips at.
31 32
32CAVEATS: 33CAVEATS:
33 34
@@ -41,9 +42,6 @@ If the hardware for your driver has banked registers (e.g. Winbond sensors
41chips) this module will not work well - although it could be extended to 42chips) this module will not work well - although it could be extended to
42support that pretty easily. 43support that pretty easily.
43 44
44Only one chip address is supported - although this module could be
45extended to support more.
46
47If you spam it hard enough, printk can be lossy. This module really wants 45If you spam it hard enough, printk can be lossy. This module really wants
48something like relayfs. 46something like relayfs.
49 47
diff --git a/Documentation/infiniband/user_mad.txt b/Documentation/infiniband/user_mad.txt
index 8ec54b974b67..744687dd195b 100644
--- a/Documentation/infiniband/user_mad.txt
+++ b/Documentation/infiniband/user_mad.txt
@@ -99,6 +99,20 @@ Transaction IDs
99 request/response pairs. The upper 32 bits are reserved for use by 99 request/response pairs. The upper 32 bits are reserved for use by
100 the kernel and will be overwritten before a MAD is sent. 100 the kernel and will be overwritten before a MAD is sent.
101 101
102P_Key Index Handling
103
104 The old ib_umad interface did not allow setting the P_Key index for
105 MADs that are sent and did not provide a way for obtaining the P_Key
106 index of received MADs. A new layout for struct ib_user_mad_hdr
107 with a pkey_index member has been defined; however, to preserve
108 binary compatibility with older applications, this new layout will
109 not be used unless the IB_USER_MAD_ENABLE_PKEY ioctl is called
110 before a file descriptor is used for anything else.
111
112 In September 2008, the IB_USER_MAD_ABI_VERSION will be incremented
113 to 6, the new layout of struct ib_user_mad_hdr will be used by
114 default, and the IB_USER_MAD_ENABLE_PKEY ioctl will be removed.
115
102Setting IsSM Capability Bit 116Setting IsSM Capability Bit
103 117
104 To set the IsSM capability bit for a port, simply open the 118 To set the IsSM capability bit for a port, simply open the
diff --git a/Documentation/input/iforce-protocol.txt b/Documentation/input/iforce-protocol.txt
index 95df4ca70e71..8777d2d321e3 100644
--- a/Documentation/input/iforce-protocol.txt
+++ b/Documentation/input/iforce-protocol.txt
@@ -1,254 +1,254 @@
1** Introduction 1** Introduction
2This document describes what I managed to discover about the protocol used to 2This document describes what I managed to discover about the protocol used to
3specify force effects to I-Force 2.0 devices. None of this information comes 3specify force effects to I-Force 2.0 devices. None of this information comes
4from Immerse. That's why you should not trust what is written in this 4from Immerse. That's why you should not trust what is written in this
5document. This document is intended to help understanding the protocol. 5document. This document is intended to help understanding the protocol.
6This is not a reference. Comments and corrections are welcome. To contact me, 6This is not a reference. Comments and corrections are welcome. To contact me,
7send an email to: deneux@ifrance.com 7send an email to: deneux@ifrance.com
8 8
9** WARNING ** 9** WARNING **
10I may not be held responsible for any dammage or harm caused if you try to 10I may not be held responsible for any dammage or harm caused if you try to
11send data to your I-Force device based on what you read in this document. 11send data to your I-Force device based on what you read in this document.
12 12
13** Preliminary Notes: 13** Preliminary Notes:
14All values are hexadecimal with big-endian encoding (msb on the left). Beware, 14All values are hexadecimal with big-endian encoding (msb on the left). Beware,
15values inside packets are encoded using little-endian. Bytes whose roles are 15values inside packets are encoded using little-endian. Bytes whose roles are
16unknown are marked ??? Information that needs deeper inspection is marked (?) 16unknown are marked ??? Information that needs deeper inspection is marked (?)
17 17
18** General form of a packet ** 18** General form of a packet **
19This is how packets look when the device uses the rs232 to communicate. 19This is how packets look when the device uses the rs232 to communicate.
202B OP LEN DATA CS 202B OP LEN DATA CS
21CS is the checksum. It is equal to the exclusive or of all bytes. 21CS is the checksum. It is equal to the exclusive or of all bytes.
22 22
23When using USB: 23When using USB:
24OP DATA 24OP DATA
25The 2B, LEN and CS fields have disappeared, probably because USB handles frames and 25The 2B, LEN and CS fields have disappeared, probably because USB handles frames and
26data corruption is handled or unsignificant. 26data corruption is handled or unsignificant.
27 27
28First, I describe effects that are sent by the device to the computer 28First, I describe effects that are sent by the device to the computer
29 29
30** Device input state 30** Device input state
31This packet is used to indicate the state of each button and the value of each 31This packet is used to indicate the state of each button and the value of each
32axis 32axis
33OP= 01 for a joystick, 03 for a wheel 33OP= 01 for a joystick, 03 for a wheel
34LEN= Varies from device to device 34LEN= Varies from device to device
3500 X-Axis lsb 3500 X-Axis lsb
3601 X-Axis msb 3601 X-Axis msb
3702 Y-Axis lsb, or gas pedal for a wheel 3702 Y-Axis lsb, or gas pedal for a wheel
3803 Y-Axis msb, or brake pedal for a wheel 3803 Y-Axis msb, or brake pedal for a wheel
3904 Throttle 3904 Throttle
4005 Buttons 4005 Buttons
4106 Lower 4 bits: Buttons 4106 Lower 4 bits: Buttons
42 Upper 4 bits: Hat 42 Upper 4 bits: Hat
4307 Rudder 4307 Rudder
44 44
45** Device effects states 45** Device effects states
46OP= 02 46OP= 02
47LEN= Varies 47LEN= Varies
4800 ? Bit 1 (Value 2) is the value of the deadman switch 4800 ? Bit 1 (Value 2) is the value of the deadman switch
4901 Bit 8 is set if the effect is playing. Bits 0 to 7 are the effect id. 4901 Bit 8 is set if the effect is playing. Bits 0 to 7 are the effect id.
5002 ?? 5002 ??
5103 Address of parameter block changed (lsb) 5103 Address of parameter block changed (lsb)
5204 Address of parameter block changed (msb) 5204 Address of parameter block changed (msb)
5305 Address of second parameter block changed (lsb) 5305 Address of second parameter block changed (lsb)
54... depending on the number of parameter blocks updated 54... depending on the number of parameter blocks updated
55 55
56** Force effect ** 56** Force effect **
57OP= 01 57OP= 01
58LEN= 0e 58LEN= 0e
5900 Channel (when playing several effects at the same time, each must be assigned a channel) 5900 Channel (when playing several effects at the same time, each must be assigned a channel)
6001 Wave form 6001 Wave form
61 Val 00 Constant 61 Val 00 Constant
62 Val 20 Square 62 Val 20 Square
63 Val 21 Triangle 63 Val 21 Triangle
64 Val 22 Sine 64 Val 22 Sine
65 Val 23 Sawtooth up 65 Val 23 Sawtooth up
66 Val 24 Sawtooth down 66 Val 24 Sawtooth down
67 Val 40 Spring (Force = f(pos)) 67 Val 40 Spring (Force = f(pos))
68 Val 41 Friction (Force = f(velocity)) and Inertia (Force = f(acceleration)) 68 Val 41 Friction (Force = f(velocity)) and Inertia (Force = f(acceleration))
69 69
70 70
7102 Axes affected and trigger 7102 Axes affected and trigger
72 Bits 4-7: Val 2 = effect along one axis. Byte 05 indicates direction 72 Bits 4-7: Val 2 = effect along one axis. Byte 05 indicates direction
73 Val 4 = X axis only. Byte 05 must contain 5a 73 Val 4 = X axis only. Byte 05 must contain 5a
74 Val 8 = Y axis only. Byte 05 must contain b4 74 Val 8 = Y axis only. Byte 05 must contain b4
75 Val c = X and Y axes. Bytes 05 must contain 60 75 Val c = X and Y axes. Bytes 05 must contain 60
76 Bits 0-3: Val 0 = No trigger 76 Bits 0-3: Val 0 = No trigger
77 Val x+1 = Button x triggers the effect 77 Val x+1 = Button x triggers the effect
78 When the whole byte is 0, cancel the previously set trigger 78 When the whole byte is 0, cancel the previously set trigger
79 79
8003-04 Duration of effect (little endian encoding, in ms) 8003-04 Duration of effect (little endian encoding, in ms)
81 81
8205 Direction of effect, if applicable. Else, see 02 for value to assign. 8205 Direction of effect, if applicable. Else, see 02 for value to assign.
83 83
8406-07 Minimum time between triggering. 8406-07 Minimum time between triggering.
85 85
8608-09 Address of periodicity or magnitude parameters 8608-09 Address of periodicity or magnitude parameters
870a-0b Address of attack and fade parameters, or ffff if none. 870a-0b Address of attack and fade parameters, or ffff if none.
88*or* 88*or*
8908-09 Address of interactive parameters for X-axis, or ffff if not applicable 8908-09 Address of interactive parameters for X-axis, or ffff if not applicable
900a-0b Address of interactive parameters for Y-axis, or ffff if not applicable 900a-0b Address of interactive parameters for Y-axis, or ffff if not applicable
91 91
920c-0d Delay before execution of effect (little endian encoding, in ms) 920c-0d Delay before execution of effect (little endian encoding, in ms)
93 93
94 94
95** Time based parameters ** 95** Time based parameters **
96 96
97*** Attack and fade *** 97*** Attack and fade ***
98OP= 02 98OP= 02
99LEN= 08 99LEN= 08
10000-01 Address where to store the parameteres 10000-01 Address where to store the parameteres
10102-03 Duration of attack (little endian encoding, in ms) 10102-03 Duration of attack (little endian encoding, in ms)
10204 Level at end of attack. Signed byte. 10204 Level at end of attack. Signed byte.
10305-06 Duration of fade. 10305-06 Duration of fade.
10407 Level at end of fade. 10407 Level at end of fade.
105 105
106*** Magnitude *** 106*** Magnitude ***
107OP= 03 107OP= 03
108LEN= 03 108LEN= 03
10900-01 Address 10900-01 Address
11002 Level. Signed byte. 11002 Level. Signed byte.
111 111
112*** Periodicity *** 112*** Periodicity ***
113OP= 04 113OP= 04
114LEN= 07 114LEN= 07
11500-01 Address 11500-01 Address
11602 Magnitude. Signed byte. 11602 Magnitude. Signed byte.
11703 Offset. Signed byte. 11703 Offset. Signed byte.
11804 Phase. Val 00 = 0 deg, Val 40 = 90 degs. 11804 Phase. Val 00 = 0 deg, Val 40 = 90 degs.
11905-06 Period (little endian encoding, in ms) 11905-06 Period (little endian encoding, in ms)
120 120
121** Interactive parameters ** 121** Interactive parameters **
122OP= 05 122OP= 05
123LEN= 0a 123LEN= 0a
12400-01 Address 12400-01 Address
12502 Positive Coeff 12502 Positive Coeff
12603 Negative Coeff 12603 Negative Coeff
12704+05 Offset (center) 12704+05 Offset (center)
12806+07 Dead band (Val 01F4 = 5000 (decimal)) 12806+07 Dead band (Val 01F4 = 5000 (decimal))
12908 Positive saturation (Val 0a = 1000 (decimal) Val 64 = 10000 (decimal)) 12908 Positive saturation (Val 0a = 1000 (decimal) Val 64 = 10000 (decimal))
13009 Negative saturation 13009 Negative saturation
131 131
132The encoding is a bit funny here: For coeffs, these are signed values. The 132The encoding is a bit funny here: For coeffs, these are signed values. The
133maximum value is 64 (100 decimal), the min is 9c. 133maximum value is 64 (100 decimal), the min is 9c.
134For the offset, the minimum value is FE0C, the maximum value is 01F4. 134For the offset, the minimum value is FE0C, the maximum value is 01F4.
135For the deadband, the minimum value is 0, the max is 03E8. 135For the deadband, the minimum value is 0, the max is 03E8.
136 136
137** Controls ** 137** Controls **
138OP= 41 138OP= 41
139LEN= 03 139LEN= 03
14000 Channel 14000 Channel
14101 Start/Stop 14101 Start/Stop
142 Val 00: Stop 142 Val 00: Stop
143 Val 01: Start and play once. 143 Val 01: Start and play once.
144 Val 41: Start and play n times (See byte 02 below) 144 Val 41: Start and play n times (See byte 02 below)
14502 Number of iterations n. 14502 Number of iterations n.
146 146
147** Init ** 147** Init **
148 148
149*** Querying features *** 149*** Querying features ***
150OP= ff 150OP= ff
151Query command. Length varies according to the query type. 151Query command. Length varies according to the query type.
152The general format of this packet is: 152The general format of this packet is:
153ff 01 QUERY [INDEX] CHECKSUM 153ff 01 QUERY [INDEX] CHECKSUM
154reponses are of the same form: 154reponses are of the same form:
155FF LEN QUERY VALUE_QUERIED CHECKSUM2 155FF LEN QUERY VALUE_QUERIED CHECKSUM2
156where LEN = 1 + length(VALUE_QUERIED) 156where LEN = 1 + length(VALUE_QUERIED)
157 157
158**** Query ram size **** 158**** Query ram size ****
159QUERY = 42 ('B'uffer size) 159QUERY = 42 ('B'uffer size)
160The device should reply with the same packet plus two additionnal bytes 160The device should reply with the same packet plus two additionnal bytes
161containing the size of the memory: 161containing the size of the memory:
162ff 03 42 03 e8 CS would mean that the device has 1000 bytes of ram available. 162ff 03 42 03 e8 CS would mean that the device has 1000 bytes of ram available.
163 163
164**** Query number of effects **** 164**** Query number of effects ****
165QUERY = 4e ('N'umber of effects) 165QUERY = 4e ('N'umber of effects)
166The device should respond by sending the number of effects that can be played 166The device should respond by sending the number of effects that can be played
167at the same time (one byte) 167at the same time (one byte)
168ff 02 4e 14 CS would stand for 20 effects. 168ff 02 4e 14 CS would stand for 20 effects.
169 169
170**** Vendor's id **** 170**** Vendor's id ****
171QUERY = 4d ('M'anufacturer) 171QUERY = 4d ('M'anufacturer)
172Query the vendors'id (2 bytes) 172Query the vendors'id (2 bytes)
173 173
174**** Product id ***** 174**** Product id *****
175QUERY = 50 ('P'roduct) 175QUERY = 50 ('P'roduct)
176Query the product id (2 bytes) 176Query the product id (2 bytes)
177 177
178**** Open device **** 178**** Open device ****
179QUERY = 4f ('O'pen) 179QUERY = 4f ('O'pen)
180No data returned. 180No data returned.
181 181
182**** Close device ***** 182**** Close device *****
183QUERY = 43 ('C')lose 183QUERY = 43 ('C')lose
184No data returned. 184No data returned.
185 185
186**** Query effect **** 186**** Query effect ****
187QUERY = 45 ('E') 187QUERY = 45 ('E')
188Send effect type. 188Send effect type.
189Returns nonzero if supported (2 bytes) 189Returns nonzero if supported (2 bytes)
190 190
191**** Firmware Version **** 191**** Firmware Version ****
192QUERY = 56 ('V'ersion) 192QUERY = 56 ('V'ersion)
193Sends back 3 bytes - major, minor, subminor 193Sends back 3 bytes - major, minor, subminor
194 194
195*** Initialisation of the device *** 195*** Initialisation of the device ***
196 196
197**** Set Control **** 197**** Set Control ****
198!!! Device dependent, can be different on different models !!! 198!!! Device dependent, can be different on different models !!!
199OP= 40 <idx> <val> [<val>] 199OP= 40 <idx> <val> [<val>]
200LEN= 2 or 3 200LEN= 2 or 3
20100 Idx 20100 Idx
202 Idx 00 Set dead zone (0..2048) 202 Idx 00 Set dead zone (0..2048)
203 Idx 01 Ignore Deadman sensor (0..1) 203 Idx 01 Ignore Deadman sensor (0..1)
204 Idx 02 Enable comm watchdog (0..1) 204 Idx 02 Enable comm watchdog (0..1)
205 Idx 03 Set the strength of the spring (0..100) 205 Idx 03 Set the strength of the spring (0..100)
206 Idx 04 Enable or disable the spring (0/1) 206 Idx 04 Enable or disable the spring (0/1)
207 Idx 05 Set axis saturation threshold (0..2048) 207 Idx 05 Set axis saturation threshold (0..2048)
208 208
209**** Set Effect State **** 209**** Set Effect State ****
210OP= 42 <val> 210OP= 42 <val>
211LEN= 1 211LEN= 1
21200 State 21200 State
213 Bit 3 Pause force feedback 213 Bit 3 Pause force feedback
214 Bit 2 Enable force feedback 214 Bit 2 Enable force feedback
215 Bit 0 Stop all effects 215 Bit 0 Stop all effects
216 216
217**** Set overall gain **** 217**** Set overall gain ****
218OP= 43 <val> 218OP= 43 <val>
219LEN= 1 219LEN= 1
22000 Gain 22000 Gain
221 Val 00 = 0% 221 Val 00 = 0%
222 Val 40 = 50% 222 Val 40 = 50%
223 Val 80 = 100% 223 Val 80 = 100%
224 224
225** Parameter memory ** 225** Parameter memory **
226 226
227Each device has a certain amount of memory to store parameters of effects. 227Each device has a certain amount of memory to store parameters of effects.
228The amount of RAM may vary, I encountered values from 200 to 1000 bytes. Below 228The amount of RAM may vary, I encountered values from 200 to 1000 bytes. Below
229is the amount of memory apparently needed for every set of parameters: 229is the amount of memory apparently needed for every set of parameters:
230 - period : 0c 230 - period : 0c
231 - magnitude : 02 231 - magnitude : 02
232 - attack and fade : 0e 232 - attack and fade : 0e
233 - interactive : 08 233 - interactive : 08
234 234
235** Appendix: How to study the protocol ? ** 235** Appendix: How to study the protocol ? **
236 236
2371. Generate effects using the force editor provided with the DirectX SDK, or use Immersion Studio (freely available at their web site in the developer section: www.immersion.com) 2371. Generate effects using the force editor provided with the DirectX SDK, or use Immersion Studio (freely available at their web site in the developer section: www.immersion.com)
2382. Start a soft spying RS232 or USB (depending on where you connected your joystick/wheel). I used ComPortSpy from fCoder (alpha version!) 2382. Start a soft spying RS232 or USB (depending on where you connected your joystick/wheel). I used ComPortSpy from fCoder (alpha version!)
2393. Play the effect, and watch what happens on the spy screen. 2393. Play the effect, and watch what happens on the spy screen.
240 240
241A few words about ComPortSpy: 241A few words about ComPortSpy:
242At first glance, this soft seems, hum, well... buggy. In fact, data appear with a few seconds latency. Personnaly, I restart it every time I play an effect. 242At first glance, this soft seems, hum, well... buggy. In fact, data appear with a few seconds latency. Personnaly, I restart it every time I play an effect.
243Remember it's free (as in free beer) and alpha! 243Remember it's free (as in free beer) and alpha!
244 244
245** URLS ** 245** URLS **
246Check www.immerse.com for Immersion Studio, and www.fcoder.com for ComPortSpy. 246Check www.immerse.com for Immersion Studio, and www.fcoder.com for ComPortSpy.
247 247
248** Author of this document ** 248** Author of this document **
249Johann Deneux <deneux@ifrance.com> 249Johann Deneux <deneux@ifrance.com>
250Home page at http://www.esil.univ-mrs.fr/~jdeneux/projects/ff/ 250Home page at http://www.esil.univ-mrs.fr/~jdeneux/projects/ff/
251 251
252Additions by Vojtech Pavlik. 252Additions by Vojtech Pavlik.
253 253
254I-Force is trademark of Immersion Corp. 254I-Force is trademark of Immersion Corp.
diff --git a/Documentation/ja_JP/HOWTO b/Documentation/ja_JP/HOWTO
index 9f08dab1e75b..d9d832c010ef 100644
--- a/Documentation/ja_JP/HOWTO
+++ b/Documentation/ja_JP/HOWTO
@@ -1,4 +1,4 @@
1NOTE: 1NOTE:
2This is a version of Documentation/HOWTO translated into Japanese. 2This is a version of Documentation/HOWTO translated into Japanese.
3This document is maintained by Tsugikazu Shibata <tshibata@ab.jp.nec.com> 3This document is maintained by Tsugikazu Shibata <tshibata@ab.jp.nec.com>
4and the JF Project team <www.linux.or.jp/JF>. 4and the JF Project team <www.linux.or.jp/JF>.
@@ -11,14 +11,14 @@ for non English (read: Japanese) speakers and is not intended as a
11fork. So if you have any comments or updates for this file, please try 11fork. So if you have any comments or updates for this file, please try
12to update the original English file first. 12to update the original English file first.
13 13
14Last Updated: 2007/07/18 14Last Updated: 2007/09/23
15================================== 15==================================
16ã“ã‚Œã¯ã€ 16ã“ã‚Œã¯ã€
17linux-2.6.22/Documentation/HOWTO 17linux-2.6.23/Documentation/HOWTO
18ã®å’Œè¨³ã§ã™ã€‚ 18ã®å’Œè¨³ã§ã™ã€‚
19 19
20翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ > 20翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ >
21翻訳日: 2007/07/16 21翻訳日: 2007/09/19
22翻訳者: Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com> 22翻訳者: Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com>
23校正者: æ¾å€‰ã•ã‚“ <nbh--mats at nifty dot com> 23校正者: æ¾å€‰ã•ã‚“ <nbh--mats at nifty dot com>
24 å°æž— é›…å…¸ã•ã‚“ (Masanori Kobayasi) <zap03216 at nifty dot ne dot jp> 24 å°æž— é›…å…¸ã•ã‚“ (Masanori Kobayasi) <zap03216 at nifty dot ne dot jp>
@@ -27,6 +27,7 @@ linux-2.6.22/Documentation/HOWTO
27 野å£ã•ã‚“ (Kenji Noguchi) <tokyo246 at gmail dot com> 27 野å£ã•ã‚“ (Kenji Noguchi) <tokyo246 at gmail dot com>
28 河内ã•ã‚“ (Takayoshi Kochi) <t-kochi at bq dot jp dot nec dot com> 28 河内ã•ã‚“ (Takayoshi Kochi) <t-kochi at bq dot jp dot nec dot com>
29 岩本ã•ã‚“ (iwamoto) <iwamoto.kn at ncos dot nec dot co dot jp> 29 岩本ã•ã‚“ (iwamoto) <iwamoto.kn at ncos dot nec dot co dot jp>
30 内田ã•ã‚“ (Satoshi Uchida) <s-uchida at ap dot jp dot nec dot com>
30================================== 31==================================
31 32
32Linux カーãƒãƒ«é–‹ç™ºã®ã‚„ã‚Šæ–¹ 33Linux カーãƒãƒ«é–‹ç™ºã®ã‚„ã‚Šæ–¹
@@ -40,7 +41,7 @@ Linux カーãƒãƒ«é–‹ç™ºã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¨å…±ã«æ´»å‹•ã™ã‚‹ã‚„り方を学ã
40手助ã‘ã«ãªã‚Šã¾ã™ã€‚ 41手助ã‘ã«ãªã‚Šã¾ã™ã€‚
41 42
42ã‚‚ã—ã€ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®ã©ã“ã‹ãŒå¤ããªã£ã¦ã„ãŸå ´åˆã«ã¯ã€ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ 43ã‚‚ã—ã€ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã®ã©ã“ã‹ãŒå¤ããªã£ã¦ã„ãŸå ´åˆã«ã¯ã€ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³
43トã®æœ€å¾Œã«ãƒªã‚¹ãƒˆã—ãŸãƒ¡ãƒ³ãƒ†ãƒŠãƒ¼ã«ãƒ‘ッãƒã‚’é€ã£ã¦ãã ã•ã„。 44トã®æœ€å¾Œã«ãƒªã‚¹ãƒˆã—ãŸãƒ¡ãƒ³ãƒ†ãƒŠã«ãƒ‘ッãƒã‚’é€ã£ã¦ãã ã•ã„。
44 45
45ã¯ã˜ã‚ã« 46ã¯ã˜ã‚ã«
46--------- 47---------
@@ -59,7 +60,7 @@ Linux カーãƒãƒ«é–‹ç™ºã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¨å…±ã«æ´»å‹•ã™ã‚‹ã‚„り方を学ã
59ãƒãƒ«é–‹ç™ºè€…ã«ã¯å¿…è¦ã§ã™ã€‚アーキテクãƒãƒ£å‘ã‘ã®ä½Žãƒ¬ãƒ™ãƒ«éƒ¨åˆ†ã®é–‹ç™ºã‚’ã™ã‚‹ã® 60ãƒãƒ«é–‹ç™ºè€…ã«ã¯å¿…è¦ã§ã™ã€‚アーキテクãƒãƒ£å‘ã‘ã®ä½Žãƒ¬ãƒ™ãƒ«éƒ¨åˆ†ã®é–‹ç™ºã‚’ã™ã‚‹ã®
60ã§ãªã‘ã‚Œã°ã€(ã©ã‚“ãªã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§ã‚‚)アセンブリ(訳注: 言語)ã¯å¿…è¦ã‚ã‚Š 61ã§ãªã‘ã‚Œã°ã€(ã©ã‚“ãªã‚¢ãƒ¼ã‚­ãƒ†ã‚¯ãƒãƒ£ã§ã‚‚)アセンブリ(訳注: 言語)ã¯å¿…è¦ã‚ã‚Š
61ã¾ã›ã‚“。以下ã®æœ¬ã¯ã€C 言語ã®å分ãªçŸ¥è­˜ã‚„何年もã®çµŒé¨“ã«å–ã£ã¦ä»£ã‚ã‚‹ã‚‚ã® 62ã¾ã›ã‚“。以下ã®æœ¬ã¯ã€C 言語ã®å分ãªçŸ¥è­˜ã‚„何年もã®çµŒé¨“ã«å–ã£ã¦ä»£ã‚ã‚‹ã‚‚ã®
62ã§ã¯ã‚ã‚Šã¾ã›ã‚“ãŒã€å°‘ãªãã¨ã‚‚リファレンスã¨ã—ã¦ã¯ã„ã„本ã§ã™ã€‚ 63ã§ã¯ã‚ã‚Šã¾ã›ã‚“ãŒã€å°‘ãªãã¨ã‚‚リファレンスã¨ã—ã¦ã¯è‰¯ã„本ã§ã™ã€‚
63 - "The C Programming Language" by Kernighan and Ritchie [Prentice Hall] 64 - "The C Programming Language" by Kernighan and Ritchie [Prentice Hall]
64 -『プログラミング言語C第2版ã€(B.W. カーニãƒãƒ³/D.M. リッãƒãƒ¼è‘— 石田晴久訳) [共立出版] 65 -『プログラミング言語C第2版ã€(B.W. カーニãƒãƒ³/D.M. リッãƒãƒ¼è‘— 石田晴久訳) [共立出版]
65 - "Practical C Programming" by Steve Oualline [O'Reilly] 66 - "Practical C Programming" by Steve Oualline [O'Reilly]
@@ -76,7 +77,7 @@ Linux カーãƒãƒ«é–‹ç™ºã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¨å…±ã«æ´»å‹•ã™ã‚‹ã‚„り方を学ã
76ã¨ãã©ãã€ã‚«ãƒ¼ãƒãƒ«ãŒãƒ„ールãƒã‚§ã‚¤ãƒ³ã‚„ C 言語拡張ã«ç½®ã„ã¦ã„ã‚‹å‰æãŒã©ã† 77ã¨ãã©ãã€ã‚«ãƒ¼ãƒãƒ«ãŒãƒ„ールãƒã‚§ã‚¤ãƒ³ã‚„ C 言語拡張ã«ç½®ã„ã¦ã„ã‚‹å‰æãŒã©ã†
77ãªã£ã¦ã„ã‚‹ã®ã‹ã‚ã‹ã‚Šã«ãã„ã“ã¨ãŒã‚ã‚Šã€ã¾ãŸã€æ®‹å¿µãªã“ã¨ã«æ±ºå®šçš„ãªãƒªãƒ•ã‚¡ 78ãªã£ã¦ã„ã‚‹ã®ã‹ã‚ã‹ã‚Šã«ãã„ã“ã¨ãŒã‚ã‚Šã€ã¾ãŸã€æ®‹å¿µãªã“ã¨ã«æ±ºå®šçš„ãªãƒªãƒ•ã‚¡
78レンスã¯å­˜åœ¨ã—ã¾ã›ã‚“。情報を得るã«ã¯ã€gcc ã® info ページ( info gcc )ã‚’ 79レンスã¯å­˜åœ¨ã—ã¾ã›ã‚“。情報を得るã«ã¯ã€gcc ã® info ページ( info gcc )ã‚’
79ã¿ã¦ãã ã•ã„。 80見ã¦ãã ã•ã„。
80 81
81ã‚ãªãŸã¯æ—¢å­˜ã®é–‹ç™ºã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¨ä¸€ç·’ã«ä½œæ¥­ã™ã‚‹æ–¹æ³•ã‚’å­¦ã¼ã†ã¨ã—ã¦ã„ã‚‹ã“ 82ã‚ãªãŸã¯æ—¢å­˜ã®é–‹ç™ºã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¨ä¸€ç·’ã«ä½œæ¥­ã™ã‚‹æ–¹æ³•ã‚’å­¦ã¼ã†ã¨ã—ã¦ã„ã‚‹ã“
82ã¨ã«ç•™æ„ã—ã¦ãã ã•ã„。ãã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¯ã€ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã€ã‚¹ã‚¿ã‚¤ãƒ«ã€ 83ã¨ã«ç•™æ„ã—ã¦ãã ã•ã„。ãã®ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¯ã€ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã€ã‚¹ã‚¿ã‚¤ãƒ«ã€
@@ -92,7 +93,7 @@ Linux カーãƒãƒ«é–‹ç™ºã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¨å…±ã«æ´»å‹•ã™ã‚‹ã‚„り方を学ã
92 93
93Linux カーãƒãƒ«ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯ GPL ライセンスã®ä¸‹ã§ãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã¦ã„ã¾ 94Linux カーãƒãƒ«ã®ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã¯ GPL ライセンスã®ä¸‹ã§ãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã¦ã„ã¾
94ã™ã€‚ライセンスã®è©³ç´°ã«ã¤ã„ã¦ã¯ã€ã‚½ãƒ¼ã‚¹ãƒ„リーã®ãƒ¡ã‚¤ãƒ³ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å­˜åœ¨ 95ã™ã€‚ライセンスã®è©³ç´°ã«ã¤ã„ã¦ã¯ã€ã‚½ãƒ¼ã‚¹ãƒ„リーã®ãƒ¡ã‚¤ãƒ³ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã«å­˜åœ¨
95ã™ã‚‹ã€COPYING ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã¿ã¦ãã ã•ã„。もã—ライセンスã«ã¤ã„ã¦ã•ã‚‰ã«è³ª 96ã™ã‚‹ã€COPYING ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’見ã¦ãã ã•ã„。もã—ライセンスã«ã¤ã„ã¦ã•ã‚‰ã«è³ª
96å•ãŒã‚ã‚Œã°ã€Linux Kernel メーリングリストã«è³ªå•ã™ã‚‹ã®ã§ã¯ãªãã€ã©ã†ãž 97å•ãŒã‚ã‚Œã°ã€Linux Kernel メーリングリストã«è³ªå•ã™ã‚‹ã®ã§ã¯ãªãã€ã©ã†ãž
97法律家ã«ç›¸è«‡ã—ã¦ãã ã•ã„。メーリングリストã®äººé”ã¯æ³•å¾‹å®¶ã§ã¯ãªãã€æ³•çš„ 98法律家ã«ç›¸è«‡ã—ã¦ãã ã•ã„。メーリングリストã®äººé”ã¯æ³•å¾‹å®¶ã§ã¯ãªãã€æ³•çš„
98å•é¡Œã«ã¤ã„ã¦ã¯å½¼ã‚‰ã®å£°æ˜Žã¯ã‚ã¦ã«ã™ã‚‹ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“。 99å•é¡Œã«ã¤ã„ã¦ã¯å½¼ã‚‰ã®å£°æ˜Žã¯ã‚ã¦ã«ã™ã‚‹ã¹ãã§ã¯ã‚ã‚Šã¾ã›ã‚“。
@@ -109,7 +110,8 @@ Linux カーãƒãƒ«ã‚½ãƒ¼ã‚¹ãƒ„リーã¯å¹…広ã„範囲ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’å
109æ–°ã—ã„ドキュメントファイルも追加ã™ã‚‹ã“ã¨ã‚’勧ã‚ã¾ã™ã€‚ 110æ–°ã—ã„ドキュメントファイルも追加ã™ã‚‹ã“ã¨ã‚’勧ã‚ã¾ã™ã€‚
110カーãƒãƒ«ã®å¤‰æ›´ãŒã€ã‚«ãƒ¼ãƒãƒ«ãŒãƒ¦ãƒ¼ã‚¶ç©ºé–“ã«å…¬é–‹ã—ã¦ã„るインターフェイス㮠111カーãƒãƒ«ã®å¤‰æ›´ãŒã€ã‚«ãƒ¼ãƒãƒ«ãŒãƒ¦ãƒ¼ã‚¶ç©ºé–“ã«å…¬é–‹ã—ã¦ã„るインターフェイスã®
111変更を引ãèµ·ã“ã™å ´åˆã€ãã®å¤‰æ›´ã‚’説明ã™ã‚‹ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãƒšãƒ¼ã‚¸ã®ãƒ‘ッãƒã‚„情報 112変更を引ãèµ·ã“ã™å ´åˆã€ãã®å¤‰æ›´ã‚’説明ã™ã‚‹ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãƒšãƒ¼ã‚¸ã®ãƒ‘ッãƒã‚„情報
112をマニュアルページã®ãƒ¡ãƒ³ãƒ†ãƒŠ mtk-manpages@gmx.net ã«é€ã‚‹ã“ã¨ã‚’勧ã‚ã¾ã™ã€‚ 113をマニュアルページã®ãƒ¡ãƒ³ãƒ†ãƒŠ mtk-manpages@gmx.net ã«é€ã‚‹ã“ã¨ã‚’勧ã‚ã¾
114ã™ã€‚
113 115
114以下ã¯ã‚«ãƒ¼ãƒãƒ«ã‚½ãƒ¼ã‚¹ãƒ„リーã«å«ã¾ã‚Œã¦ã„る読んã§ãŠãã¹ãファイルã®ä¸€è¦§ã§ 116以下ã¯ã‚«ãƒ¼ãƒãƒ«ã‚½ãƒ¼ã‚¹ãƒ„リーã«å«ã¾ã‚Œã¦ã„る読んã§ãŠãã¹ãファイルã®ä¸€è¦§ã§
115ã™- 117ã™-
@@ -117,7 +119,7 @@ Linux カーãƒãƒ«ã‚½ãƒ¼ã‚¹ãƒ„リーã¯å¹…広ã„範囲ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’å
117 README 119 README
118 ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ Linuxカーãƒãƒ«ã®ç°¡å˜ãªèƒŒæ™¯ã¨ã‚«ãƒ¼ãƒãƒ«ã‚’設定(訳注 120 ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ Linuxカーãƒãƒ«ã®ç°¡å˜ãªèƒŒæ™¯ã¨ã‚«ãƒ¼ãƒãƒ«ã‚’設定(訳注
119 configure )ã—ã€ç”Ÿæˆ(訳注 build )ã™ã‚‹ãŸã‚ã«å¿…è¦ãªã“ã¨ã¯ä½•ã‹ãŒæ›¸ã‹ã‚Œ 121 configure )ã—ã€ç”Ÿæˆ(訳注 build )ã™ã‚‹ãŸã‚ã«å¿…è¦ãªã“ã¨ã¯ä½•ã‹ãŒæ›¸ã‹ã‚Œ
120 ã¦ã„ã¾ã™ã€‚カーãƒãƒ«ã«é–¢ã—ã¦åˆã‚ã¦ã®äººã¯ã“ã“ã‹ã‚‰ã‚¹ã‚¿ãƒ¼ãƒˆã™ã‚‹ã¨ã‚ˆã„㧠122 ã¦ã„ã¾ã™ã€‚カーãƒãƒ«ã«é–¢ã—ã¦åˆã‚ã¦ã®äººã¯ã“ã“ã‹ã‚‰ã‚¹ã‚¿ãƒ¼ãƒˆã™ã‚‹ã¨è‰¯ã„ã§
121 ã—ょã†ã€‚ 123 ã—ょã†ã€‚
122 124
123 Documentation/Changes 125 Documentation/Changes
@@ -128,7 +130,7 @@ Linux カーãƒãƒ«ã‚½ãƒ¼ã‚¹ãƒ„リーã¯å¹…広ã„範囲ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’å
128 Documentation/CodingStyle 130 Documentation/CodingStyle
129 ã“れ㯠Linux カーãƒãƒ«ã®ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚¹ã‚¿ã‚¤ãƒ«ã¨èƒŒæ™¯ã«ã‚ã‚‹ç†ç”±ã‚’記述 131 ã“れ㯠Linux カーãƒãƒ«ã®ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã‚¹ã‚¿ã‚¤ãƒ«ã¨èƒŒæ™¯ã«ã‚ã‚‹ç†ç”±ã‚’記述
130 ã—ã¦ã„ã¾ã™ã€‚å…¨ã¦ã®æ–°ã—ã„コードã¯ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã«ã‚るガイドライン 132 ã—ã¦ã„ã¾ã™ã€‚å…¨ã¦ã®æ–°ã—ã„コードã¯ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã«ã‚るガイドライン
131 ã«å¾“ã£ã¦ã„ã‚‹ã“ã¨ã‚’期待ã•ã‚Œã¦ã„ã¾ã™ã€‚大部分ã®ãƒ¡ãƒ³ãƒ†ãƒŠãƒ¼ã¯ã“れらã®ãƒ«ãƒ¼ 133 ã«å¾“ã£ã¦ã„ã‚‹ã“ã¨ã‚’期待ã•ã‚Œã¦ã„ã¾ã™ã€‚大部分ã®ãƒ¡ãƒ³ãƒ†ãƒŠã¯ã“れらã®ãƒ«ãƒ¼
132 ルã«å¾“ã£ã¦ã„ã‚‹ã‚‚ã®ã ã‘ã‚’å—ã‘付ã‘ã€å¤šãã®äººã¯æ­£ã—ã„スタイルã®ã‚³ãƒ¼ãƒ‰ 134 ルã«å¾“ã£ã¦ã„ã‚‹ã‚‚ã®ã ã‘ã‚’å—ã‘付ã‘ã€å¤šãã®äººã¯æ­£ã—ã„スタイルã®ã‚³ãƒ¼ãƒ‰
133 ã ã‘をレビューã—ã¾ã™ã€‚ 135 ã ã‘をレビューã—ã¾ã™ã€‚
134 136
@@ -168,16 +170,16 @@ Linux カーãƒãƒ«ã‚½ãƒ¼ã‚¹ãƒ„リーã¯å¹…広ã„範囲ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã‚’å
168 支æ´ã—ã¦ãã ã•ã„。 170 支æ´ã—ã¦ãã ã•ã„。
169 171
170 Documentation/ManagementStyle 172 Documentation/ManagementStyle
171 ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã¯ Linux カーãƒãƒ«ã®ãƒ¡ãƒ³ãƒ†ãƒŠãƒ¼é”ãŒã©ã†è¡Œå‹•ã™ã‚‹ã‹ã€ 173 ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã¯ Linux カーãƒãƒ«ã®ãƒ¡ãƒ³ãƒ†ãƒŠé”ãŒã©ã†è¡Œå‹•ã™ã‚‹ã‹ã€
172 彼らã®æ‰‹æ³•ã®èƒŒæ™¯ã«ã‚る共有ã•ã‚Œã¦ã„る精神ã«ã¤ã„ã¦è¨˜è¿°ã—ã¦ã„ã¾ã™ã€‚ã“ 174 彼らã®æ‰‹æ³•ã®èƒŒæ™¯ã«ã‚る共有ã•ã‚Œã¦ã„る精神ã«ã¤ã„ã¦è¨˜è¿°ã—ã¦ã„ã¾ã™ã€‚ã“
173 ã‚Œã¯ã‚«ãƒ¼ãƒãƒ«é–‹ç™ºã®åˆå¿ƒè€…ãªã‚‰ï¼ˆã‚‚ã—ãã¯ã€å˜ã«èˆˆå‘³ãŒã‚ã‚‹ã ã‘ã®äººã§ã‚‚) 175 ã‚Œã¯ã‚«ãƒ¼ãƒãƒ«é–‹ç™ºã®åˆå¿ƒè€…ãªã‚‰ï¼ˆã‚‚ã—ãã¯ã€å˜ã«èˆˆå‘³ãŒã‚ã‚‹ã ã‘ã®äººã§ã‚‚)
174 é‡è¦ã§ã™ã€‚ãªãœãªã‚‰ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã¯ã€ã‚«ãƒ¼ãƒãƒ«ãƒ¡ãƒ³ãƒ†ãƒŠãƒ¼é”ã®ç‹¬ç‰¹ãª 176 é‡è¦ã§ã™ã€‚ãªãœãªã‚‰ã“ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã¯ã€ã‚«ãƒ¼ãƒãƒ«ãƒ¡ãƒ³ãƒ†ãƒŠé”ã®ç‹¬ç‰¹ãª
175 行動ã«ã¤ã„ã¦ã®å¤šãã®èª¤è§£ã‚„混乱を解消ã™ã‚‹ã‹ã‚‰ã§ã™ã€‚ 177 行動ã«ã¤ã„ã¦ã®å¤šãã®èª¤è§£ã‚„混乱を解消ã™ã‚‹ã‹ã‚‰ã§ã™ã€‚
176 178
177 Documentation/stable_kernel_rules.txt 179 Documentation/stable_kernel_rules.txt
178 ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã©ã®ã‚ˆã†ã« stable カーãƒãƒ«ã®ãƒªãƒªãƒ¼ã‚¹ãŒè¡Œã‚れるã‹ã®ãƒ«ãƒ¼ 180 ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã©ã®ã‚ˆã†ã« stable カーãƒãƒ«ã®ãƒªãƒªãƒ¼ã‚¹ãŒè¡Œã‚れるã‹ã®ãƒ«ãƒ¼
179 ルãŒè¨˜è¿°ã•ã‚Œã¦ã„ã¾ã™ã€‚ãã—ã¦ã“れらã®ãƒªãƒªãƒ¼ã‚¹ã®ä¸­ã®ã©ã“ã‹ã§å¤‰æ›´ã‚’å– 181 ルãŒè¨˜è¿°ã•ã‚Œã¦ã„ã¾ã™ã€‚ãã—ã¦ã“れらã®ãƒªãƒªãƒ¼ã‚¹ã®ä¸­ã®ã©ã“ã‹ã§å¤‰æ›´ã‚’å–
180 り入れã¦ã‚‚らã„ãŸã„å ´åˆã«ä½•ã‚’ã™ã‚Œã°ã„ã„ã‹ãŒç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚ 182 り入れã¦ã‚‚らã„ãŸã„å ´åˆã«ä½•ã‚’ã™ã‚Œã°è‰¯ã„ã‹ãŒç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚
181 183
182 Documentation/kernel-docs.txt 184 Documentation/kernel-docs.txt
183  カーãƒãƒ«é–‹ç™ºã«ä»˜éšã™ã‚‹å¤–部ドキュメントã®ãƒªã‚¹ãƒˆã§ã™ã€‚ã‚‚ã—ã‚ãªãŸãŒ 185  カーãƒãƒ«é–‹ç™ºã«ä»˜éšã™ã‚‹å¤–部ドキュメントã®ãƒªã‚¹ãƒˆã§ã™ã€‚ã‚‚ã—ã‚ãªãŸãŒ
@@ -218,9 +220,9 @@ web サイトã«ã¯ã€ã‚³ãƒ¼ãƒ‰ã®æ§‹æˆã€ã‚µãƒ–システムã€ç¾åœ¨å­˜åœ¨ã™ã
218ã“ã“ã«ã¯ã€ã¾ãŸã€ã‚«ãƒ¼ãƒãƒ«ã®ã‚³ãƒ³ãƒ‘イルã®ã‚„り方やパッãƒã®å½“ã¦æ–¹ãªã©ã®é–“接 220ã“ã“ã«ã¯ã€ã¾ãŸã€ã‚«ãƒ¼ãƒãƒ«ã®ã‚³ãƒ³ãƒ‘イルã®ã‚„り方やパッãƒã®å½“ã¦æ–¹ãªã©ã®é–“接
219çš„ãªåŸºæœ¬æƒ…報も記述ã•ã‚Œã¦ã„ã¾ã™ã€‚ 221çš„ãªåŸºæœ¬æƒ…報も記述ã•ã‚Œã¦ã„ã¾ã™ã€‚
220 222
221ã‚ãªãŸãŒã©ã“ã‹ã‚‰ã‚¹ã‚¿ãƒ¼ãƒˆã—ã¦ã‚ˆã„ã‹ã‚ã‹ã‚‰ãªã„ãŒã€Linux カーãƒãƒ«é–‹ç™ºã‚³ãƒŸãƒ¥ 223ã‚ãªãŸãŒã©ã“ã‹ã‚‰ã‚¹ã‚¿ãƒ¼ãƒˆã—ã¦è‰¯ã„ã‹ã‚ã‹ã‚‰ãªã„ãŒã€Linux カーãƒãƒ«é–‹ç™ºã‚³ãƒŸãƒ¥
222ニティã«å‚加ã—ã¦ä½•ã‹ã™ã‚‹ã“ã¨ã‚’ã•ãŒã—ã¦ã„ã‚‹å ´åˆã«ã¯ã€Linux kernel 224ニティã«å‚加ã—ã¦ä½•ã‹ã™ã‚‹ã“ã¨ã‚’ã•ãŒã—ã¦ã„ã‚‹å ´åˆã«ã¯ã€Linux kernel
223Janitor's プロジェクトã«ã„ã‘ã°ã‚ˆã„ã§ã—ょㆠ- 225Janitor's プロジェクトã«ã„ã‘ã°è‰¯ã„ã§ã—ょㆠ-
224 http://janitor.kernelnewbies.org/ 226 http://janitor.kernelnewbies.org/
225ã“ã“ã¯ãã®ã‚ˆã†ãªã‚¹ã‚¿ãƒ¼ãƒˆã‚’ã™ã‚‹ã®ã«ã†ã£ã¦ã¤ã‘ã®å ´æ‰€ã§ã™ã€‚ã“ã“ã«ã¯ã€ 227ã“ã“ã¯ãã®ã‚ˆã†ãªã‚¹ã‚¿ãƒ¼ãƒˆã‚’ã™ã‚‹ã®ã«ã†ã£ã¦ã¤ã‘ã®å ´æ‰€ã§ã™ã€‚ã“ã“ã«ã¯ã€
226Linux カーãƒãƒ«ã‚½ãƒ¼ã‚¹ãƒ„リーã®ä¸­ã«å«ã¾ã‚Œã‚‹ã€ãã‚Œã„ã«ã—ã€ä¿®æ­£ã—ãªã‘ã‚Œã°ãª 228Linux カーãƒãƒ«ã‚½ãƒ¼ã‚¹ãƒ„リーã®ä¸­ã«å«ã¾ã‚Œã‚‹ã€ãã‚Œã„ã«ã—ã€ä¿®æ­£ã—ãªã‘ã‚Œã°ãª
@@ -243,7 +245,7 @@ Linux カーãƒãƒ«ã‚½ãƒ¼ã‚¹ãƒ„リーã®ä¸­ã«å«ã¾ã‚Œã‚‹ã€ãã‚Œã„ã«ã—ã€ä¿
243自己å‚照方å¼ã§ã€ç´¢å¼•ãŒã¤ã„㟠web å½¢å¼ã§ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’å‚ç…§ã™ã‚‹ã“ã¨ãŒ 245自己å‚照方å¼ã§ã€ç´¢å¼•ãŒã¤ã„㟠web å½¢å¼ã§ã€ã‚½ãƒ¼ã‚¹ã‚³ãƒ¼ãƒ‰ã‚’å‚ç…§ã™ã‚‹ã“ã¨ãŒ
244ã§ãã¾ã™ã€‚ã“ã®æœ€æ–°ã®ç´ æ™´ã—ã„カーãƒãƒ«ã‚³ãƒ¼ãƒ‰ã®ãƒªãƒã‚¸ãƒˆãƒªã¯ä»¥ä¸‹ã§è¦‹ã¤ã‹ã‚Š 246ã§ãã¾ã™ã€‚ã“ã®æœ€æ–°ã®ç´ æ™´ã—ã„カーãƒãƒ«ã‚³ãƒ¼ãƒ‰ã®ãƒªãƒã‚¸ãƒˆãƒªã¯ä»¥ä¸‹ã§è¦‹ã¤ã‹ã‚Š
245ã¾ã™- 247ã¾ã™-
246 http://sosdg.org/~coywolf/lxr/ 248 http://sosdg.org/~qiyong/lxr/
247 249
248開発プロセス 250開発プロセス
249----------------------- 251-----------------------
@@ -265,9 +267,9 @@ Linux カーãƒãƒ«ã®é–‹ç™ºãƒ—ロセスã¯ç¾åœ¨å¹¾ã¤ã‹ã®ç•°ãªã‚‹ãƒ¡ã‚¤ãƒ³ã‚
265以下ã®ã¨ãŠã‚Š- 267以下ã®ã¨ãŠã‚Š-
266 268
267 - æ–°ã—ã„カーãƒãƒ«ãŒãƒªãƒªãƒ¼ã‚¹ã•ã‚ŒãŸç›´å¾Œã«ã€2週間ã®ç‰¹åˆ¥æœŸé–“ãŒè¨­ã‘られ〠269 - æ–°ã—ã„カーãƒãƒ«ãŒãƒªãƒªãƒ¼ã‚¹ã•ã‚ŒãŸç›´å¾Œã«ã€2週間ã®ç‰¹åˆ¥æœŸé–“ãŒè¨­ã‘られã€
268 ã“ã®æœŸé–“中ã«ã€ãƒ¡ãƒ³ãƒ†ãƒŠãƒ¼é”㯠Linus ã«å¤§ããªå·®åˆ†ã‚’é€ã‚‹ã“ã¨ãŒã§ãã¾ 270 ã“ã®æœŸé–“中ã«ã€ãƒ¡ãƒ³ãƒ†ãƒŠé”㯠Linus ã«å¤§ããªå·®åˆ†ã‚’é€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
269 ã™ã€‚ã“ã®ã‚ˆã†ãªå·®åˆ†ã¯é€šå¸¸ -mm カーãƒãƒ«ã«æ•°é€±é–“å«ã¾ã‚Œã¦ããŸãƒ‘ッãƒã§ 271 ã“ã®ã‚ˆã†ãªå·®åˆ†ã¯é€šå¸¸ -mm カーãƒãƒ«ã«æ•°é€±é–“å«ã¾ã‚Œã¦ããŸãƒ‘ッãƒã§ã™ã€‚
270 ã™ã€‚ 大ããªå¤‰æ›´ã¯ git(カーãƒãƒ«ã®ã‚½ãƒ¼ã‚¹ç®¡ç†ãƒ„ールã€è©³ç´°ã¯ 272 大ããªå¤‰æ›´ã¯ git(カーãƒãƒ«ã®ã‚½ãƒ¼ã‚¹ç®¡ç†ãƒ„ールã€è©³ç´°ã¯
271 http://git.or.cz/ å‚ç…§) を使ã£ã¦é€ã‚‹ã®ãŒå¥½ã¾ã—ã„ã‚„ã‚Šæ–¹ã§ã™ãŒã€ãƒ‘ッ 273 http://git.or.cz/ å‚ç…§) を使ã£ã¦é€ã‚‹ã®ãŒå¥½ã¾ã—ã„ã‚„ã‚Šæ–¹ã§ã™ãŒã€ãƒ‘ッ
272 ãƒãƒ•ã‚¡ã‚¤ãƒ«ã®å½¢å¼ã®ã¾ã¾é€ã‚‹ã®ã§ã‚‚å分ã§ã™ã€‚ 274 ãƒãƒ•ã‚¡ã‚¤ãƒ«ã®å½¢å¼ã®ã¾ã¾é€ã‚‹ã®ã§ã‚‚å分ã§ã™ã€‚
273 275
@@ -285,6 +287,10 @@ Linux カーãƒãƒ«ã®é–‹ç™ºãƒ—ロセスã¯ç¾åœ¨å¹¾ã¤ã‹ã®ç•°ãªã‚‹ãƒ¡ã‚¤ãƒ³ã‚
285 ã«å®‰å®šã—ãŸçŠ¶æ…‹ã«ã‚ã‚‹ã¨åˆ¤æ–­ã—ãŸã¨ãã«ãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã¾ã™ã€‚目標ã¯æ¯Žé€±æ–° 287 ã«å®‰å®šã—ãŸçŠ¶æ…‹ã«ã‚ã‚‹ã¨åˆ¤æ–­ã—ãŸã¨ãã«ãƒªãƒªãƒ¼ã‚¹ã•ã‚Œã¾ã™ã€‚目標ã¯æ¯Žé€±æ–°
286 ã—ã„ -rc カーãƒãƒ«ã‚’リリースã™ã‚‹ã“ã¨ã§ã™ã€‚ 288 ã—ã„ -rc カーãƒãƒ«ã‚’リリースã™ã‚‹ã“ã¨ã§ã™ã€‚
287 289
290 - 以下㮠URL ã§å„ -rc リリースã«å­˜åœ¨ã™ã‚‹æ—¢çŸ¥ã®å¾Œæˆ»ã‚Šå•é¡Œã®ãƒªã‚¹ãƒˆ
291 ãŒè¿½è·¡ã•ã‚Œã¾ã™-
292 http://kernelnewbies.org/known_regressions
293
288 - ã“ã®ãƒ—ロセスã¯ã‚«ãƒ¼ãƒãƒ«ãŒ 「準備ãŒã§ããŸã€ã¨è€ƒãˆã‚‰ã‚Œã‚‹ã¾ã§ç¶™ç¶šã—ã¾ 294 - ã“ã®ãƒ—ロセスã¯ã‚«ãƒ¼ãƒãƒ«ãŒ 「準備ãŒã§ããŸã€ã¨è€ƒãˆã‚‰ã‚Œã‚‹ã¾ã§ç¶™ç¶šã—ã¾
289 ã™ã€‚ã“ã®ãƒ—ロセスã¯ã ã„ãŸã„ 6週間継続ã—ã¾ã™ã€‚ 295 ã™ã€‚ã“ã®ãƒ—ロセスã¯ã ã„ãŸã„ 6週間継続ã—ã¾ã™ã€‚
290 296
@@ -331,8 +337,8 @@ Andrew ã¯å€‹åˆ¥ã®ã‚µãƒ–システムカーãƒãƒ«ãƒ„リーã¨ãƒ‘ッãƒã‚’å…¨ã¦é
331linux-kernel メーリングリストã§åŽé›†ã•ã‚ŒãŸå¤šæ•°ã®ãƒ‘ッãƒã¨åŒæ™‚ã«ä¸€ã¤ã«ã¾ 337linux-kernel メーリングリストã§åŽé›†ã•ã‚ŒãŸå¤šæ•°ã®ãƒ‘ッãƒã¨åŒæ™‚ã«ä¸€ã¤ã«ã¾
332ã¨ã‚ã¾ã™ã€‚ 338ã¨ã‚ã¾ã™ã€‚
333ã“ã®ãƒ„リーã¯æ–°æ©Ÿèƒ½ã¨ãƒ‘ッãƒãŒæ¤œè¨¼ã•ã‚Œã‚‹å ´ã¨ãªã‚Šã¾ã™ã€‚ã‚る期間ã®é–“パッム339ã“ã®ãƒ„リーã¯æ–°æ©Ÿèƒ½ã¨ãƒ‘ッãƒãŒæ¤œè¨¼ã•ã‚Œã‚‹å ´ã¨ãªã‚Šã¾ã™ã€‚ã‚る期間ã®é–“パッãƒ
334㌠-mm ã«å…¥ã£ã¦ä¾¡å€¤ã‚’証明ã•ã‚ŒãŸã‚‰ã€Andrew やサブシステムメンテナãŒã€ãƒ¡ 340㌠-mm ã«å…¥ã£ã¦ä¾¡å€¤ã‚’証明ã•ã‚ŒãŸã‚‰ã€Andrew やサブシステムメンテナãŒã€
335インラインã¸å…¥ã‚Œã‚‹ã‚ˆã†ã« Linus ã«ãƒ—ッシュã—ã¾ã™ã€‚ 341メインラインã¸å…¥ã‚Œã‚‹ã‚ˆã†ã« Linus ã«ãƒ—ッシュã—ã¾ã™ã€‚
336 342
337メインカーãƒãƒ«ãƒ„リーã«å«ã‚ã‚‹ãŸã‚ã« Linus ã«é€ã‚‹å‰ã«ã€ã™ã¹ã¦ã®æ–°ã—ã„パッ 343メインカーãƒãƒ«ãƒ„リーã«å«ã‚ã‚‹ãŸã‚ã« Linus ã«é€ã‚‹å‰ã«ã€ã™ã¹ã¦ã®æ–°ã—ã„パッ
338ãƒãŒ -mm ツリーã§ãƒ†ã‚¹ãƒˆã•ã‚Œã‚‹ã“ã¨ãŒå¼·ã推奨ã•ã‚Œã¾ã™ã€‚ 344ãƒãŒ -mm ツリーã§ãƒ†ã‚¹ãƒˆã•ã‚Œã‚‹ã“ã¨ãŒå¼·ã推奨ã•ã‚Œã¾ã™ã€‚
@@ -460,7 +466,7 @@ MAINTAINERS ファイルã«ãƒªã‚¹ãƒˆãŒã‚ã‚Šã¾ã™ã®ã§å‚ç…§ã—ã¦ãã ã•ã
460ã›ã‚“- 466ã›ã‚“-
461彼らã¯ã‚ãªãŸã®ãƒ‘ッãƒã®è¡Œæ¯Žã«ã‚³ãƒ¡ãƒ³ãƒˆã‚’入れãŸã„ã®ã§ã€ãã®ãŸã‚ã«ã¯ãã†ã™ 467彼らã¯ã‚ãªãŸã®ãƒ‘ッãƒã®è¡Œæ¯Žã«ã‚³ãƒ¡ãƒ³ãƒˆã‚’入れãŸã„ã®ã§ã€ãã®ãŸã‚ã«ã¯ãã†ã™
462ã‚‹ã—ã‹ã‚ã‚Šã¾ã›ã‚“。ã‚ãªãŸã®ãƒ¡ãƒ¼ãƒ«ãƒ—ログラムãŒç©ºç™½ã‚„タブを圧縮ã—ãªã„よㆠ468ã‚‹ã—ã‹ã‚ã‚Šã¾ã›ã‚“。ã‚ãªãŸã®ãƒ¡ãƒ¼ãƒ«ãƒ—ログラムãŒç©ºç™½ã‚„タブを圧縮ã—ãªã„よã†
463ã«ç¢ºèªã—ãŸæ–¹ãŒã„ã„ã§ã™ã€‚最åˆã®è‰¯ã„テストã¨ã—ã¦ã¯ã€è‡ªåˆ†ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ã£ã¦ 469ã«ç¢ºèªã—ãŸæ–¹ãŒè‰¯ã„ã§ã™ã€‚最åˆã®è‰¯ã„テストã¨ã—ã¦ã¯ã€è‡ªåˆ†ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ã£ã¦
464ã¿ã¦ã€ãã®ãƒ‘ッãƒã‚’自分ã§å½“ã¦ã¦ã¿ã‚‹ã“ã¨ã§ã™ã€‚ã‚‚ã—ãã‚ŒãŒã†ã¾ãè¡Œã‹ãªã„㪠470ã¿ã¦ã€ãã®ãƒ‘ッãƒã‚’自分ã§å½“ã¦ã¦ã¿ã‚‹ã“ã¨ã§ã™ã€‚ã‚‚ã—ãã‚ŒãŒã†ã¾ãè¡Œã‹ãªã„ãª
465らã€ã‚ãªãŸã®ãƒ¡ãƒ¼ãƒ«ãƒ—ログラムを直ã—ã¦ã‚‚らã†ã‹ã€æ­£ã—ãå‹•ãよã†ã«å¤‰ãˆã‚‹ã¹ 471らã€ã‚ãªãŸã®ãƒ¡ãƒ¼ãƒ«ãƒ—ログラムを直ã—ã¦ã‚‚らã†ã‹ã€æ­£ã—ãå‹•ãよã†ã«å¤‰ãˆã‚‹ã¹
466ãã§ã™ã€‚ 472ãã§ã™ã€‚
@@ -507,14 +513,14 @@ MAINTAINERS ファイルã«ãƒªã‚¹ãƒˆãŒã‚ã‚Šã¾ã™ã®ã§å‚ç…§ã—ã¦ãã ã•ã
507ã¨ã‚‚普通ã®ã“ã¨ã§ã™ã€‚ã“ã‚Œã¯ã‚ãªãŸã®ãƒ‘ッãƒãŒå—ã‘入れられãªã„ã¨ã„ã†ã“ã¨ã§ 513ã¨ã‚‚普通ã®ã“ã¨ã§ã™ã€‚ã“ã‚Œã¯ã‚ãªãŸã®ãƒ‘ッãƒãŒå—ã‘入れられãªã„ã¨ã„ã†ã“ã¨ã§
508㯠*ã‚ã‚Šã¾ã›ã‚“*ã€ãã—ã¦ã‚ãªãŸè‡ªèº«ã«å対ã™ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ã®ã§ã‚‚ *ã‚ã‚Šã¾ 514㯠*ã‚ã‚Šã¾ã›ã‚“*ã€ãã—ã¦ã‚ãªãŸè‡ªèº«ã«å対ã™ã‚‹ã“ã¨ã‚’æ„味ã™ã‚‹ã®ã§ã‚‚ *ã‚ã‚Šã¾
509ã›ã‚“*。å˜ã«è‡ªåˆ†ã®ãƒ‘ッãƒã«å¯¾ã—ã¦æŒ‡æ‘˜ã•ã‚ŒãŸå•é¡Œã‚’å…¨ã¦ä¿®æ­£ã—ã¦å†é€ã™ã‚Œã° 515ã›ã‚“*。å˜ã«è‡ªåˆ†ã®ãƒ‘ッãƒã«å¯¾ã—ã¦æŒ‡æ‘˜ã•ã‚ŒãŸå•é¡Œã‚’å…¨ã¦ä¿®æ­£ã—ã¦å†é€ã™ã‚Œã°
510ã„ã„ã®ã§ã™ã€‚ 516良ã„ã®ã§ã™ã€‚
511 517
512 518
513カーãƒãƒ«ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¨ä¼æ¥­çµ„ç¹”ã®ã¡ãŒã„ 519カーãƒãƒ«ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¨ä¼æ¥­çµ„ç¹”ã®ã¡ãŒã„
514----------------------------------------------------------------- 520-----------------------------------------------------------------
515 521
516カーãƒãƒ«ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¯å¤§éƒ¨åˆ†ã®ä¼çµ±çš„ãªä¼šç¤¾ã®é–‹ç™ºç’°å¢ƒã¨ã¯ç•°ã£ãŸã‚„り方㧠522カーãƒãƒ«ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¯å¤§éƒ¨åˆ†ã®ä¼çµ±çš„ãªä¼šç¤¾ã®é–‹ç™ºç’°å¢ƒã¨ã¯ç•°ã£ãŸã‚„ã‚Šæ–¹ã§
517å‹•ã„ã¦ã„ã¾ã™ã€‚以下ã¯å•é¡Œã‚’é¿ã‘ã‚‹ãŸã‚ã«ã§ãã‚‹ã¨ã‚ˆã„ã“ã¨ã®ã®ãƒªã‚¹ãƒˆã§ã™- 523å‹•ã„ã¦ã„ã¾ã™ã€‚以下ã¯å•é¡Œã‚’é¿ã‘ã‚‹ãŸã‚ã«ã§ãã‚‹ã¨è‰¯ã„ã“ã¨ã®ãƒªã‚¹ãƒˆã§ã™-
518 524
519 ã‚ãªãŸã®æ案ã™ã‚‹å¤‰æ›´ã«ã¤ã„ã¦è¨€ã†ã¨ãã®ã†ã¾ã„言ã„方: 525 ã‚ãªãŸã®æ案ã™ã‚‹å¤‰æ›´ã«ã¤ã„ã¦è¨€ã†ã¨ãã®ã†ã¾ã„言ã„方:
520 526
@@ -525,7 +531,7 @@ MAINTAINERS ファイルã«ãƒªã‚¹ãƒˆãŒã‚ã‚Šã¾ã™ã®ã§å‚ç…§ã—ã¦ãã ã•ã
525 - "以下ã¯ä¸€é€£ã®å°ã•ãªãƒ‘ッãƒç¾¤ã§ã™ãŒ..." 531 - "以下ã¯ä¸€é€£ã®å°ã•ãªãƒ‘ッãƒç¾¤ã§ã™ãŒ..."
526 - "ã“ã‚Œã¯å…¸åž‹çš„ãªãƒžã‚·ãƒ³ã§ã®æ€§èƒ½ã‚’å‘上ã•ã›ã¾ã™.." 532 - "ã“ã‚Œã¯å…¸åž‹çš„ãªãƒžã‚·ãƒ³ã§ã®æ€§èƒ½ã‚’å‘上ã•ã›ã¾ã™.."
527 533
528 ã‚„ã‚ãŸæ–¹ãŒã„ã„悪ã„言ã„方: 534 ã‚„ã‚ãŸæ–¹ãŒè‰¯ã„悪ã„言ã„方:
529 535
530 - ã“ã®ã‚„り方㧠AIX/ptx/Solaris ã§ã¯ã§ããŸã®ã§ã€ã§ãã‚‹ã¯ãšã  536 - ã“ã®ã‚„り方㧠AIX/ptx/Solaris ã§ã¯ã§ããŸã®ã§ã€ã§ãã‚‹ã¯ãšã 
531 - ç§ã¯ã“れを20å¹´ã‚‚ã®é–“ã‚„ã£ã¦ããŸã€ã ã‹ã‚‰ 537 - ç§ã¯ã“れを20å¹´ã‚‚ã®é–“ã‚„ã£ã¦ããŸã€ã ã‹ã‚‰
@@ -575,10 +581,10 @@ Linux カーãƒãƒ«ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¯ã€ä¸€åº¦ã«å¤§é‡ã®ã‚³ãƒ¼ãƒ‰ã®å¡Šã‚’å–
575 581
5761) å°ã•ã„パッãƒã¯ã‚ãªãŸã®ãƒ‘ッãƒãŒé©ç”¨ã•ã‚Œã‚‹è¦‹è¾¼ã¿ã‚’大ããã—ã¾ã™ã€ã‚«ãƒ¼ 5821) å°ã•ã„パッãƒã¯ã‚ãªãŸã®ãƒ‘ッãƒãŒé©ç”¨ã•ã‚Œã‚‹è¦‹è¾¼ã¿ã‚’大ããã—ã¾ã™ã€ã‚«ãƒ¼
577 ãƒãƒ«ã®äººé”ã¯ãƒ‘ッãƒãŒæ­£ã—ã„ã‹ã©ã†ã‹ã‚’確èªã™ã‚‹æ™‚間や労力をã‹ã‘ãªã„ã‹ 583 ãƒãƒ«ã®äººé”ã¯ãƒ‘ッãƒãŒæ­£ã—ã„ã‹ã©ã†ã‹ã‚’確èªã™ã‚‹æ™‚間や労力をã‹ã‘ãªã„ã‹
578 らã§ã™ã€‚5è¡Œã®ãƒ‘ッãƒã¯ãƒ¡ãƒ³ãƒ†ãƒŠãŒãŸã£ãŸ1秒見るã ã‘ã§é©ç”¨ã§ãã¾ã™ã€‚ã— 584 らã§ã™ã€‚5è¡Œã®ãƒ‘ッãƒã¯ãƒ¡ãƒ³ãƒ†ãƒŠãŒãŸã£ãŸ1秒見るã ã‘ã§é©ç”¨ã§ãã¾ã™ã€‚
579 ã‹ã—ã€500è¡Œã®ãƒ‘ッãƒã¯ã€æ­£ã—ã„ã“ã¨ã‚’レビューã™ã‚‹ã®ã«æ•°æ™‚é–“ã‹ã‹ã‚‹ã‹ã‚‚ 585 ã—ã‹ã—ã€500è¡Œã®ãƒ‘ッãƒã¯ã€æ­£ã—ã„ã“ã¨ã‚’レビューã™ã‚‹ã®ã«æ•°æ™‚é–“ã‹ã‹ã‚‹ã‹
580 ã—ã‚Œã¾ã›ã‚“(時間ã¯ãƒ‘ッãƒã®ã‚µã‚¤ã‚ºãªã©ã«ã‚ˆã‚ŠæŒ‡æ•°é–¢æ•°ã«æ¯”例ã—ã¦ã‹ã‹ã‚Šã¾ 586 ã‚‚ã—ã‚Œã¾ã›ã‚“(時間ã¯ãƒ‘ッãƒã®ã‚µã‚¤ã‚ºãªã©ã«ã‚ˆã‚ŠæŒ‡æ•°é–¢æ•°ã«æ¯”例ã—ã¦ã‹ã‹ã‚Š
581 ã™) 587 ã¾ã™)
582 588
583 å°ã•ã„パッãƒã¯ä½•ã‹ã‚ã£ãŸã¨ãã«ãƒ‡ãƒãƒƒã‚°ã‚‚ã¨ã¦ã‚‚ç°¡å˜ã«ãªã‚Šã¾ã™ã€‚パッ 589 å°ã•ã„パッãƒã¯ä½•ã‹ã‚ã£ãŸã¨ãã«ãƒ‡ãƒãƒƒã‚°ã‚‚ã¨ã¦ã‚‚ç°¡å˜ã«ãªã‚Šã¾ã™ã€‚パッ
584 ãƒã‚’1個1個å–り除ãã®ã¯ã€ã¨ã¦ã‚‚大ããªãƒ‘ッãƒã‚’当ã¦ãŸå¾Œã«(ã‹ã¤ã€ä½•ã‹ãŠ 590 ãƒã‚’1個1個å–り除ãã®ã¯ã€ã¨ã¦ã‚‚大ããªãƒ‘ッãƒã‚’当ã¦ãŸå¾Œã«(ã‹ã¤ã€ä½•ã‹ãŠ
@@ -587,23 +593,23 @@ Linux カーãƒãƒ«ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¯ã€ä¸€åº¦ã«å¤§é‡ã®ã‚³ãƒ¼ãƒ‰ã®å¡Šã‚’å–
5872) å°ã•ã„パッãƒã‚’é€ã‚‹ã ã‘ã§ãªãã€é€ã‚‹ã¾ãˆã«ã€æ›¸ãç›´ã—ã¦ã€ã‚·ãƒ³ãƒ—ルã«ã™ 5932) å°ã•ã„パッãƒã‚’é€ã‚‹ã ã‘ã§ãªãã€é€ã‚‹ã¾ãˆã«ã€æ›¸ãç›´ã—ã¦ã€ã‚·ãƒ³ãƒ—ルã«ã™
588 ã‚‹(ã‚‚ã—ãã¯ã€å˜ã«é †ç•ªã‚’変ãˆã‚‹ã ã‘ã§ã‚‚)ã“ã¨ã‚‚ã€ã¨ã¦ã‚‚é‡è¦ã§ã™ã€‚ 594 ã‚‹(ã‚‚ã—ãã¯ã€å˜ã«é †ç•ªã‚’変ãˆã‚‹ã ã‘ã§ã‚‚)ã“ã¨ã‚‚ã€ã¨ã¦ã‚‚é‡è¦ã§ã™ã€‚
589 595
590以下ã¯ã‚«ãƒ¼ãƒãƒ«é–‹ç™ºè€…ã® Al Viro ã®ãŸã¨ãˆè©±ã—ã§ã™ï¼š 596以下ã¯ã‚«ãƒ¼ãƒãƒ«é–‹ç™ºè€…ã® Al Viro ã®ãŸã¨ãˆè©±ã§ã™ï¼š
591 597
592 "生徒ã®æ•°å­¦ã®å®¿é¡Œã‚’採点ã™ã‚‹å…ˆç”Ÿã®ã“ã¨ã‚’考ãˆã¦ã¿ã¦ãã ã•ã„ã€å…ˆ 598 "生徒ã®æ•°å­¦ã®å®¿é¡Œã‚’採点ã™ã‚‹å…ˆç”Ÿã®ã“ã¨ã‚’考ãˆã¦ã¿ã¦ãã ã•ã„ã€å…ˆ
593 生ã¯ç”Ÿå¾’ãŒè§£ã«åˆ°é”ã™ã‚‹ã¾ã§ã®è©¦è¡ŒéŒ¯èª¤ã‚’ã¿ãŸã„ã¨ã¯æ€ã‚ãªã„ã§ã—ょ 599 生ã¯ç”Ÿå¾’ãŒè§£ã«åˆ°é”ã™ã‚‹ã¾ã§ã®è©¦è¡ŒéŒ¯èª¤ã‚’見ãŸã„ã¨ã¯æ€ã‚ãªã„ã§ã—ょ
594 ã†ã€‚先生ã¯ç°¡æ½”ãªæœ€é«˜ã®è§£ã‚’ã¿ãŸã„ã®ã§ã™ã€‚良ã„生徒ã¯ã“れを知ã£ã¦ 600 ã†ã€‚先生ã¯ç°¡æ½”ãªæœ€é«˜ã®è§£ã‚’見ãŸã„ã®ã§ã™ã€‚良ã„生徒ã¯ã“れを知ã£ã¦
595 ãŠã‚Šã€ãã—ã¦æœ€çµ‚解ã®å‰ã®ä¸­é–“作業をæ出ã™ã‚‹ã“ã¨ã¯æ±ºã—ã¦ãªã„ã®ã§ 601 ãŠã‚Šã€ãã—ã¦æœ€çµ‚解ã®å‰ã®ä¸­é–“作業をæ出ã™ã‚‹ã“ã¨ã¯æ±ºã—ã¦ãªã„ã®ã§
596 ã™" 602 ã™"
597 603
598 カーãƒãƒ«é–‹ç™ºã§ã‚‚ã“ã‚Œã¯åŒã˜ã§ã™ã€‚メンテナーé”ã¨ãƒ¬ãƒ“ューアé”ã¯ã€ 604 カーãƒãƒ«é–‹ç™ºã§ã‚‚ã“ã‚Œã¯åŒã˜ã§ã™ã€‚メンテナé”ã¨ãƒ¬ãƒ“ューアé”ã¯ã€
599 å•é¡Œã‚’解決ã™ã‚‹è§£ã®èƒŒå¾Œã«ãªã‚‹æ€è€ƒãƒ—ロセスをã¿ãŸã„ã¨ã¯æ€ã„ã¾ã›ã‚“。 605 å•é¡Œã‚’解決ã™ã‚‹è§£ã®èƒŒå¾Œã«ãªã‚‹æ€è€ƒãƒ—ロセスを見ãŸã„ã¨ã¯æ€ã„ã¾ã›ã‚“。
600 彼らã¯å˜ç´”ã§ã‚ã–ã‚„ã‹ãªè§£æ±ºæ–¹æ³•ã‚’ã¿ãŸã„ã®ã§ã™ã€‚ 606 彼らã¯å˜ç´”ã§ã‚ã–ã‚„ã‹ãªè§£æ±ºæ–¹æ³•ã‚’見ãŸã„ã®ã§ã™ã€‚
601 607
602ã‚ã–ã‚„ã‹ãªè§£ã‚’説明ã™ã‚‹ã®ã¨ã€ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¨å…±ã«ä»•äº‹ã‚’ã—ã€æœªè§£æ±ºã®ä»•äº‹ã‚’ 608ã‚ã–ã‚„ã‹ãªè§£ã‚’説明ã™ã‚‹ã®ã¨ã€ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¨å…±ã«ä»•äº‹ã‚’ã—ã€æœªè§£æ±ºã®ä»•äº‹ã‚’
603è­°è«–ã™ã‚‹ã“ã¨ã®ãƒãƒ©ãƒ³ã‚¹ã‚’キープã™ã‚‹ã®ã¯é›£ã—ã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。 609è­°è«–ã™ã‚‹ã“ã¨ã®ãƒãƒ©ãƒ³ã‚¹ã‚’キープã™ã‚‹ã®ã¯é›£ã—ã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
604ã§ã™ã‹ã‚‰ã€é–‹ç™ºãƒ—ロセスã®æ—©æœŸæ®µéšŽã§æ”¹å–„ã®ãŸã‚ã®ãƒ•ã‚£ãƒ¼ãƒ‰ãƒãƒƒã‚¯ã‚’もらã†ã‚ˆ 610ã§ã™ã‹ã‚‰ã€é–‹ç™ºãƒ—ロセスã®æ—©æœŸæ®µéšŽã§æ”¹å–„ã®ãŸã‚ã®ãƒ•ã‚£ãƒ¼ãƒ‰ãƒãƒƒã‚¯ã‚’もらã†ã‚ˆ
605ã†ã«ã™ã‚‹ã®ã‚‚ã„ã„ã§ã™ãŒã€å¤‰æ›´ç‚¹ã‚’å°ã•ã„部分ã«åˆ†å‰²ã—ã¦å…¨ä½“ã§ã¯ã¾ã å®Œæˆã— 611ã†ã«ã™ã‚‹ã®ã‚‚良ã„ã§ã™ãŒã€å¤‰æ›´ç‚¹ã‚’å°ã•ã„部分ã«åˆ†å‰²ã—ã¦å…¨ä½“ã§ã¯ã¾ã å®Œæˆã—
606ã¦ã„ãªã„仕事を(部分的ã«)å–り込んã§ã‚‚らãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã‚‚ã„ã„ã“ã¨ã§ã™ã€‚ 612ã¦ã„ãªã„仕事を(部分的ã«)å–り込んã§ã‚‚らãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã‚‚良ã„ã“ã¨ã§ã™ã€‚
607 613
608ã¾ãŸã€ã§ã上ãŒã£ã¦ã„ãªã„ã‚‚ã®ã‚„ã€"å°†æ¥ç›´ã™" よã†ãªãƒ‘ッãƒã‚’ã€æœ¬æµã«å«ã‚ 614ã¾ãŸã€ã§ã上ãŒã£ã¦ã„ãªã„ã‚‚ã®ã‚„ã€"å°†æ¥ç›´ã™" よã†ãªãƒ‘ッãƒã‚’ã€æœ¬æµã«å«ã‚
609ã¦ã‚‚らã†ã‚ˆã†ã«é€ã£ã¦ã‚‚ã€ãã‚Œã¯å—ã‘付ã‘られãªã„ã“ã¨ã‚’ç†è§£ã—ã¦ãã ã•ã„。 615ã¦ã‚‚らã†ã‚ˆã†ã«é€ã£ã¦ã‚‚ã€ãã‚Œã¯å—ã‘付ã‘られãªã„ã“ã¨ã‚’ç†è§£ã—ã¦ãã ã•ã„。
@@ -629,7 +635,7 @@ Linux カーãƒãƒ«ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã¯ã€ä¸€åº¦ã«å¤§é‡ã®ã‚³ãƒ¼ãƒ‰ã®å¡Šã‚’å–
629 - テストçµæžœ 635 - テストçµæžœ
630 636
631ã“ã‚Œã«ã¤ã„ã¦å…¨ã¦ãŒã©ã®ã‚ˆã†ã«ã‚ã‚‹ã¹ãã‹ã«ã¤ã„ã¦ã®è©³ç´°ã¯ã€ä»¥ä¸‹ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ 637ã“ã‚Œã«ã¤ã„ã¦å…¨ã¦ãŒã©ã®ã‚ˆã†ã«ã‚ã‚‹ã¹ãã‹ã«ã¤ã„ã¦ã®è©³ç´°ã¯ã€ä»¥ä¸‹ã®ãƒ‰ã‚­ãƒ¥ãƒ¡
632ント㮠ChangeLog セクションをã¿ã¦ãã ã•ã„- 638ント㮠ChangeLog セクションを見ã¦ãã ã•ã„-
633 "The Perfect Patch" 639 "The Perfect Patch"
634 http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt 640 http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt
635 641
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 975f029be25c..c323778270ff 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -35,6 +35,7 @@ parameter is applicable:
35 APIC APIC support is enabled. 35 APIC APIC support is enabled.
36 APM Advanced Power Management support is enabled. 36 APM Advanced Power Management support is enabled.
37 AX25 Appropriate AX.25 support is enabled. 37 AX25 Appropriate AX.25 support is enabled.
38 BLACKFIN Blackfin architecture is enabled.
38 DRM Direct Rendering Management support is enabled. 39 DRM Direct Rendering Management support is enabled.
39 EDD BIOS Enhanced Disk Drive Services (EDD) is enabled 40 EDD BIOS Enhanced Disk Drive Services (EDD) is enabled
40 EFI EFI Partitioning (GPT) is enabled 41 EFI EFI Partitioning (GPT) is enabled
@@ -67,6 +68,7 @@ parameter is applicable:
67 PARIDE The ParIDE (parallel port IDE) subsystem is enabled. 68 PARIDE The ParIDE (parallel port IDE) subsystem is enabled.
68 PARISC The PA-RISC architecture is enabled. 69 PARISC The PA-RISC architecture is enabled.
69 PCI PCI bus support is enabled. 70 PCI PCI bus support is enabled.
71 PCIE PCI Express support is enabled.
70 PCMCIA The PCMCIA subsystem is enabled. 72 PCMCIA The PCMCIA subsystem is enabled.
71 PNP Plug & Play support is enabled. 73 PNP Plug & Play support is enabled.
72 PPC PowerPC architecture is enabled. 74 PPC PowerPC architecture is enabled.
@@ -468,9 +470,6 @@ and is between 256 and 4096 characters. It is defined in the file
468 Format: 470 Format:
469 <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>] 471 <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>]
470 472
471 cpia_pp= [HW,PPT]
472 Format: { parport<nr> | auto | none }
473
474 crashkernel=nn[KMG]@ss[KMG] 473 crashkernel=nn[KMG]@ss[KMG]
475 [KNL] Reserve a chunk of physical memory to 474 [KNL] Reserve a chunk of physical memory to
476 hold a kernel to switch to with kexec on panic. 475 hold a kernel to switch to with kexec on panic.
@@ -553,7 +552,7 @@ and is between 256 and 4096 characters. It is defined in the file
553 552
554 dtc3181e= [HW,SCSI] 553 dtc3181e= [HW,SCSI]
555 554
556 earlyprintk= [X86-32,X86-64,SH] 555 earlyprintk= [X86-32,X86-64,SH,BLACKFIN]
557 earlyprintk=vga 556 earlyprintk=vga
558 earlyprintk=serial[,ttySn[,baudrate]] 557 earlyprintk=serial[,ttySn[,baudrate]]
559 558
@@ -866,6 +865,10 @@ and is between 256 and 4096 characters. It is defined in the file
866 lasi= [HW,SCSI] PARISC LASI driver for the 53c700 chip 865 lasi= [HW,SCSI] PARISC LASI driver for the 53c700 chip
867 Format: addr:<io>,irq:<irq> 866 Format: addr:<io>,irq:<irq>
868 867
868 libata.noacpi [LIBATA] Disables use of ACPI in libata suspend/resume
869 when set.
870 Format: <int>
871
869 load_ramdisk= [RAM] List of ramdisks to load from floppy 872 load_ramdisk= [RAM] List of ramdisks to load from floppy
870 See Documentation/ramdisk.txt. 873 See Documentation/ramdisk.txt.
871 874
@@ -952,14 +955,10 @@ and is between 256 and 4096 characters. It is defined in the file
952 Format: <1-256> 955 Format: <1-256>
953 956
954 maxcpus= [SMP] Maximum number of processors that an SMP kernel 957 maxcpus= [SMP] Maximum number of processors that an SMP kernel
955 should make use of. 958 should make use of. maxcpus=n : n >= 0 limits the
956 Using "nosmp" or "maxcpus=0" will disable SMP 959 kernel to using 'n' processors. n=0 is a special case,
957 entirely (the MPS table probe still happens, though). 960 it is equivalent to "nosmp", which also disables
958 A command-line option of "maxcpus=<NUM>", where <NUM> 961 the IO APIC.
959 is an integer greater than 0, limits the maximum number
960 of CPUs activated in SMP mode to <NUM>.
961 Using "maxcpus=1" on an SMP kernel is the trivial
962 case of an SMP kernel with only one CPU.
963 962
964 max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or 963 max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or
965 equal to this physical address is ignored. 964 equal to this physical address is ignored.
@@ -1015,6 +1014,10 @@ and is between 256 and 4096 characters. It is defined in the file
1015 meye.*= [HW] Set MotionEye Camera parameters 1014 meye.*= [HW] Set MotionEye Camera parameters
1016 See Documentation/video4linux/meye.txt. 1015 See Documentation/video4linux/meye.txt.
1017 1016
1017 mfgpt_irq= [IA-32] Specify the IRQ to use for the
1018 Multi-Function General Purpose Timers on AMD Geode
1019 platforms.
1020
1018 mga= [HW,DRM] 1021 mga= [HW,DRM]
1019 1022
1020 mousedev.tap_time= 1023 mousedev.tap_time=
@@ -1086,10 +1089,6 @@ and is between 256 and 4096 characters. It is defined in the file
1086 emulation library even if a 387 maths coprocessor 1089 emulation library even if a 387 maths coprocessor
1087 is present. 1090 is present.
1088 1091
1089 noacpi [LIBATA] Disables use of ACPI in libata suspend/resume
1090 when set.
1091 Format: <int>
1092
1093 noaliencache [MM, NUMA, SLAB] Disables the allocation of alien 1092 noaliencache [MM, NUMA, SLAB] Disables the allocation of alien
1094 caches in the slab allocator. Saves per-node memory, 1093 caches in the slab allocator. Saves per-node memory,
1095 but will impact performance. 1094 but will impact performance.
@@ -1166,6 +1165,9 @@ and is between 256 and 4096 characters. It is defined in the file
1166 1165
1167 nomce [X86-32] Machine Check Exception 1166 nomce [X86-32] Machine Check Exception
1168 1167
1168 nomfgpt [X86-32] Disable Multi-Function General Purpose
1169 Timer usage (for AMD Geode machines).
1170
1169 noreplace-paravirt [X86-32,PV_OPS] Don't patch paravirt_ops 1171 noreplace-paravirt [X86-32,PV_OPS] Don't patch paravirt_ops
1170 1172
1171 noreplace-smp [X86-32,SMP] Don't replace SMP instructions 1173 noreplace-smp [X86-32,SMP] Don't replace SMP instructions
@@ -1184,7 +1186,8 @@ and is between 256 and 4096 characters. It is defined in the file
1184 1186
1185 nosep [BUGS=X86-32] Disables x86 SYSENTER/SYSEXIT support. 1187 nosep [BUGS=X86-32] Disables x86 SYSENTER/SYSEXIT support.
1186 1188
1187 nosmp [SMP] Tells an SMP kernel to act as a UP kernel. 1189 nosmp [SMP] Tells an SMP kernel to act as a UP kernel,
1190 and disable the IO APIC. legacy for "maxcpus=0".
1188 1191
1189 nosoftlockup [KNL] Disable the soft-lockup detector. 1192 nosoftlockup [KNL] Disable the soft-lockup detector.
1190 1193
@@ -1275,6 +1278,11 @@ and is between 256 and 4096 characters. It is defined in the file
1275 Mechanism 1. 1278 Mechanism 1.
1276 conf2 [X86-32] Force use of PCI Configuration 1279 conf2 [X86-32] Force use of PCI Configuration
1277 Mechanism 2. 1280 Mechanism 2.
1281 noaer [PCIE] If the PCIEAER kernel config parameter is
1282 enabled, this kernel boot option can be used to
1283 disable the use of PCIE advanced error reporting.
1284 nodomains [PCI] Disable support for multiple PCI
1285 root domains (aka PCI segments, in ACPI-speak).
1278 nommconf [X86-32,X86_64] Disable use of MMCONFIG for PCI 1286 nommconf [X86-32,X86_64] Disable use of MMCONFIG for PCI
1279 Configuration 1287 Configuration
1280 nomsi [MSI] If the PCI_MSI kernel config parameter is 1288 nomsi [MSI] If the PCI_MSI kernel config parameter is
@@ -1319,6 +1327,8 @@ and is between 256 and 4096 characters. It is defined in the file
1319 IRQ routing is enabled. 1327 IRQ routing is enabled.
1320 noacpi [X86-32] Do not use ACPI for IRQ routing 1328 noacpi [X86-32] Do not use ACPI for IRQ routing
1321 or for PCI scanning. 1329 or for PCI scanning.
1330 use_crs [X86-32] Use _CRS for PCI resource
1331 allocation.
1322 routeirq Do IRQ routing for all PCI devices. 1332 routeirq Do IRQ routing for all PCI devices.
1323 This is normally done in pci_enable_device(), 1333 This is normally done in pci_enable_device(),
1324 so this option is a temporary workaround 1334 so this option is a temporary workaround
@@ -1435,6 +1445,10 @@ and is between 256 and 4096 characters. It is defined in the file
1435 pt. [PARIDE] 1445 pt. [PARIDE]
1436 See Documentation/paride.txt. 1446 See Documentation/paride.txt.
1437 1447
1448 pty.legacy_count=
1449 [KNL] Number of legacy pty's. Overwrites compiled-in
1450 default number.
1451
1438 quiet [KNL] Disable most log messages 1452 quiet [KNL] Disable most log messages
1439 1453
1440 r128= [HW,DRM] 1454 r128= [HW,DRM]
@@ -1826,6 +1840,10 @@ and is between 256 and 4096 characters. It is defined in the file
1826 -1: disable all active trip points in all thermal zones 1840 -1: disable all active trip points in all thermal zones
1827 <degrees C>: override all lowest active trip points 1841 <degrees C>: override all lowest active trip points
1828 1842
1843 thermal.crt= [HW,ACPI]
1844 -1: disable all critical trip points in all thermal zones
1845 <degrees C>: lower all critical trip points
1846
1829 thermal.nocrt= [HW,ACPI] 1847 thermal.nocrt= [HW,ACPI]
1830 Set to disable actions on ACPI thermal zone 1848 Set to disable actions on ACPI thermal zone
1831 critical and hot trip points. 1849 critical and hot trip points.
diff --git a/Documentation/ko_KR/HOWTO b/Documentation/ko_KR/HOWTO
new file mode 100644
index 000000000000..b51d7ca842ba
--- /dev/null
+++ b/Documentation/ko_KR/HOWTO
@@ -0,0 +1,623 @@
1NOTE:
2This is a version of Documentation/HOWTO translated into korean
3This document is maintained by minchan Kim < minchan.kim@gmail.com>
4If you find any difference between this document and the original file or
5a problem with the translation, please contact the maintainer of this file.
6
7Please also note that the purpose of this file is to be easier to
8read for non English (read: korean) speakers and is not intended as
9a fork. So if you have any comments or updates for this file please
10try to update the original English file first.
11
12==================================
13ì´ ë¬¸ì„œëŠ”
14Documentation/HOWTO
15ì˜ í•œê¸€ 번역입니다.
16
17ì—­ìžï¼š 김민찬 <minchan.kim@gmail.com >
18ê°ìˆ˜ï¼š ì´ì œì´ë¯¸ <jamee.lee@samsung.com>
19==================================
20
21어떻게 리눅스 ì»¤ë„ ê°œë°œì„ í•˜ëŠ”ê°€
22---------------------------------
23
24ì´ ë¬¸ì„œëŠ” ì»¤ë„ ê°œë°œì— ìžˆì–´ 가장 중요한 문서ì´ë‹¤. ì´ ë¬¸ì„œëŠ”
25리눅스 ì»¤ë„ ê°œë°œìžê°€ ë˜ëŠ” 법과 리눅스 ì»¤ë„ ê°œë°œ 커뮤니티와 ì¼í•˜ëŠ”
26ë²•ì„ ë‹´ê³ ìžˆë‹¤. ì»¤ë„ í”„ë¡œê·¸ëž˜ë°ì˜ê¸°ìˆ ì ì¸ 측면과 ê´€ë ¨ëœ ë‚´ìš©ë“¤ì€
27í¬í•¨í•˜ì§€ 않으려고 하였지만 올바으로 ì—¬ëŸ¬ë¶„ì„ ì•ˆë‚´í•˜ëŠ” ë° ë„움ì´
28ë  ê²ƒì´ë‹¤.
29
30ì´ ë¬¸ì„œì—ì„œ ì˜¤ëž˜ëœ ê²ƒì„ ë°œê²¬í•˜ë©´ ë¬¸ì„œì˜ ì•„ëž˜ìª½ì— ë‚˜ì—´ëœ ë©”ì¸íŠ¸ë„ˆì—게
31패치를 보내달ë¼.
32
33
34소개
35----
36
37ìž, ì—¬ëŸ¬ë¶„ì€ ë¦¬ëˆ…ìŠ¤ ì»¤ë„ ê°œë°œìžê°€ ë˜ëŠ” ë²•ì„ ë°°ìš°ê³  싶ì€ê°€? 아니면
38ìƒì‚¬ë¡œë¶€í„°"ì´ ìž¥ì¹˜ë¥¼ 위한 리눅스 ë“œë¼ì´ë²„를 작성하시오"ë¼ëŠ” ë§ì„
39들었는가? ì´ ë¬¸ì„œëŠ” ì—¬ëŸ¬ë¶„ì´ ê²ªê²Œ ë  ê³¼ì •ê³¼ 커뮤니티와 ì¼í•˜ëŠ” 법ì„
40조언하여 ì—¬ëŸ¬ë¶„ì˜ ëª©ì ì„ 달성하기 위해 필요한 것 모ë‘를 알려주는
41것ì´ë‹¤.
42
43커ë„ì€ ëŒ€ë¶€ë¶„ì€ Cë¡œ 작성ë˜ì—ˆì–´ê³  몇몇 아키í…ì³ì˜ ì˜ì¡´ì ì¸ 부분ì€
44어셈블리로 작성ë˜ì—ˆë‹¤. ì»¤ë„ ê°œë°œì„ ìœ„í•´ C를 잘 ì´í•´í•˜ê³  있어야 한다.
45ì—¬ëŸ¬ë¶„ì´ íŠ¹ì • 아키í…ì³ì˜ low-level ê°œë°œì„ í•  ê²ƒì´ ì•„ë‹ˆë¼ë©´
46어셈블리(특정 아키í…ì³)는 잘 알아야 í•  필요는 없다.
47다ìŒì˜ 참고서ì ë“¤ì€ ê¸°ë³¸ì— ì¶©ì‹¤í•œ C êµìœ¡ì´ë‚˜ ìˆ˜ë…„ê°„ì˜ ê²½í—˜ì— ê²¬ì£¼ì§€ëŠ”
48못하지만 ì ì–´ë„ 참고 ìš©ë„로는 ì¢‹ì„ ê²ƒì´ë‹¤
49 - "The C Programming Language" by Kernighan and Ritchie [Prentice Hall]
50 - "Practical C Programming" by Steve Oualline [O'Reilly]
51 - "C: A Reference Manual" by Harbison and Steele [Prentice Hall]
52
53커ë„ì€ GNU C와 GNU 툴체ì¸ì„ 사용하여 작성ë˜ì—ˆë‹¤. ì´ íˆ´ë“¤ì€ ISO C89 표준ì„
54따르는 반면 í‘œì¤€ì— ìžˆì§€ ì•Šì€ ë§Žì€ í™•ìž¥ê¸°ëŠ¥ë„ ê°€ì§€ê³  있다. 커ë„ì€ í‘œì¤€ C
55ë¼ì´ë¸ŒëŸ¬ë¦¬ì™€ëŠ” ê´€ê³„ì—†ì´ freestanding C 환경ì´ì–´ì„œ C í‘œì¤€ì˜ ì¼ë¶€ëŠ”
56지ì›ë˜ì§€ 않는다. ìž„ì˜ì˜ long long 나누기나 floating point는 지ì›ë˜ì§€ 않는다.
57때론 ì´ëŸ° ì´ìœ ë¡œ 커ë„ì´ ê·¸ëŸ° 확장 ê¸°ëŠ¥ì„ ê°€ì§„ 툴체ì¸ì„ 가지고 만들어졌다는
58ê²ƒì´ ì´í•´í•˜ê¸° 어려울 ìˆ˜ë„ ìžˆê³  게다가 ë¶ˆí–‰í•˜ê²Œë„ ê·¸ëŸ° ê²ƒì„ ì •í™•í•˜ê²Œ 설명하는
59ì–´ë–¤ ì°¸ê³ ë¬¸ì„œë„ ìžˆì§€ 않다. 정보를 얻기 위해서는 gcc info (`info gcc`)페ì´ì§€ë¥¼
60살펴보ë¼.
61
62ì—¬ëŸ¬ë¶„ì€ ê¸°ì¡´ì˜ ê°œë°œ 커뮤니티와 ì¼í•˜ëŠ” ë²•ì„ ë°°ìš°ë ¤ê³  하고 있다는 것ì„
63기억하ë¼. 코딩, 스타ì¼, ì ˆì°¨ì— ê´€í•œ 훌륭한 í‘œì¤€ì„ ê°€ì§„ ì‚¬ëžŒë“¤ì´ ëª¨ì¸
64다양한 ê·¸ë£¹ì´ ìžˆë‹¤. ì´ í‘œì¤€ë“¤ì€ ì˜¤ëžœë™ì•ˆ í¬ê³  지역ì ìœ¼ë¡œ ë¶„ì‚°ëœ íŒ€ë“¤ì—
65ì˜í•´ 가장 ì¢‹ì€ ë°©ë²•ìœ¼ë¡œ ì¼í•˜ê¸°ìœ„하여 ì°¾ì€ ê²ƒì„ ê¸°ì´ˆë¡œ 만들어져왔다.
66ê·¸ í‘œì¤€ë“¤ì€ ë¬¸ì„œí™”ê°€ 잘 ë˜ì–´ 있기 ë•Œë¬¸ì— ê°€ëŠ¥í•œí•œ 미리 ë§Žì€ í‘œì¤€ë“¤ì—
67관하여 배우려고 ì‹œë„하ë¼. 다른 ì‚¬ëžŒë“¤ì€ ì—¬ëŸ¬ë¶„ì´ë‚˜ ì—¬ëŸ¬ë¶„ì˜ íšŒì‚¬ê°€
68ì¼í•˜ëŠ” ë°©ì‹ì— ì ì‘하는 ê²ƒì„ ì›í•˜ì§€ëŠ” 않는다.
69
70
71ë²•ì  ë¬¸ì œ
72---------
73
74리눅스 ì»¤ë„ ì†ŒìŠ¤ 코드는 GPLë¡œ ë°°í¬(release)ë˜ì—ˆë‹¤. ì†ŒìŠ¤íŠ¸ë¦¬ì˜ ë©”ì¸
75ë””ë ‰í† ë¦¬ì— ìžˆëŠ” ë¼ì´ì„¼ìŠ¤ì— 관하여 ìƒì„¸í•˜ê²Œ ì“°ì—¬ 있는 COPYINGì´ë¼ëŠ”
76파ì¼ì„ ë´ë¼.ì—¬ëŸ¬ë¶„ì´ ë¼ì´ì„¼ìŠ¤ì— 관한 ë” ê¹Šì€ ë¬¸ì œë¥¼ 가지고 있다면
77리눅스 ì»¤ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì— ë¬»ì§€ë§ê³  변호사와 ì—°ë½í•˜ë¼. ë©”ì¼ë§
78ë¦¬ìŠ¤íŠ¸ë“¤ì— ìžˆëŠ” ì‚¬ëžŒë“¤ì€ ë³€í˜¸ì‚¬ê°€ 아니기 ë•Œë¬¸ì— ë²•ì  ë¬¸ì œì— ê´€í•˜ì—¬
79ê·¸ë“¤ì˜ ë§ì— ì˜ì§€í•´ì„œëŠ” 안ëœë‹¤.
80
81GPLì— ê´€í•œ ìž¦ì€ ì§ˆë¬¸ë“¤ê³¼ ë‹µë³€ë“¤ì€ ë‹¤ìŒì„ 참조하ë¼.
82 http://www.gnu.org/licenses/gpl-faq.html
83
84
85문서
86----
87
88리눅스 ì»¤ë„ ì†ŒìŠ¤ 트리는 ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ì™€ ì¼í•˜ëŠ” ë²•ì„ ë°°ìš°ê¸° 위한 많ì€
89귀중한 ë¬¸ì„œë“¤ì„ ê°€ì§€ê³  있다. 새로운 ê¸°ëŠ¥ë“¤ì´ ì»¤ë„ì— ë“¤ì–´ê°€ê²Œ ë  ë•Œ,
90ê·¸ ê¸°ëŠ¥ì„ ì–´ë–»ê²Œ ì‚¬ìš©í•˜ëŠ”ì§€ì— ê´€í•œ ì„¤ëª…ì„ ìœ„í•˜ì—¬ 새로운 문서 파ì¼ì„
91추가하는 ê²ƒì„ ê¶Œìž¥í•œë‹¤. 커ë„ì´ ìœ ì €ìŠ¤íŽ˜ì´ìŠ¤ë¡œ 노출하는 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼
92변경하게 ë˜ë©´ ë³€ê²½ì„ ì„¤ëª…í•˜ëŠ” 메뉴얼 페ì´ì§€ë“¤ì— 대한 패치나 정보를
93mtk-manpages@gmx.netì˜ ë©”ì¸íŠ¸ë„ˆì—게 보낼 ê²ƒì„ ê¶Œìž¥í•œë‹¤.
94
95다ìŒì€ ì»¤ë„ ì†ŒìŠ¤ íŠ¸ë¦¬ì— ìžˆëŠ” ì½ì–´ì•¼ í•  파ì¼ë“¤ì˜ 리스트ì´ë‹¤.
96 README
97 ì´ íŒŒì¼ì€ 리눅스 커ë„ì— ê´€í•˜ì—¬ 간단한 ë°°ê²½ 설명과 커ë„ì„ ì„¤ì •í•˜ê³ 
98 빌드하기 위해 필요한 ê²ƒì„ ì„¤ëª…í•œë‹¤. 커ë„ì— ìž…ë¬¸í•˜ëŠ” ì‚¬ëžŒë“¤ì€ ì—¬ê¸°ì„œ
99 시작해야 한다.
100
101 Documentation/Changes
102 ì´ íŒŒì¼ì€ 커ë„ì„ ì„±ê³µì ìœ¼ë¡œ 빌드하고 실행시키기 위해 필요한 다양한
103 소프트웨어 íŒ¨í‚¤ì§€ë“¤ì˜ ìµœì†Œ ë²„ì ¼ì„ ë‚˜ì—´í•œë‹¤.
104
105 Documentation/CodingStyle
106 ì´ ë¬¸ì„œëŠ” 리눅스 ì»¤ë„ ì½”ë”© 스타ì¼ê³¼ 그렇게 í•œ 몇몇 ì´ìœ ë¥¼ 설명한다.
107 모든 새로운 코드는 ì´ ë¬¸ì„œì— ê°€ì´ë“œë¼ì¸ë“¤ì„ ë”°ë¼ì•¼ 한다. 대부분ì˜
108 ë©”ì¸íŠ¸ë„ˆë“¤ì€ ì´ ê·œì¹™ì„ ë”°ë¥´ëŠ” íŒ¨ì¹˜ë“¤ë§Œì„ ë°›ì•„ë“¤ì¼ ê²ƒì´ê³  ë§Žì€ ì‚¬ëžŒë“¤ì´
109 ê·¸ 패치가 올바른 스타ì¼ì¼ 경우만 코드를 검토할 것ì´ë‹¤.
110
111 Documentation/SubmittingPatches
112 Documentation/SubmittingDrivers
113 ì´ íŒŒì¼ë“¤ì€ 성공ì ìœ¼ë¡œ 패치를 만들고 보내는 ë²•ì„ ë‹¤ìŒì˜ 내용들로
114 굉장히 ìƒì„¸ížˆ 설명하고 있다(그러나 다ìŒìœ¼ë¡œ 한정ë˜ì§„ 않는다).
115 - Email 내용들
116 - Email ì–‘ì‹
117 - ê·¸ê²ƒì„ ëˆ„êµ¬ì—게 보낼지
118 ì´ëŸ¬í•œ ê·œì¹™ë“¤ì„ ë”°ë¥´ëŠ” ê²ƒì´ ì„±ê³µì„ ë³´ìž¥í•˜ì§„ 않는다(왜ëƒí•˜ë©´ 모든
119 íŒ¨ì¹˜ë“¤ì€ ë‚´ìš©ê³¼ 스타ì¼ì— 관하여 면밀히 검토ë˜ê¸° 때문ì´ë‹¤).
120 그러나 ê·œì¹™ì„ ë”°ë¥´ì§€ 않는다면 ê±°ì˜ ì„±ê³µí•˜ì§€ë„ ëª»í•  것ì´ë‹¤.
121
122 올바른 íŒ¨ì¹˜ë“¤ì„ ë§Œë“œëŠ” ë²•ì— ê´€í•œ 훌륭한 다른 ë¬¸ì„œë“¤ì´ ìžˆë‹¤.
123 "The Perfect Patch"
124 http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt
125 "Linux kernel patch submission format"
126 http://linux.yyz.us/patch-format.html
127
128 Documentation/stable_api_nonsense.txt
129 ì´ ë¬¸ì„œëŠ” ì˜ë„ì ìœ¼ë¡œ 커ë„ì´ ë³€í•˜ì§€ 않는 API를 갖지 ì•Šë„ë¡ ê²°ì •í•œ
130 ì´ìœ ë¥¼ 설명하며 다ìŒê³¼ ê°™ì€ ê²ƒë“¤ì„ í¬í•¨í•œë‹¤.
131 - 서브시스템 shim-layer(í˜¸í™˜ì„±ì„ ìœ„í•´?)
132 - ìš´ì˜ ì²´ì œë“¤ ê°„ì˜ ë“œë¼ì´ë²„ ì´ì‹ì„±
133 - ì»¤ë„ ì†ŒìŠ¤ íŠ¸ë¦¬ë‚´ì— ë¹ ë¥¸ 변화를 늦추는 것(ë˜ëŠ” 빠른 변화를 막는 것)
134 ì´ ë¬¸ì„œëŠ” 리눅스 개발 ì² í•™ì„ ì´í•´í•˜ëŠ”ë° í•„ìˆ˜ì ì´ë©° 다른 ìš´ì˜ì²´ì œì—ì„œ
135 리눅스로 옮겨오는 사람들ì—게는 매우 중요하다.
136
137
138 Documentation/SecurityBugs
139 ì—¬ëŸ¬ë¶„ë“¤ì´ ë¦¬ëˆ…ìŠ¤ 커ë„ì˜ ë³´ì•ˆ 문제를 발견했다고 ìƒê°í•œë‹¤ë©´ ì´ ë¬¸ì„œì—
140 나온 ë‹¨ê³„ì— ë”°ë¼ì„œ ì»¤ë„ ê°œë°œìžë“¤ì—게 알리고 ê·¸ 문제를 í•´ê²°í•  수 있ë„ë¡
141 ë„와 달ë¼.
142
143 Documentation/ManagementStyle
144 ì´ ë¬¸ì„œëŠ” 리눅스 ì»¤ë„ ë©”ì¸íŠ¸ë„ˆë“¤ì´ 어떻게 ê·¸ë“¤ì˜ ë°©ë²•ë¡ ì˜ ì •ì‹ ì„
145 어떻게 공유하고 ìš´ì˜í•˜ëŠ”지를 설명한다. ì´ê²ƒì€ ì»¤ë„ ê°œë°œì— ìž…ë¬¸í•˜ëŠ”
146 모든 사람들(ë˜ëŠ” ì»¤ë„ ê°œë°œì— ìž‘ì€ í˜¸ê¸°ì‹¬ì´ë¼ë„ 있는 사람들)ì´
147 ì½ì–´ì•¼ í•  중요한 문서ì´ë‹¤. 왜ëƒí•˜ë©´ ì´ ë¬¸ì„œëŠ” ì»¤ë„ ë©”ì¸íŠ¸ë„ˆë“¤ì˜
148 ë…특한 í–‰ë™ì— 관하여 í”히 있는 오해들과 í˜¼ëž€ë“¤ì„ í•´ì†Œí•˜ê³  있기
149 때문ì´ë‹¤.
150
151 Documentation/stable_kernel_rules.txt
152 ì´ ë¬¸ì„œëŠ” 안정ì ì¸ ì»¤ë„ ë°°í¬ê°€ ì´ë£¨ì–´ì§€ëŠ” ê·œì¹™ì„ ì„¤ëª…í•˜ê³  있으며
153 ì—¬ëŸ¬ë¶„ë“¤ì´ ì´ëŸ¬í•œ ë°°í¬ë“¤ 중 í•˜ë‚˜ì— ë³€ê²½ì„ í•˜ê¸¸ ì›í•œë‹¤ë©´
154 ë¬´ì—‡ì„ í•´ì•¼ 하는지를 설명한다.
155
156 Documentation/kernel-docs.txt
157 ì»¤ë„ ê°œë°œì— ê´€ê³„ëœ ì™¸ë¶€ ë¬¸ì„œì˜ ë¦¬ìŠ¤íŠ¸ì´ë‹¤. ì»¤ë„ ë‚´ì˜ í¬í•¨ëœ 문서들
158 ì¤‘ì— ì—¬ëŸ¬ë¶„ì´ ì°¾ê³  ì‹¶ì€ ë¬¸ì„œë¥¼ 발견하지 못할 경우 ì´ ë¦¬ìŠ¤íŠ¸ë¥¼
159 살펴보ë¼.
160
161 Documentation/applying-patches.txt
162 패치가 무엇ì´ë©° ê·¸ê²ƒì„ ì»¤ë„ì˜ ë‹¤ë¥¸ 개발 ë¸Œëžœì¹˜ë“¤ì— ì–´ë–»ê²Œ
163 ì ìš©í•˜ëŠ”ì§€ì— ê´€í•˜ì—¬ ìžì„¸ížˆ 설명 하고 있는 ì¢‹ì€ ìž…ë¬¸ì„œì´ë‹¤.
164
165커ë„ì€ ì†ŒìŠ¤ 코드 ê·¸ ìžì²´ì—ì„œ ìžë™ì ìœ¼ë¡œ 만들어질 수 있는 ë§Žì€ ë¬¸ì„œë“¤ì„
166가지고 있다. ì´ê²ƒì€ ì»¤ë„ ë‚´ì˜ APIì— ëŒ€í•œ 모든 설명, 그리고 ë½í‚¹ì„
167올바르게 처리하는 ë²•ì— ê´€í•œ ê·œì¹™ì„ í¬í•¨í•˜ê³  있다. ì´ ë¬¸ì„œëŠ”
168Documentation/DocBook/ 디렉토리 ë‚´ì—ì„œ 만들어지며 PDF, Postscript, HTML,
169그리고 man 페ì´ì§€ë“¤ë¡œ 다ìŒê³¼ ê°™ì´ ì‹¤í–‰í•˜ì—¬ 만들어 진다.
170 make pdfdocs
171 make psdocs
172 make htmldocs
173 make mandocs
174ê°ê°ì˜ ëª…ë ¹ì„ ë©”ì¸ ì»¤ë„ ì†ŒìŠ¤ 디렉토리로부터 실행한다.
175
176
177ì»¤ë„ ê°œë°œìžê°€ ë˜ëŠ” 것
178---------------------
179
180ì—¬ëŸ¬ë¶„ì´ ë¦¬ëˆ…ìŠ¤ ì»¤ë„ ê°œë°œì— ê´€í•˜ì—¬ ì•„ë¬´ê²ƒë„ ëª¨ë¥¸ë‹¤ë©´ Linux KernelNewbies
181프로ì íŠ¸ë¥¼ ë´ì•¼ 한다.
182 http://kernelnewbies.org
183ê·¸ê³³ì€ ê±°ì˜ ëª¨ë“  ì¢…ë¥˜ì˜ ê¸°ë³¸ì ì¸ ì»¤ë„ ê°œë°œ 질문들(질문하기 ì „ì— ë¨¼ì €
184ì•„ì¹´ì´ë¸Œë¥¼ 찾아ë´ë¼. ê³¼ê±°ì— ì´ë¯¸ 답변ë˜ì—ˆì„ ìˆ˜ë„ ìžˆë‹¤)ì„ í• ìˆ˜ìžˆëŠ” ë„움ì´
185ë ë§Œí•œ ë©”ì¼ë§ 리스트가 있다. ë˜í•œ 실시간으로 질문 할수 있는 IRC 채ë„ë„
186가지고 있으며 리눅스 ì»¤ë„ ê°œë°œì„ ë°°ìš°ëŠ” ë° ìœ ìš©í•œ ë¬¸ì„œë“¤ì„ ë³´ìœ í•˜ê³  있다.
187
188웹사ì´íŠ¸ëŠ” 코드구성, 서브시스템들, 그리고 현재 프로ì íŠ¸ë“¤
189(트리 ë‚´, ì™¸ë¶€ì— ì¡´ìž¬í•˜ëŠ”)ì— ê´€í•œ 기본ì ì¸ ì •ë³´ë“¤ì„ ê°€ì§€ê³  있다. ë˜í•œ
190ê·¸ê³³ì€ ì»¤ë„ ì»´íŒŒì¼ì´ë‚˜ 패치를 하는 법과 ê°™ì€ ê¸°ë³¸ì ì¸ ê²ƒë“¤ì„ ì„¤ëª…í•œë‹¤.
191
192ì—¬ëŸ¬ë¶„ì´ ì–´ë””ì„œ 시작해야 할진 모르지만 ì»¤ë„ ê°œë°œ ì»¤ë®¤ë‹ˆí‹°ì— ì°¸ì—¬í•  수
193있는 ì¼ë“¤ì„ 찾길 ì›í•œë‹¤ë©´ 리눅스 ì»¤ë„ Janitor 프로ì íŠ¸ë¥¼ 살펴ë´ë¼.
194 http://janitor.kernelnewbies.org/
195ê·¸ê³³ì€ ì‹œìž‘í•˜ê¸°ì— ì•„ì£¼ ë”± ì¢‹ì€ ê³³ì´ë‹¤. ê·¸ê³³ì€ ë¦¬ëˆ…ìŠ¤ ì»¤ë„ ì†ŒìŠ¤ 트리내ì—
196간단히 정리ë˜ê³  ìˆ˜ì •ë  ìˆ˜ 있는 ë¬¸ì œë“¤ì— ê´€í•˜ì—¬ 설명한다. ì—¬ëŸ¬ë¶„ì€ ì´
197프로ì íŠ¸ë¥¼ 대표하는 개발ìžë“¤ê³¼ ì¼í•˜ë©´ì„œ ìžì‹ ì˜ 패치를 리눅스 ì»¤ë„ íŠ¸ë¦¬ì—
198ë°˜ì˜í•˜ê¸° 위한 기본ì ì¸ ê²ƒë“¤ì„ ë°°ìš°ê²Œ ë ê²ƒì´ë©° ì—¬ëŸ¬ë¶„ì´ ì•„ì§ ì•„ì´ë””어를
199가지고 있지 않다면 다ìŒì— ë¬´ì—‡ì„ í•´ì•¼í• ì§€ì— ê´€í•œ ë°©í–¥ì„ ë°°ìš¸ 수 있ì„
200것ì´ë‹¤.
201
202ì—¬ëŸ¬ë¶„ë“¤ì´ ì´ë¯¸ ì»¤ë„ íŠ¸ë¦¬ì— ë°˜ì˜í•˜ê¸¸ ì›í•˜ëŠ” 코드 묶ìŒì„ 가지고 있지만
203올바른 í¬ë§·ìœ¼ë¡œ í¬ìž¥í•˜ëŠ”ë° ë„ì›€ì´ í•„ìš”í•˜ë‹¤ë©´ 그러한 문제를 ë•ê¸° 위해
204만들어진 kernel-mentors 프로ì íŠ¸ê°€ 있다. ê·¸ê³³ì€ ë©”ì¼ë§ 리스트ì´ë©°
205다ìŒì—ì„œ 참조할 수 있다.
206 http://selenic.com/mailman/listinfo/kernel-mentors
207
208리눅스 ì»¤ë„ ì½”ë“œì— ì‹¤ì œ ë³€ê²½ì„ í•˜ê¸° ì „ì— ë°˜ë“œì‹œ ê·¸ 코드가 어떻게
209ë™ìž‘하는지 ì´í•´í•˜ê³  있어야 한다. 코드를 분ì„하기 위하여 특정한 툴ì˜
210ë„ì›€ì„ ë¹Œë ¤ì„œë¼ë„ 코드를 ì§ì ‘ ì½ëŠ” 것보다 ì¢‹ì€ ê²ƒì€ ì—†ë‹¤(대부분ì˜
211ìžìž˜í•œ ë¶€ë¶„ë“¤ì€ ìž˜ 코멘트ë˜ì–´ 있다). 그런 툴들 ì¤‘ì— íŠ¹ížˆ 추천할만한
212ê²ƒì€ Linux Cross-Reference projectì´ë©° ê·¸ê²ƒì€ ìžê¸° 참조 ë°©ì‹ì´ë©°
213소스코드를 ì¸ë±ìŠ¤ëœ 웹 페ì´ì§€ë“¤ì˜ 형태로 보여준다. ìµœì‹ ì˜ ë©‹ì§„ 커ë„
214코드 저장소는 다ìŒì„ 통하여 참조할 수 있다.
215 http://sosdg.org/~coywolf/lxr/
216
217
218개발 프로세스
219-------------
220
221리눅스 ì»¤ë„ ê°œë°œ 프로세스는 현재 몇몇 다른 ë©”ì¸ ì»¤ë„ "브랜치들"ê³¼
222ì„œë¸Œì‹œìŠ¤í…œì— íŠ¹í™”ëœ ì»¤ë„ ë¸Œëžœì¹˜ë“¤ë¡œ 구성ëœë‹¤. 몇몇 다른 ë©”ì¸
223ë¸Œëžœì¹˜ë“¤ì€ ë‹¤ìŒê³¼ 같다.
224 - main 2.6.x ì»¤ë„ íŠ¸ë¦¬
225 - 2.6.x.y - ì•ˆì •ëœ ì»¤ë„ íŠ¸ë¦¬
226 - 2.6.x -git ì»¤ë„ íŒ¨ì¹˜ë“¤
227 - 2.6.x -mm ì»¤ë„ íŒ¨ì¹˜ë“¤
228 - ì„œë¸Œì‹œìŠ¤í…œì„ ìœ„í•œ ì»¤ë„ íŠ¸ë¦¬ë“¤ê³¼ 패치들
229
2302.6.x ì»¤ë„ íŠ¸ë¦¬
231---------------
232
2332.6.x 커ë„ë“¤ì€ Linux Torvaldsê°€ 관리하며 kernel.orgì˜ pub/linux/kernel/v2.6/
234디렉토리ì—ì„œ ì°¸ì¡°ë  ìˆ˜ 있다.개발 프로세스는 다ìŒê³¼ 같다.
235 - 새로운 커ë„ì´ ë°°í¬ë˜ìžë§ˆìž 2ì£¼ì˜ ì‹œê°„ì´ ì£¼ì–´ì§„ë‹¤. ì´ ê¸°ê°„ë™ì€
236 ë©”ì¸íŠ¸ë„ˆë“¤ì€ í° diffë“¤ì„ Linusì—게 제출할 수 있다. 대개 ì´ íŒ¨ì¹˜ë“¤ì€
237 몇 주 ë™ì•ˆ -mm 커ë„ë‚´ì— ì´ë¯¸ ìžˆì—ˆë˜ ê²ƒë“¤ì´ë‹¤. í° ë³€ê²½ë“¤ì„ ì œì¶œí•˜ëŠ” ë°
238 선호ë˜ëŠ” ë°©ë²•ì€ git(커ë„ì˜ ì†ŒìŠ¤ 관리 툴, ë” ë§Žì€ ì •ë³´ë“¤ì€ http://git.or.cz/
239 ì—ì„œ 참조할 수 있다)를 사용하는 것ì´ì§€ë§Œ 순수한 패치파ì¼ì˜ 형ì‹ìœ¼ë¡œ ë³´ë‚´ë„
240 ê²ƒë„ ë¬´ê´€í•˜ë‹¤.
241 - 2주 í›„ì— -rc1 커ë„ì´ ë°°í¬ë˜ë©° 지금부터는 ì „ì²´ 커ë„ì˜ ì•ˆì •ì„±ì— ì˜í–¥ì„
242 미칠수 있는 새로운 ê¸°ëŠ¥ë“¤ì„ í¬í•¨í•˜ì§€ 않는 íŒ¨ì¹˜ë“¤ë§Œì„ ì¶”ê°€ë  ìˆ˜ 있다.
243 완전히 새로운 ë“œë¼ì´ë²„(í˜¹ì€ íŒŒì¼ì‹œìŠ¤í…œ)는 -rc1 ì´í›„ì—만 받아들여진다는
244 ê²ƒì„ ê¸°ì–µí•´ë¼. 왜ëƒí•˜ë©´ ë³€ê²½ì´ ìžì²´ë‚´ì—서만 ë°œìƒí•˜ê³  ì¶”ê°€ëœ ì½”ë“œê°€
245 ë“œë¼ì´ë²„ ì™¸ë¶€ì˜ ë‹¤ë¥¸ 부분ì—는 ì˜í–¥ì„ 주지 않으므로 그런 변경ì€
246 퇴보(regression)를 ì¼ìœ¼í‚¬ 만한 ìœ„í—˜ì„ ê°€ì§€ê³  있지 않기 때문ì´ë‹¤. -rc1ì´
247 ë°°í¬ëœ ì´í›„ì— git를 사용하여 íŒ¨ì¹˜ë“¤ì„ Linusì—게 보낼수 있지만 패치들ì€
248 ê³µì‹ì ì¸ ë©”ì¼ë§ 리스트로 ë³´ë‚´ì„œ 검토를 ë°›ì„ í•„ìš”ê°€ 있다.
249 - 새로운 -rc는 Linus는 현재 git treeê°€ 테스트 í•˜ê¸°ì— ì¶©ë¶„ížˆ ì•ˆì •ëœ ìƒíƒœì—
250 있다고 íŒë‹¨ë  때마다 ë°°í¬ëœë‹¤. 목표는 새로운 -rc 커ë„ì„ ë§¤ì£¼ ë°°í¬í•˜ëŠ”
251 것ì´ë‹¤.
252 - ì´ëŸ¬í•œ 프로세스는 커ë„ì´ "준비"ë˜ì—ˆë‹¤ê³  여겨질때까지 계ì†ëœë‹¤.
253 프로세스는 대체로 6주간 지ì†ëœë‹¤.
254 - ê° -rc ë°°í¬ì— 있는 알려진 í‡´ë³´ì˜ ëª©ë¡ë“¤ì€ ë‹¤ìŒ URIì— ë‚¨ê²¨ì§„ë‹¤.
255 http://kernelnewbies.org/known_regressions
256
257ì»¤ë„ ë°°í¬ì— 있어서 언급할만한 가치가 있는 리눅스 ì»¤ë„ ë©”ì¼ë§ 리스트ì˜
258Andrew Mortonì˜ ê¸€ì´ ìžˆë‹¤.
259 "커ë„ì´ ì–¸ì œ ë°°í¬ë ì§€ëŠ” 아무로 모른다. 왜ëƒí•˜ë©´ ë°°í¬ëŠ” 알려진
260 ë²„ê·¸ì˜ ìƒí™©ì— ë”°ë¼ ë°°í¬ë˜ëŠ” 것ì´ì§€ 미리정해 ë†“ì€ ì‹œê°„ì— ë”°ë¼
261 ë°°í¬ë˜ëŠ” ê²ƒì€ ì•„ë‹ˆê¸° 때문ì´ë‹¤."
262
2632.6.x.y - 안정 ì»¤ë„ íŠ¸ë¦¬
264------------------------
265
2664 ìžë¦¬ 숫ìžë¡œ ì´ë£¨ì–´ì§„ ë²„ì ¼ì˜ ì»¤ë„ë“¤ì€ -stable 커ë„들ì´ë‹¤. ê·¸ê²ƒë“¤ì€ 2.6.x
267커ë„ì—ì„œ ë°œê²¬ëœ í° í‡´ë³´ë“¤ì´ë‚˜ 보안 문제들 중 비êµì  ìž‘ê³  중요한 수정들ì„
268í¬í•¨í•œë‹¤.
269
270ì´ê²ƒì€ 가장 ìµœê·¼ì˜ ì•ˆì •ì ì¸ 커ë„ì„ ì›í•˜ëŠ” 사용ìžì—게 추천ë˜ëŠ” 브랜치ì´ë©°,
271개발/ì‹¤í—˜ì  ë²„ì ¼ì„ í…ŒìŠ¤íŠ¸í•˜ëŠ” ê²ƒì„ ë•ëŠ”ë°ëŠ” 별로 ê´€ì‹¬ì´ ì—†ë‹¤.
272
273ì–´ë–¤ 2.6.x.y 커ë„ë„ ì‚¬ìš©ê°€ëŠ¥í•˜ì§€ 않다면 그때는 가장 ë†’ì€ ìˆ«ìžì˜ 2.6.x
274커ë„ì´ í˜„ìž¬ì˜ ì•ˆì • 커ë„ì´ë‹¤.
275
2762.6.x.y는 "stable" 팀<stable@kernel.org>ì— ì˜í•´ 관리ë˜ë©° ê±°ì˜ ë§¤ë²ˆ 격주로
277ë°°í¬ëœë‹¤.
278
279ì»¤ë„ íŠ¸ë¦¬ 문서들 ë‚´ì— Documentation/stable_kernel_rules.txt 파ì¼ì€ ì–´ë–¤
280ì¢…ë¥˜ì˜ ë³€ê²½ë“¤ì´ -stable 트리로 들어왔는지와 ë°°í¬ í”„ë¡œì„¸ìŠ¤ê°€ 어떻게
281진행ë˜ëŠ”지를 설명한다.
282
283
2842.6.x -git 패치들
285------------------
286git 저장소(그러므로 -gitì´ë¼ëŠ” ì´ë¦„ì´ ë¶™ìŒ)ì—는 날마다 관리ë˜ëŠ” Linusì˜
287ì»¤ë„ íŠ¸ë¦¬ì˜ snapshot ë“¤ì´ ìžˆë‹¤. ì´ íŒ¨ì¹˜ë“¤ì€ ì¼ë°˜ì ìœ¼ë¡œ 날마다 ë°°í¬ë˜ë©°
288Linusì˜ íŠ¸ë¦¬ì˜ í˜„ìž¬ ìƒíƒœë¥¼ 나타낸다. ì´ íŒ¨ì¹˜ë“¤ì€ ì •ìƒì ì¸ì§€ 조금ë„
289살펴보지 ì•Šê³  ìžë™ì ìœ¼ë¡œ ìƒì„±ëœ 것ì´ë¯€ë¡œ -rc 커ë„들 ë³´ë‹¤ë„ ë” ì‹¤í—˜ì ì´ë‹¤.
290
2912.6.x -mm ì»¤ë„ íŒ¨ì¹˜ë“¤
292---------------------
293Andrew Mortonì— ì˜í•´ ë°°í¬ëœ 실험ì ì¸ ì»¤ë„ íŒ¨ì¹˜ë“¤ì´ë‹¤. Andrew는 모든 다른
294서브시스템 ì»¤ë„ íŠ¸ë¦¬ì™€ íŒ¨ì¹˜ë“¤ì„ ê°€ì ¸ì™€ì„œ 리눅스 ì»¤ë„ ë©”ì¼ë§ 리스트로
295온 ë§Žì€ íŒ¨ì¹˜ë“¤ê³¼ í•œë° ë¬¶ëŠ”ë‹¤. ì´ íŠ¸ë¦¬ëŠ” 새로운 기능들과 íŒ¨ì¹˜ë“¤ì„ ìœ„í•œ
296장소를 제공하는 ì—­í• ì„ í•œë‹¤. í•˜ë‚˜ì˜ íŒ¨ì¹˜ê°€ -mmì— í•œë™ì•ˆ 있으면서 ê·¸ 가치가
297ì¦ëª…ë˜ê²Œ ë˜ë©´ Andrew나 서브시스템 ë©”ì¸íŠ¸ë„ˆëŠ” ê·¸ê²ƒì„ ë©”ì¸ë¼ì¸ì— í¬í•¨ì‹œí‚¤ê¸°
298위하여 Linusì—게 보낸다.
299
300ì»¤ë„ íŠ¸ë¦¬ì— í¬í•¨í•˜ê³  ì‹¶ì€ ëª¨ë“  새로운 íŒ¨ì¹˜ë“¤ì€ Linusì—게 보내지기 ì „ì—
301-mm 트리ì—ì„œ 테스트를 하는 ê²ƒì„ ì ê·¹ 추천한다.
302
303ì´ ì»¤ë„ë“¤ì€ ì•ˆì •ë˜ê²Œ 사용할 시스템ì—ì„œì— ì‹¤í–‰í•˜ëŠ” ê²ƒì€ ì í•©í•˜ì§€ 않으며
304다른 ë¸Œëžœì¹˜ë“¤ì˜ ì–´ë–¤ 것들보다 위험하다.
305
306ì—¬ëŸ¬ë¶„ì´ ì»¤ë„ ê°œë°œ 프로세스를 ë•ê¸¸ ì›í•œë‹¤ë©´ ì´ ì»¤ë„ ë°°í¬ë“¤ì„ 사용하고
307테스트한 후 ì–´ë–¤ 문제를 발견하거나 ë˜ëŠ” 모든 ê²ƒì´ ìž˜ ë™ìž‘한다면 리눅스
308ì»¤ë„ ë©”ì¼ë§ 리스트로 í”¼ë“œë°±ì„ í•´ë‹¬ë¼.
309
310ì´ ì»¤ë„ë“¤ì€ ì¼ë°˜ì ìœ¼ë¡œ 모든 다른 실험ì ì¸ 패치들과 ë°°í¬ë  당시ì˜
311사용가능한 ë©”ì¸ë¼ì¸ -git 커ë„ë“¤ì˜ ëª‡ëª‡ ë³€ê²½ì„ í¬í•¨í•œë‹¤.
312
313-mm 커ë„ë“¤ì€ ì •í•´ì§„ ì¼ì •ëŒ€ë¡œ ë°°í¬ë˜ì§€ 않는다. 하지만 대개 몇몇 -mm 커ë„들ì€
314ê° -rc 커ë„(1부터 3ì´ í”함) 사ì´ì—ì„œ ë°°í¬ëœë‹¤.
315
316서브시스템 ì»¤ë„ íŠ¸ë¦¬ë“¤ê³¼ 패치들
317-------------------------------
318ë§Žì€ ë‹¤ë¥¸ ì»¤ë„ ì„œë¸Œì‹œìŠ¤í…œ 개발ìžë“¤ì€ 커ë„ì˜ ë‹¤ë¥¸ 부분들ì—ì„œ 무슨 ì¼ì´
319ì¼ì–´ë‚˜ê³  있는지를 볼수 있ë„ë¡ ê·¸ë“¤ì˜ ê°œë°œ 트리를 공개한다. ì´ íŠ¸ë¦¬ë“¤ì€
320위ì—ì„œ ì„¤ëª…í•˜ì˜€ë˜ ê²ƒ 처럼 -mm ì»¤ë„ ë°°í¬ë“¤ë¡œ í•©ì³ì§„다.
321
322다ìŒì€ 활용가능한 ì»¤ë„ íŠ¸ë¦¬ë“¤ì„ ë‚˜ì—´í•œë‹¤.
323 git trees:
324 - Kbuild development tree, Sam Ravnborg < sam@ravnborg.org>
325 git.kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git
326
327 - ACPI development tree, Len Brown <len.brown@intel.com >
328 git.kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
329
330 - Block development tree, Jens Axboe <axboe@suse.de>
331 git.kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
332
333 - DRM development tree, Dave Airlie <airlied@linux.ie>
334 git.kernel.org:/pub/scm/linux/kernel/git/airlied/drm-2.6.git
335
336 - ia64 development tree, Tony Luck < tony.luck@intel.com>
337 git.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6.git
338
339 - infiniband, Roland Dreier <rolandd@cisco.com >
340 git.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband.git
341
342 - libata, Jeff Garzik <jgarzik@pobox.com>
343 git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev.git
344
345 - network drivers, Jeff Garzik <jgarzik@pobox.com>
346 git.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git
347
348 - pcmcia, Dominik Brodowski < linux@dominikbrodowski.net>
349 git.kernel.org:/pub/scm/linux/kernel/git/brodo/pcmcia-2.6.git
350
351 - SCSI, James Bottomley < James.Bottomley@SteelEye.com>
352 git.kernel.org:/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6.git
353
354 quilt trees:
355 - USB, PCI, Driver Core, and I2C, Greg Kroah-Hartman < gregkh@suse.de>
356 kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
357 - x86-64, partly i386, Andi Kleen < ak@suse.de>
358 ftp.firstfloor.org:/pub/ak/x86_64/quilt/
359
360 다른 ì»¤ë„ íŠ¸ë¦¬ë“¤ì€ http://kernel.org/git와 MAINTAINERS 파ì¼ì—ì„œ 참조할 수
361 있다.
362
363버그 보고
364---------
365bugzilla.kernel.org는 리눅스 ì»¤ë„ ê°œë°œìžë“¤ì´ 커ë„ì˜ ë²„ê·¸ë¥¼ 추ì í•˜ëŠ” ê³³ì´ë‹¤.
366사용ìžë“¤ì€ 발견한 모든 ë²„ê·¸ë“¤ì„ ë³´ê³ í•˜ê¸° 위하여 ì´ íˆ´ì„ ì‚¬ìš©í•  ê²ƒì„ ê¶Œìž¥í•œë‹¤.
367kernel bugzilla를 사용하는 ìžì„¸í•œ ë°©ë²•ì€ ë‹¤ìŒì„ 참조하ë¼.
368 http://test.kernel.org/bugzilla/faq.html
369
370ë©”ì¸ ì»¤ë„ ì†ŒìŠ¤ ë””ë ‰í† ë¦¬ì— ìžˆëŠ” REPORTING-BUGS 파ì¼ì€ ì»¤ë„ ë²„ê·¸ì¼ ê²ƒ ê°™ì€
371ê²ƒì„ ë³´ê³ í•˜ëŠ”ëŠ” ë²•ì— ê´€í•œ ì¢‹ì€ í…œí”Œë¦¿ì´ê³  문제를 추ì í•˜ê¸° 위해서 커ë„
372개발ìžë“¤ì´ 필요로 하는 ì •ë³´ê°€ 무엇들ì¸ì§€ë¥¼ ìƒì„¸ížˆ 설명하고 있다.
373
374
375버그 리í¬íŠ¸ë“¤ì˜ 관리
376--------------------
377
378ì—¬ëŸ¬ë¶„ì˜ í•´í‚¹ ê¸°ìˆ ì„ ì—°ìŠµí•˜ëŠ” 가장 ì¢‹ì€ ë°©ë²• ì¤‘ì˜ í•˜ëŠ” 다른 사람들ì´
379ë³´ê³ í•œ ë²„ê·¸ë“¤ì„ ìˆ˜ì •í•˜ëŠ” 것ì´ë‹¤. ì—¬ëŸ¬ë¶„ì€ ì»¤ë„ì„ ë”ìš± 안정화시키는ë°
380ë„ì›€ì„ ì¤„ ë¿ë§Œì´ ì•„ë‹ˆë¼ ì‹¤ì œìžˆëŠ” ë¬¸ì œë“¤ì„ ìˆ˜ì •í•˜ëŠ” ë²•ì„ ë°°ìš°ê²Œ ë˜ê³ 
381그와 함께 ì—¬ëŸ¬ë¶„ë“¤ì˜ ê¸°ìˆ ì€ í–¥ìƒë  것ì´ë©° 다른 개발ìžë“¤ì´ 여러분ì˜
382ì¡´ìž¬ì— ëŒ€í•´ 알게 ë  ê²ƒì´ë‹¤. 버그를 수정하는 ê²ƒì€ ê°œë°œìžë“¤ 사ì´ì—ì„œ
383ì ìˆ˜ë¥¼ ì–»ì„ ìˆ˜ 있는 가장 ì¢‹ì€ ë°©ë²•ì¤‘ì˜ í•˜ë‚˜ì´ë‹¤. 왜ëƒí•˜ë©´ ë§Žì€ ì‚¬ëžŒë“¤ì€
384다른 ì‚¬ëžŒë“¤ì˜ ë²„ê·¸ë“¤ì„ ìˆ˜ì •í•˜ê¸° 위하여 ì‹œê°„ì„ ë‚­ë¹„í•˜ì§€ 않기 때문ì´ë‹¤.
385
386ì´ë¯¸ ë³´ê³ ëœ ë²„ê·¸ 리í¬íŠ¸ë“¤ì„ 가지고 작업하기 위해서 http://bugzilla.kernelorg를
387참조하ë¼. ì—¬ëŸ¬ë¶„ì´ ì•žìœ¼ë¡œ ìƒê²¨ë‚  버그 리í¬íŠ¸ë“¤ì˜ ì¡°ì–¸ìžê°€ ë˜ê¸¸ ì›í•œë‹¤ë©´
388bugme-new ë©”ì¼ë§ 리스트나(새로운 버그 리í¬íŠ¸ë“¤ë§Œì´ ì´ê³³ì—ì„œ ë©”ì¼ë¡œ 전해진다)
389bugme-janitor ë©”ì¼ë§ 리스트(bugzillaì— ëª¨ë“  ë³€í™”ë“¤ì´ ì—¬ê¸°ì„œ ë©”ì¼ë¡œ 전해진다)
390ì— ë“±ë¡í•˜ë©´ ëœë‹¤.
391
392 http://lists.osdl.org/mailman/listinfo/bugme-new
393 http://lists.osdl.org/mailman/listinfo/bugme-janitors
394
395
396
397ë©”ì¼ë§ 리스트들
398---------------
399
400ìœ„ì˜ ëª‡ëª‡ ë¬¸ì„œë“¤ì´ ì„¤ëª…í•˜ì˜€ì§€ë§Œ 핵심 ì»¤ë„ ê°œë°œìžë“¤ì˜ 대다수는
401리눅스 ì»¤ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì— ì°¸ì—¬í•˜ê³  있다. ë¦¬ìŠ¤íŠ¸ì— ë“±ë¡í•˜ê³  해지하는
402ë°©ë²•ì— ê´€í•œ ìžì„¸í•œ ì‚¬í•­ì€ ë‹¤ìŒì—ì„œ 참조할 수 있다.
403 http://vger.kernel.org/vger-lists.html#linux-kernel
404웹ìƒì˜ ë§Žì€ ë‹¤ë¥¸ ê³³ì—ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì˜ ì•„ì¹´ì´ë¸Œë“¤ì´ 있다.
405ì´ëŸ¬í•œ ì•„ì¹´ì´ë¸Œë“¤ì„ 찾으려면 검색 ì—”ì§„ì„ ì‚¬ìš©í•˜ë¼. 예를 들어:
406 http://dir.gmane.org/gmane.linux.kernel
407ì—¬ëŸ¬ë¶„ì´ ìƒˆë¡œìš´ ë¬¸ì œì— ê´€í•´ ë¦¬ìŠ¤íŠ¸ì— ì˜¬ë¦¬ê¸° ì „ì— ë§í•˜ê³  ì‹¶ì€ ì£¼ì œì— ëŒ€í•œ
408ê²ƒì„ ì•„ì¹´ì´ë¸Œì—ì„œ 먼저 찾기를 강력히 권장한다. ì´ë¯¸ ìƒì„¸í•˜ê²Œ í† ë¡ ëœ ë§Žì€
409ê²ƒë“¤ì´ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì˜ ì•„ì¹´ì´ë¸Œì— 기ë¡ë˜ì–´ 있다.
410
411ê°ê°ì˜ ì»¤ë„ ì„œë¸Œì‹œìŠ¤í…œë“¤ì˜ ëŒ€ë¶€ë¶„ì€ ìžì‹ ë“¤ì˜ ê°œë°œì— ê´€í•œ 노력들로 ì´ë£¨ì–´ì§„
412ë¶„ë¦¬ëœ ë©”ì¼ë§ 리스트를 ë”°ë¡œ 가지고 있다. 다른 ê·¸ë£¹ë“¤ì´ ë¬´ìŠ¨ 리스트를 가지고
413있는지는 MAINTAINERS 파ì¼ì„ 참조하ë¼.
414
415ë§Žì€ ë¦¬ìŠ¤íŠ¸ë“¤ì€ kernel.orgì—ì„œ 호스트ë˜ê³  있다. ê·¸ ì •ë³´ë“¤ì€ ë‹¤ìŒì—ì„œ ì°¸ì¡°ë  ìˆ˜ 있다.
416 http://vger.kernel.org/vger-lists.html
417
418ë¦¬ìŠ¤íŠ¸ë“¤ì„ ì‚¬ìš©í•  때는 올바른 ì˜ˆì ˆì„ ë”°ë¥¼ ê²ƒì„ ìœ ë…í•´ë¼.
419대단하진 않지만 ë‹¤ìŒ URLì€ ë¦¬ìŠ¤íŠ¸(í˜¹ì€ ëª¨ë“  리스트)와 대화하는 몇몇 간단한
420ê°€ì´ë“œë¼ì¸ì„ 가지고 있다.
421 http://www.albion.com/netiquette/
422
423여러 ì‚¬ëžŒë“¤ì´ ì—¬ëŸ¬ë¶„ì˜ ë©”ì¼ì— ì‘답한다면 CC: 즉 수신 리스트는 꽤 커지게
424ë  ê²ƒì´ë‹¤. 아무 ì´ìœ ì—†ì´ CCì—ì„œ ì–´ë–¤ ì‚¬ëžŒë„ ì œê±°í•˜ê±°ë‚˜ 리스트 주소로만
425회신하지 마ë¼. ë©”ì¼ì„ 보낸 사람으로서 하나를 받고 리스트로부터 ë˜
426하나를 받아 ë‘번 받는 ê²ƒì— ìµìˆ™í•˜ì—¬ 있으니 mail-header를 조작하려고 하지
427ë§ì•„ë¼. ì‚¬ëžŒë“¤ì€ ê·¸ëŸ° ê²ƒì„ ì¢‹ì•„í•˜ì§€ ì•Šì„ ê²ƒì´ë‹¤.
428
429ì—¬ëŸ¬ë¶„ì˜ íšŒì‹ ì˜ ë¬¸ë§¥ì„ ì›ëž˜ëŒ€ë¡œ 유지해야 한다. ì—¬ëŸ¬ë¶„ë“¤ì˜ íšŒì‹ ì˜ ìœ—ë¶€ë¶„ì—
430"John 커ë„해커는 작성했다...."를 유지하며 ì—¬ëŸ¬ë¶„ë“¤ì˜ ì˜ê²¬ì„ ê·¸ ë©”ì¼ì˜ 윗부분ì—
431작성하지 ë§ê³  ê° ì¸ìš©í•œ 단ë½ë“¤ 사ì´ì— 넣어ë¼.
432
433ì—¬ëŸ¬ë¶„ë“¤ì´ íŒ¨ì¹˜ë“¤ì„ ë©”ì¼ì— 넣는다면 ê·¸ê²ƒë“¤ì€ Documentation/SubmittingPatchesì—
434나와있는ë°ë¡œ 명백히(plain) ì½ì„ 수 있는 í…스트여야 한다. ì»¤ë„ ê°œë°œìžë“¤ì€
435첨부파ì¼ì´ë‚˜ ì••ì¶•ëœ íŒ¨ì¹˜ë“¤ì„ ì›í•˜ì§€ 않는다. ê·¸ë“¤ì€ ì—¬ëŸ¬ë¶„ë“¤ì˜ íŒ¨ì¹˜ì˜
436ê° ë¼ì¸ 단위로 코멘트를 하길 ì›í•˜ë©° 압축하거나 첨부하지 ì•Šê³  보내는 것ì´
437그렇게 í•  수 있는 유ì¼í•œ 방법ì´ë‹¤. ì—¬ëŸ¬ë¶„ë“¤ì´ ì‚¬ìš©í•˜ëŠ” ë©”ì¼ í”„ë¡œê·¸ëž¨ì´
438스페ì´ìŠ¤ë‚˜ 탭 문ìžë“¤ì„ 조작하지 않는지 확ì¸í•˜ë¼. 가장 ì¢‹ì€ ì²« 테스트는
439ë©”ì¼ì„ ìžì‹ ì—게 ë³´ë‚´ë³´ê³  스스로 ê·¸ 패치를 ì ìš©í•´ë³´ë¼. ê·¸ê²ƒì´ ë™ìž‘하지
440않는다면 ì—¬ëŸ¬ë¶„ì˜ ë©”ì¼ í”„ë¡œê·¸ëž¨ì„ ê³ ì¹˜ë˜ê°€ 제대로 ë™ìž‘하는 프로그램으로
441바꾸어ë¼.
442
443ë¬´ì—‡ë³´ë‹¤ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì˜ ë‹¤ë¥¸ 구ë…ìžë“¤ì—게 보여주려 한다는 ê²ƒì„ ê¸°ì–µí•˜ë¼.
444
445
446커뮤니티와 ì¼í•˜ëŠ” 법
447--------------------
448
449ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ì˜ ëª©ì ì€ 가능한한 가장 ì¢‹ì€ ì»¤ë„ì„ ì œê³µí•˜ëŠ” 것ì´ë‹¤. 여러분ì´
450받아들여질 패치를 제출하게 ë˜ë©´ ê·¸ íŒ¨ì¹˜ì˜ ê¸°ìˆ ì ì¸ ì´ì ìœ¼ë¡œ ê²€í† ë  ê²ƒì´ë‹¤.
451그럼 ì—¬ëŸ¬ë¶„ë“¤ì€ ë¬´ì—‡ì„ ê¸°ëŒ€í•˜ê³  있어야 하는가?
452 - 비íŒ
453 - ì˜ê²¬
454 - ë³€ê²½ì„ ìœ„í•œ 요구
455 - ë‹¹ìœ„ì„±ì„ ìœ„í•œ 요구
456 - ê³ ìš”
457
458기억하ë¼. ì´ê²ƒë“¤ì€ ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ê°€ 커ë„ë¡œ 들어가기 위한 과정ì´ë‹¤. 여러분ì˜
459íŒ¨ì¹˜ë“¤ì€ ë¹„íŒê³¼ 다른 ì˜ê²¬ì„ ë°›ì„ ìˆ˜ 있고 ê·¸ê²ƒë“¤ì„ ê¸°ìˆ ì ì¸ 레벨로 í‰ê°€í•˜ê³ 
460재작업하거나 ë˜ëŠ” 왜 수정하면 안ë˜ëŠ”ì§€ì— ê´€í•˜ì—¬ 명료하고 ê°„ê²°í•œ ì´ìœ ë¥¼
461ë§í•  수 있어야 한다. ì—¬ëŸ¬ë¶„ì´ ì œì¶œí•œ ê²ƒì— ì–´ë–¤ ì‘ë‹µë„ ìžˆì§€ 않다면 몇 ì¼ì„
462기다려보고 다시 ì‹œë„í•´ë¼. 때론 너무 ë§Žì€ ë©”ì¼ë“¤ ì†ì— ë¬»í˜€ë²„ë¦¬ê¸°ë„ í•œë‹¤.
463
464ì—¬ëŸ¬ë¶„ì€ ë¬´ì—‡ì„ í•´ì„œëŠ” 안ë˜ëŠ”ê°€?
465 - ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ê°€ 아무 질문 ì—†ì´ ë°›ì•„ë“¤ì—¬ì§€ê¸°ë¥¼ 기대하는 것
466 - ë°©ì–´ì ì´ ë˜ëŠ” 것
467 - ì˜ê²¬ì„ 무시하는 것
468 - ìš”ì²­ëœ ë³€ê²½ì„ í•˜ì§€ ì•Šê³  패치를 다시 제출하는 것
469
470가능한한 가장 ì¢‹ì€ ê¸°ìˆ ì ì¸ í•´ë‹µì„ ì°¾ê³  있는 커뮤니티ì—서는 í•­ìƒ
471ì–´ë–¤ 패치가 얼마나 좋ì€ì§€ì— 관하여 다른 ì˜ê²¬ë“¤ì´ ìžˆì„ ìˆ˜ 있다. 여러분ì€
472협조ì ì´ì–´ì•¼ 하고 ê¸°êº¼ì´ ì—¬ëŸ¬ë¶„ì˜ ìƒê°ì„ ì»¤ë„ ë‚´ì— ë§žì¶”ì–´ì•¼ 한다. 아니면
473ì ì–´ë„ ì—¬ëŸ¬ë¶„ì˜ ê²ƒì´ ê°€ì¹˜ìžˆë‹¤ëŠ” ê²ƒì„ ì¤‘ëª…í•˜ì—¬ì•¼ 한다. ìž˜ëª»ëœ ê²ƒë„ ì—¬ëŸ¬ë¶„ì´
474올바른 ë°©í–¥ì˜ í•´ê²°ì±…ìœ¼ë¡œ ì´ëŒì–´ê°ˆ ì˜ì§€ê°€ 있다면 받아들여질 것ì´ë¼ëŠ” ì ì„
475기억하ë¼.
476
477ì—¬ëŸ¬ë¶„ì˜ ì²« íŒ¨ì¹˜ì— ì—¬ëŸ¬ë¶„ì´ ìˆ˜ì •í•´ì•¼í•˜ëŠ” 십여개 ì •ë„ì˜ íšŒì‹ ì´ ì˜¤ëŠ”
478ê²½ìš°ë„ í”하다. ì´ê²ƒì€ ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ê°€ 받아들여지지 ì•Šì„ ê²ƒì´ë¼ëŠ” 것ì„
479ì˜ë¯¸í•˜ëŠ” ê²ƒì´ ì•„ë‹ˆê³  ê°œì¸ì ìœ¼ë¡œ 여러분ì—게 ê°ì •ì´ 있어서 그러는 것ë„
480아니다. 간단히 ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ì— ì œê¸°ëœ ë¬¸ì œë“¤ì„ ìˆ˜ì •í•˜ê³  ê·¸ê²ƒì„ ë‹¤ì‹œ
481ë³´ë‚´ë¼.
482
483
484ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ì™€ 기업 ì¡°ì§ê°„ì˜ ì°¨ì´ì 
485-----------------------------------------------------------------
486ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ëŠ” 가장 전통ì ì¸ íšŒì‚¬ì˜ ê°œë°œ 환경과는 다르다. ì—¬ê¸°ì— ì—¬ëŸ¬ë¶„ë“¤ì˜
487문제를 피하기 위한 목ë¡ì´ 있다.
488 ì—¬ëŸ¬ë¶„ë“¤ì´ ì œì•ˆí•œ ë³€ê²½ë“¤ì— ê´€í•˜ì—¬ ë§í•  ë•Œ ì¢‹ì€ ê²ƒë“¤ :
489 - " ì´ê²ƒì€ 여러 ë¬¸ì œë“¤ì„ í•´ê²¹í•©ë‹ˆë‹¤."
490 - "ì´ê²ƒì€ 2000 ë¼ì¸ì˜ 코드를 제거합니다."
491 - "ì´ê²ƒì€ ë‚´ê°€ ë§í•˜ë ¤ëŠ” ê²ƒì— ê´€í•´ 설명하는 패치입니다."
492 - "나는 5ê°œì˜ ë‹¤ë¥¸ 아키í…ì³ì—ì„œ ê·¸ê²ƒì„ í…ŒìŠ¤íŠ¸í–ˆìŠ´ìœ¼ë¡œ..."
493 - "ì—¬ê¸°ì— ì¼ë ¨ì˜ ìž‘ì€ íŒ¨ì¹˜ë“¤ì´ ìžˆìŠµìŒë¡œ..."
494 - "ì´ê²ƒì€ ì¼ë°˜ì ì¸ 머신ì—ì„œ ì„±ëŠ¥ì„ í–¥ìƒì‹œí‚¤ë¯€ë¡œ..."
495
496 ì—¬ëŸ¬ë¶„ë“¤ì´ ë§í•  ë•Œ 피해야 í•  좋지 ì•Šì€ ê²ƒë“¤ :
497 - "우리를 ê·¸ê²ƒì„ AIT/ptx/Solarisì—ì„œ ì´ëŸ¬í•œ 방법으로 했다. 그러므로 ê·¸ê²ƒì€ ì¢‹ì€ ê²ƒìž„ì— í‹€ë¦½ì—†ë‹¤..."
498 - "나는 20ë…„ë™ì•ˆ ì´ê²ƒì„ 해왔다. 그러므로..."
499 - "ì´ê²ƒì€ ëˆì„ 벌기위해 ë‚˜ì˜ íšŒì‚¬ê°€ 필요로 하는 것ì´ë‹¤."
500 - "ì´ê²ƒì€ ìš°ë¦¬ì˜ ì—”í„°í”„ë¼ì´ì¦ˆ ìƒí’ˆ ë¼ì¸ì„ 위한 것ì´ë‹¤."
501 - "ì—¬ê¸°ì— ë‚˜ì˜ ìƒê°ì„ ë§í•˜ê³  있는 1000 페ì´ì§€ 설계 문서가 있다."
502 - "나는 6달ë™ì•ˆ ì´ê²ƒì„ 했으니..."
503 - "여기세 5000ë¼ì¸ 짜리 패치가 있으니..."
504 - "나는 현재 ë’¤ì£½ë°•ì£½ì¸ ê²ƒì„ ìž¬ìž‘ì„±í–ˆë‹¤. 그리고 여기ì—..."
505 - "나는 마ê°ì‹œí•œì„ 가지고 있으므로 ì´ íŒ¨ì¹˜ëŠ” 지금 ì ìš©ë  필요가 있다."
506
507ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ê°€ 전통ì ì¸ 소프트웨어 ì—”ì§€ë‹ˆì–´ë§ ê°œë°œ 환경들과
508ë˜ ë‹¤ë¥¸ ì ì€ ì–¼êµ´ì„ ë³´ì§€ ì•Šê³  ì¼í•œë‹¤ëŠ” ì ì´ë‹¤. ì´ë©”ì¼ê³¼ irc를 대화ì˜
509주요수단으로 사용하는 ê²ƒì˜ í•œê°€ì§€ 장ì ì€ 성별ì´ë‚˜ ì¸ì¢…ì˜ ì°¨ë³„ì´
510없다는 것ì´ë‹¤. 리눅스 커ë„ì˜ ìž‘ì—… 환경ì—서는 단지 ì´ë©”ì¼ ì£¼ì†Œë§Œ
511알수 있기 ë•Œë¬¸ì— ì—¬ì„±ê³¼ 소수 ë¯¼ì¡±ë“¤ë„ ëª¨ë‘ ë°›ì•„ë“¤ì—¬ì§„ë‹¤. êµ­ì œì ìœ¼ë¡œ
512ì¼í•˜ê²Œ ë˜ëŠ” ì¸¡ë©´ì€ ì‚¬ëžŒì˜ ì´ë¦„ì— ê·¼ê±°í•˜ì—¬ ì„±ë³„ì„ ì¶”ì¸¡í•  수 없게
513í•˜ê¸°ë•Œë¬¸ì— ì°¨ë³„ì„ ì—†ì• ëŠ” ë° ë„ì›€ì„ ì¤€ë‹¤. Andreaë¼ëŠ” ì´ë¦„ì„ ê°€ì§„ 남ìžì™€
514Patì´ë¼ëŠ” ì´ë¦„ì„ ê°€ì§„ ì—¬ìžê°€ ìžˆì„ ìˆ˜ë„ ìžˆëŠ” 것ì´ë‹¤. 리눅스 커ë„ì—ì„œ
515작업하며 ìƒê°ì„ í‘œí˜„í•´ì™”ë˜ ëŒ€ë¶€ë¶„ì˜ ì—¬ì„±ë“¤ì€ ê¸ì •ì ì¸ ê²½í—˜ì„ ê°€ì§€ê³ 
516있다.
517
518언어 ìž¥ë²½ì€ ì˜ì–´ì— ìµìˆ™í•˜ì§€ ì•Šì€ ëª‡ëª‡ 사람들ì—게 문제가 ë  ìˆ˜ë„ ìžˆë‹¤.
519 ì–¸ì–´ì˜ í›Œë¥­í•œ 구사는 ë©”ì¼ë§ 리스트ì—ì„œ 올바르게 ìžì‹ ì˜ ìƒê°ì„
520표현하기 위하여 필요하다. 그래서 ì—¬ëŸ¬ë¶„ì€ ì´ë©”ì¼ì„ 보내기 ì „ì—
521ì˜ì–´ë¥¼ 올바르게 사용하고 있는지를 ì²´í¬í•˜ëŠ” ê²ƒì´ ë°”ëžŒì§í•˜ë‹¤.
522
523
524ì—¬ëŸ¬ë¶„ì˜ ë³€ê²½ì„ ë‚˜ëˆ„ì–´ë¼
525------------------------
526
527리눅스 ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ëŠ” í•œêº¼ë²ˆì— êµ‰ìž¥ížˆ í° ì½”ë“œì˜ ë¬¶ìŒì„ 쉽게
528받아들ì´ì§€ 않는다. ë³€ê²½ì€ ì ì ˆí•˜ê²Œ 소개ë˜ê³ , 검토ë˜ê³ , ê°ê°ì˜
529부분으로 작게 나누어져야 한다. ì´ê²ƒì€ 회사ì—ì„œ 하는 것과는 정확히
530반대ë˜ëŠ” 것ì´ë‹¤. ì—¬ëŸ¬ë¶„ë“¤ì˜ ì œì•ˆì€ ê°œë°œ ì´ˆê¸°ì— ì¼ì°ì´ 소개ë˜ì•¼ 한다.
531그래서 ì—¬ëŸ¬ë¶„ë“¤ì€ ìžì‹ ì´ 하고 있는 ê²ƒì— ê´€í•˜ì—¬ í”¼ë“œë°±ì„ ë°›ì„ ìˆ˜ 있게
532ëœë‹¤. 커뮤니티가 ì—¬ëŸ¬ë¶„ë“¤ì´ ì»¤ë®¤ë‹ˆí‹°ì™€ 함께 ì¼í•˜ê³  있다는 것ì„
533ëŠë¼ë„ë¡ ë§Œë“¤ê³  커뮤니티가 ì—¬ëŸ¬ë¶„ì˜ ê¸°ëŠ¥ì„ ìœ„í•œ 쓰레기 장으로서
534사용ë˜ì§€ ì•Šê³  있다는 ê²ƒì„ ëŠë¼ê²Œ 하ìž. 그러나 ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì— í•œë²ˆì—
53550ê°œì˜ ì´ë©”ì¼ì„ 보내지는 ë§ì•„ë¼. ì—¬ëŸ¬ë¶„ë“¤ì˜ ì¼ë ¨ì˜ íŒ¨ì¹˜ë“¤ì€ í•­ìƒ
536ë” ìž‘ì•„ì•¼ 한다.
537
538패치를 나누는 ì´ìœ ëŠ” 다ìŒê³¼ 같다.
539
5401) ìž‘ì€ íŒ¨ì¹˜ë“¤ì€ ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ë“¤ì´ ì ìš©ë  수 있는 í™•ë¥ ì„ ë†’ì—¬ì¤€ë‹¤.
541 왜ëƒí•˜ë©´ 다른 ì‚¬ëžŒë“¤ì€ ì •í™•ì„±ì„ ê²€ì¦í•˜ê¸° 위하여 ë§Žì€ ì‹œê°„ê³¼ 노력ì„
542 들ì´ê¸°ë¥¼ ì›í•˜ì§€ 않는다. 5ì¤„ì˜ íŒ¨ì¹˜ëŠ” ë©”ì¸íŠ¸ë„ˆê°€ ê±°ì˜ ëª‡ 초간 ížë—
543 ë³´ë©´ ì ìš©ë  수 있다. 그러나 500 ì¤„ì˜ íŒ¨ì¹˜ëŠ” ì •í™•ì„±ì„ ê²€í† í•˜ê¸° 위하여
544 ëª‡ì‹œê°„ì´ ê±¸ë¦´ ìˆ˜ë„ ìžˆë‹¤(걸리는 ì‹œê°„ì€ íŒ¨ì¹˜ì˜ í¬ê¸° í˜¹ì€ ë‹¤ë¥¸ 것ì—
545 비례하여 기하급수ì ìœ¼ë¡œ 늘어난다).
546
547 패치를 작게 만드는 ê²ƒì€ ë¬´ì—‡ì¸ê°€ 잘못ë˜ì—ˆì„ ë•Œ 디버그하는 것ì„
548 쉽게 만든다. 즉, 그렇게 만드는 ê²ƒì€ ë§¤ìš° í° íŒ¨ì¹˜ë¥¼ ì ìš©í•œ 후ì—
549 조사하는 것 보다 ìž‘ì€ íŒ¨ì¹˜ë¥¼ ì ìš©í•œ í›„ì— (그리고 ëª‡ëª‡ì˜ ê²ƒì´
550 ê¹¨ì¡Œì„ ë•Œ) 하나씩 íŒ¨ì¹˜ë“¤ì„ ì œê±°í•´ê°€ë©° 디버그 하기 쉽ë„ë¡ ë§Œë“¤ì–´ 준다.
551
5522) ìž‘ì€ íŒ¨ì¹˜ë“¤ì„ ë³´ë‚´ëŠ” 것ë¿ë§Œ ì•„ë‹ˆë¼ íŒ¨ì¹˜ë“¤ì„ ì œì¶œí•˜ê¸°ì „ì— ìž¬ìž‘ì„±í•˜ê³ 
553 간단하게(í˜¹ì€ ê°„ë‹¨í•œê²Œ 재배치하여) 하는 ê²ƒë„ ì¤‘ìš”í•˜ë‹¤.
554
555ì—¬ê¸°ì— ì»¤ë„ ê°œë°œìž Al Viroì˜ ì´ì•¼ê¸°ê°€ 있다.
556 "í•™ìƒì˜ 수학 숙제를 채ì í•˜ëŠ” ì„ ìƒë‹˜ì„ ìƒê°í•´ë³´ë¼. ì„ ìƒë‹˜ì€ í•™ìƒë“¤ì´
557 ë‹µì„ ì–»ì„때까지 ê²ªì€ ì‹œí–‰ì°©ì˜¤ë¥¼ 보길 ì›í•˜ì§€ 않는다. ì„ ìƒë‹˜ë“¤ì€
558 간결하고 가장 ë›°ì–´ë‚œ ë‹µì„ ë³´ê¸¸ ì›í•œë‹¤. 훌륭한 í•™ìƒì€ ì´ê²ƒì„ 알고
559 마지막으로 ë‹µì„ ì–»ê¸° ì „ 중간 ê³¼ì •ë“¤ì„ ì œì¶œí•˜ì§„ 않는다.
560
561 ì»¤ë„ ê°œë°œë„ ë§ˆì°¬ê°€ì§€ì´ë‹¤. ë©”ì¸íŠ¸ë„ˆë“¤ê³¼ 검토하는 ì‚¬ëžŒë“¤ì€ ë¬¸ì œë¥¼
562 풀어나가는 과정ì†ì— 숨겨진 ê³¼ì •ì„ ë³´ê¸¸ ì›í•˜ì§„ 않는다. 그들ì€
563 간결하고 멋진 ë‹µì„ ë³´ê¸¸ ì›í•œë‹¤."
564
565커뮤니티와 함께 ì¼í•˜ë©° ë›°ì–´ë‚œ ë‹µì„ ì°¾ê³  ì—¬ëŸ¬ë¶„ë“¤ì˜ ì™„ì„±ë˜ì§€ ì•Šì€ ì¼ë“¤
566사ì´ì— ê· í˜•ì„ ìœ ì§€í•´ì•¼ 하는 ì–´ë ¤ì›€ì´ ìžˆì„ ìˆ˜ 있다. 그러므로 프로세스ì˜
567ì´ˆë°˜ì— ì—¬ëŸ¬ë¶„ì˜ ì¼ì„ í–¥ìƒì‹œí‚¤ê¸°ìœ„í•œ í”¼ë“œë°±ì„ ì–»ëŠ” 것 ë¿ë§Œ 아니ë¼
568ì—¬ëŸ¬ë¶„ë“¤ì˜ ë³€ê²½ë“¤ì„ ìž‘ì€ ë¬¶ìŒìœ¼ë¡œ 유지해서 심지어는 ì—¬ëŸ¬ë¶„ì˜ ìž‘ì—…ì˜
569모든 ë¶€ë¶„ì´ ì§€ê¸ˆì€ í¬í•¨ë  준비가 ë˜ì–´ìžˆì§€ 않지만 ìž‘ì€ ë¶€ë¶„ì€ ì´ë¯¸
570받아들여질 수 있ë„ë¡ ìœ ì§€í•˜ëŠ” ê²ƒì´ ë°”ëžŒì§í•˜ë‹¤.
571
572ë˜í•œ 완성ë˜ì§€ 않았고 "ë‚˜ì¤‘ì— ìˆ˜ì •ë  ê²ƒì´ë‹¤." 와 ê°™ì€ ê²ƒë“¤ì€ í¬í•¨í•˜ëŠ”
573íŒ¨ì¹˜ë“¤ì€ ë°›ì•„ë“¤ì—¬ì§€ì§€ ì•Šì„ ê²ƒì´ë¼ëŠ” ì ì„ 유ë…하ë¼.
574
575ë³€ê²½ì„ ì •ë‹¹í™”í•´ë¼
576-----------------
577
578ì—¬ëŸ¬ë¶„ë“¤ì˜ ë‚˜ëˆ„ì–´ì§„ íŒ¨ì¹˜ë“¤ì„ ë¦¬ëˆ…ìŠ¤ 커뮤니티가 왜 ë°˜ì˜í•´ì•¼ 하는지를
579ì•Œë„ë¡ í•˜ëŠ” ê²ƒì€ ë§¤ìš° 중요하다. 새로운 ê¸°ëŠ¥ë“¤ì´ í•„ìš”í•˜ê³  유용하다는
580ê²ƒì€ ë°˜ë“œì‹œ ê·¸ì— ë§žëŠ” ì´ìœ ê°€ 있어야 한다.
581
582
583ë³€ê²½ì„ ë¬¸ì„œí™”í•´ë¼
584-----------------
585
586ì—¬ëŸ¬ë¶„ì´ íŒ¨ì¹˜ë¥¼ ë³´ë‚´ë ¤ 할때는 ì—¬ëŸ¬ë¶„ì´ ë¬´ì—‡ì„ ë§í•˜ë ¤ê³  하는지를 충분히
587ìƒê°í•˜ì—¬ ì´ë©”ì¼ì„ 작성해야 한다. ì´ ì •ë³´ëŠ” 패치를 위한 ChangeLogê°€ ë 
588것ì´ë‹¤. 그리고 í•­ìƒ ê·¸ ë‚´ìš©ì„ ë³´ê¸¸ ì›í•˜ëŠ” 모든 ì‚¬ëžŒë“¤ì„ ìœ„í•´ ë³´ì¡´ë 
589것ì´ë‹¤. 패치는 완벽하게 다ìŒê³¼ ê°™ì€ ë‚´ìš©ë“¤ì„ í¬í•¨í•˜ì—¬ 설명해야 한다.
590 - ë³€ê²½ì´ ì™œ 필요한지
591 - íŒ¨ì¹˜ì— ê´€í•œ ì „ì²´ 설계 어프로치
592 - 구현 ìƒì„¸ë“¤
593 - 테스트 결과들
594
595ì´ê²ƒì´ 무엇ì¸ì§€ ë” ìžì„¸í•œ ê²ƒì„ ì•Œê³  싶다면 ë‹¤ìŒ ë¬¸ì„œì˜ ChageLog í•­ì„ ë´ë¼.
596 "The Perfect Patch"
597 http://www.zip.com.au/~akpm/linux/patches/stuff/tpp.txt
598
599
600
601
602ì´ ëª¨ë“  ê²ƒì„ í•˜ëŠ” ê²ƒì€ ë§¤ìš° 어려운 ì¼ì´ë‹¤. 완벽히 소화하는 ë°ëŠ” ì ì–´ë„ 몇년ì´
603걸릴 ìˆ˜ë„ ìžˆë‹¤. ë§Žì€ ì¸ë‚´ì™€ ê²°ì˜ê°€ 필요한 계ì†ë˜ëŠ” ê°œì„ ì˜ ê³¼ì •ì´ë‹¤. 그러나
604가능한한 í¬ê¸°í•˜ì§€ ë§ë¼. ë§Žì€ ì‚¬ëžŒë“¤ì€ ì´ì „부터 í•´ì™”ë˜ ê²ƒì´ê³  ê·¸ 사람들ë„
605정확하게 ì—¬ëŸ¬ë¶„ë“¤ì´ ì§€ê¸ˆ ì„œ 있는 ê·¸ 곳부터 시작했었다.
606
607
608
609
610----------
611"개발 프로세스"(http://linux.tar.gz/articles/2.6-development_process) 섹션ì„
612ìž‘ì„±í•˜ëŠ”ë° ìžˆì–´ 참고할 문서를 사용하ë„ë¡ í—ˆë½í•´ì¤€ Paolo Ciarrocchiì—게
613ê°ì‚¬í•œë‹¤. ì—¬ëŸ¬ë¶„ë“¤ì´ ë§í•´ì•¼ í•  것과 ë§í•´ì„œëŠ” 안ë˜ëŠ” ê²ƒì˜ ëª©ë¡ ì¤‘ ì¼ë¶€ë¥¼ 제공해준
614Randy Dunlapê³¼ Gerrit Huizengaì—게 ê°ì‚¬í•œë‹¤. ë˜í•œ 검토와 ì˜ê²¬ 그리고
615ê³µí—Œì„ ì•„ë¼ì§€ ì•Šì€ Pat Mochel, Hanna Linder, Randy Dunlap, Kay Sievers,
616Vojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook, Andrew Morton, Andi Kleen,
617Vadim Lobanov, Jesper Juhl, Adrian Bunk, Keri Harris, Frans Pop,
618David A. Wheeler, Junio Hamano, Michael Kerrisk, and Alex Shepardì—ê²Œë„ ê°ì‚¬ë¥¼ 전한다.
619ê·¸ë“¤ì˜ ë„ì›€ì´ ì—†ì—ˆë‹¤ë©´ ì´ ë¬¸ì„œëŠ” 존재하지 ì•Šì•˜ì„ ê²ƒì´ë‹¤.
620
621
622
623ë©”ì¸íŠ¸ë„ˆ: Greg Kroah-Hartman <greg@kroah.com>
diff --git a/Documentation/kobject.txt b/Documentation/kobject.txt
index 8ee49ee7c963..ca86a885ad8f 100644
--- a/Documentation/kobject.txt
+++ b/Documentation/kobject.txt
@@ -54,7 +54,6 @@ embedded in larger data structures and replace fields they duplicate.
54 54
55struct kobject { 55struct kobject {
56 const char * k_name; 56 const char * k_name;
57 char name[KOBJ_NAME_LEN];
58 struct kref kref; 57 struct kref kref;
59 struct list_head entry; 58 struct list_head entry;
60 struct kobject * parent; 59 struct kobject * parent;
@@ -223,18 +222,15 @@ decl_subsys(devices, &ktype_device, &device_uevent_ops);
223is equivalent to doing: 222is equivalent to doing:
224 223
225struct kset devices_subsys = { 224struct kset devices_subsys = {
226 .kobj = {
227 .name = "devices",
228 },
229 .ktype = &ktype_devices, 225 .ktype = &ktype_devices,
230 .uevent_ops = &device_uevent_ops, 226 .uevent_ops = &device_uevent_ops,
231}; 227};
232 228kobject_set_name(&devices_subsys, name);
233 229
234The objects that are registered with a subsystem that use the 230The objects that are registered with a subsystem that use the
235subsystem's default list must have their kset ptr set properly. These 231subsystem's default list must have their kset ptr set properly. These
236objects may have embedded kobjects or ksets. The 232objects may have embedded kobjects or ksets. The
237following helpers make setting the kset easier: 233following helper makes setting the kset easier:
238 234
239 235
240kobj_set_kset_s(obj,subsys) 236kobj_set_kset_s(obj,subsys)
@@ -242,22 +238,8 @@ kobj_set_kset_s(obj,subsys)
242- Assumes that obj->kobj exists, and is a struct kobject. 238- Assumes that obj->kobj exists, and is a struct kobject.
243- Sets the kset of that kobject to the kset <subsys>. 239- Sets the kset of that kobject to the kset <subsys>.
244 240
245
246kset_set_kset_s(obj,subsys)
247
248- Assumes that obj->kset exists, and is a struct kset.
249- Sets the kset of the embedded kobject to the kset <subsys>.
250
251subsys_set_kset(obj,subsys)
252
253- Assumes obj->subsys exists, and is a struct subsystem.
254- Sets obj->subsys.kset.kobj.kset to the subsystem's embedded kset.
255
256void subsystem_init(struct kset *s);
257int subsystem_register(struct kset *s); 241int subsystem_register(struct kset *s);
258void subsystem_unregister(struct kset *s); 242void subsystem_unregister(struct kset *s);
259struct kset *subsys_get(struct kset *s);
260void kset_put(struct kset *s);
261 243
262These are just wrappers around the respective kset_* functions. 244These are just wrappers around the respective kset_* functions.
263 245
diff --git a/Documentation/lguest/lguest.c b/Documentation/lguest/lguest.c
index f7918401a007..103e346c8b6a 100644
--- a/Documentation/lguest/lguest.c
+++ b/Documentation/lguest/lguest.c
@@ -46,7 +46,7 @@ typedef uint32_t u32;
46typedef uint16_t u16; 46typedef uint16_t u16;
47typedef uint8_t u8; 47typedef uint8_t u8;
48#include "../../include/linux/lguest_launcher.h" 48#include "../../include/linux/lguest_launcher.h"
49#include "../../include/asm-i386/e820.h" 49#include "../../include/asm-x86/e820_32.h"
50/*:*/ 50/*:*/
51 51
52#define PAGE_PRESENT 0x7 /* Present, RW, Execute */ 52#define PAGE_PRESENT 0x7 /* Present, RW, Execute */
@@ -882,7 +882,7 @@ static u32 handle_block_output(int fd, const struct iovec *iov,
882 * of the block file (possibly extending it). */ 882 * of the block file (possibly extending it). */
883 if (off + len > device_len) { 883 if (off + len > device_len) {
884 /* Trim it back to the correct length */ 884 /* Trim it back to the correct length */
885 ftruncate(dev->fd, device_len); 885 ftruncate64(dev->fd, device_len);
886 /* Die, bad Guest, die. */ 886 /* Die, bad Guest, die. */
887 errx(1, "Write past end %llu+%u", off, len); 887 errx(1, "Write past end %llu+%u", off, len);
888 } 888 }
diff --git a/Documentation/lockstat.txt b/Documentation/lockstat.txt
new file mode 100644
index 000000000000..4ba4664ce5c3
--- /dev/null
+++ b/Documentation/lockstat.txt
@@ -0,0 +1,120 @@
1
2LOCK STATISTICS
3
4- WHAT
5
6As the name suggests, it provides statistics on locks.
7
8- WHY
9
10Because things like lock contention can severely impact performance.
11
12- HOW
13
14Lockdep already has hooks in the lock functions and maps lock instances to
15lock classes. We build on that. The graph below shows the relation between
16the lock functions and the various hooks therein.
17
18 __acquire
19 |
20 lock _____
21 | \
22 | __contended
23 | |
24 | <wait>
25 | _______/
26 |/
27 |
28 __acquired
29 |
30 .
31 <hold>
32 .
33 |
34 __release
35 |
36 unlock
37
38lock, unlock - the regular lock functions
39__* - the hooks
40<> - states
41
42With these hooks we provide the following statistics:
43
44 con-bounces - number of lock contention that involved x-cpu data
45 contentions - number of lock acquisitions that had to wait
46 wait time min - shortest (non-0) time we ever had to wait for a lock
47 max - longest time we ever had to wait for a lock
48 total - total time we spend waiting on this lock
49 acq-bounces - number of lock acquisitions that involved x-cpu data
50 acquisitions - number of times we took the lock
51 hold time min - shortest (non-0) time we ever held the lock
52 max - longest time we ever held the lock
53 total - total time this lock was held
54
55From these number various other statistics can be derived, such as:
56
57 hold time average = hold time total / acquisitions
58
59These numbers are gathered per lock class, per read/write state (when
60applicable).
61
62It also tracks 4 contention points per class. A contention point is a call site
63that had to wait on lock acquisition.
64
65 - USAGE
66
67Look at the current lock statistics:
68
69( line numbers not part of actual output, done for clarity in the explanation
70 below )
71
72# less /proc/lock_stat
73
7401 lock_stat version 0.2
7502 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7603 class name con-bounces contentions waittime-min waittime-max waittime-total acq-bounces acquisitions holdtime-min holdtime-max holdtime-total
7704 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
7805
7906 &inode->i_data.tree_lock-W: 15 21657 0.18 1093295.30 11547131054.85 58 10415 0.16 87.51 6387.60
8007 &inode->i_data.tree_lock-R: 0 0 0.00 0.00 0.00 23302 231198 0.25 8.45 98023.38
8108 --------------------------
8209 &inode->i_data.tree_lock 0 [<ffffffff8027c08f>] add_to_page_cache+0x5f/0x190
8310
8411 ...............................................................................................................................................................................................
8512
8613 dcache_lock: 1037 1161 0.38 45.32 774.51 6611 243371 0.15 306.48 77387.24
8714 -----------
8815 dcache_lock 180 [<ffffffff802c0d7e>] sys_getcwd+0x11e/0x230
8916 dcache_lock 165 [<ffffffff802c002a>] d_alloc+0x15a/0x210
9017 dcache_lock 33 [<ffffffff8035818d>] _atomic_dec_and_lock+0x4d/0x70
9118 dcache_lock 1 [<ffffffff802beef8>] shrink_dcache_parent+0x18/0x130
92
93This excerpt shows the first two lock class statistics. Line 01 shows the
94output version - each time the format changes this will be updated. Line 02-04
95show the header with column descriptions. Lines 05-10 and 13-18 show the actual
96statistics. These statistics come in two parts; the actual stats separated by a
97short separator (line 08, 14) from the contention points.
98
99The first lock (05-10) is a read/write lock, and shows two lines above the
100short separator. The contention points don't match the column descriptors,
101they have two: contentions and [<IP>] symbol.
102
103
104View the top contending locks:
105
106# grep : /proc/lock_stat | head
107 &inode->i_data.tree_lock-W: 15 21657 0.18 1093295.30 11547131054.85 58 10415 0.16 87.51 6387.60
108 &inode->i_data.tree_lock-R: 0 0 0.00 0.00 0.00 23302 231198 0.25 8.45 98023.38
109 dcache_lock: 1037 1161 0.38 45.32 774.51 6611 243371 0.15 306.48 77387.24
110 &inode->i_mutex: 161 286 18446744073709 62882.54 1244614.55 3653 20598 18446744073709 62318.60 1693822.74
111 &zone->lru_lock: 94 94 0.53 7.33 92.10 4366 32690 0.29 59.81 16350.06
112 &inode->i_data.i_mmap_lock: 79 79 0.40 3.77 53.03 11779 87755 0.28 116.93 29898.44
113 &q->__queue_lock: 48 50 0.52 31.62 86.31 774 13131 0.17 113.08 12277.52
114 &rq->rq_lock_key: 43 47 0.74 68.50 170.63 3706 33929 0.22 107.99 17460.62
115 &rq->rq_lock_key#2: 39 46 0.75 6.68 49.03 2979 32292 0.17 125.17 17137.63
116 tasklist_lock-W: 15 15 1.45 10.87 32.70 1201 7390 0.58 62.55 13648.47
117
118Clear the statistics:
119
120# echo 0 > /proc/lock_stat
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX
index d63f480afb74..153d84d281e6 100644
--- a/Documentation/networking/00-INDEX
+++ b/Documentation/networking/00-INDEX
@@ -96,6 +96,9 @@ routing.txt
96 - the new routing mechanism 96 - the new routing mechanism
97shaper.txt 97shaper.txt
98 - info on the module that can shape/limit transmitted traffic. 98 - info on the module that can shape/limit transmitted traffic.
99sk98lin.txt
100 - Marvell Yukon Chipset / SysKonnect SK-98xx compliant Gigabit
101 Ethernet Adapter family driver info
99skfp.txt 102skfp.txt
100 - SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info. 103 - SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info.
101smc9.txt 104smc9.txt
diff --git a/Documentation/networking/NAPI_HOWTO.txt b/Documentation/networking/NAPI_HOWTO.txt
deleted file mode 100644
index 7907435a661c..000000000000
--- a/Documentation/networking/NAPI_HOWTO.txt
+++ /dev/null
@@ -1,766 +0,0 @@
1HISTORY:
2February 16/2002 -- revision 0.2.1:
3COR typo corrected
4February 10/2002 -- revision 0.2:
5some spell checking ;->
6January 12/2002 -- revision 0.1
7This is still work in progress so may change.
8To keep up to date please watch this space.
9
10Introduction to NAPI
11====================
12
13NAPI is a proven (www.cyberus.ca/~hadi/usenix-paper.tgz) technique
14to improve network performance on Linux. For more details please
15read that paper.
16NAPI provides a "inherent mitigation" which is bound by system capacity
17as can be seen from the following data collected by Robert on Gigabit
18ethernet (e1000):
19
20 Psize Ipps Tput Rxint Txint Done Ndone
21 ---------------------------------------------------------------
22 60 890000 409362 17 27622 7 6823
23 128 758150 464364 21 9301 10 7738
24 256 445632 774646 42 15507 21 12906
25 512 232666 994445 241292 19147 241192 1062
26 1024 119061 1000003 872519 19258 872511 0
27 1440 85193 1000003 946576 19505 946569 0
28
29
30Legend:
31"Ipps" stands for input packets per second.
32"Tput" == packets out of total 1M that made it out.
33"txint" == transmit completion interrupts seen
34"Done" == The number of times that the poll() managed to pull all
35packets out of the rx ring. Note from this that the lower the
36load the more we could clean up the rxring
37"Ndone" == is the converse of "Done". Note again, that the higher
38the load the more times we couldn't clean up the rxring.
39
40Observe that:
41when the NIC receives 890Kpackets/sec only 17 rx interrupts are generated.
42The system cant handle the processing at 1 interrupt/packet at that load level.
43At lower rates on the other hand, rx interrupts go up and therefore the
44interrupt/packet ratio goes up (as observable from that table). So there is
45possibility that under low enough input, you get one poll call for each
46input packet caused by a single interrupt each time. And if the system
47cant handle interrupt per packet ratio of 1, then it will just have to
48chug along ....
49
50
510) Prerequisites:
52==================
53A driver MAY continue using the old 2.4 technique for interfacing
54to the network stack and not benefit from the NAPI changes.
55NAPI additions to the kernel do not break backward compatibility.
56NAPI, however, requires the following features to be available:
57
58A) DMA ring or enough RAM to store packets in software devices.
59
60B) Ability to turn off interrupts or maybe events that send packets up
61the stack.
62
63NAPI processes packet events in what is known as dev->poll() method.
64Typically, only packet receive events are processed in dev->poll().
65The rest of the events MAY be processed by the regular interrupt handler
66to reduce processing latency (justified also because there are not that
67many of them).
68Note, however, NAPI does not enforce that dev->poll() only processes
69receive events.
70Tests with the tulip driver indicated slightly increased latency if
71all of the interrupt handler is moved to dev->poll(). Also MII handling
72gets a little trickier.
73The example used in this document is to move the receive processing only
74to dev->poll(); this is shown with the patch for the tulip driver.
75For an example of code that moves all the interrupt driver to
76dev->poll() look at the ported e1000 code.
77
78There are caveats that might force you to go with moving everything to
79dev->poll(). Different NICs work differently depending on their status/event
80acknowledgement setup.
81There are two types of event register ACK mechanisms.
82 I) what is known as Clear-on-read (COR).
83 when you read the status/event register, it clears everything!
84 The natsemi and sunbmac NICs are known to do this.
85 In this case your only choice is to move all to dev->poll()
86
87 II) Clear-on-write (COW)
88 i) you clear the status by writing a 1 in the bit-location you want.
89 These are the majority of the NICs and work the best with NAPI.
90 Put only receive events in dev->poll(); leave the rest in
91 the old interrupt handler.
92 ii) whatever you write in the status register clears every thing ;->
93 Cant seem to find any supported by Linux which do this. If
94 someone knows such a chip email us please.
95 Move all to dev->poll()
96
97C) Ability to detect new work correctly.
98NAPI works by shutting down event interrupts when there's work and
99turning them on when there's none.
100New packets might show up in the small window while interrupts were being
101re-enabled (refer to appendix 2). A packet might sneak in during the period
102we are enabling interrupts. We only get to know about such a packet when the
103next new packet arrives and generates an interrupt.
104Essentially, there is a small window of opportunity for a race condition
105which for clarity we'll refer to as the "rotting packet".
106
107This is a very important topic and appendix 2 is dedicated for more
108discussion.
109
110Locking rules and environmental guarantees
111==========================================
112
113-Guarantee: Only one CPU at any time can call dev->poll(); this is because
114only one CPU can pick the initial interrupt and hence the initial
115netif_rx_schedule(dev);
116- The core layer invokes devices to send packets in a round robin format.
117This implies receive is totally lockless because of the guarantee that only
118one CPU is executing it.
119- contention can only be the result of some other CPU accessing the rx
120ring. This happens only in close() and suspend() (when these methods
121try to clean the rx ring);
122****guarantee: driver authors need not worry about this; synchronization
123is taken care for them by the top net layer.
124-local interrupts are enabled (if you dont move all to dev->poll()). For
125example link/MII and txcomplete continue functioning just same old way.
126This improves the latency of processing these events. It is also assumed that
127the receive interrupt is the largest cause of noise. Note this might not
128always be true.
129[according to Manfred Spraul, the winbond insists on sending one
130txmitcomplete interrupt for each packet (although this can be mitigated)].
131For these broken drivers, move all to dev->poll().
132
133For the rest of this text, we'll assume that dev->poll() only
134processes receive events.
135
136new methods introduce by NAPI
137=============================
138
139a) netif_rx_schedule(dev)
140Called by an IRQ handler to schedule a poll for device
141
142b) netif_rx_schedule_prep(dev)
143puts the device in a state which allows for it to be added to the
144CPU polling list if it is up and running. You can look at this as
145the first half of netif_rx_schedule(dev) above; the second half
146being c) below.
147
148c) __netif_rx_schedule(dev)
149Add device to the poll list for this CPU; assuming that _prep above
150has already been called and returned 1.
151
152d) netif_rx_reschedule(dev, undo)
153Called to reschedule polling for device specifically for some
154deficient hardware. Read Appendix 2 for more details.
155
156e) netif_rx_complete(dev)
157
158Remove interface from the CPU poll list: it must be in the poll list
159on current cpu. This primitive is called by dev->poll(), when
160it completes its work. The device cannot be out of poll list at this
161call, if it is then clearly it is a BUG(). You'll know ;->
162
163All of the above methods are used below, so keep reading for clarity.
164
165Device driver changes to be made when porting NAPI
166==================================================
167
168Below we describe what kind of changes are required for NAPI to work.
169
1701) introduction of dev->poll() method
171=====================================
172
173This is the method that is invoked by the network core when it requests
174for new packets from the driver. A driver is allowed to send upto
175dev->quota packets by the current CPU before yielding to the network
176subsystem (so other devices can also get opportunity to send to the stack).
177
178dev->poll() prototype looks as follows:
179int my_poll(struct net_device *dev, int *budget)
180
181budget is the remaining number of packets the network subsystem on the
182current CPU can send up the stack before yielding to other system tasks.
183*Each driver is responsible for decrementing budget by the total number of
184packets sent.
185 Total number of packets cannot exceed dev->quota.
186
187dev->poll() method is invoked by the top layer, the driver just sends if it
188can to the stack the packet quantity requested.
189
190more on dev->poll() below after the interrupt changes are explained.
191
1922) registering dev->poll() method
193===================================
194
195dev->poll should be set in the dev->probe() method.
196e.g:
197dev->open = my_open;
198.
199.
200/* two new additions */
201/* first register my poll method */
202dev->poll = my_poll;
203/* next register my weight/quanta; can be overridden in /proc */
204dev->weight = 16;
205.
206.
207dev->stop = my_close;
208
209
210
2113) scheduling dev->poll()
212=============================
213This involves modifying the interrupt handler and the code
214path which takes the packet off the NIC and sends them to the
215stack.
216
217it's important at this point to introduce the classical D Becker
218interrupt processor:
219
220------------------
221static irqreturn_t
222netdevice_interrupt(int irq, void *dev_id, struct pt_regs *regs)
223{
224
225 struct net_device *dev = (struct net_device *)dev_instance;
226 struct my_private *tp = (struct my_private *)dev->priv;
227
228 int work_count = my_work_count;
229 status = read_interrupt_status_reg();
230 if (status == 0)
231 return IRQ_NONE; /* Shared IRQ: not us */
232 if (status == 0xffff)
233 return IRQ_HANDLED; /* Hot unplug */
234 if (status & error)
235 do_some_error_handling()
236
237 do {
238 acknowledge_ints_ASAP();
239
240 if (status & link_interrupt) {
241 spin_lock(&tp->link_lock);
242 do_some_link_stat_stuff();
243 spin_lock(&tp->link_lock);
244 }
245
246 if (status & rx_interrupt) {
247 receive_packets(dev);
248 }
249
250 if (status & rx_nobufs) {
251 make_rx_buffs_avail();
252 }
253
254 if (status & tx_related) {
255 spin_lock(&tp->lock);
256 tx_ring_free(dev);
257 if (tx_died)
258 restart_tx();
259 spin_unlock(&tp->lock);
260 }
261
262 status = read_interrupt_status_reg();
263
264 } while (!(status & error) || more_work_to_be_done);
265 return IRQ_HANDLED;
266}
267
268----------------------------------------------------------------------
269
270We now change this to what is shown below to NAPI-enable it:
271
272----------------------------------------------------------------------
273static irqreturn_t
274netdevice_interrupt(int irq, void *dev_id, struct pt_regs *regs)
275{
276 struct net_device *dev = (struct net_device *)dev_instance;
277 struct my_private *tp = (struct my_private *)dev->priv;
278
279 status = read_interrupt_status_reg();
280 if (status == 0)
281 return IRQ_NONE; /* Shared IRQ: not us */
282 if (status == 0xffff)
283 return IRQ_HANDLED; /* Hot unplug */
284 if (status & error)
285 do_some_error_handling();
286
287 do {
288/************************ start note *********************************/
289 acknowledge_ints_ASAP(); // dont ack rx and rxnobuff here
290/************************ end note *********************************/
291
292 if (status & link_interrupt) {
293 spin_lock(&tp->link_lock);
294 do_some_link_stat_stuff();
295 spin_unlock(&tp->link_lock);
296 }
297/************************ start note *********************************/
298 if (status & rx_interrupt || (status & rx_nobuffs)) {
299 if (netif_rx_schedule_prep(dev)) {
300
301 /* disable interrupts caused
302 * by arriving packets */
303 disable_rx_and_rxnobuff_ints();
304 /* tell system we have work to be done. */
305 __netif_rx_schedule(dev);
306 } else {
307 printk("driver bug! interrupt while in poll\n");
308 /* FIX by disabling interrupts */
309 disable_rx_and_rxnobuff_ints();
310 }
311 }
312/************************ end note note *********************************/
313
314 if (status & tx_related) {
315 spin_lock(&tp->lock);
316 tx_ring_free(dev);
317
318 if (tx_died)
319 restart_tx();
320 spin_unlock(&tp->lock);
321 }
322
323 status = read_interrupt_status_reg();
324
325/************************ start note *********************************/
326 } while (!(status & error) || more_work_to_be_done(status));
327/************************ end note note *********************************/
328 return IRQ_HANDLED;
329}
330
331---------------------------------------------------------------------
332
333
334We note several things from above:
335
336I) Any interrupt source which is caused by arriving packets is now
337turned off when it occurs. Depending on the hardware, there could be
338several reasons that arriving packets would cause interrupts; these are the
339interrupt sources we wish to avoid. The two common ones are a) a packet
340arriving (rxint) b) a packet arriving and finding no DMA buffers available
341(rxnobuff) .
342This means also acknowledge_ints_ASAP() will not clear the status
343register for those two items above; clearing is done in the place where
344proper work is done within NAPI; at the poll() and refill_rx_ring()
345discussed further below.
346netif_rx_schedule_prep() returns 1 if device is in running state and
347gets successfully added to the core poll list. If we get a zero value
348we can _almost_ assume are already added to the list (instead of not running.
349Logic based on the fact that you shouldn't get interrupt if not running)
350We rectify this by disabling rx and rxnobuf interrupts.
351
352II) that receive_packets(dev) and make_rx_buffs_avail() may have disappeared.
353These functionalities are still around actually......
354
355infact, receive_packets(dev) is very close to my_poll() and
356make_rx_buffs_avail() is invoked from my_poll()
357
3584) converting receive_packets() to dev->poll()
359===============================================
360
361We need to convert the classical D Becker receive_packets(dev) to my_poll()
362
363First the typical receive_packets() below:
364-------------------------------------------------------------------
365
366/* this is called by interrupt handler */
367static void receive_packets (struct net_device *dev)
368{
369
370 struct my_private *tp = (struct my_private *)dev->priv;
371 rx_ring = tp->rx_ring;
372 cur_rx = tp->cur_rx;
373 int entry = cur_rx % RX_RING_SIZE;
374 int received = 0;
375 int rx_work_limit = tp->dirty_rx + RX_RING_SIZE - tp->cur_rx;
376
377 while (rx_ring_not_empty) {
378 u32 rx_status;
379 unsigned int rx_size;
380 unsigned int pkt_size;
381 struct sk_buff *skb;
382 /* read size+status of next frame from DMA ring buffer */
383 /* the number 16 and 4 are just examples */
384 rx_status = le32_to_cpu (*(u32 *) (rx_ring + ring_offset));
385 rx_size = rx_status >> 16;
386 pkt_size = rx_size - 4;
387
388 /* process errors */
389 if ((rx_size > (MAX_ETH_FRAME_SIZE+4)) ||
390 (!(rx_status & RxStatusOK))) {
391 netdrv_rx_err (rx_status, dev, tp, ioaddr);
392 return;
393 }
394
395 if (--rx_work_limit < 0)
396 break;
397
398 /* grab a skb */
399 skb = dev_alloc_skb (pkt_size + 2);
400 if (skb) {
401 .
402 .
403 netif_rx (skb);
404 .
405 .
406 } else { /* OOM */
407 /*seems very driver specific ... some just pass
408 whatever is on the ring already. */
409 }
410
411 /* move to the next skb on the ring */
412 entry = (++tp->cur_rx) % RX_RING_SIZE;
413 received++ ;
414
415 }
416
417 /* store current ring pointer state */
418 tp->cur_rx = cur_rx;
419
420 /* Refill the Rx ring buffers if they are needed */
421 refill_rx_ring();
422 .
423 .
424
425}
426-------------------------------------------------------------------
427We change it to a new one below; note the additional parameter in
428the call.
429
430-------------------------------------------------------------------
431
432/* this is called by the network core */
433static int my_poll (struct net_device *dev, int *budget)
434{
435
436 struct my_private *tp = (struct my_private *)dev->priv;
437 rx_ring = tp->rx_ring;
438 cur_rx = tp->cur_rx;
439 int entry = cur_rx % RX_BUF_LEN;
440 /* maximum packets to send to the stack */
441/************************ note note *********************************/
442 int rx_work_limit = dev->quota;
443
444/************************ end note note *********************************/
445 do { // outer beginning loop starts here
446
447 clear_rx_status_register_bit();
448
449 while (rx_ring_not_empty) {
450 u32 rx_status;
451 unsigned int rx_size;
452 unsigned int pkt_size;
453 struct sk_buff *skb;
454 /* read size+status of next frame from DMA ring buffer */
455 /* the number 16 and 4 are just examples */
456 rx_status = le32_to_cpu (*(u32 *) (rx_ring + ring_offset));
457 rx_size = rx_status >> 16;
458 pkt_size = rx_size - 4;
459
460 /* process errors */
461 if ((rx_size > (MAX_ETH_FRAME_SIZE+4)) ||
462 (!(rx_status & RxStatusOK))) {
463 netdrv_rx_err (rx_status, dev, tp, ioaddr);
464 return 1;
465 }
466
467/************************ note note *********************************/
468 if (--rx_work_limit < 0) { /* we got packets, but no quota */
469 /* store current ring pointer state */
470 tp->cur_rx = cur_rx;
471
472 /* Refill the Rx ring buffers if they are needed */
473 refill_rx_ring(dev);
474 goto not_done;
475 }
476/********************** end note **********************************/
477
478 /* grab a skb */
479 skb = dev_alloc_skb (pkt_size + 2);
480 if (skb) {
481 .
482 .
483/************************ note note *********************************/
484 netif_receive_skb (skb);
485/********************** end note **********************************/
486 .
487 .
488 } else { /* OOM */
489 /*seems very driver specific ... common is just pass
490 whatever is on the ring already. */
491 }
492
493 /* move to the next skb on the ring */
494 entry = (++tp->cur_rx) % RX_RING_SIZE;
495 received++ ;
496
497 }
498
499 /* store current ring pointer state */
500 tp->cur_rx = cur_rx;
501
502 /* Refill the Rx ring buffers if they are needed */
503 refill_rx_ring(dev);
504
505 /* no packets on ring; but new ones can arrive since we last
506 checked */
507 status = read_interrupt_status_reg();
508 if (rx status is not set) {
509 /* If something arrives in this narrow window,
510 an interrupt will be generated */
511 goto done;
512 }
513 /* done! at least that's what it looks like ;->
514 if new packets came in after our last check on status bits
515 they'll be caught by the while check and we go back and clear them
516 since we havent exceeded our quota */
517 } while (rx_status_is_set);
518
519done:
520
521/************************ note note *********************************/
522 dev->quota -= received;
523 *budget -= received;
524
525 /* If RX ring is not full we are out of memory. */
526 if (tp->rx_buffers[tp->dirty_rx % RX_RING_SIZE].skb == NULL)
527 goto oom;
528
529 /* we are happy/done, no more packets on ring; put us back
530 to where we can start processing interrupts again */
531 netif_rx_complete(dev);
532 enable_rx_and_rxnobuf_ints();
533
534 /* The last op happens after poll completion. Which means the following:
535 * 1. it can race with disabling irqs in irq handler (which are done to
536 * schedule polls)
537 * 2. it can race with dis/enabling irqs in other poll threads
538 * 3. if an irq raised after the beginning of the outer beginning
539 * loop (marked in the code above), it will be immediately
540 * triggered here.
541 *
542 * Summarizing: the logic may result in some redundant irqs both
543 * due to races in masking and due to too late acking of already
544 * processed irqs. The good news: no events are ever lost.
545 */
546
547 return 0; /* done */
548
549not_done:
550 if (tp->cur_rx - tp->dirty_rx > RX_RING_SIZE/2 ||
551 tp->rx_buffers[tp->dirty_rx % RX_RING_SIZE].skb == NULL)
552 refill_rx_ring(dev);
553
554 if (!received) {
555 printk("received==0\n");
556 received = 1;
557 }
558 dev->quota -= received;
559 *budget -= received;
560 return 1; /* not_done */
561
562oom:
563 /* Start timer, stop polling, but do not enable rx interrupts. */
564 start_poll_timer(dev);
565 return 0; /* we'll take it from here so tell core "done"*/
566
567/************************ End note note *********************************/
568}
569-------------------------------------------------------------------
570
571From above we note that:
5720) rx_work_limit = dev->quota
5731) refill_rx_ring() is in charge of clearing the bit for rxnobuff when
574it does the work.
5752) We have a done and not_done state.
5763) instead of netif_rx() we call netif_receive_skb() to pass the skb.
5774) we have a new way of handling oom condition
5785) A new outer for (;;) loop has been added. This serves the purpose of
579ensuring that if a new packet has come in, after we are all set and done,
580and we have not exceeded our quota that we continue sending packets up.
581
582
583-----------------------------------------------------------
584Poll timer code will need to do the following:
585
586a)
587
588 if (tp->cur_rx - tp->dirty_rx > RX_RING_SIZE/2 ||
589 tp->rx_buffers[tp->dirty_rx % RX_RING_SIZE].skb == NULL)
590 refill_rx_ring(dev);
591
592 /* If RX ring is not full we are still out of memory.
593 Restart the timer again. Else we re-add ourselves
594 to the master poll list.
595 */
596
597 if (tp->rx_buffers[tp->dirty_rx % RX_RING_SIZE].skb == NULL)
598 restart_timer();
599
600 else netif_rx_schedule(dev); /* we are back on the poll list */
601
6025) dev->close() and dev->suspend() issues
603==========================================
604The driver writer needn't worry about this; the top net layer takes
605care of it.
606
6076) Adding new Stats to /proc
608=============================
609In order to debug some of the new features, we introduce new stats
610that need to be collected.
611TODO: Fill this later.
612
613APPENDIX 1: discussion on using ethernet HW FC
614==============================================
615Most chips with FC only send a pause packet when they run out of Rx buffers.
616Since packets are pulled off the DMA ring by a softirq in NAPI,
617if the system is slow in grabbing them and we have a high input
618rate (faster than the system's capacity to remove packets), then theoretically
619there will only be one rx interrupt for all packets during a given packetstorm.
620Under low load, we might have a single interrupt per packet.
621FC should be programmed to apply in the case when the system cant pull out
622packets fast enough i.e send a pause only when you run out of rx buffers.
623Note FC in itself is a good solution but we have found it to not be
624much of a commodity feature (both in NICs and switches) and hence falls
625under the same category as using NIC based mitigation. Also, experiments
626indicate that it's much harder to resolve the resource allocation
627issue (aka lazy receiving that NAPI offers) and hence quantify its usefulness
628proved harder. In any case, FC works even better with NAPI but is not
629necessary.
630
631
632APPENDIX 2: the "rotting packet" race-window avoidance scheme
633=============================================================
634
635There are two types of associations seen here
636
6371) status/int which honors level triggered IRQ
638
639If a status bit for receive or rxnobuff is set and the corresponding
640interrupt-enable bit is not on, then no interrupts will be generated. However,
641as soon as the "interrupt-enable" bit is unmasked, an immediate interrupt is
642generated. [assuming the status bit was not turned off].
643Generally the concept of level triggered IRQs in association with a status and
644interrupt-enable CSR register set is used to avoid the race.
645
646If we take the example of the tulip:
647"pending work" is indicated by the status bit(CSR5 in tulip).
648the corresponding interrupt bit (CSR7 in tulip) might be turned off (but
649the CSR5 will continue to be turned on with new packet arrivals even if
650we clear it the first time)
651Very important is the fact that if we turn on the interrupt bit on when
652status is set that an immediate irq is triggered.
653
654If we cleared the rx ring and proclaimed there was "no more work
655to be done" and then went on to do a few other things; then when we enable
656interrupts, there is a possibility that a new packet might sneak in during
657this phase. It helps to look at the pseudo code for the tulip poll
658routine:
659
660--------------------------
661 do {
662 ACK;
663 while (ring_is_not_empty()) {
664 work-work-work
665 if quota is exceeded: exit, no touching irq status/mask
666 }
667 /* No packets, but new can arrive while we are doing this*/
668 CSR5 := read
669 if (CSR5 is not set) {
670 /* If something arrives in this narrow window here,
671 * where the comments are ;-> irq will be generated */
672 unmask irqs;
673 exit poll;
674 }
675 } while (rx_status_is_set);
676------------------------
677
678CSR5 bit of interest is only the rx status.
679If you look at the last if statement:
680you just finished grabbing all the packets from the rx ring .. you check if
681status bit says there are more packets just in ... it says none; you then
682enable rx interrupts again; if a new packet just came in during this check,
683we are counting that CSR5 will be set in that small window of opportunity
684and that by re-enabling interrupts, we would actually trigger an interrupt
685to register the new packet for processing.
686
687[The above description nay be very verbose, if you have better wording
688that will make this more understandable, please suggest it.]
689
6902) non-capable hardware
691
692These do not generally respect level triggered IRQs. Normally,
693irqs may be lost while being masked and the only way to leave poll is to do
694a double check for new input after netif_rx_complete() is invoked
695and re-enable polling (after seeing this new input).
696
697Sample code:
698
699---------
700 .
701 .
702restart_poll:
703 while (ring_is_not_empty()) {
704 work-work-work
705 if quota is exceeded: exit, not touching irq status/mask
706 }
707 .
708 .
709 .
710 enable_rx_interrupts()
711 netif_rx_complete(dev);
712 if (ring_has_new_packet() && netif_rx_reschedule(dev, received)) {
713 disable_rx_and_rxnobufs()
714 goto restart_poll
715 } while (rx_status_is_set);
716---------
717
718Basically netif_rx_complete() removes us from the poll list, but because a
719new packet which will never be caught due to the possibility of a race
720might come in, we attempt to re-add ourselves to the poll list.
721
722
723
724
725APPENDIX 3: Scheduling issues.
726==============================
727As seen NAPI moves processing to softirq level. Linux uses the ksoftirqd as the
728general solution to schedule softirq's to run before next interrupt and by putting
729them under scheduler control. Also this prevents consecutive softirq's from
730monopolize the CPU. This also have the effect that the priority of ksoftirq needs
731to be considered when running very CPU-intensive applications and networking to
732get the proper balance of softirq/user balance. Increasing ksoftirq priority to 0
733(eventually more) is reported cure problems with low network performance at high
734CPU load.
735
736Most used processes in a GIGE router:
737USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND
738root 3 0.2 0.0 0 0 ? RWN Aug 15 602:00 (ksoftirqd_CPU0)
739root 232 0.0 7.9 41400 40884 ? S Aug 15 74:12 gated
740
741--------------------------------------------------------------------
742
743relevant sites:
744==================
745ftp://robur.slu.se/pub/Linux/net-development/NAPI/
746
747
748--------------------------------------------------------------------
749TODO: Write net-skeleton.c driver.
750-------------------------------------------------------------
751
752Authors:
753========
754Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
755Jamal Hadi Salim <hadi@cyberus.ca>
756Robert Olsson <Robert.Olsson@data.slu.se>
757
758Acknowledgements:
759================
760People who made this document better:
761
762Lennert Buytenhek <buytenh@gnu.org>
763Andrew Morton <akpm@zip.com.au>
764Manfred Spraul <manfred@colorfullife.com>
765Donald Becker <becker@scyld.com>
766Jeff Garzik <jgarzik@pobox.com>
diff --git a/Documentation/networking/dccp.txt b/Documentation/networking/dccp.txt
index 4504cc59e405..afb66f9a8aff 100644
--- a/Documentation/networking/dccp.txt
+++ b/Documentation/networking/dccp.txt
@@ -38,8 +38,13 @@ Socket options
38DCCP_SOCKOPT_SERVICE sets the service. The specification mandates use of 38DCCP_SOCKOPT_SERVICE sets the service. The specification mandates use of
39service codes (RFC 4340, sec. 8.1.2); if this socket option is not set, 39service codes (RFC 4340, sec. 8.1.2); if this socket option is not set,
40the socket will fall back to 0 (which means that no meaningful service code 40the socket will fall back to 0 (which means that no meaningful service code
41is present). Connecting sockets set at most one service option; for 41is present). On active sockets this is set before connect(); specifying more
42listening sockets, multiple service codes can be specified. 42than one code has no effect (all subsequent service codes are ignored). The
43case is different for passive sockets, where multiple service codes (up to 32)
44can be set before calling bind().
45
46DCCP_SOCKOPT_GET_CUR_MPS is read-only and retrieves the current maximum packet
47size (application payload size) in bytes, see RFC 4340, section 14.
43 48
44DCCP_SOCKOPT_SEND_CSCOV and DCCP_SOCKOPT_RECV_CSCOV are used for setting the 49DCCP_SOCKOPT_SEND_CSCOV and DCCP_SOCKOPT_RECV_CSCOV are used for setting the
45partial checksum coverage (RFC 4340, sec. 9.2). The default is that checksums 50partial checksum coverage (RFC 4340, sec. 9.2). The default is that checksums
@@ -50,12 +55,13 @@ be enabled at the receiver, too with suitable choice of CsCov.
50DCCP_SOCKOPT_SEND_CSCOV sets the sender checksum coverage. Values in the 55DCCP_SOCKOPT_SEND_CSCOV sets the sender checksum coverage. Values in the
51 range 0..15 are acceptable. The default setting is 0 (full coverage), 56 range 0..15 are acceptable. The default setting is 0 (full coverage),
52 values between 1..15 indicate partial coverage. 57 values between 1..15 indicate partial coverage.
53DCCP_SOCKOPT_SEND_CSCOV is for the receiver and has a different meaning: it 58DCCP_SOCKOPT_RECV_CSCOV is for the receiver and has a different meaning: it
54 sets a threshold, where again values 0..15 are acceptable. The default 59 sets a threshold, where again values 0..15 are acceptable. The default
55 of 0 means that all packets with a partial coverage will be discarded. 60 of 0 means that all packets with a partial coverage will be discarded.
56 Values in the range 1..15 indicate that packets with minimally such a 61 Values in the range 1..15 indicate that packets with minimally such a
57 coverage value are also acceptable. The higher the number, the more 62 coverage value are also acceptable. The higher the number, the more
58 restrictive this setting (see [RFC 4340, sec. 9.2.1]). 63 restrictive this setting (see [RFC 4340, sec. 9.2.1]). Partial coverage
64 settings are inherited to the child socket after accept().
59 65
60The following two options apply to CCID 3 exclusively and are getsockopt()-only. 66The following two options apply to CCID 3 exclusively and are getsockopt()-only.
61In either case, a TFRC info struct (defined in <linux/tfrc.h>) is returned. 67In either case, a TFRC info struct (defined in <linux/tfrc.h>) is returned.
@@ -112,9 +118,14 @@ tx_qlen = 5
112 The size of the transmit buffer in packets. A value of 0 corresponds 118 The size of the transmit buffer in packets. A value of 0 corresponds
113 to an unbounded transmit buffer. 119 to an unbounded transmit buffer.
114 120
121sync_ratelimit = 125 ms
122 The timeout between subsequent DCCP-Sync packets sent in response to
123 sequence-invalid packets on the same socket (RFC 4340, 7.5.4). The unit
124 of this parameter is milliseconds; a value of 0 disables rate-limiting.
125
115Notes 126Notes
116===== 127=====
117 128
118DCCP does not travel through NAT successfully at present on many boxes. This is 129DCCP does not travel through NAT successfully at present on many boxes. This is
119because the checksum covers the psuedo-header as per TCP and UDP. Linux NAT 130because the checksum covers the pseudo-header as per TCP and UDP. Linux NAT
120support for DCCP has been added. 131support for DCCP has been added.
diff --git a/Documentation/networking/dgrs.txt b/Documentation/networking/dgrs.txt
deleted file mode 100644
index 1aa1bb3f94ab..000000000000
--- a/Documentation/networking/dgrs.txt
+++ /dev/null
@@ -1,52 +0,0 @@
1 The Digi International RightSwitch SE-X (dgrs) Device Driver
2
3This is a Linux driver for the Digi International RightSwitch SE-X
4EISA and PCI boards. These are 4 (EISA) or 6 (PCI) port Ethernet
5switches and a NIC combined into a single board. This driver can
6be compiled into the kernel statically or as a loadable module.
7
8There is also a companion management tool, called "xrightswitch".
9The management tool lets you watch the performance graphically,
10as well as set the SNMP agent IP and IPX addresses, IEEE Spanning
11Tree, and Aging time. These can also be set from the command line
12when the driver is loaded. The driver command line options are:
13
14 debug=NNN Debug printing level
15 dma=0/1 Disable/Enable DMA on PCI card
16 spantree=0/1 Disable/Enable IEEE spanning tree
17 hashexpire=NNN Change address aging time (default 300 seconds)
18 ipaddr=A,B,C,D Set SNMP agent IP address i.e. 199,86,8,221
19 iptrap=A,B,C,D Set SNMP agent IP trap address i.e. 199,86,8,221
20 ipxnet=NNN Set SNMP agent IPX network number
21 nicmode=0/1 Disable/Enable multiple NIC mode
22
23There is also a tool for setting up input and output packet filters
24on each port, called "dgrsfilt".
25
26Both the management tool and the filtering tool are available
27separately from the following FTP site:
28
29 ftp://ftp.dgii.com/drivers/rightswitch/linux/
30
31When nicmode=1, the board and driver operate as 4 or 6 individual
32NIC ports (eth0...eth5) instead of as a switch. All switching
33functions are disabled. In the future, the board firmware may include
34a routing cache when in this mode.
35
36Copyright 1995-1996 Digi International Inc.
37
38This software may be used and distributed according to the terms
39of the GNU General Public License, incorporated herein by reference.
40
41For information on purchasing a RightSwitch SE-4 or SE-6
42board, please contact Digi's sales department at 1-612-912-3444
43or 1-800-DIGIBRD. Outside the U.S., please check our Web page at:
44
45 http://www.dgii.com
46
47for sales offices worldwide. Tech support is also available through
48the channels listed on the Web site, although as long as I am
49employed on networking products at Digi I will be happy to provide
50any bug fixes that may be needed.
51
52-Rick Richardson, rick@dgii.com
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index 32c2e9da5f3a..6ae2feff3087 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -180,13 +180,20 @@ tcp_fin_timeout - INTEGER
180 to live longer. Cf. tcp_max_orphans. 180 to live longer. Cf. tcp_max_orphans.
181 181
182tcp_frto - INTEGER 182tcp_frto - INTEGER
183 Enables F-RTO, an enhanced recovery algorithm for TCP retransmission 183 Enables Forward RTO-Recovery (F-RTO) defined in RFC4138.
184 F-RTO is an enhanced recovery algorithm for TCP retransmission
184 timeouts. It is particularly beneficial in wireless environments 185 timeouts. It is particularly beneficial in wireless environments
185 where packet loss is typically due to random radio interference 186 where packet loss is typically due to random radio interference
186 rather than intermediate router congestion. If set to 1, basic 187 rather than intermediate router congestion. FRTO is sender-side
187 version is enabled. 2 enables SACK enhanced F-RTO, which is 188 only modification. Therefore it does not require any support from
188 EXPERIMENTAL. The basic version can be used also when SACK is 189 the peer, but in a typical case, however, where wireless link is
189 enabled for a flow through tcp_sack sysctl. 190 the local access link and most of the data flows downlink, the
191 faraway servers should have FRTO enabled to take advantage of it.
192 If set to 1, basic version is enabled. 2 enables SACK enhanced
193 F-RTO if flow uses SACK. The basic version can be used also when
194 SACK is in use though scenario(s) with it exists where FRTO
195 interacts badly with the packet counting of the SACK enabled TCP
196 flow.
190 197
191tcp_frto_response - INTEGER 198tcp_frto_response - INTEGER
192 When F-RTO has detected that a TCP retransmission timeout was 199 When F-RTO has detected that a TCP retransmission timeout was
diff --git a/Documentation/networking/mac80211-injection.txt b/Documentation/networking/mac80211-injection.txt
index 53ef7a06f49c..84906ef3ed6e 100644
--- a/Documentation/networking/mac80211-injection.txt
+++ b/Documentation/networking/mac80211-injection.txt
@@ -13,15 +13,35 @@ The radiotap format is discussed in
13./Documentation/networking/radiotap-headers.txt. 13./Documentation/networking/radiotap-headers.txt.
14 14
15Despite 13 radiotap argument types are currently defined, most only make sense 15Despite 13 radiotap argument types are currently defined, most only make sense
16to appear on received packets. Currently three kinds of argument are used by 16to appear on received packets. The following information is parsed from the
17the injection code, although it knows to skip any other arguments that are 17radiotap headers and used to control injection:
18present (facilitating replay of captured radiotap headers directly):
19 18
20 - IEEE80211_RADIOTAP_RATE - u8 arg in 500kbps units (0x02 --> 1Mbps) 19 * IEEE80211_RADIOTAP_RATE
21 20
22 - IEEE80211_RADIOTAP_ANTENNA - u8 arg, 0x00 = ant1, 0x01 = ant2 21 rate in 500kbps units, automatic if invalid or not present
23 22
24 - IEEE80211_RADIOTAP_DBM_TX_POWER - u8 arg, dBm 23
24 * IEEE80211_RADIOTAP_ANTENNA
25
26 antenna to use, automatic if not present
27
28
29 * IEEE80211_RADIOTAP_DBM_TX_POWER
30
31 transmit power in dBm, automatic if not present
32
33
34 * IEEE80211_RADIOTAP_FLAGS
35
36 IEEE80211_RADIOTAP_F_FCS: FCS will be removed and recalculated
37 IEEE80211_RADIOTAP_F_WEP: frame will be encrypted if key available
38 IEEE80211_RADIOTAP_F_FRAG: frame will be fragmented if longer than the
39 current fragmentation threshold. Note that
40 this flag is only reliable when software
41 fragmentation is enabled)
42
43The injection code can also skip all other currently defined radiotap fields
44facilitating replay of captured radiotap headers directly.
25 45
26Here is an example valid radiotap header defining these three parameters 46Here is an example valid radiotap header defining these three parameters
27 47
diff --git a/Documentation/networking/multiqueue.txt b/Documentation/networking/multiqueue.txt
index 00b60cce2224..ea5a42e8f79f 100644
--- a/Documentation/networking/multiqueue.txt
+++ b/Documentation/networking/multiqueue.txt
@@ -58,9 +58,13 @@ software, so it's a straight round-robin qdisc. It uses the same syntax and
58classification priomap that sch_prio uses, so it should be intuitive to 58classification priomap that sch_prio uses, so it should be intuitive to
59configure for people who've used sch_prio. 59configure for people who've used sch_prio.
60 60
61The PRIO qdisc naturally plugs into a multiqueue device. If PRIO has been 61In order to utilitize the multiqueue features of the qdiscs, the network
62built with NET_SCH_PRIO_MQ, then upon load, it will make sure the number of 62device layer needs to enable multiple queue support. This can be done by
63bands requested is equal to the number of queues on the hardware. If they 63selecting NETDEVICES_MULTIQUEUE under Drivers.
64
65The PRIO qdisc naturally plugs into a multiqueue device. If
66NETDEVICES_MULTIQUEUE is selected, then on qdisc load, the number of
67bands requested is compared to the number of queues on the hardware. If they
64are equal, it sets a one-to-one mapping up between the queues and bands. If 68are equal, it sets a one-to-one mapping up between the queues and bands. If
65they're not equal, it will not load the qdisc. This is the same behavior 69they're not equal, it will not load the qdisc. This is the same behavior
66for RR. Once the association is made, any skb that is classified will have 70for RR. Once the association is made, any skb that is classified will have
diff --git a/Documentation/networking/netconsole.txt b/Documentation/networking/netconsole.txt
index 1caa6c734691..3c2f2b328638 100644
--- a/Documentation/networking/netconsole.txt
+++ b/Documentation/networking/netconsole.txt
@@ -3,6 +3,10 @@ started by Ingo Molnar <mingo@redhat.com>, 2001.09.17
32.6 port and netpoll api by Matt Mackall <mpm@selenic.com>, Sep 9 2003 32.6 port and netpoll api by Matt Mackall <mpm@selenic.com>, Sep 9 2003
4 4
5Please send bug reports to Matt Mackall <mpm@selenic.com> 5Please send bug reports to Matt Mackall <mpm@selenic.com>
6and Satyam Sharma <satyam.sharma@gmail.com>
7
8Introduction:
9=============
6 10
7This module logs kernel printk messages over UDP allowing debugging of 11This module logs kernel printk messages over UDP allowing debugging of
8problem where disk logging fails and serial consoles are impractical. 12problem where disk logging fails and serial consoles are impractical.
@@ -13,6 +17,9 @@ the specified interface as soon as possible. While this doesn't allow
13capture of early kernel panics, it does capture most of the boot 17capture of early kernel panics, it does capture most of the boot
14process. 18process.
15 19
20Sender and receiver configuration:
21==================================
22
16It takes a string configuration parameter "netconsole" in the 23It takes a string configuration parameter "netconsole" in the
17following format: 24following format:
18 25
@@ -34,21 +41,113 @@ Examples:
34 41
35 insmod netconsole netconsole=@/,@10.0.0.2/ 42 insmod netconsole netconsole=@/,@10.0.0.2/
36 43
44It also supports logging to multiple remote agents by specifying
45parameters for the multiple agents separated by semicolons and the
46complete string enclosed in "quotes", thusly:
47
48 modprobe netconsole netconsole="@/,@10.0.0.2/;@/eth1,6892@10.0.0.3/"
49
37Built-in netconsole starts immediately after the TCP stack is 50Built-in netconsole starts immediately after the TCP stack is
38initialized and attempts to bring up the supplied dev at the supplied 51initialized and attempts to bring up the supplied dev at the supplied
39address. 52address.
40 53
41The remote host can run either 'netcat -u -l -p <port>' or syslogd. 54The remote host can run either 'netcat -u -l -p <port>' or syslogd.
42 55
56Dynamic reconfiguration:
57========================
58
59Dynamic reconfigurability is a useful addition to netconsole that enables
60remote logging targets to be dynamically added, removed, or have their
61parameters reconfigured at runtime from a configfs-based userspace interface.
62[ Note that the parameters of netconsole targets that were specified/created
63from the boot/module option are not exposed via this interface, and hence
64cannot be modified dynamically. ]
65
66To include this feature, select CONFIG_NETCONSOLE_DYNAMIC when building the
67netconsole module (or kernel, if netconsole is built-in).
68
69Some examples follow (where configfs is mounted at the /sys/kernel/config
70mountpoint).
71
72To add a remote logging target (target names can be arbitrary):
73
74 cd /sys/kernel/config/netconsole/
75 mkdir target1
76
77Note that newly created targets have default parameter values (as mentioned
78above) and are disabled by default -- they must first be enabled by writing
79"1" to the "enabled" attribute (usually after setting parameters accordingly)
80as described below.
81
82To remove a target:
83
84 rmdir /sys/kernel/config/netconsole/othertarget/
85
86The interface exposes these parameters of a netconsole target to userspace:
87
88 enabled Is this target currently enabled? (read-write)
89 dev_name Local network interface name (read-write)
90 local_port Source UDP port to use (read-write)
91 remote_port Remote agent's UDP port (read-write)
92 local_ip Source IP address to use (read-write)
93 remote_ip Remote agent's IP address (read-write)
94 local_mac Local interface's MAC address (read-only)
95 remote_mac Remote agent's MAC address (read-write)
96
97The "enabled" attribute is also used to control whether the parameters of
98a target can be updated or not -- you can modify the parameters of only
99disabled targets (i.e. if "enabled" is 0).
100
101To update a target's parameters:
102
103 cat enabled # check if enabled is 1
104 echo 0 > enabled # disable the target (if required)
105 echo eth2 > dev_name # set local interface
106 echo 10.0.0.4 > remote_ip # update some parameter
107 echo cb:a9:87:65:43:21 > remote_mac # update more parameters
108 echo 1 > enabled # enable target again
109
110You can also update the local interface dynamically. This is especially
111useful if you want to use interfaces that have newly come up (and may not
112have existed when netconsole was loaded / initialized).
113
114Miscellaneous notes:
115====================
116
43WARNING: the default target ethernet setting uses the broadcast 117WARNING: the default target ethernet setting uses the broadcast
44ethernet address to send packets, which can cause increased load on 118ethernet address to send packets, which can cause increased load on
45other systems on the same ethernet segment. 119other systems on the same ethernet segment.
46 120
121TIP: some LAN switches may be configured to suppress ethernet broadcasts
122so it is advised to explicitly specify the remote agents' MAC addresses
123from the config parameters passed to netconsole.
124
125TIP: to find out the MAC address of, say, 10.0.0.2, you may try using:
126
127 ping -c 1 10.0.0.2 ; /sbin/arp -n | grep 10.0.0.2
128
129TIP: in case the remote logging agent is on a separate LAN subnet than
130the sender, it is suggested to try specifying the MAC address of the
131default gateway (you may use /sbin/route -n to find it out) as the
132remote MAC address instead.
133
47NOTE: the network device (eth1 in the above case) can run any kind 134NOTE: the network device (eth1 in the above case) can run any kind
48of other network traffic, netconsole is not intrusive. Netconsole 135of other network traffic, netconsole is not intrusive. Netconsole
49might cause slight delays in other traffic if the volume of kernel 136might cause slight delays in other traffic if the volume of kernel
50messages is high, but should have no other impact. 137messages is high, but should have no other impact.
51 138
139NOTE: if you find that the remote logging agent is not receiving or
140printing all messages from the sender, it is likely that you have set
141the "console_loglevel" parameter (on the sender) to only send high
142priority messages to the console. You can change this at runtime using:
143
144 dmesg -n 8
145
146or by specifying "debug" on the kernel command line at boot, to send
147all kernel messages to the console. A specific value for this parameter
148can also be set using the "loglevel" kernel boot option. See the
149dmesg(8) man page and Documentation/kernel-parameters.txt for details.
150
52Netconsole was designed to be as instantaneous as possible, to 151Netconsole was designed to be as instantaneous as possible, to
53enable the logging of even the most critical kernel bugs. It works 152enable the logging of even the most critical kernel bugs. It works
54from IRQ contexts as well, and does not enable interrupts while 153from IRQ contexts as well, and does not enable interrupts while
diff --git a/Documentation/networking/netdevices.txt b/Documentation/networking/netdevices.txt
index 37869295fc70..d0f71fc7f782 100644
--- a/Documentation/networking/netdevices.txt
+++ b/Documentation/networking/netdevices.txt
@@ -73,7 +73,8 @@ dev->hard_start_xmit:
73 has to lock by itself when needed. It is recommended to use a try lock 73 has to lock by itself when needed. It is recommended to use a try lock
74 for this and return NETDEV_TX_LOCKED when the spin lock fails. 74 for this and return NETDEV_TX_LOCKED when the spin lock fails.
75 The locking there should also properly protect against 75 The locking there should also properly protect against
76 set_multicast_list. 76 set_multicast_list. Note that the use of NETIF_F_LLTX is deprecated.
77 Dont use it for new drivers.
77 78
78 Context: Process with BHs disabled or BH (timer), 79 Context: Process with BHs disabled or BH (timer),
79 will be called with interrupts disabled by netconsole. 80 will be called with interrupts disabled by netconsole.
@@ -95,9 +96,13 @@ dev->set_multicast_list:
95 Synchronization: netif_tx_lock spinlock. 96 Synchronization: netif_tx_lock spinlock.
96 Context: BHs disabled 97 Context: BHs disabled
97 98
98dev->poll: 99struct napi_struct synchronization rules
99 Synchronization: __LINK_STATE_RX_SCHED bit in dev->state. See 100========================================
100 dev_close code and comments in net/core/dev.c for more info. 101napi->poll:
102 Synchronization: NAPI_STATE_SCHED bit in napi->state. Device
103 driver's dev->close method will invoke napi_disable() on
104 all NAPI instances which will do a sleeping poll on the
105 NAPI_STATE_SCHED napi->state bit, waiting for all pending
106 NAPI activity to cease.
101 Context: softirq 107 Context: softirq
102 will be called with interrupts disabled by netconsole. 108 will be called with interrupts disabled by netconsole.
103
diff --git a/Documentation/networking/sk98lin.txt b/Documentation/networking/sk98lin.txt
new file mode 100644
index 000000000000..8590a954df1d
--- /dev/null
+++ b/Documentation/networking/sk98lin.txt
@@ -0,0 +1,568 @@
1(C)Copyright 1999-2004 Marvell(R).
2All rights reserved
3===========================================================================
4
5sk98lin.txt created 13-Feb-2004
6
7Readme File for sk98lin v6.23
8Marvell Yukon/SysKonnect SK-98xx Gigabit Ethernet Adapter family driver for LINUX
9
10This file contains
11 1 Overview
12 2 Required Files
13 3 Installation
14 3.1 Driver Installation
15 3.2 Inclusion of adapter at system start
16 4 Driver Parameters
17 4.1 Per-Port Parameters
18 4.2 Adapter Parameters
19 5 Large Frame Support
20 6 VLAN and Link Aggregation Support (IEEE 802.1, 802.1q, 802.3ad)
21 7 Troubleshooting
22
23===========================================================================
24
25
261 Overview
27===========
28
29The sk98lin driver supports the Marvell Yukon and SysKonnect
30SK-98xx/SK-95xx compliant Gigabit Ethernet Adapter on Linux. It has
31been tested with Linux on Intel/x86 machines.
32***
33
34
352 Required Files
36=================
37
38The linux kernel source.
39No additional files required.
40***
41
42
433 Installation
44===============
45
46It is recommended to download the latest version of the driver from the
47SysKonnect web site www.syskonnect.com. If you have downloaded the latest
48driver, the Linux kernel has to be patched before the driver can be
49installed. For details on how to patch a Linux kernel, refer to the
50patch.txt file.
51
523.1 Driver Installation
53------------------------
54
55The following steps describe the actions that are required to install
56the driver and to start it manually. These steps should be carried
57out for the initial driver setup. Once confirmed to be ok, they can
58be included in the system start.
59
60NOTE 1: To perform the following tasks you need 'root' access.
61
62NOTE 2: In case of problems, please read the section "Troubleshooting"
63 below.
64
65The driver can either be integrated into the kernel or it can be compiled
66as a module. Select the appropriate option during the kernel
67configuration.
68
69Compile/use the driver as a module
70----------------------------------
71To compile the driver, go to the directory /usr/src/linux and
72execute the command "make menuconfig" or "make xconfig" and proceed as
73follows:
74
75To integrate the driver permanently into the kernel, proceed as follows:
76
771. Select the menu "Network device support" and then "Ethernet(1000Mbit)"
782. Mark "Marvell Yukon Chipset / SysKonnect SK-98xx family support"
79 with (*)
803. Build a new kernel when the configuration of the above options is
81 finished.
824. Install the new kernel.
835. Reboot your system.
84
85To use the driver as a module, proceed as follows:
86
871. Enable 'loadable module support' in the kernel.
882. For automatic driver start, enable the 'Kernel module loader'.
893. Select the menu "Network device support" and then "Ethernet(1000Mbit)"
904. Mark "Marvell Yukon Chipset / SysKonnect SK-98xx family support"
91 with (M)
925. Execute the command "make modules".
936. Execute the command "make modules_install".
94 The appropriate modules will be installed.
957. Reboot your system.
96
97
98Load the module manually
99------------------------
100To load the module manually, proceed as follows:
101
1021. Enter "modprobe sk98lin".
1032. If a Marvell Yukon or SysKonnect SK-98xx adapter is installed in
104 your computer and you have a /proc file system, execute the command:
105 "ls /proc/net/sk98lin/"
106 This should produce an output containing a line with the following
107 format:
108 eth0 eth1 ...
109 which indicates that your adapter has been found and initialized.
110
111 NOTE 1: If you have more than one Marvell Yukon or SysKonnect SK-98xx
112 adapter installed, the adapters will be listed as 'eth0',
113 'eth1', 'eth2', etc.
114 For each adapter, repeat steps 3 and 4 below.
115
116 NOTE 2: If you have other Ethernet adapters installed, your Marvell
117 Yukon or SysKonnect SK-98xx adapter will be mapped to the
118 next available number, e.g. 'eth1'. The mapping is executed
119 automatically.
120 The module installation message (displayed either in a system
121 log file or on the console) prints a line for each adapter
122 found containing the corresponding 'ethX'.
123
1243. Select an IP address and assign it to the respective adapter by
125 entering:
126 ifconfig eth0 <ip-address>
127 With this command, the adapter is connected to the Ethernet.
128
129 SK-98xx Gigabit Ethernet Server Adapters: The yellow LED on the adapter
130 is now active, the link status LED of the primary port is active and
131 the link status LED of the secondary port (on dual port adapters) is
132 blinking (if the ports are connected to a switch or hub).
133 SK-98xx V2.0 Gigabit Ethernet Adapters: The link status LED is active.
134 In addition, you will receive a status message on the console stating
135 "ethX: network connection up using port Y" and showing the selected
136 connection parameters (x stands for the ethernet device number
137 (0,1,2, etc), y stands for the port name (A or B)).
138
139 NOTE: If you are in doubt about IP addresses, ask your network
140 administrator for assistance.
141
1424. Your adapter should now be fully operational.
143 Use 'ping <otherstation>' to verify the connection to other computers
144 on your network.
1455. To check the adapter configuration view /proc/net/sk98lin/[devicename].
146 For example by executing:
147 "cat /proc/net/sk98lin/eth0"
148
149Unload the module
150-----------------
151To stop and unload the driver modules, proceed as follows:
152
1531. Execute the command "ifconfig eth0 down".
1542. Execute the command "rmmod sk98lin".
155
1563.2 Inclusion of adapter at system start
157-----------------------------------------
158
159Since a large number of different Linux distributions are
160available, we are unable to describe a general installation procedure
161for the driver module.
162Because the driver is now integrated in the kernel, installation should
163be easy, using the standard mechanism of your distribution.
164Refer to the distribution's manual for installation of ethernet adapters.
165
166***
167
1684 Driver Parameters
169====================
170
171Parameters can be set at the command line after the module has been
172loaded with the command 'modprobe'.
173In some distributions, the configuration tools are able to pass parameters
174to the driver module.
175
176If you use the kernel module loader, you can set driver parameters
177in the file /etc/modprobe.conf (or /etc/modules.conf in 2.4 or earlier).
178To set the driver parameters in this file, proceed as follows:
179
1801. Insert a line of the form :
181 options sk98lin ...
182 For "...", the same syntax is required as described for the command
183 line parameters of modprobe below.
1842. To activate the new parameters, either reboot your computer
185 or
186 unload and reload the driver.
187 The syntax of the driver parameters is:
188
189 modprobe sk98lin parameter=value1[,value2[,value3...]]
190
191 where value1 refers to the first adapter, value2 to the second etc.
192
193NOTE: All parameters are case sensitive. Write them exactly as shown
194 below.
195
196Example:
197Suppose you have two adapters. You want to set auto-negotiation
198on the first adapter to ON and on the second adapter to OFF.
199You also want to set DuplexCapabilities on the first adapter
200to FULL, and on the second adapter to HALF.
201Then, you must enter:
202
203 modprobe sk98lin AutoNeg_A=On,Off DupCap_A=Full,Half
204
205NOTE: The number of adapters that can be configured this way is
206 limited in the driver (file skge.c, constant SK_MAX_CARD_PARAM).
207 The current limit is 16. If you happen to install
208 more adapters, adjust this and recompile.
209
210
2114.1 Per-Port Parameters
212------------------------
213
214These settings are available for each port on the adapter.
215In the following description, '?' stands for the port for
216which you set the parameter (A or B).
217
218Speed
219-----
220Parameter: Speed_?
221Values: 10, 100, 1000, Auto
222Default: Auto
223
224This parameter is used to set the speed capabilities. It is only valid
225for the SK-98xx V2.0 copper adapters.
226Usually, the speed is negotiated between the two ports during link
227establishment. If this fails, a port can be forced to a specific setting
228with this parameter.
229
230Auto-Negotiation
231----------------
232Parameter: AutoNeg_?
233Values: On, Off, Sense
234Default: On
235
236The "Sense"-mode automatically detects whether the link partner supports
237auto-negotiation or not.
238
239Duplex Capabilities
240-------------------
241Parameter: DupCap_?
242Values: Half, Full, Both
243Default: Both
244
245This parameters is only relevant if auto-negotiation for this port is
246not set to "Sense". If auto-negotiation is set to "On", all three values
247are possible. If it is set to "Off", only "Full" and "Half" are allowed.
248This parameter is useful if your link partner does not support all
249possible combinations.
250
251Flow Control
252------------
253Parameter: FlowCtrl_?
254Values: Sym, SymOrRem, LocSend, None
255Default: SymOrRem
256
257This parameter can be used to set the flow control capabilities the
258port reports during auto-negotiation. It can be set for each port
259individually.
260Possible modes:
261 -- Sym = Symmetric: both link partners are allowed to send
262 PAUSE frames
263 -- SymOrRem = SymmetricOrRemote: both or only remote partner
264 are allowed to send PAUSE frames
265 -- LocSend = LocalSend: only local link partner is allowed
266 to send PAUSE frames
267 -- None = no link partner is allowed to send PAUSE frames
268
269NOTE: This parameter is ignored if auto-negotiation is set to "Off".
270
271Role in Master-Slave-Negotiation (1000Base-T only)
272--------------------------------------------------
273Parameter: Role_?
274Values: Auto, Master, Slave
275Default: Auto
276
277This parameter is only valid for the SK-9821 and SK-9822 adapters.
278For two 1000Base-T ports to communicate, one must take the role of the
279master (providing timing information), while the other must be the
280slave. Usually, this is negotiated between the two ports during link
281establishment. If this fails, a port can be forced to a specific setting
282with this parameter.
283
284
2854.2 Adapter Parameters
286-----------------------
287
288Connection Type (SK-98xx V2.0 copper adapters only)
289---------------
290Parameter: ConType
291Values: Auto, 100FD, 100HD, 10FD, 10HD
292Default: Auto
293
294The parameter 'ConType' is a combination of all five per-port parameters
295within one single parameter. This simplifies the configuration of both ports
296of an adapter card! The different values of this variable reflect the most
297meaningful combinations of port parameters.
298
299The following table shows the values of 'ConType' and the corresponding
300combinations of the per-port parameters:
301
302 ConType | DupCap AutoNeg FlowCtrl Role Speed
303 ----------+------------------------------------------------------
304 Auto | Both On SymOrRem Auto Auto
305 100FD | Full Off None Auto (ignored) 100
306 100HD | Half Off None Auto (ignored) 100
307 10FD | Full Off None Auto (ignored) 10
308 10HD | Half Off None Auto (ignored) 10
309
310Stating any other port parameter together with this 'ConType' variable
311will result in a merged configuration of those settings. This due to
312the fact, that the per-port parameters (e.g. Speed_? ) have a higher
313priority than the combined variable 'ConType'.
314
315NOTE: This parameter is always used on both ports of the adapter card.
316
317Interrupt Moderation
318--------------------
319Parameter: Moderation
320Values: None, Static, Dynamic
321Default: None
322
323Interrupt moderation is employed to limit the maximum number of interrupts
324the driver has to serve. That is, one or more interrupts (which indicate any
325transmit or receive packet to be processed) are queued until the driver
326processes them. When queued interrupts are to be served, is determined by the
327'IntsPerSec' parameter, which is explained later below.
328
329Possible modes:
330
331 -- None - No interrupt moderation is applied on the adapter card.
332 Therefore, each transmit or receive interrupt is served immediately
333 as soon as it appears on the interrupt line of the adapter card.
334
335 -- Static - Interrupt moderation is applied on the adapter card.
336 All transmit and receive interrupts are queued until a complete
337 moderation interval ends. If such a moderation interval ends, all
338 queued interrupts are processed in one big bunch without any delay.
339 The term 'static' reflects the fact, that interrupt moderation is
340 always enabled, regardless how much network load is currently
341 passing via a particular interface. In addition, the duration of
342 the moderation interval has a fixed length that never changes while
343 the driver is operational.
344
345 -- Dynamic - Interrupt moderation might be applied on the adapter card,
346 depending on the load of the system. If the driver detects that the
347 system load is too high, the driver tries to shield the system against
348 too much network load by enabling interrupt moderation. If - at a later
349 time - the CPU utilization decreases again (or if the network load is
350 negligible) the interrupt moderation will automatically be disabled.
351
352Interrupt moderation should be used when the driver has to handle one or more
353interfaces with a high network load, which - as a consequence - leads also to a
354high CPU utilization. When moderation is applied in such high network load
355situations, CPU load might be reduced by 20-30%.
356
357NOTE: The drawback of using interrupt moderation is an increase of the round-
358trip-time (RTT), due to the queueing and serving of interrupts at dedicated
359moderation times.
360
361Interrupts per second
362---------------------
363Parameter: IntsPerSec
364Values: 30...40000 (interrupts per second)
365Default: 2000
366
367This parameter is only used if either static or dynamic interrupt moderation
368is used on a network adapter card. Using this parameter if no moderation is
369applied will lead to no action performed.
370
371This parameter determines the length of any interrupt moderation interval.
372Assuming that static interrupt moderation is to be used, an 'IntsPerSec'
373parameter value of 2000 will lead to an interrupt moderation interval of
374500 microseconds.
375
376NOTE: The duration of the moderation interval is to be chosen with care.
377At first glance, selecting a very long duration (e.g. only 100 interrupts per
378second) seems to be meaningful, but the increase of packet-processing delay
379is tremendous. On the other hand, selecting a very short moderation time might
380compensate the use of any moderation being applied.
381
382
383Preferred Port
384--------------
385Parameter: PrefPort
386Values: A, B
387Default: A
388
389This is used to force the preferred port to A or B (on dual-port network
390adapters). The preferred port is the one that is used if both are detected
391as fully functional.
392
393RLMT Mode (Redundant Link Management Technology)
394------------------------------------------------
395Parameter: RlmtMode
396Values: CheckLinkState,CheckLocalPort, CheckSeg, DualNet
397Default: CheckLinkState
398
399RLMT monitors the status of the port. If the link of the active port
400fails, RLMT switches immediately to the standby link. The virtual link is
401maintained as long as at least one 'physical' link is up.
402
403Possible modes:
404
405 -- CheckLinkState - Check link state only: RLMT uses the link state
406 reported by the adapter hardware for each individual port to
407 determine whether a port can be used for all network traffic or
408 not.
409
410 -- CheckLocalPort - In this mode, RLMT monitors the network path
411 between the two ports of an adapter by regularly exchanging packets
412 between them. This mode requires a network configuration in which
413 the two ports are able to "see" each other (i.e. there must not be
414 any router between the ports).
415
416 -- CheckSeg - Check local port and segmentation: This mode supports the
417 same functions as the CheckLocalPort mode and additionally checks
418 network segmentation between the ports. Therefore, this mode is only
419 to be used if Gigabit Ethernet switches are installed on the network
420 that have been configured to use the Spanning Tree protocol.
421
422 -- DualNet - In this mode, ports A and B are used as separate devices.
423 If you have a dual port adapter, port A will be configured as eth0
424 and port B as eth1. Both ports can be used independently with
425 distinct IP addresses. The preferred port setting is not used.
426 RLMT is turned off.
427
428NOTE: RLMT modes CLP and CLPSS are designed to operate in configurations
429 where a network path between the ports on one adapter exists.
430 Moreover, they are not designed to work where adapters are connected
431 back-to-back.
432***
433
434
4355 Large Frame Support
436======================
437
438The driver supports large frames (also called jumbo frames). Using large
439frames can result in an improved throughput if transferring large amounts
440of data.
441To enable large frames, set the MTU (maximum transfer unit) of the
442interface to the desired value (up to 9000), execute the following
443command:
444 ifconfig eth0 mtu 9000
445This will only work if you have two adapters connected back-to-back
446or if you use a switch that supports large frames. When using a switch,
447it should be configured to allow large frames and auto-negotiation should
448be set to OFF. The setting must be configured on all adapters that can be
449reached by the large frames. If one adapter is not set to receive large
450frames, it will simply drop them.
451
452You can switch back to the standard ethernet frame size by executing the
453following command:
454 ifconfig eth0 mtu 1500
455
456To permanently configure this setting, add a script with the 'ifconfig'
457line to the system startup sequence (named something like "S99sk98lin"
458in /etc/rc.d/rc2.d).
459***
460
461
4626 VLAN and Link Aggregation Support (IEEE 802.1, 802.1q, 802.3ad)
463==================================================================
464
465The Marvell Yukon/SysKonnect Linux drivers are able to support VLAN and
466Link Aggregation according to IEEE standards 802.1, 802.1q, and 802.3ad.
467These features are only available after installation of open source
468modules available on the Internet:
469For VLAN go to: http://www.candelatech.com/~greear/vlan.html
470For Link Aggregation go to: http://www.st.rim.or.jp/~yumo
471
472NOTE: SysKonnect GmbH does not offer any support for these open source
473 modules and does not take the responsibility for any kind of
474 failures or problems arising in connection with these modules.
475
476NOTE: Configuring Link Aggregation on a SysKonnect dual link adapter may
477 cause problems when unloading the driver.
478
479
4807 Troubleshooting
481==================
482
483If any problems occur during the installation process, check the
484following list:
485
486
487Problem: The SK-98xx adapter cannot be found by the driver.
488Solution: In /proc/pci search for the following entry:
489 'Ethernet controller: SysKonnect SK-98xx ...'
490 If this entry exists, the SK-98xx or SK-98xx V2.0 adapter has
491 been found by the system and should be operational.
492 If this entry does not exist or if the file '/proc/pci' is not
493 found, there may be a hardware problem or the PCI support may
494 not be enabled in your kernel.
495 The adapter can be checked using the diagnostics program which
496 is available on the SysKonnect web site:
497 www.syskonnect.com
498
499 Some COMPAQ machines have problems dealing with PCI under Linux.
500 This problem is described in the 'PCI howto' document
501 (included in some distributions or available from the
502 web, e.g. at 'www.linux.org').
503
504
505Problem: Programs such as 'ifconfig' or 'route' cannot be found or the
506 error message 'Operation not permitted' is displayed.
507Reason: You are not logged in as user 'root'.
508Solution: Logout and login as 'root' or change to 'root' via 'su'.
509
510
511Problem: Upon use of the command 'ping <address>' the message
512 "ping: sendto: Network is unreachable" is displayed.
513Reason: Your route is not set correctly.
514Solution: If you are using RedHat, you probably forgot to set up the
515 route in the 'network configuration'.
516 Check the existing routes with the 'route' command and check
517 if an entry for 'eth0' exists, and if so, if it is set correctly.
518
519
520Problem: The driver can be started, the adapter is connected to the
521 network, but you cannot receive or transmit any packets;
522 e.g. 'ping' does not work.
523Reason: There is an incorrect route in your routing table.
524Solution: Check the routing table with the command 'route' and read the
525 manual help pages dealing with routes (enter 'man route').
526
527NOTE: Although the 2.2.x kernel versions generate the routing entry
528 automatically, problems of this kind may occur here as well. We've
529 come across a situation in which the driver started correctly at
530 system start, but after the driver has been removed and reloaded,
531 the route of the adapter's network pointed to the 'dummy0'device
532 and had to be corrected manually.
533
534
535Problem: Your computer should act as a router between multiple
536 IP subnetworks (using multiple adapters), but computers in
537 other subnetworks cannot be reached.
538Reason: Either the router's kernel is not configured for IP forwarding
539 or the routing table and gateway configuration of at least one
540 computer is not working.
541
542Problem: Upon driver start, the following error message is displayed:
543 "eth0: -- ERROR --
544 Class: internal Software error
545 Nr: 0xcc
546 Msg: SkGeInitPort() cannot init running ports"
547Reason: You are using a driver compiled for single processor machines
548 on a multiprocessor machine with SMP (Symmetric MultiProcessor)
549 kernel.
550Solution: Configure your kernel appropriately and recompile the kernel or
551 the modules.
552
553
554
555If your problem is not listed here, please contact SysKonnect's technical
556support for help (linux@syskonnect.de).
557When contacting our technical support, please ensure that the following
558information is available:
559- System Manufacturer and HW Informations (CPU, Memory... )
560- PCI-Boards in your system
561- Distribution
562- Kernel version
563- Driver version
564***
565
566
567
568***End of Readme File***
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index 76733a3962f0..a96e85397eb7 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -50,7 +50,7 @@ Table of Contents
50 g) Freescale SOC SEC Security Engines 50 g) Freescale SOC SEC Security Engines
51 h) Board Control and Status (BCSR) 51 h) Board Control and Status (BCSR)
52 i) Freescale QUICC Engine module (QE) 52 i) Freescale QUICC Engine module (QE)
53 j) Flash chip nodes 53 j) CFI or JEDEC memory-mapped NOR flash
54 k) Global Utilities Block 54 k) Global Utilities Block
55 55
56 VII - Specifying interrupt information for devices 56 VII - Specifying interrupt information for devices
@@ -1510,7 +1510,10 @@ platforms are moved over to use the flattened-device-tree model.
1510 1510
1511 i) Freescale QUICC Engine module (QE) 1511 i) Freescale QUICC Engine module (QE)
1512 This represents qe module that is installed on PowerQUICC II Pro. 1512 This represents qe module that is installed on PowerQUICC II Pro.
1513 Hopefully it will merge backward compatibility with CPM/CPM2. 1513
1514 NOTE: This is an interim binding; it should be updated to fit
1515 in with the CPM binding later in this document.
1516
1514 Basically, it is a bus of devices, that could act more or less 1517 Basically, it is a bus of devices, that could act more or less
1515 as a complete entity (UCC, USB etc ). All of them should be siblings on 1518 as a complete entity (UCC, USB etc ). All of them should be siblings on
1516 the "root" qe node, using the common properties from there. 1519 the "root" qe node, using the common properties from there.
@@ -1548,7 +1551,7 @@ platforms are moved over to use the flattened-device-tree model.
1548 Required properties: 1551 Required properties:
1549 - device_type : should be "spi". 1552 - device_type : should be "spi".
1550 - compatible : should be "fsl_spi". 1553 - compatible : should be "fsl_spi".
1551 - mode : the SPI operation mode, it can be "cpu" or "qe". 1554 - mode : the SPI operation mode, it can be "cpu" or "cpu-qe".
1552 - reg : Offset and length of the register set for the device 1555 - reg : Offset and length of the register set for the device
1553 - interrupts : <a b> where a is the interrupt number and b is a 1556 - interrupts : <a b> where a is the interrupt number and b is a
1554 field that represents an encoding of the sense and level 1557 field that represents an encoding of the sense and level
@@ -1757,45 +1760,69 @@ platforms are moved over to use the flattened-device-tree model.
1757 }; 1760 };
1758 }; 1761 };
1759 1762
1760 j) Flash chip nodes 1763 j) CFI or JEDEC memory-mapped NOR flash
1761 1764
1762 Flash chips (Memory Technology Devices) are often used for solid state 1765 Flash chips (Memory Technology Devices) are often used for solid state
1763 file systems on embedded devices. 1766 file systems on embedded devices.
1764 1767
1765 Required properties: 1768 - compatible : should contain the specific model of flash chip(s)
1766 1769 used, if known, followed by either "cfi-flash" or "jedec-flash"
1767 - device_type : has to be "rom" 1770 - reg : Address range of the flash chip
1768 - compatible : Should specify what this flash device is compatible with. 1771 - bank-width : Width (in bytes) of the flash bank. Equal to the
1769 Currently, this is most likely to be "direct-mapped" (which 1772 device width times the number of interleaved chips.
1770 corresponds to the MTD physmap mapping driver). 1773 - device-width : (optional) Width of a single flash chip. If
1771 - reg : Offset and length of the register set (or memory mapping) for 1774 omitted, assumed to be equal to 'bank-width'.
1772 the device. 1775 - #address-cells, #size-cells : Must be present if the flash has
1773 - bank-width : Width of the flash data bus in bytes. Required 1776 sub-nodes representing partitions (see below). In this case
1774 for the NOR flashes (compatible == "direct-mapped" and others) ONLY. 1777 both #address-cells and #size-cells must be equal to 1.
1775 1778
1776 Recommended properties : 1779 For JEDEC compatible devices, the following additional properties
1777 1780 are defined:
1778 - partitions : Several pairs of 32-bit values where the first value is 1781
1779 partition's offset from the start of the device and the second one is 1782 - vendor-id : Contains the flash chip's vendor id (1 byte).
1780 partition size in bytes with LSB used to signify a read only 1783 - device-id : Contains the flash chip's device id (1 byte).
1781 partition (so, the partition size should always be an even number). 1784
1782 - partition-names : The list of concatenated zero terminated strings 1785 In addition to the information on the flash bank itself, the
1783 representing the partition names. 1786 device tree may optionally contain additional information
1784 - probe-type : The type of probe which should be done for the chip 1787 describing partitions of the flash address space. This can be
1785 (JEDEC vs CFI actually). Valid ONLY for NOR flashes. 1788 used on platforms which have strong conventions about which
1789 portions of the flash are used for what purposes, but which don't
1790 use an on-flash partition table such as RedBoot.
1791
1792 Each partition is represented as a sub-node of the flash device.
1793 Each node's name represents the name of the corresponding
1794 partition of the flash device.
1795
1796 Flash partitions
1797 - reg : The partition's offset and size within the flash bank.
1798 - label : (optional) The label / name for this flash partition.
1799 If omitted, the label is taken from the node name (excluding
1800 the unit address).
1801 - read-only : (optional) This parameter, if present, is a hint to
1802 Linux that this flash partition should only be mounted
1803 read-only. This is usually used for flash partitions
1804 containing early-boot firmware images or data which should not
1805 be clobbered.
1786 1806
1787 Example: 1807 Example:
1788 1808
1789 flash@ff000000 { 1809 flash@ff000000 {
1790 device_type = "rom"; 1810 compatible = "amd,am29lv128ml", "cfi-flash";
1791 compatible = "direct-mapped"; 1811 reg = <ff000000 01000000>;
1792 probe-type = "CFI"; 1812 bank-width = <4>;
1793 reg = <ff000000 01000000>; 1813 device-width = <1>;
1794 bank-width = <4>; 1814 #address-cells = <1>;
1795 partitions = <00000000 00f80000 1815 #size-cells = <1>;
1796 00f80000 00080001>; 1816 fs@0 {
1797 partition-names = "fs\0firmware"; 1817 label = "fs";
1798 }; 1818 reg = <0 f80000>;
1819 };
1820 firmware@f80000 {
1821 label ="firmware";
1822 reg = <f80000 80000>;
1823 read-only;
1824 };
1825 };
1799 1826
1800 k) Global Utilities Block 1827 k) Global Utilities Block
1801 1828
@@ -1824,6 +1851,397 @@ platforms are moved over to use the flattened-device-tree model.
1824 fsl,has-rstcr; 1851 fsl,has-rstcr;
1825 }; 1852 };
1826 1853
1854 l) Freescale Communications Processor Module
1855
1856 NOTE: This is an interim binding, and will likely change slightly,
1857 as more devices are supported. The QE bindings especially are
1858 incomplete.
1859
1860 i) Root CPM node
1861
1862 Properties:
1863 - compatible : "fsl,cpm1", "fsl,cpm2", or "fsl,qe".
1864 - reg : A 48-byte region beginning with CPCR.
1865
1866 Example:
1867 cpm@119c0 {
1868 #address-cells = <1>;
1869 #size-cells = <1>;
1870 #interrupt-cells = <2>;
1871 compatible = "fsl,mpc8272-cpm", "fsl,cpm2";
1872 reg = <119c0 30>;
1873 }
1874
1875 ii) Properties common to mulitple CPM/QE devices
1876
1877 - fsl,cpm-command : This value is ORed with the opcode and command flag
1878 to specify the device on which a CPM command operates.
1879
1880 - fsl,cpm-brg : Indicates which baud rate generator the device
1881 is associated with. If absent, an unused BRG
1882 should be dynamically allocated. If zero, the
1883 device uses an external clock rather than a BRG.
1884
1885 - reg : Unless otherwise specified, the first resource represents the
1886 scc/fcc/ucc registers, and the second represents the device's
1887 parameter RAM region (if it has one).
1888
1889 iii) Serial
1890
1891 Currently defined compatibles:
1892 - fsl,cpm1-smc-uart
1893 - fsl,cpm2-smc-uart
1894 - fsl,cpm1-scc-uart
1895 - fsl,cpm2-scc-uart
1896 - fsl,qe-uart
1897
1898 Example:
1899
1900 serial@11a00 {
1901 device_type = "serial";
1902 compatible = "fsl,mpc8272-scc-uart",
1903 "fsl,cpm2-scc-uart";
1904 reg = <11a00 20 8000 100>;
1905 interrupts = <28 8>;
1906 interrupt-parent = <&PIC>;
1907 fsl,cpm-brg = <1>;
1908 fsl,cpm-command = <00800000>;
1909 };
1910
1911 iii) Network
1912
1913 Currently defined compatibles:
1914 - fsl,cpm1-scc-enet
1915 - fsl,cpm2-scc-enet
1916 - fsl,cpm1-fec-enet
1917 - fsl,cpm2-fcc-enet (third resource is GFEMR)
1918 - fsl,qe-enet
1919
1920 Example:
1921
1922 ethernet@11300 {
1923 device_type = "network";
1924 compatible = "fsl,mpc8272-fcc-enet",
1925 "fsl,cpm2-fcc-enet";
1926 reg = <11300 20 8400 100 11390 1>;
1927 local-mac-address = [ 00 00 00 00 00 00 ];
1928 interrupts = <20 8>;
1929 interrupt-parent = <&PIC>;
1930 phy-handle = <&PHY0>;
1931 linux,network-index = <0>;
1932 fsl,cpm-command = <12000300>;
1933 };
1934
1935 iv) MDIO
1936
1937 Currently defined compatibles:
1938 fsl,pq1-fec-mdio (reg is same as first resource of FEC device)
1939 fsl,cpm2-mdio-bitbang (reg is port C registers)
1940
1941 Properties for fsl,cpm2-mdio-bitbang:
1942 fsl,mdio-pin : pin of port C controlling mdio data
1943 fsl,mdc-pin : pin of port C controlling mdio clock
1944
1945 Example:
1946
1947 mdio@10d40 {
1948 device_type = "mdio";
1949 compatible = "fsl,mpc8272ads-mdio-bitbang",
1950 "fsl,mpc8272-mdio-bitbang",
1951 "fsl,cpm2-mdio-bitbang";
1952 reg = <10d40 14>;
1953 #address-cells = <1>;
1954 #size-cells = <0>;
1955 fsl,mdio-pin = <12>;
1956 fsl,mdc-pin = <13>;
1957 };
1958
1959 v) Baud Rate Generators
1960
1961 Currently defined compatibles:
1962 fsl,cpm-brg
1963 fsl,cpm1-brg
1964 fsl,cpm2-brg
1965
1966 Properties:
1967 - reg : There may be an arbitrary number of reg resources; BRG
1968 numbers are assigned to these in order.
1969 - clock-frequency : Specifies the base frequency driving
1970 the BRG.
1971
1972 Example:
1973
1974 brg@119f0 {
1975 compatible = "fsl,mpc8272-brg",
1976 "fsl,cpm2-brg",
1977 "fsl,cpm-brg";
1978 reg = <119f0 10 115f0 10>;
1979 clock-frequency = <d#25000000>;
1980 };
1981
1982 vi) Interrupt Controllers
1983
1984 Currently defined compatibles:
1985 - fsl,cpm1-pic
1986 - only one interrupt cell
1987 - fsl,pq1-pic
1988 - fsl,cpm2-pic
1989 - second interrupt cell is level/sense:
1990 - 2 is falling edge
1991 - 8 is active low
1992
1993 Example:
1994
1995 interrupt-controller@10c00 {
1996 #interrupt-cells = <2>;
1997 interrupt-controller;
1998 reg = <10c00 80>;
1999 compatible = "mpc8272-pic", "fsl,cpm2-pic";
2000 };
2001
2002 vii) USB (Universal Serial Bus Controller)
2003
2004 Properties:
2005 - compatible : "fsl,cpm1-usb", "fsl,cpm2-usb", "fsl,qe-usb"
2006
2007 Example:
2008 usb@11bc0 {
2009 #address-cells = <1>;
2010 #size-cells = <0>;
2011 compatible = "fsl,cpm2-usb";
2012 reg = <11b60 18 8b00 100>;
2013 interrupts = <b 8>;
2014 interrupt-parent = <&PIC>;
2015 fsl,cpm-command = <2e600000>;
2016 };
2017
2018 viii) Multi-User RAM (MURAM)
2019
2020 The multi-user/dual-ported RAM is expressed as a bus under the CPM node.
2021
2022 Ranges must be set up subject to the following restrictions:
2023
2024 - Children's reg nodes must be offsets from the start of all muram, even
2025 if the user-data area does not begin at zero.
2026 - If multiple range entries are used, the difference between the parent
2027 address and the child address must be the same in all, so that a single
2028 mapping can cover them all while maintaining the ability to determine
2029 CPM-side offsets with pointer subtraction. It is recommended that
2030 multiple range entries not be used.
2031 - A child address of zero must be translatable, even if no reg resources
2032 contain it.
2033
2034 A child "data" node must exist, compatible with "fsl,cpm-muram-data", to
2035 indicate the portion of muram that is usable by the OS for arbitrary
2036 purposes. The data node may have an arbitrary number of reg resources,
2037 all of which contribute to the allocatable muram pool.
2038
2039 Example, based on mpc8272:
2040
2041 muram@0 {
2042 #address-cells = <1>;
2043 #size-cells = <1>;
2044 ranges = <0 0 10000>;
2045
2046 data@0 {
2047 compatible = "fsl,cpm-muram-data";
2048 reg = <0 2000 9800 800>;
2049 };
2050 };
2051
2052 m) Chipselect/Local Bus
2053
2054 Properties:
2055 - name : Should be localbus
2056 - #address-cells : Should be either two or three. The first cell is the
2057 chipselect number, and the remaining cells are the
2058 offset into the chipselect.
2059 - #size-cells : Either one or two, depending on how large each chipselect
2060 can be.
2061 - ranges : Each range corresponds to a single chipselect, and cover
2062 the entire access window as configured.
2063
2064 Example:
2065 localbus@f0010100 {
2066 compatible = "fsl,mpc8272ads-localbus",
2067 "fsl,mpc8272-localbus",
2068 "fsl,pq2-localbus";
2069 #address-cells = <2>;
2070 #size-cells = <1>;
2071 reg = <f0010100 40>;
2072
2073 ranges = <0 0 fe000000 02000000
2074 1 0 f4500000 00008000>;
2075
2076 flash@0,0 {
2077 compatible = "jedec-flash";
2078 reg = <0 0 2000000>;
2079 bank-width = <4>;
2080 device-width = <1>;
2081 };
2082
2083 board-control@1,0 {
2084 reg = <1 0 20>;
2085 compatible = "fsl,mpc8272ads-bcsr";
2086 };
2087 };
2088
2089
2090 n) 4xx/Axon EMAC ethernet nodes
2091
2092 The EMAC ethernet controller in IBM and AMCC 4xx chips, and also
2093 the Axon bridge. To operate this needs to interact with a ths
2094 special McMAL DMA controller, and sometimes an RGMII or ZMII
2095 interface. In addition to the nodes and properties described
2096 below, the node for the OPB bus on which the EMAC sits must have a
2097 correct clock-frequency property.
2098
2099 i) The EMAC node itself
2100
2101 Required properties:
2102 - device_type : "network"
2103
2104 - compatible : compatible list, contains 2 entries, first is
2105 "ibm,emac-CHIP" where CHIP is the host ASIC (440gx,
2106 405gp, Axon) and second is either "ibm,emac" or
2107 "ibm,emac4". For Axon, thus, we have: "ibm,emac-axon",
2108 "ibm,emac4"
2109 - interrupts : <interrupt mapping for EMAC IRQ and WOL IRQ>
2110 - interrupt-parent : optional, if needed for interrupt mapping
2111 - reg : <registers mapping>
2112 - local-mac-address : 6 bytes, MAC address
2113 - mal-device : phandle of the associated McMAL node
2114 - mal-tx-channel : 1 cell, index of the tx channel on McMAL associated
2115 with this EMAC
2116 - mal-rx-channel : 1 cell, index of the rx channel on McMAL associated
2117 with this EMAC
2118 - cell-index : 1 cell, hardware index of the EMAC cell on a given
2119 ASIC (typically 0x0 and 0x1 for EMAC0 and EMAC1 on
2120 each Axon chip)
2121 - max-frame-size : 1 cell, maximum frame size supported in bytes
2122 - rx-fifo-size : 1 cell, Rx fifo size in bytes for 10 and 100 Mb/sec
2123 operations.
2124 For Axon, 2048
2125 - tx-fifo-size : 1 cell, Tx fifo size in bytes for 10 and 100 Mb/sec
2126 operations.
2127 For Axon, 2048.
2128 - fifo-entry-size : 1 cell, size of a fifo entry (used to calculate
2129 thresholds).
2130 For Axon, 0x00000010
2131 - mal-burst-size : 1 cell, MAL burst size (used to calculate thresholds)
2132 in bytes.
2133 For Axon, 0x00000100 (I think ...)
2134 - phy-mode : string, mode of operations of the PHY interface.
2135 Supported values are: "mii", "rmii", "smii", "rgmii",
2136 "tbi", "gmii", rtbi", "sgmii".
2137 For Axon on CAB, it is "rgmii"
2138 - mdio-device : 1 cell, required iff using shared MDIO registers
2139 (440EP). phandle of the EMAC to use to drive the
2140 MDIO lines for the PHY used by this EMAC.
2141 - zmii-device : 1 cell, required iff connected to a ZMII. phandle of
2142 the ZMII device node
2143 - zmii-channel : 1 cell, required iff connected to a ZMII. Which ZMII
2144 channel or 0xffffffff if ZMII is only used for MDIO.
2145 - rgmii-device : 1 cell, required iff connected to an RGMII. phandle
2146 of the RGMII device node.
2147 For Axon: phandle of plb5/plb4/opb/rgmii
2148 - rgmii-channel : 1 cell, required iff connected to an RGMII. Which
2149 RGMII channel is used by this EMAC.
2150 Fox Axon: present, whatever value is appropriate for each
2151 EMAC, that is the content of the current (bogus) "phy-port"
2152 property.
2153
2154 Recommended properties:
2155 - linux,network-index : This is the intended "index" of this
2156 network device. This is used by the bootwrapper to interpret
2157 MAC addresses passed by the firmware when no information other
2158 than indices is available to associate an address with a device.
2159
2160 Optional properties:
2161 - phy-address : 1 cell, optional, MDIO address of the PHY. If absent,
2162 a search is performed.
2163 - phy-map : 1 cell, optional, bitmap of addresses to probe the PHY
2164 for, used if phy-address is absent. bit 0x00000001 is
2165 MDIO address 0.
2166 For Axon it can be absent, thouugh my current driver
2167 doesn't handle phy-address yet so for now, keep
2168 0x00ffffff in it.
2169 - rx-fifo-size-gige : 1 cell, Rx fifo size in bytes for 1000 Mb/sec
2170 operations (if absent the value is the same as
2171 rx-fifo-size). For Axon, either absent or 2048.
2172 - tx-fifo-size-gige : 1 cell, Tx fifo size in bytes for 1000 Mb/sec
2173 operations (if absent the value is the same as
2174 tx-fifo-size). For Axon, either absent or 2048.
2175 - tah-device : 1 cell, optional. If connected to a TAH engine for
2176 offload, phandle of the TAH device node.
2177 - tah-channel : 1 cell, optional. If appropriate, channel used on the
2178 TAH engine.
2179
2180 Example:
2181
2182 EMAC0: ethernet@40000800 {
2183 linux,network-index = <0>;
2184 device_type = "network";
2185 compatible = "ibm,emac-440gp", "ibm,emac";
2186 interrupt-parent = <&UIC1>;
2187 interrupts = <1c 4 1d 4>;
2188 reg = <40000800 70>;
2189 local-mac-address = [00 04 AC E3 1B 1E];
2190 mal-device = <&MAL0>;
2191 mal-tx-channel = <0 1>;
2192 mal-rx-channel = <0>;
2193 cell-index = <0>;
2194 max-frame-size = <5dc>;
2195 rx-fifo-size = <1000>;
2196 tx-fifo-size = <800>;
2197 phy-mode = "rmii";
2198 phy-map = <00000001>;
2199 zmii-device = <&ZMII0>;
2200 zmii-channel = <0>;
2201 };
2202
2203 ii) McMAL node
2204
2205 Required properties:
2206 - device_type : "dma-controller"
2207 - compatible : compatible list, containing 2 entries, first is
2208 "ibm,mcmal-CHIP" where CHIP is the host ASIC (like
2209 emac) and the second is either "ibm,mcmal" or
2210 "ibm,mcmal2".
2211 For Axon, "ibm,mcmal-axon","ibm,mcmal2"
2212 - interrupts : <interrupt mapping for the MAL interrupts sources:
2213 5 sources: tx_eob, rx_eob, serr, txde, rxde>.
2214 For Axon: This is _different_ from the current
2215 firmware. We use the "delayed" interrupts for txeob
2216 and rxeob. Thus we end up with mapping those 5 MPIC
2217 interrupts, all level positive sensitive: 10, 11, 32,
2218 33, 34 (in decimal)
2219 - dcr-reg : < DCR registers range >
2220 - dcr-parent : if needed for dcr-reg
2221 - num-tx-chans : 1 cell, number of Tx channels
2222 - num-rx-chans : 1 cell, number of Rx channels
2223
2224 iii) ZMII node
2225
2226 Required properties:
2227 - compatible : compatible list, containing 2 entries, first is
2228 "ibm,zmii-CHIP" where CHIP is the host ASIC (like
2229 EMAC) and the second is "ibm,zmii".
2230 For Axon, there is no ZMII node.
2231 - reg : <registers mapping>
2232
2233 iv) RGMII node
2234
2235 Required properties:
2236 - compatible : compatible list, containing 2 entries, first is
2237 "ibm,rgmii-CHIP" where CHIP is the host ASIC (like
2238 EMAC) and the second is "ibm,rgmii".
2239 For Axon, "ibm,rgmii-axon","ibm,rgmii"
2240 - reg : <registers mapping>
2241 - revision : as provided by the RGMII new version register if
2242 available.
2243 For Axon: 0x0000012a
2244
1827 More devices will be defined as this spec matures. 2245 More devices will be defined as this spec matures.
1828 2246
1829VII - Specifying interrupt information for devices 2247VII - Specifying interrupt information for devices
diff --git a/Documentation/rfkill.txt b/Documentation/rfkill.txt
new file mode 100644
index 000000000000..a83ff23cd68c
--- /dev/null
+++ b/Documentation/rfkill.txt
@@ -0,0 +1,89 @@
1rfkill - RF switch subsystem support
2====================================
3
41 Implementation details
52 Driver support
63 Userspace support
7
8===============================================================================
91: Implementation details
10
11The rfkill switch subsystem offers support for keys often found on laptops
12to enable wireless devices like WiFi and Bluetooth.
13
14This is done by providing the user 3 possibilities:
15 1 - The rfkill system handles all events; userspace is not aware of events.
16 2 - The rfkill system handles all events; userspace is informed about the events.
17 3 - The rfkill system does not handle events; userspace handles all events.
18
19The buttons to enable and disable the wireless radios are important in
20situations where the user is for example using his laptop on a location where
21wireless radios _must_ be disabled (e.g. airplanes).
22Because of this requirement, userspace support for the keys should not be
23made mandatory. Because userspace might want to perform some additional smarter
24tasks when the key is pressed, rfkill still provides userspace the possibility
25to take over the task to handle the key events.
26
27The system inside the kernel has been split into 2 separate sections:
28 1 - RFKILL
29 2 - RFKILL_INPUT
30
31The first option enables rfkill support and will make sure userspace will
32be notified of any events through the input device. It also creates several
33sysfs entries which can be used by userspace. See section "Userspace support".
34
35The second option provides an rfkill input handler. This handler will
36listen to all rfkill key events and will toggle the radio accordingly.
37With this option enabled userspace could either do nothing or simply
38perform monitoring tasks.
39
40====================================
412: Driver support
42
43To build a driver with rfkill subsystem support, the driver should
44depend on the Kconfig symbol RFKILL; it should _not_ depend on
45RKFILL_INPUT.
46
47Unless key events trigger an interrupt to which the driver listens, polling
48will be required to determine the key state changes. For this the input
49layer providers the input-polldev handler.
50
51A driver should implement a few steps to correctly make use of the
52rfkill subsystem. First for non-polling drivers:
53
54 - rfkill_allocate()
55 - input_allocate_device()
56 - rfkill_register()
57 - input_register_device()
58
59For polling drivers:
60
61 - rfkill_allocate()
62 - input_allocate_polled_device()
63 - rfkill_register()
64 - input_register_polled_device()
65
66When a key event has been detected, the correct event should be
67sent over the input device which has been registered by the driver.
68
69====================================
703: Userspace support
71
72For each key an input device will be created which will send out the correct
73key event when the rfkill key has been pressed.
74
75The following sysfs entries will be created:
76
77 name: Name assigned by driver to this key (interface or driver name).
78 type: Name of the key type ("wlan", "bluetooth", etc).
79 state: Current state of the key. 1: On, 0: Off.
80 claim: 1: Userspace handles events, 0: Kernel handles events
81
82Both the "state" and "claim" entries are also writable. For the "state" entry
83this means that when 1 or 0 is written all radios, not yet in the requested
84state, will be will be toggled accordingly.
85For the "claim" entry writing 1 to it means that the kernel no longer handles
86key events even though RFKILL_INPUT input was enabled. When "claim" has been
87set to 0, userspace should make sure that it listens for the input events or
88check the sysfs "state" entry regularly to correctly perform the required
89tasks when the rkfill key is pressed.
diff --git a/Documentation/s390/00-INDEX b/Documentation/s390/00-INDEX
new file mode 100644
index 000000000000..3a2b96302ecc
--- /dev/null
+++ b/Documentation/s390/00-INDEX
@@ -0,0 +1,26 @@
100-INDEX
2 - this file.
33270.ChangeLog
4 - ChangeLog for the UTS Global 3270-support patch (outdated).
53270.txt
6 - how to use the IBM 3270 display system support.
7cds.txt
8 - s390 common device support (common I/O layer).
9CommonIO
10 - common I/O layer command line parameters, procfs and debugfs entries
11config3270.sh
12 - example configuration for 3270 devices.
13DASD
14 - information on the DASD disk device driver.
15Debugging390.txt
16 - hints for debugging on s390 systems.
17driver-model.txt
18 - information on s390 devices and the driver model.
19monreader.txt
20 - information on accessing the z/VM monitor stream from Linux.
21s390dbf.txt
22 - information on using the s390 debug feature.
23TAPE
24 - information on the driver for channel-attached tapes.
25zfcpdump
26 - information on the s390 SCSI dump tool.
diff --git a/Documentation/s390/CommonIO b/Documentation/s390/CommonIO
index 22f82f21bc60..86320aa3fb0b 100644
--- a/Documentation/s390/CommonIO
+++ b/Documentation/s390/CommonIO
@@ -1,5 +1,5 @@
1S/390 common I/O-Layer - command line parameters and /proc entries 1S/390 common I/O-Layer - command line parameters, procfs and debugfs entries
2================================================================== 2============================================================================
3 3
4Command line parameters 4Command line parameters
5----------------------- 5-----------------------
@@ -7,9 +7,9 @@ Command line parameters
7* cio_msg = yes | no 7* cio_msg = yes | no
8 8
9 Determines whether information on found devices and sensed device 9 Determines whether information on found devices and sensed device
10 characteristics should be shown during startup, i. e. messages of the types 10 characteristics should be shown during startup or when new devices are
11 "Detected device 0.0.4711 on subchannel 0.0.0042" and "SenseID: Device 11 found, i. e. messages of the types "Detected device 0.0.4711 on subchannel
12 0.0.4711 reports: ...". 12 0.0.0042" and "SenseID: Device 0.0.4711 reports: ...".
13 13
14 Default is off. 14 Default is off.
15 15
@@ -26,8 +26,10 @@ Command line parameters
26 An ignored device can be un-ignored later; see the "/proc entries"-section for 26 An ignored device can be un-ignored later; see the "/proc entries"-section for
27 details. 27 details.
28 28
29 The devices must be given either as bus ids (0.0.abcd) or as hexadecimal 29 The devices must be given either as bus ids (0.x.abcd) or as hexadecimal
30 device numbers (0xabcd or abcd, for 2.4 backward compatibility). 30 device numbers (0xabcd or abcd, for 2.4 backward compatibility). If you
31 give a device number 0xabcd, it will be interpreted as 0.0.abcd.
32
31 You can use the 'all' keyword to ignore all devices. 33 You can use the 'all' keyword to ignore all devices.
32 The '!' operator will cause the I/O-layer to _not_ ignore a device. 34 The '!' operator will cause the I/O-layer to _not_ ignore a device.
33 The command line is parsed from left to right. 35 The command line is parsed from left to right.
@@ -81,31 +83,36 @@ Command line parameters
81 will add 0.0.a000-0.0.accc and 0.0.af00-0.0.afff to the list of ignored 83 will add 0.0.a000-0.0.accc and 0.0.af00-0.0.afff to the list of ignored
82 devices. 84 devices.
83 85
84 The devices can be specified either by bus id (0.0.abcd) or, for 2.4 backward 86 The devices can be specified either by bus id (0.x.abcd) or, for 2.4 backward
85 compatibility, by the device number in hexadecimal (0xabcd or abcd). 87 compatibility, by the device number in hexadecimal (0xabcd or abcd). Device
88 numbers given as 0xabcd will be interpreted as 0.0.abcd.
89
90* For some of the information present in the /proc filesystem in 2.4 (namely,
91 /proc/subchannels and /proc/chpids), see driver-model.txt.
92 Information formerly in /proc/irq_count is now in /proc/interrupts.
93
86 94
95debugfs entries
96---------------
87 97
88* /proc/s390dbf/cio_*/ (S/390 debug feature) 98* /sys/kernel/debug/s390dbf/cio_*/ (S/390 debug feature)
89 99
90 Some views generated by the debug feature to hold various debug outputs. 100 Some views generated by the debug feature to hold various debug outputs.
91 101
92 - /proc/s390dbf/cio_crw/sprintf 102 - /sys/kernel/debug/s390dbf/cio_crw/sprintf
93 Messages from the processing of pending channel report words (machine check 103 Messages from the processing of pending channel report words (machine check
94 handling), which will also show when CONFIG_DEBUG_CRW is defined. 104 handling).
95 105
96 - /proc/s390dbf/cio_msg/sprintf 106 - /sys/kernel/debug/s390dbf/cio_msg/sprintf
97 Various debug messages from the common I/O-layer; generally, messages which 107 Various debug messages from the common I/O-layer, including messages
98 will also show when CONFIG_DEBUG_IO is defined. 108 printed when cio_msg=yes.
99 109
100 - /proc/s390dbf/cio_trace/hex_ascii 110 - /sys/kernel/debug/s390dbf/cio_trace/hex_ascii
101 Logs the calling of functions in the common I/O-layer and, if applicable, 111 Logs the calling of functions in the common I/O-layer and, if applicable,
102 which subchannel they were called for, as well as dumps of some data 112 which subchannel they were called for, as well as dumps of some data
103 structures (like irb in an error case). 113 structures (like irb in an error case).
104 114
105 The level of logging can be changed to be more or less verbose by piping to 115 The level of logging can be changed to be more or less verbose by piping to
106 /proc/s390dbf/cio_*/level a number between 0 and 6; see the documentation on 116 /sys/kernel/debug/s390dbf/cio_*/level a number between 0 and 6; see the
107 the S/390 debug feature (Documentation/s390/s390dbf.txt) for details. 117 documentation on the S/390 debug feature (Documentation/s390/s390dbf.txt)
108 118 for details.
109* For some of the information present in the /proc filesystem in 2.4 (namely,
110 /proc/subchannels and /proc/chpids), see driver-model.txt.
111 Information formerly in /proc/irq_count is now in /proc/interrupts.
diff --git a/Documentation/s390/cds.txt b/Documentation/s390/cds.txt
index 58919d6a593a..3081927cc2d6 100644
--- a/Documentation/s390/cds.txt
+++ b/Documentation/s390/cds.txt
@@ -286,10 +286,10 @@ first:
286 timeout value 286 timeout value
287-EIO: the common I/O layer terminated the request due to an error state 287-EIO: the common I/O layer terminated the request due to an error state
288 288
289If the concurrent sense flag in the extended status word in the irb is set, the 289If the concurrent sense flag in the extended status word (esw) in the irb is
290field irb->scsw.count describes the number of device specific sense bytes 290set, the field erw.scnt in the esw describes the number of device specific
291available in the extended control word irb->scsw.ecw[0]. No device sensing by 291sense bytes available in the extended control word irb->scsw.ecw[]. No device
292the device driver itself is required. 292sensing by the device driver itself is required.
293 293
294The device interrupt handler can use the following definitions to investigate 294The device interrupt handler can use the following definitions to investigate
295the primary unit check source coded in sense byte 0 : 295the primary unit check source coded in sense byte 0 :
diff --git a/Documentation/sparc/sbus_drivers.txt b/Documentation/sparc/sbus_drivers.txt
index 8418d35484fc..eb1e28ad8822 100644
--- a/Documentation/sparc/sbus_drivers.txt
+++ b/Documentation/sparc/sbus_drivers.txt
@@ -67,10 +67,12 @@ probe in an SBUS driver under Linux:
67 MODULE_DEVICE_TABLE(of, mydevice_match); 67 MODULE_DEVICE_TABLE(of, mydevice_match);
68 68
69 static struct of_platform_driver mydevice_driver = { 69 static struct of_platform_driver mydevice_driver = {
70 .name = "mydevice",
71 .match_table = mydevice_match, 70 .match_table = mydevice_match,
72 .probe = mydevice_probe, 71 .probe = mydevice_probe,
73 .remove = __devexit_p(mydevice_remove), 72 .remove = __devexit_p(mydevice_remove),
73 .driver = {
74 .name = "mydevice",
75 },
74 }; 76 };
75 77
76 static int __init mydevice_init(void) 78 static int __init mydevice_init(void)
diff --git a/Documentation/sysrq.txt b/Documentation/sysrq.txt
index ef19142896ca..10c8f6922ef4 100644
--- a/Documentation/sysrq.txt
+++ b/Documentation/sysrq.txt
@@ -43,7 +43,7 @@ On x86 - You press the key combo 'ALT-SysRq-<command key>'. Note - Some
43 keyboards may not have a key labeled 'SysRq'. The 'SysRq' key is 43 keyboards may not have a key labeled 'SysRq'. The 'SysRq' key is
44 also known as the 'Print Screen' key. Also some keyboards cannot 44 also known as the 'Print Screen' key. Also some keyboards cannot
45 handle so many keys being pressed at the same time, so you might 45 handle so many keys being pressed at the same time, so you might
46 have better luck with "press Alt", "press SysRq", "release Alt", 46 have better luck with "press Alt", "press SysRq", "release SysRq",
47 "press <command key>", release everything. 47 "press <command key>", release everything.
48 48
49On SPARC - You press 'ALT-STOP-<command key>', I believe. 49On SPARC - You press 'ALT-STOP-<command key>', I believe.
diff --git a/Documentation/thinkpad-acpi.txt b/Documentation/thinkpad-acpi.txt
index eb2f5986e1eb..60953d6c919d 100644
--- a/Documentation/thinkpad-acpi.txt
+++ b/Documentation/thinkpad-acpi.txt
@@ -1,7 +1,7 @@
1 ThinkPad ACPI Extras Driver 1 ThinkPad ACPI Extras Driver
2 2
3 Version 0.15 3 Version 0.16
4 July 1st, 2007 4 August 2nd, 2007
5 5
6 Borislav Deianov <borislav@users.sf.net> 6 Borislav Deianov <borislav@users.sf.net>
7 Henrique de Moraes Holschuh <hmh@hmh.eng.br> 7 Henrique de Moraes Holschuh <hmh@hmh.eng.br>
@@ -161,20 +161,22 @@ system. Enabling the hotkey functionality of thinkpad-acpi signals the
161firmware that such a driver is present, and modifies how the ThinkPad 161firmware that such a driver is present, and modifies how the ThinkPad
162firmware will behave in many situations. 162firmware will behave in many situations.
163 163
164The driver enables the hot key feature automatically when loaded. The
165feature can later be disabled and enabled back at runtime. The driver
166will also restore the hot key feature to its previous state and mask
167when it is unloaded.
168
164When the hotkey feature is enabled and the hot key mask is set (see 169When the hotkey feature is enabled and the hot key mask is set (see
165below), the various hot keys either generate ACPI events in the 170below), the driver will report HKEY events in the following format:
166following format:
167 171
168 ibm/hotkey HKEY 00000080 0000xxxx 172 ibm/hotkey HKEY 00000080 0000xxxx
169 173
170or events over the input layer. The input layer support accepts the 174Some of these events refer to hot key presses, but not all.
171standard IOCTLs to remap the keycodes assigned to each hotkey.
172 175
173When the input device is open, the driver will suppress any ACPI hot key 176The driver will generate events over the input layer for hot keys and
174events that get translated into a meaningful input layer event, in order 177radio switches, and over the ACPI netlink layer for other events. The
175to avoid sending duplicate events to userspace. Hot keys that are 178input layer support accepts the standard IOCTLs to remap the keycodes
176mapped to KEY_RESERVED in the keymap are not translated, and will always 179assigned to each hot key.
177generate an ACPI ibm/hotkey HKEY event, and no input layer events.
178 180
179The hot key bit mask allows some control over which hot keys generate 181The hot key bit mask allows some control over which hot keys generate
180events. If a key is "masked" (bit set to 0 in the mask), the firmware 182events. If a key is "masked" (bit set to 0 in the mask), the firmware
@@ -256,6 +258,20 @@ sysfs notes:
256 disabled" postition, and 1 if the switch is in the 258 disabled" postition, and 1 if the switch is in the
257 "radios enabled" position. 259 "radios enabled" position.
258 260
261 hotkey_report_mode:
262 Returns the state of the procfs ACPI event report mode
263 filter for hot keys. If it is set to 1 (the default),
264 all hot key presses are reported both through the input
265 layer and also as ACPI events through procfs (but not
266 through netlink). If it is set to 2, hot key presses
267 are reported only through the input layer.
268
269 This attribute is read-only in kernels 2.6.23 or later,
270 and read-write on earlier kernels.
271
272 May return -EPERM (write access locked out by module
273 parameter) or -EACCES (read-only).
274
259input layer notes: 275input layer notes:
260 276
261A Hot key is mapped to a single input layer EV_KEY event, possibly 277A Hot key is mapped to a single input layer EV_KEY event, possibly
@@ -393,21 +409,63 @@ unknown by the driver if the ThinkPad firmware triggered these events on
393hot key press or release, but the firmware will do it for either one, not 409hot key press or release, but the firmware will do it for either one, not
394both. 410both.
395 411
396If a key is mapped to KEY_RESERVED, it generates no input events at all, 412If a key is mapped to KEY_RESERVED, it generates no input events at all.
397and it may generate a legacy thinkpad-acpi ACPI hotkey event.
398
399If a key is mapped to KEY_UNKNOWN, it generates an input event that 413If a key is mapped to KEY_UNKNOWN, it generates an input event that
400includes an scan code, and it may also generate a legacy thinkpad-acpi 414includes an scan code. If a key is mapped to anything else, it will
401ACPI hotkey event. 415generate input device EV_KEY events.
402
403If a key is mapped to anything else, it will only generate legacy
404thinkpad-acpi ACPI hotkey events if nobody has opened the input device.
405 416
406Non hot-key ACPI HKEY event map: 417Non hot-key ACPI HKEY event map:
4070x5001 Lid closed 4180x5001 Lid closed
4080x5002 Lid opened 4190x5002 Lid opened
4090x7000 Radio Switch may have changed state 4200x7000 Radio Switch may have changed state
410 421
422The above events are not propagated by the driver, except for legacy
423compatibility purposes when hotkey_report_mode is set to 1.
424
425Compatibility notes:
426
427ibm-acpi and thinkpad-acpi 0.15 (mainline kernels before 2.6.23) never
428supported the input layer, and sent events over the procfs ACPI event
429interface.
430
431To avoid sending duplicate events over the input layer and the ACPI
432event interface, thinkpad-acpi 0.16 implements a module parameter
433(hotkey_report_mode), and also a sysfs device attribute with the same
434name.
435
436Make no mistake here: userspace is expected to switch to using the input
437layer interface of thinkpad-acpi, together with the ACPI netlink event
438interface in kernels 2.6.23 and later, or with the ACPI procfs event
439interface in kernels 2.6.22 and earlier.
440
441If no hotkey_report_mode module parameter is specified (or it is set to
442zero), the driver defaults to mode 1 (see below), and on kernels 2.6.22
443and earlier, also allows one to change the hotkey_report_mode through
444sysfs. In kernels 2.6.23 and later, where the netlink ACPI event
445interface is available, hotkey_report_mode cannot be changed through
446sysfs (it is read-only).
447
448If the hotkey_report_mode module parameter is set to 1 or 2, it cannot
449be changed later through sysfs (any writes will return -EPERM to signal
450that hotkey_report_mode was locked. On 2.6.23 and later, where
451hotkey_report_mode cannot be changed at all, writes will return -EACES).
452
453hotkey_report_mode set to 1 makes the driver export through the procfs
454ACPI event interface all hot key presses (which are *also* sent to the
455input layer). This is a legacy compatibility behaviour, and it is also
456the default mode of operation for the driver.
457
458hotkey_report_mode set to 2 makes the driver filter out the hot key
459presses from the procfs ACPI event interface, so these events will only
460be sent through the input layer. Userspace that has been updated to use
461the thinkpad-acpi input layer interface should set hotkey_report_mode to
4622.
463
464Hot key press events are never sent to the ACPI netlink event interface.
465Really up-to-date userspace under kernel 2.6.23 and later is to use the
466netlink interface and the input layer interface, and don't bother at all
467with hotkey_report_mode.
468
411 469
412Bluetooth 470Bluetooth
413--------- 471---------
diff --git a/Documentation/usb/authorization.txt b/Documentation/usb/authorization.txt
new file mode 100644
index 000000000000..2af400609498
--- /dev/null
+++ b/Documentation/usb/authorization.txt
@@ -0,0 +1,92 @@
1
2Authorizing (or not) your USB devices to connect to the system
3
4(C) 2007 Inaky Perez-Gonzalez <inaky@linux.intel.com> Intel Corporation
5
6This feature allows you to control if a USB device can be used (or
7not) in a system. This feature will allow you to implement a lock-down
8of USB devices, fully controlled by user space.
9
10As of now, when a USB device is connected it is configured and
11it's interfaces inmediately made available to the users. With this
12modification, only if root authorizes the device to be configured will
13then it be possible to use it.
14
15Usage:
16
17Authorize a device to connect:
18
19$ echo 1 > /sys/usb/devices/DEVICE/authorized
20
21Deauthorize a device:
22
23$ echo 0 > /sys/usb/devices/DEVICE/authorized
24
25Set new devices connected to hostX to be deauthorized by default (ie:
26lock down):
27
28$ echo 0 > /sys/bus/devices/usbX/authorized_default
29
30Remove the lock down:
31
32$ echo 1 > /sys/bus/devices/usbX/authorized_default
33
34By default, Wired USB devices are authorized by default to
35connect. Wireless USB hosts deauthorize by default all new connected
36devices (this is so because we need to do an authentication phase
37before authorizing).
38
39
40Example system lockdown (lame)
41-----------------------
42
43Imagine you want to implement a lockdown so only devices of type XYZ
44can be connected (for example, it is a kiosk machine with a visible
45USB port):
46
47boot up
48rc.local ->
49
50 for host in /sys/bus/devices/usb*
51 do
52 echo 0 > $host/authorized_default
53 done
54
55Hookup an script to udev, for new USB devices
56
57 if device_is_my_type $DEV
58 then
59 echo 1 > $device_path/authorized
60 done
61
62
63Now, device_is_my_type() is where the juice for a lockdown is. Just
64checking if the class, type and protocol match something is the worse
65security verification you can make (or the best, for someone willing
66to break it). If you need something secure, use crypto and Certificate
67Authentication or stuff like that. Something simple for an storage key
68could be:
69
70function device_is_my_type()
71{
72 echo 1 > authorized # temporarily authorize it
73 # FIXME: make sure none can mount it
74 mount DEVICENODE /mntpoint
75 sum=$(md5sum /mntpoint/.signature)
76 if [ $sum = $(cat /etc/lockdown/keysum) ]
77 then
78 echo "We are good, connected"
79 umount /mntpoint
80 # Other stuff so others can use it
81 else
82 echo 0 > authorized
83 fi
84}
85
86
87Of course, this is lame, you'd want to do a real certificate
88verification stuff with PKI, so you don't depend on a shared secret,
89etc, but you get the idea. Anybody with access to a device gadget kit
90can fake descriptors and device info. Don't trust that. You are
91welcome.
92
diff --git a/Documentation/usb/power-management.txt b/Documentation/usb/power-management.txt
new file mode 100644
index 000000000000..97842deec471
--- /dev/null
+++ b/Documentation/usb/power-management.txt
@@ -0,0 +1,517 @@
1 Power Management for USB
2
3 Alan Stern <stern@rowland.harvard.edu>
4
5 October 5, 2007
6
7
8
9 What is Power Management?
10 -------------------------
11
12Power Management (PM) is the practice of saving energy by suspending
13parts of a computer system when they aren't being used. While a
14component is "suspended" it is in a nonfunctional low-power state; it
15might even be turned off completely. A suspended component can be
16"resumed" (returned to a functional full-power state) when the kernel
17needs to use it. (There also are forms of PM in which components are
18placed in a less functional but still usable state instead of being
19suspended; an example would be reducing the CPU's clock rate. This
20document will not discuss those other forms.)
21
22When the parts being suspended include the CPU and most of the rest of
23the system, we speak of it as a "system suspend". When a particular
24device is turned off while the system as a whole remains running, we
25call it a "dynamic suspend" (also known as a "runtime suspend" or
26"selective suspend"). This document concentrates mostly on how
27dynamic PM is implemented in the USB subsystem, although system PM is
28covered to some extent (see Documentation/power/*.txt for more
29information about system PM).
30
31Note: Dynamic PM support for USB is present only if the kernel was
32built with CONFIG_USB_SUSPEND enabled. System PM support is present
33only if the kernel was built with CONFIG_SUSPEND or CONFIG_HIBERNATION
34enabled.
35
36
37 What is Remote Wakeup?
38 ----------------------
39
40When a device has been suspended, it generally doesn't resume until
41the computer tells it to. Likewise, if the entire computer has been
42suspended, it generally doesn't resume until the user tells it to, say
43by pressing a power button or opening the cover.
44
45However some devices have the capability of resuming by themselves, or
46asking the kernel to resume them, or even telling the entire computer
47to resume. This capability goes by several names such as "Wake On
48LAN"; we will refer to it generically as "remote wakeup". When a
49device is enabled for remote wakeup and it is suspended, it may resume
50itself (or send a request to be resumed) in response to some external
51event. Examples include a suspended keyboard resuming when a key is
52pressed, or a suspended USB hub resuming when a device is plugged in.
53
54
55 When is a USB device idle?
56 --------------------------
57
58A device is idle whenever the kernel thinks it's not busy doing
59anything important and thus is a candidate for being suspended. The
60exact definition depends on the device's driver; drivers are allowed
61to declare that a device isn't idle even when there's no actual
62communication taking place. (For example, a hub isn't considered idle
63unless all the devices plugged into that hub are already suspended.)
64In addition, a device isn't considered idle so long as a program keeps
65its usbfs file open, whether or not any I/O is going on.
66
67If a USB device has no driver, its usbfs file isn't open, and it isn't
68being accessed through sysfs, then it definitely is idle.
69
70
71 Forms of dynamic PM
72 -------------------
73
74Dynamic suspends can occur in two ways: manual and automatic.
75"Manual" means that the user has told the kernel to suspend a device,
76whereas "automatic" means that the kernel has decided all by itself to
77suspend a device. Automatic suspend is called "autosuspend" for
78short. In general, a device won't be autosuspended unless it has been
79idle for some minimum period of time, the so-called idle-delay time.
80
81Of course, nothing the kernel does on its own initiative should
82prevent the computer or its devices from working properly. If a
83device has been autosuspended and a program tries to use it, the
84kernel will automatically resume the device (autoresume). For the
85same reason, an autosuspended device will usually have remote wakeup
86enabled, if the device supports remote wakeup.
87
88It is worth mentioning that many USB drivers don't support
89autosuspend. In fact, at the time of this writing (Linux 2.6.23) the
90only drivers which do support it are the hub driver, kaweth, asix,
91usblp, usblcd, and usb-skeleton (which doesn't count). If a
92non-supporting driver is bound to a device, the device won't be
93autosuspended. In effect, the kernel pretends the device is never
94idle.
95
96We can categorize power management events in two broad classes:
97external and internal. External events are those triggered by some
98agent outside the USB stack: system suspend/resume (triggered by
99userspace), manual dynamic suspend/resume (also triggered by
100userspace), and remote wakeup (triggered by the device). Internal
101events are those triggered within the USB stack: autosuspend and
102autoresume.
103
104
105 The user interface for dynamic PM
106 ---------------------------------
107
108The user interface for controlling dynamic PM is located in the power/
109subdirectory of each USB device's sysfs directory, that is, in
110/sys/bus/usb/devices/.../power/ where "..." is the device's ID. The
111relevant attribute files are: wakeup, level, and autosuspend.
112
113 power/wakeup
114
115 This file is empty if the device does not support
116 remote wakeup. Otherwise the file contains either the
117 word "enabled" or the word "disabled", and you can
118 write those words to the file. The setting determines
119 whether or not remote wakeup will be enabled when the
120 device is next suspended. (If the setting is changed
121 while the device is suspended, the change won't take
122 effect until the following suspend.)
123
124 power/level
125
126 This file contains one of three words: "on", "auto",
127 or "suspend". You can write those words to the file
128 to change the device's setting.
129
130 "on" means that the device should be resumed and
131 autosuspend is not allowed. (Of course, system
132 suspends are still allowed.)
133
134 "auto" is the normal state in which the kernel is
135 allowed to autosuspend and autoresume the device.
136
137 "suspend" means that the device should remain
138 suspended, and autoresume is not allowed. (But remote
139 wakeup may still be allowed, since it is controlled
140 separately by the power/wakeup attribute.)
141
142 power/autosuspend
143
144 This file contains an integer value, which is the
145 number of seconds the device should remain idle before
146 the kernel will autosuspend it (the idle-delay time).
147 The default is 2. 0 means to autosuspend as soon as
148 the device becomes idle, and -1 means never to
149 autosuspend. You can write a number to the file to
150 change the autosuspend idle-delay time.
151
152Writing "-1" to power/autosuspend and writing "on" to power/level do
153essentially the same thing -- they both prevent the device from being
154autosuspended. Yes, this is a redundancy in the API.
155
156(In 2.6.21 writing "0" to power/autosuspend would prevent the device
157from being autosuspended; the behavior was changed in 2.6.22. The
158power/autosuspend attribute did not exist prior to 2.6.21, and the
159power/level attribute did not exist prior to 2.6.22.)
160
161
162 Changing the default idle-delay time
163 ------------------------------------
164
165The default autosuspend idle-delay time is controlled by a module
166parameter in usbcore. You can specify the value when usbcore is
167loaded. For example, to set it to 5 seconds instead of 2 you would
168do:
169
170 modprobe usbcore autosuspend=5
171
172Equivalently, you could add to /etc/modprobe.conf a line saying:
173
174 options usbcore autosuspend=5
175
176Some distributions load the usbcore module very early during the boot
177process, by means of a program or script running from an initramfs
178image. To alter the parameter value you would have to rebuild that
179image.
180
181If usbcore is compiled into the kernel rather than built as a loadable
182module, you can add
183
184 usbcore.autosuspend=5
185
186to the kernel's boot command line.
187
188Finally, the parameter value can be changed while the system is
189running. If you do:
190
191 echo 5 >/sys/module/usbcore/parameters/autosuspend
192
193then each new USB device will have its autosuspend idle-delay
194initialized to 5. (The idle-delay values for already existing devices
195will not be affected.)
196
197Setting the initial default idle-delay to -1 will prevent any
198autosuspend of any USB device. This is a simple alternative to
199disabling CONFIG_USB_SUSPEND and rebuilding the kernel, and it has the
200added benefit of allowing you to enable autosuspend for selected
201devices.
202
203
204 Warnings
205 --------
206
207The USB specification states that all USB devices must support power
208management. Nevertheless, the sad fact is that many devices do not
209support it very well. You can suspend them all right, but when you
210try to resume them they disconnect themselves from the USB bus or
211they stop working entirely. This seems to be especially prevalent
212among printers and scanners, but plenty of other types of device have
213the same deficiency.
214
215For this reason, by default the kernel disables autosuspend (the
216power/level attribute is initialized to "on") for all devices other
217than hubs. Hubs, at least, appear to be reasonably well-behaved in
218this regard.
219
220(In 2.6.21 and 2.6.22 this wasn't the case. Autosuspend was enabled
221by default for almost all USB devices. A number of people experienced
222problems as a result.)
223
224This means that non-hub devices won't be autosuspended unless the user
225or a program explicitly enables it. As of this writing there aren't
226any widespread programs which will do this; we hope that in the near
227future device managers such as HAL will take on this added
228responsibility. In the meantime you can always carry out the
229necessary operations by hand or add them to a udev script. You can
230also change the idle-delay time; 2 seconds is not the best choice for
231every device.
232
233Sometimes it turns out that even when a device does work okay with
234autosuspend there are still problems. For example, there are
235experimental patches adding autosuspend support to the usbhid driver,
236which manages keyboards and mice, among other things. Tests with a
237number of keyboards showed that typing on a suspended keyboard, while
238causing the keyboard to do a remote wakeup all right, would
239nonetheless frequently result in lost keystrokes. Tests with mice
240showed that some of them would issue a remote-wakeup request in
241response to button presses but not to motion, and some in response to
242neither.
243
244The kernel will not prevent you from enabling autosuspend on devices
245that can't handle it. It is even possible in theory to damage a
246device by suspending it at the wrong time -- for example, suspending a
247USB hard disk might cause it to spin down without parking the heads.
248(Highly unlikely, but possible.) Take care.
249
250
251 The driver interface for Power Management
252 -----------------------------------------
253
254The requirements for a USB driver to support external power management
255are pretty modest; the driver need only define
256
257 .suspend
258 .resume
259 .reset_resume
260
261methods in its usb_driver structure, and the reset_resume method is
262optional. The methods' jobs are quite simple:
263
264 The suspend method is called to warn the driver that the
265 device is going to be suspended. If the driver returns a
266 negative error code, the suspend will be aborted. Normally
267 the driver will return 0, in which case it must cancel all
268 outstanding URBs (usb_kill_urb()) and not submit any more.
269
270 The resume method is called to tell the driver that the
271 device has been resumed and the driver can return to normal
272 operation. URBs may once more be submitted.
273
274 The reset_resume method is called to tell the driver that
275 the device has been resumed and it also has been reset.
276 The driver should redo any necessary device initialization,
277 since the device has probably lost most or all of its state
278 (although the interfaces will be in the same altsettings as
279 before the suspend).
280
281The reset_resume method is used by the USB Persist facility (see
282Documentation/usb/persist.txt) and it can also be used under certain
283circumstances when CONFIG_USB_PERSIST is not enabled. Currently, if a
284device is reset during a resume and the driver does not have a
285reset_resume method, the driver won't receive any notification about
286the resume. Later kernels will call the driver's disconnect method;
2872.6.23 doesn't do this.
288
289USB drivers are bound to interfaces, so their suspend and resume
290methods get called when the interfaces are suspended or resumed. In
291principle one might want to suspend some interfaces on a device (i.e.,
292force the drivers for those interface to stop all activity) without
293suspending the other interfaces. The USB core doesn't allow this; all
294interfaces are suspended when the device itself is suspended and all
295interfaces are resumed when the device is resumed. It isn't possible
296to suspend or resume some but not all of a device's interfaces. The
297closest you can come is to unbind the interfaces' drivers.
298
299
300 The driver interface for autosuspend and autoresume
301 ---------------------------------------------------
302
303To support autosuspend and autoresume, a driver should implement all
304three of the methods listed above. In addition, a driver indicates
305that it supports autosuspend by setting the .supports_autosuspend flag
306in its usb_driver structure. It is then responsible for informing the
307USB core whenever one of its interfaces becomes busy or idle. The
308driver does so by calling these three functions:
309
310 int usb_autopm_get_interface(struct usb_interface *intf);
311 void usb_autopm_put_interface(struct usb_interface *intf);
312 int usb_autopm_set_interface(struct usb_interface *intf);
313
314The functions work by maintaining a counter in the usb_interface
315structure. When intf->pm_usage_count is > 0 then the interface is
316deemed to be busy, and the kernel will not autosuspend the interface's
317device. When intf->pm_usage_count is <= 0 then the interface is
318considered to be idle, and the kernel may autosuspend the device.
319
320(There is a similar pm_usage_count field in struct usb_device,
321associated with the device itself rather than any of its interfaces.
322This field is used only by the USB core.)
323
324The driver owns intf->pm_usage_count; it can modify the value however
325and whenever it likes. A nice aspect of the usb_autopm_* routines is
326that the changes they make are protected by the usb_device structure's
327PM mutex (udev->pm_mutex); however drivers may change pm_usage_count
328without holding the mutex.
329
330 usb_autopm_get_interface() increments pm_usage_count and
331 attempts an autoresume if the new value is > 0 and the
332 device is suspended.
333
334 usb_autopm_put_interface() decrements pm_usage_count and
335 attempts an autosuspend if the new value is <= 0 and the
336 device isn't suspended.
337
338 usb_autopm_set_interface() leaves pm_usage_count alone.
339 It attempts an autoresume if the value is > 0 and the device
340 is suspended, and it attempts an autosuspend if the value is
341 <= 0 and the device isn't suspended.
342
343There also are a couple of utility routines drivers can use:
344
345 usb_autopm_enable() sets pm_usage_cnt to 1 and then calls
346 usb_autopm_set_interface(), which will attempt an autoresume.
347
348 usb_autopm_disable() sets pm_usage_cnt to 0 and then calls
349 usb_autopm_set_interface(), which will attempt an autosuspend.
350
351The conventional usage pattern is that a driver calls
352usb_autopm_get_interface() in its open routine and
353usb_autopm_put_interface() in its close or release routine. But
354other patterns are possible.
355
356The autosuspend attempts mentioned above will often fail for one
357reason or another. For example, the power/level attribute might be
358set to "on", or another interface in the same device might not be
359idle. This is perfectly normal. If the reason for failure was that
360the device hasn't been idle for long enough, a delayed workqueue
361routine is automatically set up to carry out the operation when the
362autosuspend idle-delay has expired.
363
364Autoresume attempts also can fail. This will happen if power/level is
365set to "suspend" or if the device doesn't manage to resume properly.
366Unlike autosuspend, there's no delay for an autoresume.
367
368
369 Other parts of the driver interface
370 -----------------------------------
371
372Sometimes a driver needs to make sure that remote wakeup is enabled
373during autosuspend. For example, there's not much point
374autosuspending a keyboard if the user can't cause the keyboard to do a
375remote wakeup by typing on it. If the driver sets
376intf->needs_remote_wakeup to 1, the kernel won't autosuspend the
377device if remote wakeup isn't available or has been disabled through
378the power/wakeup attribute. (If the device is already autosuspended,
379though, setting this flag won't cause the kernel to autoresume it.
380Normally a driver would set this flag in its probe method, at which
381time the device is guaranteed not to be autosuspended.)
382
383The usb_autopm_* routines have to run in a sleepable process context;
384they must not be called from an interrupt handler or while holding a
385spinlock. In fact, the entire autosuspend mechanism is not well geared
386toward interrupt-driven operation. However there is one thing a
387driver can do in an interrupt handler:
388
389 usb_mark_last_busy(struct usb_device *udev);
390
391This sets udev->last_busy to the current time. udev->last_busy is the
392field used for idle-delay calculations; updating it will cause any
393pending autosuspend to be moved back. The usb_autopm_* routines will
394also set the last_busy field to the current time.
395
396Calling urb_mark_last_busy() from within an URB completion handler is
397subject to races: The kernel may have just finished deciding the
398device has been idle for long enough but not yet gotten around to
399calling the driver's suspend method. The driver would have to be
400responsible for synchronizing its suspend method with its URB
401completion handler and causing the autosuspend to fail with -EBUSY if
402an URB had completed too recently.
403
404External suspend calls should never be allowed to fail in this way,
405only autosuspend calls. The driver can tell them apart by checking
406udev->auto_pm; this flag will be set to 1 for internal PM events
407(autosuspend or autoresume) and 0 for external PM events.
408
409Many of the ingredients in the autosuspend framework are oriented
410towards interfaces: The usb_interface structure contains the
411pm_usage_cnt field, and the usb_autopm_* routines take an interface
412pointer as their argument. But somewhat confusingly, a few of the
413pieces (usb_mark_last_busy() and udev->auto_pm) use the usb_device
414structure instead. Drivers need to keep this straight; they can call
415interface_to_usbdev() to find the device structure for a given
416interface.
417
418
419 Locking requirements
420 --------------------
421
422All three suspend/resume methods are always called while holding the
423usb_device's PM mutex. For external events -- but not necessarily for
424autosuspend or autoresume -- the device semaphore (udev->dev.sem) will
425also be held. This implies that external suspend/resume events are
426mutually exclusive with calls to probe, disconnect, pre_reset, and
427post_reset; the USB core guarantees that this is true of internal
428suspend/resume events as well.
429
430If a driver wants to block all suspend/resume calls during some
431critical section, it can simply acquire udev->pm_mutex.
432Alternatively, if the critical section might call some of the
433usb_autopm_* routines, the driver can avoid deadlock by doing:
434
435 down(&udev->dev.sem);
436 rc = usb_autopm_get_interface(intf);
437
438and at the end of the critical section:
439
440 if (!rc)
441 usb_autopm_put_interface(intf);
442 up(&udev->dev.sem);
443
444Holding the device semaphore will block all external PM calls, and the
445usb_autopm_get_interface() will prevent any internal PM calls, even if
446it fails. (Exercise: Why?)
447
448The rules for locking order are:
449
450 Never acquire any device semaphore while holding any PM mutex.
451
452 Never acquire udev->pm_mutex while holding the PM mutex for
453 a device that isn't a descendant of udev.
454
455In other words, PM mutexes should only be acquired going up the device
456tree, and they should be acquired only after locking all the device
457semaphores you need to hold. These rules don't matter to drivers very
458much; they usually affect just the USB core.
459
460Still, drivers do need to be careful. For example, many drivers use a
461private mutex to synchronize their normal I/O activities with their
462disconnect method. Now if the driver supports autosuspend then it
463must call usb_autopm_put_interface() from somewhere -- maybe from its
464close method. It should make the call while holding the private mutex,
465since a driver shouldn't call any of the usb_autopm_* functions for an
466interface from which it has been unbound.
467
468But the usb_autpm_* routines always acquire the device's PM mutex, and
469consequently the locking order has to be: private mutex first, PM
470mutex second. Since the suspend method is always called with the PM
471mutex held, it mustn't try to acquire the private mutex. It has to
472synchronize with the driver's I/O activities in some other way.
473
474
475 Interaction between dynamic PM and system PM
476 --------------------------------------------
477
478Dynamic power management and system power management can interact in
479a couple of ways.
480
481Firstly, a device may already be manually suspended or autosuspended
482when a system suspend occurs. Since system suspends are supposed to
483be as transparent as possible, the device should remain suspended
484following the system resume. The 2.6.23 kernel obeys this principle
485for manually suspended devices but not for autosuspended devices; they
486do get resumed when the system wakes up. (Presumably they will be
487autosuspended again after their idle-delay time expires.) In later
488kernels this behavior will be fixed.
489
490(There is an exception. If a device would undergo a reset-resume
491instead of a normal resume, and the device is enabled for remote
492wakeup, then the reset-resume takes place even if the device was
493already suspended when the system suspend began. The justification is
494that a reset-resume is a kind of remote-wakeup event. Or to put it
495another way, a device which needs a reset won't be able to generate
496normal remote-wakeup signals, so it ought to be resumed immediately.)
497
498Secondly, a dynamic power-management event may occur as a system
499suspend is underway. The window for this is short, since system
500suspends don't take long (a few seconds usually), but it can happen.
501For example, a suspended device may send a remote-wakeup signal while
502the system is suspending. The remote wakeup may succeed, which would
503cause the system suspend to abort. If the remote wakeup doesn't
504succeed, it may still remain active and thus cause the system to
505resume as soon as the system suspend is complete. Or the remote
506wakeup may fail and get lost. Which outcome occurs depends on timing
507and on the hardware and firmware design.
508
509More interestingly, a device might undergo a manual resume or
510autoresume during system suspend. With current kernels this shouldn't
511happen, because manual resumes must be initiated by userspace and
512autoresumes happen in response to I/O requests, but all user processes
513and I/O should be quiescent during a system suspend -- thanks to the
514freezer. However there are plans to do away with the freezer, which
515would mean these things would become possible. If and when this comes
516about, the USB core will carefully arrange matters so that either type
517of resume will block until the entire system has resumed.
diff --git a/Documentation/usb/usb-serial.txt b/Documentation/usb/usb-serial.txt
index 5b635ae84944..4e0b62b8566f 100644
--- a/Documentation/usb/usb-serial.txt
+++ b/Documentation/usb/usb-serial.txt
@@ -428,6 +428,17 @@ Options supported:
428 See http://www.uuhaus.de/linux/palmconnect.html for up-to-date 428 See http://www.uuhaus.de/linux/palmconnect.html for up-to-date
429 information on this driver. 429 information on this driver.
430 430
431Winchiphead CH341 Driver
432
433 This driver is for the Winchiphead CH341 USB-RS232 Converter. This chip
434 also implements an IEEE 1284 parallel port, I2C and SPI, but that is not
435 supported by the driver. The protocol was analyzed from the behaviour
436 of the Windows driver, no datasheet is available at present.
437 The manufacturer's website: http://www.winchiphead.com/.
438 For any questions or problems with this driver, please contact
439 frank@kingswood-consulting.co.uk.
440
441
431Generic Serial driver 442Generic Serial driver
432 443
433 If your device is not one of the above listed devices, compatible with 444 If your device is not one of the above listed devices, compatible with
diff --git a/Documentation/usb/usbmon.txt b/Documentation/usb/usbmon.txt
index 53ae866ae37b..2917ce4ffdc4 100644
--- a/Documentation/usb/usbmon.txt
+++ b/Documentation/usb/usbmon.txt
@@ -34,9 +34,12 @@ if usbmon is built into the kernel.
34Verify that bus sockets are present. 34Verify that bus sockets are present.
35 35
36# ls /sys/kernel/debug/usbmon 36# ls /sys/kernel/debug/usbmon
371s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u 370s 0t 0u 1s 1t 1u 2s 2t 2u 3s 3t 3u 4s 4t 4u
38# 38#
39 39
40Now you can choose to either use the sockets numbered '0' (to capture packets on
41all buses), and skip to step #3, or find the bus used by your device with step #2.
42
402. Find which bus connects to the desired device 432. Find which bus connects to the desired device
41 44
42Run "cat /proc/bus/usb/devices", and find the T-line which corresponds to 45Run "cat /proc/bus/usb/devices", and find the T-line which corresponds to
@@ -56,6 +59,10 @@ Bus=03 means it's bus 3.
56 59
57# cat /sys/kernel/debug/usbmon/3u > /tmp/1.mon.out 60# cat /sys/kernel/debug/usbmon/3u > /tmp/1.mon.out
58 61
62to listen on a single bus, otherwise, to listen on all buses, type:
63
64# cat /sys/kernel/debug/usbmon/0u > /tmp/1.mon.out
65
59This process will be reading until killed. Naturally, the output can be 66This process will be reading until killed. Naturally, the output can be
60redirected to a desirable location. This is preferred, because it is going 67redirected to a desirable location. This is preferred, because it is going
61to be quite long. 68to be quite long.
diff --git a/Documentation/video4linux/CARDLIST.bttv b/Documentation/video4linux/CARDLIST.bttv
index 177159c5f4c4..d97cf7cc6088 100644
--- a/Documentation/video4linux/CARDLIST.bttv
+++ b/Documentation/video4linux/CARDLIST.bttv
@@ -147,3 +147,4 @@
147146 -> SSAI Ultrasound Video Interface [414a:5353] 147146 -> SSAI Ultrasound Video Interface [414a:5353]
148147 -> VoodooTV 200 (USA) [121a:3000] 148147 -> VoodooTV 200 (USA) [121a:3000]
149148 -> DViCO FusionHDTV 2 [dbc0:d200] 149148 -> DViCO FusionHDTV 2 [dbc0:d200]
150149 -> Typhoon TV-Tuner PCI (50684)
diff --git a/Documentation/video4linux/CARDLIST.cx23885 b/Documentation/video4linux/CARDLIST.cx23885
new file mode 100644
index 000000000000..00cb646a4bde
--- /dev/null
+++ b/Documentation/video4linux/CARDLIST.cx23885
@@ -0,0 +1,5 @@
1 0 -> UNKNOWN/GENERIC [0070:3400]
2 1 -> Hauppauge WinTV-HVR1800lp [0070:7600]
3 2 -> Hauppauge WinTV-HVR1800 [0070:7800,0070:7801]
4 3 -> Hauppauge WinTV-HVR1250 [0070:7911]
5 4 -> DViCO FusionHDTV5 Express [18ac:d500]
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134
index 3f8aeab50a10..a14545300e4c 100644
--- a/Documentation/video4linux/CARDLIST.saa7134
+++ b/Documentation/video4linux/CARDLIST.saa7134
@@ -88,11 +88,11 @@
88 87 -> ADS Instant TV Duo Cardbus PTV331 [0331:1421] 88 87 -> ADS Instant TV Duo Cardbus PTV331 [0331:1421]
89 88 -> Tevion/KWorld DVB-T 220RF [17de:7201] 89 88 -> Tevion/KWorld DVB-T 220RF [17de:7201]
90 89 -> ELSA EX-VISION 700TV [1048:226c] 90 89 -> ELSA EX-VISION 700TV [1048:226c]
91 90 -> Kworld ATSC110 [17de:7350] 91 90 -> Kworld ATSC110/115 [17de:7350,17de:7352]
92 91 -> AVerMedia A169 B [1461:7360] 92 91 -> AVerMedia A169 B [1461:7360]
93 92 -> AVerMedia A169 B1 [1461:6360] 93 92 -> AVerMedia A169 B1 [1461:6360]
94 93 -> Medion 7134 Bridge #2 [16be:0005] 94 93 -> Medion 7134 Bridge #2 [16be:0005]
95 94 -> LifeView FlyDVB-T Hybrid Cardbus [5168:3306,5168:3502] 95 94 -> LifeView FlyDVB-T Hybrid Cardbus/MSI TV @nywhere A/D NB [5168:3306,5168:3502,4e42:3502]
96 95 -> LifeView FlyVIDEO3000 (NTSC) [5169:0138] 96 95 -> LifeView FlyVIDEO3000 (NTSC) [5169:0138]
97 96 -> Medion Md8800 Quadro [16be:0007,16be:0008] 97 96 -> Medion Md8800 Quadro [16be:0007,16be:0008]
98 97 -> LifeView FlyDVB-S /Acorp TV134DS [5168:0300,4e42:0300] 98 97 -> LifeView FlyDVB-S /Acorp TV134DS [5168:0300,4e42:0300]
@@ -115,3 +115,4 @@
115114 -> KWorld DVB-T 210 [17de:7250] 115114 -> KWorld DVB-T 210 [17de:7250]
116115 -> Sabrent PCMCIA TV-PCB05 [0919:2003] 116115 -> Sabrent PCMCIA TV-PCB05 [0919:2003]
117116 -> 10MOONS TM300 TV Card [1131:2304] 117116 -> 10MOONS TM300 TV Card [1131:2304]
118117 -> Avermedia Super 007 [1461:f01d]
diff --git a/Documentation/video4linux/cx2341x/fw-encoder-api.txt b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
index 5dd3109a8b3f..5a27af2ee1c6 100644
--- a/Documentation/video4linux/cx2341x/fw-encoder-api.txt
+++ b/Documentation/video4linux/cx2341x/fw-encoder-api.txt
@@ -407,8 +407,10 @@ Description
407 u32 length; // Length of this frame 407 u32 length; // Length of this frame
408 u32 offset_low; // Offset in the file of the 408 u32 offset_low; // Offset in the file of the
409 u32 offset_high; // start of this frame 409 u32 offset_high; // start of this frame
410 u32 mask1; // Bits 0-1 are the type mask: 410 u32 mask1; // Bits 0-2 are the type mask:
411 // 1=I, 2=P, 4=B 411 // 1=I, 2=P, 4=B
412 // 0=End of Program Index, other fields
413 // are invalid.
412 u32 pts; // The PTS of the frame 414 u32 pts; // The PTS of the frame
413 u32 mask2; // Bit 0 is bit 32 of the pts. 415 u32 mask2; // Bit 0 is bit 32 of the pts.
414 }; 416 };
diff --git a/Documentation/vm/numa_memory_policy.txt b/Documentation/vm/numa_memory_policy.txt
new file mode 100644
index 000000000000..8242f52d0f22
--- /dev/null
+++ b/Documentation/vm/numa_memory_policy.txt
@@ -0,0 +1,332 @@
1
2What is Linux Memory Policy?
3
4In the Linux kernel, "memory policy" determines from which node the kernel will
5allocate memory in a NUMA system or in an emulated NUMA system. Linux has
6supported platforms with Non-Uniform Memory Access architectures since 2.4.?.
7The current memory policy support was added to Linux 2.6 around May 2004. This
8document attempts to describe the concepts and APIs of the 2.6 memory policy
9support.
10
11Memory policies should not be confused with cpusets (Documentation/cpusets.txt)
12which is an administrative mechanism for restricting the nodes from which
13memory may be allocated by a set of processes. Memory policies are a
14programming interface that a NUMA-aware application can take advantage of. When
15both cpusets and policies are applied to a task, the restrictions of the cpuset
16takes priority. See "MEMORY POLICIES AND CPUSETS" below for more details.
17
18MEMORY POLICY CONCEPTS
19
20Scope of Memory Policies
21
22The Linux kernel supports _scopes_ of memory policy, described here from
23most general to most specific:
24
25 System Default Policy: this policy is "hard coded" into the kernel. It
26 is the policy that governs all page allocations that aren't controlled
27 by one of the more specific policy scopes discussed below. When the
28 system is "up and running", the system default policy will use "local
29 allocation" described below. However, during boot up, the system
30 default policy will be set to interleave allocations across all nodes
31 with "sufficient" memory, so as not to overload the initial boot node
32 with boot-time allocations.
33
34 Task/Process Policy: this is an optional, per-task policy. When defined
35 for a specific task, this policy controls all page allocations made by or
36 on behalf of the task that aren't controlled by a more specific scope.
37 If a task does not define a task policy, then all page allocations that
38 would have been controlled by the task policy "fall back" to the System
39 Default Policy.
40
41 The task policy applies to the entire address space of a task. Thus,
42 it is inheritable, and indeed is inherited, across both fork()
43 [clone() w/o the CLONE_VM flag] and exec*(). This allows a parent task
44 to establish the task policy for a child task exec()'d from an
45 executable image that has no awareness of memory policy. See the
46 MEMORY POLICY APIS section, below, for an overview of the system call
47 that a task may use to set/change it's task/process policy.
48
49 In a multi-threaded task, task policies apply only to the thread
50 [Linux kernel task] that installs the policy and any threads
51 subsequently created by that thread. Any sibling threads existing
52 at the time a new task policy is installed retain their current
53 policy.
54
55 A task policy applies only to pages allocated after the policy is
56 installed. Any pages already faulted in by the task when the task
57 changes its task policy remain where they were allocated based on
58 the policy at the time they were allocated.
59
60 VMA Policy: A "VMA" or "Virtual Memory Area" refers to a range of a task's
61 virtual adddress space. A task may define a specific policy for a range
62 of its virtual address space. See the MEMORY POLICIES APIS section,
63 below, for an overview of the mbind() system call used to set a VMA
64 policy.
65
66 A VMA policy will govern the allocation of pages that back this region of
67 the address space. Any regions of the task's address space that don't
68 have an explicit VMA policy will fall back to the task policy, which may
69 itself fall back to the System Default Policy.
70
71 VMA policies have a few complicating details:
72
73 VMA policy applies ONLY to anonymous pages. These include pages
74 allocated for anonymous segments, such as the task stack and heap, and
75 any regions of the address space mmap()ed with the MAP_ANONYMOUS flag.
76 If a VMA policy is applied to a file mapping, it will be ignored if
77 the mapping used the MAP_SHARED flag. If the file mapping used the
78 MAP_PRIVATE flag, the VMA policy will only be applied when an
79 anonymous page is allocated on an attempt to write to the mapping--
80 i.e., at Copy-On-Write.
81
82 VMA policies are shared between all tasks that share a virtual address
83 space--a.k.a. threads--independent of when the policy is installed; and
84 they are inherited across fork(). However, because VMA policies refer
85 to a specific region of a task's address space, and because the address
86 space is discarded and recreated on exec*(), VMA policies are NOT
87 inheritable across exec(). Thus, only NUMA-aware applications may
88 use VMA policies.
89
90 A task may install a new VMA policy on a sub-range of a previously
91 mmap()ed region. When this happens, Linux splits the existing virtual
92 memory area into 2 or 3 VMAs, each with it's own policy.
93
94 By default, VMA policy applies only to pages allocated after the policy
95 is installed. Any pages already faulted into the VMA range remain
96 where they were allocated based on the policy at the time they were
97 allocated. However, since 2.6.16, Linux supports page migration via
98 the mbind() system call, so that page contents can be moved to match
99 a newly installed policy.
100
101 Shared Policy: Conceptually, shared policies apply to "memory objects"
102 mapped shared into one or more tasks' distinct address spaces. An
103 application installs a shared policies the same way as VMA policies--using
104 the mbind() system call specifying a range of virtual addresses that map
105 the shared object. However, unlike VMA policies, which can be considered
106 to be an attribute of a range of a task's address space, shared policies
107 apply directly to the shared object. Thus, all tasks that attach to the
108 object share the policy, and all pages allocated for the shared object,
109 by any task, will obey the shared policy.
110
111 As of 2.6.22, only shared memory segments, created by shmget() or
112 mmap(MAP_ANONYMOUS|MAP_SHARED), support shared policy. When shared
113 policy support was added to Linux, the associated data structures were
114 added to hugetlbfs shmem segments. At the time, hugetlbfs did not
115 support allocation at fault time--a.k.a lazy allocation--so hugetlbfs
116 shmem segments were never "hooked up" to the shared policy support.
117 Although hugetlbfs segments now support lazy allocation, their support
118 for shared policy has not been completed.
119
120 As mentioned above [re: VMA policies], allocations of page cache
121 pages for regular files mmap()ed with MAP_SHARED ignore any VMA
122 policy installed on the virtual address range backed by the shared
123 file mapping. Rather, shared page cache pages, including pages backing
124 private mappings that have not yet been written by the task, follow
125 task policy, if any, else System Default Policy.
126
127 The shared policy infrastructure supports different policies on subset
128 ranges of the shared object. However, Linux still splits the VMA of
129 the task that installs the policy for each range of distinct policy.
130 Thus, different tasks that attach to a shared memory segment can have
131 different VMA configurations mapping that one shared object. This
132 can be seen by examining the /proc/<pid>/numa_maps of tasks sharing
133 a shared memory region, when one task has installed shared policy on
134 one or more ranges of the region.
135
136Components of Memory Policies
137
138 A Linux memory policy is a tuple consisting of a "mode" and an optional set
139 of nodes. The mode determine the behavior of the policy, while the
140 optional set of nodes can be viewed as the arguments to the behavior.
141
142 Internally, memory policies are implemented by a reference counted
143 structure, struct mempolicy. Details of this structure will be discussed
144 in context, below, as required to explain the behavior.
145
146 Note: in some functions AND in the struct mempolicy itself, the mode
147 is called "policy". However, to avoid confusion with the policy tuple,
148 this document will continue to use the term "mode".
149
150 Linux memory policy supports the following 4 behavioral modes:
151
152 Default Mode--MPOL_DEFAULT: The behavior specified by this mode is
153 context or scope dependent.
154
155 As mentioned in the Policy Scope section above, during normal
156 system operation, the System Default Policy is hard coded to
157 contain the Default mode.
158
159 In this context, default mode means "local" allocation--that is
160 attempt to allocate the page from the node associated with the cpu
161 where the fault occurs. If the "local" node has no memory, or the
162 node's memory can be exhausted [no free pages available], local
163 allocation will "fallback to"--attempt to allocate pages from--
164 "nearby" nodes, in order of increasing "distance".
165
166 Implementation detail -- subject to change: "Fallback" uses
167 a per node list of sibling nodes--called zonelists--built at
168 boot time, or when nodes or memory are added or removed from
169 the system [memory hotplug]. These per node zonelist are
170 constructed with nodes in order of increasing distance based
171 on information provided by the platform firmware.
172
173 When a task/process policy or a shared policy contains the Default
174 mode, this also means "local allocation", as described above.
175
176 In the context of a VMA, Default mode means "fall back to task
177 policy"--which may or may not specify Default mode. Thus, Default
178 mode can not be counted on to mean local allocation when used
179 on a non-shared region of the address space. However, see
180 MPOL_PREFERRED below.
181
182 The Default mode does not use the optional set of nodes.
183
184 MPOL_BIND: This mode specifies that memory must come from the
185 set of nodes specified by the policy.
186
187 The memory policy APIs do not specify an order in which the nodes
188 will be searched. However, unlike "local allocation", the Bind
189 policy does not consider the distance between the nodes. Rather,
190 allocations will fallback to the nodes specified by the policy in
191 order of numeric node id. Like everything in Linux, this is subject
192 to change.
193
194 MPOL_PREFERRED: This mode specifies that the allocation should be
195 attempted from the single node specified in the policy. If that
196 allocation fails, the kernel will search other nodes, exactly as
197 it would for a local allocation that started at the preferred node
198 in increasing distance from the preferred node. "Local" allocation
199 policy can be viewed as a Preferred policy that starts at the node
200 containing the cpu where the allocation takes place.
201
202 Internally, the Preferred policy uses a single node--the
203 preferred_node member of struct mempolicy. A "distinguished
204 value of this preferred_node, currently '-1', is interpreted
205 as "the node containing the cpu where the allocation takes
206 place"--local allocation. This is the way to specify
207 local allocation for a specific range of addresses--i.e. for
208 VMA policies.
209
210 MPOL_INTERLEAVED: This mode specifies that page allocations be
211 interleaved, on a page granularity, across the nodes specified in
212 the policy. This mode also behaves slightly differently, based on
213 the context where it is used:
214
215 For allocation of anonymous pages and shared memory pages,
216 Interleave mode indexes the set of nodes specified by the policy
217 using the page offset of the faulting address into the segment
218 [VMA] containing the address modulo the number of nodes specified
219 by the policy. It then attempts to allocate a page, starting at
220 the selected node, as if the node had been specified by a Preferred
221 policy or had been selected by a local allocation. That is,
222 allocation will follow the per node zonelist.
223
224 For allocation of page cache pages, Interleave mode indexes the set
225 of nodes specified by the policy using a node counter maintained
226 per task. This counter wraps around to the lowest specified node
227 after it reaches the highest specified node. This will tend to
228 spread the pages out over the nodes specified by the policy based
229 on the order in which they are allocated, rather than based on any
230 page offset into an address range or file. During system boot up,
231 the temporary interleaved system default policy works in this
232 mode.
233
234MEMORY POLICY APIs
235
236Linux supports 3 system calls for controlling memory policy. These APIS
237always affect only the calling task, the calling task's address space, or
238some shared object mapped into the calling task's address space.
239
240 Note: the headers that define these APIs and the parameter data types
241 for user space applications reside in a package that is not part of
242 the Linux kernel. The kernel system call interfaces, with the 'sys_'
243 prefix, are defined in <linux/syscalls.h>; the mode and flag
244 definitions are defined in <linux/mempolicy.h>.
245
246Set [Task] Memory Policy:
247
248 long set_mempolicy(int mode, const unsigned long *nmask,
249 unsigned long maxnode);
250
251 Set's the calling task's "task/process memory policy" to mode
252 specified by the 'mode' argument and the set of nodes defined
253 by 'nmask'. 'nmask' points to a bit mask of node ids containing
254 at least 'maxnode' ids.
255
256 See the set_mempolicy(2) man page for more details
257
258
259Get [Task] Memory Policy or Related Information
260
261 long get_mempolicy(int *mode,
262 const unsigned long *nmask, unsigned long maxnode,
263 void *addr, int flags);
264
265 Queries the "task/process memory policy" of the calling task, or
266 the policy or location of a specified virtual address, depending
267 on the 'flags' argument.
268
269 See the get_mempolicy(2) man page for more details
270
271
272Install VMA/Shared Policy for a Range of Task's Address Space
273
274 long mbind(void *start, unsigned long len, int mode,
275 const unsigned long *nmask, unsigned long maxnode,
276 unsigned flags);
277
278 mbind() installs the policy specified by (mode, nmask, maxnodes) as
279 a VMA policy for the range of the calling task's address space
280 specified by the 'start' and 'len' arguments. Additional actions
281 may be requested via the 'flags' argument.
282
283 See the mbind(2) man page for more details.
284
285MEMORY POLICY COMMAND LINE INTERFACE
286
287Although not strictly part of the Linux implementation of memory policy,
288a command line tool, numactl(8), exists that allows one to:
289
290+ set the task policy for a specified program via set_mempolicy(2), fork(2) and
291 exec(2)
292
293+ set the shared policy for a shared memory segment via mbind(2)
294
295The numactl(8) tool is packages with the run-time version of the library
296containing the memory policy system call wrappers. Some distributions
297package the headers and compile-time libraries in a separate development
298package.
299
300
301MEMORY POLICIES AND CPUSETS
302
303Memory policies work within cpusets as described above. For memory policies
304that require a node or set of nodes, the nodes are restricted to the set of
305nodes whose memories are allowed by the cpuset constraints. If the
306intersection of the set of nodes specified for the policy and the set of nodes
307allowed by the cpuset is the empty set, the policy is considered invalid and
308cannot be installed.
309
310The interaction of memory policies and cpusets can be problematic for a
311couple of reasons:
312
3131) the memory policy APIs take physical node id's as arguments. However, the
314 memory policy APIs do not provide a way to determine what nodes are valid
315 in the context where the application is running. An application MAY consult
316 the cpuset file system [directly or via an out of tree, and not generally
317 available, libcpuset API] to obtain this information, but then the
318 application must be aware that it is running in a cpuset and use what are
319 intended primarily as administrative APIs.
320
321 However, as long as the policy specifies at least one node that is valid
322 in the controlling cpuset, the policy can be used.
323
3242) when tasks in two cpusets share access to a memory region, such as shared
325 memory segments created by shmget() of mmap() with the MAP_ANONYMOUS and
326 MAP_SHARED flags, and any of the tasks install shared policy on the region,
327 only nodes whose memories are allowed in both cpusets may be used in the
328 policies. Again, obtaining this information requires "stepping outside"
329 the memory policy APIs, as well as knowing in what cpusets other task might
330 be attaching to the shared region, to use the cpuset information.
331 Furthermore, if the cpusets' allowed memory sets are disjoint, "local"
332 allocation is the only valid policy.
diff --git a/Documentation/watchdog/00-INDEX b/Documentation/watchdog/00-INDEX
new file mode 100644
index 000000000000..c3ea47e507fe
--- /dev/null
+++ b/Documentation/watchdog/00-INDEX
@@ -0,0 +1,10 @@
100-INDEX
2 - this file.
3pcwd-watchdog.txt
4 - documentation for Berkshire Products PC Watchdog ISA cards.
5src/
6 - directory holding watchdog related example programs.
7watchdog-api.txt
8 - description of the Linux Watchdog driver API.
9wdt.txt
10 - description of the Watchdog Timer Interfaces for Linux.