aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@pobox.com>2005-10-26 01:06:45 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-10-26 01:06:45 -0400
commit1f57389a38dc1e8be167ec601f39f78f0bed3a96 (patch)
tree5f33d00a046597ae33855cee13d17d77048ba712
parent077783f87708b24054452e5c07685ead2c28b1eb (diff)
parent6693e74a16ef563960764bd963f1048392135c3c (diff)
Merge branch 'master'
-rw-r--r--Documentation/kernel-parameters.txt496
-rw-r--r--arch/arm/mach-integrator/impd1.c15
-rw-r--r--arch/arm/mach-pxa/generic.c20
-rw-r--r--arch/arm/mach-s3c2410/mach-bast.c6
-rw-r--r--arch/i386/kernel/cpu/cpufreq/powernow-k8.c30
-rw-r--r--arch/ppc64/kernel/iSeries_htab.c2
-rw-r--r--arch/ppc64/kernel/time.c2
-rw-r--r--arch/ppc64/mm/init.c3
-rw-r--r--arch/um/include/sysdep-i386/thread.h2
-rw-r--r--arch/um/include/sysdep-x86_64/thread.h2
-rw-r--r--drivers/char/drm/drm_vm.c3
-rw-r--r--drivers/char/drm/mga_drv.h2
-rw-r--r--drivers/char/drm/mga_state.c2
-rw-r--r--drivers/infiniband/hw/mthca/mthca_eq.c21
-rw-r--r--drivers/media/video/Kconfig1
-rw-r--r--drivers/message/fusion/mptsas.c12
-rw-r--r--drivers/pci/quirks.c101
-rw-r--r--drivers/pci/setup-bus.c2
-rw-r--r--drivers/scsi/NCR5380.c2
-rw-r--r--drivers/scsi/aacraid/aacraid.h2
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c3
-rw-r--r--drivers/scsi/scsi_devinfo.c1
-rw-r--r--drivers/scsi/scsi_lib.c7
-rw-r--r--drivers/scsi/scsi_transport_fc.c13
-rw-r--r--drivers/video/fbsysfs.c8
-rw-r--r--fs/aio.c6
-rw-r--r--fs/inotify.c1
-rw-r--r--include/asm-alpha/atomic.h14
-rw-r--r--include/asm-alpha/barrier.h34
-rw-r--r--include/asm-alpha/system.h31
-rw-r--r--include/asm-arm/arch-s3c2410/regs-clock.h21
-rw-r--r--include/linux/hugetlb.h16
-rw-r--r--include/linux/idr.h1
-rw-r--r--include/net/ax25.h2
-rw-r--r--include/net/llc_pdu.h4
-rw-r--r--kernel/exit.c9
-rw-r--r--kernel/posix-cpu-timers.c119
-rw-r--r--kernel/posix-timers.c2
-rw-r--r--kernel/signal.c14
-rw-r--r--lib/idr.c13
-rw-r--r--mm/hugetlb.c22
-rw-r--r--mm/memory.c14
-rw-r--r--net/802/tr.c5
-rw-r--r--net/core/neighbour.c48
-rw-r--r--net/core/skbuff.c6
-rw-r--r--net/dccp/ipv4.c2
-rw-r--r--net/dccp/output.c10
-rw-r--r--net/dccp/proto.c2
-rw-r--r--net/ipv4/ip_output.c3
-rw-r--r--net/ipv4/tcp_output.c12
-rw-r--r--net/ipv6/ip6_flowlabel.c2
-rw-r--r--security/selinux/selinuxfs.c4
-rw-r--r--security/selinux/ss/policydb.c6
-rw-r--r--sound/core/init.c6
54 files changed, 686 insertions, 501 deletions
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 7086f0a90d14..971589a9752d 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
20The text in square brackets at the beginning of the description state the 20The text in square brackets at the beginning of the description states the
21restrictions on the kernel for the said kernel parameter to be valid. The 21restrictions on the kernel for the said kernel parameter to be valid. The
22restrictions referred to are that the relevant option is valid if: 22restrictions 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______________________________________________________________________
1545Changelog: 1566Changelog:
1546 1567
15682000-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
15712002-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> 15782005-10-19 Randy Dunlap <rdunlap@xenotime.net>
1579 Lots of typos, whitespace, some reformatting.
1556 1580
1557TODO: 1581TODO:
1558 1582
diff --git a/arch/arm/mach-integrator/impd1.c b/arch/arm/mach-integrator/impd1.c
index c3c2f17d030e..a1b153d1626c 100644
--- a/arch/arm/mach-integrator/impd1.c
+++ b/arch/arm/mach-integrator/impd1.c
@@ -67,7 +67,7 @@ static void impd1_setvco(struct clk *clk, struct icst525_vco vco)
67 } 67 }
68 writel(0, impd1->base + IMPD1_LOCK); 68 writel(0, impd1->base + IMPD1_LOCK);
69 69
70#if DEBUG 70#ifdef DEBUG
71 vco.v = val & 0x1ff; 71 vco.v = val & 0x1ff;
72 vco.r = (val >> 9) & 0x7f; 72 vco.r = (val >> 9) & 0x7f;
73 vco.s = (val >> 16) & 7; 73 vco.s = (val >> 16) & 7;
@@ -427,17 +427,18 @@ static int impd1_probe(struct lm_device *dev)
427 return ret; 427 return ret;
428} 428}
429 429
430static int impd1_remove_one(struct device *dev, void *data)
431{
432 device_unregister(dev);
433 return 0;
434}
435
430static void impd1_remove(struct lm_device *dev) 436static void impd1_remove(struct lm_device *dev)
431{ 437{
432 struct impd1_module *impd1 = lm_get_drvdata(dev); 438 struct impd1_module *impd1 = lm_get_drvdata(dev);
433 struct list_head *l, *n;
434 int i; 439 int i;
435 440
436 list_for_each_safe(l, n, &dev->dev.children) { 441 device_for_each_child(&dev->dev, NULL, impd1_remove_one);
437 struct device *d = list_to_dev(l);
438
439 device_unregister(d);
440 }
441 442
442 for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) 443 for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++)
443 clk_unregister(&impd1->vcos[i]); 444 clk_unregister(&impd1->vcos[i]);
diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c
index d327c127eddb..1d7677669a76 100644
--- a/arch/arm/mach-pxa/generic.c
+++ b/arch/arm/mach-pxa/generic.c
@@ -250,6 +250,25 @@ void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info)
250 i2c_device.dev.platform_data = info; 250 i2c_device.dev.platform_data = info;
251} 251}
252 252
253static struct resource i2s_resources[] = {
254 {
255 .start = 0x40400000,
256 .end = 0x40400083,
257 .flags = IORESOURCE_MEM,
258 }, {
259 .start = IRQ_I2S,
260 .end = IRQ_I2S,
261 .flags = IORESOURCE_IRQ,
262 },
263};
264
265static struct platform_device i2s_device = {
266 .name = "pxa2xx-i2s",
267 .id = -1,
268 .resource = i2c_resources,
269 .num_resources = ARRAY_SIZE(i2s_resources),
270};
271
253static struct platform_device *devices[] __initdata = { 272static struct platform_device *devices[] __initdata = {
254 &pxamci_device, 273 &pxamci_device,
255 &udc_device, 274 &udc_device,
@@ -258,6 +277,7 @@ static struct platform_device *devices[] __initdata = {
258 &btuart_device, 277 &btuart_device,
259 &stuart_device, 278 &stuart_device,
260 &i2c_device, 279 &i2c_device,
280 &i2s_device,
261}; 281};
262 282
263static int __init pxa_init(void) 283static int __init pxa_init(void)
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c
index 8ca955984645..7b51bfd0ba6d 100644
--- a/arch/arm/mach-s3c2410/mach-bast.c
+++ b/arch/arm/mach-s3c2410/mach-bast.c
@@ -307,9 +307,9 @@ static void bast_nand_select(struct s3c2410_nand_set *set, int slot)
307} 307}
308 308
309static struct s3c2410_platform_nand bast_nand_info = { 309static struct s3c2410_platform_nand bast_nand_info = {
310 .tacls = 40, 310 .tacls = 30,
311 .twrph0 = 80, 311 .twrph0 = 60,
312 .twrph1 = 80, 312 .twrph1 = 60,
313 .nr_sets = ARRAY_SIZE(bast_nand_sets), 313 .nr_sets = ARRAY_SIZE(bast_nand_sets),
314 .sets = bast_nand_sets, 314 .sets = bast_nand_sets,
315 .select_chip = bast_nand_select, 315 .select_chip = bast_nand_select,
diff --git a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
index ab6e0611303d..58ca98fdc2ca 100644
--- a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
+++ b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c
@@ -44,7 +44,7 @@
44 44
45#define PFX "powernow-k8: " 45#define PFX "powernow-k8: "
46#define BFX PFX "BIOS error: " 46#define BFX PFX "BIOS error: "
47#define VERSION "version 1.50.3" 47#define VERSION "version 1.50.4"
48#include "powernow-k8.h" 48#include "powernow-k8.h"
49 49
50/* serialize freq changes */ 50/* serialize freq changes */
@@ -111,8 +111,8 @@ static int query_current_values_with_pending_wait(struct powernow_k8_data *data)
111 u32 i = 0; 111 u32 i = 0;
112 112
113 do { 113 do {
114 if (i++ > 0x1000000) { 114 if (i++ > 10000) {
115 printk(KERN_ERR PFX "detected change pending stuck\n"); 115 dprintk("detected change pending stuck\n");
116 return 1; 116 return 1;
117 } 117 }
118 rdmsr(MSR_FIDVID_STATUS, lo, hi); 118 rdmsr(MSR_FIDVID_STATUS, lo, hi);
@@ -159,6 +159,7 @@ static int write_new_fid(struct powernow_k8_data *data, u32 fid)
159{ 159{
160 u32 lo; 160 u32 lo;
161 u32 savevid = data->currvid; 161 u32 savevid = data->currvid;
162 u32 i = 0;
162 163
163 if ((fid & INVALID_FID_MASK) || (data->currvid & INVALID_VID_MASK)) { 164 if ((fid & INVALID_FID_MASK) || (data->currvid & INVALID_VID_MASK)) {
164 printk(KERN_ERR PFX "internal error - overflow on fid write\n"); 165 printk(KERN_ERR PFX "internal error - overflow on fid write\n");
@@ -170,10 +171,13 @@ static int write_new_fid(struct powernow_k8_data *data, u32 fid)
170 dprintk("writing fid 0x%x, lo 0x%x, hi 0x%x\n", 171 dprintk("writing fid 0x%x, lo 0x%x, hi 0x%x\n",
171 fid, lo, data->plllock * PLL_LOCK_CONVERSION); 172 fid, lo, data->plllock * PLL_LOCK_CONVERSION);
172 173
173 wrmsr(MSR_FIDVID_CTL, lo, data->plllock * PLL_LOCK_CONVERSION); 174 do {
174 175 wrmsr(MSR_FIDVID_CTL, lo, data->plllock * PLL_LOCK_CONVERSION);
175 if (query_current_values_with_pending_wait(data)) 176 if (i++ > 100) {
176 return 1; 177 printk(KERN_ERR PFX "internal error - pending bit very stuck - no further pstate changes possible\n");
178 return 1;
179 }
180 } while (query_current_values_with_pending_wait(data));
177 181
178 count_off_irt(data); 182 count_off_irt(data);
179 183
@@ -197,6 +201,7 @@ static int write_new_vid(struct powernow_k8_data *data, u32 vid)
197{ 201{
198 u32 lo; 202 u32 lo;
199 u32 savefid = data->currfid; 203 u32 savefid = data->currfid;
204 int i = 0;
200 205
201 if ((data->currfid & INVALID_FID_MASK) || (vid & INVALID_VID_MASK)) { 206 if ((data->currfid & INVALID_FID_MASK) || (vid & INVALID_VID_MASK)) {
202 printk(KERN_ERR PFX "internal error - overflow on vid write\n"); 207 printk(KERN_ERR PFX "internal error - overflow on vid write\n");
@@ -208,10 +213,13 @@ static int write_new_vid(struct powernow_k8_data *data, u32 vid)
208 dprintk("writing vid 0x%x, lo 0x%x, hi 0x%x\n", 213 dprintk("writing vid 0x%x, lo 0x%x, hi 0x%x\n",
209 vid, lo, STOP_GRANT_5NS); 214 vid, lo, STOP_GRANT_5NS);
210 215
211 wrmsr(MSR_FIDVID_CTL, lo, STOP_GRANT_5NS); 216 do {
212 217 wrmsr(MSR_FIDVID_CTL, lo, STOP_GRANT_5NS);
213 if (query_current_values_with_pending_wait(data)) 218 if (i++ > 100) {
214 return 1; 219 printk(KERN_ERR PFX "internal error - pending bit very stuck - no further pstate changes possible\n");
220 return 1;
221 }
222 } while (query_current_values_with_pending_wait(data));
215 223
216 if (savefid != data->currfid) { 224 if (savefid != data->currfid) {
217 printk(KERN_ERR PFX "fid changed on vid trans, old 0x%x new 0x%x\n", 225 printk(KERN_ERR PFX "fid changed on vid trans, old 0x%x new 0x%x\n",
diff --git a/arch/ppc64/kernel/iSeries_htab.c b/arch/ppc64/kernel/iSeries_htab.c
index 2192055a90a0..073b76661747 100644
--- a/arch/ppc64/kernel/iSeries_htab.c
+++ b/arch/ppc64/kernel/iSeries_htab.c
@@ -66,7 +66,7 @@ static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va,
66 } 66 }
67 67
68 if (slot < 0) { /* MSB set means secondary group */ 68 if (slot < 0) { /* MSB set means secondary group */
69 vflags |= HPTE_V_VALID; 69 vflags |= HPTE_V_SECONDARY;
70 secondary = 1; 70 secondary = 1;
71 slot &= 0x7fffffffffffffff; 71 slot &= 0x7fffffffffffffff;
72 } 72 }
diff --git a/arch/ppc64/kernel/time.c b/arch/ppc64/kernel/time.c
index 9939c206afa4..b56c6a324e17 100644
--- a/arch/ppc64/kernel/time.c
+++ b/arch/ppc64/kernel/time.c
@@ -870,7 +870,7 @@ void div128_by_32( unsigned long dividend_high, unsigned long dividend_low,
870 rb = ((ra + b) - (x * divisor)) << 32; 870 rb = ((ra + b) - (x * divisor)) << 32;
871 871
872 y = (rb + c)/divisor; 872 y = (rb + c)/divisor;
873 rc = ((rb + b) - (y * divisor)) << 32; 873 rc = ((rb + c) - (y * divisor)) << 32;
874 874
875 z = (rc + d)/divisor; 875 z = (rc + d)/divisor;
876 876
diff --git a/arch/ppc64/mm/init.c b/arch/ppc64/mm/init.c
index c2157c9c3acb..be64b157afce 100644
--- a/arch/ppc64/mm/init.c
+++ b/arch/ppc64/mm/init.c
@@ -799,8 +799,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long ea,
799 if (cpus_equal(vma->vm_mm->cpu_vm_mask, tmp)) 799 if (cpus_equal(vma->vm_mm->cpu_vm_mask, tmp))
800 local = 1; 800 local = 1;
801 801
802 __hash_page(ea, pte_val(pte) & (_PAGE_USER|_PAGE_RW), vsid, ptep, 802 __hash_page(ea, 0, vsid, ptep, 0x300, local);
803 0x300, local);
804 local_irq_restore(flags); 803 local_irq_restore(flags);
805} 804}
806 805
diff --git a/arch/um/include/sysdep-i386/thread.h b/arch/um/include/sysdep-i386/thread.h
index e2bd6bae8b8a..243fed44d780 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 6a76a7f3683f..cbef3e1697f4 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/drm_vm.c b/drivers/char/drm/drm_vm.c
index ced4215e2275..39ea96e42c5b 100644
--- a/drivers/char/drm/drm_vm.c
+++ b/drivers/char/drm/drm_vm.c
@@ -148,7 +148,8 @@ static __inline__ struct page *drm_do_vm_shm_nopage(struct vm_area_struct *vma,
148 148
149 offset = address - vma->vm_start; 149 offset = address - vma->vm_start;
150 i = (unsigned long)map->handle + offset; 150 i = (unsigned long)map->handle + offset;
151 page = vmalloc_to_page((void *)i); 151 page = (map->type == _DRM_CONSISTENT) ?
152 virt_to_page((void *)i) : vmalloc_to_page((void *)i);
152 if (!page) 153 if (!page)
153 return NOPAGE_OOM; 154 return NOPAGE_OOM;
154 get_page(page); 155 get_page(page);
diff --git a/drivers/char/drm/mga_drv.h b/drivers/char/drm/mga_drv.h
index b22fdbd4f830..6059c5a5b105 100644
--- a/drivers/char/drm/mga_drv.h
+++ b/drivers/char/drm/mga_drv.h
@@ -227,7 +227,7 @@ static inline u32 _MGA_READ(u32 *addr)
227#define MGA_EMIT_STATE( dev_priv, dirty ) \ 227#define MGA_EMIT_STATE( dev_priv, dirty ) \
228do { \ 228do { \
229 if ( (dirty) & ~MGA_UPLOAD_CLIPRECTS ) { \ 229 if ( (dirty) & ~MGA_UPLOAD_CLIPRECTS ) { \
230 if ( dev_priv->chipset == MGA_CARD_TYPE_G400 ) { \ 230 if ( dev_priv->chipset >= MGA_CARD_TYPE_G400 ) { \
231 mga_g400_emit_state( dev_priv ); \ 231 mga_g400_emit_state( dev_priv ); \
232 } else { \ 232 } else { \
233 mga_g200_emit_state( dev_priv ); \ 233 mga_g200_emit_state( dev_priv ); \
diff --git a/drivers/char/drm/mga_state.c b/drivers/char/drm/mga_state.c
index 05bbb4719376..6ac5e006226f 100644
--- a/drivers/char/drm/mga_state.c
+++ b/drivers/char/drm/mga_state.c
@@ -53,7 +53,7 @@ static void mga_emit_clip_rect( drm_mga_private_t *dev_priv,
53 53
54 /* Force reset of DWGCTL on G400 (eliminates clip disable bit). 54 /* Force reset of DWGCTL on G400 (eliminates clip disable bit).
55 */ 55 */
56 if (dev_priv->chipset == MGA_CARD_TYPE_G400) { 56 if (dev_priv->chipset >= MGA_CARD_TYPE_G400) {
57 DMA_BLOCK(MGA_DWGCTL, ctx->dwgctl, 57 DMA_BLOCK(MGA_DWGCTL, ctx->dwgctl,
58 MGA_LEN + MGA_EXEC, 0x80000000, 58 MGA_LEN + MGA_EXEC, 0x80000000,
59 MGA_DWGCTL, ctx->dwgctl, 59 MGA_DWGCTL, ctx->dwgctl,
diff --git a/drivers/infiniband/hw/mthca/mthca_eq.c b/drivers/infiniband/hw/mthca/mthca_eq.c
index c81fa8e975ef..8dfafda5ed24 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
415static irqreturn_t mthca_tavor_msi_x_interrupt(int irq, void *eq_ptr, 416static irqreturn_t mthca_tavor_msi_x_interrupt(int irq, void *eq_ptr,
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig
index 93570355819a..bbb989df4cf0 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/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
index 429820e48c69..7de19a84dc74 100644
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -257,8 +257,8 @@ static void mptsas_print_device_pg0(SasDevicePage0_t *pg0)
257 printk("SAS Address=0x%llX\n", le64_to_cpu(sas_address)); 257 printk("SAS Address=0x%llX\n", le64_to_cpu(sas_address));
258 printk("Target ID=0x%X\n", pg0->TargetID); 258 printk("Target ID=0x%X\n", pg0->TargetID);
259 printk("Bus=0x%X\n", pg0->Bus); 259 printk("Bus=0x%X\n", pg0->Bus);
260 printk("PhyNum=0x%X\n", pg0->PhyNum); 260 printk("Parent Phy Num=0x%X\n", pg0->PhyNum);
261 printk("AccessStatus=0x%X\n", le16_to_cpu(pg0->AccessStatus)); 261 printk("Access Status=0x%X\n", le16_to_cpu(pg0->AccessStatus));
262 printk("Device Info=0x%X\n", le32_to_cpu(pg0->DeviceInfo)); 262 printk("Device Info=0x%X\n", le32_to_cpu(pg0->DeviceInfo));
263 printk("Flags=0x%X\n", le16_to_cpu(pg0->Flags)); 263 printk("Flags=0x%X\n", le16_to_cpu(pg0->Flags));
264 printk("Physical Port=0x%X\n", pg0->PhysicalPort); 264 printk("Physical Port=0x%X\n", pg0->PhysicalPort);
@@ -270,7 +270,7 @@ static void mptsas_print_expander_pg1(SasExpanderPage1_t *pg1)
270 printk("---- SAS EXPANDER PAGE 1 ------------\n"); 270 printk("---- SAS EXPANDER PAGE 1 ------------\n");
271 271
272 printk("Physical Port=0x%X\n", pg1->PhysicalPort); 272 printk("Physical Port=0x%X\n", pg1->PhysicalPort);
273 printk("PHY Identifier=0x%X\n", pg1->Phy); 273 printk("PHY Identifier=0x%X\n", pg1->PhyIdentifier);
274 printk("Negotiated Link Rate=0x%X\n", pg1->NegotiatedLinkRate); 274 printk("Negotiated Link Rate=0x%X\n", pg1->NegotiatedLinkRate);
275 printk("Programmed Link Rate=0x%X\n", pg1->ProgrammedLinkRate); 275 printk("Programmed Link Rate=0x%X\n", pg1->ProgrammedLinkRate);
276 printk("Hardware Link Rate=0x%X\n", pg1->HwLinkRate); 276 printk("Hardware Link Rate=0x%X\n", pg1->HwLinkRate);
@@ -604,7 +604,7 @@ mptsas_sas_expander_pg1(MPT_ADAPTER *ioc, struct mptsas_phyinfo *phy_info,
604 mptsas_print_expander_pg1(buffer); 604 mptsas_print_expander_pg1(buffer);
605 605
606 /* save config data */ 606 /* save config data */
607 phy_info->phy_id = buffer->Phy; 607 phy_info->phy_id = buffer->PhyIdentifier;
608 phy_info->port_id = buffer->PhysicalPort; 608 phy_info->port_id = buffer->PhysicalPort;
609 phy_info->negotiated_link_rate = buffer->NegotiatedLinkRate; 609 phy_info->negotiated_link_rate = buffer->NegotiatedLinkRate;
610 phy_info->programmed_link_rate = buffer->ProgrammedLinkRate; 610 phy_info->programmed_link_rate = buffer->ProgrammedLinkRate;
@@ -825,6 +825,8 @@ mptsas_probe_hba_phys(MPT_ADAPTER *ioc, int *index)
825 mptsas_sas_device_pg0(ioc, &port_info->phy_info[i].identify, 825 mptsas_sas_device_pg0(ioc, &port_info->phy_info[i].identify,
826 (MPI_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE << 826 (MPI_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE <<
827 MPI_SAS_DEVICE_PGAD_FORM_SHIFT), handle); 827 MPI_SAS_DEVICE_PGAD_FORM_SHIFT), handle);
828 port_info->phy_info[i].identify.phy_id =
829 port_info->phy_info[i].phy_id;
828 handle = port_info->phy_info[i].identify.handle; 830 handle = port_info->phy_info[i].identify.handle;
829 831
830 if (port_info->phy_info[i].attached.handle) { 832 if (port_info->phy_info[i].attached.handle) {
@@ -881,6 +883,8 @@ mptsas_probe_expander_phys(MPT_ADAPTER *ioc, u32 *handle, int *index)
881 (MPI_SAS_DEVICE_PGAD_FORM_HANDLE << 883 (MPI_SAS_DEVICE_PGAD_FORM_HANDLE <<
882 MPI_SAS_DEVICE_PGAD_FORM_SHIFT), 884 MPI_SAS_DEVICE_PGAD_FORM_SHIFT),
883 port_info->phy_info[i].identify.handle); 885 port_info->phy_info[i].identify.handle);
886 port_info->phy_info[i].identify.phy_id =
887 port_info->phy_info[i].phy_id;
884 } 888 }
885 889
886 if (port_info->phy_info[i].attached.handle) { 890 if (port_info->phy_info[i].attached.handle) {
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index a6a630a950d0..7992bc8cc6a4 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)
241DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M ); 241DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M );
242DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M ); 242DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M );
243 243
244static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, unsigned size, int nr) 244static 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, &region); 295 pci_read_config_word(dev, 0xE0, &region);
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, &region); 297 pci_read_config_word(dev, 0xE2, &region);
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}
298DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, quirk_ali7101_acpi ); 300DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, quirk_ali7101_acpi );
299 301
302static 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
328static 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 */
305static void __devinit quirk_piix4_acpi(struct pci_dev *dev) 359static 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, &region); 363 pci_read_config_dword(dev, 0x40, &region);
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, &region); 365 pci_read_config_dword(dev, 0x90, &region);
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}
314DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_3, quirk_piix4_acpi ); 389DECLARE_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, &region); 400 pci_read_config_dword(dev, 0x40, &region);
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, &region); 403 pci_read_config_dword(dev, 0x58, &region);
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}
331DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AA_0, quirk_ich4_lpc_acpi ); 406DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AA_0, quirk_ich4_lpc_acpi );
332DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AB_0, quirk_ich4_lpc_acpi ); 407DECLARE_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, &region); 428 pci_read_config_dword(dev, 0x48, &region);
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}
358DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_vt82c586_acpi ); 433DECLARE_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}
381DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_vt82c686_acpi ); 456DECLARE_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}
400DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_vt8235_acpi); 475DECLARE_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 657be948baf7..28ce3a7ee434 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
46static void __devinit 46static void __devinit
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c
index d40ba0bd68a3..23392ae7df8b 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 4a99d2f000f4..d54b1cc88d0d 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 8982978c42fd..7aec93f9d423 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 64fc9e21f35b..e69477d1889b 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 dc9c772bc874..0074f28c37b2 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
99static void scsi_run_queue(struct request_queue *q); 99static void scsi_run_queue(struct request_queue *q);
100static 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 2cab556b6e82..771e97ef136e 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
822static ssize_t 825static ssize_t
823store_fc_private_host_tgtid_bind_type(struct class_device *cdev, 826store_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/video/fbsysfs.c b/drivers/video/fbsysfs.c
index 1147b899f007..007c8e9b2b39 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
245static 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
437int fb_init_class_device(struct fb_info *fb_info) 445int fb_init_class_device(struct fb_info *fb_info)
diff --git a/fs/aio.c b/fs/aio.c
index 9fe7216457d8..edfca5b75535 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -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/inotify.c b/fs/inotify.c
index a37e9fb1da58..9fbaebfdf40b 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 1b383e3cb68c..20ac3d95ecd9 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)
100static __inline__ long atomic_add_return(int i, atomic_t * v) 102static __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)
120static __inline__ long atomic64_add_return(long i, atomic64_t * v) 123static __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
138static __inline__ long atomic_sub_return(int i, atomic_t * v) 142static __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
156static __inline__ long atomic64_sub_return(long i, atomic64_t * v) 161static __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 000000000000..229c83fe77cb
--- /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) \
29do { var = value; mb(); } while (0)
30
31#define set_wmb(var, value) \
32do { 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 bdb4d66418f1..050e86d12891 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));
139struct task_struct; 140struct task_struct;
140extern struct task_struct *alpha_switch_to(unsigned long, struct task_struct*); 141extern 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) \
167do { var = value; mb(); } while (0)
168
169#define set_wmb(var, value) \
170do { 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/arch-s3c2410/regs-clock.h b/include/asm-arm/arch-s3c2410/regs-clock.h
index 16f4c3cc1388..34360706e016 100644
--- a/include/asm-arm/arch-s3c2410/regs-clock.h
+++ b/include/asm-arm/arch-s3c2410/regs-clock.h
@@ -18,7 +18,9 @@
18 * 10-Feb-2005 Ben Dooks Fixed CAMDIVN address (Guillaume Gourat) 18 * 10-Feb-2005 Ben Dooks Fixed CAMDIVN address (Guillaume Gourat)
19 * 10-Mar-2005 Lucas Villa Real Changed S3C2410_VA to S3C24XX_VA 19 * 10-Mar-2005 Lucas Villa Real Changed S3C2410_VA to S3C24XX_VA
20 * 27-Aug-2005 Ben Dooks Add clock-slow info 20 * 27-Aug-2005 Ben Dooks Add clock-slow info
21 */ 21 * 20-Oct-2005 Ben Dooks Fixed overflow in PLL (Guillaume Gourat)
22 * 20-Oct-2005 Ben Dooks Add masks for DCLK (Guillaume Gourat)
23*/
22 24
23#ifndef __ASM_ARM_REGS_CLOCK 25#ifndef __ASM_ARM_REGS_CLOCK
24#define __ASM_ARM_REGS_CLOCK "$Id: clock.h,v 1.4 2003/04/30 14:50:51 ben Exp $" 26#define __ASM_ARM_REGS_CLOCK "$Id: clock.h,v 1.4 2003/04/30 14:50:51 ben Exp $"
@@ -66,11 +68,16 @@
66#define S3C2410_DCLKCON_DCLK0_UCLK (1<<1) 68#define S3C2410_DCLKCON_DCLK0_UCLK (1<<1)
67#define S3C2410_DCLKCON_DCLK0_DIV(x) (((x) - 1 )<<4) 69#define S3C2410_DCLKCON_DCLK0_DIV(x) (((x) - 1 )<<4)
68#define S3C2410_DCLKCON_DCLK0_CMP(x) (((x) - 1 )<<8) 70#define S3C2410_DCLKCON_DCLK0_CMP(x) (((x) - 1 )<<8)
71#define S3C2410_DCLKCON_DCLK0_DIV_MASK ((0xf)<<4)
72#define S3C2410_DCLKCON_DCLK0_CMP_MASK ((0xf)<<8)
69 73
70#define S3C2410_DCLKCON_DCLK1EN (1<<16) 74#define S3C2410_DCLKCON_DCLK1EN (1<<16)
71#define S3C2410_DCLKCON_DCLK1_PCLK (0<<17) 75#define S3C2410_DCLKCON_DCLK1_PCLK (0<<17)
72#define S3C2410_DCLKCON_DCLK1_UCLK (1<<17) 76#define S3C2410_DCLKCON_DCLK1_UCLK (1<<17)
73#define S3C2410_DCLKCON_DCLK1_DIV(x) (((x) - 1) <<20) 77#define S3C2410_DCLKCON_DCLK1_DIV(x) (((x) - 1) <<20)
78#define S3C2410_DCLKCON_DCLK1_CMP(x) (((x) - 1) <<24)
79#define S3C2410_DCLKCON_DCLK1_DIV_MASK ((0xf) <<20)
80#define S3C2410_DCLKCON_DCLK1_CMP_MASK ((0xf) <<24)
74 81
75#define S3C2410_CLKDIVN_PDIVN (1<<0) 82#define S3C2410_CLKDIVN_PDIVN (1<<0)
76#define S3C2410_CLKDIVN_HDIVN (1<<1) 83#define S3C2410_CLKDIVN_HDIVN (1<<1)
@@ -83,10 +90,13 @@
83 90
84#ifndef __ASSEMBLY__ 91#ifndef __ASSEMBLY__
85 92
93#include <asm/div64.h>
94
86static inline unsigned int 95static inline unsigned int
87s3c2410_get_pll(int pllval, int baseclk) 96s3c2410_get_pll(unsigned int pllval, unsigned int baseclk)
88{ 97{
89 int mdiv, pdiv, sdiv; 98 unsigned int mdiv, pdiv, sdiv;
99 uint64_t fvco;
90 100
91 mdiv = pllval >> S3C2410_PLLCON_MDIVSHIFT; 101 mdiv = pllval >> S3C2410_PLLCON_MDIVSHIFT;
92 pdiv = pllval >> S3C2410_PLLCON_PDIVSHIFT; 102 pdiv = pllval >> S3C2410_PLLCON_PDIVSHIFT;
@@ -96,7 +106,10 @@ s3c2410_get_pll(int pllval, int baseclk)
96 pdiv &= S3C2410_PLLCON_PDIVMASK; 106 pdiv &= S3C2410_PLLCON_PDIVMASK;
97 sdiv &= S3C2410_PLLCON_SDIVMASK; 107 sdiv &= S3C2410_PLLCON_SDIVMASK;
98 108
99 return (baseclk * (mdiv + 8)) / ((pdiv + 2) << sdiv); 109 fvco = (uint64_t)baseclk * (mdiv + 8);
110 do_div(fvco, (pdiv + 2) << sdiv);
111
112 return (unsigned int)fvco;
100} 113}
101 114
102#endif /* __ASSEMBLY__ */ 115#endif /* __ASSEMBLY__ */
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index 42cb7d70f9ac..d664330d900e 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -25,6 +25,8 @@ int is_hugepage_mem_enough(size_t);
25unsigned long hugetlb_total_pages(void); 25unsigned long hugetlb_total_pages(void);
26struct page *alloc_huge_page(void); 26struct page *alloc_huge_page(void);
27void free_huge_page(struct page *); 27void free_huge_page(struct page *);
28int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
29 unsigned long address, int write_access);
28 30
29extern unsigned long max_huge_pages; 31extern unsigned long max_huge_pages;
30extern const unsigned long hugetlb_zero, hugetlb_infinity; 32extern const unsigned long hugetlb_zero, hugetlb_infinity;
@@ -99,6 +101,7 @@ static inline unsigned long hugetlb_total_pages(void)
99 do { } while (0) 101 do { } while (0)
100#define alloc_huge_page() ({ NULL; }) 102#define alloc_huge_page() ({ NULL; })
101#define free_huge_page(p) ({ (void)(p); BUG(); }) 103#define free_huge_page(p) ({ (void)(p); BUG(); })
104#define hugetlb_fault(mm, vma, addr, write) ({ BUG(); 0; })
102 105
103#ifndef HPAGE_MASK 106#ifndef HPAGE_MASK
104#define HPAGE_MASK 0 /* Keep the compiler happy */ 107#define HPAGE_MASK 0 /* Keep the compiler happy */
@@ -155,24 +158,11 @@ static inline void set_file_hugepages(struct file *file)
155{ 158{
156 file->f_op = &hugetlbfs_file_operations; 159 file->f_op = &hugetlbfs_file_operations;
157} 160}
158
159static inline int valid_hugetlb_file_off(struct vm_area_struct *vma,
160 unsigned long address)
161{
162 struct inode *inode = vma->vm_file->f_dentry->d_inode;
163 loff_t file_off = address - vma->vm_start;
164
165 file_off += (vma->vm_pgoff << PAGE_SHIFT);
166
167 return (file_off < inode->i_size);
168}
169
170#else /* !CONFIG_HUGETLBFS */ 161#else /* !CONFIG_HUGETLBFS */
171 162
172#define is_file_hugepages(file) 0 163#define is_file_hugepages(file) 0
173#define set_file_hugepages(file) BUG() 164#define set_file_hugepages(file) BUG()
174#define hugetlb_zero_setup(size) ERR_PTR(-ENOSYS) 165#define hugetlb_zero_setup(size) ERR_PTR(-ENOSYS)
175#define valid_hugetlb_file_off(vma, address) 0
176 166
177#endif /* !CONFIG_HUGETLBFS */ 167#endif /* !CONFIG_HUGETLBFS */
178 168
diff --git a/include/linux/idr.h b/include/linux/idr.h
index ca3b7e462576..3d5de45f961b 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);
75int idr_get_new(struct idr *idp, void *ptr, int *id); 75int idr_get_new(struct idr *idp, void *ptr, int *id);
76int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id); 76int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id);
77void idr_remove(struct idr *idp, int id); 77void idr_remove(struct idr *idp, int id);
78void idr_destroy(struct idr *idp);
78void idr_init(struct idr *idp); 79void idr_init(struct idr *idp);
diff --git a/include/net/ax25.h b/include/net/ax25.h
index 9dbcd9e51c00..30bb4a893237 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
177typedef struct ax25_route { 177typedef struct ax25_route {
diff --git a/include/net/llc_pdu.h b/include/net/llc_pdu.h
index f45c37d89cf7..c7a959428b4f 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 43077732619b..4897977a1f4b 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,
@@ -843,6 +835,7 @@ fastcall NORET_TYPE void do_exit(long code)
843 group_dead = atomic_dec_and_test(&tsk->signal->live); 835 group_dead = atomic_dec_and_test(&tsk->signal->live);
844 if (group_dead) { 836 if (group_dead) {
845 del_timer_sync(&tsk->signal->real_timer); 837 del_timer_sync(&tsk->signal->real_timer);
838 exit_itimers(tsk->signal);
846 acct_process(code); 839 acct_process(code);
847 } 840 }
848 exit_mm(tsk); 841 exit_mm(tsk);
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
index b3f3edc475de..b15462b17a58 100644
--- a/kernel/posix-cpu-timers.c
+++ b/kernel/posix-cpu-timers.c
@@ -380,28 +380,31 @@ int posix_cpu_timer_create(struct k_itimer *new_timer)
380int posix_cpu_timer_del(struct k_itimer *timer) 380int 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 read_lock(&tasklist_lock);
386 387 if (unlikely(p->signal == NULL)) {
387 if (unlikely(p == NULL)) 388 /*
388 return 0; 389 * We raced with the reaping of the task.
390 * The deletion should have cleared us off the list.
391 */
392 BUG_ON(!list_empty(&timer->it.cpu.entry));
393 } else {
394 spin_lock(&p->sighand->siglock);
395 if (timer->it.cpu.firing)
396 ret = TIMER_RETRY;
397 else
398 list_del(&timer->it.cpu.entry);
399 spin_unlock(&p->sighand->siglock);
400 }
401 read_unlock(&tasklist_lock);
389 402
390 spin_lock(&p->sighand->siglock); 403 if (!ret)
391 if (!list_empty(&timer->it.cpu.entry)) { 404 put_task_struct(p);
392 /*
393 * Take us off the task's timer list. We don't need to
394 * take tasklist_lock and check for the task being reaped.
395 * If it was reaped, it already called posix_cpu_timers_exit
396 * and posix_cpu_timers_exit_group to clear all the timers
397 * that pointed to it.
398 */
399 list_del(&timer->it.cpu.entry);
400 put_task_struct(p);
401 } 405 }
402 spin_unlock(&p->sighand->siglock);
403 406
404 return 0; 407 return ret;
405} 408}
406 409
407/* 410/*
@@ -418,8 +421,6 @@ static void cleanup_timers(struct list_head *head,
418 cputime_t ptime = cputime_add(utime, stime); 421 cputime_t ptime = cputime_add(utime, stime);
419 422
420 list_for_each_entry_safe(timer, next, head, entry) { 423 list_for_each_entry_safe(timer, next, head, entry) {
421 put_task_struct(timer->task);
422 timer->task = NULL;
423 list_del_init(&timer->entry); 424 list_del_init(&timer->entry);
424 if (cputime_lt(timer->expires.cpu, ptime)) { 425 if (cputime_lt(timer->expires.cpu, ptime)) {
425 timer->expires.cpu = cputime_zero; 426 timer->expires.cpu = cputime_zero;
@@ -431,8 +432,6 @@ static void cleanup_timers(struct list_head *head,
431 432
432 ++head; 433 ++head;
433 list_for_each_entry_safe(timer, next, head, entry) { 434 list_for_each_entry_safe(timer, next, head, entry) {
434 put_task_struct(timer->task);
435 timer->task = NULL;
436 list_del_init(&timer->entry); 435 list_del_init(&timer->entry);
437 if (cputime_lt(timer->expires.cpu, utime)) { 436 if (cputime_lt(timer->expires.cpu, utime)) {
438 timer->expires.cpu = cputime_zero; 437 timer->expires.cpu = cputime_zero;
@@ -444,8 +443,6 @@ static void cleanup_timers(struct list_head *head,
444 443
445 ++head; 444 ++head;
446 list_for_each_entry_safe(timer, next, head, entry) { 445 list_for_each_entry_safe(timer, next, head, entry) {
447 put_task_struct(timer->task);
448 timer->task = NULL;
449 list_del_init(&timer->entry); 446 list_del_init(&timer->entry);
450 if (timer->expires.sched < sched_time) { 447 if (timer->expires.sched < sched_time) {
451 timer->expires.sched = 0; 448 timer->expires.sched = 0;
@@ -489,6 +486,9 @@ static void process_timer_rebalance(struct task_struct *p,
489 struct task_struct *t = p; 486 struct task_struct *t = p;
490 unsigned int nthreads = atomic_read(&p->signal->live); 487 unsigned int nthreads = atomic_read(&p->signal->live);
491 488
489 if (!nthreads)
490 return;
491
492 switch (clock_idx) { 492 switch (clock_idx) {
493 default: 493 default:
494 BUG(); 494 BUG();
@@ -730,9 +730,15 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
730 * Disarm any old timer after extracting its expiry time. 730 * Disarm any old timer after extracting its expiry time.
731 */ 731 */
732 BUG_ON(!irqs_disabled()); 732 BUG_ON(!irqs_disabled());
733
734 ret = 0;
733 spin_lock(&p->sighand->siglock); 735 spin_lock(&p->sighand->siglock);
734 old_expires = timer->it.cpu.expires; 736 old_expires = timer->it.cpu.expires;
735 list_del_init(&timer->it.cpu.entry); 737 if (unlikely(timer->it.cpu.firing)) {
738 timer->it.cpu.firing = -1;
739 ret = TIMER_RETRY;
740 } else
741 list_del_init(&timer->it.cpu.entry);
736 spin_unlock(&p->sighand->siglock); 742 spin_unlock(&p->sighand->siglock);
737 743
738 /* 744 /*
@@ -780,7 +786,7 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
780 } 786 }
781 } 787 }
782 788
783 if (unlikely(timer->it.cpu.firing)) { 789 if (unlikely(ret)) {
784 /* 790 /*
785 * We are colliding with the timer actually firing. 791 * We are colliding with the timer actually firing.
786 * Punt after filling in the timer's old value, and 792 * Punt after filling in the timer's old value, and
@@ -788,8 +794,6 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags,
788 * it as an overrun (thanks to bump_cpu_timer above). 794 * it as an overrun (thanks to bump_cpu_timer above).
789 */ 795 */
790 read_unlock(&tasklist_lock); 796 read_unlock(&tasklist_lock);
791 timer->it.cpu.firing = -1;
792 ret = TIMER_RETRY;
793 goto out; 797 goto out;
794 } 798 }
795 799
@@ -955,14 +959,16 @@ void posix_cpu_timer_get(struct k_itimer *timer, struct itimerspec *itp)
955static void check_thread_timers(struct task_struct *tsk, 959static void check_thread_timers(struct task_struct *tsk,
956 struct list_head *firing) 960 struct list_head *firing)
957{ 961{
962 int maxfire;
958 struct list_head *timers = tsk->cpu_timers; 963 struct list_head *timers = tsk->cpu_timers;
959 964
965 maxfire = 20;
960 tsk->it_prof_expires = cputime_zero; 966 tsk->it_prof_expires = cputime_zero;
961 while (!list_empty(timers)) { 967 while (!list_empty(timers)) {
962 struct cpu_timer_list *t = list_entry(timers->next, 968 struct cpu_timer_list *t = list_entry(timers->next,
963 struct cpu_timer_list, 969 struct cpu_timer_list,
964 entry); 970 entry);
965 if (cputime_lt(prof_ticks(tsk), t->expires.cpu)) { 971 if (!--maxfire || cputime_lt(prof_ticks(tsk), t->expires.cpu)) {
966 tsk->it_prof_expires = t->expires.cpu; 972 tsk->it_prof_expires = t->expires.cpu;
967 break; 973 break;
968 } 974 }
@@ -971,12 +977,13 @@ static void check_thread_timers(struct task_struct *tsk,
971 } 977 }
972 978
973 ++timers; 979 ++timers;
980 maxfire = 20;
974 tsk->it_virt_expires = cputime_zero; 981 tsk->it_virt_expires = cputime_zero;
975 while (!list_empty(timers)) { 982 while (!list_empty(timers)) {
976 struct cpu_timer_list *t = list_entry(timers->next, 983 struct cpu_timer_list *t = list_entry(timers->next,
977 struct cpu_timer_list, 984 struct cpu_timer_list,
978 entry); 985 entry);
979 if (cputime_lt(virt_ticks(tsk), t->expires.cpu)) { 986 if (!--maxfire || cputime_lt(virt_ticks(tsk), t->expires.cpu)) {
980 tsk->it_virt_expires = t->expires.cpu; 987 tsk->it_virt_expires = t->expires.cpu;
981 break; 988 break;
982 } 989 }
@@ -985,12 +992,13 @@ static void check_thread_timers(struct task_struct *tsk,
985 } 992 }
986 993
987 ++timers; 994 ++timers;
995 maxfire = 20;
988 tsk->it_sched_expires = 0; 996 tsk->it_sched_expires = 0;
989 while (!list_empty(timers)) { 997 while (!list_empty(timers)) {
990 struct cpu_timer_list *t = list_entry(timers->next, 998 struct cpu_timer_list *t = list_entry(timers->next,
991 struct cpu_timer_list, 999 struct cpu_timer_list,
992 entry); 1000 entry);
993 if (tsk->sched_time < t->expires.sched) { 1001 if (!--maxfire || tsk->sched_time < t->expires.sched) {
994 tsk->it_sched_expires = t->expires.sched; 1002 tsk->it_sched_expires = t->expires.sched;
995 break; 1003 break;
996 } 1004 }
@@ -1007,6 +1015,7 @@ static void check_thread_timers(struct task_struct *tsk,
1007static void check_process_timers(struct task_struct *tsk, 1015static void check_process_timers(struct task_struct *tsk,
1008 struct list_head *firing) 1016 struct list_head *firing)
1009{ 1017{
1018 int maxfire;
1010 struct signal_struct *const sig = tsk->signal; 1019 struct signal_struct *const sig = tsk->signal;
1011 cputime_t utime, stime, ptime, virt_expires, prof_expires; 1020 cputime_t utime, stime, ptime, virt_expires, prof_expires;
1012 unsigned long long sched_time, sched_expires; 1021 unsigned long long sched_time, sched_expires;
@@ -1039,12 +1048,13 @@ static void check_process_timers(struct task_struct *tsk,
1039 } while (t != tsk); 1048 } while (t != tsk);
1040 ptime = cputime_add(utime, stime); 1049 ptime = cputime_add(utime, stime);
1041 1050
1051 maxfire = 20;
1042 prof_expires = cputime_zero; 1052 prof_expires = cputime_zero;
1043 while (!list_empty(timers)) { 1053 while (!list_empty(timers)) {
1044 struct cpu_timer_list *t = list_entry(timers->next, 1054 struct cpu_timer_list *t = list_entry(timers->next,
1045 struct cpu_timer_list, 1055 struct cpu_timer_list,
1046 entry); 1056 entry);
1047 if (cputime_lt(ptime, t->expires.cpu)) { 1057 if (!--maxfire || cputime_lt(ptime, t->expires.cpu)) {
1048 prof_expires = t->expires.cpu; 1058 prof_expires = t->expires.cpu;
1049 break; 1059 break;
1050 } 1060 }
@@ -1053,12 +1063,13 @@ static void check_process_timers(struct task_struct *tsk,
1053 } 1063 }
1054 1064
1055 ++timers; 1065 ++timers;
1066 maxfire = 20;
1056 virt_expires = cputime_zero; 1067 virt_expires = cputime_zero;
1057 while (!list_empty(timers)) { 1068 while (!list_empty(timers)) {
1058 struct cpu_timer_list *t = list_entry(timers->next, 1069 struct cpu_timer_list *t = list_entry(timers->next,
1059 struct cpu_timer_list, 1070 struct cpu_timer_list,
1060 entry); 1071 entry);
1061 if (cputime_lt(utime, t->expires.cpu)) { 1072 if (!--maxfire || cputime_lt(utime, t->expires.cpu)) {
1062 virt_expires = t->expires.cpu; 1073 virt_expires = t->expires.cpu;
1063 break; 1074 break;
1064 } 1075 }
@@ -1067,12 +1078,13 @@ static void check_process_timers(struct task_struct *tsk,
1067 } 1078 }
1068 1079
1069 ++timers; 1080 ++timers;
1081 maxfire = 20;
1070 sched_expires = 0; 1082 sched_expires = 0;
1071 while (!list_empty(timers)) { 1083 while (!list_empty(timers)) {
1072 struct cpu_timer_list *t = list_entry(timers->next, 1084 struct cpu_timer_list *t = list_entry(timers->next,
1073 struct cpu_timer_list, 1085 struct cpu_timer_list,
1074 entry); 1086 entry);
1075 if (sched_time < t->expires.sched) { 1087 if (!--maxfire || sched_time < t->expires.sched) {
1076 sched_expires = t->expires.sched; 1088 sched_expires = t->expires.sched;
1077 break; 1089 break;
1078 } 1090 }
@@ -1155,6 +1167,9 @@ static void check_process_timers(struct task_struct *tsk,
1155 unsigned long long sched_left, sched; 1167 unsigned long long sched_left, sched;
1156 const unsigned int nthreads = atomic_read(&sig->live); 1168 const unsigned int nthreads = atomic_read(&sig->live);
1157 1169
1170 if (!nthreads)
1171 return;
1172
1158 prof_left = cputime_sub(prof_expires, utime); 1173 prof_left = cputime_sub(prof_expires, utime);
1159 prof_left = cputime_sub(prof_left, stime); 1174 prof_left = cputime_sub(prof_left, stime);
1160 prof_left = cputime_div(prof_left, nthreads); 1175 prof_left = cputime_div(prof_left, nthreads);
@@ -1280,30 +1295,30 @@ void run_posix_cpu_timers(struct task_struct *tsk)
1280 1295
1281#undef UNEXPIRED 1296#undef UNEXPIRED
1282 1297
1283 BUG_ON(tsk->exit_state);
1284
1285 /* 1298 /*
1286 * Double-check with locks held. 1299 * Double-check with locks held.
1287 */ 1300 */
1288 read_lock(&tasklist_lock); 1301 read_lock(&tasklist_lock);
1289 spin_lock(&tsk->sighand->siglock); 1302 if (likely(tsk->signal != NULL)) {
1303 spin_lock(&tsk->sighand->siglock);
1290 1304
1291 /* 1305 /*
1292 * Here we take off tsk->cpu_timers[N] and tsk->signal->cpu_timers[N] 1306 * Here we take off tsk->cpu_timers[N] and tsk->signal->cpu_timers[N]
1293 * all the timers that are firing, and put them on the firing list. 1307 * all the timers that are firing, and put them on the firing list.
1294 */ 1308 */
1295 check_thread_timers(tsk, &firing); 1309 check_thread_timers(tsk, &firing);
1296 check_process_timers(tsk, &firing); 1310 check_process_timers(tsk, &firing);
1297 1311
1298 /* 1312 /*
1299 * We must release these locks before taking any timer's lock. 1313 * We must release these locks before taking any timer's lock.
1300 * There is a potential race with timer deletion here, as the 1314 * There is a potential race with timer deletion here, as the
1301 * siglock now protects our private firing list. We have set 1315 * siglock now protects our private firing list. We have set
1302 * the firing flag in each timer, so that a deletion attempt 1316 * the firing flag in each timer, so that a deletion attempt
1303 * that gets the timer lock before we do will give it up and 1317 * that gets the timer lock before we do will give it up and
1304 * spin until we've taken care of that timer below. 1318 * spin until we've taken care of that timer below.
1305 */ 1319 */
1306 spin_unlock(&tsk->sighand->siglock); 1320 spin_unlock(&tsk->sighand->siglock);
1321 }
1307 read_unlock(&tasklist_lock); 1322 read_unlock(&tasklist_lock);
1308 1323
1309 /* 1324 /*
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c
index b7b532acd9fc..dda3cda73c77 100644
--- a/kernel/posix-timers.c
+++ b/kernel/posix-timers.c
@@ -1157,7 +1157,7 @@ retry_delete:
1157} 1157}
1158 1158
1159/* 1159/*
1160 * This is called by __exit_signal, only when there are no more 1160 * This is called by do_exit or de_thread, only when there are no more
1161 * references to the shared signal_struct. 1161 * references to the shared signal_struct.
1162 */ 1162 */
1163void exit_itimers(struct signal_struct *sig) 1163void exit_itimers(struct signal_struct *sig)
diff --git a/kernel/signal.c b/kernel/signal.c
index 50c992643771..f2b96b08fb44 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -397,20 +397,8 @@ void __exit_signal(struct task_struct *tsk)
397 flush_sigqueue(&tsk->pending); 397 flush_sigqueue(&tsk->pending);
398 if (sig) { 398 if (sig) {
399 /* 399 /*
400 * We are cleaning up the signal_struct here. We delayed 400 * We are cleaning up the signal_struct here.
401 * calling exit_itimers until after flush_sigqueue, just in
402 * case our thread-local pending queue contained a queued
403 * timer signal that would have been cleared in
404 * exit_itimers. When that called sigqueue_free, it would
405 * attempt to re-take the tasklist_lock and deadlock. This
406 * can never happen if we ensure that all queues the
407 * timer's signal might be queued on have been flushed
408 * first. The shared_pending queue, and our own pending
409 * queue are the only queues the timer could be on, since
410 * there are no other threads left in the group and timer
411 * signals are constrained to threads inside the group.
412 */ 401 */
413 exit_itimers(sig);
414 exit_thread_group_keys(sig); 402 exit_thread_group_keys(sig);
415 kmem_cache_free(signal_cachep, sig); 403 kmem_cache_free(signal_cachep, sig);
416 } 404 }
diff --git a/lib/idr.c b/lib/idr.c
index 6415d053e2bf..d4df21debc4d 100644
--- a/lib/idr.c
+++ b/lib/idr.c
@@ -346,6 +346,19 @@ void idr_remove(struct idr *idp, int id)
346EXPORT_SYMBOL(idr_remove); 346EXPORT_SYMBOL(idr_remove);
347 347
348/** 348/**
349 * idr_destroy - release all cached layers within an idr tree
350 * idp: idr handle
351 */
352void 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}
359EXPORT_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/hugetlb.c b/mm/hugetlb.c
index a1b30d45459e..61d380678030 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -394,6 +394,28 @@ out:
394 return ret; 394 return ret;
395} 395}
396 396
397/*
398 * On ia64 at least, it is possible to receive a hugetlb fault from a
399 * stale zero entry left in the TLB from earlier hardware prefetching.
400 * Low-level arch code should already have flushed the stale entry as
401 * part of its fault handling, but we do need to accept this minor fault
402 * and return successfully. Whereas the "normal" case is that this is
403 * an access to a hugetlb page which has been truncated off since mmap.
404 */
405int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
406 unsigned long address, int write_access)
407{
408 int ret = VM_FAULT_SIGBUS;
409 pte_t *pte;
410
411 spin_lock(&mm->page_table_lock);
412 pte = huge_pte_offset(mm, address);
413 if (pte && !pte_none(*pte))
414 ret = VM_FAULT_MINOR;
415 spin_unlock(&mm->page_table_lock);
416 return ret;
417}
418
397int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, 419int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,
398 struct page **pages, struct vm_area_struct **vmas, 420 struct page **pages, struct vm_area_struct **vmas,
399 unsigned long *position, int *length, int i) 421 unsigned long *position, int *length, int i)
diff --git a/mm/memory.c b/mm/memory.c
index 8c88b973abc5..1db40e935e55 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2045,18 +2045,8 @@ int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct * vma,
2045 2045
2046 inc_page_state(pgfault); 2046 inc_page_state(pgfault);
2047 2047
2048 if (unlikely(is_vm_hugetlb_page(vma))) { 2048 if (unlikely(is_vm_hugetlb_page(vma)))
2049 if (valid_hugetlb_file_off(vma, address)) 2049 return hugetlb_fault(mm, vma, address, write_access);
2050 /* We get here only if there was a stale(zero) TLB entry
2051 * (because of HW prefetching).
2052 * Low-level arch code (if needed) should have already
2053 * purged the stale entry as part of this fault handling.
2054 * Here we just return.
2055 */
2056 return VM_FAULT_MINOR;
2057 else
2058 return VM_FAULT_SIGBUS; /* mapping truncation does this. */
2059 }
2060 2050
2061 /* 2051 /*
2062 * We need the page table lock to synchronize with kswapd 2052 * We need the page table lock to synchronize with kswapd
diff --git a/net/802/tr.c b/net/802/tr.c
index 1eaa3d19d8bf..afd8385c0c9c 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 4128fc76ac3a..1dcf7fa1f0fe 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
178void neigh_changeaddr(struct neigh_table *tbl, struct net_device *dev) 178static 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
205int 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
219void 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
226int 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 af9b1516e21f..02cd4cde2112 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/dccp/ipv4.c b/net/dccp/ipv4.c
index ae088d1347af..6298cf58ff9e 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -463,6 +463,7 @@ static int dccp_v4_send_response(struct sock *sk, struct request_sock *req,
463 if (skb != NULL) { 463 if (skb != NULL) {
464 const struct inet_request_sock *ireq = inet_rsk(req); 464 const struct inet_request_sock *ireq = inet_rsk(req);
465 465
466 memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
466 err = ip_build_and_send_pkt(skb, sk, ireq->loc_addr, 467 err = ip_build_and_send_pkt(skb, sk, ireq->loc_addr,
467 ireq->rmt_addr, 468 ireq->rmt_addr,
468 ireq->opt); 469 ireq->opt);
@@ -647,6 +648,7 @@ int dccp_v4_send_reset(struct sock *sk, enum dccp_reset_codes code)
647 if (skb != NULL) { 648 if (skb != NULL) {
648 const struct inet_sock *inet = inet_sk(sk); 649 const struct inet_sock *inet = inet_sk(sk);
649 650
651 memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
650 err = ip_build_and_send_pkt(skb, sk, 652 err = ip_build_and_send_pkt(skb, sk,
651 inet->saddr, inet->daddr, NULL); 653 inet->saddr, inet->daddr, NULL);
652 if (err == NET_XMIT_CN) 654 if (err == NET_XMIT_CN)
diff --git a/net/dccp/output.c b/net/dccp/output.c
index 4786bdcddcc9..29250749f16f 100644
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -62,10 +62,8 @@ int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
62 62
63 skb->h.raw = skb_push(skb, dccp_header_size); 63 skb->h.raw = skb_push(skb, dccp_header_size);
64 dh = dccp_hdr(skb); 64 dh = dccp_hdr(skb);
65 /* 65
66 * Data packets are not cloned as they are never retransmitted 66 if (!skb->sk)
67 */
68 if (skb_cloned(skb))
69 skb_set_owner_w(skb, sk); 67 skb_set_owner_w(skb, sk);
70 68
71 /* Build DCCP header and checksum it. */ 69 /* Build DCCP header and checksum it. */
@@ -102,6 +100,7 @@ int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb)
102 100
103 DCCP_INC_STATS(DCCP_MIB_OUTSEGS); 101 DCCP_INC_STATS(DCCP_MIB_OUTSEGS);
104 102
103 memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt));
105 err = ip_queue_xmit(skb, 0); 104 err = ip_queue_xmit(skb, 0);
106 if (err <= 0) 105 if (err <= 0)
107 return err; 106 return err;
@@ -243,7 +242,8 @@ int dccp_write_xmit(struct sock *sk, struct sk_buff *skb, long *timeo)
243 242
244 err = dccp_transmit_skb(sk, skb); 243 err = dccp_transmit_skb(sk, skb);
245 ccid_hc_tx_packet_sent(dp->dccps_hc_tx_ccid, sk, 0, len); 244 ccid_hc_tx_packet_sent(dp->dccps_hc_tx_ccid, sk, 0, len);
246 } 245 } else
246 kfree_skb(skb);
247 247
248 return err; 248 return err;
249} 249}
diff --git a/net/dccp/proto.c b/net/dccp/proto.c
index a1cfd0e9e3bc..a021c3422f67 100644
--- a/net/dccp/proto.c
+++ b/net/dccp/proto.c
@@ -402,8 +402,6 @@ int dccp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg,
402 * This bug was _quickly_ found & fixed by just looking at an OSTRA 402 * This bug was _quickly_ found & fixed by just looking at an OSTRA
403 * generated callgraph 8) -acme 403 * generated callgraph 8) -acme
404 */ 404 */
405 if (rc != 0)
406 goto out_discard;
407out_release: 405out_release:
408 release_sock(sk); 406 release_sock(sk);
409 return rc ? : len; 407 return rc ? : len;
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index 3f1a263e1249..1ad5202e556b 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/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 7114031fdc70..b907456a79f4 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -435,17 +435,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss
435 int nsize, old_factor; 435 int nsize, old_factor;
436 u16 flags; 436 u16 flags;
437 437
438 if (unlikely(len >= skb->len)) { 438 BUG_ON(len > skb->len);
439 if (net_ratelimit()) {
440 printk(KERN_DEBUG "TCP: seg_size=%u, mss=%u, seq=%u, "
441 "end_seq=%u, skb->len=%u.\n", len, mss_now,
442 TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq,
443 skb->len);
444 WARN_ON(1);
445 }
446 return 0;
447 }
448
449 nsize = skb_headlen(skb) - len; 439 nsize = skb_headlen(skb) - len;
450 if (nsize < 0) 440 if (nsize < 0)
451 nsize = 0; 441 nsize = 0;
diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
index f841bde30c18..bbbe80cdaf72 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/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
index 8eb140dd2e4b..a45cc971e735 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;
1004err: 1005err:
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 0a758323a9cf..8e6262d12aa9 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 a5702014a704..c72a79115cca 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}