aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/DocBook/Makefile2
-rw-r--r--Documentation/DocBook/kernel-api.tmpl1
-rw-r--r--Documentation/acpi-hotkey.txt2
-rw-r--r--Documentation/feature-removal-schedule.txt19
-rw-r--r--Documentation/fujitsu/frv/kernel-ABI.txt192
-rw-r--r--Documentation/input/joystick-parport.txt11
-rw-r--r--Documentation/kernel-parameters.txt34
-rw-r--r--Documentation/leds-class.txt71
-rw-r--r--Documentation/memory-barriers.txt1913
-rw-r--r--Documentation/networking/packet_mmap.txt2
-rw-r--r--Documentation/networking/tuntap.txt2
-rw-r--r--Documentation/pcmcia/driver-changes.txt6
-rw-r--r--Documentation/sound/alsa/ALSA-Configuration.txt69
-rw-r--r--Documentation/video4linux/CARDLIST.saa71345
-rw-r--r--Documentation/video4linux/et61x251.txt (renamed from Documentation/usb/et61x251.txt)0
-rw-r--r--Documentation/video4linux/ibmcam.txt (renamed from Documentation/usb/ibmcam.txt)2
-rw-r--r--Documentation/video4linux/ov511.txt (renamed from Documentation/usb/ov511.txt)11
-rw-r--r--Documentation/video4linux/se401.txt (renamed from Documentation/usb/se401.txt)0
-rw-r--r--Documentation/video4linux/sn9c102.txt (renamed from Documentation/usb/sn9c102.txt)16
-rw-r--r--Documentation/video4linux/stv680.txt (renamed from Documentation/usb/stv680.txt)26
-rw-r--r--Documentation/video4linux/w9968cf.txt (renamed from Documentation/usb/w9968cf.txt)36
-rw-r--r--Documentation/video4linux/zc0301.txt (renamed from Documentation/usb/zc0301.txt)0
22 files changed, 2252 insertions, 168 deletions
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index 7d87dd73cbe4..5a2882d275ba 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -2,7 +2,7 @@
2# This makefile is used to generate the kernel documentation, 2# This makefile is used to generate the kernel documentation,
3# primarily based on in-line comments in various source files. 3# primarily based on in-line comments in various source files.
4# See Documentation/kernel-doc-nano-HOWTO.txt for instruction in how 4# See Documentation/kernel-doc-nano-HOWTO.txt for instruction in how
5# to ducument the SRC - and how to read it. 5# to document the SRC - and how to read it.
6# To add a new book the only step required is to add the book to the 6# To add a new book the only step required is to add the book to the
7# list of DOCBOOKS. 7# list of DOCBOOKS.
8 8
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl
index 8c9c6704e85b..ca02e04a906c 100644
--- a/Documentation/DocBook/kernel-api.tmpl
+++ b/Documentation/DocBook/kernel-api.tmpl
@@ -322,7 +322,6 @@ X!Earch/i386/kernel/mca.c
322 <chapter id="sysfs"> 322 <chapter id="sysfs">
323 <title>The Filesystem for Exporting Kernel Objects</title> 323 <title>The Filesystem for Exporting Kernel Objects</title>
324!Efs/sysfs/file.c 324!Efs/sysfs/file.c
325!Efs/sysfs/dir.c
326!Efs/sysfs/symlink.c 325!Efs/sysfs/symlink.c
327!Efs/sysfs/bin.c 326!Efs/sysfs/bin.c
328 </chapter> 327 </chapter>
diff --git a/Documentation/acpi-hotkey.txt b/Documentation/acpi-hotkey.txt
index 744f1aec6553..38040fa37649 100644
--- a/Documentation/acpi-hotkey.txt
+++ b/Documentation/acpi-hotkey.txt
@@ -30,7 +30,7 @@ specific hotkey(event))
30echo "event_num:event_type:event_argument" > 30echo "event_num:event_type:event_argument" >
31 /proc/acpi/hotkey/action. 31 /proc/acpi/hotkey/action.
32The result of the execution of this aml method is 32The result of the execution of this aml method is
33attached to /proc/acpi/hotkey/poll_method, which is dnyamically 33attached to /proc/acpi/hotkey/poll_method, which is dynamically
34created. Please use command "cat /proc/acpi/hotkey/polling_method" 34created. Please use command "cat /proc/acpi/hotkey/polling_method"
35to retrieve it. 35to retrieve it.
36 36
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 495858b236b6..59d0c74c79c9 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -127,13 +127,6 @@ Who: Christoph Hellwig <hch@lst.de>
127 127
128--------------------------- 128---------------------------
129 129
130What: EXPORT_SYMBOL(lookup_hash)
131When: January 2006
132Why: Too low-level interface. Use lookup_one_len or lookup_create instead.
133Who: Christoph Hellwig <hch@lst.de>
134
135---------------------------
136
137What: CONFIG_FORCED_INLINING 130What: CONFIG_FORCED_INLINING
138When: June 2006 131When: June 2006
139Why: Config option is there to see if gcc is good enough. (in january 132Why: Config option is there to see if gcc is good enough. (in january
@@ -241,3 +234,15 @@ Why: The USB subsystem has changed a lot over time, and it has been
241Who: Greg Kroah-Hartman <gregkh@suse.de> 234Who: Greg Kroah-Hartman <gregkh@suse.de>
242 235
243--------------------------- 236---------------------------
237
238What: find_trylock_page
239When: January 2007
240Why: The interface no longer has any callers left in the kernel. It
241 is an odd interface (compared with other find_*_page functions), in
242 that it does not take a refcount to the page, only the page lock.
243 It should be replaced with find_get_page or find_lock_page if possible.
244 This feature removal can be reevaluated if users of the interface
245 cannot cleanly use something else.
246Who: Nick Piggin <npiggin@suse.de>
247
248---------------------------
diff --git a/Documentation/fujitsu/frv/kernel-ABI.txt b/Documentation/fujitsu/frv/kernel-ABI.txt
index 0ed9b0a779bc..8b0a5fc8bfd9 100644
--- a/Documentation/fujitsu/frv/kernel-ABI.txt
+++ b/Documentation/fujitsu/frv/kernel-ABI.txt
@@ -1,17 +1,19 @@
1 ================================= 1 =================================
2 INTERNAL KERNEL ABI FOR FR-V ARCH 2 INTERNAL KERNEL ABI FOR FR-V ARCH
3 ================================= 3 =================================
4 4
5The internal FRV kernel ABI is not quite the same as the userspace ABI. A number of the registers 5The internal FRV kernel ABI is not quite the same as the userspace ABI. A
6are used for special purposed, and the ABI is not consistent between modules vs core, and MMU vs 6number of the registers are used for special purposed, and the ABI is not
7no-MMU. 7consistent between modules vs core, and MMU vs no-MMU.
8 8
9This partly stems from the fact that FRV CPUs do not have a separate supervisor stack pointer, and 9This partly stems from the fact that FRV CPUs do not have a separate
10most of them do not have any scratch registers, thus requiring at least one general purpose 10supervisor stack pointer, and most of them do not have any scratch
11register to be clobbered in such an event. Also, within the kernel core, it is possible to simply 11registers, thus requiring at least one general purpose register to be
12jump or call directly between functions using a relative offset. This cannot be extended to modules 12clobbered in such an event. Also, within the kernel core, it is possible to
13for the displacement is likely to be too far. Thus in modules the address of a function to call 13simply jump or call directly between functions using a relative offset.
14must be calculated in a register and then used, requiring two extra instructions. 14This cannot be extended to modules for the displacement is likely to be too
15far. Thus in modules the address of a function to call must be calculated
16in a register and then used, requiring two extra instructions.
15 17
16This document has the following sections: 18This document has the following sections:
17 19
@@ -39,7 +41,8 @@ When a system call is made, the following registers are effective:
39CPU OPERATING MODES 41CPU OPERATING MODES
40=================== 42===================
41 43
42The FR-V CPU has three basic operating modes. In order of increasing capability: 44The FR-V CPU has three basic operating modes. In order of increasing
45capability:
43 46
44 (1) User mode. 47 (1) User mode.
45 48
@@ -47,42 +50,46 @@ The FR-V CPU has three basic operating modes. In order of increasing capability:
47 50
48 (2) Kernel mode. 51 (2) Kernel mode.
49 52
50 Normal kernel mode. There are many additional control registers available that may be 53 Normal kernel mode. There are many additional control registers
51 accessed in this mode, in addition to all the stuff available to user mode. This has two 54 available that may be accessed in this mode, in addition to all the
52 submodes: 55 stuff available to user mode. This has two submodes:
53 56
54 (a) Exceptions enabled (PSR.T == 1). 57 (a) Exceptions enabled (PSR.T == 1).
55 58
56 Exceptions will invoke the appropriate normal kernel mode handler. On entry to the 59 Exceptions will invoke the appropriate normal kernel mode
57 handler, the PSR.T bit will be cleared. 60 handler. On entry to the handler, the PSR.T bit will be cleared.
58 61
59 (b) Exceptions disabled (PSR.T == 0). 62 (b) Exceptions disabled (PSR.T == 0).
60 63
61 No exceptions or interrupts may happen. Any mandatory exceptions will cause the CPU to 64 No exceptions or interrupts may happen. Any mandatory exceptions
62 halt unless the CPU is told to jump into debug mode instead. 65 will cause the CPU to halt unless the CPU is told to jump into
66 debug mode instead.
63 67
64 (3) Debug mode. 68 (3) Debug mode.
65 69
66 No exceptions may happen in this mode. Memory protection and management exceptions will be 70 No exceptions may happen in this mode. Memory protection and
67 flagged for later consideration, but the exception handler won't be invoked. Debugging traps 71 management exceptions will be flagged for later consideration, but
68 such as hardware breakpoints and watchpoints will be ignored. This mode is entered only by 72 the exception handler won't be invoked. Debugging traps such as
69 debugging events obtained from the other two modes. 73 hardware breakpoints and watchpoints will be ignored. This mode is
74 entered only by debugging events obtained from the other two modes.
70 75
71 All kernel mode registers may be accessed, plus a few extra debugging specific registers. 76 All kernel mode registers may be accessed, plus a few extra debugging
77 specific registers.
72 78
73 79
74================================= 80=================================
75INTERNAL KERNEL-MODE REGISTER ABI 81INTERNAL KERNEL-MODE REGISTER ABI
76================================= 82=================================
77 83
78There are a number of permanent register assignments that are set up by entry.S in the exception 84There are a number of permanent register assignments that are set up by
79prologue. Note that there is a complete set of exception prologues for each of user->kernel 85entry.S in the exception prologue. Note that there is a complete set of
80transition and kernel->kernel transition. There are also user->debug and kernel->debug mode 86exception prologues for each of user->kernel transition and kernel->kernel
81transition prologues. 87transition. There are also user->debug and kernel->debug mode transition
88prologues.
82 89
83 90
84 REGISTER FLAVOUR USE 91 REGISTER FLAVOUR USE
85 =============== ======= ==================================================== 92 =============== ======= ==============================================
86 GR1 Supervisor stack pointer 93 GR1 Supervisor stack pointer
87 GR15 Current thread info pointer 94 GR15 Current thread info pointer
88 GR16 GP-Rel base register for small data 95 GR16 GP-Rel base register for small data
@@ -92,10 +99,12 @@ transition prologues.
92 GR31 NOMMU Destroyed by debug mode entry 99 GR31 NOMMU Destroyed by debug mode entry
93 GR31 MMU Destroyed by TLB miss kernel mode entry 100 GR31 MMU Destroyed by TLB miss kernel mode entry
94 CCR.ICC2 Virtual interrupt disablement tracking 101 CCR.ICC2 Virtual interrupt disablement tracking
95 CCCR.CC3 Cleared by exception prologue (atomic op emulation) 102 CCCR.CC3 Cleared by exception prologue
103 (atomic op emulation)
96 SCR0 MMU See mmu-layout.txt. 104 SCR0 MMU See mmu-layout.txt.
97 SCR1 MMU See mmu-layout.txt. 105 SCR1 MMU See mmu-layout.txt.
98 SCR2 MMU Save for EAR0 (destroyed by icache insns in debug mode) 106 SCR2 MMU Save for EAR0 (destroyed by icache insns
107 in debug mode)
99 SCR3 MMU Save for GR31 during debug exceptions 108 SCR3 MMU Save for GR31 during debug exceptions
100 DAMR/IAMR NOMMU Fixed memory protection layout. 109 DAMR/IAMR NOMMU Fixed memory protection layout.
101 DAMR/IAMR MMU See mmu-layout.txt. 110 DAMR/IAMR MMU See mmu-layout.txt.
@@ -104,18 +113,21 @@ transition prologues.
104Certain registers are also used or modified across function calls: 113Certain registers are also used or modified across function calls:
105 114
106 REGISTER CALL RETURN 115 REGISTER CALL RETURN
107 =============== =============================== =============================== 116 =============== =============================== ======================
108 GR0 Fixed Zero - 117 GR0 Fixed Zero -
109 GR2 Function call frame pointer 118 GR2 Function call frame pointer
110 GR3 Special Preserved 119 GR3 Special Preserved
111 GR3-GR7 - Clobbered 120 GR3-GR7 - Clobbered
112 GR8 Function call arg #1 Return value (or clobbered) 121 GR8 Function call arg #1 Return value
113 GR9 Function call arg #2 Return value MSW (or clobbered) 122 (or clobbered)
123 GR9 Function call arg #2 Return value MSW
124 (or clobbered)
114 GR10-GR13 Function call arg #3-#6 Clobbered 125 GR10-GR13 Function call arg #3-#6 Clobbered
115 GR14 - Clobbered 126 GR14 - Clobbered
116 GR15-GR16 Special Preserved 127 GR15-GR16 Special Preserved
117 GR17-GR27 - Preserved 128 GR17-GR27 - Preserved
118 GR28-GR31 Special Only accessed explicitly 129 GR28-GR31 Special Only accessed
130 explicitly
119 LR Return address after CALL Clobbered 131 LR Return address after CALL Clobbered
120 CCR/CCCR - Mostly Clobbered 132 CCR/CCCR - Mostly Clobbered
121 133
@@ -124,46 +136,53 @@ Certain registers are also used or modified across function calls:
124INTERNAL DEBUG-MODE REGISTER ABI 136INTERNAL DEBUG-MODE REGISTER ABI
125================================ 137================================
126 138
127This is the same as the kernel-mode register ABI for functions calls. The difference is that in 139This is the same as the kernel-mode register ABI for functions calls. The
128debug-mode there's a different stack and a different exception frame. Almost all the global 140difference is that in debug-mode there's a different stack and a different
129registers from kernel-mode (including the stack pointer) may be changed. 141exception frame. Almost all the global registers from kernel-mode
142(including the stack pointer) may be changed.
130 143
131 REGISTER FLAVOUR USE 144 REGISTER FLAVOUR USE
132 =============== ======= ==================================================== 145 =============== ======= ==============================================
133 GR1 Debug stack pointer 146 GR1 Debug stack pointer
134 GR16 GP-Rel base register for small data 147 GR16 GP-Rel base register for small data
135 GR31 Current debug exception frame pointer (__debug_frame) 148 GR31 Current debug exception frame pointer
149 (__debug_frame)
136 SCR3 MMU Saved value of GR31 150 SCR3 MMU Saved value of GR31
137 151
138 152
139Note that debug mode is able to interfere with the kernel's emulated atomic ops, so it must be 153Note that debug mode is able to interfere with the kernel's emulated atomic
140exceedingly careful not to do any that would interact with the main kernel in this regard. Hence 154ops, so it must be exceedingly careful not to do any that would interact
141the debug mode code (gdbstub) is almost completely self-contained. The only external code used is 155with the main kernel in this regard. Hence the debug mode code (gdbstub) is
142the sprintf family of functions. 156almost completely self-contained. The only external code used is the
157sprintf family of functions.
143 158
144Futhermore, break.S is so complicated because single-step mode does not switch off on entry to an 159Futhermore, break.S is so complicated because single-step mode does not
145exception. That means unless manually disabled, single-stepping will blithely go on stepping into 160switch off on entry to an exception. That means unless manually disabled,
146things like interrupts. See gdbstub.txt for more information. 161single-stepping will blithely go on stepping into things like interrupts.
162See gdbstub.txt for more information.
147 163
148 164
149========================== 165==========================
150VIRTUAL INTERRUPT HANDLING 166VIRTUAL INTERRUPT HANDLING
151========================== 167==========================
152 168
153Because accesses to the PSR is so slow, and to disable interrupts we have to access it twice (once 169Because accesses to the PSR is so slow, and to disable interrupts we have
154to read and once to write), we don't actually disable interrupts at all if we don't have to. What 170to access it twice (once to read and once to write), we don't actually
155we do instead is use the ICC2 condition code flags to note virtual disablement, such that if we 171disable interrupts at all if we don't have to. What we do instead is use
156then do take an interrupt, we note the flag, really disable interrupts, set another flag and resume 172the ICC2 condition code flags to note virtual disablement, such that if we
157execution at the point the interrupt happened. Setting condition flags as a side effect of an 173then do take an interrupt, we note the flag, really disable interrupts, set
158arithmetic or logical instruction is really fast. This use of the ICC2 only occurs within the 174another flag and resume execution at the point the interrupt happened.
175Setting condition flags as a side effect of an arithmetic or logical
176instruction is really fast. This use of the ICC2 only occurs within the
159kernel - it does not affect userspace. 177kernel - it does not affect userspace.
160 178
161The flags we use are: 179The flags we use are:
162 180
163 (*) CCR.ICC2.Z [Zero flag] 181 (*) CCR.ICC2.Z [Zero flag]
164 182
165 Set to virtually disable interrupts, clear when interrupts are virtually enabled. Can be 183 Set to virtually disable interrupts, clear when interrupts are
166 modified by logical instructions without affecting the Carry flag. 184 virtually enabled. Can be modified by logical instructions without
185 affecting the Carry flag.
167 186
168 (*) CCR.ICC2.C [Carry flag] 187 (*) CCR.ICC2.C [Carry flag]
169 188
@@ -176,8 +195,9 @@ What happens is this:
176 195
177 ICC2.Z is 0, ICC2.C is 1. 196 ICC2.Z is 0, ICC2.C is 1.
178 197
179 (2) An interrupt occurs. The exception prologue examines ICC2.Z and determines that nothing needs 198 (2) An interrupt occurs. The exception prologue examines ICC2.Z and
180 doing. This is done simply with an unlikely BEQ instruction. 199 determines that nothing needs doing. This is done simply with an
200 unlikely BEQ instruction.
181 201
182 (3) The interrupts are disabled (local_irq_disable) 202 (3) The interrupts are disabled (local_irq_disable)
183 203
@@ -187,48 +207,56 @@ What happens is this:
187 207
188 ICC2.Z would be set to 0. 208 ICC2.Z would be set to 0.
189 209
190 A TIHI #2 instruction (trap #2 if condition HI - Z==0 && C==0) would be used to trap if 210 A TIHI #2 instruction (trap #2 if condition HI - Z==0 && C==0) would
191 interrupts were now virtually enabled, but physically disabled - which they're not, so the 211 be used to trap if interrupts were now virtually enabled, but
192 trap isn't taken. The kernel would then be back to state (1). 212 physically disabled - which they're not, so the trap isn't taken. The
213 kernel would then be back to state (1).
193 214
194 (5) An interrupt occurs. The exception prologue examines ICC2.Z and determines that the interrupt 215 (5) An interrupt occurs. The exception prologue examines ICC2.Z and
195 shouldn't actually have happened. It jumps aside, and there disabled interrupts by setting 216 determines that the interrupt shouldn't actually have happened. It
196 PSR.PIL to 14 and then it clears ICC2.C. 217 jumps aside, and there disabled interrupts by setting PSR.PIL to 14
218 and then it clears ICC2.C.
197 219
198 (6) If interrupts were then saved and disabled again (local_irq_save): 220 (6) If interrupts were then saved and disabled again (local_irq_save):
199 221
200 ICC2.Z would be shifted into the save variable and masked off (giving a 1). 222 ICC2.Z would be shifted into the save variable and masked off
223 (giving a 1).
201 224
202 ICC2.Z would then be set to 1 (thus unchanged), and ICC2.C would be unaffected (ie: 0). 225 ICC2.Z would then be set to 1 (thus unchanged), and ICC2.C would be
226 unaffected (ie: 0).
203 227
204 (7) If interrupts were then restored from state (6) (local_irq_restore): 228 (7) If interrupts were then restored from state (6) (local_irq_restore):
205 229
206 ICC2.Z would be set to indicate the result of XOR'ing the saved value (ie: 1) with 1, which 230 ICC2.Z would be set to indicate the result of XOR'ing the saved
207 gives a result of 0 - thus leaving ICC2.Z set. 231 value (ie: 1) with 1, which gives a result of 0 - thus leaving
232 ICC2.Z set.
208 233
209 ICC2.C would remain unaffected (ie: 0). 234 ICC2.C would remain unaffected (ie: 0).
210 235
211 A TIHI #2 instruction would be used to again assay the current state, but this would do 236 A TIHI #2 instruction would be used to again assay the current state,
212 nothing as Z==1. 237 but this would do nothing as Z==1.
213 238
214 (8) If interrupts were then enabled (local_irq_enable): 239 (8) If interrupts were then enabled (local_irq_enable):
215 240
216 ICC2.Z would be cleared. ICC2.C would be left unaffected. Both flags would now be 0. 241 ICC2.Z would be cleared. ICC2.C would be left unaffected. Both
242 flags would now be 0.
217 243
218 A TIHI #2 instruction again issued to assay the current state would then trap as both Z==0 244 A TIHI #2 instruction again issued to assay the current state would
219 [interrupts virtually enabled] and C==0 [interrupts really disabled] would then be true. 245 then trap as both Z==0 [interrupts virtually enabled] and C==0
246 [interrupts really disabled] would then be true.
220 247
221 (9) The trap #2 handler would simply enable hardware interrupts (set PSR.PIL to 0), set ICC2.C to 248 (9) The trap #2 handler would simply enable hardware interrupts
222 1 and return. 249 (set PSR.PIL to 0), set ICC2.C to 1 and return.
223 250
224(10) Immediately upon returning, the pending interrupt would be taken. 251(10) Immediately upon returning, the pending interrupt would be taken.
225 252
226(11) The interrupt handler would take the path of actually processing the interrupt (ICC2.Z is 253(11) The interrupt handler would take the path of actually processing the
227 clear, BEQ fails as per step (2)). 254 interrupt (ICC2.Z is clear, BEQ fails as per step (2)).
228 255
229(12) The interrupt handler would then set ICC2.C to 1 since hardware interrupts are definitely 256(12) The interrupt handler would then set ICC2.C to 1 since hardware
230 enabled - or else the kernel wouldn't be here. 257 interrupts are definitely enabled - or else the kernel wouldn't be here.
231 258
232(13) On return from the interrupt handler, things would be back to state (1). 259(13) On return from the interrupt handler, things would be back to state (1).
233 260
234This trap (#2) is only available in kernel mode. In user mode it will result in SIGILL. 261This trap (#2) is only available in kernel mode. In user mode it will
262result in SIGILL.
diff --git a/Documentation/input/joystick-parport.txt b/Documentation/input/joystick-parport.txt
index 88a011c9f985..d537c48cc6d0 100644
--- a/Documentation/input/joystick-parport.txt
+++ b/Documentation/input/joystick-parport.txt
@@ -36,12 +36,12 @@ with them.
36 36
37 All NES and SNES use the same synchronous serial protocol, clocked from 37 All NES and SNES use the same synchronous serial protocol, clocked from
38the computer's side (and thus timing insensitive). To allow up to 5 NES 38the computer's side (and thus timing insensitive). To allow up to 5 NES
39and/or SNES gamepads connected to the parallel port at once, the output 39and/or SNES gamepads and/or SNES mice connected to the parallel port at once,
40lines of the parallel port are shared, while one of 5 available input lines 40the output lines of the parallel port are shared, while one of 5 available
41is assigned to each gamepad. 41input lines is assigned to each gamepad.
42 42
43 This protocol is handled by the gamecon.c driver, so that's the one 43 This protocol is handled by the gamecon.c driver, so that's the one
44you'll use for NES and SNES gamepads. 44you'll use for NES, SNES gamepads and SNES mice.
45 45
46 The main problem with PC parallel ports is that they don't have +5V power 46 The main problem with PC parallel ports is that they don't have +5V power
47source on any of their pins. So, if you want a reliable source of power 47source on any of their pins. So, if you want a reliable source of power
@@ -106,7 +106,7 @@ A, Turbo B, Select and Start, and is connected through 5 wires, then it is
106either a NES or NES clone and will work with this connection. SNES gamepads 106either a NES or NES clone and will work with this connection. SNES gamepads
107also use 5 wires, but have more buttons. They will work as well, of course. 107also use 5 wires, but have more buttons. They will work as well, of course.
108 108
109Pinout for NES gamepads Pinout for SNES gamepads 109Pinout for NES gamepads Pinout for SNES gamepads and mice
110 110
111 +----> Power +-----------------------\ 111 +----> Power +-----------------------\
112 | 7 | o o o o | x x o | 1 112 | 7 | o o o o | x x o | 1
@@ -454,6 +454,7 @@ uses the following kernel/module command line:
454 6 | N64 pad 454 6 | N64 pad
455 7 | Sony PSX controller 455 7 | Sony PSX controller
456 8 | Sony PSX DDR controller 456 8 | Sony PSX DDR controller
457 9 | SNES mouse
457 458
458 The exact type of the PSX controller type is autoprobed when used so 459 The exact type of the PSX controller type is autoprobed when used so
459hot swapping should work (but is not recomended). 460hot swapping should work (but is not recomended).
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index f8cb55c30b0f..b3a6187e5305 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1,4 +1,4 @@
1February 2003 Kernel Parameters v2.5.59 1 Kernel Parameters
2 ~~~~~~~~~~~~~~~~~ 2 ~~~~~~~~~~~~~~~~~
3 3
4The following is a consolidated list of the kernel parameters as implemented 4The following is a consolidated list of the kernel parameters as implemented
@@ -17,9 +17,17 @@ are specified on the kernel command line with the module name plus
17 17
18 usbcore.blinkenlights=1 18 usbcore.blinkenlights=1
19 19
20The text in square brackets at the beginning of the description states the 20This document may not be entirely up to date and comprehensive. The command
21restrictions on the kernel for the said kernel parameter to be valid. The 21"modinfo -p ${modulename}" shows a current list of all parameters of a loadable
22restrictions referred to are that the relevant option is valid if: 22module. Loadable modules, after being loaded into the running kernel, also
23reveal their parameters in /sys/module/${modulename}/parameters/. Some of these
24parameters may be changed at runtime by the command
25"echo -n ${value} > /sys/module/${modulename}/parameters/${parm}".
26
27The parameters listed below are only valid if certain kernel build options were
28enabled and if respective hardware is present. The text in square brackets at
29the beginning of each description states the restrictions within which a
30parameter is applicable:
23 31
24 ACPI ACPI support is enabled. 32 ACPI ACPI support is enabled.
25 ALSA ALSA sound support is enabled. 33 ALSA ALSA sound support is enabled.
@@ -1046,10 +1054,10 @@ running once the system is up.
1046 noltlbs [PPC] Do not use large page/tlb entries for kernel 1054 noltlbs [PPC] Do not use large page/tlb entries for kernel
1047 lowmem mapping on PPC40x. 1055 lowmem mapping on PPC40x.
1048 1056
1049 nomce [IA-32] Machine Check Exception
1050
1051 nomca [IA-64] Disable machine check abort handling 1057 nomca [IA-64] Disable machine check abort handling
1052 1058
1059 nomce [IA-32] Machine Check Exception
1060
1053 noresidual [PPC] Don't use residual data on PReP machines. 1061 noresidual [PPC] Don't use residual data on PReP machines.
1054 1062
1055 noresume [SWSUSP] Disables resume and restores original swap 1063 noresume [SWSUSP] Disables resume and restores original swap
@@ -1682,20 +1690,6 @@ running once the system is up.
1682 1690
1683 1691
1684______________________________________________________________________ 1692______________________________________________________________________
1685Changelog:
1686
16872000-06-?? Mr. Unknown
1688 The last known update (for 2.4.0) - the changelog was not kept before.
1689
16902002-11-24 Petr Baudis <pasky@ucw.cz>
1691 Randy Dunlap <randy.dunlap@verizon.net>
1692 Update for 2.5.49, description for most of the options introduced,
1693 references to other documentation (C files, READMEs, ..), added S390,
1694 PPC, SPARC, MTD, ALSA and OSS category. Minor corrections and
1695 reformatting.
1696
16972005-10-19 Randy Dunlap <rdunlap@xenotime.net>
1698 Lots of typos, whitespace, some reformatting.
1699 1693
1700TODO: 1694TODO:
1701 1695
diff --git a/Documentation/leds-class.txt b/Documentation/leds-class.txt
new file mode 100644
index 000000000000..8c35c0426110
--- /dev/null
+++ b/Documentation/leds-class.txt
@@ -0,0 +1,71 @@
1LED handling under Linux
2========================
3
4If you're reading this and thinking about keyboard leds, these are
5handled by the input subsystem and the led class is *not* needed.
6
7In its simplest form, the LED class just allows control of LEDs from
8userspace. LEDs appear in /sys/class/leds/. The brightness file will
9set the brightness of the LED (taking a value 0-255). Most LEDs don't
10have hardware brightness support so will just be turned on for non-zero
11brightness settings.
12
13The class also introduces the optional concept of an LED trigger. A trigger
14is a kernel based source of led events. Triggers can either be simple or
15complex. A simple trigger isn't configurable and is designed to slot into
16existing subsystems with minimal additional code. Examples are the ide-disk,
17nand-disk and sharpsl-charge triggers. With led triggers disabled, the code
18optimises away.
19
20Complex triggers whilst available to all LEDs have LED specific
21parameters and work on a per LED basis. The timer trigger is an example.
22
23You can change triggers in a similar manner to the way an IO scheduler
24is chosen (via /sys/class/leds/<device>/trigger). Trigger specific
25parameters can appear in /sys/class/leds/<device> once a given trigger is
26selected.
27
28
29Design Philosophy
30=================
31
32The underlying design philosophy is simplicity. LEDs are simple devices
33and the aim is to keep a small amount of code giving as much functionality
34as possible. Please keep this in mind when suggesting enhancements.
35
36
37LED Device Naming
38=================
39
40Is currently of the form:
41
42"devicename:colour"
43
44There have been calls for LED properties such as colour to be exported as
45individual led class attributes. As a solution which doesn't incur as much
46overhead, I suggest these become part of the device name. The naming scheme
47above leaves scope for further attributes should they be needed.
48
49
50Known Issues
51============
52
53The LED Trigger core cannot be a module as the simple trigger functions
54would cause nightmare dependency issues. I see this as a minor issue
55compared to the benefits the simple trigger functionality brings. The
56rest of the LED subsystem can be modular.
57
58Some leds can be programmed to flash in hardware. As this isn't a generic
59LED device property, this should be exported as a device specific sysfs
60attribute rather than part of the class if this functionality is required.
61
62
63Future Development
64==================
65
66At the moment, a trigger can't be created specifically for a single LED.
67There are a number of cases where a trigger might only be mappable to a
68particular LED (ACPI?). The addition of triggers provided by the LED driver
69should cover this option and be possible to add without breaking the
70current interface.
71
diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt
new file mode 100644
index 000000000000..f8550310a6d5
--- /dev/null
+++ b/Documentation/memory-barriers.txt
@@ -0,0 +1,1913 @@
1 ============================
2 LINUX KERNEL MEMORY BARRIERS
3 ============================
4
5By: David Howells <dhowells@redhat.com>
6
7Contents:
8
9 (*) Abstract memory access model.
10
11 - Device operations.
12 - Guarantees.
13
14 (*) What are memory barriers?
15
16 - Varieties of memory barrier.
17 - What may not be assumed about memory barriers?
18 - Data dependency barriers.
19 - Control dependencies.
20 - SMP barrier pairing.
21 - Examples of memory barrier sequences.
22
23 (*) Explicit kernel barriers.
24
25 - Compiler barrier.
26 - The CPU memory barriers.
27 - MMIO write barrier.
28
29 (*) Implicit kernel memory barriers.
30
31 - Locking functions.
32 - Interrupt disabling functions.
33 - Miscellaneous functions.
34
35 (*) Inter-CPU locking barrier effects.
36
37 - Locks vs memory accesses.
38 - Locks vs I/O accesses.
39
40 (*) Where are memory barriers needed?
41
42 - Interprocessor interaction.
43 - Atomic operations.
44 - Accessing devices.
45 - Interrupts.
46
47 (*) Kernel I/O barrier effects.
48
49 (*) Assumed minimum execution ordering model.
50
51 (*) The effects of the cpu cache.
52
53 - Cache coherency.
54 - Cache coherency vs DMA.
55 - Cache coherency vs MMIO.
56
57 (*) The things CPUs get up to.
58
59 - And then there's the Alpha.
60
61 (*) References.
62
63
64============================
65ABSTRACT MEMORY ACCESS MODEL
66============================
67
68Consider the following abstract model of the system:
69
70 : :
71 : :
72 : :
73 +-------+ : +--------+ : +-------+
74 | | : | | : | |
75 | | : | | : | |
76 | CPU 1 |<----->| Memory |<----->| CPU 2 |
77 | | : | | : | |
78 | | : | | : | |
79 +-------+ : +--------+ : +-------+
80 ^ : ^ : ^
81 | : | : |
82 | : | : |
83 | : v : |
84 | : +--------+ : |
85 | : | | : |
86 | : | | : |
87 +---------->| Device |<----------+
88 : | | :
89 : | | :
90 : +--------+ :
91 : :
92
93Each CPU executes a program that generates memory access operations. In the
94abstract CPU, memory operation ordering is very relaxed, and a CPU may actually
95perform the memory operations in any order it likes, provided program causality
96appears to be maintained. Similarly, the compiler may also arrange the
97instructions it emits in any order it likes, provided it doesn't affect the
98apparent operation of the program.
99
100So in the above diagram, the effects of the memory operations performed by a
101CPU are perceived by the rest of the system as the operations cross the
102interface between the CPU and rest of the system (the dotted lines).
103
104
105For example, consider the following sequence of events:
106
107 CPU 1 CPU 2
108 =============== ===============
109 { A == 1; B == 2 }
110 A = 3; x = A;
111 B = 4; y = B;
112
113The set of accesses as seen by the memory system in the middle can be arranged
114in 24 different combinations:
115
116 STORE A=3, STORE B=4, x=LOAD A->3, y=LOAD B->4
117 STORE A=3, STORE B=4, y=LOAD B->4, x=LOAD A->3
118 STORE A=3, x=LOAD A->3, STORE B=4, y=LOAD B->4
119 STORE A=3, x=LOAD A->3, y=LOAD B->2, STORE B=4
120 STORE A=3, y=LOAD B->2, STORE B=4, x=LOAD A->3
121 STORE A=3, y=LOAD B->2, x=LOAD A->3, STORE B=4
122 STORE B=4, STORE A=3, x=LOAD A->3, y=LOAD B->4
123 STORE B=4, ...
124 ...
125
126and can thus result in four different combinations of values:
127
128 x == 1, y == 2
129 x == 1, y == 4
130 x == 3, y == 2
131 x == 3, y == 4
132
133
134Furthermore, the stores committed by a CPU to the memory system may not be
135perceived by the loads made by another CPU in the same order as the stores were
136committed.
137
138
139As a further example, consider this sequence of events:
140
141 CPU 1 CPU 2
142 =============== ===============
143 { A == 1, B == 2, C = 3, P == &A, Q == &C }
144 B = 4; Q = P;
145 P = &B D = *Q;
146
147There is an obvious data dependency here, as the value loaded into D depends on
148the address retrieved from P by CPU 2. At the end of the sequence, any of the
149following results are possible:
150
151 (Q == &A) and (D == 1)
152 (Q == &B) and (D == 2)
153 (Q == &B) and (D == 4)
154
155Note that CPU 2 will never try and load C into D because the CPU will load P
156into Q before issuing the load of *Q.
157
158
159DEVICE OPERATIONS
160-----------------
161
162Some devices present their control interfaces as collections of memory
163locations, but the order in which the control registers are accessed is very
164important. For instance, imagine an ethernet card with a set of internal
165registers that are accessed through an address port register (A) and a data
166port register (D). To read internal register 5, the following code might then
167be used:
168
169 *A = 5;
170 x = *D;
171
172but this might show up as either of the following two sequences:
173
174 STORE *A = 5, x = LOAD *D
175 x = LOAD *D, STORE *A = 5
176
177the second of which will almost certainly result in a malfunction, since it set
178the address _after_ attempting to read the register.
179
180
181GUARANTEES
182----------
183
184There are some minimal guarantees that may be expected of a CPU:
185
186 (*) On any given CPU, dependent memory accesses will be issued in order, with
187 respect to itself. This means that for:
188
189 Q = P; D = *Q;
190
191 the CPU will issue the following memory operations:
192
193 Q = LOAD P, D = LOAD *Q
194
195 and always in that order.
196
197 (*) Overlapping loads and stores within a particular CPU will appear to be
198 ordered within that CPU. This means that for:
199
200 a = *X; *X = b;
201
202 the CPU will only issue the following sequence of memory operations:
203
204 a = LOAD *X, STORE *X = b
205
206 And for:
207
208 *X = c; d = *X;
209
210 the CPU will only issue:
211
212 STORE *X = c, d = LOAD *X
213
214 (Loads and stores overlap if they are targetted at overlapping pieces of
215 memory).
216
217And there are a number of things that _must_ or _must_not_ be assumed:
218
219 (*) It _must_not_ be assumed that independent loads and stores will be issued
220 in the order given. This means that for:
221
222 X = *A; Y = *B; *D = Z;
223
224 we may get any of the following sequences:
225
226 X = LOAD *A, Y = LOAD *B, STORE *D = Z
227 X = LOAD *A, STORE *D = Z, Y = LOAD *B
228 Y = LOAD *B, X = LOAD *A, STORE *D = Z
229 Y = LOAD *B, STORE *D = Z, X = LOAD *A
230 STORE *D = Z, X = LOAD *A, Y = LOAD *B
231 STORE *D = Z, Y = LOAD *B, X = LOAD *A
232
233 (*) It _must_ be assumed that overlapping memory accesses may be merged or
234 discarded. This means that for:
235
236 X = *A; Y = *(A + 4);
237
238 we may get any one of the following sequences:
239
240 X = LOAD *A; Y = LOAD *(A + 4);
241 Y = LOAD *(A + 4); X = LOAD *A;
242 {X, Y} = LOAD {*A, *(A + 4) };
243
244 And for:
245
246 *A = X; Y = *A;
247
248 we may get either of:
249
250 STORE *A = X; Y = LOAD *A;
251 STORE *A = Y;
252
253
254=========================
255WHAT ARE MEMORY BARRIERS?
256=========================
257
258As can be seen above, independent memory operations are effectively performed
259in random order, but this can be a problem for CPU-CPU interaction and for I/O.
260What is required is some way of intervening to instruct the compiler and the
261CPU to restrict the order.
262
263Memory barriers are such interventions. They impose a perceived partial
264ordering between the memory operations specified on either side of the barrier.
265They request that the sequence of memory events generated appears to other
266parts of the system as if the barrier is effective on that CPU.
267
268
269VARIETIES OF MEMORY BARRIER
270---------------------------
271
272Memory barriers come in four basic varieties:
273
274 (1) Write (or store) memory barriers.
275
276 A write memory barrier gives a guarantee that all the STORE operations
277 specified before the barrier will appear to happen before all the STORE
278 operations specified after the barrier with respect to the other
279 components of the system.
280
281 A write barrier is a partial ordering on stores only; it is not required
282 to have any effect on loads.
283
284 A CPU can be viewed as as commiting a sequence of store operations to the
285 memory system as time progresses. All stores before a write barrier will
286 occur in the sequence _before_ all the stores after the write barrier.
287
288 [!] Note that write barriers should normally be paired with read or data
289 dependency barriers; see the "SMP barrier pairing" subsection.
290
291
292 (2) Data dependency barriers.
293
294 A data dependency barrier is a weaker form of read barrier. In the case
295 where two loads are performed such that the second depends on the result
296 of the first (eg: the first load retrieves the address to which the second
297 load will be directed), a data dependency barrier would be required to
298 make sure that the target of the second load is updated before the address
299 obtained by the first load is accessed.
300
301 A data dependency barrier is a partial ordering on interdependent loads
302 only; it is not required to have any effect on stores, independent loads
303 or overlapping loads.
304
305 As mentioned in (1), the other CPUs in the system can be viewed as
306 committing sequences of stores to the memory system that the CPU being
307 considered can then perceive. A data dependency barrier issued by the CPU
308 under consideration guarantees that for any load preceding it, if that
309 load touches one of a sequence of stores from another CPU, then by the
310 time the barrier completes, the effects of all the stores prior to that
311 touched by the load will be perceptible to any loads issued after the data
312 dependency barrier.
313
314 See the "Examples of memory barrier sequences" subsection for diagrams
315 showing the ordering constraints.
316
317 [!] Note that the first load really has to have a _data_ dependency and
318 not a control dependency. If the address for the second load is dependent
319 on the first load, but the dependency is through a conditional rather than
320 actually loading the address itself, then it's a _control_ dependency and
321 a full read barrier or better is required. See the "Control dependencies"
322 subsection for more information.
323
324 [!] Note that data dependency barriers should normally be paired with
325 write barriers; see the "SMP barrier pairing" subsection.
326
327
328 (3) Read (or load) memory barriers.
329
330 A read barrier is a data dependency barrier plus a guarantee that all the
331 LOAD operations specified before the barrier will appear to happen before
332 all the LOAD operations specified after the barrier with respect to the
333 other components of the system.
334
335 A read barrier is a partial ordering on loads only; it is not required to
336 have any effect on stores.
337
338 Read memory barriers imply data dependency barriers, and so can substitute
339 for them.
340
341 [!] Note that read barriers should normally be paired with write barriers;
342 see the "SMP barrier pairing" subsection.
343
344
345 (4) General memory barriers.
346
347 A general memory barrier is a combination of both a read memory barrier
348 and a write memory barrier. It is a partial ordering over both loads and
349 stores.
350
351 General memory barriers imply both read and write memory barriers, and so
352 can substitute for either.
353
354
355And a couple of implicit varieties:
356
357 (5) LOCK operations.
358
359 This acts as a one-way permeable barrier. It guarantees that all memory
360 operations after the LOCK operation will appear to happen after the LOCK
361 operation with respect to the other components of the system.
362
363 Memory operations that occur before a LOCK operation may appear to happen
364 after it completes.
365
366 A LOCK operation should almost always be paired with an UNLOCK operation.
367
368
369 (6) UNLOCK operations.
370
371 This also acts as a one-way permeable barrier. It guarantees that all
372 memory operations before the UNLOCK operation will appear to happen before
373 the UNLOCK operation with respect to the other components of the system.
374
375 Memory operations that occur after an UNLOCK operation may appear to
376 happen before it completes.
377
378 LOCK and UNLOCK operations are guaranteed to appear with respect to each
379 other strictly in the order specified.
380
381 The use of LOCK and UNLOCK operations generally precludes the need for
382 other sorts of memory barrier (but note the exceptions mentioned in the
383 subsection "MMIO write barrier").
384
385
386Memory barriers are only required where there's a possibility of interaction
387between two CPUs or between a CPU and a device. If it can be guaranteed that
388there won't be any such interaction in any particular piece of code, then
389memory barriers are unnecessary in that piece of code.
390
391
392Note that these are the _minimum_ guarantees. Different architectures may give
393more substantial guarantees, but they may _not_ be relied upon outside of arch
394specific code.
395
396
397WHAT MAY NOT BE ASSUMED ABOUT MEMORY BARRIERS?
398----------------------------------------------
399
400There are certain things that the Linux kernel memory barriers do not guarantee:
401
402 (*) There is no guarantee that any of the memory accesses specified before a
403 memory barrier will be _complete_ by the completion of a memory barrier
404 instruction; the barrier can be considered to draw a line in that CPU's
405 access queue that accesses of the appropriate type may not cross.
406
407 (*) There is no guarantee that issuing a memory barrier on one CPU will have
408 any direct effect on another CPU or any other hardware in the system. The
409 indirect effect will be the order in which the second CPU sees the effects
410 of the first CPU's accesses occur, but see the next point:
411
412 (*) There is no guarantee that the a CPU will see the correct order of effects
413 from a second CPU's accesses, even _if_ the second CPU uses a memory
414 barrier, unless the first CPU _also_ uses a matching memory barrier (see
415 the subsection on "SMP Barrier Pairing").
416
417 (*) There is no guarantee that some intervening piece of off-the-CPU
418 hardware[*] will not reorder the memory accesses. CPU cache coherency
419 mechanisms should propagate the indirect effects of a memory barrier
420 between CPUs, but might not do so in order.
421
422 [*] For information on bus mastering DMA and coherency please read:
423
424 Documentation/pci.txt
425 Documentation/DMA-mapping.txt
426 Documentation/DMA-API.txt
427
428
429DATA DEPENDENCY BARRIERS
430------------------------
431
432The usage requirements of data dependency barriers are a little subtle, and
433it's not always obvious that they're needed. To illustrate, consider the
434following sequence of events:
435
436 CPU 1 CPU 2
437 =============== ===============
438 { A == 1, B == 2, C = 3, P == &A, Q == &C }
439 B = 4;
440 <write barrier>
441 P = &B
442 Q = P;
443 D = *Q;
444
445There's a clear data dependency here, and it would seem that by the end of the
446sequence, Q must be either &A or &B, and that:
447
448 (Q == &A) implies (D == 1)
449 (Q == &B) implies (D == 4)
450
451But! CPU 2's perception of P may be updated _before_ its perception of B, thus
452leading to the following situation:
453
454 (Q == &B) and (D == 2) ????
455
456Whilst this may seem like a failure of coherency or causality maintenance, it
457isn't, and this behaviour can be observed on certain real CPUs (such as the DEC
458Alpha).
459
460To deal with this, a data dependency barrier must be inserted between the
461address load and the data load:
462
463 CPU 1 CPU 2
464 =============== ===============
465 { A == 1, B == 2, C = 3, P == &A, Q == &C }
466 B = 4;
467 <write barrier>
468 P = &B
469 Q = P;
470 <data dependency barrier>
471 D = *Q;
472
473This enforces the occurrence of one of the two implications, and prevents the
474third possibility from arising.
475
476[!] Note that this extremely counterintuitive situation arises most easily on
477machines with split caches, so that, for example, one cache bank processes
478even-numbered cache lines and the other bank processes odd-numbered cache
479lines. The pointer P might be stored in an odd-numbered cache line, and the
480variable B might be stored in an even-numbered cache line. Then, if the
481even-numbered bank of the reading CPU's cache is extremely busy while the
482odd-numbered bank is idle, one can see the new value of the pointer P (&B),
483but the old value of the variable B (1).
484
485
486Another example of where data dependency barriers might by required is where a
487number is read from memory and then used to calculate the index for an array
488access:
489
490 CPU 1 CPU 2
491 =============== ===============
492 { M[0] == 1, M[1] == 2, M[3] = 3, P == 0, Q == 3 }
493 M[1] = 4;
494 <write barrier>
495 P = 1
496 Q = P;
497 <data dependency barrier>
498 D = M[Q];
499
500
501The data dependency barrier is very important to the RCU system, for example.
502See rcu_dereference() in include/linux/rcupdate.h. This permits the current
503target of an RCU'd pointer to be replaced with a new modified target, without
504the replacement target appearing to be incompletely initialised.
505
506See also the subsection on "Cache Coherency" for a more thorough example.
507
508
509CONTROL DEPENDENCIES
510--------------------
511
512A control dependency requires a full read memory barrier, not simply a data
513dependency barrier to make it work correctly. Consider the following bit of
514code:
515
516 q = &a;
517 if (p)
518 q = &b;
519 <data dependency barrier>
520 x = *q;
521
522This will not have the desired effect because there is no actual data
523dependency, but rather a control dependency that the CPU may short-circuit by
524attempting to predict the outcome in advance. In such a case what's actually
525required is:
526
527 q = &a;
528 if (p)
529 q = &b;
530 <read barrier>
531 x = *q;
532
533
534SMP BARRIER PAIRING
535-------------------
536
537When dealing with CPU-CPU interactions, certain types of memory barrier should
538always be paired. A lack of appropriate pairing is almost certainly an error.
539
540A write barrier should always be paired with a data dependency barrier or read
541barrier, though a general barrier would also be viable. Similarly a read
542barrier or a data dependency barrier should always be paired with at least an
543write barrier, though, again, a general barrier is viable:
544
545 CPU 1 CPU 2
546 =============== ===============
547 a = 1;
548 <write barrier>
549 b = 2; x = a;
550 <read barrier>
551 y = b;
552
553Or:
554
555 CPU 1 CPU 2
556 =============== ===============================
557 a = 1;
558 <write barrier>
559 b = &a; x = b;
560 <data dependency barrier>
561 y = *x;
562
563Basically, the read barrier always has to be there, even though it can be of
564the "weaker" type.
565
566
567EXAMPLES OF MEMORY BARRIER SEQUENCES
568------------------------------------
569
570Firstly, write barriers act as a partial orderings on store operations.
571Consider the following sequence of events:
572
573 CPU 1
574 =======================
575 STORE A = 1
576 STORE B = 2
577 STORE C = 3
578 <write barrier>
579 STORE D = 4
580 STORE E = 5
581
582This sequence of events is committed to the memory coherence system in an order
583that the rest of the system might perceive as the unordered set of { STORE A,
584STORE B, STORE C } all occuring before the unordered set of { STORE D, STORE E
585}:
586
587 +-------+ : :
588 | | +------+
589 | |------>| C=3 | } /\
590 | | : +------+ }----- \ -----> Events perceptible
591 | | : | A=1 | } \/ to rest of system
592 | | : +------+ }
593 | CPU 1 | : | B=2 | }
594 | | +------+ }
595 | | wwwwwwwwwwwwwwww } <--- At this point the write barrier
596 | | +------+ } requires all stores prior to the
597 | | : | E=5 | } barrier to be committed before
598 | | : +------+ } further stores may be take place.
599 | |------>| D=4 | }
600 | | +------+
601 +-------+ : :
602 |
603 | Sequence in which stores committed to memory system
604 | by CPU 1
605 V
606
607
608Secondly, data dependency barriers act as a partial orderings on data-dependent
609loads. Consider the following sequence of events:
610
611 CPU 1 CPU 2
612 ======================= =======================
613 STORE A = 1
614 STORE B = 2
615 <write barrier>
616 STORE C = &B LOAD X
617 STORE D = 4 LOAD C (gets &B)
618 LOAD *C (reads B)
619
620Without intervention, CPU 2 may perceive the events on CPU 1 in some
621effectively random order, despite the write barrier issued by CPU 1:
622
623 +-------+ : : : :
624 | | +------+ +-------+ | Sequence of update
625 | |------>| B=2 |----- --->| Y->8 | | of perception on
626 | | : +------+ \ +-------+ | CPU 2
627 | CPU 1 | : | A=1 | \ --->| C->&Y | V
628 | | +------+ | +-------+
629 | | wwwwwwwwwwwwwwww | : :
630 | | +------+ | : :
631 | | : | C=&B |--- | : : +-------+
632 | | : +------+ \ | +-------+ | |
633 | |------>| D=4 | ----------->| C->&B |------>| |
634 | | +------+ | +-------+ | |
635 +-------+ : : | : : | |
636 | : : | |
637 | : : | CPU 2 |
638 | +-------+ | |
639 Apparently incorrect ---> | | B->7 |------>| |
640 perception of B (!) | +-------+ | |
641 | : : | |
642 | +-------+ | |
643 The load of X holds ---> \ | X->9 |------>| |
644 up the maintenance \ +-------+ | |
645 of coherence of B ----->| B->2 | +-------+
646 +-------+
647 : :
648
649
650In the above example, CPU 2 perceives that B is 7, despite the load of *C
651(which would be B) coming after the the LOAD of C.
652
653If, however, a data dependency barrier were to be placed between the load of C
654and the load of *C (ie: B) on CPU 2, then the following will occur:
655
656 +-------+ : : : :
657 | | +------+ +-------+
658 | |------>| B=2 |----- --->| Y->8 |
659 | | : +------+ \ +-------+
660 | CPU 1 | : | A=1 | \ --->| C->&Y |
661 | | +------+ | +-------+
662 | | wwwwwwwwwwwwwwww | : :
663 | | +------+ | : :
664 | | : | C=&B |--- | : : +-------+
665 | | : +------+ \ | +-------+ | |
666 | |------>| D=4 | ----------->| C->&B |------>| |
667 | | +------+ | +-------+ | |
668 +-------+ : : | : : | |
669 | : : | |
670 | : : | CPU 2 |
671 | +-------+ | |
672 \ | X->9 |------>| |
673 \ +-------+ | |
674 ----->| B->2 | | |
675 +-------+ | |
676 Makes sure all effects ---> ddddddddddddddddd | |
677 prior to the store of C +-------+ | |
678 are perceptible to | B->2 |------>| |
679 successive loads +-------+ | |
680 : : +-------+
681
682
683And thirdly, a read barrier acts as a partial order on loads. Consider the
684following sequence of events:
685
686 CPU 1 CPU 2
687 ======================= =======================
688 STORE A=1
689 STORE B=2
690 STORE C=3
691 <write barrier>
692 STORE D=4
693 STORE E=5
694 LOAD A
695 LOAD B
696 LOAD C
697 LOAD D
698 LOAD E
699
700Without intervention, CPU 2 may then choose to perceive the events on CPU 1 in
701some effectively random order, despite the write barrier issued by CPU 1:
702
703 +-------+ : :
704 | | +------+
705 | |------>| C=3 | }
706 | | : +------+ }
707 | | : | A=1 | }
708 | | : +------+ }
709 | CPU 1 | : | B=2 | }---
710 | | +------+ } \
711 | | wwwwwwwwwwwww} \
712 | | +------+ } \ : : +-------+
713 | | : | E=5 | } \ +-------+ | |
714 | | : +------+ } \ { | C->3 |------>| |
715 | |------>| D=4 | } \ { +-------+ : | |
716 | | +------+ \ { | E->5 | : | |
717 +-------+ : : \ { +-------+ : | |
718 Transfer -->{ | A->1 | : | CPU 2 |
719 from CPU 1 { +-------+ : | |
720 to CPU 2 { | D->4 | : | |
721 { +-------+ : | |
722 { | B->2 |------>| |
723 +-------+ | |
724 : : +-------+
725
726
727If, however, a read barrier were to be placed between the load of C and the
728load of D on CPU 2, then the partial ordering imposed by CPU 1 will be
729perceived correctly by CPU 2.
730
731 +-------+ : :
732 | | +------+
733 | |------>| C=3 | }
734 | | : +------+ }
735 | | : | A=1 | }---
736 | | : +------+ } \
737 | CPU 1 | : | B=2 | } \
738 | | +------+ \
739 | | wwwwwwwwwwwwwwww \
740 | | +------+ \ : : +-------+
741 | | : | E=5 | } \ +-------+ | |
742 | | : +------+ }--- \ { | C->3 |------>| |
743 | |------>| D=4 | } \ \ { +-------+ : | |
744 | | +------+ \ -->{ | B->2 | : | |
745 +-------+ : : \ { +-------+ : | |
746 \ { | A->1 | : | CPU 2 |
747 \ +-------+ | |
748 At this point the read ----> \ rrrrrrrrrrrrrrrrr | |
749 barrier causes all effects \ +-------+ | |
750 prior to the storage of C \ { | E->5 | : | |
751 to be perceptible to CPU 2 -->{ +-------+ : | |
752 { | D->4 |------>| |
753 +-------+ | |
754 : : +-------+
755
756
757========================
758EXPLICIT KERNEL BARRIERS
759========================
760
761The Linux kernel has a variety of different barriers that act at different
762levels:
763
764 (*) Compiler barrier.
765
766 (*) CPU memory barriers.
767
768 (*) MMIO write barrier.
769
770
771COMPILER BARRIER
772----------------
773
774The Linux kernel has an explicit compiler barrier function that prevents the
775compiler from moving the memory accesses either side of it to the other side:
776
777 barrier();
778
779This a general barrier - lesser varieties of compiler barrier do not exist.
780
781The compiler barrier has no direct effect on the CPU, which may then reorder
782things however it wishes.
783
784
785CPU MEMORY BARRIERS
786-------------------
787
788The Linux kernel has eight basic CPU memory barriers:
789
790 TYPE MANDATORY SMP CONDITIONAL
791 =============== ======================= ===========================
792 GENERAL mb() smp_mb()
793 WRITE wmb() smp_wmb()
794 READ rmb() smp_rmb()
795 DATA DEPENDENCY read_barrier_depends() smp_read_barrier_depends()
796
797
798All CPU memory barriers unconditionally imply compiler barriers.
799
800SMP memory barriers are reduced to compiler barriers on uniprocessor compiled
801systems because it is assumed that a CPU will be appear to be self-consistent,
802and will order overlapping accesses correctly with respect to itself.
803
804[!] Note that SMP memory barriers _must_ be used to control the ordering of
805references to shared memory on SMP systems, though the use of locking instead
806is sufficient.
807
808Mandatory barriers should not be used to control SMP effects, since mandatory
809barriers unnecessarily impose overhead on UP systems. They may, however, be
810used to control MMIO effects on accesses through relaxed memory I/O windows.
811These are required even on non-SMP systems as they affect the order in which
812memory operations appear to a device by prohibiting both the compiler and the
813CPU from reordering them.
814
815
816There are some more advanced barrier functions:
817
818 (*) set_mb(var, value)
819 (*) set_wmb(var, value)
820
821 These assign the value to the variable and then insert at least a write
822 barrier after it, depending on the function. They aren't guaranteed to
823 insert anything more than a compiler barrier in a UP compilation.
824
825
826 (*) smp_mb__before_atomic_dec();
827 (*) smp_mb__after_atomic_dec();
828 (*) smp_mb__before_atomic_inc();
829 (*) smp_mb__after_atomic_inc();
830
831 These are for use with atomic add, subtract, increment and decrement
832 functions, especially when used for reference counting. These functions
833 do not imply memory barriers.
834
835 As an example, consider a piece of code that marks an object as being dead
836 and then decrements the object's reference count:
837
838 obj->dead = 1;
839 smp_mb__before_atomic_dec();
840 atomic_dec(&obj->ref_count);
841
842 This makes sure that the death mark on the object is perceived to be set
843 *before* the reference counter is decremented.
844
845 See Documentation/atomic_ops.txt for more information. See the "Atomic
846 operations" subsection for information on where to use these.
847
848
849 (*) smp_mb__before_clear_bit(void);
850 (*) smp_mb__after_clear_bit(void);
851
852 These are for use similar to the atomic inc/dec barriers. These are
853 typically used for bitwise unlocking operations, so care must be taken as
854 there are no implicit memory barriers here either.
855
856 Consider implementing an unlock operation of some nature by clearing a
857 locking bit. The clear_bit() would then need to be barriered like this:
858
859 smp_mb__before_clear_bit();
860 clear_bit( ... );
861
862 This prevents memory operations before the clear leaking to after it. See
863 the subsection on "Locking Functions" with reference to UNLOCK operation
864 implications.
865
866 See Documentation/atomic_ops.txt for more information. See the "Atomic
867 operations" subsection for information on where to use these.
868
869
870MMIO WRITE BARRIER
871------------------
872
873The Linux kernel also has a special barrier for use with memory-mapped I/O
874writes:
875
876 mmiowb();
877
878This is a variation on the mandatory write barrier that causes writes to weakly
879ordered I/O regions to be partially ordered. Its effects may go beyond the
880CPU->Hardware interface and actually affect the hardware at some level.
881
882See the subsection "Locks vs I/O accesses" for more information.
883
884
885===============================
886IMPLICIT KERNEL MEMORY BARRIERS
887===============================
888
889Some of the other functions in the linux kernel imply memory barriers, amongst
890which are locking, scheduling and memory allocation functions.
891
892This specification is a _minimum_ guarantee; any particular architecture may
893provide more substantial guarantees, but these may not be relied upon outside
894of arch specific code.
895
896
897LOCKING FUNCTIONS
898-----------------
899
900The Linux kernel has a number of locking constructs:
901
902 (*) spin locks
903 (*) R/W spin locks
904 (*) mutexes
905 (*) semaphores
906 (*) R/W semaphores
907 (*) RCU
908
909In all cases there are variants on "LOCK" operations and "UNLOCK" operations
910for each construct. These operations all imply certain barriers:
911
912 (1) LOCK operation implication:
913
914 Memory operations issued after the LOCK will be completed after the LOCK
915 operation has completed.
916
917 Memory operations issued before the LOCK may be completed after the LOCK
918 operation has completed.
919
920 (2) UNLOCK operation implication:
921
922 Memory operations issued before the UNLOCK will be completed before the
923 UNLOCK operation has completed.
924
925 Memory operations issued after the UNLOCK may be completed before the
926 UNLOCK operation has completed.
927
928 (3) LOCK vs LOCK implication:
929
930 All LOCK operations issued before another LOCK operation will be completed
931 before that LOCK operation.
932
933 (4) LOCK vs UNLOCK implication:
934
935 All LOCK operations issued before an UNLOCK operation will be completed
936 before the UNLOCK operation.
937
938 All UNLOCK operations issued before a LOCK operation will be completed
939 before the LOCK operation.
940
941 (5) Failed conditional LOCK implication:
942
943 Certain variants of the LOCK operation may fail, either due to being
944 unable to get the lock immediately, or due to receiving an unblocked
945 signal whilst asleep waiting for the lock to become available. Failed
946 locks do not imply any sort of barrier.
947
948Therefore, from (1), (2) and (4) an UNLOCK followed by an unconditional LOCK is
949equivalent to a full barrier, but a LOCK followed by an UNLOCK is not.
950
951[!] Note: one of the consequence of LOCKs and UNLOCKs being only one-way
952 barriers is that the effects instructions outside of a critical section may
953 seep into the inside of the critical section.
954
955Locks and semaphores may not provide any guarantee of ordering on UP compiled
956systems, and so cannot be counted on in such a situation to actually achieve
957anything at all - especially with respect to I/O accesses - unless combined
958with interrupt disabling operations.
959
960See also the section on "Inter-CPU locking barrier effects".
961
962
963As an example, consider the following:
964
965 *A = a;
966 *B = b;
967 LOCK
968 *C = c;
969 *D = d;
970 UNLOCK
971 *E = e;
972 *F = f;
973
974The following sequence of events is acceptable:
975
976 LOCK, {*F,*A}, *E, {*C,*D}, *B, UNLOCK
977
978 [+] Note that {*F,*A} indicates a combined access.
979
980But none of the following are:
981
982 {*F,*A}, *B, LOCK, *C, *D, UNLOCK, *E
983 *A, *B, *C, LOCK, *D, UNLOCK, *E, *F
984 *A, *B, LOCK, *C, UNLOCK, *D, *E, *F
985 *B, LOCK, *C, *D, UNLOCK, {*F,*A}, *E
986
987
988
989INTERRUPT DISABLING FUNCTIONS
990-----------------------------
991
992Functions that disable interrupts (LOCK equivalent) and enable interrupts
993(UNLOCK equivalent) will act as compiler barriers only. So if memory or I/O
994barriers are required in such a situation, they must be provided from some
995other means.
996
997
998MISCELLANEOUS FUNCTIONS
999-----------------------
1000
1001Other functions that imply barriers:
1002
1003 (*) schedule() and similar imply full memory barriers.
1004
1005 (*) Memory allocation and release functions imply full memory barriers.
1006
1007
1008=================================
1009INTER-CPU LOCKING BARRIER EFFECTS
1010=================================
1011
1012On SMP systems locking primitives give a more substantial form of barrier: one
1013that does affect memory access ordering on other CPUs, within the context of
1014conflict on any particular lock.
1015
1016
1017LOCKS VS MEMORY ACCESSES
1018------------------------
1019
1020Consider the following: the system has a pair of spinlocks (N) and (Q), and
1021three CPUs; then should the following sequence of events occur:
1022
1023 CPU 1 CPU 2
1024 =============================== ===============================
1025 *A = a; *E = e;
1026 LOCK M LOCK Q
1027 *B = b; *F = f;
1028 *C = c; *G = g;
1029 UNLOCK M UNLOCK Q
1030 *D = d; *H = h;
1031
1032Then there is no guarantee as to what order CPU #3 will see the accesses to *A
1033through *H occur in, other than the constraints imposed by the separate locks
1034on the separate CPUs. It might, for example, see:
1035
1036 *E, LOCK M, LOCK Q, *G, *C, *F, *A, *B, UNLOCK Q, *D, *H, UNLOCK M
1037
1038But it won't see any of:
1039
1040 *B, *C or *D preceding LOCK M
1041 *A, *B or *C following UNLOCK M
1042 *F, *G or *H preceding LOCK Q
1043 *E, *F or *G following UNLOCK Q
1044
1045
1046However, if the following occurs:
1047
1048 CPU 1 CPU 2
1049 =============================== ===============================
1050 *A = a;
1051 LOCK M [1]
1052 *B = b;
1053 *C = c;
1054 UNLOCK M [1]
1055 *D = d; *E = e;
1056 LOCK M [2]
1057 *F = f;
1058 *G = g;
1059 UNLOCK M [2]
1060 *H = h;
1061
1062CPU #3 might see:
1063
1064 *E, LOCK M [1], *C, *B, *A, UNLOCK M [1],
1065 LOCK M [2], *H, *F, *G, UNLOCK M [2], *D
1066
1067But assuming CPU #1 gets the lock first, it won't see any of:
1068
1069 *B, *C, *D, *F, *G or *H preceding LOCK M [1]
1070 *A, *B or *C following UNLOCK M [1]
1071 *F, *G or *H preceding LOCK M [2]
1072 *A, *B, *C, *E, *F or *G following UNLOCK M [2]
1073
1074
1075LOCKS VS I/O ACCESSES
1076---------------------
1077
1078Under certain circumstances (especially involving NUMA), I/O accesses within
1079two spinlocked sections on two different CPUs may be seen as interleaved by the
1080PCI bridge, because the PCI bridge does not necessarily participate in the
1081cache-coherence protocol, and is therefore incapable of issuing the required
1082read memory barriers.
1083
1084For example:
1085
1086 CPU 1 CPU 2
1087 =============================== ===============================
1088 spin_lock(Q)
1089 writel(0, ADDR)
1090 writel(1, DATA);
1091 spin_unlock(Q);
1092 spin_lock(Q);
1093 writel(4, ADDR);
1094 writel(5, DATA);
1095 spin_unlock(Q);
1096
1097may be seen by the PCI bridge as follows:
1098
1099 STORE *ADDR = 0, STORE *ADDR = 4, STORE *DATA = 1, STORE *DATA = 5
1100
1101which would probably cause the hardware to malfunction.
1102
1103
1104What is necessary here is to intervene with an mmiowb() before dropping the
1105spinlock, for example:
1106
1107 CPU 1 CPU 2
1108 =============================== ===============================
1109 spin_lock(Q)
1110 writel(0, ADDR)
1111 writel(1, DATA);
1112 mmiowb();
1113 spin_unlock(Q);
1114 spin_lock(Q);
1115 writel(4, ADDR);
1116 writel(5, DATA);
1117 mmiowb();
1118 spin_unlock(Q);
1119
1120this will ensure that the two stores issued on CPU #1 appear at the PCI bridge
1121before either of the stores issued on CPU #2.
1122
1123
1124Furthermore, following a store by a load to the same device obviates the need
1125for an mmiowb(), because the load forces the store to complete before the load
1126is performed:
1127
1128 CPU 1 CPU 2
1129 =============================== ===============================
1130 spin_lock(Q)
1131 writel(0, ADDR)
1132 a = readl(DATA);
1133 spin_unlock(Q);
1134 spin_lock(Q);
1135 writel(4, ADDR);
1136 b = readl(DATA);
1137 spin_unlock(Q);
1138
1139
1140See Documentation/DocBook/deviceiobook.tmpl for more information.
1141
1142
1143=================================
1144WHERE ARE MEMORY BARRIERS NEEDED?
1145=================================
1146
1147Under normal operation, memory operation reordering is generally not going to
1148be a problem as a single-threaded linear piece of code will still appear to
1149work correctly, even if it's in an SMP kernel. There are, however, three
1150circumstances in which reordering definitely _could_ be a problem:
1151
1152 (*) Interprocessor interaction.
1153
1154 (*) Atomic operations.
1155
1156 (*) Accessing devices (I/O).
1157
1158 (*) Interrupts.
1159
1160
1161INTERPROCESSOR INTERACTION
1162--------------------------
1163
1164When there's a system with more than one processor, more than one CPU in the
1165system may be working on the same data set at the same time. This can cause
1166synchronisation problems, and the usual way of dealing with them is to use
1167locks. Locks, however, are quite expensive, and so it may be preferable to
1168operate without the use of a lock if at all possible. In such a case
1169operations that affect both CPUs may have to be carefully ordered to prevent
1170a malfunction.
1171
1172Consider, for example, the R/W semaphore slow path. Here a waiting process is
1173queued on the semaphore, by virtue of it having a piece of its stack linked to
1174the semaphore's list of waiting processes:
1175
1176 struct rw_semaphore {
1177 ...
1178 spinlock_t lock;
1179 struct list_head waiters;
1180 };
1181
1182 struct rwsem_waiter {
1183 struct list_head list;
1184 struct task_struct *task;
1185 };
1186
1187To wake up a particular waiter, the up_read() or up_write() functions have to:
1188
1189 (1) read the next pointer from this waiter's record to know as to where the
1190 next waiter record is;
1191
1192 (4) read the pointer to the waiter's task structure;
1193
1194 (3) clear the task pointer to tell the waiter it has been given the semaphore;
1195
1196 (4) call wake_up_process() on the task; and
1197
1198 (5) release the reference held on the waiter's task struct.
1199
1200In otherwords, it has to perform this sequence of events:
1201
1202 LOAD waiter->list.next;
1203 LOAD waiter->task;
1204 STORE waiter->task;
1205 CALL wakeup
1206 RELEASE task
1207
1208and if any of these steps occur out of order, then the whole thing may
1209malfunction.
1210
1211Once it has queued itself and dropped the semaphore lock, the waiter does not
1212get the lock again; it instead just waits for its task pointer to be cleared
1213before proceeding. Since the record is on the waiter's stack, this means that
1214if the task pointer is cleared _before_ the next pointer in the list is read,
1215another CPU might start processing the waiter and might clobber the waiter's
1216stack before the up*() function has a chance to read the next pointer.
1217
1218Consider then what might happen to the above sequence of events:
1219
1220 CPU 1 CPU 2
1221 =============================== ===============================
1222 down_xxx()
1223 Queue waiter
1224 Sleep
1225 up_yyy()
1226 LOAD waiter->task;
1227 STORE waiter->task;
1228 Woken up by other event
1229 <preempt>
1230 Resume processing
1231 down_xxx() returns
1232 call foo()
1233 foo() clobbers *waiter
1234 </preempt>
1235 LOAD waiter->list.next;
1236 --- OOPS ---
1237
1238This could be dealt with using the semaphore lock, but then the down_xxx()
1239function has to needlessly get the spinlock again after being woken up.
1240
1241The way to deal with this is to insert a general SMP memory barrier:
1242
1243 LOAD waiter->list.next;
1244 LOAD waiter->task;
1245 smp_mb();
1246 STORE waiter->task;
1247 CALL wakeup
1248 RELEASE task
1249
1250In this case, the barrier makes a guarantee that all memory accesses before the
1251barrier will appear to happen before all the memory accesses after the barrier
1252with respect to the other CPUs on the system. It does _not_ guarantee that all
1253the memory accesses before the barrier will be complete by the time the barrier
1254instruction itself is complete.
1255
1256On a UP system - where this wouldn't be a problem - the smp_mb() is just a
1257compiler barrier, thus making sure the compiler emits the instructions in the
1258right order without actually intervening in the CPU. Since there there's only
1259one CPU, that CPU's dependency ordering logic will take care of everything
1260else.
1261
1262
1263ATOMIC OPERATIONS
1264-----------------
1265
1266Though they are technically interprocessor interaction considerations, atomic
1267operations are noted specially as they do _not_ generally imply memory
1268barriers. The possible offenders include:
1269
1270 xchg();
1271 cmpxchg();
1272 test_and_set_bit();
1273 test_and_clear_bit();
1274 test_and_change_bit();
1275 atomic_cmpxchg();
1276 atomic_inc_return();
1277 atomic_dec_return();
1278 atomic_add_return();
1279 atomic_sub_return();
1280 atomic_inc_and_test();
1281 atomic_dec_and_test();
1282 atomic_sub_and_test();
1283 atomic_add_negative();
1284 atomic_add_unless();
1285
1286These may be used for such things as implementing LOCK operations or controlling
1287the lifetime of objects by decreasing their reference counts. In such cases
1288they need preceding memory barriers.
1289
1290The following may also be possible offenders as they may be used as UNLOCK
1291operations.
1292
1293 set_bit();
1294 clear_bit();
1295 change_bit();
1296 atomic_set();
1297
1298
1299The following are a little tricky:
1300
1301 atomic_add();
1302 atomic_sub();
1303 atomic_inc();
1304 atomic_dec();
1305
1306If they're used for statistics generation, then they probably don't need memory
1307barriers, unless there's a coupling between statistical data.
1308
1309If they're used for reference counting on an object to control its lifetime,
1310they probably don't need memory barriers because either the reference count
1311will be adjusted inside a locked section, or the caller will already hold
1312sufficient references to make the lock, and thus a memory barrier unnecessary.
1313
1314If they're used for constructing a lock of some description, then they probably
1315do need memory barriers as a lock primitive generally has to do things in a
1316specific order.
1317
1318
1319Basically, each usage case has to be carefully considered as to whether memory
1320barriers are needed or not. The simplest rule is probably: if the atomic
1321operation is protected by a lock, then it does not require a barrier unless
1322there's another operation within the critical section with respect to which an
1323ordering must be maintained.
1324
1325See Documentation/atomic_ops.txt for more information.
1326
1327
1328ACCESSING DEVICES
1329-----------------
1330
1331Many devices can be memory mapped, and so appear to the CPU as if they're just
1332a set of memory locations. To control such a device, the driver usually has to
1333make the right memory accesses in exactly the right order.
1334
1335However, having a clever CPU or a clever compiler creates a potential problem
1336in that the carefully sequenced accesses in the driver code won't reach the
1337device in the requisite order if the CPU or the compiler thinks it is more
1338efficient to reorder, combine or merge accesses - something that would cause
1339the device to malfunction.
1340
1341Inside of the Linux kernel, I/O should be done through the appropriate accessor
1342routines - such as inb() or writel() - which know how to make such accesses
1343appropriately sequential. Whilst this, for the most part, renders the explicit
1344use of memory barriers unnecessary, there are a couple of situations where they
1345might be needed:
1346
1347 (1) On some systems, I/O stores are not strongly ordered across all CPUs, and
1348 so for _all_ general drivers locks should be used and mmiowb() must be
1349 issued prior to unlocking the critical section.
1350
1351 (2) If the accessor functions are used to refer to an I/O memory window with
1352 relaxed memory access properties, then _mandatory_ memory barriers are
1353 required to enforce ordering.
1354
1355See Documentation/DocBook/deviceiobook.tmpl for more information.
1356
1357
1358INTERRUPTS
1359----------
1360
1361A driver may be interrupted by its own interrupt service routine, and thus the
1362two parts of the driver may interfere with each other's attempts to control or
1363access the device.
1364
1365This may be alleviated - at least in part - by disabling local interrupts (a
1366form of locking), such that the critical operations are all contained within
1367the interrupt-disabled section in the driver. Whilst the driver's interrupt
1368routine is executing, the driver's core may not run on the same CPU, and its
1369interrupt is not permitted to happen again until the current interrupt has been
1370handled, thus the interrupt handler does not need to lock against that.
1371
1372However, consider a driver that was talking to an ethernet card that sports an
1373address register and a data register. If that driver's core talks to the card
1374under interrupt-disablement and then the driver's interrupt handler is invoked:
1375
1376 LOCAL IRQ DISABLE
1377 writew(ADDR, 3);
1378 writew(DATA, y);
1379 LOCAL IRQ ENABLE
1380 <interrupt>
1381 writew(ADDR, 4);
1382 q = readw(DATA);
1383 </interrupt>
1384
1385The store to the data register might happen after the second store to the
1386address register if ordering rules are sufficiently relaxed:
1387
1388 STORE *ADDR = 3, STORE *ADDR = 4, STORE *DATA = y, q = LOAD *DATA
1389
1390
1391If ordering rules are relaxed, it must be assumed that accesses done inside an
1392interrupt disabled section may leak outside of it and may interleave with
1393accesses performed in an interrupt - and vice versa - unless implicit or
1394explicit barriers are used.
1395
1396Normally this won't be a problem because the I/O accesses done inside such
1397sections will include synchronous load operations on strictly ordered I/O
1398registers that form implicit I/O barriers. If this isn't sufficient then an
1399mmiowb() may need to be used explicitly.
1400
1401
1402A similar situation may occur between an interrupt routine and two routines
1403running on separate CPUs that communicate with each other. If such a case is
1404likely, then interrupt-disabling locks should be used to guarantee ordering.
1405
1406
1407==========================
1408KERNEL I/O BARRIER EFFECTS
1409==========================
1410
1411When accessing I/O memory, drivers should use the appropriate accessor
1412functions:
1413
1414 (*) inX(), outX():
1415
1416 These are intended to talk to I/O space rather than memory space, but
1417 that's primarily a CPU-specific concept. The i386 and x86_64 processors do
1418 indeed have special I/O space access cycles and instructions, but many
1419 CPUs don't have such a concept.
1420
1421 The PCI bus, amongst others, defines an I/O space concept - which on such
1422 CPUs as i386 and x86_64 cpus readily maps to the CPU's concept of I/O
1423 space. However, it may also mapped as a virtual I/O space in the CPU's
1424 memory map, particularly on those CPUs that don't support alternate
1425 I/O spaces.
1426
1427 Accesses to this space may be fully synchronous (as on i386), but
1428 intermediary bridges (such as the PCI host bridge) may not fully honour
1429 that.
1430
1431 They are guaranteed to be fully ordered with respect to each other.
1432
1433 They are not guaranteed to be fully ordered with respect to other types of
1434 memory and I/O operation.
1435
1436 (*) readX(), writeX():
1437
1438 Whether these are guaranteed to be fully ordered and uncombined with
1439 respect to each other on the issuing CPU depends on the characteristics
1440 defined for the memory window through which they're accessing. On later
1441 i386 architecture machines, for example, this is controlled by way of the
1442 MTRR registers.
1443
1444 Ordinarily, these will be guaranteed to be fully ordered and uncombined,,
1445 provided they're not accessing a prefetchable device.
1446
1447 However, intermediary hardware (such as a PCI bridge) may indulge in
1448 deferral if it so wishes; to flush a store, a load from the same location
1449 is preferred[*], but a load from the same device or from configuration
1450 space should suffice for PCI.
1451
1452 [*] NOTE! attempting to load from the same location as was written to may
1453 cause a malfunction - consider the 16550 Rx/Tx serial registers for
1454 example.
1455
1456 Used with prefetchable I/O memory, an mmiowb() barrier may be required to
1457 force stores to be ordered.
1458
1459 Please refer to the PCI specification for more information on interactions
1460 between PCI transactions.
1461
1462 (*) readX_relaxed()
1463
1464 These are similar to readX(), but are not guaranteed to be ordered in any
1465 way. Be aware that there is no I/O read barrier available.
1466
1467 (*) ioreadX(), iowriteX()
1468
1469 These will perform as appropriate for the type of access they're actually
1470 doing, be it inX()/outX() or readX()/writeX().
1471
1472
1473========================================
1474ASSUMED MINIMUM EXECUTION ORDERING MODEL
1475========================================
1476
1477It has to be assumed that the conceptual CPU is weakly-ordered but that it will
1478maintain the appearance of program causality with respect to itself. Some CPUs
1479(such as i386 or x86_64) are more constrained than others (such as powerpc or
1480frv), and so the most relaxed case (namely DEC Alpha) must be assumed outside
1481of arch-specific code.
1482
1483This means that it must be considered that the CPU will execute its instruction
1484stream in any order it feels like - or even in parallel - provided that if an
1485instruction in the stream depends on the an earlier instruction, then that
1486earlier instruction must be sufficiently complete[*] before the later
1487instruction may proceed; in other words: provided that the appearance of
1488causality is maintained.
1489
1490 [*] Some instructions have more than one effect - such as changing the
1491 condition codes, changing registers or changing memory - and different
1492 instructions may depend on different effects.
1493
1494A CPU may also discard any instruction sequence that winds up having no
1495ultimate effect. For example, if two adjacent instructions both load an
1496immediate value into the same register, the first may be discarded.
1497
1498
1499Similarly, it has to be assumed that compiler might reorder the instruction
1500stream in any way it sees fit, again provided the appearance of causality is
1501maintained.
1502
1503
1504============================
1505THE EFFECTS OF THE CPU CACHE
1506============================
1507
1508The way cached memory operations are perceived across the system is affected to
1509a certain extent by the caches that lie between CPUs and memory, and by the
1510memory coherence system that maintains the consistency of state in the system.
1511
1512As far as the way a CPU interacts with another part of the system through the
1513caches goes, the memory system has to include the CPU's caches, and memory
1514barriers for the most part act at the interface between the CPU and its cache
1515(memory barriers logically act on the dotted line in the following diagram):
1516
1517 <--- CPU ---> : <----------- Memory ----------->
1518 :
1519 +--------+ +--------+ : +--------+ +-----------+
1520 | | | | : | | | | +--------+
1521 | CPU | | Memory | : | CPU | | | | |
1522 | Core |--->| Access |----->| Cache |<-->| | | |
1523 | | | Queue | : | | | |--->| Memory |
1524 | | | | : | | | | | |
1525 +--------+ +--------+ : +--------+ | | | |
1526 : | Cache | +--------+
1527 : | Coherency |
1528 : | Mechanism | +--------+
1529 +--------+ +--------+ : +--------+ | | | |
1530 | | | | : | | | | | |
1531 | CPU | | Memory | : | CPU | | |--->| Device |
1532 | Core |--->| Access |----->| Cache |<-->| | | |
1533 | | | Queue | : | | | | | |
1534 | | | | : | | | | +--------+
1535 +--------+ +--------+ : +--------+ +-----------+
1536 :
1537 :
1538
1539Although any particular load or store may not actually appear outside of the
1540CPU that issued it since it may have been satisfied within the CPU's own cache,
1541it will still appear as if the full memory access had taken place as far as the
1542other CPUs are concerned since the cache coherency mechanisms will migrate the
1543cacheline over to the accessing CPU and propagate the effects upon conflict.
1544
1545The CPU core may execute instructions in any order it deems fit, provided the
1546expected program causality appears to be maintained. Some of the instructions
1547generate load and store operations which then go into the queue of memory
1548accesses to be performed. The core may place these in the queue in any order
1549it wishes, and continue execution until it is forced to wait for an instruction
1550to complete.
1551
1552What memory barriers are concerned with is controlling the order in which
1553accesses cross from the CPU side of things to the memory side of things, and
1554the order in which the effects are perceived to happen by the other observers
1555in the system.
1556
1557[!] Memory barriers are _not_ needed within a given CPU, as CPUs always see
1558their own loads and stores as if they had happened in program order.
1559
1560[!] MMIO or other device accesses may bypass the cache system. This depends on
1561the properties of the memory window through which devices are accessed and/or
1562the use of any special device communication instructions the CPU may have.
1563
1564
1565CACHE COHERENCY
1566---------------
1567
1568Life isn't quite as simple as it may appear above, however: for while the
1569caches are expected to be coherent, there's no guarantee that that coherency
1570will be ordered. This means that whilst changes made on one CPU will
1571eventually become visible on all CPUs, there's no guarantee that they will
1572become apparent in the same order on those other CPUs.
1573
1574
1575Consider dealing with a system that has pair of CPUs (1 & 2), each of which has
1576a pair of parallel data caches (CPU 1 has A/B, and CPU 2 has C/D):
1577
1578 :
1579 : +--------+
1580 : +---------+ | |
1581 +--------+ : +--->| Cache A |<------->| |
1582 | | : | +---------+ | |
1583 | CPU 1 |<---+ | |
1584 | | : | +---------+ | |
1585 +--------+ : +--->| Cache B |<------->| |
1586 : +---------+ | |
1587 : | Memory |
1588 : +---------+ | System |
1589 +--------+ : +--->| Cache C |<------->| |
1590 | | : | +---------+ | |
1591 | CPU 2 |<---+ | |
1592 | | : | +---------+ | |
1593 +--------+ : +--->| Cache D |<------->| |
1594 : +---------+ | |
1595 : +--------+
1596 :
1597
1598Imagine the system has the following properties:
1599
1600 (*) an odd-numbered cache line may be in cache A, cache C or it may still be
1601 resident in memory;
1602
1603 (*) an even-numbered cache line may be in cache B, cache D or it may still be
1604 resident in memory;
1605
1606 (*) whilst the CPU core is interrogating one cache, the other cache may be
1607 making use of the bus to access the rest of the system - perhaps to
1608 displace a dirty cacheline or to do a speculative load;
1609
1610 (*) each cache has a queue of operations that need to be applied to that cache
1611 to maintain coherency with the rest of the system;
1612
1613 (*) the coherency queue is not flushed by normal loads to lines already
1614 present in the cache, even though the contents of the queue may
1615 potentially effect those loads.
1616
1617Imagine, then, that two writes are made on the first CPU, with a write barrier
1618between them to guarantee that they will appear to reach that CPU's caches in
1619the requisite order:
1620
1621 CPU 1 CPU 2 COMMENT
1622 =============== =============== =======================================
1623 u == 0, v == 1 and p == &u, q == &u
1624 v = 2;
1625 smp_wmb(); Make sure change to v visible before
1626 change to p
1627 <A:modify v=2> v is now in cache A exclusively
1628 p = &v;
1629 <B:modify p=&v> p is now in cache B exclusively
1630
1631The write memory barrier forces the other CPUs in the system to perceive that
1632the local CPU's caches have apparently been updated in the correct order. But
1633now imagine that the second CPU that wants to read those values:
1634
1635 CPU 1 CPU 2 COMMENT
1636 =============== =============== =======================================
1637 ...
1638 q = p;
1639 x = *q;
1640
1641The above pair of reads may then fail to happen in expected order, as the
1642cacheline holding p may get updated in one of the second CPU's caches whilst
1643the update to the cacheline holding v is delayed in the other of the second
1644CPU's caches by some other cache event:
1645
1646 CPU 1 CPU 2 COMMENT
1647 =============== =============== =======================================
1648 u == 0, v == 1 and p == &u, q == &u
1649 v = 2;
1650 smp_wmb();
1651 <A:modify v=2> <C:busy>
1652 <C:queue v=2>
1653 p = &b; q = p;
1654 <D:request p>
1655 <B:modify p=&v> <D:commit p=&v>
1656 <D:read p>
1657 x = *q;
1658 <C:read *q> Reads from v before v updated in cache
1659 <C:unbusy>
1660 <C:commit v=2>
1661
1662Basically, whilst both cachelines will be updated on CPU 2 eventually, there's
1663no guarantee that, without intervention, the order of update will be the same
1664as that committed on CPU 1.
1665
1666
1667To intervene, we need to interpolate a data dependency barrier or a read
1668barrier between the loads. This will force the cache to commit its coherency
1669queue before processing any further requests:
1670
1671 CPU 1 CPU 2 COMMENT
1672 =============== =============== =======================================
1673 u == 0, v == 1 and p == &u, q == &u
1674 v = 2;
1675 smp_wmb();
1676 <A:modify v=2> <C:busy>
1677 <C:queue v=2>
1678 p = &b; q = p;
1679 <D:request p>
1680 <B:modify p=&v> <D:commit p=&v>
1681 <D:read p>
1682 smp_read_barrier_depends()
1683 <C:unbusy>
1684 <C:commit v=2>
1685 x = *q;
1686 <C:read *q> Reads from v after v updated in cache
1687
1688
1689This sort of problem can be encountered on DEC Alpha processors as they have a
1690split cache that improves performance by making better use of the data bus.
1691Whilst most CPUs do imply a data dependency barrier on the read when a memory
1692access depends on a read, not all do, so it may not be relied on.
1693
1694Other CPUs may also have split caches, but must coordinate between the various
1695cachelets for normal memory accesss. The semantics of the Alpha removes the
1696need for coordination in absence of memory barriers.
1697
1698
1699CACHE COHERENCY VS DMA
1700----------------------
1701
1702Not all systems maintain cache coherency with respect to devices doing DMA. In
1703such cases, a device attempting DMA may obtain stale data from RAM because
1704dirty cache lines may be resident in the caches of various CPUs, and may not
1705have been written back to RAM yet. To deal with this, the appropriate part of
1706the kernel must flush the overlapping bits of cache on each CPU (and maybe
1707invalidate them as well).
1708
1709In addition, the data DMA'd to RAM by a device may be overwritten by dirty
1710cache lines being written back to RAM from a CPU's cache after the device has
1711installed its own data, or cache lines simply present in a CPUs cache may
1712simply obscure the fact that RAM has been updated, until at such time as the
1713cacheline is discarded from the CPU's cache and reloaded. To deal with this,
1714the appropriate part of the kernel must invalidate the overlapping bits of the
1715cache on each CPU.
1716
1717See Documentation/cachetlb.txt for more information on cache management.
1718
1719
1720CACHE COHERENCY VS MMIO
1721-----------------------
1722
1723Memory mapped I/O usually takes place through memory locations that are part of
1724a window in the CPU's memory space that have different properties assigned than
1725the usual RAM directed window.
1726
1727Amongst these properties is usually the fact that such accesses bypass the
1728caching entirely and go directly to the device buses. This means MMIO accesses
1729may, in effect, overtake accesses to cached memory that were emitted earlier.
1730A memory barrier isn't sufficient in such a case, but rather the cache must be
1731flushed between the cached memory write and the MMIO access if the two are in
1732any way dependent.
1733
1734
1735=========================
1736THE THINGS CPUS GET UP TO
1737=========================
1738
1739A programmer might take it for granted that the CPU will perform memory
1740operations in exactly the order specified, so that if a CPU is, for example,
1741given the following piece of code to execute:
1742
1743 a = *A;
1744 *B = b;
1745 c = *C;
1746 d = *D;
1747 *E = e;
1748
1749They would then expect that the CPU will complete the memory operation for each
1750instruction before moving on to the next one, leading to a definite sequence of
1751operations as seen by external observers in the system:
1752
1753 LOAD *A, STORE *B, LOAD *C, LOAD *D, STORE *E.
1754
1755
1756Reality is, of course, much messier. With many CPUs and compilers, the above
1757assumption doesn't hold because:
1758
1759 (*) loads are more likely to need to be completed immediately to permit
1760 execution progress, whereas stores can often be deferred without a
1761 problem;
1762
1763 (*) loads may be done speculatively, and the result discarded should it prove
1764 to have been unnecessary;
1765
1766 (*) loads may be done speculatively, leading to the result having being
1767 fetched at the wrong time in the expected sequence of events;
1768
1769 (*) the order of the memory accesses may be rearranged to promote better use
1770 of the CPU buses and caches;
1771
1772 (*) loads and stores may be combined to improve performance when talking to
1773 memory or I/O hardware that can do batched accesses of adjacent locations,
1774 thus cutting down on transaction setup costs (memory and PCI devices may
1775 both be able to do this); and
1776
1777 (*) the CPU's data cache may affect the ordering, and whilst cache-coherency
1778 mechanisms may alleviate this - once the store has actually hit the cache
1779 - there's no guarantee that the coherency management will be propagated in
1780 order to other CPUs.
1781
1782So what another CPU, say, might actually observe from the above piece of code
1783is:
1784
1785 LOAD *A, ..., LOAD {*C,*D}, STORE *E, STORE *B
1786
1787 (Where "LOAD {*C,*D}" is a combined load)
1788
1789
1790However, it is guaranteed that a CPU will be self-consistent: it will see its
1791_own_ accesses appear to be correctly ordered, without the need for a memory
1792barrier. For instance with the following code:
1793
1794 U = *A;
1795 *A = V;
1796 *A = W;
1797 X = *A;
1798 *A = Y;
1799 Z = *A;
1800
1801and assuming no intervention by an external influence, it can be assumed that
1802the final result will appear to be:
1803
1804 U == the original value of *A
1805 X == W
1806 Z == Y
1807 *A == Y
1808
1809The code above may cause the CPU to generate the full sequence of memory
1810accesses:
1811
1812 U=LOAD *A, STORE *A=V, STORE *A=W, X=LOAD *A, STORE *A=Y, Z=LOAD *A
1813
1814in that order, but, without intervention, the sequence may have almost any
1815combination of elements combined or discarded, provided the program's view of
1816the world remains consistent.
1817
1818The compiler may also combine, discard or defer elements of the sequence before
1819the CPU even sees them.
1820
1821For instance:
1822
1823 *A = V;
1824 *A = W;
1825
1826may be reduced to:
1827
1828 *A = W;
1829
1830since, without a write barrier, it can be assumed that the effect of the
1831storage of V to *A is lost. Similarly:
1832
1833 *A = Y;
1834 Z = *A;
1835
1836may, without a memory barrier, be reduced to:
1837
1838 *A = Y;
1839 Z = Y;
1840
1841and the LOAD operation never appear outside of the CPU.
1842
1843
1844AND THEN THERE'S THE ALPHA
1845--------------------------
1846
1847The DEC Alpha CPU is one of the most relaxed CPUs there is. Not only that,
1848some versions of the Alpha CPU have a split data cache, permitting them to have
1849two semantically related cache lines updating at separate times. This is where
1850the data dependency barrier really becomes necessary as this synchronises both
1851caches with the memory coherence system, thus making it seem like pointer
1852changes vs new data occur in the right order.
1853
1854The Alpha defines the Linux's kernel's memory barrier model.
1855
1856See the subsection on "Cache Coherency" above.
1857
1858
1859==========
1860REFERENCES
1861==========
1862
1863Alpha AXP Architecture Reference Manual, Second Edition (Sites & Witek,
1864Digital Press)
1865 Chapter 5.2: Physical Address Space Characteristics
1866 Chapter 5.4: Caches and Write Buffers
1867 Chapter 5.5: Data Sharing
1868 Chapter 5.6: Read/Write Ordering
1869
1870AMD64 Architecture Programmer's Manual Volume 2: System Programming
1871 Chapter 7.1: Memory-Access Ordering
1872 Chapter 7.4: Buffering and Combining Memory Writes
1873
1874IA-32 Intel Architecture Software Developer's Manual, Volume 3:
1875System Programming Guide
1876 Chapter 7.1: Locked Atomic Operations
1877 Chapter 7.2: Memory Ordering
1878 Chapter 7.4: Serializing Instructions
1879
1880The SPARC Architecture Manual, Version 9
1881 Chapter 8: Memory Models
1882 Appendix D: Formal Specification of the Memory Models
1883 Appendix J: Programming with the Memory Models
1884
1885UltraSPARC Programmer Reference Manual
1886 Chapter 5: Memory Accesses and Cacheability
1887 Chapter 15: Sparc-V9 Memory Models
1888
1889UltraSPARC III Cu User's Manual
1890 Chapter 9: Memory Models
1891
1892UltraSPARC IIIi Processor User's Manual
1893 Chapter 8: Memory Models
1894
1895UltraSPARC Architecture 2005
1896 Chapter 9: Memory
1897 Appendix D: Formal Specifications of the Memory Models
1898
1899UltraSPARC T1 Supplement to the UltraSPARC Architecture 2005
1900 Chapter 8: Memory Models
1901 Appendix F: Caches and Cache Coherency
1902
1903Solaris Internals, Core Kernel Architecture, p63-68:
1904 Chapter 3.3: Hardware Considerations for Locks and
1905 Synchronization
1906
1907Unix Systems for Modern Architectures, Symmetric Multiprocessing and Caching
1908for Kernel Programmers:
1909 Chapter 13: Other Memory Models
1910
1911Intel Itanium Architecture Software Developer's Manual: Volume 1:
1912 Section 2.6: Speculation
1913 Section 4.4: Memory Access
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt
index 4fc8e9874320..aaf99d5f0dad 100644
--- a/Documentation/networking/packet_mmap.txt
+++ b/Documentation/networking/packet_mmap.txt
@@ -254,7 +254,7 @@ and, the number of frames be
254 254
255 <block number> * <block size> / <frame size> 255 <block number> * <block size> / <frame size>
256 256
257Suposse the following parameters, which apply for 2.6 kernel and an 257Suppose the following parameters, which apply for 2.6 kernel and an
258i386 architecture: 258i386 architecture:
259 259
260 <size-max> = 131072 bytes 260 <size-max> = 131072 bytes
diff --git a/Documentation/networking/tuntap.txt b/Documentation/networking/tuntap.txt
index ec3d109d787a..76750fb9151a 100644
--- a/Documentation/networking/tuntap.txt
+++ b/Documentation/networking/tuntap.txt
@@ -138,7 +138,7 @@ This means that you have to read/write IP packets when you are using tun and
138ethernet frames when using tap. 138ethernet frames when using tap.
139 139
1405. What is the difference between BPF and TUN/TAP driver? 1405. What is the difference between BPF and TUN/TAP driver?
141BFP is an advanced packet filter. It can be attached to existing 141BPF is an advanced packet filter. It can be attached to existing
142network interface. It does not provide a virtual network interface. 142network interface. It does not provide a virtual network interface.
143A TUN/TAP driver does provide a virtual network interface and it is possible 143A TUN/TAP driver does provide a virtual network interface and it is possible
144to attach BPF to this interface. 144to attach BPF to this interface.
diff --git a/Documentation/pcmcia/driver-changes.txt b/Documentation/pcmcia/driver-changes.txt
index 97420f08c786..4739c5c3face 100644
--- a/Documentation/pcmcia/driver-changes.txt
+++ b/Documentation/pcmcia/driver-changes.txt
@@ -1,5 +1,11 @@
1This file details changes in 2.6 which affect PCMCIA card driver authors: 1This file details changes in 2.6 which affect PCMCIA card driver authors:
2 2
3* New release helper (as of 2.6.17)
4 Instead of calling pcmcia_release_{configuration,io,irq,win}, all that's
5 necessary now is calling pcmcia_disable_device. As there is no valid
6 reason left to call pcmcia_release_io and pcmcia_release_irq, the
7 exports for them were removed.
8
3* Unify detach and REMOVAL event code, as well as attach and INSERTION 9* Unify detach and REMOVAL event code, as well as attach and INSERTION
4 code (as of 2.6.16) 10 code (as of 2.6.16)
5 void (*remove) (struct pcmcia_device *dev); 11 void (*remove) (struct pcmcia_device *dev);
diff --git a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt
index 1def6049784c..0ee2c7dfc482 100644
--- a/Documentation/sound/alsa/ALSA-Configuration.txt
+++ b/Documentation/sound/alsa/ALSA-Configuration.txt
@@ -120,6 +120,34 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
120 enable - enable card 120 enable - enable card
121 - Default: enabled, for PCI and ISA PnP cards 121 - Default: enabled, for PCI and ISA PnP cards
122 122
123 Module snd-adlib
124 ----------------
125
126 Module for AdLib FM cards.
127
128 port - port # for OPL chip
129
130 This module supports multiple cards. It does not support autoprobe, so
131 the port must be specified. For actual AdLib FM cards it will be 0x388.
132 Note that this card does not have PCM support and no mixer; only FM
133 synthesis.
134
135 Make sure you have "sbiload" from the alsa-tools package available and,
136 after loading the module, find out the assigned ALSA sequencer port
137 number through "sbiload -l". Example output:
138
139 Port Client name Port name
140 64:0 OPL2 FM synth OPL2 FM Port
141
142 Load the std.sb and drums.sb patches also supplied by sbiload:
143
144 sbiload -p 64:0 std.sb drums.sb
145
146 If you use this driver to drive an OPL3, you can use std.o3 and drums.o3
147 instead. To have the card produce sound, use aplaymidi from alsa-utils:
148
149 aplaymidi -p 64:0 foo.mid
150
123 Module snd-ad1816a 151 Module snd-ad1816a
124 ------------------ 152 ------------------
125 153
@@ -190,6 +218,15 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
190 218
191 The power-management is supported. 219 The power-management is supported.
192 220
221 Module snd-als300
222 -----------------
223
224 Module for Avance Logic ALS300 and ALS300+
225
226 This module supports multiple cards.
227
228 The power-management is supported.
229
193 Module snd-als4000 230 Module snd-als4000
194 ------------------ 231 ------------------
195 232
@@ -701,6 +738,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
701 uniwill 3-jack 738 uniwill 3-jack
702 F1734 2-jack 739 F1734 2-jack
703 lg LG laptop (m1 express dual) 740 lg LG laptop (m1 express dual)
741 lg-lw LG LW20 laptop
704 test for testing/debugging purpose, almost all controls can be 742 test for testing/debugging purpose, almost all controls can be
705 adjusted. Appearing only when compiled with 743 adjusted. Appearing only when compiled with
706 $CONFIG_SND_DEBUG=y 744 $CONFIG_SND_DEBUG=y
@@ -1013,6 +1051,23 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1013 1051
1014 The power-management is supported. 1052 The power-management is supported.
1015 1053
1054 Module snd-miro
1055 ---------------
1056
1057 Module for Miro soundcards: miroSOUND PCM 1 pro,
1058 miroSOUND PCM 12,
1059 miroSOUND PCM 20 Radio.
1060
1061 port - Port # (0x530,0x604,0xe80,0xf40)
1062 irq - IRQ # (5,7,9,10,11)
1063 dma1 - 1st dma # (0,1,3)
1064 dma2 - 2nd dma # (0,1)
1065 mpu_port - MPU-401 port # (0x300,0x310,0x320,0x330)
1066 mpu_irq - MPU-401 irq # (5,7,9,10)
1067 fm_port - FM Port # (0x388)
1068 wss - enable WSS mode
1069 ide - enable onboard ide support
1070
1016 Module snd-mixart 1071 Module snd-mixart
1017 ----------------- 1072 -----------------
1018 1073
@@ -1202,6 +1257,20 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
1202 1257
1203 The power-management is supported. 1258 The power-management is supported.
1204 1259
1260 Module snd-riptide
1261 ------------------
1262
1263 Module for Conexant Riptide chip
1264
1265 joystick_port - Joystick port # (default: 0x200)
1266 mpu_port - MPU401 port # (default: 0x330)
1267 opl3_port - OPL3 port # (default: 0x388)
1268
1269 This module supports multiple cards.
1270 The driver requires the firmware loader support on kernel.
1271 You need to install the firmware file "riptide.hex" to the standard
1272 firmware path (e.g. /lib/firmware).
1273
1205 Module snd-rme32 1274 Module snd-rme32
1206 ---------------- 1275 ----------------
1207 1276
diff --git a/Documentation/video4linux/CARDLIST.saa7134 b/Documentation/video4linux/CARDLIST.saa7134
index 8c7195455963..bca50903233f 100644
--- a/Documentation/video4linux/CARDLIST.saa7134
+++ b/Documentation/video4linux/CARDLIST.saa7134
@@ -52,7 +52,7 @@
52 51 -> ProVideo PV952 [1540:9524] 52 51 -> ProVideo PV952 [1540:9524]
53 52 -> AverMedia AverTV/305 [1461:2108] 53 52 -> AverMedia AverTV/305 [1461:2108]
54 53 -> ASUS TV-FM 7135 [1043:4845] 54 53 -> ASUS TV-FM 7135 [1043:4845]
55 54 -> LifeView FlyTV Platinum FM [5168:0214,1489:0214] 55 54 -> LifeView FlyTV Platinum FM / Gold [5168:0214,1489:0214,5168:0304]
56 55 -> LifeView FlyDVB-T DUO [5168:0306] 56 55 -> LifeView FlyDVB-T DUO [5168:0306]
57 56 -> Avermedia AVerTV 307 [1461:a70a] 57 56 -> Avermedia AVerTV 307 [1461:a70a]
58 57 -> Avermedia AVerTV GO 007 FM [1461:f31f] 58 57 -> Avermedia AVerTV GO 007 FM [1461:f31f]
@@ -84,7 +84,7 @@
84 83 -> Terratec Cinergy 250 PCI TV [153b:1160] 84 83 -> Terratec Cinergy 250 PCI TV [153b:1160]
85 84 -> LifeView FlyDVB Trio [5168:0319] 85 84 -> LifeView FlyDVB Trio [5168:0319]
86 85 -> AverTV DVB-T 777 [1461:2c05] 86 85 -> AverTV DVB-T 777 [1461:2c05]
87 86 -> LifeView FlyDVB-T [5168:0301] 87 86 -> LifeView FlyDVB-T / Genius VideoWonder DVB-T [5168:0301,1489:0301]
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]
@@ -92,3 +92,4 @@
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]
diff --git a/Documentation/usb/et61x251.txt b/Documentation/video4linux/et61x251.txt
index 29340282ab5f..29340282ab5f 100644
--- a/Documentation/usb/et61x251.txt
+++ b/Documentation/video4linux/et61x251.txt
diff --git a/Documentation/usb/ibmcam.txt b/Documentation/video4linux/ibmcam.txt
index c25003644131..4a40a2e99451 100644
--- a/Documentation/usb/ibmcam.txt
+++ b/Documentation/video4linux/ibmcam.txt
@@ -122,7 +122,7 @@ WHAT YOU NEED:
122- A Linux box with USB support (2.3/2.4; 2.2 w/backport may work) 122- A Linux box with USB support (2.3/2.4; 2.2 w/backport may work)
123 123
124- A Video4Linux compatible frame grabber program such as xawtv. 124- A Video4Linux compatible frame grabber program such as xawtv.
125 125
126HOW TO COMPILE THE DRIVER: 126HOW TO COMPILE THE DRIVER:
127 127
128You need to compile the driver only if you are a developer 128You need to compile the driver only if you are a developer
diff --git a/Documentation/usb/ov511.txt b/Documentation/video4linux/ov511.txt
index a7fc0432bff1..142741e3c578 100644
--- a/Documentation/usb/ov511.txt
+++ b/Documentation/video4linux/ov511.txt
@@ -9,7 +9,7 @@ INTRODUCTION:
9 9
10This is a driver for the OV511, a USB-only chip used in many "webcam" devices. 10This is a driver for the OV511, a USB-only chip used in many "webcam" devices.
11Any camera using the OV511/OV511+ and the OV6620/OV7610/20/20AE should work. 11Any camera using the OV511/OV511+ and the OV6620/OV7610/20/20AE should work.
12Video capture devices that use the Philips SAA7111A decoder also work. It 12Video capture devices that use the Philips SAA7111A decoder also work. It
13supports streaming and capture of color or monochrome video via the Video4Linux 13supports streaming and capture of color or monochrome video via the Video4Linux
14API. Most V4L apps are compatible with it. Most resolutions with a width and 14API. Most V4L apps are compatible with it. Most resolutions with a width and
15height that are a multiple of 8 are supported. 15height that are a multiple of 8 are supported.
@@ -52,15 +52,15 @@ from it:
52 52
53 chmod 666 /dev/video 53 chmod 666 /dev/video
54 chmod 666 /dev/video0 (if necessary) 54 chmod 666 /dev/video0 (if necessary)
55 55
56Now you are ready to run a video app! Both vidcat and xawtv work well for me 56Now you are ready to run a video app! Both vidcat and xawtv work well for me
57at 640x480. 57at 640x480.
58 58
59[Using vidcat:] 59[Using vidcat:]
60 60
61 vidcat -s 640x480 -p c > test.jpg 61 vidcat -s 640x480 -p c > test.jpg
62 xview test.jpg 62 xview test.jpg
63 63
64[Using xawtv:] 64[Using xawtv:]
65 65
66From the main xawtv directory: 66From the main xawtv directory:
@@ -70,7 +70,7 @@ From the main xawtv directory:
70 make 70 make
71 make install 71 make install
72 72
73Now you should be able to run xawtv. Right click for the options dialog. 73Now you should be able to run xawtv. Right click for the options dialog.
74 74
75MODULE PARAMETERS: 75MODULE PARAMETERS:
76 76
@@ -286,4 +286,3 @@ Randy Dunlap, and others. Big thanks to them for their pioneering work on that
286and the USB stack. Thanks to Bret Wallach for getting camera reg IO, ISOC, and 286and the USB stack. Thanks to Bret Wallach for getting camera reg IO, ISOC, and
287image capture working. Thanks to Orion Sky Lawlor, Kevin Moore, and Claudio 287image capture working. Thanks to Orion Sky Lawlor, Kevin Moore, and Claudio
288Matsuoka for their work as well. 288Matsuoka for their work as well.
289
diff --git a/Documentation/usb/se401.txt b/Documentation/video4linux/se401.txt
index 7b9d1c960a10..7b9d1c960a10 100644
--- a/Documentation/usb/se401.txt
+++ b/Documentation/video4linux/se401.txt
diff --git a/Documentation/usb/sn9c102.txt b/Documentation/video4linux/sn9c102.txt
index b957beae5607..142920bc011f 100644
--- a/Documentation/usb/sn9c102.txt
+++ b/Documentation/video4linux/sn9c102.txt
@@ -174,7 +174,7 @@ Module parameters are listed below:
174------------------------------------------------------------------------------- 174-------------------------------------------------------------------------------
175Name: video_nr 175Name: video_nr
176Type: short array (min = 0, max = 64) 176Type: short array (min = 0, max = 64)
177Syntax: <-1|n[,...]> 177Syntax: <-1|n[,...]>
178Description: Specify V4L2 minor mode number: 178Description: Specify V4L2 minor mode number:
179 -1 = use next available 179 -1 = use next available
180 n = use minor number n 180 n = use minor number n
@@ -187,7 +187,7 @@ Default: -1
187------------------------------------------------------------------------------- 187-------------------------------------------------------------------------------
188Name: force_munmap 188Name: force_munmap
189Type: bool array (min = 0, max = 64) 189Type: bool array (min = 0, max = 64)
190Syntax: <0|1[,...]> 190Syntax: <0|1[,...]>
191Description: Force the application to unmap previously mapped buffer memory 191Description: Force the application to unmap previously mapped buffer memory
192 before calling any VIDIOC_S_CROP or VIDIOC_S_FMT ioctl's. Not 192 before calling any VIDIOC_S_CROP or VIDIOC_S_FMT ioctl's. Not
193 all the applications support this feature. This parameter is 193 all the applications support this feature. This parameter is
@@ -206,7 +206,7 @@ Default: 2
206------------------------------------------------------------------------------- 206-------------------------------------------------------------------------------
207Name: debug 207Name: debug
208Type: ushort 208Type: ushort
209Syntax: <n> 209Syntax: <n>
210Description: Debugging information level, from 0 to 3: 210Description: Debugging information level, from 0 to 3:
211 0 = none (use carefully) 211 0 = none (use carefully)
212 1 = critical errors 212 1 = critical errors
@@ -267,7 +267,7 @@ The sysfs interface also provides the "frame_header" entry, which exports the
267frame header of the most recent requested and captured video frame. The header 267frame header of the most recent requested and captured video frame. The header
268is always 18-bytes long and is appended to every video frame by the SN9C10x 268is always 18-bytes long and is appended to every video frame by the SN9C10x
269controllers. As an example, this additional information can be used by the user 269controllers. As an example, this additional information can be used by the user
270application for implementing auto-exposure features via software. 270application for implementing auto-exposure features via software.
271 271
272The following table describes the frame header: 272The following table describes the frame header:
273 273
@@ -441,7 +441,7 @@ blue pixels in one video frame. Each pixel is associated with a 8-bit long
441value and is disposed in memory according to the pattern shown below: 441value and is disposed in memory according to the pattern shown below:
442 442
443B[0] G[1] B[2] G[3] ... B[m-2] G[m-1] 443B[0] G[1] B[2] G[3] ... B[m-2] G[m-1]
444G[m] R[m+1] G[m+2] R[m+2] ... G[2m-2] R[2m-1] 444G[m] R[m+1] G[m+2] R[m+2] ... G[2m-2] R[2m-1]
445... 445...
446... B[(n-1)(m-2)] G[(n-1)(m-1)] 446... B[(n-1)(m-2)] G[(n-1)(m-1)]
447... G[n(m-2)] R[n(m-1)] 447... G[n(m-2)] R[n(m-1)]
@@ -472,12 +472,12 @@ The pixel reference value is calculated as follows:
472The algorithm purely describes the conversion from compressed Bayer code used 472The algorithm purely describes the conversion from compressed Bayer code used
473in the SN9C10x chips to uncompressed Bayer. Additional steps are required to 473in the SN9C10x chips to uncompressed Bayer. Additional steps are required to
474convert this to a color image (i.e. a color interpolation algorithm). 474convert this to a color image (i.e. a color interpolation algorithm).
475 475
476The following Huffman codes have been found: 476The following Huffman codes have been found:
4770: +0 (relative to reference pixel value) 4770: +0 (relative to reference pixel value)
478100: +4 478100: +4
479101: -4? 479101: -4?
4801110xxxx: set absolute value to xxxx.0000 4801110xxxx: set absolute value to xxxx.0000
4811101: +11 4811101: +11
4821111: -11 4821111: -11
48311001: +20 48311001: +20
diff --git a/Documentation/usb/stv680.txt b/Documentation/video4linux/stv680.txt
index 6448041e7a37..4f8946f32f51 100644
--- a/Documentation/usb/stv680.txt
+++ b/Documentation/video4linux/stv680.txt
@@ -5,15 +5,15 @@ Copyright, 2001, Kevin Sisson
5 5
6INTRODUCTION: 6INTRODUCTION:
7 7
8STMicroelectronics produces the STV0680B chip, which comes in two 8STMicroelectronics produces the STV0680B chip, which comes in two
9types, -001 and -003. The -003 version allows the recording and downloading 9types, -001 and -003. The -003 version allows the recording and downloading
10of sound clips from the camera, and allows a flash attachment. Otherwise, 10of sound clips from the camera, and allows a flash attachment. Otherwise,
11it uses the same commands as the -001 version. Both versions support a 11it uses the same commands as the -001 version. Both versions support a
12variety of SDRAM sizes and sensors, allowing for a maximum of 26 VGA or 20 12variety of SDRAM sizes and sensors, allowing for a maximum of 26 VGA or 20
13CIF pictures. The STV0680 supports either a serial or a usb interface, and 13CIF pictures. The STV0680 supports either a serial or a usb interface, and
14video is possible through the usb interface. 14video is possible through the usb interface.
15 15
16The following cameras are known to work with this driver, although any 16The following cameras are known to work with this driver, although any
17camera with Vendor/Product codes of 0553/0202 should work: 17camera with Vendor/Product codes of 0553/0202 should work:
18 18
19Aiptek Pencam (various models) 19Aiptek Pencam (various models)
@@ -34,15 +34,15 @@ http://www.linux-usb.org
34MODULE OPTIONS: 34MODULE OPTIONS:
35 35
36When the driver is compiled as a module, you can set a "swapRGB=1" 36When the driver is compiled as a module, you can set a "swapRGB=1"
37option, if necessary, for those applications that require it 37option, if necessary, for those applications that require it
38(such as xawtv). However, the driver should detect and set this 38(such as xawtv). However, the driver should detect and set this
39automatically, so this option should not normally be used. 39automatically, so this option should not normally be used.
40 40
41 41
42KNOWN PROBLEMS: 42KNOWN PROBLEMS:
43 43
44The driver seems to work better with the usb-ohci than the usb-uhci host 44The driver seems to work better with the usb-ohci than the usb-uhci host
45controller driver. 45controller driver.
46 46
47HELP: 47HELP:
48 48
@@ -50,6 +50,4 @@ The latest info on this driver can be found at:
50http://personal.clt.bellsouth.net/~kjsisson or at 50http://personal.clt.bellsouth.net/~kjsisson or at
51http://stv0680-usb.sourceforge.net 51http://stv0680-usb.sourceforge.net
52 52
53Any questions to me can be send to: kjsisson@bellsouth.net 53Any questions to me can be send to: kjsisson@bellsouth.net \ No newline at end of file
54
55
diff --git a/Documentation/usb/w9968cf.txt b/Documentation/video4linux/w9968cf.txt
index 9d46cd0b19e3..3b704f2aae6d 100644
--- a/Documentation/usb/w9968cf.txt
+++ b/Documentation/video4linux/w9968cf.txt
@@ -1,5 +1,5 @@
1 1
2 W996[87]CF JPEG USB Dual Mode Camera Chip 2 W996[87]CF JPEG USB Dual Mode Camera Chip
3 Driver for Linux 2.6 (basic version) 3 Driver for Linux 2.6 (basic version)
4 ========================================= 4 =========================================
5 5
@@ -115,7 +115,7 @@ additional testing and full support, would be much appreciated.
115====================== 115======================
116For it to work properly, the driver needs kernel support for Video4Linux, USB 116For it to work properly, the driver needs kernel support for Video4Linux, USB
117and I2C, and the "ovcamchip" module for the image sensor. Make sure you are not 117and I2C, and the "ovcamchip" module for the image sensor. Make sure you are not
118actually using any external "ovcamchip" module, given that the W996[87]CF 118actually using any external "ovcamchip" module, given that the W996[87]CF
119driver depends on the version of the module present in the official kernels. 119driver depends on the version of the module present in the official kernels.
120 120
121The following options of the kernel configuration file must be enabled and 121The following options of the kernel configuration file must be enabled and
@@ -197,16 +197,16 @@ Note: The kernel must be compiled with the CONFIG_KMOD option
197 enabled for the 'ovcamchip' module to be loaded and for 197 enabled for the 'ovcamchip' module to be loaded and for
198 this parameter to be present. 198 this parameter to be present.
199------------------------------------------------------------------------------- 199-------------------------------------------------------------------------------
200Name: simcams 200Name: simcams
201Type: int 201Type: int
202Syntax: <n> 202Syntax: <n>
203Description: Number of cameras allowed to stream simultaneously. 203Description: Number of cameras allowed to stream simultaneously.
204 n may vary from 0 to 32. 204 n may vary from 0 to 32.
205Default: 32 205Default: 32
206------------------------------------------------------------------------------- 206-------------------------------------------------------------------------------
207Name: video_nr 207Name: video_nr
208Type: int array (min = 0, max = 32) 208Type: int array (min = 0, max = 32)
209Syntax: <-1|n[,...]> 209Syntax: <-1|n[,...]>
210Description: Specify V4L minor mode number. 210Description: Specify V4L minor mode number.
211 -1 = use next available 211 -1 = use next available
212 n = use minor number n 212 n = use minor number n
@@ -219,7 +219,7 @@ Default: -1
219------------------------------------------------------------------------------- 219-------------------------------------------------------------------------------
220Name: packet_size 220Name: packet_size
221Type: int array (min = 0, max = 32) 221Type: int array (min = 0, max = 32)
222Syntax: <n[,...]> 222Syntax: <n[,...]>
223Description: Specify the maximum data payload size in bytes for alternate 223Description: Specify the maximum data payload size in bytes for alternate
224 settings, for each device. n is scaled between 63 and 1023. 224 settings, for each device. n is scaled between 63 and 1023.
225Default: 1023 225Default: 1023
@@ -234,7 +234,7 @@ Default: 2
234------------------------------------------------------------------------------- 234-------------------------------------------------------------------------------
235Name: double_buffer 235Name: double_buffer
236Type: bool array (min = 0, max = 32) 236Type: bool array (min = 0, max = 32)
237Syntax: <0|1[,...]> 237Syntax: <0|1[,...]>
238Description: Hardware double buffering: 0 disabled, 1 enabled. 238Description: Hardware double buffering: 0 disabled, 1 enabled.
239 It should be enabled if you want smooth video output: if you 239 It should be enabled if you want smooth video output: if you
240 obtain out of sync. video, disable it, or try to 240 obtain out of sync. video, disable it, or try to
@@ -243,13 +243,13 @@ Default: 1 for every device.
243------------------------------------------------------------------------------- 243-------------------------------------------------------------------------------
244Name: clamping 244Name: clamping
245Type: bool array (min = 0, max = 32) 245Type: bool array (min = 0, max = 32)
246Syntax: <0|1[,...]> 246Syntax: <0|1[,...]>
247Description: Video data clamping: 0 disabled, 1 enabled. 247Description: Video data clamping: 0 disabled, 1 enabled.
248Default: 0 for every device. 248Default: 0 for every device.
249------------------------------------------------------------------------------- 249-------------------------------------------------------------------------------
250Name: filter_type 250Name: filter_type
251Type: int array (min = 0, max = 32) 251Type: int array (min = 0, max = 32)
252Syntax: <0|1|2[,...]> 252Syntax: <0|1|2[,...]>
253Description: Video filter type. 253Description: Video filter type.
254 0 none, 1 (1-2-1) 3-tap filter, 2 (2-3-6-3-2) 5-tap filter. 254 0 none, 1 (1-2-1) 3-tap filter, 2 (2-3-6-3-2) 5-tap filter.
255 The filter is used to reduce noise and aliasing artifacts 255 The filter is used to reduce noise and aliasing artifacts
@@ -258,13 +258,13 @@ Default: 0 for every device.
258------------------------------------------------------------------------------- 258-------------------------------------------------------------------------------
259Name: largeview 259Name: largeview
260Type: bool array (min = 0, max = 32) 260Type: bool array (min = 0, max = 32)
261Syntax: <0|1[,...]> 261Syntax: <0|1[,...]>
262Description: Large view: 0 disabled, 1 enabled. 262Description: Large view: 0 disabled, 1 enabled.
263Default: 1 for every device. 263Default: 1 for every device.
264------------------------------------------------------------------------------- 264-------------------------------------------------------------------------------
265Name: upscaling 265Name: upscaling
266Type: bool array (min = 0, max = 32) 266Type: bool array (min = 0, max = 32)
267Syntax: <0|1[,...]> 267Syntax: <0|1[,...]>
268Description: Software scaling (for non-compressed video only): 268Description: Software scaling (for non-compressed video only):
269 0 disabled, 1 enabled. 269 0 disabled, 1 enabled.
270 Disable it if you have a slow CPU or you don't have enough 270 Disable it if you have a slow CPU or you don't have enough
@@ -341,8 +341,8 @@ Default: 50 for every device.
341------------------------------------------------------------------------------- 341-------------------------------------------------------------------------------
342Name: bandingfilter 342Name: bandingfilter
343Type: bool array (min = 0, max = 32) 343Type: bool array (min = 0, max = 32)
344Syntax: <0|1[,...]> 344Syntax: <0|1[,...]>
345Description: Banding filter to reduce effects of fluorescent 345Description: Banding filter to reduce effects of fluorescent
346 lighting: 346 lighting:
347 0 disabled, 1 enabled. 347 0 disabled, 1 enabled.
348 This filter tries to reduce the pattern of horizontal 348 This filter tries to reduce the pattern of horizontal
@@ -374,7 +374,7 @@ Default: 0 for every device.
374------------------------------------------------------------------------------- 374-------------------------------------------------------------------------------
375Name: monochrome 375Name: monochrome
376Type: bool array (min = 0, max = 32) 376Type: bool array (min = 0, max = 32)
377Syntax: <0|1[,...]> 377Syntax: <0|1[,...]>
378Description: The image sensor is monochrome: 378Description: The image sensor is monochrome:
379 0 = no, 1 = yes 379 0 = no, 1 = yes
380Default: 0 for every device. 380Default: 0 for every device.
@@ -400,19 +400,19 @@ Default: 32768 for every device.
400------------------------------------------------------------------------------- 400-------------------------------------------------------------------------------
401Name: contrast 401Name: contrast
402Type: long array (min = 0, max = 32) 402Type: long array (min = 0, max = 32)
403Syntax: <n[,...]> 403Syntax: <n[,...]>
404Description: Set picture contrast (0-65535). 404Description: Set picture contrast (0-65535).
405Default: 50000 for every device. 405Default: 50000 for every device.
406------------------------------------------------------------------------------- 406-------------------------------------------------------------------------------
407Name: whiteness 407Name: whiteness
408Type: long array (min = 0, max = 32) 408Type: long array (min = 0, max = 32)
409Syntax: <n[,...]> 409Syntax: <n[,...]>
410Description: Set picture whiteness (0-65535). 410Description: Set picture whiteness (0-65535).
411Default: 32768 for every device. 411Default: 32768 for every device.
412------------------------------------------------------------------------------- 412-------------------------------------------------------------------------------
413Name: debug 413Name: debug
414Type: int 414Type: int
415Syntax: <n> 415Syntax: <n>
416Description: Debugging information level, from 0 to 6: 416Description: Debugging information level, from 0 to 6:
417 0 = none (use carefully) 417 0 = none (use carefully)
418 1 = critical errors 418 1 = critical errors
diff --git a/Documentation/usb/zc0301.txt b/Documentation/video4linux/zc0301.txt
index f55262c6733b..f55262c6733b 100644
--- a/Documentation/usb/zc0301.txt
+++ b/Documentation/video4linux/zc0301.txt