diff options
45 files changed, 617 insertions, 428 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 7086f0a90d1..971589a9752 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -17,7 +17,7 @@ are specified on the kernel command line with the module name plus | |||
17 | 17 | ||
18 | usbcore.blinkenlights=1 | 18 | usbcore.blinkenlights=1 |
19 | 19 | ||
20 | The text in square brackets at the beginning of the description state the | 20 | The text in square brackets at the beginning of the description states the |
21 | restrictions on the kernel for the said kernel parameter to be valid. The | 21 | restrictions on the kernel for the said kernel parameter to be valid. The |
22 | restrictions referred to are that the relevant option is valid if: | 22 | restrictions referred to are that the relevant option is valid if: |
23 | 23 | ||
@@ -27,8 +27,8 @@ restrictions referred to are that the relevant option is valid if: | |||
27 | APM Advanced Power Management support is enabled. | 27 | APM Advanced Power Management support is enabled. |
28 | AX25 Appropriate AX.25 support is enabled. | 28 | AX25 Appropriate AX.25 support is enabled. |
29 | CD Appropriate CD support is enabled. | 29 | CD Appropriate CD support is enabled. |
30 | DEVFS devfs support is enabled. | 30 | DEVFS devfs support is enabled. |
31 | DRM Direct Rendering Management support is enabled. | 31 | DRM Direct Rendering Management support is enabled. |
32 | EDD BIOS Enhanced Disk Drive Services (EDD) is enabled | 32 | EDD BIOS Enhanced Disk Drive Services (EDD) is enabled |
33 | EFI EFI Partitioning (GPT) is enabled | 33 | EFI EFI Partitioning (GPT) is enabled |
34 | EIDE EIDE/ATAPI support is enabled. | 34 | EIDE EIDE/ATAPI support is enabled. |
@@ -71,7 +71,7 @@ restrictions referred to are that the relevant option is valid if: | |||
71 | SERIAL Serial support is enabled. | 71 | SERIAL Serial support is enabled. |
72 | SMP The kernel is an SMP kernel. | 72 | SMP The kernel is an SMP kernel. |
73 | SPARC Sparc architecture is enabled. | 73 | SPARC Sparc architecture is enabled. |
74 | SWSUSP Software suspension is enabled. | 74 | SWSUSP Software suspend is enabled. |
75 | TS Appropriate touchscreen support is enabled. | 75 | TS Appropriate touchscreen support is enabled. |
76 | USB USB support is enabled. | 76 | USB USB support is enabled. |
77 | USBHID USB Human Interface Device support is enabled. | 77 | USBHID USB Human Interface Device support is enabled. |
@@ -105,13 +105,13 @@ running once the system is up. | |||
105 | See header of drivers/scsi/53c7xx.c. | 105 | See header of drivers/scsi/53c7xx.c. |
106 | See also Documentation/scsi/ncr53c7xx.txt. | 106 | See also Documentation/scsi/ncr53c7xx.txt. |
107 | 107 | ||
108 | acpi= [HW,ACPI] Advanced Configuration and Power Interface | 108 | acpi= [HW,ACPI] Advanced Configuration and Power Interface |
109 | Format: { force | off | ht | strict } | 109 | Format: { force | off | ht | strict | noirq } |
110 | force -- enable ACPI if default was off | 110 | force -- enable ACPI if default was off |
111 | off -- disable ACPI if default was on | 111 | off -- disable ACPI if default was on |
112 | noirq -- do not use ACPI for IRQ routing | 112 | noirq -- do not use ACPI for IRQ routing |
113 | ht -- run only enough ACPI to enable Hyper Threading | 113 | ht -- run only enough ACPI to enable Hyper Threading |
114 | strict -- Be less tolerant of platforms that are not | 114 | strict -- Be less tolerant of platforms that are not |
115 | strictly ACPI specification compliant. | 115 | strictly ACPI specification compliant. |
116 | 116 | ||
117 | See also Documentation/pm.txt, pci=noacpi | 117 | See also Documentation/pm.txt, pci=noacpi |
@@ -119,20 +119,23 @@ running once the system is up. | |||
119 | acpi_sleep= [HW,ACPI] Sleep options | 119 | acpi_sleep= [HW,ACPI] Sleep options |
120 | Format: { s3_bios, s3_mode } | 120 | Format: { s3_bios, s3_mode } |
121 | See Documentation/power/video.txt | 121 | See Documentation/power/video.txt |
122 | 122 | ||
123 | acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode | 123 | acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode |
124 | Format: { level | edge | high | low } | 124 | Format: { level | edge | high | low } |
125 | 125 | ||
126 | acpi_irq_balance [HW,ACPI] ACPI will balance active IRQs | 126 | acpi_irq_balance [HW,ACPI] |
127 | default in APIC mode | 127 | ACPI will balance active IRQs |
128 | default in APIC mode | ||
128 | 129 | ||
129 | acpi_irq_nobalance [HW,ACPI] ACPI will not move active IRQs (default) | 130 | acpi_irq_nobalance [HW,ACPI] |
130 | default in PIC mode | 131 | ACPI will not move active IRQs (default) |
132 | default in PIC mode | ||
131 | 133 | ||
132 | acpi_irq_pci= [HW,ACPI] If irq_balance, Clear listed IRQs for use by PCI | 134 | acpi_irq_pci= [HW,ACPI] If irq_balance, clear listed IRQs for |
135 | use by PCI | ||
133 | Format: <irq>,<irq>... | 136 | Format: <irq>,<irq>... |
134 | 137 | ||
135 | acpi_irq_isa= [HW,ACPI] If irq_balance, Mark listed IRQs used by ISA | 138 | acpi_irq_isa= [HW,ACPI] If irq_balance, mark listed IRQs used by ISA |
136 | Format: <irq>,<irq>... | 139 | Format: <irq>,<irq>... |
137 | 140 | ||
138 | acpi_osi= [HW,ACPI] empty param disables _OSI | 141 | acpi_osi= [HW,ACPI] empty param disables _OSI |
@@ -145,14 +148,14 @@ running once the system is up. | |||
145 | 148 | ||
146 | acpi_dbg_layer= [HW,ACPI] | 149 | acpi_dbg_layer= [HW,ACPI] |
147 | Format: <int> | 150 | Format: <int> |
148 | Each bit of the <int> indicates an acpi debug layer, | 151 | Each bit of the <int> indicates an ACPI debug layer, |
149 | 1: enable, 0: disable. It is useful for boot time | 152 | 1: enable, 0: disable. It is useful for boot time |
150 | debugging. After system has booted up, it can be set | 153 | debugging. After system has booted up, it can be set |
151 | via /proc/acpi/debug_layer. | 154 | via /proc/acpi/debug_layer. |
152 | 155 | ||
153 | acpi_dbg_level= [HW,ACPI] | 156 | acpi_dbg_level= [HW,ACPI] |
154 | Format: <int> | 157 | Format: <int> |
155 | Each bit of the <int> indicates an acpi debug level, | 158 | Each bit of the <int> indicates an ACPI debug level, |
156 | 1: enable, 0: disable. It is useful for boot time | 159 | 1: enable, 0: disable. It is useful for boot time |
157 | debugging. After system has booted up, it can be set | 160 | debugging. After system has booted up, it can be set |
158 | via /proc/acpi/debug_level. | 161 | via /proc/acpi/debug_level. |
@@ -161,12 +164,13 @@ running once the system is up. | |||
161 | 164 | ||
162 | acpi_generic_hotkey [HW,ACPI] | 165 | acpi_generic_hotkey [HW,ACPI] |
163 | Allow consolidated generic hotkey driver to | 166 | Allow consolidated generic hotkey driver to |
164 | over-ride platform specific driver. | 167 | override platform specific driver. |
165 | See also Documentation/acpi-hotkey.txt. | 168 | See also Documentation/acpi-hotkey.txt. |
166 | 169 | ||
167 | enable_timer_pin_1 [i386,x86-64] | 170 | enable_timer_pin_1 [i386,x86-64] |
168 | Enable PIN 1 of APIC timer | 171 | Enable PIN 1 of APIC timer |
169 | Can be useful to work around chipset bugs (in particular on some ATI chipsets) | 172 | Can be useful to work around chipset bugs |
173 | (in particular on some ATI chipsets). | ||
170 | The kernel tries to set a reasonable default. | 174 | The kernel tries to set a reasonable default. |
171 | 175 | ||
172 | disable_timer_pin_1 [i386,x86-64] | 176 | disable_timer_pin_1 [i386,x86-64] |
@@ -182,7 +186,7 @@ running once the system is up. | |||
182 | 186 | ||
183 | adlib= [HW,OSS] | 187 | adlib= [HW,OSS] |
184 | Format: <io> | 188 | Format: <io> |
185 | 189 | ||
186 | advansys= [HW,SCSI] | 190 | advansys= [HW,SCSI] |
187 | See header of drivers/scsi/advansys.c. | 191 | See header of drivers/scsi/advansys.c. |
188 | 192 | ||
@@ -192,7 +196,7 @@ running once the system is up. | |||
192 | aedsp16= [HW,OSS] Audio Excel DSP 16 | 196 | aedsp16= [HW,OSS] Audio Excel DSP 16 |
193 | Format: <io>,<irq>,<dma>,<mss_io>,<mpu_io>,<mpu_irq> | 197 | Format: <io>,<irq>,<dma>,<mss_io>,<mpu_io>,<mpu_irq> |
194 | See also header of sound/oss/aedsp16.c. | 198 | See also header of sound/oss/aedsp16.c. |
195 | 199 | ||
196 | aha152x= [HW,SCSI] | 200 | aha152x= [HW,SCSI] |
197 | See Documentation/scsi/aha152x.txt. | 201 | See Documentation/scsi/aha152x.txt. |
198 | 202 | ||
@@ -205,10 +209,6 @@ running once the system is up. | |||
205 | aic79xx= [HW,SCSI] | 209 | aic79xx= [HW,SCSI] |
206 | See Documentation/scsi/aic79xx.txt. | 210 | See Documentation/scsi/aic79xx.txt. |
207 | 211 | ||
208 | AM53C974= [HW,SCSI] | ||
209 | Format: <host-scsi-id>,<target-scsi-id>,<max-rate>,<max-offset> | ||
210 | See also header of drivers/scsi/AM53C974.c. | ||
211 | |||
212 | amijoy.map= [HW,JOY] Amiga joystick support | 212 | amijoy.map= [HW,JOY] Amiga joystick support |
213 | Map of devices attached to JOY0DAT and JOY1DAT | 213 | Map of devices attached to JOY0DAT and JOY1DAT |
214 | Format: <a>,<b> | 214 | Format: <a>,<b> |
@@ -219,23 +219,24 @@ running once the system is up. | |||
219 | connected to one of 16 gameports | 219 | connected to one of 16 gameports |
220 | Format: <type1>,<type2>,..<type16> | 220 | Format: <type1>,<type2>,..<type16> |
221 | 221 | ||
222 | apc= [HW,SPARC] Power management functions (SPARCstation-4/5 + deriv.) | 222 | apc= [HW,SPARC] |
223 | Power management functions (SPARCstation-4/5 + deriv.) | ||
223 | Format: noidle | 224 | Format: noidle |
224 | Disable APC CPU standby support. SPARCstation-Fox does | 225 | Disable APC CPU standby support. SPARCstation-Fox does |
225 | not play well with APC CPU idle - disable it if you have | 226 | not play well with APC CPU idle - disable it if you have |
226 | APC and your system crashes randomly. | 227 | APC and your system crashes randomly. |
227 | 228 | ||
228 | apic= [APIC,i386] Change the output verbosity whilst booting | 229 | apic= [APIC,i386] Change the output verbosity whilst booting |
229 | Format: { quiet (default) | verbose | debug } | 230 | Format: { quiet (default) | verbose | debug } |
230 | Change the amount of debugging information output | 231 | Change the amount of debugging information output |
231 | when initialising the APIC and IO-APIC components. | 232 | when initialising the APIC and IO-APIC components. |
232 | 233 | ||
233 | apm= [APM] Advanced Power Management | 234 | apm= [APM] Advanced Power Management |
234 | See header of arch/i386/kernel/apm.c. | 235 | See header of arch/i386/kernel/apm.c. |
235 | 236 | ||
236 | applicom= [HW] | 237 | applicom= [HW] |
237 | Format: <mem>,<irq> | 238 | Format: <mem>,<irq> |
238 | 239 | ||
239 | arcrimi= [HW,NET] ARCnet - "RIM I" (entirely mem-mapped) cards | 240 | arcrimi= [HW,NET] ARCnet - "RIM I" (entirely mem-mapped) cards |
240 | Format: <io>,<irq>,<nodeID> | 241 | Format: <io>,<irq>,<nodeID> |
241 | 242 | ||
@@ -250,38 +251,40 @@ running once the system is up. | |||
250 | 251 | ||
251 | atkbd.reset= [HW] Reset keyboard during initialization | 252 | atkbd.reset= [HW] Reset keyboard during initialization |
252 | 253 | ||
253 | atkbd.set= [HW] Select keyboard code set | 254 | atkbd.set= [HW] Select keyboard code set |
254 | Format: <int> (2 = AT (default) 3 = PS/2) | 255 | Format: <int> (2 = AT (default), 3 = PS/2) |
255 | 256 | ||
256 | atkbd.scroll= [HW] Enable scroll wheel on MS Office and similar | 257 | atkbd.scroll= [HW] Enable scroll wheel on MS Office and similar |
257 | keyboards | 258 | keyboards |
258 | 259 | ||
259 | atkbd.softraw= [HW] Choose between synthetic and real raw mode | 260 | atkbd.softraw= [HW] Choose between synthetic and real raw mode |
260 | Format: <bool> (0 = real, 1 = synthetic (default)) | 261 | Format: <bool> (0 = real, 1 = synthetic (default)) |
261 | 262 | ||
262 | atkbd.softrepeat= | 263 | atkbd.softrepeat= [HW] |
263 | [HW] Use software keyboard repeat | 264 | Use software keyboard repeat |
264 | 265 | ||
265 | autotest [IA64] | 266 | autotest [IA64] |
266 | 267 | ||
267 | awe= [HW,OSS] AWE32/SB32/AWE64 wave table synth | 268 | awe= [HW,OSS] AWE32/SB32/AWE64 wave table synth |
268 | Format: <io>,<memsize>,<isapnp> | 269 | Format: <io>,<memsize>,<isapnp> |
269 | 270 | ||
270 | aztcd= [HW,CD] Aztech CD268 CDROM driver | 271 | aztcd= [HW,CD] Aztech CD268 CDROM driver |
271 | Format: <io>,0x79 (?) | 272 | Format: <io>,0x79 (?) |
272 | 273 | ||
273 | baycom_epp= [HW,AX25] | 274 | baycom_epp= [HW,AX25] |
274 | Format: <io>,<mode> | 275 | Format: <io>,<mode> |
275 | 276 | ||
276 | baycom_par= [HW,AX25] BayCom Parallel Port AX.25 Modem | 277 | baycom_par= [HW,AX25] BayCom Parallel Port AX.25 Modem |
277 | Format: <io>,<mode> | 278 | Format: <io>,<mode> |
278 | See header of drivers/net/hamradio/baycom_par.c. | 279 | See header of drivers/net/hamradio/baycom_par.c. |
279 | 280 | ||
280 | baycom_ser_fdx= [HW,AX25] BayCom Serial Port AX.25 Modem (Full Duplex Mode) | 281 | baycom_ser_fdx= [HW,AX25] |
282 | BayCom Serial Port AX.25 Modem (Full Duplex Mode) | ||
281 | Format: <io>,<irq>,<mode>[,<baud>] | 283 | Format: <io>,<irq>,<mode>[,<baud>] |
282 | See header of drivers/net/hamradio/baycom_ser_fdx.c. | 284 | See header of drivers/net/hamradio/baycom_ser_fdx.c. |
283 | 285 | ||
284 | baycom_ser_hdx= [HW,AX25] BayCom Serial Port AX.25 Modem (Half Duplex Mode) | 286 | baycom_ser_hdx= [HW,AX25] |
287 | BayCom Serial Port AX.25 Modem (Half Duplex Mode) | ||
285 | Format: <io>,<irq>,<mode> | 288 | Format: <io>,<irq>,<mode> |
286 | See header of drivers/net/hamradio/baycom_ser_hdx.c. | 289 | See header of drivers/net/hamradio/baycom_ser_hdx.c. |
287 | 290 | ||
@@ -292,7 +295,8 @@ running once the system is up. | |||
292 | blkmtd_count= | 295 | blkmtd_count= |
293 | 296 | ||
294 | bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards) | 297 | bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards) |
295 | bttv.radio= Most important insmod options are available as kernel args too. | 298 | bttv.radio= Most important insmod options are available as |
299 | kernel args too. | ||
296 | bttv.pll= See Documentation/video4linux/bttv/Insmod-options | 300 | bttv.pll= See Documentation/video4linux/bttv/Insmod-options |
297 | bttv.tuner= and Documentation/video4linux/bttv/CARDLIST | 301 | bttv.tuner= and Documentation/video4linux/bttv/CARDLIST |
298 | 302 | ||
@@ -318,15 +322,17 @@ running once the system is up. | |||
318 | checkreqprot [SELINUX] Set initial checkreqprot flag value. | 322 | checkreqprot [SELINUX] Set initial checkreqprot flag value. |
319 | Format: { "0" | "1" } | 323 | Format: { "0" | "1" } |
320 | See security/selinux/Kconfig help text. | 324 | See security/selinux/Kconfig help text. |
321 | 0 -- check protection applied by kernel (includes any implied execute protection). | 325 | 0 -- check protection applied by kernel (includes |
326 | any implied execute protection). | ||
322 | 1 -- check protection requested by application. | 327 | 1 -- check protection requested by application. |
323 | Default value is set via a kernel config option. | 328 | Default value is set via a kernel config option. |
324 | Value can be changed at runtime via /selinux/checkreqprot. | 329 | Value can be changed at runtime via |
325 | 330 | /selinux/checkreqprot. | |
326 | clock= [BUGS=IA-32, HW] gettimeofday timesource override. | 331 | |
332 | clock= [BUGS=IA-32,HW] gettimeofday timesource override. | ||
327 | Forces specified timesource (if avaliable) to be used | 333 | Forces specified timesource (if avaliable) to be used |
328 | when calculating gettimeofday(). If specicified timesource | 334 | when calculating gettimeofday(). If specicified |
329 | is not avalible, it defaults to PIT. | 335 | timesource is not avalible, it defaults to PIT. |
330 | Format: { pit | tsc | cyclone | pmtmr } | 336 | Format: { pit | tsc | cyclone | pmtmr } |
331 | 337 | ||
332 | hpet= [IA-32,HPET] option to disable HPET and use PIT. | 338 | hpet= [IA-32,HPET] option to disable HPET and use PIT. |
@@ -336,17 +342,19 @@ running once the system is up. | |||
336 | Format: { auto | [<io>,][<irq>] } | 342 | Format: { auto | [<io>,][<irq>] } |
337 | 343 | ||
338 | com20020= [HW,NET] ARCnet - COM20020 chipset | 344 | com20020= [HW,NET] ARCnet - COM20020 chipset |
339 | Format: <io>[,<irq>[,<nodeID>[,<backplane>[,<ckp>[,<timeout>]]]]] | 345 | Format: |
346 | <io>[,<irq>[,<nodeID>[,<backplane>[,<ckp>[,<timeout>]]]]] | ||
340 | 347 | ||
341 | com90io= [HW,NET] ARCnet - COM90xx chipset (IO-mapped buffers) | 348 | com90io= [HW,NET] ARCnet - COM90xx chipset (IO-mapped buffers) |
342 | Format: <io>[,<irq>] | 349 | Format: <io>[,<irq>] |
343 | 350 | ||
344 | com90xx= [HW,NET] ARCnet - COM90xx chipset (memory-mapped buffers) | 351 | com90xx= [HW,NET] |
352 | ARCnet - COM90xx chipset (memory-mapped buffers) | ||
345 | Format: <io>[,<irq>[,<memstart>]] | 353 | Format: <io>[,<irq>[,<memstart>]] |
346 | 354 | ||
347 | condev= [HW,S390] console device | 355 | condev= [HW,S390] console device |
348 | conmode= | 356 | conmode= |
349 | 357 | ||
350 | console= [KNL] Output console device and options. | 358 | console= [KNL] Output console device and options. |
351 | 359 | ||
352 | tty<n> Use the virtual console device <n>. | 360 | tty<n> Use the virtual console device <n>. |
@@ -367,7 +375,8 @@ running once the system is up. | |||
367 | options are the same as for ttyS, above. | 375 | options are the same as for ttyS, above. |
368 | 376 | ||
369 | cpcihp_generic= [HW,PCI] Generic port I/O CompactPCI driver | 377 | cpcihp_generic= [HW,PCI] Generic port I/O CompactPCI driver |
370 | Format: <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>] | 378 | Format: |
379 | <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>] | ||
371 | 380 | ||
372 | cpia_pp= [HW,PPT] | 381 | cpia_pp= [HW,PPT] |
373 | Format: { parport<nr> | auto | none } | 382 | Format: { parport<nr> | auto | none } |
@@ -384,10 +393,10 @@ running once the system is up. | |||
384 | 393 | ||
385 | cs89x0_media= [HW,NET] | 394 | cs89x0_media= [HW,NET] |
386 | Format: { rj45 | aui | bnc } | 395 | Format: { rj45 | aui | bnc } |
387 | 396 | ||
388 | cyclades= [HW,SERIAL] Cyclades multi-serial port adapter. | 397 | cyclades= [HW,SERIAL] Cyclades multi-serial port adapter. |
389 | 398 | ||
390 | dasd= [HW,NET] | 399 | dasd= [HW,NET] |
391 | See header of drivers/s390/block/dasd_devmap.c. | 400 | See header of drivers/s390/block/dasd_devmap.c. |
392 | 401 | ||
393 | db9.dev[2|3]= [HW,JOY] Multisystem joystick support via parallel port | 402 | db9.dev[2|3]= [HW,JOY] Multisystem joystick support via parallel port |
@@ -406,7 +415,7 @@ running once the system is up. | |||
406 | 415 | ||
407 | dhash_entries= [KNL] | 416 | dhash_entries= [KNL] |
408 | Set number of hash buckets for dentry cache. | 417 | Set number of hash buckets for dentry cache. |
409 | 418 | ||
410 | digi= [HW,SERIAL] | 419 | digi= [HW,SERIAL] |
411 | IO parameters + enable/disable command. | 420 | IO parameters + enable/disable command. |
412 | 421 | ||
@@ -424,11 +433,11 @@ running once the system is up. | |||
424 | 433 | ||
425 | dtc3181e= [HW,SCSI] | 434 | dtc3181e= [HW,SCSI] |
426 | 435 | ||
427 | earlyprintk= [IA-32, X86-64] | 436 | earlyprintk= [IA-32,X86-64] |
428 | earlyprintk=vga | 437 | earlyprintk=vga |
429 | earlyprintk=serial[,ttySn[,baudrate]] | 438 | earlyprintk=serial[,ttySn[,baudrate]] |
430 | 439 | ||
431 | Append ,keep to not disable it when the real console | 440 | Append ",keep" to not disable it when the real console |
432 | takes over. | 441 | takes over. |
433 | 442 | ||
434 | Only vga or serial at a time, not both. | 443 | Only vga or serial at a time, not both. |
@@ -451,7 +460,7 @@ running once the system is up. | |||
451 | Format: {"of[f]" | "sk[ipmbr]"} | 460 | Format: {"of[f]" | "sk[ipmbr]"} |
452 | See comment in arch/i386/boot/edd.S | 461 | See comment in arch/i386/boot/edd.S |
453 | 462 | ||
454 | eicon= [HW,ISDN] | 463 | eicon= [HW,ISDN] |
455 | Format: <id>,<membase>,<irq> | 464 | Format: <id>,<membase>,<irq> |
456 | 465 | ||
457 | eisa_irq_edge= [PARISC,HW] | 466 | eisa_irq_edge= [PARISC,HW] |
@@ -462,12 +471,13 @@ running once the system is up. | |||
462 | arch/i386/kernel/cpu/cpufreq/elanfreq.c. | 471 | arch/i386/kernel/cpu/cpufreq/elanfreq.c. |
463 | 472 | ||
464 | elevator= [IOSCHED] | 473 | elevator= [IOSCHED] |
465 | Format: {"as"|"cfq"|"deadline"|"noop"} | 474 | Format: {"as" | "cfq" | "deadline" | "noop"} |
466 | See Documentation/block/as-iosched.txt | 475 | See Documentation/block/as-iosched.txt and |
467 | and Documentation/block/deadline-iosched.txt for details. | 476 | Documentation/block/deadline-iosched.txt for details. |
477 | |||
468 | elfcorehdr= [IA-32] | 478 | elfcorehdr= [IA-32] |
469 | Specifies physical address of start of kernel core image | 479 | Specifies physical address of start of kernel core |
470 | elf header. | 480 | image elf header. |
471 | See Documentation/kdump.txt for details. | 481 | See Documentation/kdump.txt for details. |
472 | 482 | ||
473 | enforcing [SELINUX] Set initial enforcing status. | 483 | enforcing [SELINUX] Set initial enforcing status. |
@@ -485,7 +495,7 @@ running once the system is up. | |||
485 | es1371= [HW,OSS] | 495 | es1371= [HW,OSS] |
486 | Format: <spdif>,[<nomix>,[<amplifier>]] | 496 | Format: <spdif>,[<nomix>,[<amplifier>]] |
487 | See also header of sound/oss/es1371.c. | 497 | See also header of sound/oss/es1371.c. |
488 | 498 | ||
489 | ether= [HW,NET] Ethernet cards parameters | 499 | ether= [HW,NET] Ethernet cards parameters |
490 | This option is obsoleted by the "netdev=" option, which | 500 | This option is obsoleted by the "netdev=" option, which |
491 | has equivalent usage. See its documentation for details. | 501 | has equivalent usage. See its documentation for details. |
@@ -526,12 +536,13 @@ running once the system is up. | |||
526 | 536 | ||
527 | gus= [HW,OSS] | 537 | gus= [HW,OSS] |
528 | Format: <io>,<irq>,<dma>,<dma16> | 538 | Format: <io>,<irq>,<dma>,<dma16> |
529 | 539 | ||
530 | gvp11= [HW,SCSI] | 540 | gvp11= [HW,SCSI] |
531 | 541 | ||
532 | hashdist= [KNL,NUMA] Large hashes allocated during boot | 542 | hashdist= [KNL,NUMA] Large hashes allocated during boot |
533 | are distributed across NUMA nodes. Defaults on | 543 | are distributed across NUMA nodes. Defaults on |
534 | for IA-64, off otherwise. | 544 | for IA-64, off otherwise. |
545 | Format: 0 | 1 (for off | on) | ||
535 | 546 | ||
536 | hcl= [IA-64] SGI's Hardware Graph compatibility layer | 547 | hcl= [IA-64] SGI's Hardware Graph compatibility layer |
537 | 548 | ||
@@ -595,13 +606,13 @@ running once the system is up. | |||
595 | ide?= [HW] (E)IDE subsystem | 606 | ide?= [HW] (E)IDE subsystem |
596 | Format: ide?=noprobe or chipset specific parameters. | 607 | Format: ide?=noprobe or chipset specific parameters. |
597 | See Documentation/ide.txt. | 608 | See Documentation/ide.txt. |
598 | 609 | ||
599 | idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed | 610 | idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed |
600 | See Documentation/ide.txt. | 611 | See Documentation/ide.txt. |
601 | 612 | ||
602 | idle= [HW] | 613 | idle= [HW] |
603 | Format: idle=poll or idle=halt | 614 | Format: idle=poll or idle=halt |
604 | 615 | ||
605 | ihash_entries= [KNL] | 616 | ihash_entries= [KNL] |
606 | Set number of hash buckets for inode cache. | 617 | Set number of hash buckets for inode cache. |
607 | 618 | ||
@@ -649,7 +660,7 @@ running once the system is up. | |||
649 | firmware running. | 660 | firmware running. |
650 | 661 | ||
651 | isapnp= [ISAPNP] | 662 | isapnp= [ISAPNP] |
652 | Format: <RDP>, <reset>, <pci_scan>, <verbosity> | 663 | Format: <RDP>,<reset>,<pci_scan>,<verbosity> |
653 | 664 | ||
654 | isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler. | 665 | isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler. |
655 | Format: <cpu number>,...,<cpu number> | 666 | Format: <cpu number>,...,<cpu number> |
@@ -661,32 +672,33 @@ running once the system is up. | |||
661 | "number of CPUs in system - 1". | 672 | "number of CPUs in system - 1". |
662 | 673 | ||
663 | This option is the preferred way to isolate CPUs. The | 674 | This option is the preferred way to isolate CPUs. The |
664 | alternative - manually setting the CPU mask of all tasks | 675 | alternative -- manually setting the CPU mask of all |
665 | in the system can cause problems and suboptimal load | 676 | tasks in the system -- can cause problems and |
666 | balancer performance. | 677 | suboptimal load balancer performance. |
667 | 678 | ||
668 | isp16= [HW,CD] | 679 | isp16= [HW,CD] |
669 | Format: <io>,<irq>,<dma>,<setup> | 680 | Format: <io>,<irq>,<dma>,<setup> |
670 | 681 | ||
671 | iucv= [HW,NET] | 682 | iucv= [HW,NET] |
672 | 683 | ||
673 | js= [HW,JOY] Analog joystick | 684 | js= [HW,JOY] Analog joystick |
674 | See Documentation/input/joystick.txt. | 685 | See Documentation/input/joystick.txt. |
675 | 686 | ||
676 | keepinitrd [HW,ARM] | 687 | keepinitrd [HW,ARM] |
677 | 688 | ||
678 | kstack=N [IA-32, X86-64] Print N words from the kernel stack | 689 | kstack=N [IA-32,X86-64] Print N words from the kernel stack |
679 | in oops dumps. | 690 | in oops dumps. |
680 | 691 | ||
681 | l2cr= [PPC] | 692 | l2cr= [PPC] |
682 | 693 | ||
683 | lapic [IA-32,APIC] Enable the local APIC even if BIOS disabled it. | 694 | lapic [IA-32,APIC] Enable the local APIC even if BIOS |
695 | disabled it. | ||
684 | 696 | ||
685 | lasi= [HW,SCSI] PARISC LASI driver for the 53c700 chip | 697 | lasi= [HW,SCSI] PARISC LASI driver for the 53c700 chip |
686 | Format: addr:<io>,irq:<irq> | 698 | Format: addr:<io>,irq:<irq> |
687 | 699 | ||
688 | llsc*= [IA64] | 700 | llsc*= [IA64] See function print_params() in |
689 | See function print_params() in arch/ia64/sn/kernel/llsc4.c. | 701 | arch/ia64/sn/kernel/llsc4.c. |
690 | 702 | ||
691 | load_ramdisk= [RAM] List of ramdisks to load from floppy | 703 | load_ramdisk= [RAM] List of ramdisks to load from floppy |
692 | See Documentation/ramdisk.txt. | 704 | See Documentation/ramdisk.txt. |
@@ -713,8 +725,9 @@ running once the system is up. | |||
713 | 7 (KERN_DEBUG) debug-level messages | 725 | 7 (KERN_DEBUG) debug-level messages |
714 | 726 | ||
715 | log_buf_len=n Sets the size of the printk ring buffer, in bytes. | 727 | log_buf_len=n Sets the size of the printk ring buffer, in bytes. |
716 | Format is n, nk, nM. n must be a power of two. The | 728 | Format: { n | nk | nM } |
717 | default is set in kernel config. | 729 | n must be a power of two. The default size |
730 | is set in the kernel config file. | ||
718 | 731 | ||
719 | lp=0 [LP] Specify parallel ports to use, e.g, | 732 | lp=0 [LP] Specify parallel ports to use, e.g, |
720 | lp=port[,port...] lp=none,parport0 (lp0 not configured, lp1 uses | 733 | lp=port[,port...] lp=none,parport0 (lp0 not configured, lp1 uses |
@@ -750,23 +763,23 @@ running once the system is up. | |||
750 | ltpc= [NET] | 763 | ltpc= [NET] |
751 | Format: <io>,<irq>,<dma> | 764 | Format: <io>,<irq>,<dma> |
752 | 765 | ||
753 | mac5380= [HW,SCSI] | 766 | mac5380= [HW,SCSI] Format: |
754 | Format: <can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags> | 767 | <can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags> |
755 | 768 | ||
756 | mac53c9x= [HW,SCSI] | 769 | mac53c9x= [HW,SCSI] Format: |
757 | Format: <num_esps>,<disconnect>,<nosync>,<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags> | 770 | <num_esps>,<disconnect>,<nosync>,<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags> |
758 | 771 | ||
759 | machvec= [IA64] | 772 | machvec= [IA64] Force the use of a particular machine-vector |
760 | Force the use of a particular machine-vector (machvec) in a generic | 773 | (machvec) in a generic kernel. |
761 | kernel. Example: machvec=hpzx1_swiotlb | 774 | Example: machvec=hpzx1_swiotlb |
762 | 775 | ||
763 | mad16= [HW,OSS] | 776 | mad16= [HW,OSS] Format: |
764 | Format: <io>,<irq>,<dma>,<dma16>,<mpu_io>,<mpu_irq>,<joystick> | 777 | <io>,<irq>,<dma>,<dma16>,<mpu_io>,<mpu_irq>,<joystick> |
765 | 778 | ||
766 | maui= [HW,OSS] | 779 | maui= [HW,OSS] |
767 | Format: <io>,<irq> | 780 | Format: <io>,<irq> |
768 | 781 | ||
769 | max_loop= [LOOP] Maximum number of loopback devices that can | 782 | max_loop= [LOOP] Maximum number of loopback devices that can |
770 | be mounted | 783 | be mounted |
771 | Format: <1-256> | 784 | Format: <1-256> |
772 | 785 | ||
@@ -776,11 +789,11 @@ running once the system is up. | |||
776 | max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or | 789 | max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or |
777 | equal to this physical address is ignored. | 790 | equal to this physical address is ignored. |
778 | 791 | ||
779 | max_luns= [SCSI] Maximum number of LUNs to probe | 792 | max_luns= [SCSI] Maximum number of LUNs to probe. |
780 | Should be between 1 and 2^32-1. | 793 | Should be between 1 and 2^32-1. |
781 | 794 | ||
782 | max_report_luns= | 795 | max_report_luns= |
783 | [SCSI] Maximum number of LUNs received | 796 | [SCSI] Maximum number of LUNs received. |
784 | Should be between 1 and 16384. | 797 | Should be between 1 and 16384. |
785 | 798 | ||
786 | mca-pentium [BUGS=IA-32] | 799 | mca-pentium [BUGS=IA-32] |
@@ -796,11 +809,11 @@ running once the system is up. | |||
796 | 809 | ||
797 | md= [HW] RAID subsystems devices and level | 810 | md= [HW] RAID subsystems devices and level |
798 | See Documentation/md.txt. | 811 | See Documentation/md.txt. |
799 | 812 | ||
800 | mdacon= [MDA] | 813 | mdacon= [MDA] |
801 | Format: <first>,<last> | 814 | Format: <first>,<last> |
802 | Specifies range of consoles to be captured by the MDA. | 815 | Specifies range of consoles to be captured by the MDA. |
803 | 816 | ||
804 | mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory | 817 | mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory |
805 | Amount of memory to be used when the kernel is not able | 818 | Amount of memory to be used when the kernel is not able |
806 | to see the whole system memory or for test. | 819 | to see the whole system memory or for test. |
@@ -851,15 +864,15 @@ running once the system is up. | |||
851 | MTD_Partition= [MTD] | 864 | MTD_Partition= [MTD] |
852 | Format: <name>,<region-number>,<size>,<offset> | 865 | Format: <name>,<region-number>,<size>,<offset> |
853 | 866 | ||
854 | MTD_Region= [MTD] | 867 | MTD_Region= [MTD] Format: |
855 | Format: <name>,<region-number>[,<base>,<size>,<buswidth>,<altbuswidth>] | 868 | <name>,<region-number>[,<base>,<size>,<buswidth>,<altbuswidth>] |
856 | 869 | ||
857 | mtdparts= [MTD] | 870 | mtdparts= [MTD] |
858 | See drivers/mtd/cmdline.c. | 871 | See drivers/mtd/cmdline.c. |
859 | 872 | ||
860 | mtouchusb.raw_coordinates= | 873 | mtouchusb.raw_coordinates= |
861 | [HW] Make the MicroTouch USB driver use raw coordinates ('y', default) | 874 | [HW] Make the MicroTouch USB driver use raw coordinates |
862 | or cooked coordinates ('n') | 875 | ('y', default) or cooked coordinates ('n') |
863 | 876 | ||
864 | n2= [NET] SDL Inc. RISCom/N2 synchronous serial card | 877 | n2= [NET] SDL Inc. RISCom/N2 synchronous serial card |
865 | 878 | ||
@@ -880,7 +893,9 @@ running once the system is up. | |||
880 | Format: <irq>,<io>,<mem_start>,<mem_end>,<name> | 893 | Format: <irq>,<io>,<mem_start>,<mem_end>,<name> |
881 | Note that mem_start is often overloaded to mean | 894 | Note that mem_start is often overloaded to mean |
882 | something different and driver-specific. | 895 | something different and driver-specific. |
883 | 896 | This usage is only documented in each driver source | |
897 | file if at all. | ||
898 | |||
884 | nfsaddrs= [NFS] | 899 | nfsaddrs= [NFS] |
885 | See Documentation/nfsroot.txt. | 900 | See Documentation/nfsroot.txt. |
886 | 901 | ||
@@ -893,8 +908,8 @@ running once the system is up. | |||
893 | emulation library even if a 387 maths coprocessor | 908 | emulation library even if a 387 maths coprocessor |
894 | is present. | 909 | is present. |
895 | 910 | ||
896 | noalign [KNL,ARM] | 911 | noalign [KNL,ARM] |
897 | 912 | ||
898 | noapic [SMP,APIC] Tells the kernel to not make use of any | 913 | noapic [SMP,APIC] Tells the kernel to not make use of any |
899 | IOAPICs that may be present in the system. | 914 | IOAPICs that may be present in the system. |
900 | 915 | ||
@@ -905,19 +920,19 @@ running once the system is up. | |||
905 | on "Classic" PPC cores. | 920 | on "Classic" PPC cores. |
906 | 921 | ||
907 | nocache [ARM] | 922 | nocache [ARM] |
908 | 923 | ||
909 | nodisconnect [HW,SCSI,M68K] Disables SCSI disconnects. | 924 | nodisconnect [HW,SCSI,M68K] Disables SCSI disconnects. |
910 | 925 | ||
911 | noexec [IA-64] | 926 | noexec [IA-64] |
912 | 927 | ||
913 | noexec [IA-32, X86-64] | 928 | noexec [IA-32,X86-64] |
914 | noexec=on: enable non-executable mappings (default) | 929 | noexec=on: enable non-executable mappings (default) |
915 | noexec=off: disable nn-executable mappings | 930 | noexec=off: disable nn-executable mappings |
916 | 931 | ||
917 | nofxsr [BUGS=IA-32] | 932 | nofxsr [BUGS=IA-32] |
918 | 933 | ||
919 | nohlt [BUGS=ARM] | 934 | nohlt [BUGS=ARM] |
920 | 935 | ||
921 | no-hlt [BUGS=IA-32] Tells the kernel that the hlt | 936 | no-hlt [BUGS=IA-32] Tells the kernel that the hlt |
922 | instruction doesn't work correctly and not to | 937 | instruction doesn't work correctly and not to |
923 | use it. | 938 | use it. |
@@ -948,8 +963,9 @@ running once the system is up. | |||
948 | 963 | ||
949 | noresidual [PPC] Don't use residual data on PReP machines. | 964 | noresidual [PPC] Don't use residual data on PReP machines. |
950 | 965 | ||
951 | noresume [SWSUSP] Disables resume and restore original swap space. | 966 | noresume [SWSUSP] Disables resume and restores original swap |
952 | 967 | space. | |
968 | |||
953 | no-scroll [VGA] Disables scrollback. | 969 | no-scroll [VGA] Disables scrollback. |
954 | This is required for the Braillex ib80-piezo Braille | 970 | This is required for the Braillex ib80-piezo Braille |
955 | reader made by F.H. Papenmeier (Germany). | 971 | reader made by F.H. Papenmeier (Germany). |
@@ -965,16 +981,16 @@ running once the system is up. | |||
965 | nousb [USB] Disable the USB subsystem | 981 | nousb [USB] Disable the USB subsystem |
966 | 982 | ||
967 | nowb [ARM] | 983 | nowb [ARM] |
968 | 984 | ||
969 | opl3= [HW,OSS] | 985 | opl3= [HW,OSS] |
970 | Format: <io> | 986 | Format: <io> |
971 | 987 | ||
972 | opl3sa= [HW,OSS] | 988 | opl3sa= [HW,OSS] |
973 | Format: <io>,<irq>,<dma>,<dma2>,<mpu_io>,<mpu_irq> | 989 | Format: <io>,<irq>,<dma>,<dma2>,<mpu_io>,<mpu_irq> |
974 | 990 | ||
975 | opl3sa2= [HW,OSS] | 991 | opl3sa2= [HW,OSS] Format: |
976 | Format: <io>,<irq>,<dma>,<dma2>,<mss_io>,<mpu_io>,<ymode>,<loopback>[,<isapnp>,<multiple] | 992 | <io>,<irq>,<dma>,<dma2>,<mss_io>,<mpu_io>,<ymode>,<loopback>[,<isapnp>,<multiple] |
977 | 993 | ||
978 | oprofile.timer= [HW] | 994 | oprofile.timer= [HW] |
979 | Use timer interrupt instead of performance counters | 995 | Use timer interrupt instead of performance counters |
980 | 996 | ||
@@ -993,36 +1009,33 @@ running once the system is up. | |||
993 | Format: <parport#> | 1009 | Format: <parport#> |
994 | parkbd.mode= [HW] Parallel port keyboard adapter mode of operation, | 1010 | parkbd.mode= [HW] Parallel port keyboard adapter mode of operation, |
995 | 0 for XT, 1 for AT (default is AT). | 1011 | 0 for XT, 1 for AT (default is AT). |
996 | Format: <mode> | 1012 | Format: <mode> |
997 | 1013 | ||
998 | parport=0 [HW,PPT] Specify parallel ports. 0 disables. | 1014 | parport= [HW,PPT] Specify parallel ports. 0 disables. |
999 | parport=auto Use 'auto' to force the driver to use | 1015 | Format: { 0 | auto | 0xBBB[,IRQ[,DMA]] } |
1000 | parport=0xBBB[,IRQ[,DMA]] any IRQ/DMA settings detected (the | 1016 | Use 'auto' to force the driver to use any |
1001 | default is to ignore detected IRQ/DMA | 1017 | IRQ/DMA settings detected (the default is to |
1002 | settings because of possible | 1018 | ignore detected IRQ/DMA settings because of |
1003 | conflicts). You can specify the base | 1019 | possible conflicts). You can specify the base |
1004 | address, IRQ, and DMA settings; IRQ and | 1020 | address, IRQ, and DMA settings; IRQ and DMA |
1005 | DMA should be numbers, or 'auto' (for | 1021 | should be numbers, or 'auto' (for using detected |
1006 | using detected settings on that | 1022 | settings on that particular port), or 'nofifo' |
1007 | particular port), or 'nofifo' (to avoid | 1023 | (to avoid using a FIFO even if it is detected). |
1008 | using a FIFO even if it is detected). | 1024 | Parallel ports are assigned in the order they |
1009 | Parallel ports are assigned in the | 1025 | are specified on the command line, starting |
1010 | order they are specified on the command | 1026 | with parport0. |
1011 | line, starting with parport0. | 1027 | |
1012 | 1028 | parport_init_mode= [HW,PPT] | |
1013 | parport_init_mode= | 1029 | Configure VIA parallel port to operate in |
1014 | [HW,PPT] Configure VIA parallel port to | 1030 | a specific mode. This is necessary on Pegasos |
1015 | operate in specific mode. This is | 1031 | computer where firmware has no options for setting |
1016 | necessary on Pegasos computer where | 1032 | up parallel port mode and sets it to spp. |
1017 | firmware has no options for setting up | 1033 | Currently this function knows 686a and 8231 chips. |
1018 | parallel port mode and sets it to | ||
1019 | spp. Currently this function knows | ||
1020 | 686a and 8231 chips. | ||
1021 | Format: [spp|ps2|epp|ecp|ecpepp] | 1034 | Format: [spp|ps2|epp|ecp|ecpepp] |
1022 | 1035 | ||
1023 | pas2= [HW,OSS] | 1036 | pas2= [HW,OSS] Format: |
1024 | Format: <io>,<irq>,<dma>,<dma16>,<sb_io>,<sb_irq>,<sb_dma>,<sb_dma16> | 1037 | <io>,<irq>,<dma>,<dma16>,<sb_io>,<sb_irq>,<sb_dma>,<sb_dma16> |
1025 | 1038 | ||
1026 | pas16= [HW,SCSI] | 1039 | pas16= [HW,SCSI] |
1027 | See header of drivers/scsi/pas16.c. | 1040 | See header of drivers/scsi/pas16.c. |
1028 | 1041 | ||
@@ -1032,64 +1045,67 @@ running once the system is up. | |||
1032 | See header of drivers/block/paride/pcd.c. | 1045 | See header of drivers/block/paride/pcd.c. |
1033 | See also Documentation/paride.txt. | 1046 | See also Documentation/paride.txt. |
1034 | 1047 | ||
1035 | pci=option[,option...] [PCI] various PCI subsystem options: | 1048 | pci=option[,option...] [PCI] various PCI subsystem options: |
1036 | off [IA-32] don't probe for the PCI bus | 1049 | off [IA-32] don't probe for the PCI bus |
1037 | bios [IA-32] force use of PCI BIOS, don't access | 1050 | bios [IA-32] force use of PCI BIOS, don't access |
1038 | the hardware directly. Use this if your machine | 1051 | the hardware directly. Use this if your machine |
1039 | has a non-standard PCI host bridge. | 1052 | has a non-standard PCI host bridge. |
1040 | nobios [IA-32] disallow use of PCI BIOS, only direct | 1053 | nobios [IA-32] disallow use of PCI BIOS, only direct |
1041 | hardware access methods are allowed. Use this | 1054 | hardware access methods are allowed. Use this |
1042 | if you experience crashes upon bootup and you | 1055 | if you experience crashes upon bootup and you |
1043 | suspect they are caused by the BIOS. | 1056 | suspect they are caused by the BIOS. |
1044 | conf1 [IA-32] Force use of PCI Configuration Mechanism 1. | 1057 | conf1 [IA-32] Force use of PCI Configuration |
1045 | conf2 [IA-32] Force use of PCI Configuration Mechanism 2. | 1058 | Mechanism 1. |
1046 | nosort [IA-32] Don't sort PCI devices according to | 1059 | conf2 [IA-32] Force use of PCI Configuration |
1047 | order given by the PCI BIOS. This sorting is done | 1060 | Mechanism 2. |
1048 | to get a device order compatible with older kernels. | 1061 | nosort [IA-32] Don't sort PCI devices according to |
1049 | biosirq [IA-32] Use PCI BIOS calls to get the interrupt | 1062 | order given by the PCI BIOS. This sorting is |
1050 | routing table. These calls are known to be buggy | 1063 | done to get a device order compatible with |
1051 | on several machines and they hang the machine when used, | 1064 | older kernels. |
1052 | but on other computers it's the only way to get the | 1065 | biosirq [IA-32] Use PCI BIOS calls to get the interrupt |
1053 | interrupt routing table. Try this option if the kernel | 1066 | routing table. These calls are known to be buggy |
1054 | is unable to allocate IRQs or discover secondary PCI | 1067 | on several machines and they hang the machine |
1055 | buses on your motherboard. | 1068 | when used, but on other computers it's the only |
1056 | rom [IA-32] Assign address space to expansion ROMs. | 1069 | way to get the interrupt routing table. Try |
1057 | Use with caution as certain devices share address | 1070 | this option if the kernel is unable to allocate |
1058 | decoders between ROMs and other resources. | 1071 | IRQs or discover secondary PCI buses on your |
1059 | irqmask=0xMMMM [IA-32] Set a bit mask of IRQs allowed to be assigned | 1072 | motherboard. |
1060 | automatically to PCI devices. You can make the kernel | 1073 | rom [IA-32] Assign address space to expansion ROMs. |
1061 | exclude IRQs of your ISA cards this way. | 1074 | Use with caution as certain devices share |
1075 | address decoders between ROMs and other | ||
1076 | resources. | ||
1077 | irqmask=0xMMMM [IA-32] Set a bit mask of IRQs allowed to be | ||
1078 | assigned automatically to PCI devices. You can | ||
1079 | make the kernel exclude IRQs of your ISA cards | ||
1080 | this way. | ||
1062 | pirqaddr=0xAAAAA [IA-32] Specify the physical address | 1081 | pirqaddr=0xAAAAA [IA-32] Specify the physical address |
1063 | of the PIRQ table (normally generated | 1082 | of the PIRQ table (normally generated |
1064 | by the BIOS) if it is outside the | 1083 | by the BIOS) if it is outside the |
1065 | F0000h-100000h range. | 1084 | F0000h-100000h range. |
1066 | lastbus=N [IA-32] Scan all buses till bus #N. Can be useful | 1085 | lastbus=N [IA-32] Scan all buses thru bus #N. Can be |
1067 | if the kernel is unable to find your secondary buses | 1086 | useful if the kernel is unable to find your |
1068 | and you want to tell it explicitly which ones they are. | 1087 | secondary buses and you want to tell it |
1069 | assign-busses [IA-32] Always assign all PCI bus | 1088 | explicitly which ones they are. |
1070 | numbers ourselves, overriding | 1089 | assign-busses [IA-32] Always assign all PCI bus |
1071 | whatever the firmware may have | 1090 | numbers ourselves, overriding |
1072 | done. | 1091 | whatever the firmware may have done. |
1073 | usepirqmask [IA-32] Honor the possible IRQ mask | 1092 | usepirqmask [IA-32] Honor the possible IRQ mask stored |
1074 | stored in the BIOS $PIR table. This is | 1093 | in the BIOS $PIR table. This is needed on |
1075 | needed on some systems with broken | 1094 | some systems with broken BIOSes, notably |
1076 | BIOSes, notably some HP Pavilion N5400 | 1095 | some HP Pavilion N5400 and Omnibook XE3 |
1077 | and Omnibook XE3 notebooks. This will | 1096 | notebooks. This will have no effect if ACPI |
1078 | have no effect if ACPI IRQ routing is | 1097 | IRQ routing is enabled. |
1079 | enabled. | 1098 | noacpi [IA-32] Do not use ACPI for IRQ routing |
1080 | noacpi [IA-32] Do not use ACPI for IRQ routing | 1099 | or for PCI scanning. |
1081 | or for PCI scanning. | 1100 | routeirq Do IRQ routing for all PCI devices. |
1082 | routeirq Do IRQ routing for all PCI devices. | 1101 | This is normally done in pci_enable_device(), |
1083 | This is normally done in pci_enable_device(), | 1102 | so this option is a temporary workaround |
1084 | so this option is a temporary workaround | 1103 | for broken drivers that don't call it. |
1085 | for broken drivers that don't call it. | 1104 | firmware [ARM] Do not re-enumerate the bus but instead |
1086 | 1105 | just use the configuration from the | |
1087 | firmware [ARM] Do not re-enumerate the bus but | 1106 | bootloader. This is currently used on |
1088 | instead just use the configuration | 1107 | IXP2000 systems where the bus has to be |
1089 | from the bootloader. This is currently | 1108 | configured a certain way for adjunct CPUs. |
1090 | used on IXP2000 systems where the | ||
1091 | bus has to be configured a certain way | ||
1092 | for adjunct CPUs. | ||
1093 | 1109 | ||
1094 | pcmv= [HW,PCMCIA] BadgePAD 4 | 1110 | pcmv= [HW,PCMCIA] BadgePAD 4 |
1095 | 1111 | ||
@@ -1127,19 +1143,20 @@ running once the system is up. | |||
1127 | [ISAPNP] Exclude DMAs for the autoconfiguration | 1143 | [ISAPNP] Exclude DMAs for the autoconfiguration |
1128 | 1144 | ||
1129 | pnp_reserve_io= [ISAPNP] Exclude I/O ports for the autoconfiguration | 1145 | pnp_reserve_io= [ISAPNP] Exclude I/O ports for the autoconfiguration |
1130 | Ranges are in pairs (I/O port base and size). | 1146 | Ranges are in pairs (I/O port base and size). |
1131 | 1147 | ||
1132 | pnp_reserve_mem= | 1148 | pnp_reserve_mem= |
1133 | [ISAPNP] Exclude memory regions for the autoconfiguration | 1149 | [ISAPNP] Exclude memory regions for the |
1150 | autoconfiguration. | ||
1134 | Ranges are in pairs (memory base and size). | 1151 | Ranges are in pairs (memory base and size). |
1135 | 1152 | ||
1136 | profile= [KNL] Enable kernel profiling via /proc/profile | 1153 | profile= [KNL] Enable kernel profiling via /proc/profile |
1137 | { schedule | <number> } | 1154 | Format: [schedule,]<number> |
1138 | (param: schedule - profile schedule points} | 1155 | Param: "schedule" - profile schedule points. |
1139 | (param: profile step/bucket size as a power of 2 for | 1156 | Param: <number> - step/bucket size as a power of 2 for |
1140 | statistical time based profiling) | 1157 | statistical time based profiling. |
1141 | 1158 | ||
1142 | processor.max_cstate= [HW, ACPI] | 1159 | processor.max_cstate= [HW,ACPI] |
1143 | Limit processor to maximum C-state | 1160 | Limit processor to maximum C-state |
1144 | max_cstate=9 overrides any DMI blacklist limit. | 1161 | max_cstate=9 overrides any DMI blacklist limit. |
1145 | 1162 | ||
@@ -1147,27 +1164,28 @@ running once the system is up. | |||
1147 | before loading. | 1164 | before loading. |
1148 | See Documentation/ramdisk.txt. | 1165 | See Documentation/ramdisk.txt. |
1149 | 1166 | ||
1150 | psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to | 1167 | psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to |
1151 | probe for (bare|imps|exps|lifebook|any). | 1168 | probe for; one of (bare|imps|exps|lifebook|any). |
1152 | psmouse.rate= [HW,MOUSE] Set desired mouse report rate, in reports | 1169 | psmouse.rate= [HW,MOUSE] Set desired mouse report rate, in reports |
1153 | per second. | 1170 | per second. |
1154 | psmouse.resetafter= | 1171 | psmouse.resetafter= [HW,MOUSE] |
1155 | [HW,MOUSE] Try to reset the device after so many bad packets | 1172 | Try to reset the device after so many bad packets |
1156 | (0 = never). | 1173 | (0 = never). |
1157 | psmouse.resolution= | 1174 | psmouse.resolution= |
1158 | [HW,MOUSE] Set desired mouse resolution, in dpi. | 1175 | [HW,MOUSE] Set desired mouse resolution, in dpi. |
1159 | psmouse.smartscroll= | 1176 | psmouse.smartscroll= |
1160 | [HW,MOUSE] Controls Logitech smartscroll autorepeat, | 1177 | [HW,MOUSE] Controls Logitech smartscroll autorepeat. |
1161 | 0 = disabled, 1 = enabled (default). | 1178 | 0 = disabled, 1 = enabled (default). |
1162 | 1179 | ||
1163 | pss= [HW,OSS] Personal Sound System (ECHO ESC614) | 1180 | pss= [HW,OSS] Personal Sound System (ECHO ESC614) |
1164 | Format: <io>,<mss_io>,<mss_irq>,<mss_dma>,<mpu_io>,<mpu_irq> | 1181 | Format: |
1182 | <io>,<mss_io>,<mss_irq>,<mss_dma>,<mpu_io>,<mpu_irq> | ||
1165 | 1183 | ||
1166 | pt. [PARIDE] | 1184 | pt. [PARIDE] |
1167 | See Documentation/paride.txt. | 1185 | See Documentation/paride.txt. |
1168 | 1186 | ||
1169 | quiet= [KNL] Disable log messages | 1187 | quiet= [KNL] Disable log messages |
1170 | 1188 | ||
1171 | r128= [HW,DRM] | 1189 | r128= [HW,DRM] |
1172 | 1190 | ||
1173 | raid= [HW,RAID] | 1191 | raid= [HW,RAID] |
@@ -1176,10 +1194,9 @@ running once the system is up. | |||
1176 | ramdisk= [RAM] Sizes of RAM disks in kilobytes [deprecated] | 1194 | ramdisk= [RAM] Sizes of RAM disks in kilobytes [deprecated] |
1177 | See Documentation/ramdisk.txt. | 1195 | See Documentation/ramdisk.txt. |
1178 | 1196 | ||
1179 | ramdisk_blocksize= | 1197 | ramdisk_blocksize= [RAM] |
1180 | [RAM] | ||
1181 | See Documentation/ramdisk.txt. | 1198 | See Documentation/ramdisk.txt. |
1182 | 1199 | ||
1183 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes | 1200 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes |
1184 | New name for the ramdisk parameter. | 1201 | New name for the ramdisk parameter. |
1185 | See Documentation/ramdisk.txt. | 1202 | See Documentation/ramdisk.txt. |
@@ -1195,7 +1212,8 @@ running once the system is up. | |||
1195 | 1212 | ||
1196 | reserve= [KNL,BUGS] Force the kernel to ignore some iomem area | 1213 | reserve= [KNL,BUGS] Force the kernel to ignore some iomem area |
1197 | 1214 | ||
1198 | resume= [SWSUSP] Specify the partition device for software suspension | 1215 | resume= [SWSUSP] |
1216 | Specify the partition device for software suspend | ||
1199 | 1217 | ||
1200 | rhash_entries= [KNL,NET] | 1218 | rhash_entries= [KNL,NET] |
1201 | Set number of hash buckets for route cache | 1219 | Set number of hash buckets for route cache |
@@ -1225,7 +1243,7 @@ running once the system is up. | |||
1225 | Format: <io>,<irq>,<dma>,<dma2> | 1243 | Format: <io>,<irq>,<dma>,<dma2> |
1226 | 1244 | ||
1227 | sbni= [NET] Granch SBNI12 leased line adapter | 1245 | sbni= [NET] Granch SBNI12 leased line adapter |
1228 | 1246 | ||
1229 | sbpcd= [HW,CD] Soundblaster CD adapter | 1247 | sbpcd= [HW,CD] Soundblaster CD adapter |
1230 | Format: <io>,<type> | 1248 | Format: <io>,<type> |
1231 | See a comment before function sbpcd_setup() in | 1249 | See a comment before function sbpcd_setup() in |
@@ -1258,21 +1276,20 @@ running once the system is up. | |||
1258 | 1276 | ||
1259 | serialnumber [BUGS=IA-32] | 1277 | serialnumber [BUGS=IA-32] |
1260 | 1278 | ||
1261 | sg_def_reserved_size= | 1279 | sg_def_reserved_size= [SCSI] |
1262 | [SCSI] | 1280 | |
1263 | |||
1264 | sgalaxy= [HW,OSS] | 1281 | sgalaxy= [HW,OSS] |
1265 | Format: <io>,<irq>,<dma>,<dma2>,<sgbase> | 1282 | Format: <io>,<irq>,<dma>,<dma2>,<sgbase> |
1266 | 1283 | ||
1267 | shapers= [NET] | 1284 | shapers= [NET] |
1268 | Maximal number of shapers. | 1285 | Maximal number of shapers. |
1269 | 1286 | ||
1270 | sim710= [SCSI,HW] | 1287 | sim710= [SCSI,HW] |
1271 | See header of drivers/scsi/sim710.c. | 1288 | See header of drivers/scsi/sim710.c. |
1272 | 1289 | ||
1273 | simeth= [IA-64] | 1290 | simeth= [IA-64] |
1274 | simscsi= | 1291 | simscsi= |
1275 | 1292 | ||
1276 | sjcd= [HW,CD] | 1293 | sjcd= [HW,CD] |
1277 | Format: <io>,<irq>,<dma> | 1294 | Format: <io>,<irq>,<dma> |
1278 | See header of drivers/cdrom/sjcd.c. | 1295 | See header of drivers/cdrom/sjcd.c. |
@@ -1403,10 +1420,10 @@ running once the system is up. | |||
1403 | snd-wavefront= [HW,ALSA] | 1420 | snd-wavefront= [HW,ALSA] |
1404 | 1421 | ||
1405 | snd-ymfpci= [HW,ALSA] | 1422 | snd-ymfpci= [HW,ALSA] |
1406 | 1423 | ||
1407 | sonicvibes= [HW,OSS] | 1424 | sonicvibes= [HW,OSS] |
1408 | Format: <reverb> | 1425 | Format: <reverb> |
1409 | 1426 | ||
1410 | sonycd535= [HW,CD] | 1427 | sonycd535= [HW,CD] |
1411 | Format: <io>[,<irq>] | 1428 | Format: <io>[,<irq>] |
1412 | 1429 | ||
@@ -1423,7 +1440,7 @@ running once the system is up. | |||
1423 | 1440 | ||
1424 | sscape= [HW,OSS] | 1441 | sscape= [HW,OSS] |
1425 | Format: <io>,<irq>,<dma>,<mpu_io>,<mpu_irq> | 1442 | Format: <io>,<irq>,<dma>,<mpu_io>,<mpu_irq> |
1426 | 1443 | ||
1427 | st= [HW,SCSI] SCSI tape parameters (buffers, etc.) | 1444 | st= [HW,SCSI] SCSI tape parameters (buffers, etc.) |
1428 | See Documentation/scsi/st.txt. | 1445 | See Documentation/scsi/st.txt. |
1429 | 1446 | ||
@@ -1446,7 +1463,7 @@ running once the system is up. | |||
1446 | stram_swap= [HW,M68k] | 1463 | stram_swap= [HW,M68k] |
1447 | 1464 | ||
1448 | swiotlb= [IA-64] Number of I/O TLB slabs | 1465 | swiotlb= [IA-64] Number of I/O TLB slabs |
1449 | 1466 | ||
1450 | switches= [HW,M68k] | 1467 | switches= [HW,M68k] |
1451 | 1468 | ||
1452 | sym53c416= [HW,SCSI] | 1469 | sym53c416= [HW,SCSI] |
@@ -1479,14 +1496,16 @@ running once the system is up. | |||
1479 | tp720= [HW,PS2] | 1496 | tp720= [HW,PS2] |
1480 | 1497 | ||
1481 | trix= [HW,OSS] MediaTrix AudioTrix Pro | 1498 | trix= [HW,OSS] MediaTrix AudioTrix Pro |
1482 | Format: <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq> | 1499 | Format: |
1483 | 1500 | <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq> | |
1501 | |||
1484 | tsdev.xres= [TS] Horizontal screen resolution. | 1502 | tsdev.xres= [TS] Horizontal screen resolution. |
1485 | tsdev.yres= [TS] Vertical screen resolution. | 1503 | tsdev.yres= [TS] Vertical screen resolution. |
1486 | 1504 | ||
1487 | turbografx.map[2|3]= | 1505 | turbografx.map[2|3]= [HW,JOY] |
1488 | [HW,JOY] TurboGraFX parallel port interface | 1506 | TurboGraFX parallel port interface |
1489 | Format: <port#>,<js1>,<js2>,<js3>,<js4>,<js5>,<js6>,<js7> | 1507 | Format: |
1508 | <port#>,<js1>,<js2>,<js3>,<js4>,<js5>,<js6>,<js7> | ||
1490 | See also Documentation/input/joystick-parport.txt | 1509 | See also Documentation/input/joystick-parport.txt |
1491 | 1510 | ||
1492 | u14-34f= [HW,SCSI] UltraStor 14F/34F SCSI host adapter | 1511 | u14-34f= [HW,SCSI] UltraStor 14F/34F SCSI host adapter |
@@ -1502,17 +1521,18 @@ running once the system is up. | |||
1502 | 1521 | ||
1503 | usbhid.mousepoll= | 1522 | usbhid.mousepoll= |
1504 | [USBHID] The interval which mice are to be polled at. | 1523 | [USBHID] The interval which mice are to be polled at. |
1505 | 1524 | ||
1506 | video= [FB] Frame buffer configuration | 1525 | video= [FB] Frame buffer configuration |
1507 | See Documentation/fb/modedb.txt. | 1526 | See Documentation/fb/modedb.txt. |
1508 | 1527 | ||
1509 | vga= [BOOT,IA-32] Select a particular video mode | 1528 | vga= [BOOT,IA-32] Select a particular video mode |
1510 | See Documentation/i386/boot.txt and Documentation/svga.txt. | 1529 | See Documentation/i386/boot.txt and |
1530 | Documentation/svga.txt. | ||
1511 | Use vga=ask for menu. | 1531 | Use vga=ask for menu. |
1512 | This is actually a boot loader parameter; the value is | 1532 | This is actually a boot loader parameter; the value is |
1513 | passed to the kernel using a special protocol. | 1533 | passed to the kernel using a special protocol. |
1514 | 1534 | ||
1515 | vmalloc=nn[KMG] [KNL,BOOT] forces the vmalloc area to have an exact | 1535 | vmalloc=nn[KMG] [KNL,BOOT] Forces the vmalloc area to have an exact |
1516 | size of <nn>. This can be used to increase the | 1536 | size of <nn>. This can be used to increase the |
1517 | minimum size (128MB on x86). It can also be used to | 1537 | minimum size (128MB on x86). It can also be used to |
1518 | decrease the size and leave more room for directly | 1538 | decrease the size and leave more room for directly |
@@ -1520,11 +1540,11 @@ running once the system is up. | |||
1520 | 1540 | ||
1521 | vmhalt= [KNL,S390] | 1541 | vmhalt= [KNL,S390] |
1522 | 1542 | ||
1523 | vmpoff= [KNL,S390] | 1543 | vmpoff= [KNL,S390] |
1524 | 1544 | ||
1525 | waveartist= [HW,OSS] | 1545 | waveartist= [HW,OSS] |
1526 | Format: <io>,<irq>,<dma>,<dma2> | 1546 | Format: <io>,<irq>,<dma>,<dma2> |
1527 | 1547 | ||
1528 | wd33c93= [HW,SCSI] | 1548 | wd33c93= [HW,SCSI] |
1529 | See header of drivers/scsi/wd33c93.c. | 1549 | See header of drivers/scsi/wd33c93.c. |
1530 | 1550 | ||
@@ -1538,21 +1558,25 @@ running once the system is up. | |||
1538 | xd_geo= See header of drivers/block/xd.c. | 1558 | xd_geo= See header of drivers/block/xd.c. |
1539 | 1559 | ||
1540 | xirc2ps_cs= [NET,PCMCIA] | 1560 | xirc2ps_cs= [NET,PCMCIA] |
1541 | Format: <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]] | 1561 | Format: |
1542 | 1562 | <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]] | |
1543 | 1563 | ||
1544 | 1564 | ||
1565 | ______________________________________________________________________ | ||
1545 | Changelog: | 1566 | Changelog: |
1546 | 1567 | ||
1568 | 2000-06-?? Mr. Unknown | ||
1547 | The last known update (for 2.4.0) - the changelog was not kept before. | 1569 | The last known update (for 2.4.0) - the changelog was not kept before. |
1548 | 2000-06-?? Mr. Unknown | ||
1549 | 1570 | ||
1571 | 2002-11-24 Petr Baudis <pasky@ucw.cz> | ||
1572 | Randy Dunlap <randy.dunlap@verizon.net> | ||
1550 | Update for 2.5.49, description for most of the options introduced, | 1573 | Update for 2.5.49, description for most of the options introduced, |
1551 | references to other documentation (C files, READMEs, ..), added S390, | 1574 | references to other documentation (C files, READMEs, ..), added S390, |
1552 | PPC, SPARC, MTD, ALSA and OSS category. Minor corrections and | 1575 | PPC, SPARC, MTD, ALSA and OSS category. Minor corrections and |
1553 | reformatting. | 1576 | reformatting. |
1554 | 2002-11-24 Petr Baudis <pasky@ucw.cz> | 1577 | |
1555 | Randy Dunlap <randy.dunlap@verizon.net> | 1578 | 2005-10-19 Randy Dunlap <rdunlap@xenotime.net> |
1579 | Lots of typos, whitespace, some reformatting. | ||
1556 | 1580 | ||
1557 | TODO: | 1581 | TODO: |
1558 | 1582 | ||
diff --git a/arch/arm/mach-pxa/corgi_lcd.c b/arch/arm/mach-pxa/corgi_lcd.c index 850538fadec..370df113dc0 100644 --- a/arch/arm/mach-pxa/corgi_lcd.c +++ b/arch/arm/mach-pxa/corgi_lcd.c | |||
@@ -488,6 +488,7 @@ static int is_pxafb_device(struct device * dev, void * data) | |||
488 | 488 | ||
489 | unsigned long spitz_get_hsync_len(void) | 489 | unsigned long spitz_get_hsync_len(void) |
490 | { | 490 | { |
491 | #ifdef CONFIG_FB_PXA | ||
491 | if (!spitz_pxafb_dev) { | 492 | if (!spitz_pxafb_dev) { |
492 | spitz_pxafb_dev = bus_find_device(&platform_bus_type, NULL, NULL, is_pxafb_device); | 493 | spitz_pxafb_dev = bus_find_device(&platform_bus_type, NULL, NULL, is_pxafb_device); |
493 | if (!spitz_pxafb_dev) | 494 | if (!spitz_pxafb_dev) |
@@ -496,6 +497,7 @@ unsigned long spitz_get_hsync_len(void) | |||
496 | if (!get_hsync_time) | 497 | if (!get_hsync_time) |
497 | get_hsync_time = symbol_get(pxafb_get_hsync_time); | 498 | get_hsync_time = symbol_get(pxafb_get_hsync_time); |
498 | if (!get_hsync_time) | 499 | if (!get_hsync_time) |
500 | #endif | ||
499 | return 0; | 501 | return 0; |
500 | 502 | ||
501 | return pxafb_get_hsync_time(spitz_pxafb_dev); | 503 | return pxafb_get_hsync_time(spitz_pxafb_dev); |
diff --git a/arch/ppc64/kernel/mpic.c b/arch/ppc64/kernel/mpic.c index cc262a05ddb..5f5bc73754d 100644 --- a/arch/ppc64/kernel/mpic.c +++ b/arch/ppc64/kernel/mpic.c | |||
@@ -506,8 +506,8 @@ struct mpic * __init mpic_alloc(unsigned long phys_addr, | |||
506 | mpic->senses_count = senses_count; | 506 | mpic->senses_count = senses_count; |
507 | 507 | ||
508 | /* Map the global registers */ | 508 | /* Map the global registers */ |
509 | mpic->gregs = ioremap(phys_addr + MPIC_GREG_BASE, 0x1000); | 509 | mpic->gregs = ioremap(phys_addr + MPIC_GREG_BASE, 0x2000); |
510 | mpic->tmregs = mpic->gregs + (MPIC_TIMER_BASE >> 2); | 510 | mpic->tmregs = mpic->gregs + ((MPIC_TIMER_BASE - MPIC_GREG_BASE) >> 2); |
511 | BUG_ON(mpic->gregs == NULL); | 511 | BUG_ON(mpic->gregs == NULL); |
512 | 512 | ||
513 | /* Reset */ | 513 | /* Reset */ |
diff --git a/arch/um/include/sysdep-i386/thread.h b/arch/um/include/sysdep-i386/thread.h index e2bd6bae8b8..243fed44d78 100644 --- a/arch/um/include/sysdep-i386/thread.h +++ b/arch/um/include/sysdep-i386/thread.h | |||
@@ -4,7 +4,7 @@ | |||
4 | #include <kern_constants.h> | 4 | #include <kern_constants.h> |
5 | 5 | ||
6 | #define TASK_DEBUGREGS(task) ((unsigned long *) &(((char *) (task))[HOST_TASK_DEBUGREGS])) | 6 | #define TASK_DEBUGREGS(task) ((unsigned long *) &(((char *) (task))[HOST_TASK_DEBUGREGS])) |
7 | #ifdef CONFIG_MODE_TT | 7 | #ifdef UML_CONFIG_MODE_TT |
8 | #define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID])) | 8 | #define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID])) |
9 | #endif | 9 | #endif |
10 | 10 | ||
diff --git a/arch/um/include/sysdep-x86_64/thread.h b/arch/um/include/sysdep-x86_64/thread.h index 6a76a7f3683..cbef3e1697f 100644 --- a/arch/um/include/sysdep-x86_64/thread.h +++ b/arch/um/include/sysdep-x86_64/thread.h | |||
@@ -3,7 +3,7 @@ | |||
3 | 3 | ||
4 | #include <kern_constants.h> | 4 | #include <kern_constants.h> |
5 | 5 | ||
6 | #ifdef CONFIG_MODE_TT | 6 | #ifdef UML_CONFIG_MODE_TT |
7 | #define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID])) | 7 | #define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID])) |
8 | #endif | 8 | #endif |
9 | 9 | ||
diff --git a/drivers/char/drm/radeon_cp.c b/drivers/char/drm/radeon_cp.c index 6d9080a3ca7..12ef13ff04c 100644 --- a/drivers/char/drm/radeon_cp.c +++ b/drivers/char/drm/radeon_cp.c | |||
@@ -1133,10 +1133,10 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev, | |||
1133 | ring_start = (dev_priv->cp_ring->offset | 1133 | ring_start = (dev_priv->cp_ring->offset |
1134 | - dev->agp->base | 1134 | - dev->agp->base |
1135 | + dev_priv->gart_vm_start); | 1135 | + dev_priv->gart_vm_start); |
1136 | } else | 1136 | } else |
1137 | #endif | 1137 | #endif |
1138 | ring_start = (dev_priv->cp_ring->offset | 1138 | ring_start = (dev_priv->cp_ring->offset |
1139 | - dev->sg->handle | 1139 | - (unsigned long)dev->sg->virtual |
1140 | + dev_priv->gart_vm_start); | 1140 | + dev_priv->gart_vm_start); |
1141 | 1141 | ||
1142 | RADEON_WRITE( RADEON_CP_RB_BASE, ring_start ); | 1142 | RADEON_WRITE( RADEON_CP_RB_BASE, ring_start ); |
@@ -1164,7 +1164,8 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev, | |||
1164 | drm_sg_mem_t *entry = dev->sg; | 1164 | drm_sg_mem_t *entry = dev->sg; |
1165 | unsigned long tmp_ofs, page_ofs; | 1165 | unsigned long tmp_ofs, page_ofs; |
1166 | 1166 | ||
1167 | tmp_ofs = dev_priv->ring_rptr->offset - dev->sg->handle; | 1167 | tmp_ofs = dev_priv->ring_rptr->offset - |
1168 | (unsigned long)dev->sg->virtual; | ||
1168 | page_ofs = tmp_ofs >> PAGE_SHIFT; | 1169 | page_ofs = tmp_ofs >> PAGE_SHIFT; |
1169 | 1170 | ||
1170 | RADEON_WRITE( RADEON_CP_RB_RPTR_ADDR, | 1171 | RADEON_WRITE( RADEON_CP_RB_RPTR_ADDR, |
@@ -1491,8 +1492,8 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init ) | |||
1491 | else | 1492 | else |
1492 | #endif | 1493 | #endif |
1493 | dev_priv->gart_buffers_offset = (dev->agp_buffer_map->offset | 1494 | dev_priv->gart_buffers_offset = (dev->agp_buffer_map->offset |
1494 | - dev->sg->handle | 1495 | - (unsigned long)dev->sg->virtual |
1495 | + dev_priv->gart_vm_start); | 1496 | + dev_priv->gart_vm_start); |
1496 | 1497 | ||
1497 | DRM_DEBUG( "dev_priv->gart_size %d\n", | 1498 | DRM_DEBUG( "dev_priv->gart_size %d\n", |
1498 | dev_priv->gart_size ); | 1499 | dev_priv->gart_size ); |
diff --git a/drivers/infiniband/hw/mthca/mthca_eq.c b/drivers/infiniband/hw/mthca/mthca_eq.c index c81fa8e975e..8dfafda5ed2 100644 --- a/drivers/infiniband/hw/mthca/mthca_eq.c +++ b/drivers/infiniband/hw/mthca/mthca_eq.c | |||
@@ -396,20 +396,21 @@ static irqreturn_t mthca_tavor_interrupt(int irq, void *dev_ptr, struct pt_regs | |||
396 | writel(dev->eq_table.clr_mask, dev->eq_table.clr_int); | 396 | writel(dev->eq_table.clr_mask, dev->eq_table.clr_int); |
397 | 397 | ||
398 | ecr = readl(dev->eq_regs.tavor.ecr_base + 4); | 398 | ecr = readl(dev->eq_regs.tavor.ecr_base + 4); |
399 | if (ecr) { | 399 | if (!ecr) |
400 | writel(ecr, dev->eq_regs.tavor.ecr_base + | 400 | return IRQ_NONE; |
401 | MTHCA_ECR_CLR_BASE - MTHCA_ECR_BASE + 4); | ||
402 | 401 | ||
403 | for (i = 0; i < MTHCA_NUM_EQ; ++i) | 402 | writel(ecr, dev->eq_regs.tavor.ecr_base + |
404 | if (ecr & dev->eq_table.eq[i].eqn_mask && | 403 | MTHCA_ECR_CLR_BASE - MTHCA_ECR_BASE + 4); |
405 | mthca_eq_int(dev, &dev->eq_table.eq[i])) { | 404 | |
405 | for (i = 0; i < MTHCA_NUM_EQ; ++i) | ||
406 | if (ecr & dev->eq_table.eq[i].eqn_mask) { | ||
407 | if (mthca_eq_int(dev, &dev->eq_table.eq[i])) | ||
406 | tavor_set_eq_ci(dev, &dev->eq_table.eq[i], | 408 | tavor_set_eq_ci(dev, &dev->eq_table.eq[i], |
407 | dev->eq_table.eq[i].cons_index); | 409 | dev->eq_table.eq[i].cons_index); |
408 | tavor_eq_req_not(dev, dev->eq_table.eq[i].eqn); | 410 | tavor_eq_req_not(dev, dev->eq_table.eq[i].eqn); |
409 | } | 411 | } |
410 | } | ||
411 | 412 | ||
412 | return IRQ_RETVAL(ecr); | 413 | return IRQ_HANDLED; |
413 | } | 414 | } |
414 | 415 | ||
415 | static irqreturn_t mthca_tavor_msi_x_interrupt(int irq, void *eq_ptr, | 416 | static irqreturn_t mthca_tavor_msi_x_interrupt(int irq, void *eq_ptr, |
diff --git a/drivers/md/md.c b/drivers/md/md.c index e9476075aa1..2a8a5696bf8 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -3568,7 +3568,8 @@ static void md_do_sync(mddev_t *mddev) | |||
3568 | mddev->curr_resync = 2; | 3568 | mddev->curr_resync = 2; |
3569 | 3569 | ||
3570 | try_again: | 3570 | try_again: |
3571 | if (signal_pending(current)) { | 3571 | if (signal_pending(current) || |
3572 | kthread_should_stop()) { | ||
3572 | flush_signals(current); | 3573 | flush_signals(current); |
3573 | set_bit(MD_RECOVERY_INTR, &mddev->recovery); | 3574 | set_bit(MD_RECOVERY_INTR, &mddev->recovery); |
3574 | goto skip; | 3575 | goto skip; |
@@ -3590,8 +3591,9 @@ static void md_do_sync(mddev_t *mddev) | |||
3590 | */ | 3591 | */ |
3591 | continue; | 3592 | continue; |
3592 | prepare_to_wait(&resync_wait, &wq, TASK_INTERRUPTIBLE); | 3593 | prepare_to_wait(&resync_wait, &wq, TASK_INTERRUPTIBLE); |
3593 | if (!signal_pending(current) | 3594 | if (!signal_pending(current) && |
3594 | && mddev2->curr_resync >= mddev->curr_resync) { | 3595 | !kthread_should_stop() && |
3596 | mddev2->curr_resync >= mddev->curr_resync) { | ||
3595 | printk(KERN_INFO "md: delaying resync of %s" | 3597 | printk(KERN_INFO "md: delaying resync of %s" |
3596 | " until %s has finished resync (they" | 3598 | " until %s has finished resync (they" |
3597 | " share one or more physical units)\n", | 3599 | " share one or more physical units)\n", |
@@ -3697,7 +3699,7 @@ static void md_do_sync(mddev_t *mddev) | |||
3697 | } | 3699 | } |
3698 | 3700 | ||
3699 | 3701 | ||
3700 | if (signal_pending(current)) { | 3702 | if (signal_pending(current) || kthread_should_stop()) { |
3701 | /* | 3703 | /* |
3702 | * got a signal, exit. | 3704 | * got a signal, exit. |
3703 | */ | 3705 | */ |
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig index 93570355819..bbb989df4cf 100644 --- a/drivers/media/video/Kconfig +++ b/drivers/media/video/Kconfig | |||
@@ -262,7 +262,6 @@ config VIDEO_SAA7134_DVB | |||
262 | depends on VIDEO_SAA7134 && DVB_CORE | 262 | depends on VIDEO_SAA7134 && DVB_CORE |
263 | select VIDEO_BUF_DVB | 263 | select VIDEO_BUF_DVB |
264 | select DVB_MT352 | 264 | select DVB_MT352 |
265 | select DVB_CX22702 | ||
266 | select DVB_TDA1004X | 265 | select DVB_TDA1004X |
267 | ---help--- | 266 | ---help--- |
268 | This adds support for DVB cards based on the | 267 | This adds support for DVB cards based on the |
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index a6a630a950d..7992bc8cc6a 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -241,7 +241,8 @@ static void __devinit quirk_s3_64M(struct pci_dev *dev) | |||
241 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M ); | 241 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M ); |
242 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M ); | 242 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M ); |
243 | 243 | ||
244 | static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, unsigned size, int nr) | 244 | static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, |
245 | unsigned size, int nr, const char *name) | ||
245 | { | 246 | { |
246 | region &= ~(size-1); | 247 | region &= ~(size-1); |
247 | if (region) { | 248 | if (region) { |
@@ -259,6 +260,7 @@ static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, unsi | |||
259 | pcibios_bus_to_resource(dev, res, &bus_region); | 260 | pcibios_bus_to_resource(dev, res, &bus_region); |
260 | 261 | ||
261 | pci_claim_resource(dev, nr); | 262 | pci_claim_resource(dev, nr); |
263 | printk("PCI quirk: region %04x-%04x claimed by %s\n", region, region + size - 1, name); | ||
262 | } | 264 | } |
263 | } | 265 | } |
264 | 266 | ||
@@ -291,25 +293,98 @@ static void __devinit quirk_ali7101_acpi(struct pci_dev *dev) | |||
291 | u16 region; | 293 | u16 region; |
292 | 294 | ||
293 | pci_read_config_word(dev, 0xE0, ®ion); | 295 | pci_read_config_word(dev, 0xE0, ®ion); |
294 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES); | 296 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES, "ali7101 ACPI"); |
295 | pci_read_config_word(dev, 0xE2, ®ion); | 297 | pci_read_config_word(dev, 0xE2, ®ion); |
296 | quirk_io_region(dev, region, 32, PCI_BRIDGE_RESOURCES+1); | 298 | quirk_io_region(dev, region, 32, PCI_BRIDGE_RESOURCES+1, "ali7101 SMB"); |
297 | } | 299 | } |
298 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, quirk_ali7101_acpi ); | 300 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, quirk_ali7101_acpi ); |
299 | 301 | ||
302 | static void piix4_io_quirk(struct pci_dev *dev, const char *name, unsigned int port, unsigned int enable) | ||
303 | { | ||
304 | u32 devres; | ||
305 | u32 mask, size, base; | ||
306 | |||
307 | pci_read_config_dword(dev, port, &devres); | ||
308 | if ((devres & enable) != enable) | ||
309 | return; | ||
310 | mask = (devres >> 16) & 15; | ||
311 | base = devres & 0xffff; | ||
312 | size = 16; | ||
313 | for (;;) { | ||
314 | unsigned bit = size >> 1; | ||
315 | if ((bit & mask) == bit) | ||
316 | break; | ||
317 | size = bit; | ||
318 | } | ||
319 | /* | ||
320 | * For now we only print it out. Eventually we'll want to | ||
321 | * reserve it (at least if it's in the 0x1000+ range), but | ||
322 | * let's get enough confirmation reports first. | ||
323 | */ | ||
324 | base &= -size; | ||
325 | printk("%s PIO at %04x-%04x\n", name, base, base + size - 1); | ||
326 | } | ||
327 | |||
328 | static void piix4_mem_quirk(struct pci_dev *dev, const char *name, unsigned int port, unsigned int enable) | ||
329 | { | ||
330 | u32 devres; | ||
331 | u32 mask, size, base; | ||
332 | |||
333 | pci_read_config_dword(dev, port, &devres); | ||
334 | if ((devres & enable) != enable) | ||
335 | return; | ||
336 | base = devres & 0xffff0000; | ||
337 | mask = (devres & 0x3f) << 16; | ||
338 | size = 128 << 16; | ||
339 | for (;;) { | ||
340 | unsigned bit = size >> 1; | ||
341 | if ((bit & mask) == bit) | ||
342 | break; | ||
343 | size = bit; | ||
344 | } | ||
345 | /* | ||
346 | * For now we only print it out. Eventually we'll want to | ||
347 | * reserve it, but let's get enough confirmation reports first. | ||
348 | */ | ||
349 | base &= -size; | ||
350 | printk("%s MMIO at %04x-%04x\n", name, base, base + size - 1); | ||
351 | } | ||
352 | |||
300 | /* | 353 | /* |
301 | * PIIX4 ACPI: Two IO regions pointed to by longwords at | 354 | * PIIX4 ACPI: Two IO regions pointed to by longwords at |
302 | * 0x40 (64 bytes of ACPI registers) | 355 | * 0x40 (64 bytes of ACPI registers) |
303 | * 0x90 (32 bytes of SMB registers) | 356 | * 0x90 (32 bytes of SMB registers) |
357 | * and a few strange programmable PIIX4 device resources. | ||
304 | */ | 358 | */ |
305 | static void __devinit quirk_piix4_acpi(struct pci_dev *dev) | 359 | static void __devinit quirk_piix4_acpi(struct pci_dev *dev) |
306 | { | 360 | { |
307 | u32 region; | 361 | u32 region, res_a; |
308 | 362 | ||
309 | pci_read_config_dword(dev, 0x40, ®ion); | 363 | pci_read_config_dword(dev, 0x40, ®ion); |
310 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES); | 364 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES, "PIIX4 ACPI"); |
311 | pci_read_config_dword(dev, 0x90, ®ion); | 365 | pci_read_config_dword(dev, 0x90, ®ion); |
312 | quirk_io_region(dev, region, 32, PCI_BRIDGE_RESOURCES+1); | 366 | quirk_io_region(dev, region, 32, PCI_BRIDGE_RESOURCES+1, "PIIX4 SMB"); |
367 | |||
368 | /* Device resource A has enables for some of the other ones */ | ||
369 | pci_read_config_dword(dev, 0x5c, &res_a); | ||
370 | |||
371 | piix4_io_quirk(dev, "PIIX4 devres B", 0x60, 3 << 21); | ||
372 | piix4_io_quirk(dev, "PIIX4 devres C", 0x64, 3 << 21); | ||
373 | |||
374 | /* Device resource D is just bitfields for static resources */ | ||
375 | |||
376 | /* Device 12 enabled? */ | ||
377 | if (res_a & (1 << 29)) { | ||
378 | piix4_io_quirk(dev, "PIIX4 devres E", 0x68, 1 << 20); | ||
379 | piix4_mem_quirk(dev, "PIIX4 devres F", 0x6c, 1 << 7); | ||
380 | } | ||
381 | /* Device 13 enabled? */ | ||
382 | if (res_a & (1 << 30)) { | ||
383 | piix4_io_quirk(dev, "PIIX4 devres G", 0x70, 1 << 20); | ||
384 | piix4_mem_quirk(dev, "PIIX4 devres H", 0x74, 1 << 7); | ||
385 | } | ||
386 | piix4_io_quirk(dev, "PIIX4 devres I", 0x78, 1 << 20); | ||
387 | piix4_io_quirk(dev, "PIIX4 devres J", 0x7c, 1 << 20); | ||
313 | } | 388 | } |
314 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_3, quirk_piix4_acpi ); | 389 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_3, quirk_piix4_acpi ); |
315 | 390 | ||
@@ -323,10 +398,10 @@ static void __devinit quirk_ich4_lpc_acpi(struct pci_dev *dev) | |||
323 | u32 region; | 398 | u32 region; |
324 | 399 | ||
325 | pci_read_config_dword(dev, 0x40, ®ion); | 400 | pci_read_config_dword(dev, 0x40, ®ion); |
326 | quirk_io_region(dev, region, 128, PCI_BRIDGE_RESOURCES); | 401 | quirk_io_region(dev, region, 128, PCI_BRIDGE_RESOURCES, "ICH4 ACPI/GPIO/TCO"); |
327 | 402 | ||
328 | pci_read_config_dword(dev, 0x58, ®ion); | 403 | pci_read_config_dword(dev, 0x58, ®ion); |
329 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES+1); | 404 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES+1, "ICH4 GPIO"); |
330 | } | 405 | } |
331 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AA_0, quirk_ich4_lpc_acpi ); | 406 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AA_0, quirk_ich4_lpc_acpi ); |
332 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AB_0, quirk_ich4_lpc_acpi ); | 407 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AB_0, quirk_ich4_lpc_acpi ); |
@@ -352,7 +427,7 @@ static void __devinit quirk_vt82c586_acpi(struct pci_dev *dev) | |||
352 | if (rev & 0x10) { | 427 | if (rev & 0x10) { |
353 | pci_read_config_dword(dev, 0x48, ®ion); | 428 | pci_read_config_dword(dev, 0x48, ®ion); |
354 | region &= PCI_BASE_ADDRESS_IO_MASK; | 429 | region &= PCI_BASE_ADDRESS_IO_MASK; |
355 | quirk_io_region(dev, region, 256, PCI_BRIDGE_RESOURCES); | 430 | quirk_io_region(dev, region, 256, PCI_BRIDGE_RESOURCES, "vt82c586 ACPI"); |
356 | } | 431 | } |
357 | } | 432 | } |
358 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_vt82c586_acpi ); | 433 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_vt82c586_acpi ); |
@@ -372,11 +447,11 @@ static void __devinit quirk_vt82c686_acpi(struct pci_dev *dev) | |||
372 | 447 | ||
373 | pci_read_config_word(dev, 0x70, &hm); | 448 | pci_read_config_word(dev, 0x70, &hm); |
374 | hm &= PCI_BASE_ADDRESS_IO_MASK; | 449 | hm &= PCI_BASE_ADDRESS_IO_MASK; |
375 | quirk_io_region(dev, hm, 128, PCI_BRIDGE_RESOURCES + 1); | 450 | quirk_io_region(dev, hm, 128, PCI_BRIDGE_RESOURCES + 1, "vt82c868 HW-mon"); |
376 | 451 | ||
377 | pci_read_config_dword(dev, 0x90, &smb); | 452 | pci_read_config_dword(dev, 0x90, &smb); |
378 | smb &= PCI_BASE_ADDRESS_IO_MASK; | 453 | smb &= PCI_BASE_ADDRESS_IO_MASK; |
379 | quirk_io_region(dev, smb, 16, PCI_BRIDGE_RESOURCES + 2); | 454 | quirk_io_region(dev, smb, 16, PCI_BRIDGE_RESOURCES + 2, "vt82c868 SMB"); |
380 | } | 455 | } |
381 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_vt82c686_acpi ); | 456 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_vt82c686_acpi ); |
382 | 457 | ||
@@ -391,11 +466,11 @@ static void __devinit quirk_vt8235_acpi(struct pci_dev *dev) | |||
391 | 466 | ||
392 | pci_read_config_word(dev, 0x88, &pm); | 467 | pci_read_config_word(dev, 0x88, &pm); |
393 | pm &= PCI_BASE_ADDRESS_IO_MASK; | 468 | pm &= PCI_BASE_ADDRESS_IO_MASK; |
394 | quirk_io_region(dev, pm, 128, PCI_BRIDGE_RESOURCES); | 469 | quirk_io_region(dev, pm, 128, PCI_BRIDGE_RESOURCES, "vt8235 PM"); |
395 | 470 | ||
396 | pci_read_config_word(dev, 0xd0, &smb); | 471 | pci_read_config_word(dev, 0xd0, &smb); |
397 | smb &= PCI_BASE_ADDRESS_IO_MASK; | 472 | smb &= PCI_BASE_ADDRESS_IO_MASK; |
398 | quirk_io_region(dev, smb, 16, PCI_BRIDGE_RESOURCES + 1); | 473 | quirk_io_region(dev, smb, 16, PCI_BRIDGE_RESOURCES + 1, "vt8235 SMB"); |
399 | } | 474 | } |
400 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_vt8235_acpi); | 475 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_vt8235_acpi); |
401 | 476 | ||
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index 657be948baf..28ce3a7ee43 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c | |||
@@ -40,7 +40,7 @@ | |||
40 | * FIXME: IO should be max 256 bytes. However, since we may | 40 | * FIXME: IO should be max 256 bytes. However, since we may |
41 | * have a P2P bridge below a cardbus bridge, we need 4K. | 41 | * have a P2P bridge below a cardbus bridge, we need 4K. |
42 | */ | 42 | */ |
43 | #define CARDBUS_IO_SIZE (4*1024) | 43 | #define CARDBUS_IO_SIZE (256) |
44 | #define CARDBUS_MEM_SIZE (32*1024*1024) | 44 | #define CARDBUS_MEM_SIZE (32*1024*1024) |
45 | 45 | ||
46 | static void __devinit | 46 | static void __devinit |
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c index d40ba0bd68a..23392ae7df8 100644 --- a/drivers/scsi/NCR5380.c +++ b/drivers/scsi/NCR5380.c | |||
@@ -91,7 +91,7 @@ | |||
91 | #ifndef NDEBUG | 91 | #ifndef NDEBUG |
92 | #define NDEBUG 0 | 92 | #define NDEBUG 0 |
93 | #endif | 93 | #endif |
94 | #ifndef NDEBUG | 94 | #ifndef NDEBUG_ABORT |
95 | #define NDEBUG_ABORT 0 | 95 | #define NDEBUG_ABORT 0 |
96 | #endif | 96 | #endif |
97 | 97 | ||
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 4a99d2f000f..d54b1cc88d0 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h | |||
@@ -19,7 +19,7 @@ | |||
19 | #define AAC_MAX_LUN (8) | 19 | #define AAC_MAX_LUN (8) |
20 | 20 | ||
21 | #define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff) | 21 | #define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff) |
22 | #define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)512) | 22 | #define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)256) |
23 | 23 | ||
24 | /* | 24 | /* |
25 | * These macros convert from physical channels to virtual channels | 25 | * These macros convert from physical channels to virtual channels |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 8982978c42f..7aec93f9d42 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -1325,6 +1325,8 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) | |||
1325 | ha->brd_info = brd_info; | 1325 | ha->brd_info = brd_info; |
1326 | sprintf(ha->host_str, "%s_%ld", ha->brd_info->drv_name, ha->host_no); | 1326 | sprintf(ha->host_str, "%s_%ld", ha->brd_info->drv_name, ha->host_no); |
1327 | 1327 | ||
1328 | ha->dpc_pid = -1; | ||
1329 | |||
1328 | /* Configure PCI I/O space */ | 1330 | /* Configure PCI I/O space */ |
1329 | ret = qla2x00_iospace_config(ha); | 1331 | ret = qla2x00_iospace_config(ha); |
1330 | if (ret) | 1332 | if (ret) |
@@ -1448,7 +1450,6 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) | |||
1448 | */ | 1450 | */ |
1449 | spin_lock_init(&ha->mbx_reg_lock); | 1451 | spin_lock_init(&ha->mbx_reg_lock); |
1450 | 1452 | ||
1451 | ha->dpc_pid = -1; | ||
1452 | init_completion(&ha->dpc_inited); | 1453 | init_completion(&ha->dpc_inited); |
1453 | init_completion(&ha->dpc_exited); | 1454 | init_completion(&ha->dpc_exited); |
1454 | 1455 | ||
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c index 64fc9e21f35..e69477d1889 100644 --- a/drivers/scsi/scsi_devinfo.c +++ b/drivers/scsi/scsi_devinfo.c | |||
@@ -185,6 +185,7 @@ static struct { | |||
185 | {"PIONEER", "CD-ROM DRM-600", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, | 185 | {"PIONEER", "CD-ROM DRM-600", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, |
186 | {"PIONEER", "CD-ROM DRM-602X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, | 186 | {"PIONEER", "CD-ROM DRM-602X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, |
187 | {"PIONEER", "CD-ROM DRM-604X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, | 187 | {"PIONEER", "CD-ROM DRM-604X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, |
188 | {"PIONEER", "CD-ROM DRM-624X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, | ||
188 | {"REGAL", "CDC-4X", NULL, BLIST_MAX5LUN | BLIST_SINGLELUN}, | 189 | {"REGAL", "CDC-4X", NULL, BLIST_MAX5LUN | BLIST_SINGLELUN}, |
189 | {"SanDisk", "ImageMate CF-SD1", NULL, BLIST_FORCELUN}, | 190 | {"SanDisk", "ImageMate CF-SD1", NULL, BLIST_FORCELUN}, |
190 | {"SEAGATE", "ST34555N", "0930", BLIST_NOTQ}, /* Chokes on tagged INQUIRY */ | 191 | {"SEAGATE", "ST34555N", "0930", BLIST_NOTQ}, /* Chokes on tagged INQUIRY */ |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index dc9c772bc87..0074f28c37b 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -97,7 +97,6 @@ int scsi_insert_special_req(struct scsi_request *sreq, int at_head) | |||
97 | } | 97 | } |
98 | 98 | ||
99 | static void scsi_run_queue(struct request_queue *q); | 99 | static void scsi_run_queue(struct request_queue *q); |
100 | static void scsi_release_buffers(struct scsi_cmnd *cmd); | ||
101 | 100 | ||
102 | /* | 101 | /* |
103 | * Function: scsi_unprep_request() | 102 | * Function: scsi_unprep_request() |
@@ -1040,8 +1039,10 @@ static int scsi_init_io(struct scsi_cmnd *cmd) | |||
1040 | * if sg table allocation fails, requeue request later. | 1039 | * if sg table allocation fails, requeue request later. |
1041 | */ | 1040 | */ |
1042 | sgpnt = scsi_alloc_sgtable(cmd, GFP_ATOMIC); | 1041 | sgpnt = scsi_alloc_sgtable(cmd, GFP_ATOMIC); |
1043 | if (unlikely(!sgpnt)) | 1042 | if (unlikely(!sgpnt)) { |
1043 | scsi_unprep_request(req); | ||
1044 | return BLKPREP_DEFER; | 1044 | return BLKPREP_DEFER; |
1045 | } | ||
1045 | 1046 | ||
1046 | cmd->request_buffer = (char *) sgpnt; | 1047 | cmd->request_buffer = (char *) sgpnt; |
1047 | cmd->request_bufflen = req->nr_sectors << 9; | 1048 | cmd->request_bufflen = req->nr_sectors << 9; |
@@ -1245,8 +1246,8 @@ static int scsi_prep_fn(struct request_queue *q, struct request *req) | |||
1245 | */ | 1246 | */ |
1246 | ret = scsi_init_io(cmd); | 1247 | ret = scsi_init_io(cmd); |
1247 | switch(ret) { | 1248 | switch(ret) { |
1249 | /* For BLKPREP_KILL/DEFER the cmd was released */ | ||
1248 | case BLKPREP_KILL: | 1250 | case BLKPREP_KILL: |
1249 | /* BLKPREP_KILL return also releases the command */ | ||
1250 | goto kill; | 1251 | goto kill; |
1251 | case BLKPREP_DEFER: | 1252 | case BLKPREP_DEFER: |
1252 | goto defer; | 1253 | goto defer; |
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index 2cab556b6e8..771e97ef136 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c | |||
@@ -819,12 +819,15 @@ show_fc_private_host_tgtid_bind_type(struct class_device *cdev, char *buf) | |||
819 | return snprintf(buf, FC_BINDTYPE_MAX_NAMELEN, "%s\n", name); | 819 | return snprintf(buf, FC_BINDTYPE_MAX_NAMELEN, "%s\n", name); |
820 | } | 820 | } |
821 | 821 | ||
822 | #define get_list_head_entry(pos, head, member) \ | ||
823 | pos = list_entry((head)->next, typeof(*pos), member) | ||
824 | |||
822 | static ssize_t | 825 | static ssize_t |
823 | store_fc_private_host_tgtid_bind_type(struct class_device *cdev, | 826 | store_fc_private_host_tgtid_bind_type(struct class_device *cdev, |
824 | const char *buf, size_t count) | 827 | const char *buf, size_t count) |
825 | { | 828 | { |
826 | struct Scsi_Host *shost = transport_class_to_shost(cdev); | 829 | struct Scsi_Host *shost = transport_class_to_shost(cdev); |
827 | struct fc_rport *rport, *next_rport; | 830 | struct fc_rport *rport; |
828 | enum fc_tgtid_binding_type val; | 831 | enum fc_tgtid_binding_type val; |
829 | unsigned long flags; | 832 | unsigned long flags; |
830 | 833 | ||
@@ -834,9 +837,13 @@ store_fc_private_host_tgtid_bind_type(struct class_device *cdev, | |||
834 | /* if changing bind type, purge all unused consistent bindings */ | 837 | /* if changing bind type, purge all unused consistent bindings */ |
835 | if (val != fc_host_tgtid_bind_type(shost)) { | 838 | if (val != fc_host_tgtid_bind_type(shost)) { |
836 | spin_lock_irqsave(shost->host_lock, flags); | 839 | spin_lock_irqsave(shost->host_lock, flags); |
837 | list_for_each_entry_safe(rport, next_rport, | 840 | while (!list_empty(&fc_host_rport_bindings(shost))) { |
838 | &fc_host_rport_bindings(shost), peers) | 841 | get_list_head_entry(rport, |
842 | &fc_host_rport_bindings(shost), peers); | ||
843 | spin_unlock_irqrestore(shost->host_lock, flags); | ||
839 | fc_rport_terminate(rport); | 844 | fc_rport_terminate(rport); |
845 | spin_lock_irqsave(shost->host_lock, flags); | ||
846 | } | ||
840 | spin_unlock_irqrestore(shost->host_lock, flags); | 847 | spin_unlock_irqrestore(shost->host_lock, flags); |
841 | } | 848 | } |
842 | 849 | ||
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c index 0e21f583690..5c3c03932d6 100644 --- a/drivers/serial/8250_pci.c +++ b/drivers/serial/8250_pci.c | |||
@@ -152,6 +152,7 @@ static int __devinit pci_hp_diva_init(struct pci_dev *dev) | |||
152 | rc = 4; | 152 | rc = 4; |
153 | break; | 153 | break; |
154 | case PCI_DEVICE_ID_HP_DIVA_POWERBAR: | 154 | case PCI_DEVICE_ID_HP_DIVA_POWERBAR: |
155 | case PCI_DEVICE_ID_HP_DIVA_HURRICANE: | ||
155 | rc = 1; | 156 | rc = 1; |
156 | break; | 157 | break; |
157 | } | 158 | } |
@@ -226,8 +227,10 @@ static int __devinit pci_plx9050_init(struct pci_dev *dev) | |||
226 | } | 227 | } |
227 | 228 | ||
228 | irq_config = 0x41; | 229 | irq_config = 0x41; |
229 | if (dev->vendor == PCI_VENDOR_ID_PANACOM) | 230 | if (dev->vendor == PCI_VENDOR_ID_PANACOM || |
231 | dev->subsystem_vendor == PCI_SUBVENDOR_ID_EXSYS) { | ||
230 | irq_config = 0x43; | 232 | irq_config = 0x43; |
233 | } | ||
231 | if ((dev->vendor == PCI_VENDOR_ID_PLX) && | 234 | if ((dev->vendor == PCI_VENDOR_ID_PLX) && |
232 | (dev->device == PCI_DEVICE_ID_PLX_ROMULUS)) { | 235 | (dev->device == PCI_DEVICE_ID_PLX_ROMULUS)) { |
233 | /* | 236 | /* |
@@ -664,6 +667,15 @@ static struct pci_serial_quirk pci_serial_quirks[] = { | |||
664 | { | 667 | { |
665 | .vendor = PCI_VENDOR_ID_PLX, | 668 | .vendor = PCI_VENDOR_ID_PLX, |
666 | .device = PCI_DEVICE_ID_PLX_9050, | 669 | .device = PCI_DEVICE_ID_PLX_9050, |
670 | .subvendor = PCI_SUBVENDOR_ID_EXSYS, | ||
671 | .subdevice = PCI_SUBDEVICE_ID_EXSYS_4055, | ||
672 | .init = pci_plx9050_init, | ||
673 | .setup = pci_default_setup, | ||
674 | .exit = __devexit_p(pci_plx9050_exit), | ||
675 | }, | ||
676 | { | ||
677 | .vendor = PCI_VENDOR_ID_PLX, | ||
678 | .device = PCI_DEVICE_ID_PLX_9050, | ||
667 | .subvendor = PCI_SUBVENDOR_ID_KEYSPAN, | 679 | .subvendor = PCI_SUBVENDOR_ID_KEYSPAN, |
668 | .subdevice = PCI_SUBDEVICE_ID_KEYSPAN_SX2, | 680 | .subdevice = PCI_SUBDEVICE_ID_KEYSPAN_SX2, |
669 | .init = pci_plx9050_init, | 681 | .init = pci_plx9050_init, |
@@ -927,6 +939,7 @@ enum pci_board_num_t { | |||
927 | pbn_panacom, | 939 | pbn_panacom, |
928 | pbn_panacom2, | 940 | pbn_panacom2, |
929 | pbn_panacom4, | 941 | pbn_panacom4, |
942 | pbn_exsys_4055, | ||
930 | pbn_plx_romulus, | 943 | pbn_plx_romulus, |
931 | pbn_oxsemi, | 944 | pbn_oxsemi, |
932 | pbn_intel_i960, | 945 | pbn_intel_i960, |
@@ -1292,6 +1305,13 @@ static struct pciserial_board pci_boards[] __devinitdata = { | |||
1292 | .reg_shift = 7, | 1305 | .reg_shift = 7, |
1293 | }, | 1306 | }, |
1294 | 1307 | ||
1308 | [pbn_exsys_4055] = { | ||
1309 | .flags = FL_BASE2, | ||
1310 | .num_ports = 4, | ||
1311 | .base_baud = 115200, | ||
1312 | .uart_offset = 8, | ||
1313 | }, | ||
1314 | |||
1295 | /* I think this entry is broken - the first_offset looks wrong --rmk */ | 1315 | /* I think this entry is broken - the first_offset looks wrong --rmk */ |
1296 | [pbn_plx_romulus] = { | 1316 | [pbn_plx_romulus] = { |
1297 | .flags = FL_BASE2, | 1317 | .flags = FL_BASE2, |
@@ -1853,6 +1873,10 @@ static struct pci_device_id serial_pci_tbl[] = { | |||
1853 | PCI_SUBVENDOR_ID_CHASE_PCIRAS, | 1873 | PCI_SUBVENDOR_ID_CHASE_PCIRAS, |
1854 | PCI_SUBDEVICE_ID_CHASE_PCIRAS8, 0, 0, | 1874 | PCI_SUBDEVICE_ID_CHASE_PCIRAS8, 0, 0, |
1855 | pbn_b2_8_460800 }, | 1875 | pbn_b2_8_460800 }, |
1876 | { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, | ||
1877 | PCI_SUBVENDOR_ID_EXSYS, | ||
1878 | PCI_SUBDEVICE_ID_EXSYS_4055, 0, 0, | ||
1879 | pbn_exsys_4055 }, | ||
1856 | /* | 1880 | /* |
1857 | * Megawolf Romulus PCI Serial Card, from Mike Hudson | 1881 | * Megawolf Romulus PCI Serial Card, from Mike Hudson |
1858 | * (Exoray@isys.ca) | 1882 | * (Exoray@isys.ca) |
diff --git a/drivers/video/fbsysfs.c b/drivers/video/fbsysfs.c index 1147b899f00..007c8e9b2b3 100644 --- a/drivers/video/fbsysfs.c +++ b/drivers/video/fbsysfs.c | |||
@@ -242,6 +242,13 @@ static ssize_t show_virtual(struct class_device *class_device, char *buf) | |||
242 | fb_info->var.yres_virtual); | 242 | fb_info->var.yres_virtual); |
243 | } | 243 | } |
244 | 244 | ||
245 | static ssize_t show_stride(struct class_device *class_device, char *buf) | ||
246 | { | ||
247 | struct fb_info *fb_info = | ||
248 | (struct fb_info *)class_get_devdata(class_device); | ||
249 | return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->fix.line_length); | ||
250 | } | ||
251 | |||
245 | /* Format for cmap is "%02x%c%4x%4x%4x\n" */ | 252 | /* Format for cmap is "%02x%c%4x%4x%4x\n" */ |
246 | /* %02x entry %c transp %4x red %4x blue %4x green \n */ | 253 | /* %02x entry %c transp %4x red %4x blue %4x green \n */ |
247 | /* 256 rows at 16 chars equals 4096, the normal page size */ | 254 | /* 256 rows at 16 chars equals 4096, the normal page size */ |
@@ -432,6 +439,7 @@ static struct class_device_attribute class_device_attrs[] = { | |||
432 | __ATTR(pan, S_IRUGO|S_IWUSR, show_pan, store_pan), | 439 | __ATTR(pan, S_IRUGO|S_IWUSR, show_pan, store_pan), |
433 | __ATTR(virtual_size, S_IRUGO|S_IWUSR, show_virtual, store_virtual), | 440 | __ATTR(virtual_size, S_IRUGO|S_IWUSR, show_virtual, store_virtual), |
434 | __ATTR(name, S_IRUGO, show_name, NULL), | 441 | __ATTR(name, S_IRUGO, show_name, NULL), |
442 | __ATTR(stride, S_IRUGO, show_stride, NULL), | ||
435 | }; | 443 | }; |
436 | 444 | ||
437 | int fb_init_class_device(struct fb_info *fb_info) | 445 | int fb_init_class_device(struct fb_info *fb_info) |
@@ -1397,6 +1397,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb) | |||
1397 | if (unlikely(!access_ok(VERIFY_WRITE, kiocb->ki_buf, | 1397 | if (unlikely(!access_ok(VERIFY_WRITE, kiocb->ki_buf, |
1398 | kiocb->ki_left))) | 1398 | kiocb->ki_left))) |
1399 | break; | 1399 | break; |
1400 | ret = security_file_permission(file, MAY_READ); | ||
1401 | if (unlikely(ret)) | ||
1402 | break; | ||
1400 | ret = -EINVAL; | 1403 | ret = -EINVAL; |
1401 | if (file->f_op->aio_read) | 1404 | if (file->f_op->aio_read) |
1402 | kiocb->ki_retry = aio_pread; | 1405 | kiocb->ki_retry = aio_pread; |
@@ -1409,6 +1412,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb) | |||
1409 | if (unlikely(!access_ok(VERIFY_READ, kiocb->ki_buf, | 1412 | if (unlikely(!access_ok(VERIFY_READ, kiocb->ki_buf, |
1410 | kiocb->ki_left))) | 1413 | kiocb->ki_left))) |
1411 | break; | 1414 | break; |
1415 | ret = security_file_permission(file, MAY_WRITE); | ||
1416 | if (unlikely(ret)) | ||
1417 | break; | ||
1412 | ret = -EINVAL; | 1418 | ret = -EINVAL; |
1413 | if (file->f_op->aio_write) | 1419 | if (file->f_op->aio_write) |
1414 | kiocb->ki_retry = aio_pwrite; | 1420 | kiocb->ki_retry = aio_pwrite; |
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c index fd0f0f050e1..452fc1fdbd3 100644 --- a/fs/hfsplus/super.c +++ b/fs/hfsplus/super.c | |||
@@ -50,6 +50,7 @@ static void hfsplus_read_inode(struct inode *inode) | |||
50 | init_MUTEX(&HFSPLUS_I(inode).extents_lock); | 50 | init_MUTEX(&HFSPLUS_I(inode).extents_lock); |
51 | HFSPLUS_I(inode).flags = 0; | 51 | HFSPLUS_I(inode).flags = 0; |
52 | HFSPLUS_I(inode).rsrc_inode = NULL; | 52 | HFSPLUS_I(inode).rsrc_inode = NULL; |
53 | atomic_set(&HFSPLUS_I(inode).opencnt, 0); | ||
53 | 54 | ||
54 | if (inode->i_ino >= HFSPLUS_FIRSTUSER_CNID) { | 55 | if (inode->i_ino >= HFSPLUS_FIRSTUSER_CNID) { |
55 | read_inode: | 56 | read_inode: |
diff --git a/fs/inotify.c b/fs/inotify.c index a37e9fb1da5..9fbaebfdf40 100644 --- a/fs/inotify.c +++ b/fs/inotify.c | |||
@@ -176,6 +176,7 @@ static inline void put_inotify_dev(struct inotify_device *dev) | |||
176 | if (atomic_dec_and_test(&dev->count)) { | 176 | if (atomic_dec_and_test(&dev->count)) { |
177 | atomic_dec(&dev->user->inotify_devs); | 177 | atomic_dec(&dev->user->inotify_devs); |
178 | free_uid(dev->user); | 178 | free_uid(dev->user); |
179 | idr_destroy(&dev->idr); | ||
179 | kfree(dev); | 180 | kfree(dev); |
180 | } | 181 | } |
181 | } | 182 | } |
diff --git a/include/asm-alpha/atomic.h b/include/asm-alpha/atomic.h index 1b383e3cb68..20ac3d95ecd 100644 --- a/include/asm-alpha/atomic.h +++ b/include/asm-alpha/atomic.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _ALPHA_ATOMIC_H | 1 | #ifndef _ALPHA_ATOMIC_H |
2 | #define _ALPHA_ATOMIC_H | 2 | #define _ALPHA_ATOMIC_H |
3 | 3 | ||
4 | #include <asm/barrier.h> | ||
5 | |||
4 | /* | 6 | /* |
5 | * Atomic operations that C can't guarantee us. Useful for | 7 | * Atomic operations that C can't guarantee us. Useful for |
6 | * resource counting etc... | 8 | * resource counting etc... |
@@ -100,18 +102,19 @@ static __inline__ void atomic64_sub(long i, atomic64_t * v) | |||
100 | static __inline__ long atomic_add_return(int i, atomic_t * v) | 102 | static __inline__ long atomic_add_return(int i, atomic_t * v) |
101 | { | 103 | { |
102 | long temp, result; | 104 | long temp, result; |
105 | smp_mb(); | ||
103 | __asm__ __volatile__( | 106 | __asm__ __volatile__( |
104 | "1: ldl_l %0,%1\n" | 107 | "1: ldl_l %0,%1\n" |
105 | " addl %0,%3,%2\n" | 108 | " addl %0,%3,%2\n" |
106 | " addl %0,%3,%0\n" | 109 | " addl %0,%3,%0\n" |
107 | " stl_c %0,%1\n" | 110 | " stl_c %0,%1\n" |
108 | " beq %0,2f\n" | 111 | " beq %0,2f\n" |
109 | " mb\n" | ||
110 | ".subsection 2\n" | 112 | ".subsection 2\n" |
111 | "2: br 1b\n" | 113 | "2: br 1b\n" |
112 | ".previous" | 114 | ".previous" |
113 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) | 115 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) |
114 | :"Ir" (i), "m" (v->counter) : "memory"); | 116 | :"Ir" (i), "m" (v->counter) : "memory"); |
117 | smp_mb(); | ||
115 | return result; | 118 | return result; |
116 | } | 119 | } |
117 | 120 | ||
@@ -120,54 +123,57 @@ static __inline__ long atomic_add_return(int i, atomic_t * v) | |||
120 | static __inline__ long atomic64_add_return(long i, atomic64_t * v) | 123 | static __inline__ long atomic64_add_return(long i, atomic64_t * v) |
121 | { | 124 | { |
122 | long temp, result; | 125 | long temp, result; |
126 | smp_mb(); | ||
123 | __asm__ __volatile__( | 127 | __asm__ __volatile__( |
124 | "1: ldq_l %0,%1\n" | 128 | "1: ldq_l %0,%1\n" |
125 | " addq %0,%3,%2\n" | 129 | " addq %0,%3,%2\n" |
126 | " addq %0,%3,%0\n" | 130 | " addq %0,%3,%0\n" |
127 | " stq_c %0,%1\n" | 131 | " stq_c %0,%1\n" |
128 | " beq %0,2f\n" | 132 | " beq %0,2f\n" |
129 | " mb\n" | ||
130 | ".subsection 2\n" | 133 | ".subsection 2\n" |
131 | "2: br 1b\n" | 134 | "2: br 1b\n" |
132 | ".previous" | 135 | ".previous" |
133 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) | 136 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) |
134 | :"Ir" (i), "m" (v->counter) : "memory"); | 137 | :"Ir" (i), "m" (v->counter) : "memory"); |
138 | smp_mb(); | ||
135 | return result; | 139 | return result; |
136 | } | 140 | } |
137 | 141 | ||
138 | static __inline__ long atomic_sub_return(int i, atomic_t * v) | 142 | static __inline__ long atomic_sub_return(int i, atomic_t * v) |
139 | { | 143 | { |
140 | long temp, result; | 144 | long temp, result; |
145 | smp_mb(); | ||
141 | __asm__ __volatile__( | 146 | __asm__ __volatile__( |
142 | "1: ldl_l %0,%1\n" | 147 | "1: ldl_l %0,%1\n" |
143 | " subl %0,%3,%2\n" | 148 | " subl %0,%3,%2\n" |
144 | " subl %0,%3,%0\n" | 149 | " subl %0,%3,%0\n" |
145 | " stl_c %0,%1\n" | 150 | " stl_c %0,%1\n" |
146 | " beq %0,2f\n" | 151 | " beq %0,2f\n" |
147 | " mb\n" | ||
148 | ".subsection 2\n" | 152 | ".subsection 2\n" |
149 | "2: br 1b\n" | 153 | "2: br 1b\n" |
150 | ".previous" | 154 | ".previous" |
151 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) | 155 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) |
152 | :"Ir" (i), "m" (v->counter) : "memory"); | 156 | :"Ir" (i), "m" (v->counter) : "memory"); |
157 | smp_mb(); | ||
153 | return result; | 158 | return result; |
154 | } | 159 | } |
155 | 160 | ||
156 | static __inline__ long atomic64_sub_return(long i, atomic64_t * v) | 161 | static __inline__ long atomic64_sub_return(long i, atomic64_t * v) |
157 | { | 162 | { |
158 | long temp, result; | 163 | long temp, result; |
164 | smp_mb(); | ||
159 | __asm__ __volatile__( | 165 | __asm__ __volatile__( |
160 | "1: ldq_l %0,%1\n" | 166 | "1: ldq_l %0,%1\n" |
161 | " subq %0,%3,%2\n" | 167 | " subq %0,%3,%2\n" |
162 | " subq %0,%3,%0\n" | 168 | " subq %0,%3,%0\n" |
163 | " stq_c %0,%1\n" | 169 | " stq_c %0,%1\n" |
164 | " beq %0,2f\n" | 170 | " beq %0,2f\n" |
165 | " mb\n" | ||
166 | ".subsection 2\n" | 171 | ".subsection 2\n" |
167 | "2: br 1b\n" | 172 | "2: br 1b\n" |
168 | ".previous" | 173 | ".previous" |
169 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) | 174 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) |
170 | :"Ir" (i), "m" (v->counter) : "memory"); | 175 | :"Ir" (i), "m" (v->counter) : "memory"); |
176 | smp_mb(); | ||
171 | return result; | 177 | return result; |
172 | } | 178 | } |
173 | 179 | ||
diff --git a/include/asm-alpha/barrier.h b/include/asm-alpha/barrier.h new file mode 100644 index 00000000000..229c83fe77c --- /dev/null +++ b/include/asm-alpha/barrier.h | |||
@@ -0,0 +1,34 @@ | |||
1 | #ifndef __BARRIER_H | ||
2 | #define __BARRIER_H | ||
3 | |||
4 | #define mb() \ | ||
5 | __asm__ __volatile__("mb": : :"memory") | ||
6 | |||
7 | #define rmb() \ | ||
8 | __asm__ __volatile__("mb": : :"memory") | ||
9 | |||
10 | #define wmb() \ | ||
11 | __asm__ __volatile__("wmb": : :"memory") | ||
12 | |||
13 | #define read_barrier_depends() \ | ||
14 | __asm__ __volatile__("mb": : :"memory") | ||
15 | |||
16 | #ifdef CONFIG_SMP | ||
17 | #define smp_mb() mb() | ||
18 | #define smp_rmb() rmb() | ||
19 | #define smp_wmb() wmb() | ||
20 | #define smp_read_barrier_depends() read_barrier_depends() | ||
21 | #else | ||
22 | #define smp_mb() barrier() | ||
23 | #define smp_rmb() barrier() | ||
24 | #define smp_wmb() barrier() | ||
25 | #define smp_read_barrier_depends() barrier() | ||
26 | #endif | ||
27 | |||
28 | #define set_mb(var, value) \ | ||
29 | do { var = value; mb(); } while (0) | ||
30 | |||
31 | #define set_wmb(var, value) \ | ||
32 | do { var = value; wmb(); } while (0) | ||
33 | |||
34 | #endif /* __BARRIER_H */ | ||
diff --git a/include/asm-alpha/system.h b/include/asm-alpha/system.h index bdb4d66418f..050e86d1289 100644 --- a/include/asm-alpha/system.h +++ b/include/asm-alpha/system.h | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <linux/config.h> | 4 | #include <linux/config.h> |
5 | #include <asm/pal.h> | 5 | #include <asm/pal.h> |
6 | #include <asm/page.h> | 6 | #include <asm/page.h> |
7 | #include <asm/barrier.h> | ||
7 | 8 | ||
8 | /* | 9 | /* |
9 | * System defines.. Note that this is included both from .c and .S | 10 | * System defines.. Note that this is included both from .c and .S |
@@ -139,36 +140,6 @@ extern void halt(void) __attribute__((noreturn)); | |||
139 | struct task_struct; | 140 | struct task_struct; |
140 | extern struct task_struct *alpha_switch_to(unsigned long, struct task_struct*); | 141 | extern struct task_struct *alpha_switch_to(unsigned long, struct task_struct*); |
141 | 142 | ||
142 | #define mb() \ | ||
143 | __asm__ __volatile__("mb": : :"memory") | ||
144 | |||
145 | #define rmb() \ | ||
146 | __asm__ __volatile__("mb": : :"memory") | ||
147 | |||
148 | #define wmb() \ | ||
149 | __asm__ __volatile__("wmb": : :"memory") | ||
150 | |||
151 | #define read_barrier_depends() \ | ||
152 | __asm__ __volatile__("mb": : :"memory") | ||
153 | |||
154 | #ifdef CONFIG_SMP | ||
155 | #define smp_mb() mb() | ||
156 | #define smp_rmb() rmb() | ||
157 | #define smp_wmb() wmb() | ||
158 | #define smp_read_barrier_depends() read_barrier_depends() | ||
159 | #else | ||
160 | #define smp_mb() barrier() | ||
161 | #define smp_rmb() barrier() | ||
162 | #define smp_wmb() barrier() | ||
163 | #define smp_read_barrier_depends() barrier() | ||
164 | #endif | ||
165 | |||
166 | #define set_mb(var, value) \ | ||
167 | do { var = value; mb(); } while (0) | ||
168 | |||
169 | #define set_wmb(var, value) \ | ||
170 | do { var = value; wmb(); } while (0) | ||
171 | |||
172 | #define imb() \ | 143 | #define imb() \ |
173 | __asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory") | 144 | __asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory") |
174 | 145 | ||
diff --git a/include/asm-arm/bitops.h b/include/asm-arm/bitops.h index aad7aad026b..e007dd990da 100644 --- a/include/asm-arm/bitops.h +++ b/include/asm-arm/bitops.h | |||
@@ -347,7 +347,6 @@ static inline unsigned long __ffs(unsigned long word) | |||
347 | * the clz instruction for much better code efficiency. | 347 | * the clz instruction for much better code efficiency. |
348 | */ | 348 | */ |
349 | 349 | ||
350 | static __inline__ int generic_fls(int x); | ||
351 | #define fls(x) \ | 350 | #define fls(x) \ |
352 | ( __builtin_constant_p(x) ? generic_fls(x) : \ | 351 | ( __builtin_constant_p(x) ? generic_fls(x) : \ |
353 | ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) ) | 352 | ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) ) |
diff --git a/include/linux/idr.h b/include/linux/idr.h index ca3b7e46257..3d5de45f961 100644 --- a/include/linux/idr.h +++ b/include/linux/idr.h | |||
@@ -75,4 +75,5 @@ int idr_pre_get(struct idr *idp, unsigned gfp_mask); | |||
75 | int idr_get_new(struct idr *idp, void *ptr, int *id); | 75 | int idr_get_new(struct idr *idp, void *ptr, int *id); |
76 | int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id); | 76 | int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id); |
77 | void idr_remove(struct idr *idp, int id); | 77 | void idr_remove(struct idr *idp, int id); |
78 | void idr_destroy(struct idr *idp); | ||
78 | void idr_init(struct idr *idp); | 79 | void idr_init(struct idr *idp); |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index f74ed946247..71834f05504 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -723,6 +723,7 @@ | |||
723 | #define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282 | 723 | #define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282 |
724 | #define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290 | 724 | #define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290 |
725 | #define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301 | 725 | #define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301 |
726 | #define PCI_DEVICE_ID_HP_DIVA_HURRICANE 0x132a | ||
726 | #define PCI_DEVICE_ID_HP_CISS 0x3210 | 727 | #define PCI_DEVICE_ID_HP_CISS 0x3210 |
727 | #define PCI_DEVICE_ID_HP_CISSA 0x3220 | 728 | #define PCI_DEVICE_ID_HP_CISSA 0x3220 |
728 | #define PCI_DEVICE_ID_HP_CISSB 0x3222 | 729 | #define PCI_DEVICE_ID_HP_CISSB 0x3222 |
@@ -2696,6 +2697,7 @@ | |||
2696 | 2697 | ||
2697 | #define PCI_SUBVENDOR_ID_EXSYS 0xd84d | 2698 | #define PCI_SUBVENDOR_ID_EXSYS 0xd84d |
2698 | #define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014 | 2699 | #define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014 |
2700 | #define PCI_SUBDEVICE_ID_EXSYS_4055 0x4055 | ||
2699 | 2701 | ||
2700 | #define PCI_VENDOR_ID_TIGERJET 0xe159 | 2702 | #define PCI_VENDOR_ID_TIGERJET 0xe159 |
2701 | #define PCI_DEVICE_ID_TIGERJET_300 0x0001 | 2703 | #define PCI_DEVICE_ID_TIGERJET_300 0x0001 |
diff --git a/include/net/ax25.h b/include/net/ax25.h index 9dbcd9e51c0..30bb4a89323 100644 --- a/include/net/ax25.h +++ b/include/net/ax25.h | |||
@@ -171,7 +171,7 @@ typedef struct { | |||
171 | ax25_address calls[AX25_MAX_DIGIS]; | 171 | ax25_address calls[AX25_MAX_DIGIS]; |
172 | unsigned char repeated[AX25_MAX_DIGIS]; | 172 | unsigned char repeated[AX25_MAX_DIGIS]; |
173 | unsigned char ndigi; | 173 | unsigned char ndigi; |
174 | char lastrepeat; | 174 | signed char lastrepeat; |
175 | } ax25_digi; | 175 | } ax25_digi; |
176 | 176 | ||
177 | typedef struct ax25_route { | 177 | typedef struct ax25_route { |
diff --git a/include/net/llc_pdu.h b/include/net/llc_pdu.h index f45c37d89cf..c7a959428b4 100644 --- a/include/net/llc_pdu.h +++ b/include/net/llc_pdu.h | |||
@@ -254,8 +254,10 @@ static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa) | |||
254 | { | 254 | { |
255 | if (skb->protocol == ntohs(ETH_P_802_2)) | 255 | if (skb->protocol == ntohs(ETH_P_802_2)) |
256 | memcpy(sa, eth_hdr(skb)->h_source, ETH_ALEN); | 256 | memcpy(sa, eth_hdr(skb)->h_source, ETH_ALEN); |
257 | else if (skb->protocol == ntohs(ETH_P_TR_802_2)) | 257 | else if (skb->protocol == ntohs(ETH_P_TR_802_2)) { |
258 | memcpy(sa, tr_hdr(skb)->saddr, ETH_ALEN); | 258 | memcpy(sa, tr_hdr(skb)->saddr, ETH_ALEN); |
259 | *sa &= 0x7F; | ||
260 | } | ||
259 | } | 261 | } |
260 | 262 | ||
261 | /** | 263 | /** |
diff --git a/kernel/exit.c b/kernel/exit.c index 3b25b182d2b..4897977a1f4 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -825,14 +825,6 @@ fastcall NORET_TYPE void do_exit(long code) | |||
825 | 825 | ||
826 | tsk->flags |= PF_EXITING; | 826 | tsk->flags |= PF_EXITING; |
827 | 827 | ||
828 | /* | ||
829 | * Make sure we don't try to process any timer firings | ||
830 | * while we are already exiting. | ||
831 | */ | ||
832 | tsk->it_virt_expires = cputime_zero; | ||
833 | tsk->it_prof_expires = cputime_zero; | ||
834 | tsk->it_sched_expires = 0; | ||
835 | |||
836 | if (unlikely(in_atomic())) | 828 | if (unlikely(in_atomic())) |
837 | printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n", | 829 | printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n", |
838 | current->comm, current->pid, | 830 | current->comm, current->pid, |
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index 7a51a5597c3..383ba22f0b6 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c | |||
@@ -91,7 +91,7 @@ static inline union cpu_time_count cpu_time_sub(clockid_t which_clock, | |||
91 | * Update expiry time from increment, and increase overrun count, | 91 | * Update expiry time from increment, and increase overrun count, |
92 | * given the current clock sample. | 92 | * given the current clock sample. |
93 | */ | 93 | */ |
94 | static inline void bump_cpu_timer(struct k_itimer *timer, | 94 | static void bump_cpu_timer(struct k_itimer *timer, |
95 | union cpu_time_count now) | 95 | union cpu_time_count now) |
96 | { | 96 | { |
97 | int i; | 97 | int i; |
@@ -110,7 +110,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer, | |||
110 | for (i = 0; incr < delta - incr; i++) | 110 | for (i = 0; incr < delta - incr; i++) |
111 | incr = incr << 1; | 111 | incr = incr << 1; |
112 | for (; i >= 0; incr >>= 1, i--) { | 112 | for (; i >= 0; incr >>= 1, i--) { |
113 | if (delta <= incr) | 113 | if (delta < incr) |
114 | continue; | 114 | continue; |
115 | timer->it.cpu.expires.sched += incr; | 115 | timer->it.cpu.expires.sched += incr; |
116 | timer->it_overrun += 1 << i; | 116 | timer->it_overrun += 1 << i; |
@@ -128,7 +128,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer, | |||
128 | for (i = 0; cputime_lt(incr, cputime_sub(delta, incr)); i++) | 128 | for (i = 0; cputime_lt(incr, cputime_sub(delta, incr)); i++) |
129 | incr = cputime_add(incr, incr); | 129 | incr = cputime_add(incr, incr); |
130 | for (; i >= 0; incr = cputime_halve(incr), i--) { | 130 | for (; i >= 0; incr = cputime_halve(incr), i--) { |
131 | if (cputime_le(delta, incr)) | 131 | if (cputime_lt(delta, incr)) |
132 | continue; | 132 | continue; |
133 | timer->it.cpu.expires.cpu = | 133 | timer->it.cpu.expires.cpu = |
134 | cputime_add(timer->it.cpu.expires.cpu, incr); | 134 | cputime_add(timer->it.cpu.expires.cpu, incr); |
@@ -380,14 +380,9 @@ int posix_cpu_timer_create(struct k_itimer *new_timer) | |||
380 | int posix_cpu_timer_del(struct k_itimer *timer) | 380 | int posix_cpu_timer_del(struct k_itimer *timer) |
381 | { | 381 | { |
382 | struct task_struct *p = timer->it.cpu.task; | 382 | struct task_struct *p = timer->it.cpu.task; |
383 | int ret = 0; | ||
383 | 384 | ||
384 | if (timer->it.cpu.firing) | 385 | if (likely(p != NULL)) { |
385 | return TIMER_RETRY; | ||
386 | |||
387 | if (unlikely(p == NULL)) | ||
388 | return 0; | ||
389 | |||
390 | if (!list_empty(&timer->it.cpu.entry)) { | ||
391 | read_lock(&tasklist_lock); | 386 | read_lock(&tasklist_lock); |
392 | if (unlikely(p->signal == NULL)) { | 387 | if (unlikely(p->signal == NULL)) { |
393 | /* | 388 | /* |
@@ -396,18 +391,20 @@ int posix_cpu_timer_del(struct k_itimer *timer) | |||
396 | */ | 391 | */ |
397 | BUG_ON(!list_empty(&timer->it.cpu.entry)); | 392 | BUG_ON(!list_empty(&timer->it.cpu.entry)); |
398 | } else { | 393 | } else { |
399 | /* | ||
400 | * Take us off the task's timer list. | ||
401 | */ | ||
402 | spin_lock(&p->sighand->siglock); | 394 | spin_lock(&p->sighand->siglock); |
403 | list_del(&timer->it.cpu.entry); | 395 | if (timer->it.cpu.firing) |
396 | ret = TIMER_RETRY; | ||
397 | else | ||
398 | list_del(&timer->it.cpu.entry); | ||
404 | spin_unlock(&p->sighand->siglock); | 399 | spin_unlock(&p->sighand->siglock); |
405 | } | 400 | } |
406 | read_unlock(&tasklist_lock); | 401 | read_unlock(&tasklist_lock); |
402 | |||
403 | if (!ret) | ||
404 | put_task_struct(p); | ||
407 | } | 405 | } |
408 | put_task_struct(p); | ||
409 | 406 | ||
410 | return 0; | 407 | return ret; |
411 | } | 408 | } |
412 | 409 | ||
413 | /* | 410 | /* |
@@ -424,8 +421,6 @@ static void cleanup_timers(struct list_head *head, | |||
424 | cputime_t ptime = cputime_add(utime, stime); | 421 | cputime_t ptime = cputime_add(utime, stime); |
425 | 422 | ||
426 | list_for_each_entry_safe(timer, next, head, entry) { | 423 | list_for_each_entry_safe(timer, next, head, entry) { |
427 | put_task_struct(timer->task); | ||
428 | timer->task = NULL; | ||
429 | list_del_init(&timer->entry); | 424 | list_del_init(&timer->entry); |
430 | if (cputime_lt(timer->expires.cpu, ptime)) { | 425 | if (cputime_lt(timer->expires.cpu, ptime)) { |
431 | timer->expires.cpu = cputime_zero; | 426 | timer->expires.cpu = cputime_zero; |
@@ -437,8 +432,6 @@ static void cleanup_timers(struct list_head *head, | |||
437 | 432 | ||
438 | ++head; | 433 | ++head; |
439 | list_for_each_entry_safe(timer, next, head, entry) { | 434 | list_for_each_entry_safe(timer, next, head, entry) { |
440 | put_task_struct(timer->task); | ||
441 | timer->task = NULL; | ||
442 | list_del_init(&timer->entry); | 435 | list_del_init(&timer->entry); |
443 | if (cputime_lt(timer->expires.cpu, utime)) { | 436 | if (cputime_lt(timer->expires.cpu, utime)) { |
444 | timer->expires.cpu = cputime_zero; | 437 | timer->expires.cpu = cputime_zero; |
@@ -450,8 +443,6 @@ static void cleanup_timers(struct list_head *head, | |||
450 | 443 | ||
451 | ++head; | 444 | ++head; |
452 | list_for_each_entry_safe(timer, next, head, entry) { | 445 | list_for_each_entry_safe(timer, next, head, entry) { |
453 | put_task_struct(timer->task); | ||
454 | timer->task = NULL; | ||
455 | list_del_init(&timer->entry); | 446 | list_del_init(&timer->entry); |
456 | if (timer->expires.sched < sched_time) { | 447 | if (timer->expires.sched < sched_time) { |
457 | timer->expires.sched = 0; | 448 | timer->expires.sched = 0; |
@@ -495,6 +486,9 @@ static void process_timer_rebalance(struct task_struct *p, | |||
495 | struct task_struct *t = p; | 486 | struct task_struct *t = p; |
496 | unsigned int nthreads = atomic_read(&p->signal->live); | 487 | unsigned int nthreads = atomic_read(&p->signal->live); |
497 | 488 | ||
489 | if (!nthreads) | ||
490 | return; | ||
491 | |||
498 | switch (clock_idx) { | 492 | switch (clock_idx) { |
499 | default: | 493 | default: |
500 | BUG(); | 494 | BUG(); |
@@ -582,17 +576,15 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now) | |||
582 | listpos = head; | 576 | listpos = head; |
583 | if (CPUCLOCK_WHICH(timer->it_clock) == CPUCLOCK_SCHED) { | 577 | if (CPUCLOCK_WHICH(timer->it_clock) == CPUCLOCK_SCHED) { |
584 | list_for_each_entry(next, head, entry) { | 578 | list_for_each_entry(next, head, entry) { |
585 | if (next->expires.sched > nt->expires.sched) { | 579 | if (next->expires.sched > nt->expires.sched) |
586 | listpos = &next->entry; | ||
587 | break; | 580 | break; |
588 | } | 581 | listpos = &next->entry; |
589 | } | 582 | } |
590 | } else { | 583 | } else { |
591 | list_for_each_entry(next, head, entry) { | 584 | list_for_each_entry(next, head, entry) { |
592 | if (cputime_gt(next->expires.cpu, nt->expires.cpu)) { | 585 | if (cputime_gt(next->expires.cpu, nt->expires.cpu)) |
593 | listpos = &next->entry; | ||
594 | break; | 586 | break; |
595 | } | 587 | listpos = &next->entry; |
596 | } | 588 | } |
597 | } | 589 | } |
598 | list_add(&nt->entry, listpos); | 590 | list_add(&nt->entry, listpos); |
@@ -736,9 +728,15 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags, | |||
736 | * Disarm any old timer after extracting its expiry time. | 728 | * Disarm any old timer after extracting its expiry time. |
737 | */ | 729 | */ |
738 | BUG_ON(!irqs_disabled()); | 730 | BUG_ON(!irqs_disabled()); |
731 | |||
732 | ret = 0; | ||
739 | spin_lock(&p->sighand->siglock); | 733 | spin_lock(&p->sighand->siglock); |
740 | old_expires = timer->it.cpu.expires; | 734 | old_expires = timer->it.cpu.expires; |
741 | list_del_init(&timer->it.cpu.entry); | 735 | if (unlikely(timer->it.cpu.firing)) { |
736 | timer->it.cpu.firing = -1; | ||
737 | ret = TIMER_RETRY; | ||
738 | } else | ||
739 | list_del_init(&timer->it.cpu.entry); | ||
742 | spin_unlock(&p->sighand->siglock); | 740 | spin_unlock(&p->sighand->siglock); |
743 | 741 | ||
744 | /* | 742 | /* |
@@ -786,7 +784,7 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags, | |||
786 | } | 784 | } |
787 | } | 785 | } |
788 | 786 | ||
789 | if (unlikely(timer->it.cpu.firing)) { | 787 | if (unlikely(ret)) { |
790 | /* | 788 | /* |
791 | * We are colliding with the timer actually firing. | 789 | * We are colliding with the timer actually firing. |
792 | * Punt after filling in the timer's old value, and | 790 | * Punt after filling in the timer's old value, and |
@@ -794,8 +792,6 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags, | |||
794 | * it as an overrun (thanks to bump_cpu_timer above). | 792 | * it as an overrun (thanks to bump_cpu_timer above). |
795 | */ | 793 | */ |
796 | read_unlock(&tasklist_lock); | 794 | read_unlock(&tasklist_lock); |
797 | timer->it.cpu.firing = -1; | ||
798 | ret = TIMER_RETRY; | ||
799 | goto out; | 795 | goto out; |
800 | } | 796 | } |
801 | 797 | ||
@@ -961,14 +957,16 @@ void posix_cpu_timer_get(struct k_itimer *timer, struct itimerspec *itp) | |||
961 | static void check_thread_timers(struct task_struct *tsk, | 957 | static void check_thread_timers(struct task_struct *tsk, |
962 | struct list_head *firing) | 958 | struct list_head *firing) |
963 | { | 959 | { |
960 | int maxfire; | ||
964 | struct list_head *timers = tsk->cpu_timers; | 961 | struct list_head *timers = tsk->cpu_timers; |
965 | 962 | ||
963 | maxfire = 20; | ||
966 | tsk->it_prof_expires = cputime_zero; | 964 | tsk->it_prof_expires = cputime_zero; |
967 | while (!list_empty(timers)) { | 965 | while (!list_empty(timers)) { |
968 | struct cpu_timer_list *t = list_entry(timers->next, | 966 | struct cpu_timer_list *t = list_entry(timers->next, |
969 | struct cpu_timer_list, | 967 | struct cpu_timer_list, |
970 | entry); | 968 | entry); |
971 | if (cputime_lt(prof_ticks(tsk), t->expires.cpu)) { | 969 | if (!--maxfire || cputime_lt(prof_ticks(tsk), t->expires.cpu)) { |
972 | tsk->it_prof_expires = t->expires.cpu; | 970 | tsk->it_prof_expires = t->expires.cpu; |
973 | break; | 971 | break; |
974 | } | 972 | } |
@@ -977,12 +975,13 @@ static void check_thread_timers(struct task_struct *tsk, | |||
977 | } | 975 | } |
978 | 976 | ||
979 | ++timers; | 977 | ++timers; |
978 | maxfire = 20; | ||
980 | tsk->it_virt_expires = cputime_zero; | 979 | tsk->it_virt_expires = cputime_zero; |
981 | while (!list_empty(timers)) { | 980 | while (!list_empty(timers)) { |
982 | struct cpu_timer_list *t = list_entry(timers->next, | 981 | struct cpu_timer_list *t = list_entry(timers->next, |
983 | struct cpu_timer_list, | 982 | struct cpu_timer_list, |
984 | entry); | 983 | entry); |
985 | if (cputime_lt(virt_ticks(tsk), t->expires.cpu)) { | 984 | if (!--maxfire || cputime_lt(virt_ticks(tsk), t->expires.cpu)) { |
986 | tsk->it_virt_expires = t->expires.cpu; | 985 | tsk->it_virt_expires = t->expires.cpu; |
987 | break; | 986 | break; |
988 | } | 987 | } |
@@ -991,12 +990,13 @@ static void check_thread_timers(struct task_struct *tsk, | |||
991 | } | 990 | } |
992 | 991 | ||
993 | ++timers; | 992 | ++timers; |
993 | maxfire = 20; | ||
994 | tsk->it_sched_expires = 0; | 994 | tsk->it_sched_expires = 0; |
995 | while (!list_empty(timers)) { | 995 | while (!list_empty(timers)) { |
996 | struct cpu_timer_list *t = list_entry(timers->next, | 996 | struct cpu_timer_list *t = list_entry(timers->next, |
997 | struct cpu_timer_list, | 997 | struct cpu_timer_list, |
998 | entry); | 998 | entry); |
999 | if (tsk->sched_time < t->expires.sched) { | 999 | if (!--maxfire || tsk->sched_time < t->expires.sched) { |
1000 | tsk->it_sched_expires = t->expires.sched; | 1000 | tsk->it_sched_expires = t->expires.sched; |
1001 | break; | 1001 | break; |
1002 | } | 1002 | } |
@@ -1013,6 +1013,7 @@ static void check_thread_timers(struct task_struct *tsk, | |||
1013 | static void check_process_timers(struct task_struct *tsk, | 1013 | static void check_process_timers(struct task_struct *tsk, |
1014 | struct list_head *firing) | 1014 | struct list_head *firing) |
1015 | { | 1015 | { |
1016 | int maxfire; | ||
1016 | struct signal_struct *const sig = tsk->signal; | 1017 | struct signal_struct *const sig = tsk->signal; |
1017 | cputime_t utime, stime, ptime, virt_expires, prof_expires; | 1018 | cputime_t utime, stime, ptime, virt_expires, prof_expires; |
1018 | unsigned long long sched_time, sched_expires; | 1019 | unsigned long long sched_time, sched_expires; |
@@ -1045,12 +1046,13 @@ static void check_process_timers(struct task_struct *tsk, | |||
1045 | } while (t != tsk); | 1046 | } while (t != tsk); |
1046 | ptime = cputime_add(utime, stime); | 1047 | ptime = cputime_add(utime, stime); |
1047 | 1048 | ||
1049 | maxfire = 20; | ||
1048 | prof_expires = cputime_zero; | 1050 | prof_expires = cputime_zero; |
1049 | while (!list_empty(timers)) { | 1051 | while (!list_empty(timers)) { |
1050 | struct cpu_timer_list *t = list_entry(timers->next, | 1052 | struct cpu_timer_list *t = list_entry(timers->next, |
1051 | struct cpu_timer_list, | 1053 | struct cpu_timer_list, |
1052 | entry); | 1054 | entry); |
1053 | if (cputime_lt(ptime, t->expires.cpu)) { | 1055 | if (!--maxfire || cputime_lt(ptime, t->expires.cpu)) { |
1054 | prof_expires = t->expires.cpu; | 1056 | prof_expires = t->expires.cpu; |
1055 | break; | 1057 | break; |
1056 | } | 1058 | } |
@@ -1059,12 +1061,13 @@ static void check_process_timers(struct task_struct *tsk, | |||
1059 | } | 1061 | } |
1060 | 1062 | ||
1061 | ++timers; | 1063 | ++timers; |
1064 | maxfire = 20; | ||
1062 | virt_expires = cputime_zero; | 1065 | virt_expires = cputime_zero; |
1063 | while (!list_empty(timers)) { | 1066 | while (!list_empty(timers)) { |
1064 | struct cpu_timer_list *t = list_entry(timers->next, | 1067 | struct cpu_timer_list *t = list_entry(timers->next, |
1065 | struct cpu_timer_list, | 1068 | struct cpu_timer_list, |
1066 | entry); | 1069 | entry); |
1067 | if (cputime_lt(utime, t->expires.cpu)) { | 1070 | if (!--maxfire || cputime_lt(utime, t->expires.cpu)) { |
1068 | virt_expires = t->expires.cpu; | 1071 | virt_expires = t->expires.cpu; |
1069 | break; | 1072 | break; |
1070 | } | 1073 | } |
@@ -1073,12 +1076,13 @@ static void check_process_timers(struct task_struct *tsk, | |||
1073 | } | 1076 | } |
1074 | 1077 | ||
1075 | ++timers; | 1078 | ++timers; |
1079 | maxfire = 20; | ||
1076 | sched_expires = 0; | 1080 | sched_expires = 0; |
1077 | while (!list_empty(timers)) { | 1081 | while (!list_empty(timers)) { |
1078 | struct cpu_timer_list *t = list_entry(timers->next, | 1082 | struct cpu_timer_list *t = list_entry(timers->next, |
1079 | struct cpu_timer_list, | 1083 | struct cpu_timer_list, |
1080 | entry); | 1084 | entry); |
1081 | if (sched_time < t->expires.sched) { | 1085 | if (!--maxfire || sched_time < t->expires.sched) { |
1082 | sched_expires = t->expires.sched; | 1086 | sched_expires = t->expires.sched; |
1083 | break; | 1087 | break; |
1084 | } | 1088 | } |
@@ -1161,6 +1165,9 @@ static void check_process_timers(struct task_struct *tsk, | |||
1161 | unsigned long long sched_left, sched; | 1165 | unsigned long long sched_left, sched; |
1162 | const unsigned int nthreads = atomic_read(&sig->live); | 1166 | const unsigned int nthreads = atomic_read(&sig->live); |
1163 | 1167 | ||
1168 | if (!nthreads) | ||
1169 | return; | ||
1170 | |||
1164 | prof_left = cputime_sub(prof_expires, utime); | 1171 | prof_left = cputime_sub(prof_expires, utime); |
1165 | prof_left = cputime_sub(prof_left, stime); | 1172 | prof_left = cputime_sub(prof_left, stime); |
1166 | prof_left = cputime_div(prof_left, nthreads); | 1173 | prof_left = cputime_div(prof_left, nthreads); |
@@ -1286,30 +1293,30 @@ void run_posix_cpu_timers(struct task_struct *tsk) | |||
1286 | 1293 | ||
1287 | #undef UNEXPIRED | 1294 | #undef UNEXPIRED |
1288 | 1295 | ||
1289 | BUG_ON(tsk->exit_state); | ||
1290 | |||
1291 | /* | 1296 | /* |
1292 | * Double-check with locks held. | 1297 | * Double-check with locks held. |
1293 | */ | 1298 | */ |
1294 | read_lock(&tasklist_lock); | 1299 | read_lock(&tasklist_lock); |
1295 | spin_lock(&tsk->sighand->siglock); | 1300 | if (likely(tsk->signal != NULL)) { |
1301 | spin_lock(&tsk->sighand->siglock); | ||
1296 | 1302 | ||
1297 | /* | 1303 | /* |
1298 | * Here we take off tsk->cpu_timers[N] and tsk->signal->cpu_timers[N] | 1304 | * Here we take off tsk->cpu_timers[N] and tsk->signal->cpu_timers[N] |
1299 | * all the timers that are firing, and put them on the firing list. | 1305 | * all the timers that are firing, and put them on the firing list. |
1300 | */ | 1306 | */ |
1301 | check_thread_timers(tsk, &firing); | 1307 | check_thread_timers(tsk, &firing); |
1302 | check_process_timers(tsk, &firing); | 1308 | check_process_timers(tsk, &firing); |
1303 | 1309 | ||
1304 | /* | 1310 | /* |
1305 | * We must release these locks before taking any timer's lock. | 1311 | * We must release these locks before taking any timer's lock. |
1306 | * There is a potential race with timer deletion here, as the | 1312 | * There is a potential race with timer deletion here, as the |
1307 | * siglock now protects our private firing list. We have set | 1313 | * siglock now protects our private firing list. We have set |
1308 | * the firing flag in each timer, so that a deletion attempt | 1314 | * the firing flag in each timer, so that a deletion attempt |
1309 | * that gets the timer lock before we do will give it up and | 1315 | * that gets the timer lock before we do will give it up and |
1310 | * spin until we've taken care of that timer below. | 1316 | * spin until we've taken care of that timer below. |
1311 | */ | 1317 | */ |
1312 | spin_unlock(&tsk->sighand->siglock); | 1318 | spin_unlock(&tsk->sighand->siglock); |
1319 | } | ||
1313 | read_unlock(&tasklist_lock); | 1320 | read_unlock(&tasklist_lock); |
1314 | 1321 | ||
1315 | /* | 1322 | /* |
diff --git a/kernel/sched.c b/kernel/sched.c index 1f31a528fdb..1e5cafdf4e2 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -3879,6 +3879,7 @@ EXPORT_SYMBOL(cpu_present_map); | |||
3879 | 3879 | ||
3880 | #ifndef CONFIG_SMP | 3880 | #ifndef CONFIG_SMP |
3881 | cpumask_t cpu_online_map = CPU_MASK_ALL; | 3881 | cpumask_t cpu_online_map = CPU_MASK_ALL; |
3882 | EXPORT_SYMBOL_GPL(cpu_online_map); | ||
3882 | cpumask_t cpu_possible_map = CPU_MASK_ALL; | 3883 | cpumask_t cpu_possible_map = CPU_MASK_ALL; |
3883 | #endif | 3884 | #endif |
3884 | 3885 | ||
@@ -346,6 +346,19 @@ void idr_remove(struct idr *idp, int id) | |||
346 | EXPORT_SYMBOL(idr_remove); | 346 | EXPORT_SYMBOL(idr_remove); |
347 | 347 | ||
348 | /** | 348 | /** |
349 | * idr_destroy - release all cached layers within an idr tree | ||
350 | * idp: idr handle | ||
351 | */ | ||
352 | void idr_destroy(struct idr *idp) | ||
353 | { | ||
354 | while (idp->id_free_cnt) { | ||
355 | struct idr_layer *p = alloc_layer(idp); | ||
356 | kmem_cache_free(idr_layer_cache, p); | ||
357 | } | ||
358 | } | ||
359 | EXPORT_SYMBOL(idr_destroy); | ||
360 | |||
361 | /** | ||
349 | * idr_find - return pointer for given id | 362 | * idr_find - return pointer for given id |
350 | * @idp: idr handle | 363 | * @idp: idr handle |
351 | * @id: lookup key | 364 | * @id: lookup key |
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index cc1fe2672a3..e1d3d77f4ae 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -1750,6 +1750,8 @@ inline void setup_pageset(struct per_cpu_pageset *p, unsigned long batch) | |||
1750 | { | 1750 | { |
1751 | struct per_cpu_pages *pcp; | 1751 | struct per_cpu_pages *pcp; |
1752 | 1752 | ||
1753 | memset(p, 0, sizeof(*p)); | ||
1754 | |||
1753 | pcp = &p->pcp[0]; /* hot */ | 1755 | pcp = &p->pcp[0]; /* hot */ |
1754 | pcp->count = 0; | 1756 | pcp->count = 0; |
1755 | pcp->low = 2 * batch; | 1757 | pcp->low = 2 * batch; |
diff --git a/net/802/tr.c b/net/802/tr.c index 1eaa3d19d8b..afd8385c0c9 100644 --- a/net/802/tr.c +++ b/net/802/tr.c | |||
@@ -340,9 +340,10 @@ static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev) | |||
340 | unsigned int hash, rii_p = 0; | 340 | unsigned int hash, rii_p = 0; |
341 | unsigned long flags; | 341 | unsigned long flags; |
342 | struct rif_cache *entry; | 342 | struct rif_cache *entry; |
343 | 343 | unsigned char saddr0; | |
344 | 344 | ||
345 | spin_lock_irqsave(&rif_lock, flags); | 345 | spin_lock_irqsave(&rif_lock, flags); |
346 | saddr0 = trh->saddr[0]; | ||
346 | 347 | ||
347 | /* | 348 | /* |
348 | * Firstly see if the entry exists | 349 | * Firstly see if the entry exists |
@@ -395,7 +396,6 @@ printk("adding rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n", | |||
395 | entry->rcf = trh->rcf & htons((unsigned short)~TR_RCF_BROADCAST_MASK); | 396 | entry->rcf = trh->rcf & htons((unsigned short)~TR_RCF_BROADCAST_MASK); |
396 | memcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short)); | 397 | memcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short)); |
397 | entry->local_ring = 0; | 398 | entry->local_ring = 0; |
398 | trh->saddr[0]|=TR_RII; /* put the routing indicator back for tcpdump */ | ||
399 | } | 399 | } |
400 | else | 400 | else |
401 | { | 401 | { |
@@ -422,6 +422,7 @@ printk("updating rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n", | |||
422 | } | 422 | } |
423 | entry->last_used=jiffies; | 423 | entry->last_used=jiffies; |
424 | } | 424 | } |
425 | trh->saddr[0]=saddr0; /* put the routing indicator back for tcpdump */ | ||
425 | spin_unlock_irqrestore(&rif_lock, flags); | 426 | spin_unlock_irqrestore(&rif_lock, flags); |
426 | } | 427 | } |
427 | 428 | ||
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 4128fc76ac3..1dcf7fa1f0f 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
@@ -175,39 +175,10 @@ static void pneigh_queue_purge(struct sk_buff_head *list) | |||
175 | } | 175 | } |
176 | } | 176 | } |
177 | 177 | ||
178 | void neigh_changeaddr(struct neigh_table *tbl, struct net_device *dev) | 178 | static void neigh_flush_dev(struct neigh_table *tbl, struct net_device *dev) |
179 | { | 179 | { |
180 | int i; | 180 | int i; |
181 | 181 | ||
182 | write_lock_bh(&tbl->lock); | ||
183 | |||
184 | for (i=0; i <= tbl->hash_mask; i++) { | ||
185 | struct neighbour *n, **np; | ||
186 | |||
187 | np = &tbl->hash_buckets[i]; | ||
188 | while ((n = *np) != NULL) { | ||
189 | if (dev && n->dev != dev) { | ||
190 | np = &n->next; | ||
191 | continue; | ||
192 | } | ||
193 | *np = n->next; | ||
194 | write_lock_bh(&n->lock); | ||
195 | n->dead = 1; | ||
196 | neigh_del_timer(n); | ||
197 | write_unlock_bh(&n->lock); | ||
198 | neigh_release(n); | ||
199 | } | ||
200 | } | ||
201 | |||
202 | write_unlock_bh(&tbl->lock); | ||
203 | } | ||
204 | |||
205 | int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev) | ||
206 | { | ||
207 | int i; | ||
208 | |||
209 | write_lock_bh(&tbl->lock); | ||
210 | |||
211 | for (i = 0; i <= tbl->hash_mask; i++) { | 182 | for (i = 0; i <= tbl->hash_mask; i++) { |
212 | struct neighbour *n, **np = &tbl->hash_buckets[i]; | 183 | struct neighbour *n, **np = &tbl->hash_buckets[i]; |
213 | 184 | ||
@@ -243,7 +214,19 @@ int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev) | |||
243 | neigh_release(n); | 214 | neigh_release(n); |
244 | } | 215 | } |
245 | } | 216 | } |
217 | } | ||
246 | 218 | ||
219 | void neigh_changeaddr(struct neigh_table *tbl, struct net_device *dev) | ||
220 | { | ||
221 | write_lock_bh(&tbl->lock); | ||
222 | neigh_flush_dev(tbl, dev); | ||
223 | write_unlock_bh(&tbl->lock); | ||
224 | } | ||
225 | |||
226 | int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev) | ||
227 | { | ||
228 | write_lock_bh(&tbl->lock); | ||
229 | neigh_flush_dev(tbl, dev); | ||
247 | pneigh_ifdown(tbl, dev); | 230 | pneigh_ifdown(tbl, dev); |
248 | write_unlock_bh(&tbl->lock); | 231 | write_unlock_bh(&tbl->lock); |
249 | 232 | ||
@@ -732,6 +715,7 @@ static inline void neigh_add_timer(struct neighbour *n, unsigned long when) | |||
732 | if (unlikely(mod_timer(&n->timer, when))) { | 715 | if (unlikely(mod_timer(&n->timer, when))) { |
733 | printk("NEIGH: BUG, double timer add, state is %x\n", | 716 | printk("NEIGH: BUG, double timer add, state is %x\n", |
734 | n->nud_state); | 717 | n->nud_state); |
718 | dump_stack(); | ||
735 | } | 719 | } |
736 | } | 720 | } |
737 | 721 | ||
@@ -815,10 +799,10 @@ static void neigh_timer_handler(unsigned long arg) | |||
815 | } | 799 | } |
816 | 800 | ||
817 | if (neigh->nud_state & NUD_IN_TIMER) { | 801 | if (neigh->nud_state & NUD_IN_TIMER) { |
818 | neigh_hold(neigh); | ||
819 | if (time_before(next, jiffies + HZ/2)) | 802 | if (time_before(next, jiffies + HZ/2)) |
820 | next = jiffies + HZ/2; | 803 | next = jiffies + HZ/2; |
821 | neigh_add_timer(neigh, next); | 804 | if (!mod_timer(&neigh->timer, next)) |
805 | neigh_hold(neigh); | ||
822 | } | 806 | } |
823 | if (neigh->nud_state & (NUD_INCOMPLETE | NUD_PROBE)) { | 807 | if (neigh->nud_state & (NUD_INCOMPLETE | NUD_PROBE)) { |
824 | struct sk_buff *skb = skb_peek(&neigh->arp_queue); | 808 | struct sk_buff *skb = skb_peek(&neigh->arp_queue); |
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index af9b1516e21..02cd4cde211 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -410,6 +410,9 @@ struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t gfp_mask) | |||
410 | C(nfct); | 410 | C(nfct); |
411 | nf_conntrack_get(skb->nfct); | 411 | nf_conntrack_get(skb->nfct); |
412 | C(nfctinfo); | 412 | C(nfctinfo); |
413 | #if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE) | ||
414 | C(ipvs_property); | ||
415 | #endif | ||
413 | #ifdef CONFIG_BRIDGE_NETFILTER | 416 | #ifdef CONFIG_BRIDGE_NETFILTER |
414 | C(nf_bridge); | 417 | C(nf_bridge); |
415 | nf_bridge_get(skb->nf_bridge); | 418 | nf_bridge_get(skb->nf_bridge); |
@@ -467,6 +470,9 @@ static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old) | |||
467 | new->nfct = old->nfct; | 470 | new->nfct = old->nfct; |
468 | nf_conntrack_get(old->nfct); | 471 | nf_conntrack_get(old->nfct); |
469 | new->nfctinfo = old->nfctinfo; | 472 | new->nfctinfo = old->nfctinfo; |
473 | #if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE) | ||
474 | new->ipvs_property = old->ipvs_property; | ||
475 | #endif | ||
470 | #ifdef CONFIG_BRIDGE_NETFILTER | 476 | #ifdef CONFIG_BRIDGE_NETFILTER |
471 | new->nf_bridge = old->nf_bridge; | 477 | new->nf_bridge = old->nf_bridge; |
472 | nf_bridge_get(old->nf_bridge); | 478 | nf_bridge_get(old->nf_bridge); |
diff --git a/net/core/wireless.c b/net/core/wireless.c index d17f1583ea3..271ddb35b0b 100644 --- a/net/core/wireless.c +++ b/net/core/wireless.c | |||
@@ -455,10 +455,15 @@ static inline struct iw_statistics *get_wireless_stats(struct net_device *dev) | |||
455 | 455 | ||
456 | /* Old location, field to be removed in next WE */ | 456 | /* Old location, field to be removed in next WE */ |
457 | if(dev->get_wireless_stats) { | 457 | if(dev->get_wireless_stats) { |
458 | printk(KERN_DEBUG "%s (WE) : Driver using old /proc/net/wireless support, please fix driver !\n", | 458 | static int printed_message; |
459 | dev->name); | 459 | |
460 | if (!printed_message++) | ||
461 | printk(KERN_DEBUG "%s (WE) : Driver using old /proc/net/wireless support, please fix driver !\n", | ||
462 | dev->name); | ||
463 | |||
460 | return dev->get_wireless_stats(dev); | 464 | return dev->get_wireless_stats(dev); |
461 | } | 465 | } |
466 | |||
462 | /* Not found */ | 467 | /* Not found */ |
463 | return (struct iw_statistics *) NULL; | 468 | return (struct iw_statistics *) NULL; |
464 | } | 469 | } |
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 3f1a263e124..1ad5202e556 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
@@ -391,6 +391,9 @@ static void ip_copy_metadata(struct sk_buff *to, struct sk_buff *from) | |||
391 | to->nfct = from->nfct; | 391 | to->nfct = from->nfct; |
392 | nf_conntrack_get(to->nfct); | 392 | nf_conntrack_get(to->nfct); |
393 | to->nfctinfo = from->nfctinfo; | 393 | to->nfctinfo = from->nfctinfo; |
394 | #if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE) | ||
395 | to->ipvs_property = from->ipvs_property; | ||
396 | #endif | ||
394 | #ifdef CONFIG_BRIDGE_NETFILTER | 397 | #ifdef CONFIG_BRIDGE_NETFILTER |
395 | nf_bridge_put(to->nf_bridge); | 398 | nf_bridge_put(to->nf_bridge); |
396 | to->nf_bridge = from->nf_bridge; | 399 | to->nf_bridge = from->nf_bridge; |
diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c index f841bde30c1..bbbe80cdaf7 100644 --- a/net/ipv6/ip6_flowlabel.c +++ b/net/ipv6/ip6_flowlabel.c | |||
@@ -483,7 +483,7 @@ int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen) | |||
483 | goto done; | 483 | goto done; |
484 | } | 484 | } |
485 | fl1 = sfl->fl; | 485 | fl1 = sfl->fl; |
486 | atomic_inc(&fl->users); | 486 | atomic_inc(&fl1->users); |
487 | break; | 487 | break; |
488 | } | 488 | } |
489 | } | 489 | } |
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index 30ec3efc48a..691dea4a58e 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c | |||
@@ -587,7 +587,7 @@ svc_udp_recvfrom(struct svc_rqst *rqstp) | |||
587 | struct timeval tv; | 587 | struct timeval tv; |
588 | 588 | ||
589 | tv.tv_sec = xtime.tv_sec; | 589 | tv.tv_sec = xtime.tv_sec; |
590 | tv.tv_usec = xtime.tv_nsec * 1000; | 590 | tv.tv_usec = xtime.tv_nsec / NSEC_PER_USEC; |
591 | skb_set_timestamp(skb, &tv); | 591 | skb_set_timestamp(skb, &tv); |
592 | /* Don't enable netstamp, sunrpc doesn't | 592 | /* Don't enable netstamp, sunrpc doesn't |
593 | need that much accuracy */ | 593 | need that much accuracy */ |
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c index 8eb140dd2e4..a45cc971e73 100644 --- a/security/selinux/selinuxfs.c +++ b/security/selinux/selinuxfs.c | |||
@@ -879,7 +879,7 @@ static ssize_t sel_commit_bools_write(struct file *filep, | |||
879 | if (sscanf(page, "%d", &new_value) != 1) | 879 | if (sscanf(page, "%d", &new_value) != 1) |
880 | goto out; | 880 | goto out; |
881 | 881 | ||
882 | if (new_value) { | 882 | if (new_value && bool_pending_values) { |
883 | security_set_bools(bool_num, bool_pending_values); | 883 | security_set_bools(bool_num, bool_pending_values); |
884 | } | 884 | } |
885 | 885 | ||
@@ -952,6 +952,7 @@ static int sel_make_bools(void) | |||
952 | 952 | ||
953 | /* remove any existing files */ | 953 | /* remove any existing files */ |
954 | kfree(bool_pending_values); | 954 | kfree(bool_pending_values); |
955 | bool_pending_values = NULL; | ||
955 | 956 | ||
956 | sel_remove_bools(dir); | 957 | sel_remove_bools(dir); |
957 | 958 | ||
@@ -1002,6 +1003,7 @@ out: | |||
1002 | } | 1003 | } |
1003 | return ret; | 1004 | return ret; |
1004 | err: | 1005 | err: |
1006 | kfree(values); | ||
1005 | d_genocide(dir); | 1007 | d_genocide(dir); |
1006 | ret = -ENOMEM; | 1008 | ret = -ENOMEM; |
1007 | goto out; | 1009 | goto out; |
diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c index 0a758323a9c..8e6262d12aa 100644 --- a/security/selinux/ss/policydb.c +++ b/security/selinux/ss/policydb.c | |||
@@ -650,8 +650,10 @@ void policydb_destroy(struct policydb *p) | |||
650 | } | 650 | } |
651 | if (lrt) kfree(lrt); | 651 | if (lrt) kfree(lrt); |
652 | 652 | ||
653 | for (i = 0; i < p->p_types.nprim; i++) | 653 | if (p->type_attr_map) { |
654 | ebitmap_destroy(&p->type_attr_map[i]); | 654 | for (i = 0; i < p->p_types.nprim; i++) |
655 | ebitmap_destroy(&p->type_attr_map[i]); | ||
656 | } | ||
655 | kfree(p->type_attr_map); | 657 | kfree(p->type_attr_map); |
656 | 658 | ||
657 | return; | 659 | return; |
diff --git a/sound/core/init.c b/sound/core/init.c index a5702014a70..c72a79115cc 100644 --- a/sound/core/init.c +++ b/sound/core/init.c | |||
@@ -828,7 +828,8 @@ static int snd_generic_suspend(struct device *dev, pm_message_t state, u32 level | |||
828 | card = get_snd_generic_card(dev); | 828 | card = get_snd_generic_card(dev); |
829 | if (card->power_state == SNDRV_CTL_POWER_D3hot) | 829 | if (card->power_state == SNDRV_CTL_POWER_D3hot) |
830 | return 0; | 830 | return 0; |
831 | card->pm_suspend(card, PMSG_SUSPEND); | 831 | if (card->pm_suspend) |
832 | card->pm_suspend(card, PMSG_SUSPEND); | ||
832 | snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); | 833 | snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); |
833 | return 0; | 834 | return 0; |
834 | } | 835 | } |
@@ -843,7 +844,8 @@ static int snd_generic_resume(struct device *dev, u32 level) | |||
843 | card = get_snd_generic_card(dev); | 844 | card = get_snd_generic_card(dev); |
844 | if (card->power_state == SNDRV_CTL_POWER_D0) | 845 | if (card->power_state == SNDRV_CTL_POWER_D0) |
845 | return 0; | 846 | return 0; |
846 | card->pm_resume(card); | 847 | if (card->pm_suspend) |
848 | card->pm_resume(card); | ||
847 | snd_power_change_state(card, SNDRV_CTL_POWER_D0); | 849 | snd_power_change_state(card, SNDRV_CTL_POWER_D0); |
848 | return 0; | 850 | return 0; |
849 | } | 851 | } |