aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/feature-removal-schedule.txt25
-rw-r--r--Documentation/i386/boot.txt385
-rw-r--r--Documentation/networking/netdevices.txt2
-rw-r--r--Documentation/vm/slabinfo.c9
-rw-r--r--Makefile4
-rw-r--r--arch/i386/Makefile2
-rw-r--r--arch/powerpc/Makefile3
-rw-r--r--arch/powerpc/boot/Makefile15
-rw-r--r--arch/powerpc/boot/dts/ebony.dts37
-rw-r--r--arch/powerpc/boot/dts/kuroboxHD.dts44
-rw-r--r--arch/powerpc/boot/dts/kuroboxHG.dts45
-rw-r--r--arch/powerpc/boot/dts/lite5200.dts69
-rw-r--r--arch/powerpc/boot/dts/lite5200b.dts77
-rw-r--r--arch/powerpc/boot/dts/mpc7448hpc2.dts72
-rw-r--r--arch/powerpc/boot/dts/mpc8540ads.dts16
-rw-r--r--arch/powerpc/boot/dts/mpc8541cds.dts16
-rw-r--r--arch/powerpc/boot/dts/mpc8544ds.dts16
-rw-r--r--arch/powerpc/boot/dts/mpc8548cds.dts16
-rw-r--r--arch/powerpc/boot/dts/mpc8555cds.dts16
-rw-r--r--arch/powerpc/boot/dts/mpc8560ads.dts18
-rw-r--r--arch/powerpc/boot/dts/mpc8568mds.dts16
-rw-r--r--arch/powerpc/boot/flatdevtree.c17
-rw-r--r--arch/powerpc/configs/cell_defconfig15
-rw-r--r--arch/powerpc/configs/iseries_defconfig209
-rw-r--r--arch/powerpc/configs/pasemi_defconfig383
-rw-r--r--arch/powerpc/kernel/cputable.c2
-rw-r--r--arch/powerpc/kernel/entry_32.S18
-rw-r--r--arch/powerpc/kernel/of_platform.c10
-rw-r--r--arch/powerpc/kernel/pci_64.c23
-rw-r--r--arch/powerpc/kernel/prom.c5
-rw-r--r--arch/powerpc/kernel/rtas-proc.c2
-rw-r--r--arch/powerpc/lib/rheap.c22
-rw-r--r--arch/powerpc/mm/hash_low_32.S18
-rw-r--r--arch/powerpc/mm/hash_utils_64.c4
-rw-r--r--arch/powerpc/mm/pgtable_64.c4
-rw-r--r--arch/powerpc/platforms/44x/Kconfig3
-rw-r--r--arch/powerpc/platforms/44x/ebony.c6
-rw-r--r--arch/powerpc/platforms/iseries/viopath.c21
-rw-r--r--arch/powerpc/platforms/pasemi/Kconfig1
-rw-r--r--arch/powerpc/platforms/pseries/pseries.h4
-rw-r--r--arch/powerpc/sysdev/mpic.c12
-rw-r--r--arch/ppc/syslib/pq2_sys.c36
-rw-r--r--arch/sparc64/kernel/time.c2
-rw-r--r--drivers/ata/libata-core.c6
-rw-r--r--drivers/ata/libata-scsi.c9
-rw-r--r--drivers/ata/libata.h1
-rw-r--r--drivers/ata/sata_nv.c18
-rw-r--r--drivers/ata/sata_via.c2
-rw-r--r--drivers/block/cciss.c45
-rw-r--r--drivers/char/watchdog/booke_wdt.c2
-rw-r--r--drivers/macintosh/windfarm_core.c10
-rw-r--r--drivers/net/e1000/e1000.h4
-rw-r--r--drivers/net/e1000/e1000_main.c39
-rw-r--r--drivers/net/gianfar.c11
-rw-r--r--drivers/net/ibm_emac/ibm_emac_core.c2
-rw-r--r--drivers/net/ibm_emac/ibm_emac_mal.c3
-rw-r--r--drivers/net/ibm_emac/ibm_emac_mal.h3
-rw-r--r--drivers/net/ibm_emac/ibm_emac_phy.c60
-rw-r--r--drivers/net/ibm_emac/ibm_emac_rgmii.c2
-rw-r--r--drivers/net/ibm_emac/ibm_emac_rgmii.h2
-rw-r--r--drivers/net/ibm_emac/ibm_emac_tah.c2
-rw-r--r--drivers/net/ibm_emac/ibm_emac_tah.h2
-rw-r--r--drivers/net/ibm_emac/ibm_emac_zmii.c2
-rw-r--r--drivers/net/ibm_emac/ibm_emac_zmii.h2
-rw-r--r--drivers/net/ixgb/ixgb.h2
-rw-r--r--drivers/net/ixgb/ixgb_main.c36
-rw-r--r--drivers/net/netxen/netxen_nic_init.c2
-rw-r--r--drivers/net/sky2.c69
-rw-r--r--drivers/net/spider_net.c3
-rw-r--r--fs/eventfd.c26
-rw-r--r--fs/lockd/clntlock.c2
-rw-r--r--fs/lockd/host.c2
-rw-r--r--fs/lockd/xdr.c4
-rw-r--r--fs/lockd/xdr4.c6
-rw-r--r--fs/nfs/callback.h4
-rw-r--r--fs/nfs/delegation.c2
-rw-r--r--fs/nfs/dir.c4
-rw-r--r--fs/nfs/nfs4proc.c4
-rw-r--r--fs/nfs/nfs4state.c2
-rw-r--r--fs/nfs/nfs4xdr.c96
-rw-r--r--fs/nfs/read.c10
-rw-r--r--fs/nfs/write.c6
-rw-r--r--fs/timerfd.c24
-rw-r--r--include/asm-powerpc/cputable.h6
-rw-r--r--include/asm-powerpc/mmu-44x.h2
-rw-r--r--include/asm-powerpc/mpc8260.h6
-rw-r--r--include/asm-powerpc/pgtable-ppc32.h15
-rw-r--r--include/asm-powerpc/pmac_feature.h6
-rw-r--r--include/asm-powerpc/systbl.h3
-rw-r--r--include/asm-powerpc/tsi108_irq.h6
-rw-r--r--include/asm-powerpc/tsi108_pci.h6
-rw-r--r--include/asm-powerpc/unistd.h11
-rw-r--r--include/linux/lockd/xdr4.h1
-rw-r--r--include/linux/log2.h2
-rw-r--r--include/linux/mii.h4
-rw-r--r--include/linux/nfs4.h3
-rw-r--r--include/linux/sunrpc/rpc_pipe_fs.h2
-rw-r--r--include/linux/sunrpc/xprt.h2
-rw-r--r--include/linux/workqueue.h2
-rw-r--r--net/bluetooth/hci_sock.c6
-rw-r--r--net/core/dev.c69
-rw-r--r--net/ipv4/Kconfig7
-rw-r--r--net/ipv4/route.c4
-rw-r--r--net/ipv4/tcp_cong.c40
-rw-r--r--net/sunrpc/sched.c2
-rw-r--r--net/sunrpc/sunrpc_syms.c4
106 files changed, 1476 insertions, 984 deletions
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 498ff31f3aa1..5c8695a3d139 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -328,21 +328,20 @@ Who: Adrian Bunk <bunk@stusta.de>
328 328
329--------------------------- 329---------------------------
330 330
331What: libata.spindown_compat module parameter 331What: libata spindown skipping and warning
332When: Dec 2008 332When: Dec 2008
333Why: halt(8) synchronizes caches for and spins down libata disks 333Why: Some halt(8) implementations synchronize caches for and spin
334 because libata didn't use to spin down disk on system halt 334 down libata disks because libata didn't use to spin down disk on
335 (only synchronized caches). 335 system halt (only synchronized caches).
336 Spin down on system halt is now implemented and can be tested 336 Spin down on system halt is now implemented. sysfs node
337 using sysfs node /sys/class/scsi_disk/h:c:i:l/manage_start_stop. 337 /sys/class/scsi_disk/h:c:i:l/manage_start_stop is present if
338 spin down support is available.
338 Because issuing spin down command to an already spun down disk 339 Because issuing spin down command to an already spun down disk
339 makes some disks spin up just to spin down again, the old 340 makes some disks spin up just to spin down again, libata tracks
340 behavior needs to be maintained till userspace tool is updated 341 device spindown status to skip the extra spindown command and
341 to check the sysfs node and not to spin down disks with the 342 warn about it.
342 node set to one. 343 This is to give userspace tools the time to get updated and will
343 This module parameter is to give userspace tool the time to 344 be removed after userspace is reasonably updated.
344 get updated and should be removed after userspace is
345 reasonably updated.
346Who: Tejun Heo <htejun@gmail.com> 345Who: Tejun Heo <htejun@gmail.com>
347 346
348--------------------------- 347---------------------------
diff --git a/Documentation/i386/boot.txt b/Documentation/i386/boot.txt
index d01b7a2a0f2e..66fa67fec2a7 100644
--- a/Documentation/i386/boot.txt
+++ b/Documentation/i386/boot.txt
@@ -2,7 +2,7 @@
2 ---------------------------- 2 ----------------------------
3 3
4 H. Peter Anvin <hpa@zytor.com> 4 H. Peter Anvin <hpa@zytor.com>
5 Last update 2007-05-07 5 Last update 2007-05-16
6 6
7On the i386 platform, the Linux kernel uses a rather complicated boot 7On the i386 platform, the Linux kernel uses a rather complicated boot
8convention. This has evolved partially due to historical aspects, as 8convention. This has evolved partially due to historical aspects, as
@@ -52,7 +52,8 @@ zImage kernels, typically looks like:
520A0000 +------------------------+ 520A0000 +------------------------+
53 | Reserved for BIOS | Do not use. Reserved for BIOS EBDA. 53 | Reserved for BIOS | Do not use. Reserved for BIOS EBDA.
5409A000 +------------------------+ 5409A000 +------------------------+
55 | Stack/heap/cmdline | For use by the kernel real-mode code. 55 | Command line |
56 | Stack/heap | For use by the kernel real-mode code.
56098000 +------------------------+ 57098000 +------------------------+
57 | Kernel setup | The kernel real-mode code. 58 | Kernel setup | The kernel real-mode code.
58090200 +------------------------+ 59090200 +------------------------+
@@ -73,10 +74,9 @@ zImage kernels, typically looks like:
73When using bzImage, the protected-mode kernel was relocated to 74When using bzImage, the protected-mode kernel was relocated to
740x100000 ("high memory"), and the kernel real-mode block (boot sector, 750x100000 ("high memory"), and the kernel real-mode block (boot sector,
75setup, and stack/heap) was made relocatable to any address between 76setup, and stack/heap) was made relocatable to any address between
760x10000 and end of low memory. Unfortunately, in protocols 2.00 and 770x10000 and end of low memory. Unfortunately, in protocols 2.00 and
772.01 the command line is still required to live in the 0x9XXXX memory 782.01 the 0x90000+ memory range is still used internally by the kernel;
78range, and that memory range is still overwritten by the early kernel. 79the 2.02 protocol resolves that problem.
79The 2.02 protocol resolves that problem.
80 80
81It is desirable to keep the "memory ceiling" -- the highest point in 81It is desirable to keep the "memory ceiling" -- the highest point in
82low memory touched by the boot loader -- as low as possible, since 82low memory touched by the boot loader -- as low as possible, since
@@ -93,6 +93,35 @@ zImage or old bzImage kernels, which need data written into the
930x90000 segment, the boot loader should make sure not to use memory 930x90000 segment, the boot loader should make sure not to use memory
94above the 0x9A000 point; too many BIOSes will break above that point. 94above the 0x9A000 point; too many BIOSes will break above that point.
95 95
96For a modern bzImage kernel with boot protocol version >= 2.02, a
97memory layout like the following is suggested:
98
99 ~ ~
100 | Protected-mode kernel |
101100000 +------------------------+
102 | I/O memory hole |
1030A0000 +------------------------+
104 | Reserved for BIOS | Leave as much as possible unused
105 ~ ~
106 | Command line | (Can also be below the X+10000 mark)
107X+10000 +------------------------+
108 | Stack/heap | For use by the kernel real-mode code.
109X+08000 +------------------------+
110 | Kernel setup | The kernel real-mode code.
111 | Kernel boot sector | The kernel legacy boot sector.
112X +------------------------+
113 | Boot loader | <- Boot sector entry point 0000:7C00
114001000 +------------------------+
115 | Reserved for MBR/BIOS |
116000800 +------------------------+
117 | Typically used by MBR |
118000600 +------------------------+
119 | BIOS use only |
120000000 +------------------------+
121
122... where the address X is as low as the design of the boot loader
123permits.
124
96 125
97**** THE REAL-MODE KERNEL HEADER 126**** THE REAL-MODE KERNEL HEADER
98 127
@@ -160,29 +189,136 @@ e.g. protocol version 2.01 will contain 0x0201 in this field. When
160setting fields in the header, you must make sure only to set fields 189setting fields in the header, you must make sure only to set fields
161supported by the protocol version in use. 190supported by the protocol version in use.
162 191
163The "kernel_version" field, if set to a nonzero value, contains a 192
164pointer to a null-terminated human-readable kernel version number 193**** DETAILS OF HEADER FIELDS
165string, less 0x200. This can be used to display the kernel version to 194
166the user. This value should be less than (0x200*setup_sects). For 195For each field, some are information from the kernel to the bootloader
167example, if this value is set to 0x1c00, the kernel version number 196("read"), some are expected to be filled out by the bootloader
168string can be found at offset 0x1e00 in the kernel file. This is a 197("write"), and some are expected to be read and modified by the
169valid value if and only if the "setup_sects" field contains the value 198bootloader ("modify").
17014 or higher. 199
171 200All general purpose boot loaders should write the fields marked
172Most boot loaders will simply load the kernel at its target address 201(obligatory). Boot loaders who want to load the kernel at a
173directly. Such boot loaders do not need to worry about filling in 202nonstandard address should fill in the fields marked (reloc); other
174most of the fields in the header. The following fields should be 203boot loaders can ignore those fields.
175filled out, however: 204
176 205Field name: setup_secs
177 vid_mode: 206Type: read
178 Please see the section on SPECIAL COMMAND LINE OPTIONS. 207Offset/size: 0x1f1/1
179 208Protocol: ALL
180 type_of_loader: 209
181 If your boot loader has an assigned id (see table below), enter 210 The size of the setup code in 512-byte sectors. If this field is
182 0xTV here, where T is an identifier for the boot loader and V is 211 0, the real value is 4. The real-mode code consists of the boot
183 a version number. Otherwise, enter 0xFF here. 212 sector (always one 512-byte sector) plus the setup code.
184 213
185 Assigned boot loader ids: 214Field name: root_flags
215Type: modify (optional)
216Offset/size: 0x1f2/2
217Protocol: ALL
218
219 If this field is nonzero, the root defaults to readonly. The use of
220 this field is deprecated; use the "ro" or "rw" options on the
221 command line instead.
222
223Field name: syssize
224Type: read
225Offset/size: 0x1f4/4 (protocol 2.04+) 0x1f4/2 (protocol ALL)
226Protocol: 2.04+
227
228 The size of the protected-mode code in units of 16-byte paragraphs.
229 For protocol versions older than 2.04 this field is only two bytes
230 wide, and therefore cannot be trusted for the size of a kernel if
231 the LOAD_HIGH flag is set.
232
233Field name: ram_size
234Type: kernel internal
235Offset/size: 0x1f8/2
236Protocol: ALL
237
238 This field is obsolete.
239
240Field name: vid_mode
241Type: modify (obligatory)
242Offset/size: 0x1fa/2
243
244 Please see the section on SPECIAL COMMAND LINE OPTIONS.
245
246Field name: root_dev
247Type: modify (optional)
248Offset/size: 0x1fc/2
249Protocol: ALL
250
251 The default root device device number. The use of this field is
252 deprecated, use the "root=" option on the command line instead.
253
254Field name: boot_flag
255Type: read
256Offset/size: 0x1fe/2
257Protocol: ALL
258
259 Contains 0xAA55. This is the closest thing old Linux kernels have
260 to a magic number.
261
262Field name: jump
263Type: read
264Offset/size: 0x200/2
265Protocol: 2.00+
266
267 Contains an x86 jump instruction, 0xEB followed by a signed offset
268 relative to byte 0x202. This can be used to determine the size of
269 the header.
270
271Field name: header
272Type: read
273Offset/size: 0x202/4
274Protocol: 2.00+
275
276 Contains the magic number "HdrS" (0x53726448).
277
278Field name: version
279Type: read
280Offset/size: 0x206/2
281Protocol: 2.00+
282
283 Contains the boot protocol version, e.g. 0x0204 for version 2.04.
284
285Field name: readmode_swtch
286Type: modify (optional)
287Offset/size: 0x208/4
288Protocol: 2.00+
289
290 Boot loader hook (see separate chapter.)
291
292Field name: start_sys
293Type: read
294Offset/size: 0x20c/4
295Protocol: 2.00+
296
297 The load low segment (0x1000). Obsolete.
298
299Field name: kernel_version
300Type: read
301Offset/size: 0x20e/2
302Protocol: 2.00+
303
304 If set to a nonzero value, contains a pointer to a NUL-terminated
305 human-readable kernel version number string, less 0x200. This can
306 be used to display the kernel version to the user. This value
307 should be less than (0x200*setup_sects). For example, if this value
308 is set to 0x1c00, the kernel version number string can be found at
309 offset 0x1e00 in the kernel file. This is a valid value if and only
310 if the "setup_sects" field contains the value 14 or higher.
311
312Field name: type_of_loader
313Type: write (obligatory)
314Offset/size: 0x210/1
315Protocol: 2.00+
316
317 If your boot loader has an assigned id (see table below), enter
318 0xTV here, where T is an identifier for the boot loader and V is
319 a version number. Otherwise, enter 0xFF here.
320
321 Assigned boot loader ids:
186 0 LILO (0x00 reserved for pre-2.00 bootloader) 322 0 LILO (0x00 reserved for pre-2.00 bootloader)
187 1 Loadlin 323 1 Loadlin
188 2 bootsect-loader (0x20, all other values reserved) 324 2 bootsect-loader (0x20, all other values reserved)
@@ -193,60 +329,145 @@ filled out, however:
193 8 U-BOOT 329 8 U-BOOT
194 9 Xen 330 9 Xen
195 A Gujin 331 A Gujin
332 B Qemu
196 333
197 Please contact <hpa@zytor.com> if you need a bootloader ID 334 Please contact <hpa@zytor.com> if you need a bootloader ID
198 value assigned. 335 value assigned.
199 336
200 loadflags, heap_end_ptr: 337Field name: loadflags
201 If the protocol version is 2.01 or higher, enter the 338Type: modify (obligatory)
202 offset limit of the setup heap into heap_end_ptr and set the 339Offset/size: 0x211/1
203 0x80 bit (CAN_USE_HEAP) of loadflags. heap_end_ptr appears to 340Protocol: 2.00+
204 be relative to the start of setup (offset 0x0200). 341
205 342 This field is a bitmask.
206 setup_move_size: 343
207 When using protocol 2.00 or 2.01, if the real mode 344 Bit 0 (read): LOADED_HIGH
208 kernel is not loaded at 0x90000, it gets moved there later in 345 - If 0, the protected-mode code is loaded at 0x10000.
209 the loading sequence. Fill in this field if you want 346 - If 1, the protected-mode code is loaded at 0x100000.
210 additional data (such as the kernel command line) moved in 347
211 addition to the real-mode kernel itself. 348 Bit 7 (write): CAN_USE_HEAP
212 349 Set this bit to 1 to indicate that the value entered in the
213 The unit is bytes starting with the beginning of the boot 350 heap_end_ptr is valid. If this field is clear, some setup code
214 sector. 351 functionality will be disabled.
215 352
216 ramdisk_image, ramdisk_size: 353Field name: setup_move_size
217 If your boot loader has loaded an initial ramdisk (initrd), 354Type: modify (obligatory)
218 set ramdisk_image to the 32-bit pointer to the ramdisk data 355Offset/size: 0x212/2
219 and the ramdisk_size to the size of the ramdisk data. 356Protocol: 2.00-2.01
220 357
221 The initrd should typically be located as high in memory as 358 When using protocol 2.00 or 2.01, if the real mode kernel is not
222 possible, as it may otherwise get overwritten by the early 359 loaded at 0x90000, it gets moved there later in the loading
223 kernel initialization sequence. However, it must never be 360 sequence. Fill in this field if you want additional data (such as
224 located above the address specified in the initrd_addr_max 361 the kernel command line) moved in addition to the real-mode kernel
225 field. The initrd should be at least 4K page aligned. 362 itself.
226 363
227 cmd_line_ptr: 364 The unit is bytes starting with the beginning of the boot sector.
228 If the protocol version is 2.02 or higher, this is a 32-bit 365
229 pointer to the kernel command line. The kernel command line 366 This field is can be ignored when the protocol is 2.02 or higher, or
230 can be located anywhere between the end of setup and 0xA0000. 367 if the real-mode code is loaded at 0x90000.
231 Fill in this field even if your boot loader does not support a 368
232 command line, in which case you can point this to an empty 369Field name: code32_start
233 string (or better yet, to the string "auto".) If this field 370Type: modify (optional, reloc)
234 is left at zero, the kernel will assume that your boot loader 371Offset/size: 0x214/4
235 does not support the 2.02+ protocol. 372Protocol: 2.00+
236 373
237 ramdisk_max: 374 The address to jump to in protected mode. This defaults to the load
238 The maximum address that may be occupied by the initrd 375 address of the kernel, and can be used by the boot loader to
239 contents. For boot protocols 2.02 or earlier, this field is 376 determine the proper load address.
240 not present, and the maximum address is 0x37FFFFFF. (This 377
241 address is defined as the address of the highest safe byte, so 378 This field can be modified for two purposes:
242 if your ramdisk is exactly 131072 bytes long and this field is 379
243 0x37FFFFFF, you can start your ramdisk at 0x37FE0000.) 380 1. as a boot loader hook (see separate chapter.)
244 381
245 cmdline_size: 382 2. if a bootloader which does not install a hook loads a
246 The maximum size of the command line without the terminating 383 relocatable kernel at a nonstandard address it will have to modify
247 zero. This means that the command line can contain at most 384 this field to point to the load address.
248 cmdline_size characters. With protocol version 2.05 and 385
249 earlier, the maximum size was 255. 386Field name: ramdisk_image
387Type: write (obligatory)
388Offset/size: 0x218/4
389Protocol: 2.00+
390
391 The 32-bit linear address of the initial ramdisk or ramfs. Leave at
392 zero if there is no initial ramdisk/ramfs.
393
394Field name: ramdisk_size
395Type: write (obligatory)
396Offset/size: 0x21c/4
397Protocol: 2.00+
398
399 Size of the initial ramdisk or ramfs. Leave at zero if there is no
400 initial ramdisk/ramfs.
401
402Field name: bootsect_kludge
403Type: kernel internal
404Offset/size: 0x220/4
405Protocol: 2.00+
406
407 This field is obsolete.
408
409Field name: heap_end_ptr
410Type: write (obligatory)
411Offset/size: 0x224/2
412Protocol: 2.01+
413
414 Set this field to the offset (from the beginning of the real-mode
415 code) of the end of the setup stack/heap, minus 0x0200.
416
417Field name: cmd_line_ptr
418Type: write (obligatory)
419Offset/size: 0x228/4
420Protocol: 2.02+
421
422 Set this field to the linear address of the kernel command line.
423 The kernel command line can be located anywhere between the end of
424 the setup heap and 0xA0000; it does not have to be located in the
425 same 64K segment as the real-mode code itself.
426
427 Fill in this field even if your boot loader does not support a
428 command line, in which case you can point this to an empty string
429 (or better yet, to the string "auto".) If this field is left at
430 zero, the kernel will assume that your boot loader does not support
431 the 2.02+ protocol.
432
433Field name: initrd_addr_max
434Type: read
435Offset/size: 0x22c/4
436Protocol: 2.03+
437
438 The maximum address that may be occupied by the initial
439 ramdisk/ramfs contents. For boot protocols 2.02 or earlier, this
440 field is not present, and the maximum address is 0x37FFFFFF. (This
441 address is defined as the address of the highest safe byte, so if
442 your ramdisk is exactly 131072 bytes long and this field is
443 0x37FFFFFF, you can start your ramdisk at 0x37FE0000.)
444
445Field name: kernel_alignment
446Type: read (reloc)
447Offset/size: 0x230/4
448Protocol: 2.05+
449
450 Alignment unit required by the kernel (if relocatable_kernel is true.)
451
452Field name: relocatable_kernel
453Type: read (reloc)
454Offset/size: 0x234/1
455Protocol: 2.05+
456
457 If this field is nonzero, the protected-mode part of the kernel can
458 be loaded at any address that satisfies the kernel_alignment field.
459 After loading, the boot loader must set the code32_start field to
460 point to the loaded code, or to a boot loader hook.
461
462Field name: cmdline_size
463Type: read
464Offset/size: 0x238/4
465Protocol: 2.06+
466
467 The maximum size of the command line without the terminating
468 zero. This means that the command line can contain at most
469 cmdline_size characters. With protocol version 2.05 and earlier, the
470 maximum size was 255.
250 471
251 472
252**** THE KERNEL COMMAND LINE 473**** THE KERNEL COMMAND LINE
diff --git a/Documentation/networking/netdevices.txt b/Documentation/networking/netdevices.txt
index 847cedb238f6..ce1361f95243 100644
--- a/Documentation/networking/netdevices.txt
+++ b/Documentation/networking/netdevices.txt
@@ -49,7 +49,7 @@ dev->hard_start_xmit:
49 for this and return -1 when the spin lock fails. 49 for this and return -1 when the spin lock fails.
50 The locking there should also properly protect against 50 The locking there should also properly protect against
51 set_multicast_list 51 set_multicast_list
52 Context: BHs disabled 52 Context: Process with BHs disabled or BH (timer).
53 Notes: netif_queue_stopped() is guaranteed false 53 Notes: netif_queue_stopped() is guaranteed false
54 Interrupts must be enabled when calling hard_start_xmit. 54 Interrupts must be enabled when calling hard_start_xmit.
55 (Interrupts must also be enabled when enabling the BH handler.) 55 (Interrupts must also be enabled when enabling the BH handler.)
diff --git a/Documentation/vm/slabinfo.c b/Documentation/vm/slabinfo.c
index 434af27a32ac..d4f21ffd1404 100644
--- a/Documentation/vm/slabinfo.c
+++ b/Documentation/vm/slabinfo.c
@@ -262,11 +262,17 @@ void decode_numa_list(int *numa, char *t)
262 262
263void slab_validate(struct slabinfo *s) 263void slab_validate(struct slabinfo *s)
264{ 264{
265 if (strcmp(s->name, "*") == 0)
266 return;
267
265 set_obj(s, "validate", 1); 268 set_obj(s, "validate", 1);
266} 269}
267 270
268void slab_shrink(struct slabinfo *s) 271void slab_shrink(struct slabinfo *s)
269{ 272{
273 if (strcmp(s->name, "*") == 0)
274 return;
275
270 set_obj(s, "shrink", 1); 276 set_obj(s, "shrink", 1);
271} 277}
272 278
@@ -550,6 +556,9 @@ int slab_empty(struct slabinfo *s)
550 556
551void slab_debug(struct slabinfo *s) 557void slab_debug(struct slabinfo *s)
552{ 558{
559 if (strcmp(s->name, "*") == 0)
560 return;
561
553 if (sanity && !s->sanity_checks) { 562 if (sanity && !s->sanity_checks) {
554 set_obj(s, "sanity", 1); 563 set_obj(s, "sanity", 1);
555 } 564 }
diff --git a/Makefile b/Makefile
index e6990e2cdafc..34210af91ce2 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 2 1VERSION = 2
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 22 3SUBLEVEL = 22
4EXTRAVERSION = -rc1 4EXTRAVERSION = -rc2
5NAME = Nocturnal Monster Puppy 5NAME = Nocturnal Monster Puppy
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
@@ -491,7 +491,7 @@ endif
491include $(srctree)/arch/$(ARCH)/Makefile 491include $(srctree)/arch/$(ARCH)/Makefile
492 492
493ifdef CONFIG_FRAME_POINTER 493ifdef CONFIG_FRAME_POINTER
494CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls 494CFLAGS += -fno-omit-frame-pointer $(call cc-option,-fno-optimize-sibling-calls,)
495else 495else
496CFLAGS += -fomit-frame-pointer 496CFLAGS += -fomit-frame-pointer
497endif 497endif
diff --git a/arch/i386/Makefile b/arch/i386/Makefile
index 6dc5e5d90fec..bd28f9f9b4b7 100644
--- a/arch/i386/Makefile
+++ b/arch/i386/Makefile
@@ -34,7 +34,7 @@ CHECKFLAGS += -D__i386__
34CFLAGS += -pipe -msoft-float -mregparm=3 -freg-struct-return 34CFLAGS += -pipe -msoft-float -mregparm=3 -freg-struct-return
35 35
36# prevent gcc from keeping the stack 16 byte aligned 36# prevent gcc from keeping the stack 16 byte aligned
37CFLAGS += -mpreferred-stack-boundary=4 37CFLAGS += $(call cc-option,-mpreferred-stack-boundary=2)
38 38
39# CPU-specific tuning. Anything which can be shared with UML should go here. 39# CPU-specific tuning. Anything which can be shared with UML should go here.
40include $(srctree)/arch/i386/Makefile.cpu 40include $(srctree)/arch/i386/Makefile.cpu
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index d6014a67694b..6238b5875fd1 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -29,7 +29,7 @@ CROSS32CC := $(CC) -m32
29CROSS32AS := $(AS) -a32 29CROSS32AS := $(AS) -a32
30CROSS32LD := $(LD) -m elf32ppc 30CROSS32LD := $(LD) -m elf32ppc
31CROSS32OBJCOPY := $(OBJCOPY) 31CROSS32OBJCOPY := $(OBJCOPY)
32CROSS32AR := $(AR) 32CROSS32AR := GNUTARGET=elf32-powerpc $(AR)
33endif 33endif
34endif 34endif
35 35
@@ -58,6 +58,7 @@ ifeq ($(HAS_BIARCH),y)
58override AS += -a$(SZ) 58override AS += -a$(SZ)
59override LD += -m elf$(SZ)ppc 59override LD += -m elf$(SZ)ppc
60override CC += -m$(SZ) 60override CC += -m$(SZ)
61override AR := GNUTARGET=elf$(SZ)-powerpc $(AR)
61endif 62endif
62 63
63LDFLAGS_vmlinux := -Bstatic 64LDFLAGS_vmlinux := -Bstatic
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index d4f9fef7f9e9..83788986b93b 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -33,6 +33,9 @@ endif
33 33
34BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj) 34BOOTCFLAGS += -I$(obj) -I$(srctree)/$(obj)
35 35
36$(obj)/44x.o: BOOTCFLAGS += -Wa,-mbooke
37$(obj)/ebony.o: BOOTCFLAGS += -Wa,-mbooke
38
36zlib := inffast.c inflate.c inftrees.c 39zlib := inffast.c inflate.c inftrees.c
37zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h 40zlibheader := inffast.h inffixed.h inflate.h inftrees.h infutil.h
38zliblinuxheader := zlib.h zconf.h zutil.h 41zliblinuxheader := zlib.h zconf.h zutil.h
@@ -54,13 +57,13 @@ obj-wlib := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-wlib))))
54obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat)))) 57obj-plat := $(addsuffix .o, $(basename $(addprefix $(obj)/, $(src-plat))))
55 58
56quiet_cmd_copy_zlib = COPY $@ 59quiet_cmd_copy_zlib = COPY $@
57 cmd_copy_zlib = sed "s@__attribute_used__@@;s@<linux/\([^>]\+\).*@\"\1\"@" $< > $@ 60 cmd_copy_zlib = sed "s@__attribute_used__@@;s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
58 61
59quiet_cmd_copy_zlibheader = COPY $@ 62quiet_cmd_copy_zlibheader = COPY $@
60 cmd_copy_zlibheader = sed "s@<linux/\([^>]\+\).*@\"\1\"@" $< > $@ 63 cmd_copy_zlibheader = sed "s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
61# stddef.h for NULL 64# stddef.h for NULL
62quiet_cmd_copy_zliblinuxheader = COPY $@ 65quiet_cmd_copy_zliblinuxheader = COPY $@
63 cmd_copy_zliblinuxheader = sed "s@<linux/string.h>@\"string.h\"@;s@<linux/kernel.h>@<stddef.h>@;s@<linux/\([^>]\+\).*@\"\1\"@" $< > $@ 66 cmd_copy_zliblinuxheader = sed "s@<linux/string.h>@\"string.h\"@;s@<linux/kernel.h>@<stddef.h>@;s@<linux/\([^>]*\).*@\"\1\"@" $< > $@
64 67
65$(addprefix $(obj)/,$(zlib)): $(obj)/%: $(srctree)/lib/zlib_inflate/% 68$(addprefix $(obj)/,$(zlib)): $(obj)/%: $(srctree)/lib/zlib_inflate/%
66 $(call cmd,copy_zlib) 69 $(call cmd,copy_zlib)
@@ -204,12 +207,12 @@ dts = $(if $(shell echo $(CONFIG_DEVICE_TREE) | grep '^/'),\
204$(obj)/cuImage.%: vmlinux $(dts) $(wrapperbits) 207$(obj)/cuImage.%: vmlinux $(dts) $(wrapperbits)
205 $(call if_changed,wrap,cuboot-$*,$(dts)) 208 $(call if_changed,wrap,cuboot-$*,$(dts))
206 209
207$(obj)/treeImage.%: vmlinux $(dts) $(wrapperbits)
208 $(call if_changed,wrap,treeboot-$*,$(dts))
209
210$(obj)/treeImage.initrd.%: vmlinux $(dts) $(wrapperbits) 210$(obj)/treeImage.initrd.%: vmlinux $(dts) $(wrapperbits)
211 $(call if_changed,wrap,treeboot-$*,$(dts),,$(obj)/ramdisk.image.gz) 211 $(call if_changed,wrap,treeboot-$*,$(dts),,$(obj)/ramdisk.image.gz)
212 212
213$(obj)/treeImage.%: vmlinux $(dts) $(wrapperbits)
214 $(call if_changed,wrap,treeboot-$*,$(dts))
215
213$(obj)/zImage: $(addprefix $(obj)/, $(image-y)) 216$(obj)/zImage: $(addprefix $(obj)/, $(image-y))
214 @rm -f $@; ln $< $@ 217 @rm -f $@; ln $< $@
215$(obj)/zImage.initrd: $(addprefix $(obj)/, $(initrd-y)) 218$(obj)/zImage.initrd: $(addprefix $(obj)/, $(initrd-y))
diff --git a/arch/powerpc/boot/dts/ebony.dts b/arch/powerpc/boot/dts/ebony.dts
index b67918651c48..0ec02f4726b5 100644
--- a/arch/powerpc/boot/dts/ebony.dts
+++ b/arch/powerpc/boot/dts/ebony.dts
@@ -33,8 +33,8 @@
33 timebase-frequency = <0>; // Filled in by zImage 33 timebase-frequency = <0>; // Filled in by zImage
34 i-cache-line-size = <32>; 34 i-cache-line-size = <32>;
35 d-cache-line-size = <32>; 35 d-cache-line-size = <32>;
36 i-cache-size = <0>; 36 i-cache-size = <8000>; /* 32 kB */
37 d-cache-size = <0>; 37 d-cache-size = <8000>; /* 32 kB */
38 dcr-controller; 38 dcr-controller;
39 dcr-access-method = "native"; 39 dcr-access-method = "native";
40 }; 40 };
@@ -46,7 +46,6 @@
46 }; 46 };
47 47
48 UIC0: interrupt-controller0 { 48 UIC0: interrupt-controller0 {
49 device_type = "ibm,uic";
50 compatible = "ibm,uic-440gp", "ibm,uic"; 49 compatible = "ibm,uic-440gp", "ibm,uic";
51 interrupt-controller; 50 interrupt-controller;
52 cell-index = <0>; 51 cell-index = <0>;
@@ -58,7 +57,6 @@
58 }; 57 };
59 58
60 UIC1: interrupt-controller1 { 59 UIC1: interrupt-controller1 {
61 device_type = "ibm,uic";
62 compatible = "ibm,uic-440gp", "ibm,uic"; 60 compatible = "ibm,uic-440gp", "ibm,uic";
63 interrupt-controller; 61 interrupt-controller;
64 cell-index = <1>; 62 cell-index = <1>;
@@ -71,36 +69,36 @@
71 }; 69 };
72 70
73 CPC0: cpc { 71 CPC0: cpc {
74 device_type = "ibm,cpc";
75 compatible = "ibm,cpc-440gp"; 72 compatible = "ibm,cpc-440gp";
76 dcr-reg = <0b0 003 0e0 010>; 73 dcr-reg = <0b0 003 0e0 010>;
77 // FIXME: anything else? 74 // FIXME: anything else?
78 }; 75 };
79 76
80 plb { 77 plb {
81 device_type = "ibm,plb";
82 compatible = "ibm,plb-440gp", "ibm,plb4"; 78 compatible = "ibm,plb-440gp", "ibm,plb4";
83 #address-cells = <2>; 79 #address-cells = <2>;
84 #size-cells = <1>; 80 #size-cells = <1>;
85 ranges; 81 ranges;
86 clock-frequency = <0>; // Filled in by zImage 82 clock-frequency = <0>; // Filled in by zImage
87 83
88 SDRAM0: sdram { 84 SDRAM0: memory-controller {
89 device_type = "memory-controller"; 85 compatible = "ibm,sdram-440gp";
90 compatible = "ibm,sdram-440gp", "ibm,sdram";
91 dcr-reg = <010 2>; 86 dcr-reg = <010 2>;
92 // FIXME: anything else? 87 // FIXME: anything else?
93 }; 88 };
94 89
90 SRAM0: sram {
91 compatible = "ibm,sram-440gp";
92 dcr-reg = <020 8 00a 1>;
93 };
94
95 DMA0: dma { 95 DMA0: dma {
96 // FIXME: ??? 96 // FIXME: ???
97 device_type = "ibm,dma-4xx"; 97 compatible = "ibm,dma-440gp";
98 compatible = "ibm,dma-440gp", "ibm,dma-4xx";
99 dcr-reg = <100 027>; 98 dcr-reg = <100 027>;
100 }; 99 };
101 100
102 MAL0: mcmal { 101 MAL0: mcmal {
103 device_type = "mcmal-dma";
104 compatible = "ibm,mcmal-440gp", "ibm,mcmal"; 102 compatible = "ibm,mcmal-440gp", "ibm,mcmal";
105 dcr-reg = <180 62>; 103 dcr-reg = <180 62>;
106 num-tx-chans = <4>; 104 num-tx-chans = <4>;
@@ -119,7 +117,6 @@
119 }; 117 };
120 118
121 POB0: opb { 119 POB0: opb {
122 device_type = "ibm,opb";
123 compatible = "ibm,opb-440gp", "ibm,opb"; 120 compatible = "ibm,opb-440gp", "ibm,opb";
124 #address-cells = <1>; 121 #address-cells = <1>;
125 #size-cells = <1>; 122 #size-cells = <1>;
@@ -133,8 +130,7 @@
133 clock-frequency = <0>; // Filled in by zImage 130 clock-frequency = <0>; // Filled in by zImage
134 131
135 EBC0: ebc { 132 EBC0: ebc {
136 device_type = "ibm,ebc"; 133 compatible = "ibm,ebc-440gp", "ibm,ebc";
137 compatible = "ibm,ebc-440gp";
138 dcr-reg = <012 2>; 134 dcr-reg = <012 2>;
139 #address-cells = <2>; 135 #address-cells = <2>;
140 #size-cells = <1>; 136 #size-cells = <1>;
@@ -147,7 +143,7 @@
147 interrupts = <5 4>; 143 interrupts = <5 4>;
148 interrupt-parent = <&UIC1>; 144 interrupt-parent = <&UIC1>;
149 145
150 small-flash@0,0 { 146 small-flash@0,80000 {
151 device_type = "rom"; 147 device_type = "rom";
152 compatible = "direct-mapped"; 148 compatible = "direct-mapped";
153 probe-type = "JEDEC"; 149 probe-type = "JEDEC";
@@ -159,7 +155,6 @@
159 155
160 ds1743@1,0 { 156 ds1743@1,0 {
161 /* NVRAM & RTC */ 157 /* NVRAM & RTC */
162 device_type = "nvram";
163 compatible = "ds1743"; 158 compatible = "ds1743";
164 reg = <1 0 2000>; 159 reg = <1 0 2000>;
165 }; 160 };
@@ -170,7 +165,7 @@
170 probe-type = "JEDEC"; 165 probe-type = "JEDEC";
171 bank-width = <1>; 166 bank-width = <1>;
172 partitions = <0 380000 167 partitions = <0 380000
173 280000 80000>; 168 380000 80000>;
174 partition-names = "fs", "firmware"; 169 partition-names = "fs", "firmware";
175 reg = <2 0 400000>; 170 reg = <2 0 400000>;
176 }; 171 };
@@ -226,13 +221,11 @@
226 221
227 GPIO0: gpio@40000700 { 222 GPIO0: gpio@40000700 {
228 /* FIXME */ 223 /* FIXME */
229 device_type = "gpio";
230 compatible = "ibm,gpio-440gp"; 224 compatible = "ibm,gpio-440gp";
231 reg = <40000700 20>; 225 reg = <40000700 20>;
232 }; 226 };
233 227
234 ZMII0: emac-zmii@40000780 { 228 ZMII0: emac-zmii@40000780 {
235 device_type = "emac-zmii";
236 compatible = "ibm,zmii-440gp", "ibm,zmii"; 229 compatible = "ibm,zmii-440gp", "ibm,zmii";
237 reg = <40000780 c>; 230 reg = <40000780 c>;
238 }; 231 };
@@ -299,9 +292,5 @@
299 292
300 chosen { 293 chosen {
301 linux,stdout-path = "/plb/opb/serial@40000200"; 294 linux,stdout-path = "/plb/opb/serial@40000200";
302// linux,initrd-start = <0>; /* FIXME */
303// linux,initrd-end = <0>;
304// bootargs = "";
305 }; 295 };
306}; 296};
307
diff --git a/arch/powerpc/boot/dts/kuroboxHD.dts b/arch/powerpc/boot/dts/kuroboxHD.dts
index 157dc98d3988..a983680c3263 100644
--- a/arch/powerpc/boot/dts/kuroboxHD.dts
+++ b/arch/powerpc/boot/dts/kuroboxHD.dts
@@ -21,19 +21,16 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts"
21 */ 21 */
22 22
23/ { 23/ {
24 linux,phandle = <1000>;
25 model = "KuroboxHD"; 24 model = "KuroboxHD";
26 compatible = "linkstation"; 25 compatible = "linkstation";
27 #address-cells = <1>; 26 #address-cells = <1>;
28 #size-cells = <1>; 27 #size-cells = <1>;
29 28
30 cpus { 29 cpus {
31 linux,phandle = <2000>;
32 #address-cells = <1>; 30 #address-cells = <1>;
33 #size-cells = <0>; 31 #size-cells = <0>;
34 32
35 PowerPC,603e { /* Really 8241 */ 33 PowerPC,603e { /* Really 8241 */
36 linux,phandle = <2100>;
37 device_type = "cpu"; 34 device_type = "cpu";
38 reg = <0>; 35 reg = <0>;
39 clock-frequency = <bebc200>; /* Fixed by bootwrapper */ 36 clock-frequency = <bebc200>; /* Fixed by bootwrapper */
@@ -48,13 +45,11 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts"
48 }; 45 };
49 46
50 memory { 47 memory {
51 linux,phandle = <3000>;
52 device_type = "memory"; 48 device_type = "memory";
53 reg = <00000000 04000000>; 49 reg = <00000000 04000000>;
54 }; 50 };
55 51
56 soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ 52 soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */
57 linux,phandle = <4000>;
58 #address-cells = <1>; 53 #address-cells = <1>;
59 #size-cells = <1>; 54 #size-cells = <1>;
60 #interrupt-cells = <2>; 55 #interrupt-cells = <2>;
@@ -69,38 +64,34 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts"
69 fef00000 fef00000 00100000>; /* pci iack */ 64 fef00000 fef00000 00100000>; /* pci iack */
70 65
71 i2c@80003000 { 66 i2c@80003000 {
72 linux,phandle = <4300>;
73 device_type = "i2c"; 67 device_type = "i2c";
74 compatible = "fsl-i2c"; 68 compatible = "fsl-i2c";
75 reg = <80003000 1000>; 69 reg = <80003000 1000>;
76 interrupts = <5 2>; 70 interrupts = <5 2>;
77 interrupt-parent = <4400>; 71 interrupt-parent = <&mpic>;
78 }; 72 };
79 73
80 serial@80004500 { 74 serial@80004500 {
81 linux,phandle = <4511>;
82 device_type = "serial"; 75 device_type = "serial";
83 compatible = "ns16550"; 76 compatible = "ns16550";
84 reg = <80004500 8>; 77 reg = <80004500 8>;
85 clock-frequency = <5d08d88>; 78 clock-frequency = <5d08d88>;
86 current-speed = <2580>; 79 current-speed = <2580>;
87 interrupts = <9 2>; 80 interrupts = <9 2>;
88 interrupt-parent = <4400>; 81 interrupt-parent = <&mpic>;
89 }; 82 };
90 83
91 serial@80004600 { 84 serial@80004600 {
92 linux,phandle = <4512>;
93 device_type = "serial"; 85 device_type = "serial";
94 compatible = "ns16550"; 86 compatible = "ns16550";
95 reg = <80004600 8>; 87 reg = <80004600 8>;
96 clock-frequency = <5d08d88>; 88 clock-frequency = <5d08d88>;
97 current-speed = <e100>; 89 current-speed = <e100>;
98 interrupts = <a 0>; 90 interrupts = <a 0>;
99 interrupt-parent = <4400>; 91 interrupt-parent = <&mpic>;
100 }; 92 };
101 93
102 pic@80040000 { 94 mpic: pic@80040000 {
103 linux,phandle = <4400>;
104 #interrupt-cells = <2>; 95 #interrupt-cells = <2>;
105 #address-cells = <0>; 96 #address-cells = <0>;
106 device_type = "open-pic"; 97 device_type = "open-pic";
@@ -111,7 +102,6 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts"
111 }; 102 };
112 103
113 pci@fec00000 { 104 pci@fec00000 {
114 linux,phandle = <4500>;
115 #address-cells = <3>; 105 #address-cells = <3>;
116 #size-cells = <2>; 106 #size-cells = <2>;
117 #interrupt-cells = <1>; 107 #interrupt-cells = <1>;
@@ -122,24 +112,24 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHD.dtb -V 16 kuroboxHD.dts"
122 02000000 0 80000000 80000000 0 70000000>; 112 02000000 0 80000000 80000000 0 70000000>;
123 bus-range = <0 ff>; 113 bus-range = <0 ff>;
124 clock-frequency = <7f28155>; 114 clock-frequency = <7f28155>;
125 interrupt-parent = <4400>; 115 interrupt-parent = <&mpic>;
126 interrupt-map-mask = <f800 0 0 7>; 116 interrupt-map-mask = <f800 0 0 7>;
127 interrupt-map = < 117 interrupt-map = <
128 /* IDSEL 11 - IRQ0 ETH */ 118 /* IDSEL 11 - IRQ0 ETH */
129 5800 0 0 1 4400 0 1 119 5800 0 0 1 &mpic 0 1
130 5800 0 0 2 4400 1 1 120 5800 0 0 2 &mpic 1 1
131 5800 0 0 3 4400 2 1 121 5800 0 0 3 &mpic 2 1
132 5800 0 0 4 4400 3 1 122 5800 0 0 4 &mpic 3 1
133 /* IDSEL 12 - IRQ1 IDE0 */ 123 /* IDSEL 12 - IRQ1 IDE0 */
134 6000 0 0 1 4400 1 1 124 6000 0 0 1 &mpic 1 1
135 6000 0 0 2 4400 2 1 125 6000 0 0 2 &mpic 2 1
136 6000 0 0 3 4400 3 1 126 6000 0 0 3 &mpic 3 1
137 6000 0 0 4 4400 0 1 127 6000 0 0 4 &mpic 0 1
138 /* IDSEL 14 - IRQ3 USB2.0 */ 128 /* IDSEL 14 - IRQ3 USB2.0 */
139 7000 0 0 1 4400 3 1 129 7000 0 0 1 &mpic 3 1
140 7000 0 0 2 4400 3 1 130 7000 0 0 2 &mpic 3 1
141 7000 0 0 3 4400 3 1 131 7000 0 0 3 &mpic 3 1
142 7000 0 0 4 4400 3 1 132 7000 0 0 4 &mpic 3 1
143 >; 133 >;
144 }; 134 };
145 }; 135 };
diff --git a/arch/powerpc/boot/dts/kuroboxHG.dts b/arch/powerpc/boot/dts/kuroboxHG.dts
index 919eb29097db..5cf42dc022df 100644
--- a/arch/powerpc/boot/dts/kuroboxHG.dts
+++ b/arch/powerpc/boot/dts/kuroboxHG.dts
@@ -21,19 +21,16 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts"
21 */ 21 */
22 22
23/ { 23/ {
24 linux,phandle = <1000>;
25 model = "KuroboxHG"; 24 model = "KuroboxHG";
26 compatible = "linkstation"; 25 compatible = "linkstation";
27 #address-cells = <1>; 26 #address-cells = <1>;
28 #size-cells = <1>; 27 #size-cells = <1>;
29 28
30 cpus { 29 cpus {
31 linux,phandle = <2000>;
32 #address-cells = <1>; 30 #address-cells = <1>;
33 #size-cells = <0>; 31 #size-cells = <0>;
34 32
35 PowerPC,603e { /* Really 8241 */ 33 PowerPC,603e { /* Really 8241 */
36 linux,phandle = <2100>;
37 device_type = "cpu"; 34 device_type = "cpu";
38 reg = <0>; 35 reg = <0>;
39 clock-frequency = <fdad680>; /* Fixed by bootwrapper */ 36 clock-frequency = <fdad680>; /* Fixed by bootwrapper */
@@ -48,13 +45,11 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts"
48 }; 45 };
49 46
50 memory { 47 memory {
51 linux,phandle = <3000>;
52 device_type = "memory"; 48 device_type = "memory";
53 reg = <00000000 08000000>; 49 reg = <00000000 08000000>;
54 }; 50 };
55 51
56 soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */ 52 soc10x { /* AFAICT need to make soc for 8245's uarts to be defined */
57 linux,phandle = <4000>;
58 #address-cells = <1>; 53 #address-cells = <1>;
59 #size-cells = <1>; 54 #size-cells = <1>;
60 #interrupt-cells = <2>; 55 #interrupt-cells = <2>;
@@ -69,38 +64,35 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts"
69 fef00000 fef00000 00100000>; /* pci iack */ 64 fef00000 fef00000 00100000>; /* pci iack */
70 65
71 i2c@80003000 { 66 i2c@80003000 {
72 linux,phandle = <4300>;
73 device_type = "i2c"; 67 device_type = "i2c";
74 compatible = "fsl-i2c"; 68 compatible = "fsl-i2c";
75 reg = <80003000 1000>; 69 reg = <80003000 1000>;
76 interrupts = <5 2>; 70 interrupts = <5 2>;
77 interrupt-parent = <4400>; 71 interrupt-parent = <&mpic>;
78 }; 72 };
79 73
80 serial@80004500 { 74 serial@80004500 {
81 linux,phandle = <4511>;
82 device_type = "serial"; 75 device_type = "serial";
83 compatible = "ns16550"; 76 compatible = "ns16550";
84 reg = <80004500 8>; 77 reg = <80004500 8>;
85 clock-frequency = <7c044a8>; 78 clock-frequency = <7c044a8>;
86 current-speed = <2580>; 79 current-speed = <2580>;
87 interrupts = <9 2>; 80 interrupts = <9 2>;
88 interrupt-parent = <4400>; 81 interrupt-parent = <&mpic>;
89 }; 82 };
90 83
91 serial@80004600 { 84 serial@80004600 {
92 linux,phandle = <4512>;
93 device_type = "serial"; 85 device_type = "serial";
94 compatible = "ns16550"; 86 compatible = "ns16550";
95 reg = <80004600 8>; 87 reg = <80004600 8>;
96 clock-frequency = <7c044a8>; 88 clock-frequency = <7c044a8>;
97 current-speed = <e100>; 89 current-speed = <e100>;
98 interrupts = <a 0>; 90 interrupts = <a 0>;
99 interrupt-parent = <4400>; 91 interrupt-parent = <&mpic>;
100 }; 92 };
101 93
102 pic@80040000 { 94 mpic: pic@80040000 {
103 linux,phandle = <4400>; 95 interrupt-parent = <&mpic>;
104 #interrupt-cells = <2>; 96 #interrupt-cells = <2>;
105 #address-cells = <0>; 97 #address-cells = <0>;
106 device_type = "open-pic"; 98 device_type = "open-pic";
@@ -111,7 +103,6 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts"
111 }; 103 };
112 104
113 pci@fec00000 { 105 pci@fec00000 {
114 linux,phandle = <4500>;
115 #address-cells = <3>; 106 #address-cells = <3>;
116 #size-cells = <2>; 107 #size-cells = <2>;
117 #interrupt-cells = <1>; 108 #interrupt-cells = <1>;
@@ -122,24 +113,24 @@ build with: "dtc -f -I dts -O dtb -o kuroboxHG.dtb -V 16 kuroboxHG.dts"
122 02000000 0 80000000 80000000 0 70000000>; 113 02000000 0 80000000 80000000 0 70000000>;
123 bus-range = <0 ff>; 114 bus-range = <0 ff>;
124 clock-frequency = <7f28155>; 115 clock-frequency = <7f28155>;
125 interrupt-parent = <4400>; 116 interrupt-parent = <&mpic>;
126 interrupt-map-mask = <f800 0 0 7>; 117 interrupt-map-mask = <f800 0 0 7>;
127 interrupt-map = < 118 interrupt-map = <
128 /* IDSEL 11 - IRQ0 ETH */ 119 /* IDSEL 11 - IRQ0 ETH */
129 5800 0 0 1 4400 0 1 120 5800 0 0 1 &mpic 0 1
130 5800 0 0 2 4400 1 1 121 5800 0 0 2 &mpic 1 1
131 5800 0 0 3 4400 2 1 122 5800 0 0 3 &mpic 2 1
132 5800 0 0 4 4400 3 1 123 5800 0 0 4 &mpic 3 1
133 /* IDSEL 12 - IRQ1 IDE0 */ 124 /* IDSEL 12 - IRQ1 IDE0 */
134 6000 0 0 1 4400 1 1 125 6000 0 0 1 &mpic 1 1
135 6000 0 0 2 4400 2 1 126 6000 0 0 2 &mpic 2 1
136 6000 0 0 3 4400 3 1 127 6000 0 0 3 &mpic 3 1
137 6000 0 0 4 4400 0 1 128 6000 0 0 4 &mpic 0 1
138 /* IDSEL 14 - IRQ3 USB2.0 */ 129 /* IDSEL 14 - IRQ3 USB2.0 */
139 7000 0 0 1 4400 3 1 130 7000 0 0 1 &mpic 3 1
140 7000 0 0 2 4400 3 1 131 7000 0 0 2 &mpic 3 1
141 7000 0 0 3 4400 3 1 132 7000 0 0 3 &mpic 3 1
142 7000 0 0 4 4400 3 1 133 7000 0 0 4 &mpic 3 1
143 >; 134 >;
144 }; 135 };
145 }; 136 };
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts
index e13ac6ef05a9..eae68ab1177f 100644
--- a/arch/powerpc/boot/dts/lite5200.dts
+++ b/arch/powerpc/boot/dts/lite5200.dts
@@ -49,7 +49,7 @@
49 soc5200@f0000000 { 49 soc5200@f0000000 {
50 model = "fsl,mpc5200"; 50 model = "fsl,mpc5200";
51 compatible = "mpc5200"; 51 compatible = "mpc5200";
52 revision = "" // from bootloader 52 revision = ""; // from bootloader
53 #interrupt-cells = <3>; 53 #interrupt-cells = <3>;
54 device_type = "soc"; 54 device_type = "soc";
55 ranges = <0 f0000000 f0010000>; 55 ranges = <0 f0000000 f0010000>;
@@ -62,13 +62,12 @@
62 reg = <200 38>; 62 reg = <200 38>;
63 }; 63 };
64 64
65 pic@500 { 65 mpc5200_pic: pic@500 {
66 // 5200 interrupts are encoded into two levels; 66 // 5200 interrupts are encoded into two levels;
67 linux,phandle = <500>;
68 interrupt-controller; 67 interrupt-controller;
69 #interrupt-cells = <3>; 68 #interrupt-cells = <3>;
70 device_type = "interrupt-controller"; 69 device_type = "interrupt-controller";
71 compatible = "mpc5200-pic"; 70 compatible = "mpc5200_pic";
72 reg = <500 80>; 71 reg = <500 80>;
73 built-in; 72 built-in;
74 }; 73 };
@@ -79,7 +78,7 @@
79 cell-index = <0>; 78 cell-index = <0>;
80 reg = <600 10>; 79 reg = <600 10>;
81 interrupts = <1 9 0>; 80 interrupts = <1 9 0>;
82 interrupt-parent = <500>; 81 interrupt-parent = <&mpc5200_pic>;
83 has-wdt; 82 has-wdt;
84 }; 83 };
85 84
@@ -89,7 +88,7 @@
89 cell-index = <1>; 88 cell-index = <1>;
90 reg = <610 10>; 89 reg = <610 10>;
91 interrupts = <1 a 0>; 90 interrupts = <1 a 0>;
92 interrupt-parent = <500>; 91 interrupt-parent = <&mpc5200_pic>;
93 }; 92 };
94 93
95 gpt@620 { // General Purpose Timer 94 gpt@620 { // General Purpose Timer
@@ -98,7 +97,7 @@
98 cell-index = <2>; 97 cell-index = <2>;
99 reg = <620 10>; 98 reg = <620 10>;
100 interrupts = <1 b 0>; 99 interrupts = <1 b 0>;
101 interrupt-parent = <500>; 100 interrupt-parent = <&mpc5200_pic>;
102 }; 101 };
103 102
104 gpt@630 { // General Purpose Timer 103 gpt@630 { // General Purpose Timer
@@ -107,7 +106,7 @@
107 cell-index = <3>; 106 cell-index = <3>;
108 reg = <630 10>; 107 reg = <630 10>;
109 interrupts = <1 c 0>; 108 interrupts = <1 c 0>;
110 interrupt-parent = <500>; 109 interrupt-parent = <&mpc5200_pic>;
111 }; 110 };
112 111
113 gpt@640 { // General Purpose Timer 112 gpt@640 { // General Purpose Timer
@@ -116,7 +115,7 @@
116 cell-index = <4>; 115 cell-index = <4>;
117 reg = <640 10>; 116 reg = <640 10>;
118 interrupts = <1 d 0>; 117 interrupts = <1 d 0>;
119 interrupt-parent = <500>; 118 interrupt-parent = <&mpc5200_pic>;
120 }; 119 };
121 120
122 gpt@650 { // General Purpose Timer 121 gpt@650 { // General Purpose Timer
@@ -125,7 +124,7 @@
125 cell-index = <5>; 124 cell-index = <5>;
126 reg = <650 10>; 125 reg = <650 10>;
127 interrupts = <1 e 0>; 126 interrupts = <1 e 0>;
128 interrupt-parent = <500>; 127 interrupt-parent = <&mpc5200_pic>;
129 }; 128 };
130 129
131 gpt@660 { // General Purpose Timer 130 gpt@660 { // General Purpose Timer
@@ -134,7 +133,7 @@
134 cell-index = <6>; 133 cell-index = <6>;
135 reg = <660 10>; 134 reg = <660 10>;
136 interrupts = <1 f 0>; 135 interrupts = <1 f 0>;
137 interrupt-parent = <500>; 136 interrupt-parent = <&mpc5200_pic>;
138 }; 137 };
139 138
140 gpt@670 { // General Purpose Timer 139 gpt@670 { // General Purpose Timer
@@ -143,7 +142,7 @@
143 cell-index = <7>; 142 cell-index = <7>;
144 reg = <670 10>; 143 reg = <670 10>;
145 interrupts = <1 10 0>; 144 interrupts = <1 10 0>;
146 interrupt-parent = <500>; 145 interrupt-parent = <&mpc5200_pic>;
147 }; 146 };
148 147
149 rtc@800 { // Real time clock 148 rtc@800 { // Real time clock
@@ -151,7 +150,7 @@
151 device_type = "rtc"; 150 device_type = "rtc";
152 reg = <800 100>; 151 reg = <800 100>;
153 interrupts = <1 5 0 1 6 0>; 152 interrupts = <1 5 0 1 6 0>;
154 interrupt-parent = <500>; 153 interrupt-parent = <&mpc5200_pic>;
155 }; 154 };
156 155
157 mscan@900 { 156 mscan@900 {
@@ -159,7 +158,7 @@
159 compatible = "mpc5200-mscan"; 158 compatible = "mpc5200-mscan";
160 cell-index = <0>; 159 cell-index = <0>;
161 interrupts = <2 11 0>; 160 interrupts = <2 11 0>;
162 interrupt-parent = <500>; 161 interrupt-parent = <&mpc5200_pic>;
163 reg = <900 80>; 162 reg = <900 80>;
164 }; 163 };
165 164
@@ -168,7 +167,7 @@
168 compatible = "mpc5200-mscan"; 167 compatible = "mpc5200-mscan";
169 cell-index = <1>; 168 cell-index = <1>;
170 interrupts = <2 12 0>; 169 interrupts = <2 12 0>;
171 interrupt-parent = <500>; 170 interrupt-parent = <&mpc5200_pic>;
172 reg = <980 80>; 171 reg = <980 80>;
173 }; 172 };
174 173
@@ -176,14 +175,14 @@
176 compatible = "mpc5200-gpio"; 175 compatible = "mpc5200-gpio";
177 reg = <b00 40>; 176 reg = <b00 40>;
178 interrupts = <1 7 0>; 177 interrupts = <1 7 0>;
179 interrupt-parent = <500>; 178 interrupt-parent = <&mpc5200_pic>;
180 }; 179 };
181 180
182 gpio-wkup@c00 { 181 gpio-wkup@c00 {
183 compatible = "mpc5200-gpio-wkup"; 182 compatible = "mpc5200-gpio-wkup";
184 reg = <c00 40>; 183 reg = <c00 40>;
185 interrupts = <1 8 0 0 3 0>; 184 interrupts = <1 8 0 0 3 0>;
186 interrupt-parent = <500>; 185 interrupt-parent = <&mpc5200_pic>;
187 }; 186 };
188 187
189 pci@0d00 { 188 pci@0d00 {
@@ -194,13 +193,13 @@
194 compatible = "mpc5200-pci"; 193 compatible = "mpc5200-pci";
195 reg = <d00 100>; 194 reg = <d00 100>;
196 interrupt-map-mask = <f800 0 0 7>; 195 interrupt-map-mask = <f800 0 0 7>;
197 interrupt-map = <c000 0 0 1 500 0 0 3 196 interrupt-map = <c000 0 0 1 &mpc5200_pic 0 0 3
198 c000 0 0 2 500 0 0 3 197 c000 0 0 2 &mpc5200_pic 0 0 3
199 c000 0 0 3 500 0 0 3 198 c000 0 0 3 &mpc5200_pic 0 0 3
200 c000 0 0 4 500 0 0 3>; 199 c000 0 0 4 &mpc5200_pic 0 0 3>;
201 clock-frequency = <0>; // From boot loader 200 clock-frequency = <0>; // From boot loader
202 interrupts = <2 8 0 2 9 0 2 a 0>; 201 interrupts = <2 8 0 2 9 0 2 a 0>;
203 interrupt-parent = <500>; 202 interrupt-parent = <&mpc5200_pic>;
204 bus-range = <0 0>; 203 bus-range = <0 0>;
205 ranges = <42000000 0 80000000 80000000 0 20000000 204 ranges = <42000000 0 80000000 80000000 0 20000000
206 02000000 0 a0000000 a0000000 0 10000000 205 02000000 0 a0000000 a0000000 0 10000000
@@ -212,7 +211,7 @@
212 compatible = "mpc5200-spi"; 211 compatible = "mpc5200-spi";
213 reg = <f00 20>; 212 reg = <f00 20>;
214 interrupts = <2 d 0 2 e 0>; 213 interrupts = <2 d 0 2 e 0>;
215 interrupt-parent = <500>; 214 interrupt-parent = <&mpc5200_pic>;
216 }; 215 };
217 216
218 usb@1000 { 217 usb@1000 {
@@ -220,7 +219,7 @@
220 compatible = "mpc5200-ohci\0ohci-be"; 219 compatible = "mpc5200-ohci\0ohci-be";
221 reg = <1000 ff>; 220 reg = <1000 ff>;
222 interrupts = <2 6 0>; 221 interrupts = <2 6 0>;
223 interrupt-parent = <500>; 222 interrupt-parent = <&mpc5200_pic>;
224 }; 223 };
225 224
226 bestcomm@1200 { 225 bestcomm@1200 {
@@ -231,7 +230,7 @@
231 3 4 0 3 5 0 3 6 0 3 7 0 230 3 4 0 3 5 0 3 6 0 3 7 0
232 3 8 0 3 9 0 3 a 0 3 b 0 231 3 8 0 3 9 0 3 a 0 3 b 0
233 3 c 0 3 d 0 3 e 0 3 f 0>; 232 3 c 0 3 d 0 3 e 0 3 f 0>;
234 interrupt-parent = <500>; 233 interrupt-parent = <&mpc5200_pic>;
235 }; 234 };
236 235
237 xlb@1f00 { 236 xlb@1f00 {
@@ -246,7 +245,7 @@
246 cell-index = <0>; 245 cell-index = <0>;
247 reg = <2000 100>; 246 reg = <2000 100>;
248 interrupts = <2 1 0>; 247 interrupts = <2 1 0>;
249 interrupt-parent = <500>; 248 interrupt-parent = <&mpc5200_pic>;
250 }; 249 };
251 250
252 // PSC2 in ac97 mode example 251 // PSC2 in ac97 mode example
@@ -256,7 +255,7 @@
256 // cell-index = <1>; 255 // cell-index = <1>;
257 // reg = <2200 100>; 256 // reg = <2200 100>;
258 // interrupts = <2 2 0>; 257 // interrupts = <2 2 0>;
259 // interrupt-parent = <500>; 258 // interrupt-parent = <&mpc5200_pic>;
260 //}; 259 //};
261 260
262 // PSC3 in CODEC mode example 261 // PSC3 in CODEC mode example
@@ -266,7 +265,7 @@
266 // cell-index = <2>; 265 // cell-index = <2>;
267 // reg = <2400 100>; 266 // reg = <2400 100>;
268 // interrupts = <2 3 0>; 267 // interrupts = <2 3 0>;
269 // interrupt-parent = <500>; 268 // interrupt-parent = <&mpc5200_pic>;
270 //}; 269 //};
271 270
272 // PSC4 in uart mode example 271 // PSC4 in uart mode example
@@ -276,7 +275,7 @@
276 // cell-index = <3>; 275 // cell-index = <3>;
277 // reg = <2600 100>; 276 // reg = <2600 100>;
278 // interrupts = <2 b 0>; 277 // interrupts = <2 b 0>;
279 // interrupt-parent = <500>; 278 // interrupt-parent = <&mpc5200_pic>;
280 //}; 279 //};
281 280
282 // PSC5 in uart mode example 281 // PSC5 in uart mode example
@@ -286,7 +285,7 @@
286 // cell-index = <4>; 285 // cell-index = <4>;
287 // reg = <2800 100>; 286 // reg = <2800 100>;
288 // interrupts = <2 c 0>; 287 // interrupts = <2 c 0>;
289 // interrupt-parent = <500>; 288 // interrupt-parent = <&mpc5200_pic>;
290 //}; 289 //};
291 290
292 // PSC6 in spi mode example 291 // PSC6 in spi mode example
@@ -296,7 +295,7 @@
296 // cell-index = <5>; 295 // cell-index = <5>;
297 // reg = <2c00 100>; 296 // reg = <2c00 100>;
298 // interrupts = <2 4 0>; 297 // interrupts = <2 4 0>;
299 // interrupt-parent = <500>; 298 // interrupt-parent = <&mpc5200_pic>;
300 //}; 299 //};
301 300
302 ethernet@3000 { 301 ethernet@3000 {
@@ -305,7 +304,7 @@
305 reg = <3000 800>; 304 reg = <3000 800>;
306 mac-address = [ 02 03 04 05 06 07 ]; // Bad! 305 mac-address = [ 02 03 04 05 06 07 ]; // Bad!
307 interrupts = <2 5 0>; 306 interrupts = <2 5 0>;
308 interrupt-parent = <500>; 307 interrupt-parent = <&mpc5200_pic>;
309 }; 308 };
310 309
311 ata@3a00 { 310 ata@3a00 {
@@ -313,7 +312,7 @@
313 compatible = "mpc5200-ata"; 312 compatible = "mpc5200-ata";
314 reg = <3a00 100>; 313 reg = <3a00 100>;
315 interrupts = <2 7 0>; 314 interrupts = <2 7 0>;
316 interrupt-parent = <500>; 315 interrupt-parent = <&mpc5200_pic>;
317 }; 316 };
318 317
319 i2c@3d00 { 318 i2c@3d00 {
@@ -322,7 +321,7 @@
322 cell-index = <0>; 321 cell-index = <0>;
323 reg = <3d00 40>; 322 reg = <3d00 40>;
324 interrupts = <2 f 0>; 323 interrupts = <2 f 0>;
325 interrupt-parent = <500>; 324 interrupt-parent = <&mpc5200_pic>;
326 fsl5200-clocking; 325 fsl5200-clocking;
327 }; 326 };
328 327
@@ -332,7 +331,7 @@
332 cell-index = <1>; 331 cell-index = <1>;
333 reg = <3d40 40>; 332 reg = <3d40 40>;
334 interrupts = <2 10 0>; 333 interrupts = <2 10 0>;
335 interrupt-parent = <500>; 334 interrupt-parent = <&mpc5200_pic>;
336 fsl5200-clocking; 335 fsl5200-clocking;
337 }; 336 };
338 sram@8000 { 337 sram@8000 {
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts
index 00211b39a342..5185625a9419 100644
--- a/arch/powerpc/boot/dts/lite5200b.dts
+++ b/arch/powerpc/boot/dts/lite5200b.dts
@@ -62,13 +62,12 @@
62 reg = <200 38>; 62 reg = <200 38>;
63 }; 63 };
64 64
65 pic@500 { 65 mpc5200_pic: pic@500 {
66 // 5200 interrupts are encoded into two levels; 66 // 5200 interrupts are encoded into two levels;
67 linux,phandle = <500>;
68 interrupt-controller; 67 interrupt-controller;
69 #interrupt-cells = <3>; 68 #interrupt-cells = <3>;
70 device_type = "interrupt-controller"; 69 device_type = "interrupt-controller";
71 compatible = "mpc5200b-pic\0mpc5200-pic"; 70 compatible = "mpc5200b-pic\0mpc5200_pic";
72 reg = <500 80>; 71 reg = <500 80>;
73 built-in; 72 built-in;
74 }; 73 };
@@ -79,7 +78,7 @@
79 cell-index = <0>; 78 cell-index = <0>;
80 reg = <600 10>; 79 reg = <600 10>;
81 interrupts = <1 9 0>; 80 interrupts = <1 9 0>;
82 interrupt-parent = <500>; 81 interrupt-parent = <&mpc5200_pic>;
83 has-wdt; 82 has-wdt;
84 }; 83 };
85 84
@@ -89,7 +88,7 @@
89 cell-index = <1>; 88 cell-index = <1>;
90 reg = <610 10>; 89 reg = <610 10>;
91 interrupts = <1 a 0>; 90 interrupts = <1 a 0>;
92 interrupt-parent = <500>; 91 interrupt-parent = <&mpc5200_pic>;
93 }; 92 };
94 93
95 gpt@620 { // General Purpose Timer 94 gpt@620 { // General Purpose Timer
@@ -98,7 +97,7 @@
98 cell-index = <2>; 97 cell-index = <2>;
99 reg = <620 10>; 98 reg = <620 10>;
100 interrupts = <1 b 0>; 99 interrupts = <1 b 0>;
101 interrupt-parent = <500>; 100 interrupt-parent = <&mpc5200_pic>;
102 }; 101 };
103 102
104 gpt@630 { // General Purpose Timer 103 gpt@630 { // General Purpose Timer
@@ -107,7 +106,7 @@
107 cell-index = <3>; 106 cell-index = <3>;
108 reg = <630 10>; 107 reg = <630 10>;
109 interrupts = <1 c 0>; 108 interrupts = <1 c 0>;
110 interrupt-parent = <500>; 109 interrupt-parent = <&mpc5200_pic>;
111 }; 110 };
112 111
113 gpt@640 { // General Purpose Timer 112 gpt@640 { // General Purpose Timer
@@ -116,7 +115,7 @@
116 cell-index = <4>; 115 cell-index = <4>;
117 reg = <640 10>; 116 reg = <640 10>;
118 interrupts = <1 d 0>; 117 interrupts = <1 d 0>;
119 interrupt-parent = <500>; 118 interrupt-parent = <&mpc5200_pic>;
120 }; 119 };
121 120
122 gpt@650 { // General Purpose Timer 121 gpt@650 { // General Purpose Timer
@@ -125,7 +124,7 @@
125 cell-index = <5>; 124 cell-index = <5>;
126 reg = <650 10>; 125 reg = <650 10>;
127 interrupts = <1 e 0>; 126 interrupts = <1 e 0>;
128 interrupt-parent = <500>; 127 interrupt-parent = <&mpc5200_pic>;
129 }; 128 };
130 129
131 gpt@660 { // General Purpose Timer 130 gpt@660 { // General Purpose Timer
@@ -134,7 +133,7 @@
134 cell-index = <6>; 133 cell-index = <6>;
135 reg = <660 10>; 134 reg = <660 10>;
136 interrupts = <1 f 0>; 135 interrupts = <1 f 0>;
137 interrupt-parent = <500>; 136 interrupt-parent = <&mpc5200_pic>;
138 }; 137 };
139 138
140 gpt@670 { // General Purpose Timer 139 gpt@670 { // General Purpose Timer
@@ -143,7 +142,7 @@
143 cell-index = <7>; 142 cell-index = <7>;
144 reg = <670 10>; 143 reg = <670 10>;
145 interrupts = <1 10 0>; 144 interrupts = <1 10 0>;
146 interrupt-parent = <500>; 145 interrupt-parent = <&mpc5200_pic>;
147 }; 146 };
148 147
149 rtc@800 { // Real time clock 148 rtc@800 { // Real time clock
@@ -151,7 +150,7 @@
151 device_type = "rtc"; 150 device_type = "rtc";
152 reg = <800 100>; 151 reg = <800 100>;
153 interrupts = <1 5 0 1 6 0>; 152 interrupts = <1 5 0 1 6 0>;
154 interrupt-parent = <500>; 153 interrupt-parent = <&mpc5200_pic>;
155 }; 154 };
156 155
157 mscan@900 { 156 mscan@900 {
@@ -159,7 +158,7 @@
159 compatible = "mpc5200b-mscan\0mpc5200-mscan"; 158 compatible = "mpc5200b-mscan\0mpc5200-mscan";
160 cell-index = <0>; 159 cell-index = <0>;
161 interrupts = <2 11 0>; 160 interrupts = <2 11 0>;
162 interrupt-parent = <500>; 161 interrupt-parent = <&mpc5200_pic>;
163 reg = <900 80>; 162 reg = <900 80>;
164 }; 163 };
165 164
@@ -168,7 +167,7 @@
168 compatible = "mpc5200b-mscan\0mpc5200-mscan"; 167 compatible = "mpc5200b-mscan\0mpc5200-mscan";
169 cell-index = <1>; 168 cell-index = <1>;
170 interrupts = <2 12 0>; 169 interrupts = <2 12 0>;
171 interrupt-parent = <500>; 170 interrupt-parent = <&mpc5200_pic>;
172 reg = <980 80>; 171 reg = <980 80>;
173 }; 172 };
174 173
@@ -176,14 +175,14 @@
176 compatible = "mpc5200b-gpio\0mpc5200-gpio"; 175 compatible = "mpc5200b-gpio\0mpc5200-gpio";
177 reg = <b00 40>; 176 reg = <b00 40>;
178 interrupts = <1 7 0>; 177 interrupts = <1 7 0>;
179 interrupt-parent = <500>; 178 interrupt-parent = <&mpc5200_pic>;
180 }; 179 };
181 180
182 gpio-wkup@c00 { 181 gpio-wkup@c00 {
183 compatible = "mpc5200b-gpio-wkup\0mpc5200-gpio-wkup"; 182 compatible = "mpc5200b-gpio-wkup\0mpc5200-gpio-wkup";
184 reg = <c00 40>; 183 reg = <c00 40>;
185 interrupts = <1 8 0 0 3 0>; 184 interrupts = <1 8 0 0 3 0>;
186 interrupt-parent = <500>; 185 interrupt-parent = <&mpc5200_pic>;
187 }; 186 };
188 187
189 pci@0d00 { 188 pci@0d00 {
@@ -194,18 +193,18 @@
194 compatible = "mpc5200b-pci\0mpc5200-pci"; 193 compatible = "mpc5200b-pci\0mpc5200-pci";
195 reg = <d00 100>; 194 reg = <d00 100>;
196 interrupt-map-mask = <f800 0 0 7>; 195 interrupt-map-mask = <f800 0 0 7>;
197 interrupt-map = <c000 0 0 1 500 0 0 3 // 1st slot 196 interrupt-map = <c000 0 0 1 &mpc5200_pic 0 0 3 // 1st slot
198 c000 0 0 2 500 1 1 3 197 c000 0 0 2 &mpc5200_pic 1 1 3
199 c000 0 0 3 500 1 2 3 198 c000 0 0 3 &mpc5200_pic 1 2 3
200 c000 0 0 4 500 1 3 3 199 c000 0 0 4 &mpc5200_pic 1 3 3
201 200
202 c800 0 0 1 500 1 1 3 // 2nd slot 201 c800 0 0 1 &mpc5200_pic 1 1 3 // 2nd slot
203 c800 0 0 2 500 1 2 3 202 c800 0 0 2 &mpc5200_pic 1 2 3
204 c800 0 0 3 500 1 3 3 203 c800 0 0 3 &mpc5200_pic 1 3 3
205 c800 0 0 4 500 0 0 3>; 204 c800 0 0 4 &mpc5200_pic 0 0 3>;
206 clock-frequency = <0>; // From boot loader 205 clock-frequency = <0>; // From boot loader
207 interrupts = <2 8 0 2 9 0 2 a 0>; 206 interrupts = <2 8 0 2 9 0 2 a 0>;
208 interrupt-parent = <500>; 207 interrupt-parent = <&mpc5200_pic>;
209 bus-range = <0 0>; 208 bus-range = <0 0>;
210 ranges = <42000000 0 80000000 80000000 0 20000000 209 ranges = <42000000 0 80000000 80000000 0 20000000
211 02000000 0 a0000000 a0000000 0 10000000 210 02000000 0 a0000000 a0000000 0 10000000
@@ -217,7 +216,7 @@
217 compatible = "mpc5200b-spi\0mpc5200-spi"; 216 compatible = "mpc5200b-spi\0mpc5200-spi";
218 reg = <f00 20>; 217 reg = <f00 20>;
219 interrupts = <2 d 0 2 e 0>; 218 interrupts = <2 d 0 2 e 0>;
220 interrupt-parent = <500>; 219 interrupt-parent = <&mpc5200_pic>;
221 }; 220 };
222 221
223 usb@1000 { 222 usb@1000 {
@@ -225,7 +224,7 @@
225 compatible = "mpc5200b-ohci\0mpc5200-ohci\0ohci-be"; 224 compatible = "mpc5200b-ohci\0mpc5200-ohci\0ohci-be";
226 reg = <1000 ff>; 225 reg = <1000 ff>;
227 interrupts = <2 6 0>; 226 interrupts = <2 6 0>;
228 interrupt-parent = <500>; 227 interrupt-parent = <&mpc5200_pic>;
229 }; 228 };
230 229
231 bestcomm@1200 { 230 bestcomm@1200 {
@@ -236,7 +235,7 @@
236 3 4 0 3 5 0 3 6 0 3 7 0 235 3 4 0 3 5 0 3 6 0 3 7 0
237 3 8 0 3 9 0 3 a 0 3 b 0 236 3 8 0 3 9 0 3 a 0 3 b 0
238 3 c 0 3 d 0 3 e 0 3 f 0>; 237 3 c 0 3 d 0 3 e 0 3 f 0>;
239 interrupt-parent = <500>; 238 interrupt-parent = <&mpc5200_pic>;
240 }; 239 };
241 240
242 xlb@1f00 { 241 xlb@1f00 {
@@ -251,7 +250,7 @@
251 cell-index = <0>; 250 cell-index = <0>;
252 reg = <2000 100>; 251 reg = <2000 100>;
253 interrupts = <2 1 0>; 252 interrupts = <2 1 0>;
254 interrupt-parent = <500>; 253 interrupt-parent = <&mpc5200_pic>;
255 }; 254 };
256 255
257 // PSC2 in ac97 mode example 256 // PSC2 in ac97 mode example
@@ -261,7 +260,7 @@
261 // cell-index = <1>; 260 // cell-index = <1>;
262 // reg = <2200 100>; 261 // reg = <2200 100>;
263 // interrupts = <2 2 0>; 262 // interrupts = <2 2 0>;
264 // interrupt-parent = <500>; 263 // interrupt-parent = <&mpc5200_pic>;
265 //}; 264 //};
266 265
267 // PSC3 in CODEC mode example 266 // PSC3 in CODEC mode example
@@ -271,7 +270,7 @@
271 // cell-index = <2>; 270 // cell-index = <2>;
272 // reg = <2400 100>; 271 // reg = <2400 100>;
273 // interrupts = <2 3 0>; 272 // interrupts = <2 3 0>;
274 // interrupt-parent = <500>; 273 // interrupt-parent = <&mpc5200_pic>;
275 //}; 274 //};
276 275
277 // PSC4 in uart mode example 276 // PSC4 in uart mode example
@@ -281,7 +280,7 @@
281 // cell-index = <3>; 280 // cell-index = <3>;
282 // reg = <2600 100>; 281 // reg = <2600 100>;
283 // interrupts = <2 b 0>; 282 // interrupts = <2 b 0>;
284 // interrupt-parent = <500>; 283 // interrupt-parent = <&mpc5200_pic>;
285 //}; 284 //};
286 285
287 // PSC5 in uart mode example 286 // PSC5 in uart mode example
@@ -291,7 +290,7 @@
291 // cell-index = <4>; 290 // cell-index = <4>;
292 // reg = <2800 100>; 291 // reg = <2800 100>;
293 // interrupts = <2 c 0>; 292 // interrupts = <2 c 0>;
294 // interrupt-parent = <500>; 293 // interrupt-parent = <&mpc5200_pic>;
295 //}; 294 //};
296 295
297 // PSC6 in spi mode example 296 // PSC6 in spi mode example
@@ -301,7 +300,7 @@
301 // cell-index = <5>; 300 // cell-index = <5>;
302 // reg = <2c00 100>; 301 // reg = <2c00 100>;
303 // interrupts = <2 4 0>; 302 // interrupts = <2 4 0>;
304 // interrupt-parent = <500>; 303 // interrupt-parent = <&mpc5200_pic>;
305 //}; 304 //};
306 305
307 ethernet@3000 { 306 ethernet@3000 {
@@ -310,7 +309,7 @@
310 reg = <3000 800>; 309 reg = <3000 800>;
311 mac-address = [ 02 03 04 05 06 07 ]; // Bad! 310 mac-address = [ 02 03 04 05 06 07 ]; // Bad!
312 interrupts = <2 5 0>; 311 interrupts = <2 5 0>;
313 interrupt-parent = <500>; 312 interrupt-parent = <&mpc5200_pic>;
314 }; 313 };
315 314
316 ata@3a00 { 315 ata@3a00 {
@@ -318,7 +317,7 @@
318 compatible = "mpc5200b-ata\0mpc5200-ata"; 317 compatible = "mpc5200b-ata\0mpc5200-ata";
319 reg = <3a00 100>; 318 reg = <3a00 100>;
320 interrupts = <2 7 0>; 319 interrupts = <2 7 0>;
321 interrupt-parent = <500>; 320 interrupt-parent = <&mpc5200_pic>;
322 }; 321 };
323 322
324 i2c@3d00 { 323 i2c@3d00 {
@@ -327,7 +326,7 @@
327 cell-index = <0>; 326 cell-index = <0>;
328 reg = <3d00 40>; 327 reg = <3d00 40>;
329 interrupts = <2 f 0>; 328 interrupts = <2 f 0>;
330 interrupt-parent = <500>; 329 interrupt-parent = <&mpc5200_pic>;
331 fsl5200-clocking; 330 fsl5200-clocking;
332 }; 331 };
333 332
@@ -337,7 +336,7 @@
337 cell-index = <1>; 336 cell-index = <1>;
338 reg = <3d40 40>; 337 reg = <3d40 40>;
339 interrupts = <2 10 0>; 338 interrupts = <2 10 0>;
340 interrupt-parent = <500>; 339 interrupt-parent = <&mpc5200_pic>;
341 fsl5200-clocking; 340 fsl5200-clocking;
342 }; 341 };
343 sram@8000 { 342 sram@8000 {
diff --git a/arch/powerpc/boot/dts/mpc7448hpc2.dts b/arch/powerpc/boot/dts/mpc7448hpc2.dts
index 6fa3754f293a..765c306ecf80 100644
--- a/arch/powerpc/boot/dts/mpc7448hpc2.dts
+++ b/arch/powerpc/boot/dts/mpc7448hpc2.dts
@@ -16,12 +16,10 @@
16 compatible = "mpc74xx"; 16 compatible = "mpc74xx";
17 #address-cells = <1>; 17 #address-cells = <1>;
18 #size-cells = <1>; 18 #size-cells = <1>;
19 linux,phandle = <100>;
20 19
21 cpus { 20 cpus {
22 #address-cells = <1>; 21 #address-cells = <1>;
23 #size-cells =<0>; 22 #size-cells =<0>;
24 linux,phandle = <200>;
25 23
26 PowerPC,7448@0 { 24 PowerPC,7448@0 {
27 device_type = "cpu"; 25 device_type = "cpu";
@@ -34,13 +32,11 @@
34 clock-frequency = <0>; // From U-Boot 32 clock-frequency = <0>; // From U-Boot
35 bus-frequency = <0>; // From U-Boot 33 bus-frequency = <0>; // From U-Boot
36 32-bit; 34 32-bit;
37 linux,phandle = <201>;
38 }; 35 };
39 }; 36 };
40 37
41 memory { 38 memory {
42 device_type = "memory"; 39 device_type = "memory";
43 linux,phandle = <300>;
44 reg = <00000000 20000000 // DDR2 512M at 0 40 reg = <00000000 20000000 // DDR2 512M at 0
45 >; 41 >;
46 }; 42 };
@@ -55,7 +51,7 @@
55 bus-frequency = <0>; 51 bus-frequency = <0>;
56 52
57 i2c@7000 { 53 i2c@7000 {
58 interrupt-parent = <7400>; 54 interrupt-parent = <&mpic>;
59 interrupts = <E 0>; 55 interrupts = <E 0>;
60 reg = <7000 400>; 56 reg = <7000 400>;
61 device_type = "i2c"; 57 device_type = "i2c";
@@ -66,18 +62,16 @@
66 device_type = "mdio"; 62 device_type = "mdio";
67 compatible = "tsi-ethernet"; 63 compatible = "tsi-ethernet";
68 64
69 ethernet-phy@6000 { 65 phy8: ethernet-phy@6000 {
70 linux,phandle = <6000>; 66 interrupt-parent = <&mpic>;
71 interrupt-parent = <7400>;
72 interrupts = <2 1>; 67 interrupts = <2 1>;
73 reg = <6000 50>; 68 reg = <6000 50>;
74 phy-id = <8>; 69 phy-id = <8>;
75 device_type = "ethernet-phy"; 70 device_type = "ethernet-phy";
76 }; 71 };
77 72
78 ethernet-phy@6400 { 73 phy9: ethernet-phy@6400 {
79 linux,phandle = <6400>; 74 interrupt-parent = <&mpic>;
80 interrupt-parent = <7400>;
81 interrupts = <2 1>; 75 interrupts = <2 1>;
82 reg = <6000 50>; 76 reg = <6000 50>;
83 phy-id = <9>; 77 phy-id = <9>;
@@ -94,8 +88,8 @@
94 reg = <6000 200>; 88 reg = <6000 200>;
95 address = [ 00 06 D2 00 00 01 ]; 89 address = [ 00 06 D2 00 00 01 ];
96 interrupts = <10 2>; 90 interrupts = <10 2>;
97 interrupt-parent = <7400>; 91 interrupt-parent = <&mpic>;
98 phy-handle = <6000>; 92 phy-handle = <&phy8>;
99 }; 93 };
100 94
101 ethernet@6600 { 95 ethernet@6600 {
@@ -107,8 +101,8 @@
107 reg = <6400 200>; 101 reg = <6400 200>;
108 address = [ 00 06 D2 00 00 02 ]; 102 address = [ 00 06 D2 00 00 02 ];
109 interrupts = <11 2>; 103 interrupts = <11 2>;
110 interrupt-parent = <7400>; 104 interrupt-parent = <&mpic>;
111 phy-handle = <6400>; 105 phy-handle = <&phy9>;
112 }; 106 };
113 107
114 serial@7808 { 108 serial@7808 {
@@ -117,7 +111,7 @@
117 reg = <7808 200>; 111 reg = <7808 200>;
118 clock-frequency = <3f6b5a00>; 112 clock-frequency = <3f6b5a00>;
119 interrupts = <c 0>; 113 interrupts = <c 0>;
120 interrupt-parent = <7400>; 114 interrupt-parent = <&mpic>;
121 }; 115 };
122 116
123 serial@7c08 { 117 serial@7c08 {
@@ -126,11 +120,10 @@
126 reg = <7c08 200>; 120 reg = <7c08 200>;
127 clock-frequency = <3f6b5a00>; 121 clock-frequency = <3f6b5a00>;
128 interrupts = <d 0>; 122 interrupts = <d 0>;
129 interrupt-parent = <7400>; 123 interrupt-parent = <&mpic>;
130 }; 124 };
131 125
132 pic@7400 { 126 mpic: pic@7400 {
133 linux,phandle = <7400>;
134 clock-frequency = <0>; 127 clock-frequency = <0>;
135 interrupt-controller; 128 interrupt-controller;
136 #address-cells = <0>; 129 #address-cells = <0>;
@@ -144,7 +137,6 @@
144 pci@1000 { 137 pci@1000 {
145 compatible = "tsi10x"; 138 compatible = "tsi10x";
146 device_type = "pci"; 139 device_type = "pci";
147 linux,phandle = <1000>;
148 #interrupt-cells = <1>; 140 #interrupt-cells = <1>;
149 #size-cells = <2>; 141 #size-cells = <2>;
150 #address-cells = <3>; 142 #address-cells = <3>;
@@ -153,37 +145,37 @@
153 ranges = <02000000 0 e0000000 e0000000 0 1A000000 145 ranges = <02000000 0 e0000000 e0000000 0 1A000000
154 01000000 0 00000000 fa000000 0 00010000>; 146 01000000 0 00000000 fa000000 0 00010000>;
155 clock-frequency = <7f28154>; 147 clock-frequency = <7f28154>;
156 interrupt-parent = <7400>; 148 interrupt-parent = <&mpic>;
157 interrupts = <17 2>; 149 interrupts = <17 2>;
158 interrupt-map-mask = <f800 0 0 7>; 150 interrupt-map-mask = <f800 0 0 7>;
159 interrupt-map = < 151 interrupt-map = <
160 152
161 /* IDSEL 0x11 */ 153 /* IDSEL 0x11 */
162 0800 0 0 1 1180 24 0 154 0800 0 0 1 &RT0 24 0
163 0800 0 0 2 1180 25 0 155 0800 0 0 2 &RT0 25 0
164 0800 0 0 3 1180 26 0 156 0800 0 0 3 &RT0 26 0
165 0800 0 0 4 1180 27 0 157 0800 0 0 4 &RT0 27 0
166 158
167 /* IDSEL 0x12 */ 159 /* IDSEL 0x12 */
168 1000 0 0 1 1180 25 0 160 1000 0 0 1 &RT0 25 0
169 1000 0 0 2 1180 26 0 161 1000 0 0 2 &RT0 26 0
170 1000 0 0 3 1180 27 0 162 1000 0 0 3 &RT0 27 0
171 1000 0 0 4 1180 24 0 163 1000 0 0 4 &RT0 24 0
172 164
173 /* IDSEL 0x13 */ 165 /* IDSEL 0x13 */
174 1800 0 0 1 1180 26 0 166 1800 0 0 1 &RT0 26 0
175 1800 0 0 2 1180 27 0 167 1800 0 0 2 &RT0 27 0
176 1800 0 0 3 1180 24 0 168 1800 0 0 3 &RT0 24 0
177 1800 0 0 4 1180 25 0 169 1800 0 0 4 &RT0 25 0
178 170
179 /* IDSEL 0x14 */ 171 /* IDSEL 0x14 */
180 2000 0 0 1 1180 27 0 172 2000 0 0 1 &RT0 27 0
181 2000 0 0 2 1180 24 0 173 2000 0 0 2 &RT0 24 0
182 2000 0 0 3 1180 25 0 174 2000 0 0 3 &RT0 25 0
183 2000 0 0 4 1180 26 0 175 2000 0 0 4 &RT0 26 0
184 >; 176 >;
185 router@1180 { 177
186 linux,phandle = <1180>; 178 RT0: router@1180 {
187 clock-frequency = <0>; 179 clock-frequency = <0>;
188 interrupt-controller; 180 interrupt-controller;
189 device_type = "pic-router"; 181 device_type = "pic-router";
@@ -192,7 +184,7 @@
192 built-in; 184 built-in;
193 big-endian; 185 big-endian;
194 interrupts = <17 2>; 186 interrupts = <17 2>;
195 interrupt-parent = <7400>; 187 interrupt-parent = <&mpic>;
196 }; 188 };
197 }; 189 };
198 }; 190 };
diff --git a/arch/powerpc/boot/dts/mpc8540ads.dts b/arch/powerpc/boot/dts/mpc8540ads.dts
index f261d647ac85..d91e81c009f5 100644
--- a/arch/powerpc/boot/dts/mpc8540ads.dts
+++ b/arch/powerpc/boot/dts/mpc8540ads.dts
@@ -48,6 +48,22 @@
48 reg = <e0000000 00100000>; // CCSRBAR 1M 48 reg = <e0000000 00100000>; // CCSRBAR 1M
49 bus-frequency = <0>; 49 bus-frequency = <0>;
50 50
51 memory-controller@2000 {
52 compatible = "fsl,8540-memory-controller";
53 reg = <2000 1000>;
54 interrupt-parent = <&mpic>;
55 interrupts = <2 2>;
56 };
57
58 l2-cache-controller@20000 {
59 compatible = "fsl,8540-l2-cache-controller";
60 reg = <20000 1000>;
61 cache-line-size = <20>; // 32 bytes
62 cache-size = <40000>; // L2, 256K
63 interrupt-parent = <&mpic>;
64 interrupts = <0 2>;
65 };
66
51 i2c@3000 { 67 i2c@3000 {
52 device_type = "i2c"; 68 device_type = "i2c";
53 compatible = "fsl-i2c"; 69 compatible = "fsl-i2c";
diff --git a/arch/powerpc/boot/dts/mpc8541cds.dts b/arch/powerpc/boot/dts/mpc8541cds.dts
index 5fdcb69554f2..4f2c3af2e052 100644
--- a/arch/powerpc/boot/dts/mpc8541cds.dts
+++ b/arch/powerpc/boot/dts/mpc8541cds.dts
@@ -48,6 +48,22 @@
48 reg = <e0000000 00100000>; // CCSRBAR 1M 48 reg = <e0000000 00100000>; // CCSRBAR 1M
49 bus-frequency = <0>; 49 bus-frequency = <0>;
50 50
51 memory-controller@2000 {
52 compatible = "fsl,8541-memory-controller";
53 reg = <2000 1000>;
54 interrupt-parent = <&mpic>;
55 interrupts = <2 2>;
56 };
57
58 l2-cache-controller@20000 {
59 compatible = "fsl,8541-l2-cache-controller";
60 reg = <20000 1000>;
61 cache-line-size = <20>; // 32 bytes
62 cache-size = <40000>; // L2, 256K
63 interrupt-parent = <&mpic>;
64 interrupts = <0 2>;
65 };
66
51 i2c@3000 { 67 i2c@3000 {
52 device_type = "i2c"; 68 device_type = "i2c";
53 compatible = "fsl-i2c"; 69 compatible = "fsl-i2c";
diff --git a/arch/powerpc/boot/dts/mpc8544ds.dts b/arch/powerpc/boot/dts/mpc8544ds.dts
index 6b084605bb4b..3033599e74e8 100644
--- a/arch/powerpc/boot/dts/mpc8544ds.dts
+++ b/arch/powerpc/boot/dts/mpc8544ds.dts
@@ -48,6 +48,22 @@
48 reg = <e0000000 00100000>; // CCSRBAR 1M 48 reg = <e0000000 00100000>; // CCSRBAR 1M
49 bus-frequency = <0>; // Filled out by uboot. 49 bus-frequency = <0>; // Filled out by uboot.
50 50
51 memory-controller@2000 {
52 compatible = "fsl,8544-memory-controller";
53 reg = <2000 1000>;
54 interrupt-parent = <&mpic>;
55 interrupts = <2 2>;
56 };
57
58 l2-cache-controller@20000 {
59 compatible = "fsl,8544-l2-cache-controller";
60 reg = <20000 1000>;
61 cache-line-size = <20>; // 32 bytes
62 cache-size = <40000>; // L2, 256K
63 interrupt-parent = <&mpic>;
64 interrupts = <0 2>;
65 };
66
51 i2c@3000 { 67 i2c@3000 {
52 device_type = "i2c"; 68 device_type = "i2c";
53 compatible = "fsl-i2c"; 69 compatible = "fsl-i2c";
diff --git a/arch/powerpc/boot/dts/mpc8548cds.dts b/arch/powerpc/boot/dts/mpc8548cds.dts
index b2b2200d0425..ad96381033c0 100644
--- a/arch/powerpc/boot/dts/mpc8548cds.dts
+++ b/arch/powerpc/boot/dts/mpc8548cds.dts
@@ -48,6 +48,22 @@
48 reg = <e0000000 00100000>; // CCSRBAR 1M 48 reg = <e0000000 00100000>; // CCSRBAR 1M
49 bus-frequency = <0>; 49 bus-frequency = <0>;
50 50
51 memory-controller@2000 {
52 compatible = "fsl,8548-memory-controller";
53 reg = <2000 1000>;
54 interrupt-parent = <&mpic>;
55 interrupts = <2 2>;
56 };
57
58 l2-cache-controller@20000 {
59 compatible = "fsl,8548-l2-cache-controller";
60 reg = <20000 1000>;
61 cache-line-size = <20>; // 32 bytes
62 cache-size = <80000>; // L2, 512K
63 interrupt-parent = <&mpic>;
64 interrupts = <0 2>;
65 };
66
51 i2c@3000 { 67 i2c@3000 {
52 device_type = "i2c"; 68 device_type = "i2c";
53 compatible = "fsl-i2c"; 69 compatible = "fsl-i2c";
diff --git a/arch/powerpc/boot/dts/mpc8555cds.dts b/arch/powerpc/boot/dts/mpc8555cds.dts
index 68a4795720dc..951ed92f1154 100644
--- a/arch/powerpc/boot/dts/mpc8555cds.dts
+++ b/arch/powerpc/boot/dts/mpc8555cds.dts
@@ -48,6 +48,22 @@
48 reg = <e0000000 00100000>; // CCSRBAR 1M 48 reg = <e0000000 00100000>; // CCSRBAR 1M
49 bus-frequency = <0>; 49 bus-frequency = <0>;
50 50
51 memory-controller@2000 {
52 compatible = "fsl,8555-memory-controller";
53 reg = <2000 1000>;
54 interrupt-parent = <&mpic>;
55 interrupts = <2 2>;
56 };
57
58 l2-cache-controller@20000 {
59 compatible = "fsl,8555-l2-cache-controller";
60 reg = <20000 1000>;
61 cache-line-size = <20>; // 32 bytes
62 cache-size = <40000>; // L2, 256K
63 interrupt-parent = <&mpic>;
64 interrupts = <0 2>;
65 };
66
51 i2c@3000 { 67 i2c@3000 {
52 device_type = "i2c"; 68 device_type = "i2c";
53 compatible = "fsl-i2c"; 69 compatible = "fsl-i2c";
diff --git a/arch/powerpc/boot/dts/mpc8560ads.dts b/arch/powerpc/boot/dts/mpc8560ads.dts
index 1f2afe9291d2..80682152b0cf 100644
--- a/arch/powerpc/boot/dts/mpc8560ads.dts
+++ b/arch/powerpc/boot/dts/mpc8560ads.dts
@@ -48,6 +48,22 @@
48 reg = <e0000000 00000200>; 48 reg = <e0000000 00000200>;
49 bus-frequency = <13ab6680>; 49 bus-frequency = <13ab6680>;
50 50
51 memory-controller@2000 {
52 compatible = "fsl,8540-memory-controller";
53 reg = <2000 1000>;
54 interrupt-parent = <&mpic>;
55 interrupts = <2 2>;
56 };
57
58 l2-cache-controller@20000 {
59 compatible = "fsl,8540-l2-cache-controller";
60 reg = <20000 1000>;
61 cache-line-size = <20>; // 32 bytes
62 cache-size = <40000>; // L2, 256K
63 interrupt-parent = <&mpic>;
64 interrupts = <0 2>;
65 };
66
51 mdio@24520 { 67 mdio@24520 {
52 device_type = "mdio"; 68 device_type = "mdio";
53 compatible = "gianfar"; 69 compatible = "gianfar";
@@ -110,7 +126,7 @@
110 #address-cells = <3>; 126 #address-cells = <3>;
111 compatible = "85xx"; 127 compatible = "85xx";
112 device_type = "pci"; 128 device_type = "pci";
113 reg = <8000 400>; 129 reg = <8000 1000>;
114 clock-frequency = <3f940aa>; 130 clock-frequency = <3f940aa>;
115 interrupt-map-mask = <f800 0 0 7>; 131 interrupt-map-mask = <f800 0 0 7>;
116 interrupt-map = < 132 interrupt-map = <
diff --git a/arch/powerpc/boot/dts/mpc8568mds.dts b/arch/powerpc/boot/dts/mpc8568mds.dts
index 948a3b61bd4a..a123ec9456bc 100644
--- a/arch/powerpc/boot/dts/mpc8568mds.dts
+++ b/arch/powerpc/boot/dts/mpc8568mds.dts
@@ -57,6 +57,22 @@
57 reg = <e0000000 00100000>; 57 reg = <e0000000 00100000>;
58 bus-frequency = <0>; 58 bus-frequency = <0>;
59 59
60 memory-controller@2000 {
61 compatible = "fsl,8568-memory-controller";
62 reg = <2000 1000>;
63 interrupt-parent = <&mpic>;
64 interrupts = <2 2>;
65 };
66
67 l2-cache-controller@20000 {
68 compatible = "fsl,8568-l2-cache-controller";
69 reg = <20000 1000>;
70 cache-line-size = <20>; // 32 bytes
71 cache-size = <80000>; // L2, 512K
72 interrupt-parent = <&mpic>;
73 interrupts = <0 2>;
74 };
75
60 i2c@3000 { 76 i2c@3000 {
61 device_type = "i2c"; 77 device_type = "i2c";
62 compatible = "fsl-i2c"; 78 compatible = "fsl-i2c";
diff --git a/arch/powerpc/boot/flatdevtree.c b/arch/powerpc/boot/flatdevtree.c
index d00fbd92a458..b732644788db 100644
--- a/arch/powerpc/boot/flatdevtree.c
+++ b/arch/powerpc/boot/flatdevtree.c
@@ -891,28 +891,27 @@ int ft_set_prop(struct ft_cxt *cxt, const void *phandle, const char *propname,
891 struct ft_atom atom; 891 struct ft_atom atom;
892 void *node; 892 void *node;
893 char *p, *next; 893 char *p, *next;
894 int nextra, depth; 894 int nextra;
895 895
896 node = ft_node_ph2node(cxt, phandle); 896 node = ft_node_ph2node(cxt, phandle);
897 if (node == NULL) 897 if (node == NULL)
898 return -1; 898 return -1;
899 899
900 depth = 0; 900 next = ft_next(cxt, node, &atom);
901 p = node; 901 if (atom.tag != OF_DT_BEGIN_NODE)
902 /* phandle didn't point to a node */
903 return -1;
904 p = next;
902 905
903 while ((next = ft_next(cxt, p, &atom)) != NULL) { 906 while ((next = ft_next(cxt, p, &atom)) != NULL) {
904 switch (atom.tag) { 907 switch (atom.tag) {
905 case OF_DT_BEGIN_NODE: 908 case OF_DT_BEGIN_NODE: /* properties must go before subnodes */
906 ++depth;
907 break;
908 case OF_DT_END_NODE: 909 case OF_DT_END_NODE:
909 if (--depth > 0)
910 break;
911 /* haven't found the property, insert here */ 910 /* haven't found the property, insert here */
912 cxt->p = p; 911 cxt->p = p;
913 return ft_prop(cxt, propname, buf, buflen); 912 return ft_prop(cxt, propname, buf, buflen);
914 case OF_DT_PROP: 913 case OF_DT_PROP:
915 if ((depth != 1) || strcmp(atom.name, propname)) 914 if (strcmp(atom.name, propname))
916 break; 915 break;
917 /* found an existing property, overwrite it */ 916 /* found an existing property, overwrite it */
918 nextra = _ALIGN(buflen, 4) - _ALIGN(atom.size, 4); 917 nextra = _ALIGN(buflen, 4) - _ALIGN(atom.size, 4);
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig
index 6061e5f7696e..02c428affc8f 100644
--- a/arch/powerpc/configs/cell_defconfig
+++ b/arch/powerpc/configs/cell_defconfig
@@ -163,7 +163,6 @@ CONFIG_SPU_FS=m
163CONFIG_SPU_BASE=y 163CONFIG_SPU_BASE=y
164CONFIG_CBE_RAS=y 164CONFIG_CBE_RAS=y
165CONFIG_CBE_THERM=m 165CONFIG_CBE_THERM=m
166CONFIG_CBE_CPUFREQ=m
167CONFIG_PPC_NATIVE=y 166CONFIG_PPC_NATIVE=y
168CONFIG_UDBG_RTAS_CONSOLE=y 167CONFIG_UDBG_RTAS_CONSOLE=y
169CONFIG_PPC_UDBG_BEAT=y 168CONFIG_PPC_UDBG_BEAT=y
@@ -172,24 +171,12 @@ CONFIG_PPC_RTAS=y
172# CONFIG_RTAS_ERROR_LOGGING is not set 171# CONFIG_RTAS_ERROR_LOGGING is not set
173CONFIG_RTAS_PROC=y 172CONFIG_RTAS_PROC=y
174CONFIG_RTAS_FLASH=y 173CONFIG_RTAS_FLASH=y
175CONFIG_PPC_PMI=m 174# CONFIG_PPC_PMI is not set
176CONFIG_MMIO_NVRAM=y 175CONFIG_MMIO_NVRAM=y
177# CONFIG_PPC_MPC106 is not set 176# CONFIG_PPC_MPC106 is not set
178# CONFIG_PPC_970_NAP is not set 177# CONFIG_PPC_970_NAP is not set
179CONFIG_PPC_INDIRECT_IO=y 178CONFIG_PPC_INDIRECT_IO=y
180CONFIG_GENERIC_IOMAP=y 179CONFIG_GENERIC_IOMAP=y
181CONFIG_CPU_FREQ=y
182CONFIG_CPU_FREQ_TABLE=y
183CONFIG_CPU_FREQ_DEBUG=y
184CONFIG_CPU_FREQ_STAT=y
185# CONFIG_CPU_FREQ_STAT_DETAILS is not set
186CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
187# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
188CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
189CONFIG_CPU_FREQ_GOV_POWERSAVE=y
190CONFIG_CPU_FREQ_GOV_USERSPACE=y
191CONFIG_CPU_FREQ_GOV_ONDEMAND=y
192CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
193# CONFIG_CPU_FREQ_PMAC64 is not set 180# CONFIG_CPU_FREQ_PMAC64 is not set
194# CONFIG_WANT_EARLY_SERIAL is not set 181# CONFIG_WANT_EARLY_SERIAL is not set
195CONFIG_MPIC=y 182CONFIG_MPIC=y
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig
index 5fc87448704c..af25118c8f24 100644
--- a/arch/powerpc/configs/iseries_defconfig
+++ b/arch/powerpc/configs/iseries_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.20-rc5 3# Linux kernel version: 2.6.22-rc1
4# Mon Jan 22 22:16:44 2007 4# Mon May 14 14:27:46 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -40,6 +40,7 @@ CONFIG_PPC_FPU=y
40# CONFIG_PPC_OF_PLATFORM_PCI is not set 40# CONFIG_PPC_OF_PLATFORM_PCI is not set
41# CONFIG_ALTIVEC is not set 41# CONFIG_ALTIVEC is not set
42CONFIG_PPC_STD_MMU=y 42CONFIG_PPC_STD_MMU=y
43# CONFIG_PPC_MM_SLICES is not set
43CONFIG_VIRT_CPU_ACCOUNTING=y 44CONFIG_VIRT_CPU_ACCOUNTING=y
44CONFIG_SMP=y 45CONFIG_SMP=y
45CONFIG_NR_CPUS=32 46CONFIG_NR_CPUS=32
@@ -60,6 +61,7 @@ CONFIG_LOCALVERSION_AUTO=y
60CONFIG_SWAP=y 61CONFIG_SWAP=y
61CONFIG_SYSVIPC=y 62CONFIG_SYSVIPC=y
62# CONFIG_IPC_NS is not set 63# CONFIG_IPC_NS is not set
64CONFIG_SYSVIPC_SYSCTL=y
63CONFIG_POSIX_MQUEUE=y 65CONFIG_POSIX_MQUEUE=y
64# CONFIG_BSD_PROCESS_ACCT is not set 66# CONFIG_BSD_PROCESS_ACCT is not set
65# CONFIG_TASKSTATS is not set 67# CONFIG_TASKSTATS is not set
@@ -68,9 +70,11 @@ CONFIG_AUDIT=y
68CONFIG_AUDITSYSCALL=y 70CONFIG_AUDITSYSCALL=y
69CONFIG_IKCONFIG=y 71CONFIG_IKCONFIG=y
70CONFIG_IKCONFIG_PROC=y 72CONFIG_IKCONFIG_PROC=y
73CONFIG_LOG_BUF_SHIFT=17
71# CONFIG_CPUSETS is not set 74# CONFIG_CPUSETS is not set
72CONFIG_SYSFS_DEPRECATED=y 75CONFIG_SYSFS_DEPRECATED=y
73# CONFIG_RELAY is not set 76# CONFIG_RELAY is not set
77CONFIG_BLK_DEV_INITRD=y
74CONFIG_INITRAMFS_SOURCE="" 78CONFIG_INITRAMFS_SOURCE=""
75CONFIG_CC_OPTIMIZE_FOR_SIZE=y 79CONFIG_CC_OPTIMIZE_FOR_SIZE=y
76CONFIG_SYSCTL=y 80CONFIG_SYSCTL=y
@@ -85,14 +89,19 @@ CONFIG_BUG=y
85CONFIG_ELF_CORE=y 89CONFIG_ELF_CORE=y
86CONFIG_BASE_FULL=y 90CONFIG_BASE_FULL=y
87CONFIG_FUTEX=y 91CONFIG_FUTEX=y
92CONFIG_ANON_INODES=y
88CONFIG_EPOLL=y 93CONFIG_EPOLL=y
94CONFIG_SIGNALFD=y
95CONFIG_TIMERFD=y
96CONFIG_EVENTFD=y
89CONFIG_SHMEM=y 97CONFIG_SHMEM=y
90CONFIG_SLAB=y
91CONFIG_VM_EVENT_COUNTERS=y 98CONFIG_VM_EVENT_COUNTERS=y
99CONFIG_SLAB=y
100# CONFIG_SLUB is not set
101# CONFIG_SLOB is not set
92CONFIG_RT_MUTEXES=y 102CONFIG_RT_MUTEXES=y
93# CONFIG_TINY_SHMEM is not set 103# CONFIG_TINY_SHMEM is not set
94CONFIG_BASE_SMALL=0 104CONFIG_BASE_SMALL=0
95# CONFIG_SLOB is not set
96 105
97# 106#
98# Loadable module support 107# Loadable module support
@@ -131,15 +140,30 @@ CONFIG_PPC_MULTIPLATFORM=y
131# CONFIG_EMBEDDED6xx is not set 140# CONFIG_EMBEDDED6xx is not set
132# CONFIG_APUS is not set 141# CONFIG_APUS is not set
133# CONFIG_PPC_PSERIES is not set 142# CONFIG_PPC_PSERIES is not set
143CONFIG_LPARCFG=y
134CONFIG_PPC_ISERIES=y 144CONFIG_PPC_ISERIES=y
145
146#
147# iSeries device drivers
148#
149CONFIG_VIODASD=y
150CONFIG_VIOCD=m
151CONFIG_VIOTAPE=m
152CONFIG_VIOPATH=y
135# CONFIG_PPC_MPC52xx is not set 153# CONFIG_PPC_MPC52xx is not set
154# CONFIG_PPC_MPC5200 is not set
136# CONFIG_PPC_PMAC is not set 155# CONFIG_PPC_PMAC is not set
137# CONFIG_PPC_MAPLE is not set 156# CONFIG_PPC_MAPLE is not set
138# CONFIG_PPC_PASEMI is not set 157# CONFIG_PPC_PASEMI is not set
158# CONFIG_PPC_CELLEB is not set
159# CONFIG_PPC_PS3 is not set
139# CONFIG_PPC_CELL is not set 160# CONFIG_PPC_CELL is not set
140# CONFIG_PPC_CELL_NATIVE is not set 161# CONFIG_PPC_CELL_NATIVE is not set
141# CONFIG_PPC_IBM_CELL_BLADE is not set 162# CONFIG_PPC_IBM_CELL_BLADE is not set
142# CONFIG_PPC_PS3 is not set 163# CONFIG_PQ2ADS is not set
164# CONFIG_MPIC is not set
165# CONFIG_MPIC_WEIRD is not set
166# CONFIG_PPC_I8259 is not set
143# CONFIG_U3_DART is not set 167# CONFIG_U3_DART is not set
144# CONFIG_PPC_RTAS is not set 168# CONFIG_PPC_RTAS is not set
145# CONFIG_MMIO_NVRAM is not set 169# CONFIG_MMIO_NVRAM is not set
@@ -149,8 +173,7 @@ CONFIG_IBMVIO=y
149CONFIG_PPC_INDIRECT_IO=y 173CONFIG_PPC_INDIRECT_IO=y
150CONFIG_GENERIC_IOMAP=y 174CONFIG_GENERIC_IOMAP=y
151# CONFIG_CPU_FREQ is not set 175# CONFIG_CPU_FREQ is not set
152# CONFIG_WANT_EARLY_SERIAL is not set 176# CONFIG_CPM2 is not set
153# CONFIG_MPIC is not set
154 177
155# 178#
156# Kernel options 179# Kernel options
@@ -172,7 +195,6 @@ CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
172# CONFIG_KEXEC is not set 195# CONFIG_KEXEC is not set
173# CONFIG_CRASH_DUMP is not set 196# CONFIG_CRASH_DUMP is not set
174CONFIG_IRQ_ALL_CPUS=y 197CONFIG_IRQ_ALL_CPUS=y
175CONFIG_LPARCFG=y
176# CONFIG_NUMA is not set 198# CONFIG_NUMA is not set
177CONFIG_ARCH_SELECT_MEMORY_MODEL=y 199CONFIG_ARCH_SELECT_MEMORY_MODEL=y
178CONFIG_ARCH_FLATMEM_ENABLE=y 200CONFIG_ARCH_FLATMEM_ENABLE=y
@@ -187,34 +209,34 @@ CONFIG_FLAT_NODE_MEM_MAP=y
187# CONFIG_SPARSEMEM_STATIC is not set 209# CONFIG_SPARSEMEM_STATIC is not set
188CONFIG_SPLIT_PTLOCK_CPUS=4 210CONFIG_SPLIT_PTLOCK_CPUS=4
189CONFIG_RESOURCES_64BIT=y 211CONFIG_RESOURCES_64BIT=y
212CONFIG_ZONE_DMA_FLAG=1
213# CONFIG_PPC_HAS_HASH_64K is not set
190# CONFIG_PPC_64K_PAGES is not set 214# CONFIG_PPC_64K_PAGES is not set
191# CONFIG_SCHED_SMT is not set 215# CONFIG_SCHED_SMT is not set
192CONFIG_PROC_DEVICETREE=y 216CONFIG_PROC_DEVICETREE=y
193# CONFIG_CMDLINE_BOOL is not set 217# CONFIG_CMDLINE_BOOL is not set
194# CONFIG_PM is not set 218# CONFIG_PM is not set
195CONFIG_SECCOMP=y 219CONFIG_SECCOMP=y
220# CONFIG_WANT_DEVICE_TREE is not set
196CONFIG_ISA_DMA_API=y 221CONFIG_ISA_DMA_API=y
197 222
198# 223#
199# Bus options 224# Bus options
200# 225#
226CONFIG_ZONE_DMA=y
201CONFIG_GENERIC_ISA_DMA=y 227CONFIG_GENERIC_ISA_DMA=y
202# CONFIG_MPIC_WEIRD is not set
203# CONFIG_PPC_I8259 is not set
204# CONFIG_PPC_INDIRECT_PCI is not set 228# CONFIG_PPC_INDIRECT_PCI is not set
205CONFIG_PCI=y 229CONFIG_PCI=y
206CONFIG_PCI_DOMAINS=y 230CONFIG_PCI_DOMAINS=y
207# CONFIG_PCIEPORTBUS is not set 231# CONFIG_PCIEPORTBUS is not set
232CONFIG_ARCH_SUPPORTS_MSI=y
233# CONFIG_PCI_MSI is not set
208# CONFIG_PCI_DEBUG is not set 234# CONFIG_PCI_DEBUG is not set
209 235
210# 236#
211# PCCARD (PCMCIA/CardBus) support 237# PCCARD (PCMCIA/CardBus) support
212# 238#
213# CONFIG_PCCARD is not set 239# CONFIG_PCCARD is not set
214
215#
216# PCI Hotplug Support
217#
218# CONFIG_HOTPLUG_PCI is not set 240# CONFIG_HOTPLUG_PCI is not set
219CONFIG_KERNEL_START=0xc000000000000000 241CONFIG_KERNEL_START=0xc000000000000000
220 242
@@ -226,14 +248,15 @@ CONFIG_NET=y
226# 248#
227# Networking options 249# Networking options
228# 250#
229# CONFIG_NETDEBUG is not set
230CONFIG_PACKET=y 251CONFIG_PACKET=y
231# CONFIG_PACKET_MMAP is not set 252# CONFIG_PACKET_MMAP is not set
232CONFIG_UNIX=y 253CONFIG_UNIX=y
233CONFIG_XFRM=y 254CONFIG_XFRM=y
234CONFIG_XFRM_USER=m 255CONFIG_XFRM_USER=m
235CONFIG_XFRM_SUB_POLICY=y 256CONFIG_XFRM_SUB_POLICY=y
257# CONFIG_XFRM_MIGRATE is not set
236CONFIG_NET_KEY=m 258CONFIG_NET_KEY=m
259# CONFIG_NET_KEY_MIGRATE is not set
237CONFIG_INET=y 260CONFIG_INET=y
238CONFIG_IP_MULTICAST=y 261CONFIG_IP_MULTICAST=y
239# CONFIG_IP_ADVANCED_ROUTER is not set 262# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -275,8 +298,6 @@ CONFIG_NETFILTER=y
275# 298#
276# CONFIG_NETFILTER_NETLINK is not set 299# CONFIG_NETFILTER_NETLINK is not set
277CONFIG_NF_CONNTRACK_ENABLED=m 300CONFIG_NF_CONNTRACK_ENABLED=m
278CONFIG_NF_CONNTRACK_SUPPORT=y
279# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
280CONFIG_NF_CONNTRACK=m 301CONFIG_NF_CONNTRACK=m
281# CONFIG_NF_CT_ACCT is not set 302# CONFIG_NF_CT_ACCT is not set
282CONFIG_NF_CONNTRACK_MARK=y 303CONFIG_NF_CONNTRACK_MARK=y
@@ -288,6 +309,7 @@ CONFIG_NF_CONNTRACK_FTP=m
288CONFIG_NF_CONNTRACK_IRC=m 309CONFIG_NF_CONNTRACK_IRC=m
289# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set 310# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
290# CONFIG_NF_CONNTRACK_PPTP is not set 311# CONFIG_NF_CONNTRACK_PPTP is not set
312# CONFIG_NF_CONNTRACK_SANE is not set
291# CONFIG_NF_CONNTRACK_SIP is not set 313# CONFIG_NF_CONNTRACK_SIP is not set
292CONFIG_NF_CONNTRACK_TFTP=m 314CONFIG_NF_CONNTRACK_TFTP=m
293CONFIG_NETFILTER_XTABLES=m 315CONFIG_NETFILTER_XTABLES=m
@@ -298,7 +320,9 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m
298CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m 320CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
299# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set 321# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
300# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set 322# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
323# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
301CONFIG_NETFILTER_XT_MATCH_COMMENT=m 324CONFIG_NETFILTER_XT_MATCH_COMMENT=m
325# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set
302CONFIG_NETFILTER_XT_MATCH_CONNMARK=m 326CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
303CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m 327CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
304# CONFIG_NETFILTER_XT_MATCH_DCCP is not set 328# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
@@ -340,7 +364,6 @@ CONFIG_IP_NF_FILTER=m
340CONFIG_IP_NF_TARGET_REJECT=m 364CONFIG_IP_NF_TARGET_REJECT=m
341CONFIG_IP_NF_TARGET_LOG=m 365CONFIG_IP_NF_TARGET_LOG=m
342CONFIG_IP_NF_TARGET_ULOG=m 366CONFIG_IP_NF_TARGET_ULOG=m
343CONFIG_IP_NF_TARGET_TCPMSS=m
344CONFIG_NF_NAT=m 367CONFIG_NF_NAT=m
345CONFIG_NF_NAT_NEEDED=y 368CONFIG_NF_NAT_NEEDED=y
346CONFIG_IP_NF_TARGET_MASQUERADE=m 369CONFIG_IP_NF_TARGET_MASQUERADE=m
@@ -373,7 +396,12 @@ CONFIG_IP_NF_ARP_MANGLE=m
373# 396#
374# SCTP Configuration (EXPERIMENTAL) 397# SCTP Configuration (EXPERIMENTAL)
375# 398#
376# CONFIG_IP_SCTP is not set 399CONFIG_IP_SCTP=m
400# CONFIG_SCTP_DBG_MSG is not set
401# CONFIG_SCTP_DBG_OBJCNT is not set
402# CONFIG_SCTP_HMAC_NONE is not set
403# CONFIG_SCTP_HMAC_SHA1 is not set
404CONFIG_SCTP_HMAC_MD5=y
377 405
378# 406#
379# TIPC Configuration (EXPERIMENTAL) 407# TIPC Configuration (EXPERIMENTAL)
@@ -405,7 +433,16 @@ CONFIG_NET_CLS_ROUTE=y
405# CONFIG_HAMRADIO is not set 433# CONFIG_HAMRADIO is not set
406# CONFIG_IRDA is not set 434# CONFIG_IRDA is not set
407# CONFIG_BT is not set 435# CONFIG_BT is not set
436# CONFIG_AF_RXRPC is not set
437
438#
439# Wireless
440#
441# CONFIG_CFG80211 is not set
442# CONFIG_WIRELESS_EXT is not set
443# CONFIG_MAC80211 is not set
408# CONFIG_IEEE80211 is not set 444# CONFIG_IEEE80211 is not set
445# CONFIG_RFKILL is not set
409 446
410# 447#
411# Device Drivers 448# Device Drivers
@@ -418,16 +455,13 @@ CONFIG_STANDALONE=y
418CONFIG_PREVENT_FIRMWARE_BUILD=y 455CONFIG_PREVENT_FIRMWARE_BUILD=y
419CONFIG_FW_LOADER=m 456CONFIG_FW_LOADER=m
420# CONFIG_DEBUG_DRIVER is not set 457# CONFIG_DEBUG_DRIVER is not set
458# CONFIG_DEBUG_DEVRES is not set
421# CONFIG_SYS_HYPERVISOR is not set 459# CONFIG_SYS_HYPERVISOR is not set
422 460
423# 461#
424# Connector - unified userspace <-> kernelspace linker 462# Connector - unified userspace <-> kernelspace linker
425# 463#
426# CONFIG_CONNECTOR is not set 464# CONFIG_CONNECTOR is not set
427
428#
429# Memory Technology Devices (MTD)
430#
431# CONFIG_MTD is not set 465# CONFIG_MTD is not set
432 466
433# 467#
@@ -438,6 +472,7 @@ CONFIG_FW_LOADER=m
438# 472#
439# Plug and Play support 473# Plug and Play support
440# 474#
475# CONFIG_PNPACPI is not set
441 476
442# 477#
443# Block devices 478# Block devices
@@ -456,15 +491,16 @@ CONFIG_BLK_DEV_RAM=y
456CONFIG_BLK_DEV_RAM_COUNT=16 491CONFIG_BLK_DEV_RAM_COUNT=16
457CONFIG_BLK_DEV_RAM_SIZE=65536 492CONFIG_BLK_DEV_RAM_SIZE=65536
458CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 493CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
459CONFIG_BLK_DEV_INITRD=y
460# CONFIG_CDROM_PKTCDVD is not set 494# CONFIG_CDROM_PKTCDVD is not set
461# CONFIG_ATA_OVER_ETH is not set 495# CONFIG_ATA_OVER_ETH is not set
462 496
463# 497#
464# Misc devices 498# Misc devices
465# 499#
500# CONFIG_PHANTOM is not set
466# CONFIG_SGI_IOC4 is not set 501# CONFIG_SGI_IOC4 is not set
467# CONFIG_TIFM_CORE is not set 502# CONFIG_TIFM_CORE is not set
503# CONFIG_BLINK is not set
468 504
469# 505#
470# ATA/ATAPI/MFM/RLL support 506# ATA/ATAPI/MFM/RLL support
@@ -498,6 +534,7 @@ CONFIG_SCSI_MULTI_LUN=y
498CONFIG_SCSI_CONSTANTS=y 534CONFIG_SCSI_CONSTANTS=y
499# CONFIG_SCSI_LOGGING is not set 535# CONFIG_SCSI_LOGGING is not set
500# CONFIG_SCSI_SCAN_ASYNC is not set 536# CONFIG_SCSI_SCAN_ASYNC is not set
537CONFIG_SCSI_WAIT_SCAN=m
501 538
502# 539#
503# SCSI Transports 540# SCSI Transports
@@ -544,11 +581,8 @@ CONFIG_SCSI_IBMVSCSI=m
544# CONFIG_SCSI_DC395x is not set 581# CONFIG_SCSI_DC395x is not set
545# CONFIG_SCSI_DC390T is not set 582# CONFIG_SCSI_DC390T is not set
546# CONFIG_SCSI_DEBUG is not set 583# CONFIG_SCSI_DEBUG is not set
584# CONFIG_SCSI_ESP_CORE is not set
547# CONFIG_SCSI_SRP is not set 585# CONFIG_SCSI_SRP is not set
548
549#
550# Serial ATA (prod) and Parallel ATA (experimental) drivers
551#
552# CONFIG_ATA is not set 586# CONFIG_ATA is not set
553 587
554# 588#
@@ -570,6 +604,7 @@ CONFIG_DM_SNAPSHOT=m
570CONFIG_DM_MIRROR=m 604CONFIG_DM_MIRROR=m
571CONFIG_DM_ZERO=m 605CONFIG_DM_ZERO=m
572# CONFIG_DM_MULTIPATH is not set 606# CONFIG_DM_MULTIPATH is not set
607# CONFIG_DM_DELAY is not set
573 608
574# 609#
575# Fusion MPT device support 610# Fusion MPT device support
@@ -582,18 +617,14 @@ CONFIG_DM_ZERO=m
582# 617#
583# IEEE 1394 (FireWire) support 618# IEEE 1394 (FireWire) support
584# 619#
620# CONFIG_FIREWIRE is not set
585# CONFIG_IEEE1394 is not set 621# CONFIG_IEEE1394 is not set
586 622
587# 623#
588# I2O device support 624# I2O device support
589# 625#
590# CONFIG_I2O is not set 626# CONFIG_I2O is not set
591 627# CONFIG_MACINTOSH_DRIVERS is not set
592#
593# Macintosh device drivers
594#
595# CONFIG_MAC_EMUMOUSEBTN is not set
596# CONFIG_WINDFARM is not set
597 628
598# 629#
599# Network device support 630# Network device support
@@ -608,10 +639,6 @@ CONFIG_TUN=m
608# ARCnet devices 639# ARCnet devices
609# 640#
610# CONFIG_ARCNET is not set 641# CONFIG_ARCNET is not set
611
612#
613# PHY device support
614#
615# CONFIG_PHYLIB is not set 642# CONFIG_PHYLIB is not set
616 643
617# 644#
@@ -648,10 +675,8 @@ CONFIG_E100=y
648# CONFIG_EPIC100 is not set 675# CONFIG_EPIC100 is not set
649# CONFIG_SUNDANCE is not set 676# CONFIG_SUNDANCE is not set
650# CONFIG_VIA_RHINE is not set 677# CONFIG_VIA_RHINE is not set
651 678# CONFIG_SC92031 is not set
652# 679CONFIG_NETDEV_1000=y
653# Ethernet (1000 Mbit)
654#
655CONFIG_ACENIC=m 680CONFIG_ACENIC=m
656# CONFIG_ACENIC_OMIT_TIGON_I is not set 681# CONFIG_ACENIC_OMIT_TIGON_I is not set
657# CONFIG_DL2K is not set 682# CONFIG_DL2K is not set
@@ -670,15 +695,17 @@ CONFIG_E1000=m
670# CONFIG_TIGON3 is not set 695# CONFIG_TIGON3 is not set
671# CONFIG_BNX2 is not set 696# CONFIG_BNX2 is not set
672# CONFIG_QLA3XXX is not set 697# CONFIG_QLA3XXX is not set
673 698# CONFIG_ATL1 is not set
674# 699CONFIG_NETDEV_10000=y
675# Ethernet (10000 Mbit)
676#
677# CONFIG_CHELSIO_T1 is not set 700# CONFIG_CHELSIO_T1 is not set
701# CONFIG_CHELSIO_T3 is not set
678# CONFIG_IXGB is not set 702# CONFIG_IXGB is not set
679# CONFIG_S2IO is not set 703# CONFIG_S2IO is not set
680# CONFIG_MYRI10GE is not set 704# CONFIG_MYRI10GE is not set
681# CONFIG_NETXEN_NIC is not set 705# CONFIG_NETXEN_NIC is not set
706# CONFIG_PASEMI_MAC is not set
707# CONFIG_MLX4_CORE is not set
708CONFIG_MLX4_DEBUG=y
682 709
683# 710#
684# Token Ring devices 711# Token Ring devices
@@ -689,13 +716,10 @@ CONFIG_IBMOL=y
689# CONFIG_TMS380TR is not set 716# CONFIG_TMS380TR is not set
690 717
691# 718#
692# Wireless LAN (non-hamradio) 719# Wireless LAN
693#
694# CONFIG_NET_RADIO is not set
695
696#
697# Wan interfaces
698# 720#
721# CONFIG_WLAN_PRE80211 is not set
722# CONFIG_WLAN_80211 is not set
699# CONFIG_WAN is not set 723# CONFIG_WAN is not set
700CONFIG_ISERIES_VETH=y 724CONFIG_ISERIES_VETH=y
701# CONFIG_FDDI is not set 725# CONFIG_FDDI is not set
@@ -715,7 +739,6 @@ CONFIG_SLHC=m
715# CONFIG_SHAPER is not set 739# CONFIG_SHAPER is not set
716CONFIG_NETCONSOLE=y 740CONFIG_NETCONSOLE=y
717CONFIG_NETPOLL=y 741CONFIG_NETPOLL=y
718CONFIG_NETPOLL_RX=y
719CONFIG_NETPOLL_TRAP=y 742CONFIG_NETPOLL_TRAP=y
720CONFIG_NET_POLL_CONTROLLER=y 743CONFIG_NET_POLL_CONTROLLER=y
721 744
@@ -753,6 +776,7 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
753# CONFIG_INPUT_KEYBOARD is not set 776# CONFIG_INPUT_KEYBOARD is not set
754# CONFIG_INPUT_MOUSE is not set 777# CONFIG_INPUT_MOUSE is not set
755# CONFIG_INPUT_JOYSTICK is not set 778# CONFIG_INPUT_JOYSTICK is not set
779# CONFIG_INPUT_TABLET is not set
756# CONFIG_INPUT_TOUCHSCREEN is not set 780# CONFIG_INPUT_TOUCHSCREEN is not set
757# CONFIG_INPUT_MISC is not set 781# CONFIG_INPUT_MISC is not set
758 782
@@ -765,6 +789,10 @@ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
765# 789#
766# Character devices 790# Character devices
767# 791#
792CONFIG_VT=y
793CONFIG_VT_CONSOLE=y
794CONFIG_HW_CONSOLE=y
795# CONFIG_VT_HW_CONSOLE_BINDING is not set
768# CONFIG_SERIAL_NONSTANDARD is not set 796# CONFIG_SERIAL_NONSTANDARD is not set
769 797
770# 798#
@@ -781,20 +809,17 @@ CONFIG_SERIAL_ICOM=m
781CONFIG_UNIX98_PTYS=y 809CONFIG_UNIX98_PTYS=y
782CONFIG_LEGACY_PTYS=y 810CONFIG_LEGACY_PTYS=y
783CONFIG_LEGACY_PTY_COUNT=256 811CONFIG_LEGACY_PTY_COUNT=256
812CONFIG_HVC_DRIVER=y
813CONFIG_HVC_ISERIES=y
784 814
785# 815#
786# IPMI 816# IPMI
787# 817#
788# CONFIG_IPMI_HANDLER is not set 818# CONFIG_IPMI_HANDLER is not set
789
790#
791# Watchdog Cards
792#
793# CONFIG_WATCHDOG is not set 819# CONFIG_WATCHDOG is not set
794# CONFIG_HW_RANDOM is not set 820# CONFIG_HW_RANDOM is not set
795CONFIG_GEN_RTC=y 821CONFIG_GEN_RTC=y
796# CONFIG_GEN_RTC_X is not set 822# CONFIG_GEN_RTC_X is not set
797# CONFIG_DTLK is not set
798# CONFIG_R3964 is not set 823# CONFIG_R3964 is not set
799# CONFIG_APPLICOM is not set 824# CONFIG_APPLICOM is not set
800# CONFIG_AGP is not set 825# CONFIG_AGP is not set
@@ -807,10 +832,7 @@ CONFIG_MAX_RAW_DEVS=256
807# TPM devices 832# TPM devices
808# 833#
809# CONFIG_TCG_TPM is not set 834# CONFIG_TCG_TPM is not set
810 835CONFIG_DEVPORT=y
811#
812# I2C support
813#
814# CONFIG_I2C is not set 836# CONFIG_I2C is not set
815 837
816# 838#
@@ -823,30 +845,39 @@ CONFIG_MAX_RAW_DEVS=256
823# Dallas's 1-wire bus 845# Dallas's 1-wire bus
824# 846#
825# CONFIG_W1 is not set 847# CONFIG_W1 is not set
848# CONFIG_HWMON is not set
826 849
827# 850#
828# Hardware Monitoring support 851# Multifunction device drivers
829# 852#
830# CONFIG_HWMON is not set 853# CONFIG_MFD_SM501 is not set
831# CONFIG_HWMON_VID is not set
832 854
833# 855#
834# Multimedia devices 856# Multimedia devices
835# 857#
836# CONFIG_VIDEO_DEV is not set 858# CONFIG_VIDEO_DEV is not set
859# CONFIG_DVB_CORE is not set
860# CONFIG_DAB is not set
837 861
838# 862#
839# Digital Video Broadcasting Devices 863# Graphics support
840# 864#
841# CONFIG_DVB is not set 865# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
842 866
843# 867#
844# Graphics support 868# Display device support
845# 869#
846CONFIG_FIRMWARE_EDID=y 870# CONFIG_DISPLAY_SUPPORT is not set
871# CONFIG_VGASTATE is not set
847# CONFIG_FB is not set 872# CONFIG_FB is not set
848# CONFIG_FB_IBM_GXT4500 is not set 873# CONFIG_FB_IBM_GXT4500 is not set
849# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 874
875#
876# Console display driver support
877#
878CONFIG_VGA_CONSOLE=y
879# CONFIG_VGACON_SOFT_SCROLLBACK is not set
880CONFIG_DUMMY_CONSOLE=y
850 881
851# 882#
852# Sound 883# Sound
@@ -874,10 +905,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y
874# USB Gadget Support 905# USB Gadget Support
875# 906#
876# CONFIG_USB_GADGET is not set 907# CONFIG_USB_GADGET is not set
877
878#
879# MMC/SD Card support
880#
881# CONFIG_MMC is not set 908# CONFIG_MMC is not set
882 909
883# 910#
@@ -921,10 +948,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y
921# 948#
922 949
923# 950#
924# Virtualization
925#
926
927#
928# File systems 951# File systems
929# 952#
930CONFIG_EXT2_FS=y 953CONFIG_EXT2_FS=y
@@ -979,7 +1002,6 @@ CONFIG_GENERIC_ACL=y
979CONFIG_ISO9660_FS=y 1002CONFIG_ISO9660_FS=y
980CONFIG_JOLIET=y 1003CONFIG_JOLIET=y
981CONFIG_ZISOFS=y 1004CONFIG_ZISOFS=y
982CONFIG_ZISOFS_FS=y
983CONFIG_UDF_FS=m 1005CONFIG_UDF_FS=m
984CONFIG_UDF_NLS=y 1006CONFIG_UDF_NLS=y
985 1007
@@ -1045,6 +1067,7 @@ CONFIG_NFS_ACL_SUPPORT=y
1045CONFIG_NFS_COMMON=y 1067CONFIG_NFS_COMMON=y
1046CONFIG_SUNRPC=y 1068CONFIG_SUNRPC=y
1047CONFIG_SUNRPC_GSS=y 1069CONFIG_SUNRPC_GSS=y
1070# CONFIG_SUNRPC_BIND34 is not set
1048CONFIG_RPCSEC_GSS_KRB5=y 1071CONFIG_RPCSEC_GSS_KRB5=y
1049CONFIG_RPCSEC_GSS_SPKM3=m 1072CONFIG_RPCSEC_GSS_SPKM3=m
1050# CONFIG_SMB_FS is not set 1073# CONFIG_SMB_FS is not set
@@ -1114,18 +1137,9 @@ CONFIG_NLS_ISO8859_1=y
1114# Distributed Lock Manager 1137# Distributed Lock Manager
1115# 1138#
1116CONFIG_DLM=m 1139CONFIG_DLM=m
1117CONFIG_DLM_TCP=y
1118# CONFIG_DLM_SCTP is not set
1119# CONFIG_DLM_DEBUG is not set 1140# CONFIG_DLM_DEBUG is not set
1120 1141# CONFIG_UCC_SLOW is not set
1121# 1142# CONFIG_UCC_FAST is not set
1122# iSeries device drivers
1123#
1124CONFIG_VIOCONS=y
1125CONFIG_VIODASD=y
1126CONFIG_VIOCD=m
1127CONFIG_VIOTAPE=m
1128CONFIG_VIOPATH=y
1129 1143
1130# 1144#
1131# Library routines 1145# Library routines
@@ -1133,6 +1147,7 @@ CONFIG_VIOPATH=y
1133CONFIG_BITREVERSE=y 1147CONFIG_BITREVERSE=y
1134CONFIG_CRC_CCITT=m 1148CONFIG_CRC_CCITT=m
1135# CONFIG_CRC16 is not set 1149# CONFIG_CRC16 is not set
1150# CONFIG_CRC_ITU_T is not set
1136CONFIG_CRC32=y 1151CONFIG_CRC32=y
1137CONFIG_LIBCRC32C=m 1152CONFIG_LIBCRC32C=m
1138CONFIG_ZLIB_INFLATE=y 1153CONFIG_ZLIB_INFLATE=y
@@ -1142,7 +1157,9 @@ CONFIG_TEXTSEARCH_KMP=m
1142CONFIG_TEXTSEARCH_BM=m 1157CONFIG_TEXTSEARCH_BM=m
1143CONFIG_TEXTSEARCH_FSM=m 1158CONFIG_TEXTSEARCH_FSM=m
1144CONFIG_PLIST=y 1159CONFIG_PLIST=y
1145CONFIG_IOMAP_COPY=y 1160CONFIG_HAS_IOMEM=y
1161CONFIG_HAS_IOPORT=y
1162CONFIG_HAS_DMA=y
1146 1163
1147# 1164#
1148# Instrumentation Support 1165# Instrumentation Support
@@ -1160,15 +1177,15 @@ CONFIG_MAGIC_SYSRQ=y
1160CONFIG_DEBUG_FS=y 1177CONFIG_DEBUG_FS=y
1161# CONFIG_HEADERS_CHECK is not set 1178# CONFIG_HEADERS_CHECK is not set
1162CONFIG_DEBUG_KERNEL=y 1179CONFIG_DEBUG_KERNEL=y
1163CONFIG_LOG_BUF_SHIFT=17 1180# CONFIG_DEBUG_SHIRQ is not set
1164CONFIG_DETECT_SOFTLOCKUP=y 1181CONFIG_DETECT_SOFTLOCKUP=y
1165# CONFIG_SCHEDSTATS is not set 1182# CONFIG_SCHEDSTATS is not set
1183# CONFIG_TIMER_STATS is not set
1166# CONFIG_DEBUG_SLAB is not set 1184# CONFIG_DEBUG_SLAB is not set
1167# CONFIG_DEBUG_RT_MUTEXES is not set 1185# CONFIG_DEBUG_RT_MUTEXES is not set
1168# CONFIG_RT_MUTEX_TESTER is not set 1186# CONFIG_RT_MUTEX_TESTER is not set
1169# CONFIG_DEBUG_SPINLOCK is not set 1187# CONFIG_DEBUG_SPINLOCK is not set
1170# CONFIG_DEBUG_MUTEXES is not set 1188# CONFIG_DEBUG_MUTEXES is not set
1171# CONFIG_DEBUG_RWSEMS is not set
1172# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1189# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1173# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1190# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1174# CONFIG_DEBUG_KOBJECT is not set 1191# CONFIG_DEBUG_KOBJECT is not set
@@ -1178,8 +1195,10 @@ CONFIG_DEBUG_BUGVERBOSE=y
1178# CONFIG_DEBUG_LIST is not set 1195# CONFIG_DEBUG_LIST is not set
1179# CONFIG_FORCED_INLINING is not set 1196# CONFIG_FORCED_INLINING is not set
1180# CONFIG_RCU_TORTURE_TEST is not set 1197# CONFIG_RCU_TORTURE_TEST is not set
1198# CONFIG_FAULT_INJECTION is not set
1181CONFIG_DEBUG_STACKOVERFLOW=y 1199CONFIG_DEBUG_STACKOVERFLOW=y
1182CONFIG_DEBUG_STACK_USAGE=y 1200CONFIG_DEBUG_STACK_USAGE=y
1201# CONFIG_DEBUG_PAGEALLOC is not set
1183# CONFIG_DEBUGGER is not set 1202# CONFIG_DEBUGGER is not set
1184CONFIG_IRQSTACKS=y 1203CONFIG_IRQSTACKS=y
1185# CONFIG_BOOTX_TEXT is not set 1204# CONFIG_BOOTX_TEXT is not set
@@ -1212,8 +1231,11 @@ CONFIG_CRYPTO_TGR192=m
1212# CONFIG_CRYPTO_GF128MUL is not set 1231# CONFIG_CRYPTO_GF128MUL is not set
1213CONFIG_CRYPTO_ECB=m 1232CONFIG_CRYPTO_ECB=m
1214CONFIG_CRYPTO_CBC=y 1233CONFIG_CRYPTO_CBC=y
1234CONFIG_CRYPTO_PCBC=m
1215# CONFIG_CRYPTO_LRW is not set 1235# CONFIG_CRYPTO_LRW is not set
1236# CONFIG_CRYPTO_CRYPTD is not set
1216CONFIG_CRYPTO_DES=y 1237CONFIG_CRYPTO_DES=y
1238# CONFIG_CRYPTO_FCRYPT is not set
1217CONFIG_CRYPTO_BLOWFISH=m 1239CONFIG_CRYPTO_BLOWFISH=m
1218CONFIG_CRYPTO_TWOFISH=m 1240CONFIG_CRYPTO_TWOFISH=m
1219CONFIG_CRYPTO_TWOFISH_COMMON=m 1241CONFIG_CRYPTO_TWOFISH_COMMON=m
@@ -1228,6 +1250,7 @@ CONFIG_CRYPTO_ANUBIS=m
1228CONFIG_CRYPTO_DEFLATE=m 1250CONFIG_CRYPTO_DEFLATE=m
1229CONFIG_CRYPTO_MICHAEL_MIC=m 1251CONFIG_CRYPTO_MICHAEL_MIC=m
1230CONFIG_CRYPTO_CRC32C=m 1252CONFIG_CRYPTO_CRC32C=m
1253# CONFIG_CRYPTO_CAMELLIA is not set
1231CONFIG_CRYPTO_TEST=m 1254CONFIG_CRYPTO_TEST=m
1232 1255
1233# 1256#
diff --git a/arch/powerpc/configs/pasemi_defconfig b/arch/powerpc/configs/pasemi_defconfig
index 97a57e996663..0507c8f7bfbc 100644
--- a/arch/powerpc/configs/pasemi_defconfig
+++ b/arch/powerpc/configs/pasemi_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.20-rc6 3# Linux kernel version: 2.6.21
4# Thu Feb 1 22:54:15 2007 4# Mon May 14 12:55:04 2007
5# 5#
6CONFIG_PPC64=y 6CONFIG_PPC64=y
7CONFIG_64BIT=y 7CONFIG_64BIT=y
@@ -23,7 +23,7 @@ CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
23CONFIG_ARCH_MAY_HAVE_PC_FDC=y 23CONFIG_ARCH_MAY_HAVE_PC_FDC=y
24CONFIG_PPC_OF=y 24CONFIG_PPC_OF=y
25CONFIG_PPC_UDBG_16550=y 25CONFIG_PPC_UDBG_16550=y
26CONFIG_GENERIC_TBSYNC=y 26# CONFIG_GENERIC_TBSYNC is not set
27CONFIG_AUDIT_ARCH=y 27CONFIG_AUDIT_ARCH=y
28CONFIG_GENERIC_BUG=y 28CONFIG_GENERIC_BUG=y
29# CONFIG_DEFAULT_UIMAGE is not set 29# CONFIG_DEFAULT_UIMAGE is not set
@@ -39,6 +39,7 @@ CONFIG_PPC_FPU=y
39# CONFIG_PPC_OF_PLATFORM_PCI is not set 39# CONFIG_PPC_OF_PLATFORM_PCI is not set
40CONFIG_ALTIVEC=y 40CONFIG_ALTIVEC=y
41CONFIG_PPC_STD_MMU=y 41CONFIG_PPC_STD_MMU=y
42CONFIG_PPC_MM_SLICES=y
42# CONFIG_VIRT_CPU_ACCOUNTING is not set 43# CONFIG_VIRT_CPU_ACCOUNTING is not set
43CONFIG_SMP=y 44CONFIG_SMP=y
44CONFIG_NR_CPUS=2 45CONFIG_NR_CPUS=2
@@ -59,15 +60,18 @@ CONFIG_LOCALVERSION_AUTO=y
59CONFIG_SWAP=y 60CONFIG_SWAP=y
60CONFIG_SYSVIPC=y 61CONFIG_SYSVIPC=y
61# CONFIG_IPC_NS is not set 62# CONFIG_IPC_NS is not set
63CONFIG_SYSVIPC_SYSCTL=y
62# CONFIG_POSIX_MQUEUE is not set 64# CONFIG_POSIX_MQUEUE is not set
63# CONFIG_BSD_PROCESS_ACCT is not set 65# CONFIG_BSD_PROCESS_ACCT is not set
64# CONFIG_TASKSTATS is not set 66# CONFIG_TASKSTATS is not set
65# CONFIG_UTS_NS is not set 67# CONFIG_UTS_NS is not set
66# CONFIG_AUDIT is not set 68# CONFIG_AUDIT is not set
67# CONFIG_IKCONFIG is not set 69# CONFIG_IKCONFIG is not set
70CONFIG_LOG_BUF_SHIFT=17
68# CONFIG_CPUSETS is not set 71# CONFIG_CPUSETS is not set
69CONFIG_SYSFS_DEPRECATED=y 72CONFIG_SYSFS_DEPRECATED=y
70# CONFIG_RELAY is not set 73# CONFIG_RELAY is not set
74CONFIG_BLK_DEV_INITRD=y
71CONFIG_INITRAMFS_SOURCE="" 75CONFIG_INITRAMFS_SOURCE=""
72# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 76# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
73CONFIG_SYSCTL=y 77CONFIG_SYSCTL=y
@@ -82,14 +86,19 @@ CONFIG_BUG=y
82CONFIG_ELF_CORE=y 86CONFIG_ELF_CORE=y
83CONFIG_BASE_FULL=y 87CONFIG_BASE_FULL=y
84CONFIG_FUTEX=y 88CONFIG_FUTEX=y
89CONFIG_ANON_INODES=y
85CONFIG_EPOLL=y 90CONFIG_EPOLL=y
91CONFIG_SIGNALFD=y
92CONFIG_TIMERFD=y
93CONFIG_EVENTFD=y
86CONFIG_SHMEM=y 94CONFIG_SHMEM=y
87CONFIG_SLAB=y
88CONFIG_VM_EVENT_COUNTERS=y 95CONFIG_VM_EVENT_COUNTERS=y
96CONFIG_SLAB=y
97# CONFIG_SLUB is not set
98# CONFIG_SLOB is not set
89CONFIG_RT_MUTEXES=y 99CONFIG_RT_MUTEXES=y
90# CONFIG_TINY_SHMEM is not set 100# CONFIG_TINY_SHMEM is not set
91CONFIG_BASE_SMALL=0 101CONFIG_BASE_SMALL=0
92# CONFIG_SLOB is not set
93 102
94# 103#
95# Loadable module support 104# Loadable module support
@@ -127,39 +136,38 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
127CONFIG_PPC_MULTIPLATFORM=y 136CONFIG_PPC_MULTIPLATFORM=y
128# CONFIG_EMBEDDED6xx is not set 137# CONFIG_EMBEDDED6xx is not set
129# CONFIG_APUS is not set 138# CONFIG_APUS is not set
130CONFIG_PPC_PSERIES=y 139# CONFIG_PPC_PSERIES is not set
131# CONFIG_PPC_ISERIES is not set 140# CONFIG_PPC_ISERIES is not set
132# CONFIG_PPC_MPC52xx is not set 141# CONFIG_PPC_MPC52xx is not set
142# CONFIG_PPC_MPC5200 is not set
133# CONFIG_PPC_PMAC is not set 143# CONFIG_PPC_PMAC is not set
134# CONFIG_PPC_MAPLE is not set 144# CONFIG_PPC_MAPLE is not set
135CONFIG_PPC_PASEMI=y 145CONFIG_PPC_PASEMI=y
146
147#
148# PA Semi PWRficient options
149#
150CONFIG_PPC_PASEMI_IOMMU=y
151CONFIG_PPC_PASEMI_MDIO=y
152# CONFIG_PPC_CELLEB is not set
153# CONFIG_PPC_PS3 is not set
136# CONFIG_PPC_CELL is not set 154# CONFIG_PPC_CELL is not set
137# CONFIG_PPC_CELL_NATIVE is not set 155# CONFIG_PPC_CELL_NATIVE is not set
138# CONFIG_PPC_IBM_CELL_BLADE is not set 156# CONFIG_PPC_IBM_CELL_BLADE is not set
139# CONFIG_PPC_PS3 is not set 157# CONFIG_PQ2ADS is not set
140CONFIG_PPC_NATIVE=y 158CONFIG_PPC_NATIVE=y
141# CONFIG_UDBG_RTAS_CONSOLE is not set 159CONFIG_MPIC=y
142CONFIG_XICS=y 160# CONFIG_MPIC_WEIRD is not set
161# CONFIG_PPC_I8259 is not set
143# CONFIG_U3_DART is not set 162# CONFIG_U3_DART is not set
144CONFIG_PPC_RTAS=y 163# CONFIG_PPC_RTAS is not set
145CONFIG_RTAS_ERROR_LOGGING=y
146CONFIG_RTAS_PROC=y
147# CONFIG_RTAS_FLASH is not set
148# CONFIG_MMIO_NVRAM is not set 164# CONFIG_MMIO_NVRAM is not set
149CONFIG_IBMVIO=y
150# CONFIG_IBMEBUS is not set
151# CONFIG_PPC_MPC106 is not set 165# CONFIG_PPC_MPC106 is not set
152# CONFIG_PPC_970_NAP is not set 166# CONFIG_PPC_970_NAP is not set
153# CONFIG_PPC_INDIRECT_IO is not set 167# CONFIG_PPC_INDIRECT_IO is not set
154# CONFIG_GENERIC_IOMAP is not set 168# CONFIG_GENERIC_IOMAP is not set
155# CONFIG_CPU_FREQ is not set 169# CONFIG_CPU_FREQ is not set
156# CONFIG_WANT_EARLY_SERIAL is not set 170# CONFIG_CPM2 is not set
157CONFIG_MPIC=y
158
159#
160# PA Semi PWRficient options
161#
162CONFIG_PPC_PASEMI_IOMMU=y
163 171
164# 172#
165# Kernel options 173# Kernel options
@@ -177,20 +185,14 @@ CONFIG_BINFMT_ELF=y
177# CONFIG_BINFMT_MISC is not set 185# CONFIG_BINFMT_MISC is not set
178CONFIG_FORCE_MAX_ZONEORDER=13 186CONFIG_FORCE_MAX_ZONEORDER=13
179CONFIG_IOMMU_VMERGE=y 187CONFIG_IOMMU_VMERGE=y
180# CONFIG_HOTPLUG_CPU is not set
181CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 188CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
182# CONFIG_KEXEC is not set 189# CONFIG_KEXEC is not set
183# CONFIG_CRASH_DUMP is not set 190# CONFIG_CRASH_DUMP is not set
184# CONFIG_IRQ_ALL_CPUS is not set 191# CONFIG_IRQ_ALL_CPUS is not set
185# CONFIG_PPC_SPLPAR is not set
186CONFIG_EEH=y
187# CONFIG_SCANLOG is not set
188# CONFIG_LPARCFG is not set
189# CONFIG_NUMA is not set 192# CONFIG_NUMA is not set
190CONFIG_ARCH_SELECT_MEMORY_MODEL=y 193CONFIG_ARCH_SELECT_MEMORY_MODEL=y
191CONFIG_ARCH_FLATMEM_ENABLE=y 194CONFIG_ARCH_FLATMEM_ENABLE=y
192CONFIG_ARCH_SPARSEMEM_ENABLE=y 195CONFIG_ARCH_SPARSEMEM_ENABLE=y
193CONFIG_ARCH_SPARSEMEM_DEFAULT=y
194CONFIG_ARCH_POPULATES_NODE_MAP=y 196CONFIG_ARCH_POPULATES_NODE_MAP=y
195CONFIG_SELECT_MEMORY_MODEL=y 197CONFIG_SELECT_MEMORY_MODEL=y
196CONFIG_FLATMEM_MANUAL=y 198CONFIG_FLATMEM_MANUAL=y
@@ -201,24 +203,28 @@ CONFIG_FLAT_NODE_MEM_MAP=y
201# CONFIG_SPARSEMEM_STATIC is not set 203# CONFIG_SPARSEMEM_STATIC is not set
202CONFIG_SPLIT_PTLOCK_CPUS=4 204CONFIG_SPLIT_PTLOCK_CPUS=4
203CONFIG_RESOURCES_64BIT=y 205CONFIG_RESOURCES_64BIT=y
206CONFIG_ZONE_DMA_FLAG=1
207# CONFIG_PPC_HAS_HASH_64K is not set
204# CONFIG_PPC_64K_PAGES is not set 208# CONFIG_PPC_64K_PAGES is not set
205# CONFIG_SCHED_SMT is not set 209# CONFIG_SCHED_SMT is not set
206CONFIG_PROC_DEVICETREE=y 210CONFIG_PROC_DEVICETREE=y
207# CONFIG_CMDLINE_BOOL is not set 211# CONFIG_CMDLINE_BOOL is not set
208# CONFIG_PM is not set 212# CONFIG_PM is not set
209# CONFIG_SECCOMP is not set 213# CONFIG_SECCOMP is not set
214# CONFIG_WANT_DEVICE_TREE is not set
210CONFIG_ISA_DMA_API=y 215CONFIG_ISA_DMA_API=y
211 216
212# 217#
213# Bus options 218# Bus options
214# 219#
220CONFIG_ZONE_DMA=y
215CONFIG_GENERIC_ISA_DMA=y 221CONFIG_GENERIC_ISA_DMA=y
216# CONFIG_MPIC_WEIRD is not set
217CONFIG_PPC_I8259=y
218# CONFIG_PPC_INDIRECT_PCI is not set 222# CONFIG_PPC_INDIRECT_PCI is not set
219CONFIG_PCI=y 223CONFIG_PCI=y
220CONFIG_PCI_DOMAINS=y 224CONFIG_PCI_DOMAINS=y
221# CONFIG_PCIEPORTBUS is not set 225# CONFIG_PCIEPORTBUS is not set
226CONFIG_ARCH_SUPPORTS_MSI=y
227# CONFIG_PCI_MSI is not set
222# CONFIG_PCI_DEBUG is not set 228# CONFIG_PCI_DEBUG is not set
223 229
224# 230#
@@ -237,10 +243,6 @@ CONFIG_CARDBUS=y
237# CONFIG_YENTA is not set 243# CONFIG_YENTA is not set
238# CONFIG_PD6729 is not set 244# CONFIG_PD6729 is not set
239# CONFIG_I82092 is not set 245# CONFIG_I82092 is not set
240
241#
242# PCI Hotplug Support
243#
244# CONFIG_HOTPLUG_PCI is not set 246# CONFIG_HOTPLUG_PCI is not set
245CONFIG_KERNEL_START=0xc000000000000000 247CONFIG_KERNEL_START=0xc000000000000000
246 248
@@ -252,14 +254,15 @@ CONFIG_NET=y
252# 254#
253# Networking options 255# Networking options
254# 256#
255# CONFIG_NETDEBUG is not set
256CONFIG_PACKET=y 257CONFIG_PACKET=y
257# CONFIG_PACKET_MMAP is not set 258# CONFIG_PACKET_MMAP is not set
258CONFIG_UNIX=y 259CONFIG_UNIX=y
259CONFIG_XFRM=y 260CONFIG_XFRM=y
260# CONFIG_XFRM_USER is not set 261# CONFIG_XFRM_USER is not set
261# CONFIG_XFRM_SUB_POLICY is not set 262# CONFIG_XFRM_SUB_POLICY is not set
263# CONFIG_XFRM_MIGRATE is not set
262CONFIG_NET_KEY=y 264CONFIG_NET_KEY=y
265# CONFIG_NET_KEY_MIGRATE is not set
263CONFIG_INET=y 266CONFIG_INET=y
264CONFIG_IP_MULTICAST=y 267CONFIG_IP_MULTICAST=y
265# CONFIG_IP_ADVANCED_ROUTER is not set 268# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -331,7 +334,16 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
331# CONFIG_HAMRADIO is not set 334# CONFIG_HAMRADIO is not set
332# CONFIG_IRDA is not set 335# CONFIG_IRDA is not set
333# CONFIG_BT is not set 336# CONFIG_BT is not set
337# CONFIG_AF_RXRPC is not set
338
339#
340# Wireless
341#
342# CONFIG_CFG80211 is not set
343# CONFIG_WIRELESS_EXT is not set
344# CONFIG_MAC80211 is not set
334# CONFIG_IEEE80211 is not set 345# CONFIG_IEEE80211 is not set
346# CONFIG_RFKILL is not set
335 347
336# 348#
337# Device Drivers 349# Device Drivers
@@ -344,16 +356,13 @@ CONFIG_STANDALONE=y
344CONFIG_PREVENT_FIRMWARE_BUILD=y 356CONFIG_PREVENT_FIRMWARE_BUILD=y
345CONFIG_FW_LOADER=y 357CONFIG_FW_LOADER=y
346# CONFIG_DEBUG_DRIVER is not set 358# CONFIG_DEBUG_DRIVER is not set
359# CONFIG_DEBUG_DEVRES is not set
347# CONFIG_SYS_HYPERVISOR is not set 360# CONFIG_SYS_HYPERVISOR is not set
348 361
349# 362#
350# Connector - unified userspace <-> kernelspace linker 363# Connector - unified userspace <-> kernelspace linker
351# 364#
352# CONFIG_CONNECTOR is not set 365# CONFIG_CONNECTOR is not set
353
354#
355# Memory Technology Devices (MTD)
356#
357CONFIG_MTD=y 366CONFIG_MTD=y
358# CONFIG_MTD_DEBUG is not set 367# CONFIG_MTD_DEBUG is not set
359CONFIG_MTD_CONCAT=y 368CONFIG_MTD_CONCAT=y
@@ -389,7 +398,6 @@ CONFIG_MTD_CFI_I2=y
389# CONFIG_MTD_RAM is not set 398# CONFIG_MTD_RAM is not set
390# CONFIG_MTD_ROM is not set 399# CONFIG_MTD_ROM is not set
391# CONFIG_MTD_ABSENT is not set 400# CONFIG_MTD_ABSENT is not set
392# CONFIG_MTD_OBSOLETE_CHIPS is not set
393 401
394# 402#
395# Mapping drivers for chip access 403# Mapping drivers for chip access
@@ -412,17 +420,13 @@ CONFIG_MTD_PHRAM=y
412# CONFIG_MTD_DOC2000 is not set 420# CONFIG_MTD_DOC2000 is not set
413# CONFIG_MTD_DOC2001 is not set 421# CONFIG_MTD_DOC2001 is not set
414# CONFIG_MTD_DOC2001PLUS is not set 422# CONFIG_MTD_DOC2001PLUS is not set
415
416#
417# NAND Flash Device Drivers
418#
419# CONFIG_MTD_NAND is not set 423# CONFIG_MTD_NAND is not set
420# CONFIG_MTD_NAND_CAFE is not set 424# CONFIG_MTD_ONENAND is not set
421 425
422# 426#
423# OneNAND Flash Device Drivers 427# UBI - Unsorted block images
424# 428#
425# CONFIG_MTD_ONENAND is not set 429# CONFIG_MTD_UBI is not set
426 430
427# 431#
428# Parallel port support 432# Parallel port support
@@ -432,6 +436,7 @@ CONFIG_MTD_PHRAM=y
432# 436#
433# Plug and Play support 437# Plug and Play support
434# 438#
439# CONFIG_PNPACPI is not set
435 440
436# 441#
437# Block devices 442# Block devices
@@ -451,15 +456,16 @@ CONFIG_BLK_DEV_RAM=y
451CONFIG_BLK_DEV_RAM_COUNT=16 456CONFIG_BLK_DEV_RAM_COUNT=16
452CONFIG_BLK_DEV_RAM_SIZE=16384 457CONFIG_BLK_DEV_RAM_SIZE=16384
453CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 458CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
454CONFIG_BLK_DEV_INITRD=y
455# CONFIG_CDROM_PKTCDVD is not set 459# CONFIG_CDROM_PKTCDVD is not set
456# CONFIG_ATA_OVER_ETH is not set 460# CONFIG_ATA_OVER_ETH is not set
457 461
458# 462#
459# Misc devices 463# Misc devices
460# 464#
465# CONFIG_PHANTOM is not set
461# CONFIG_SGI_IOC4 is not set 466# CONFIG_SGI_IOC4 is not set
462# CONFIG_TIFM_CORE is not set 467# CONFIG_TIFM_CORE is not set
468# CONFIG_BLINK is not set
463 469
464# 470#
465# ATA/ATAPI/MFM/RLL support 471# ATA/ATAPI/MFM/RLL support
@@ -474,20 +480,22 @@ CONFIG_BLK_DEV_IDE=y
474CONFIG_BLK_DEV_IDEDISK=y 480CONFIG_BLK_DEV_IDEDISK=y
475CONFIG_IDEDISK_MULTI_MODE=y 481CONFIG_IDEDISK_MULTI_MODE=y
476# CONFIG_BLK_DEV_IDECS is not set 482# CONFIG_BLK_DEV_IDECS is not set
483# CONFIG_BLK_DEV_DELKIN is not set
477CONFIG_BLK_DEV_IDECD=y 484CONFIG_BLK_DEV_IDECD=y
478# CONFIG_BLK_DEV_IDETAPE is not set 485# CONFIG_BLK_DEV_IDETAPE is not set
479# CONFIG_BLK_DEV_IDEFLOPPY is not set 486# CONFIG_BLK_DEV_IDEFLOPPY is not set
480CONFIG_BLK_DEV_IDESCSI=y 487CONFIG_BLK_DEV_IDESCSI=y
481CONFIG_IDE_TASK_IOCTL=y 488CONFIG_IDE_TASK_IOCTL=y
489CONFIG_IDE_PROC_FS=y
482 490
483# 491#
484# IDE chipset support/bugfixes 492# IDE chipset support/bugfixes
485# 493#
486# CONFIG_IDE_GENERIC is not set 494# CONFIG_IDE_GENERIC is not set
487# CONFIG_BLK_DEV_IDEPCI is not set 495# CONFIG_BLK_DEV_IDEPCI is not set
496# CONFIG_IDEPCI_PCIBUS_ORDER is not set
488# CONFIG_IDE_ARM is not set 497# CONFIG_IDE_ARM is not set
489# CONFIG_BLK_DEV_IDEDMA is not set 498# CONFIG_BLK_DEV_IDEDMA is not set
490# CONFIG_IDEDMA_AUTO is not set
491# CONFIG_BLK_DEV_HD is not set 499# CONFIG_BLK_DEV_HD is not set
492 500
493# 501#
@@ -517,6 +525,7 @@ CONFIG_SCSI_MULTI_LUN=y
517CONFIG_SCSI_CONSTANTS=y 525CONFIG_SCSI_CONSTANTS=y
518CONFIG_SCSI_LOGGING=y 526CONFIG_SCSI_LOGGING=y
519# CONFIG_SCSI_SCAN_ASYNC is not set 527# CONFIG_SCSI_SCAN_ASYNC is not set
528CONFIG_SCSI_WAIT_SCAN=m
520 529
521# 530#
522# SCSI Transports 531# SCSI Transports
@@ -550,7 +559,6 @@ CONFIG_SCSI_3W_9XXX=y
550# CONFIG_SCSI_FUTURE_DOMAIN is not set 559# CONFIG_SCSI_FUTURE_DOMAIN is not set
551# CONFIG_SCSI_GDTH is not set 560# CONFIG_SCSI_GDTH is not set
552# CONFIG_SCSI_IPS is not set 561# CONFIG_SCSI_IPS is not set
553# CONFIG_SCSI_IBMVSCSI is not set
554# CONFIG_SCSI_INITIO is not set 562# CONFIG_SCSI_INITIO is not set
555# CONFIG_SCSI_INIA100 is not set 563# CONFIG_SCSI_INIA100 is not set
556# CONFIG_SCSI_STEX is not set 564# CONFIG_SCSI_STEX is not set
@@ -563,6 +571,7 @@ CONFIG_SCSI_3W_9XXX=y
563# CONFIG_SCSI_DC395x is not set 571# CONFIG_SCSI_DC395x is not set
564# CONFIG_SCSI_DC390T is not set 572# CONFIG_SCSI_DC390T is not set
565# CONFIG_SCSI_DEBUG is not set 573# CONFIG_SCSI_DEBUG is not set
574# CONFIG_SCSI_ESP_CORE is not set
566# CONFIG_SCSI_SRP is not set 575# CONFIG_SCSI_SRP is not set
567 576
568# 577#
@@ -578,7 +587,7 @@ CONFIG_SCSI_3W_9XXX=y
578CONFIG_ATA=y 587CONFIG_ATA=y
579# CONFIG_ATA_NONSTANDARD is not set 588# CONFIG_ATA_NONSTANDARD is not set
580# CONFIG_SATA_AHCI is not set 589# CONFIG_SATA_AHCI is not set
581CONFIG_SATA_SVW=y 590# CONFIG_SATA_SVW is not set
582# CONFIG_ATA_PIIX is not set 591# CONFIG_ATA_PIIX is not set
583CONFIG_SATA_MV=y 592CONFIG_SATA_MV=y
584# CONFIG_SATA_NV is not set 593# CONFIG_SATA_NV is not set
@@ -586,16 +595,18 @@ CONFIG_SATA_MV=y
586# CONFIG_SATA_QSTOR is not set 595# CONFIG_SATA_QSTOR is not set
587# CONFIG_SATA_PROMISE is not set 596# CONFIG_SATA_PROMISE is not set
588# CONFIG_SATA_SX4 is not set 597# CONFIG_SATA_SX4 is not set
589CONFIG_SATA_SIL=y 598# CONFIG_SATA_SIL is not set
590CONFIG_SATA_SIL24=y 599CONFIG_SATA_SIL24=y
591# CONFIG_SATA_SIS is not set 600# CONFIG_SATA_SIS is not set
592# CONFIG_SATA_ULI is not set 601# CONFIG_SATA_ULI is not set
593# CONFIG_SATA_VIA is not set 602# CONFIG_SATA_VIA is not set
594# CONFIG_SATA_VITESSE is not set 603# CONFIG_SATA_VITESSE is not set
604# CONFIG_SATA_INIC162X is not set
595# CONFIG_PATA_ALI is not set 605# CONFIG_PATA_ALI is not set
596# CONFIG_PATA_AMD is not set 606# CONFIG_PATA_AMD is not set
597# CONFIG_PATA_ARTOP is not set 607# CONFIG_PATA_ARTOP is not set
598# CONFIG_PATA_ATIIXP is not set 608# CONFIG_PATA_ATIIXP is not set
609# CONFIG_PATA_CMD640_PCI is not set
599# CONFIG_PATA_CMD64X is not set 610# CONFIG_PATA_CMD64X is not set
600# CONFIG_PATA_CS5520 is not set 611# CONFIG_PATA_CS5520 is not set
601# CONFIG_PATA_CS5530 is not set 612# CONFIG_PATA_CS5530 is not set
@@ -607,6 +618,7 @@ CONFIG_ATA_GENERIC=y
607# CONFIG_PATA_HPT3X2N is not set 618# CONFIG_PATA_HPT3X2N is not set
608# CONFIG_PATA_HPT3X3 is not set 619# CONFIG_PATA_HPT3X3 is not set
609# CONFIG_PATA_IT821X is not set 620# CONFIG_PATA_IT821X is not set
621# CONFIG_PATA_IT8213 is not set
610# CONFIG_PATA_JMICRON is not set 622# CONFIG_PATA_JMICRON is not set
611# CONFIG_PATA_TRIFLEX is not set 623# CONFIG_PATA_TRIFLEX is not set
612# CONFIG_PATA_MARVELL is not set 624# CONFIG_PATA_MARVELL is not set
@@ -644,27 +656,26 @@ CONFIG_ATA_GENERIC=y
644# 656#
645# IEEE 1394 (FireWire) support 657# IEEE 1394 (FireWire) support
646# 658#
659# CONFIG_FIREWIRE is not set
647CONFIG_IEEE1394=y 660CONFIG_IEEE1394=y
648 661
649# 662#
650# Subsystem Options 663# Subsystem Options
651# 664#
652# CONFIG_IEEE1394_VERBOSEDEBUG is not set 665# CONFIG_IEEE1394_VERBOSEDEBUG is not set
653# CONFIG_IEEE1394_OUI_DB is not set
654# CONFIG_IEEE1394_EXTRA_CONFIG_ROMS is not set
655# CONFIG_IEEE1394_EXPORT_FULL_API is not set
656 666
657# 667#
658# Device Drivers 668# Controllers
659# 669#
660CONFIG_IEEE1394_PCILYNX=y 670CONFIG_IEEE1394_PCILYNX=y
661CONFIG_IEEE1394_OHCI1394=y 671CONFIG_IEEE1394_OHCI1394=y
662 672
663# 673#
664# Protocol Drivers 674# Protocols
665# 675#
666# CONFIG_IEEE1394_VIDEO1394 is not set 676# CONFIG_IEEE1394_VIDEO1394 is not set
667CONFIG_IEEE1394_SBP2=y 677CONFIG_IEEE1394_SBP2=y
678# CONFIG_IEEE1394_ETH1394_ROM_ENTRY is not set
668# CONFIG_IEEE1394_ETH1394 is not set 679# CONFIG_IEEE1394_ETH1394 is not set
669# CONFIG_IEEE1394_DV1394 is not set 680# CONFIG_IEEE1394_DV1394 is not set
670CONFIG_IEEE1394_RAWIO=y 681CONFIG_IEEE1394_RAWIO=y
@@ -673,12 +684,7 @@ CONFIG_IEEE1394_RAWIO=y
673# I2O device support 684# I2O device support
674# 685#
675# CONFIG_I2O is not set 686# CONFIG_I2O is not set
676 687# CONFIG_MACINTOSH_DRIVERS is not set
677#
678# Macintosh device drivers
679#
680# CONFIG_MAC_EMUMOUSEBTN is not set
681# CONFIG_WINDFARM is not set
682 688
683# 689#
684# Network device support 690# Network device support
@@ -697,7 +703,20 @@ CONFIG_DUMMY=y
697# 703#
698# PHY device support 704# PHY device support
699# 705#
700# CONFIG_PHYLIB is not set 706CONFIG_PHYLIB=y
707
708#
709# MII PHY device drivers
710#
711CONFIG_MARVELL_PHY=y
712# CONFIG_DAVICOM_PHY is not set
713# CONFIG_QSEMI_PHY is not set
714# CONFIG_LXT_PHY is not set
715# CONFIG_CICADA_PHY is not set
716# CONFIG_VITESSE_PHY is not set
717# CONFIG_SMSC_PHY is not set
718# CONFIG_BROADCOM_PHY is not set
719# CONFIG_FIXED_PHY is not set
701 720
702# 721#
703# Ethernet (10 or 100Mbit) 722# Ethernet (10 or 100Mbit)
@@ -714,7 +733,6 @@ CONFIG_MII=y
714# 733#
715# CONFIG_NET_TULIP is not set 734# CONFIG_NET_TULIP is not set
716# CONFIG_HP100 is not set 735# CONFIG_HP100 is not set
717CONFIG_IBMVETH=y
718CONFIG_NET_PCI=y 736CONFIG_NET_PCI=y
719# CONFIG_PCNET32 is not set 737# CONFIG_PCNET32 is not set
720# CONFIG_AMD8111_ETH is not set 738# CONFIG_AMD8111_ETH is not set
@@ -722,7 +740,7 @@ CONFIG_NET_PCI=y
722# CONFIG_B44 is not set 740# CONFIG_B44 is not set
723# CONFIG_FORCEDETH is not set 741# CONFIG_FORCEDETH is not set
724# CONFIG_DGRS is not set 742# CONFIG_DGRS is not set
725CONFIG_EEPRO100=y 743# CONFIG_EEPRO100 is not set
726# CONFIG_E100 is not set 744# CONFIG_E100 is not set
727# CONFIG_FEALNX is not set 745# CONFIG_FEALNX is not set
728# CONFIG_NATSEMI is not set 746# CONFIG_NATSEMI is not set
@@ -733,6 +751,7 @@ CONFIG_EEPRO100=y
733# CONFIG_EPIC100 is not set 751# CONFIG_EPIC100 is not set
734# CONFIG_SUNDANCE is not set 752# CONFIG_SUNDANCE is not set
735# CONFIG_VIA_RHINE is not set 753# CONFIG_VIA_RHINE is not set
754# CONFIG_SC92031 is not set
736 755
737# 756#
738# Ethernet (1000 Mbit) 757# Ethernet (1000 Mbit)
@@ -754,15 +773,20 @@ CONFIG_E1000_NAPI=y
754CONFIG_TIGON3=y 773CONFIG_TIGON3=y
755# CONFIG_BNX2 is not set 774# CONFIG_BNX2 is not set
756# CONFIG_QLA3XXX is not set 775# CONFIG_QLA3XXX is not set
776# CONFIG_ATL1 is not set
757 777
758# 778#
759# Ethernet (10000 Mbit) 779# Ethernet (10000 Mbit)
760# 780#
761# CONFIG_CHELSIO_T1 is not set 781# CONFIG_CHELSIO_T1 is not set
782# CONFIG_CHELSIO_T3 is not set
762# CONFIG_IXGB is not set 783# CONFIG_IXGB is not set
763# CONFIG_S2IO is not set 784# CONFIG_S2IO is not set
764# CONFIG_MYRI10GE is not set 785# CONFIG_MYRI10GE is not set
765# CONFIG_NETXEN_NIC is not set 786# CONFIG_NETXEN_NIC is not set
787CONFIG_PASEMI_MAC=y
788# CONFIG_MLX4_CORE is not set
789CONFIG_MLX4_DEBUG=y
766 790
767# 791#
768# Token Ring devices 792# Token Ring devices
@@ -770,9 +794,20 @@ CONFIG_TIGON3=y
770# CONFIG_TR is not set 794# CONFIG_TR is not set
771 795
772# 796#
773# Wireless LAN (non-hamradio) 797# Wireless LAN
798#
799# CONFIG_WLAN_PRE80211 is not set
800# CONFIG_WLAN_80211 is not set
801
802#
803# USB Network Adapters
774# 804#
775# CONFIG_NET_RADIO is not set 805# CONFIG_USB_CATC is not set
806# CONFIG_USB_KAWETH is not set
807# CONFIG_USB_PEGASUS is not set
808# CONFIG_USB_RTL8150 is not set
809# CONFIG_USB_USBNET_MII is not set
810# CONFIG_USB_USBNET is not set
776 811
777# 812#
778# PCMCIA network device support 813# PCMCIA network device support
@@ -834,8 +869,10 @@ CONFIG_INPUT_KEYBOARD=y
834CONFIG_INPUT_MOUSE=y 869CONFIG_INPUT_MOUSE=y
835# CONFIG_MOUSE_PS2 is not set 870# CONFIG_MOUSE_PS2 is not set
836# CONFIG_MOUSE_SERIAL is not set 871# CONFIG_MOUSE_SERIAL is not set
872# CONFIG_MOUSE_APPLETOUCH is not set
837# CONFIG_MOUSE_VSXXXAA is not set 873# CONFIG_MOUSE_VSXXXAA is not set
838# CONFIG_INPUT_JOYSTICK is not set 874# CONFIG_INPUT_JOYSTICK is not set
875# CONFIG_INPUT_TABLET is not set
839# CONFIG_INPUT_TOUCHSCREEN is not set 876# CONFIG_INPUT_TOUCHSCREEN is not set
840# CONFIG_INPUT_MISC is not set 877# CONFIG_INPUT_MISC is not set
841 878
@@ -870,29 +907,21 @@ CONFIG_SERIAL_8250_RUNTIME_UARTS=4
870# 907#
871CONFIG_SERIAL_CORE=y 908CONFIG_SERIAL_CORE=y
872CONFIG_SERIAL_CORE_CONSOLE=y 909CONFIG_SERIAL_CORE_CONSOLE=y
873# CONFIG_SERIAL_ICOM is not set
874# CONFIG_SERIAL_JSM is not set 910# CONFIG_SERIAL_JSM is not set
911# CONFIG_SERIAL_OF_PLATFORM is not set
875CONFIG_UNIX98_PTYS=y 912CONFIG_UNIX98_PTYS=y
876CONFIG_LEGACY_PTYS=y 913CONFIG_LEGACY_PTYS=y
877CONFIG_LEGACY_PTY_COUNT=4 914CONFIG_LEGACY_PTY_COUNT=4
878CONFIG_HVC_DRIVER=y
879CONFIG_HVC_CONSOLE=y
880CONFIG_HVC_RTAS=y
881# CONFIG_HVCS is not set
882 915
883# 916#
884# IPMI 917# IPMI
885# 918#
886# CONFIG_IPMI_HANDLER is not set 919# CONFIG_IPMI_HANDLER is not set
887
888#
889# Watchdog Cards
890#
891# CONFIG_WATCHDOG is not set 920# CONFIG_WATCHDOG is not set
892CONFIG_HW_RANDOM=y 921CONFIG_HW_RANDOM=y
922CONFIG_HW_RANDOM_PASEMI=y
893CONFIG_GEN_RTC=y 923CONFIG_GEN_RTC=y
894CONFIG_GEN_RTC_X=y 924CONFIG_GEN_RTC_X=y
895# CONFIG_DTLK is not set
896# CONFIG_R3964 is not set 925# CONFIG_R3964 is not set
897# CONFIG_APPLICOM is not set 926# CONFIG_APPLICOM is not set
898# CONFIG_AGP is not set 927# CONFIG_AGP is not set
@@ -912,11 +941,9 @@ CONFIG_MAX_RAW_DEVS=256
912# TPM devices 941# TPM devices
913# 942#
914# CONFIG_TCG_TPM is not set 943# CONFIG_TCG_TPM is not set
915 944CONFIG_DEVPORT=y
916#
917# I2C support
918#
919CONFIG_I2C=y 945CONFIG_I2C=y
946CONFIG_I2C_BOARDINFO=y
920CONFIG_I2C_CHARDEV=y 947CONFIG_I2C_CHARDEV=y
921 948
922# 949#
@@ -940,16 +967,18 @@ CONFIG_I2C_ALGOPCA=y
940# CONFIG_I2C_NFORCE2 is not set 967# CONFIG_I2C_NFORCE2 is not set
941# CONFIG_I2C_OCORES is not set 968# CONFIG_I2C_OCORES is not set
942# CONFIG_I2C_PARPORT_LIGHT is not set 969# CONFIG_I2C_PARPORT_LIGHT is not set
970CONFIG_I2C_PASEMI=y
943# CONFIG_I2C_PROSAVAGE is not set 971# CONFIG_I2C_PROSAVAGE is not set
944# CONFIG_I2C_SAVAGE4 is not set 972# CONFIG_I2C_SAVAGE4 is not set
973# CONFIG_I2C_SIMTEC is not set
945# CONFIG_I2C_SIS5595 is not set 974# CONFIG_I2C_SIS5595 is not set
946# CONFIG_I2C_SIS630 is not set 975# CONFIG_I2C_SIS630 is not set
947# CONFIG_I2C_SIS96X is not set 976# CONFIG_I2C_SIS96X is not set
948# CONFIG_I2C_STUB is not set 977# CONFIG_I2C_STUB is not set
978# CONFIG_I2C_TINY_USB is not set
949# CONFIG_I2C_VIA is not set 979# CONFIG_I2C_VIA is not set
950# CONFIG_I2C_VIAPRO is not set 980# CONFIG_I2C_VIAPRO is not set
951# CONFIG_I2C_VOODOO3 is not set 981# CONFIG_I2C_VOODOO3 is not set
952# CONFIG_I2C_PCA_ISA is not set
953 982
954# 983#
955# Miscellaneous I2C Chip support 984# Miscellaneous I2C Chip support
@@ -963,7 +992,7 @@ CONFIG_SENSORS_EEPROM=y
963# CONFIG_SENSORS_MAX6875 is not set 992# CONFIG_SENSORS_MAX6875 is not set
964# CONFIG_I2C_DEBUG_CORE is not set 993# CONFIG_I2C_DEBUG_CORE is not set
965# CONFIG_I2C_DEBUG_ALGO is not set 994# CONFIG_I2C_DEBUG_ALGO is not set
966CONFIG_I2C_DEBUG_BUS=y 995# CONFIG_I2C_DEBUG_BUS is not set
967# CONFIG_I2C_DEBUG_CHIP is not set 996# CONFIG_I2C_DEBUG_CHIP is not set
968 997
969# 998#
@@ -976,16 +1005,14 @@ CONFIG_I2C_DEBUG_BUS=y
976# Dallas's 1-wire bus 1005# Dallas's 1-wire bus
977# 1006#
978# CONFIG_W1 is not set 1007# CONFIG_W1 is not set
979
980#
981# Hardware Monitoring support
982#
983CONFIG_HWMON=y 1008CONFIG_HWMON=y
984CONFIG_HWMON_VID=y 1009CONFIG_HWMON_VID=y
985# CONFIG_SENSORS_ABITUGURU is not set 1010# CONFIG_SENSORS_ABITUGURU is not set
1011# CONFIG_SENSORS_AD7418 is not set
986# CONFIG_SENSORS_ADM1021 is not set 1012# CONFIG_SENSORS_ADM1021 is not set
987# CONFIG_SENSORS_ADM1025 is not set 1013# CONFIG_SENSORS_ADM1025 is not set
988# CONFIG_SENSORS_ADM1026 is not set 1014# CONFIG_SENSORS_ADM1026 is not set
1015# CONFIG_SENSORS_ADM1029 is not set
989# CONFIG_SENSORS_ADM1031 is not set 1016# CONFIG_SENSORS_ADM1031 is not set
990# CONFIG_SENSORS_ADM9240 is not set 1017# CONFIG_SENSORS_ADM9240 is not set
991# CONFIG_SENSORS_ASB100 is not set 1018# CONFIG_SENSORS_ASB100 is not set
@@ -1008,6 +1035,7 @@ CONFIG_SENSORS_LM85=y
1008CONFIG_SENSORS_LM90=y 1035CONFIG_SENSORS_LM90=y
1009# CONFIG_SENSORS_LM92 is not set 1036# CONFIG_SENSORS_LM92 is not set
1010# CONFIG_SENSORS_MAX1619 is not set 1037# CONFIG_SENSORS_MAX1619 is not set
1038# CONFIG_SENSORS_MAX6650 is not set
1011# CONFIG_SENSORS_PC87360 is not set 1039# CONFIG_SENSORS_PC87360 is not set
1012# CONFIG_SENSORS_PC87427 is not set 1040# CONFIG_SENSORS_PC87427 is not set
1013# CONFIG_SENSORS_SIS5595 is not set 1041# CONFIG_SENSORS_SIS5595 is not set
@@ -1027,29 +1055,50 @@ CONFIG_SENSORS_LM90=y
1027# CONFIG_HWMON_DEBUG_CHIP is not set 1055# CONFIG_HWMON_DEBUG_CHIP is not set
1028 1056
1029# 1057#
1030# Multimedia devices 1058# Multifunction device drivers
1031# 1059#
1032# CONFIG_VIDEO_DEV is not set 1060# CONFIG_MFD_SM501 is not set
1033 1061
1034# 1062#
1035# Digital Video Broadcasting Devices 1063# Multimedia devices
1036# 1064#
1037# CONFIG_DVB is not set 1065# CONFIG_VIDEO_DEV is not set
1066# CONFIG_DVB_CORE is not set
1067CONFIG_DAB=y
1038# CONFIG_USB_DABUSB is not set 1068# CONFIG_USB_DABUSB is not set
1039 1069
1040# 1070#
1041# Graphics support 1071# Graphics support
1042# 1072#
1043CONFIG_FIRMWARE_EDID=y 1073CONFIG_BACKLIGHT_LCD_SUPPORT=y
1074CONFIG_BACKLIGHT_CLASS_DEVICE=y
1075CONFIG_LCD_CLASS_DEVICE=m
1076
1077#
1078# Display device support
1079#
1080# CONFIG_DISPLAY_SUPPORT is not set
1081CONFIG_VGASTATE=y
1044CONFIG_FB=y 1082CONFIG_FB=y
1083CONFIG_FIRMWARE_EDID=y
1045CONFIG_FB_DDC=y 1084CONFIG_FB_DDC=y
1046CONFIG_FB_CFB_FILLRECT=y 1085CONFIG_FB_CFB_FILLRECT=y
1047CONFIG_FB_CFB_COPYAREA=y 1086CONFIG_FB_CFB_COPYAREA=y
1048CONFIG_FB_CFB_IMAGEBLIT=y 1087CONFIG_FB_CFB_IMAGEBLIT=y
1088# CONFIG_FB_SYS_FILLRECT is not set
1089# CONFIG_FB_SYS_COPYAREA is not set
1090# CONFIG_FB_SYS_IMAGEBLIT is not set
1091# CONFIG_FB_SYS_FOPS is not set
1092CONFIG_FB_DEFERRED_IO=y
1093# CONFIG_FB_SVGALIB is not set
1049CONFIG_FB_MACMODES=y 1094CONFIG_FB_MACMODES=y
1050# CONFIG_FB_BACKLIGHT is not set 1095CONFIG_FB_BACKLIGHT=y
1051CONFIG_FB_MODE_HELPERS=y 1096CONFIG_FB_MODE_HELPERS=y
1052CONFIG_FB_TILEBLITTING=y 1097CONFIG_FB_TILEBLITTING=y
1098
1099#
1100# Frame buffer hardware drivers
1101#
1053# CONFIG_FB_CIRRUS is not set 1102# CONFIG_FB_CIRRUS is not set
1054# CONFIG_FB_PM2 is not set 1103# CONFIG_FB_PM2 is not set
1055# CONFIG_FB_CYBER2000 is not set 1104# CONFIG_FB_CYBER2000 is not set
@@ -1060,28 +1109,27 @@ CONFIG_FB_VGA16=y
1060# CONFIG_FB_S1D13XXX is not set 1109# CONFIG_FB_S1D13XXX is not set
1061CONFIG_FB_NVIDIA=y 1110CONFIG_FB_NVIDIA=y
1062CONFIG_FB_NVIDIA_I2C=y 1111CONFIG_FB_NVIDIA_I2C=y
1063CONFIG_FB_RIVA=y 1112# CONFIG_FB_NVIDIA_DEBUG is not set
1064CONFIG_FB_RIVA_I2C=y 1113CONFIG_FB_NVIDIA_BACKLIGHT=y
1065# CONFIG_FB_RIVA_DEBUG is not set 1114# CONFIG_FB_RIVA is not set
1066CONFIG_FB_MATROX=y 1115# CONFIG_FB_MATROX is not set
1067CONFIG_FB_MATROX_MILLENIUM=y
1068CONFIG_FB_MATROX_MYSTIQUE=y
1069CONFIG_FB_MATROX_G=y
1070CONFIG_FB_MATROX_I2C=y
1071CONFIG_FB_MATROX_MAVEN=y
1072CONFIG_FB_MATROX_MULTIHEAD=y
1073CONFIG_FB_RADEON=y 1116CONFIG_FB_RADEON=y
1074CONFIG_FB_RADEON_I2C=y 1117CONFIG_FB_RADEON_I2C=y
1118CONFIG_FB_RADEON_BACKLIGHT=y
1075# CONFIG_FB_RADEON_DEBUG is not set 1119# CONFIG_FB_RADEON_DEBUG is not set
1076# CONFIG_FB_ATY128 is not set 1120# CONFIG_FB_ATY128 is not set
1077# CONFIG_FB_ATY is not set 1121# CONFIG_FB_ATY is not set
1122# CONFIG_FB_S3 is not set
1078# CONFIG_FB_SAVAGE is not set 1123# CONFIG_FB_SAVAGE is not set
1079# CONFIG_FB_SIS is not set 1124# CONFIG_FB_SIS is not set
1080# CONFIG_FB_NEOMAGIC is not set 1125# CONFIG_FB_NEOMAGIC is not set
1081# CONFIG_FB_KYRO is not set 1126# CONFIG_FB_KYRO is not set
1082# CONFIG_FB_3DFX is not set 1127# CONFIG_FB_3DFX is not set
1083# CONFIG_FB_VOODOO1 is not set 1128# CONFIG_FB_VOODOO1 is not set
1129# CONFIG_FB_VT8623 is not set
1084# CONFIG_FB_TRIDENT is not set 1130# CONFIG_FB_TRIDENT is not set
1131# CONFIG_FB_ARK is not set
1132# CONFIG_FB_PM3 is not set
1085# CONFIG_FB_IBM_GXT4500 is not set 1133# CONFIG_FB_IBM_GXT4500 is not set
1086# CONFIG_FB_VIRTUAL is not set 1134# CONFIG_FB_VIRTUAL is not set
1087 1135
@@ -1097,15 +1145,10 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
1097# CONFIG_FONTS is not set 1145# CONFIG_FONTS is not set
1098CONFIG_FONT_8x8=y 1146CONFIG_FONT_8x8=y
1099CONFIG_FONT_8x16=y 1147CONFIG_FONT_8x16=y
1100
1101#
1102# Logo configuration
1103#
1104CONFIG_LOGO=y 1148CONFIG_LOGO=y
1105CONFIG_LOGO_LINUX_MONO=y 1149CONFIG_LOGO_LINUX_MONO=y
1106CONFIG_LOGO_LINUX_VGA16=y 1150CONFIG_LOGO_LINUX_VGA16=y
1107CONFIG_LOGO_LINUX_CLUT224=y 1151CONFIG_LOGO_LINUX_CLUT224=y
1108# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
1109 1152
1110# 1153#
1111# Sound 1154# Sound
@@ -1211,6 +1254,7 @@ CONFIG_SND_VERBOSE_PROCFS=y
1211# 1254#
1212CONFIG_SND_USB_AUDIO=y 1255CONFIG_SND_USB_AUDIO=y
1213CONFIG_SND_USB_USX2Y=y 1256CONFIG_SND_USB_USX2Y=y
1257# CONFIG_SND_USB_CAIAQ is not set
1214 1258
1215# 1259#
1216# PCMCIA devices 1260# PCMCIA devices
@@ -1219,6 +1263,11 @@ CONFIG_SND_USB_USX2Y=y
1219# CONFIG_SND_PDAUDIOCF is not set 1263# CONFIG_SND_PDAUDIOCF is not set
1220 1264
1221# 1265#
1266# System on Chip audio support
1267#
1268# CONFIG_SND_SOC is not set
1269
1270#
1222# Open Sound System 1271# Open Sound System
1223# 1272#
1224# CONFIG_SOUND_PRIME is not set 1273# CONFIG_SOUND_PRIME is not set
@@ -1227,6 +1276,15 @@ CONFIG_SND_USB_USX2Y=y
1227# HID Devices 1276# HID Devices
1228# 1277#
1229CONFIG_HID=y 1278CONFIG_HID=y
1279# CONFIG_HID_DEBUG is not set
1280
1281#
1282# USB Input Devices
1283#
1284CONFIG_USB_HID=y
1285# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1286# CONFIG_HID_FF is not set
1287# CONFIG_USB_HIDDEV is not set
1230 1288
1231# 1289#
1232# USB support 1290# USB support
@@ -1241,7 +1299,7 @@ CONFIG_USB=y
1241# Miscellaneous USB options 1299# Miscellaneous USB options
1242# 1300#
1243CONFIG_USB_DEVICEFS=y 1301CONFIG_USB_DEVICEFS=y
1244# CONFIG_USB_BANDWIDTH is not set 1302# CONFIG_USB_DEVICE_CLASS is not set
1245# CONFIG_USB_DYNAMIC_MINORS is not set 1303# CONFIG_USB_DYNAMIC_MINORS is not set
1246# CONFIG_USB_OTG is not set 1304# CONFIG_USB_OTG is not set
1247 1305
@@ -1252,9 +1310,15 @@ CONFIG_USB_EHCI_HCD=y
1252# CONFIG_USB_EHCI_SPLIT_ISO is not set 1310# CONFIG_USB_EHCI_SPLIT_ISO is not set
1253# CONFIG_USB_EHCI_ROOT_HUB_TT is not set 1311# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
1254# CONFIG_USB_EHCI_TT_NEWSCHED is not set 1312# CONFIG_USB_EHCI_TT_NEWSCHED is not set
1313# CONFIG_USB_EHCI_BIG_ENDIAN_MMIO is not set
1255# CONFIG_USB_ISP116X_HCD is not set 1314# CONFIG_USB_ISP116X_HCD is not set
1256CONFIG_USB_OHCI_HCD=y 1315CONFIG_USB_OHCI_HCD=y
1257# CONFIG_USB_OHCI_BIG_ENDIAN is not set 1316CONFIG_USB_OHCI_HCD_PPC_OF=y
1317CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
1318# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
1319CONFIG_USB_OHCI_HCD_PCI=y
1320CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
1321CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
1258CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1322CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1259CONFIG_USB_UHCI_HCD=y 1323CONFIG_USB_UHCI_HCD=y
1260CONFIG_USB_SL811_HCD=y 1324CONFIG_USB_SL811_HCD=y
@@ -1289,41 +1353,11 @@ CONFIG_USB_STORAGE=y
1289CONFIG_USB_LIBUSUAL=y 1353CONFIG_USB_LIBUSUAL=y
1290 1354
1291# 1355#
1292# USB Input Devices
1293#
1294CONFIG_USB_HID=y
1295# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1296# CONFIG_HID_FF is not set
1297# CONFIG_USB_HIDDEV is not set
1298# CONFIG_USB_AIPTEK is not set
1299# CONFIG_USB_WACOM is not set
1300# CONFIG_USB_ACECAD is not set
1301# CONFIG_USB_KBTAB is not set
1302# CONFIG_USB_POWERMATE is not set
1303# CONFIG_USB_TOUCHSCREEN is not set
1304# CONFIG_USB_YEALINK is not set
1305# CONFIG_USB_XPAD is not set
1306# CONFIG_USB_ATI_REMOTE is not set
1307# CONFIG_USB_ATI_REMOTE2 is not set
1308# CONFIG_USB_KEYSPAN_REMOTE is not set
1309# CONFIG_USB_APPLETOUCH is not set
1310
1311#
1312# USB Imaging devices 1356# USB Imaging devices
1313# 1357#
1314# CONFIG_USB_MDC800 is not set 1358# CONFIG_USB_MDC800 is not set
1315# CONFIG_USB_MICROTEK is not set 1359# CONFIG_USB_MICROTEK is not set
1316 1360# CONFIG_USB_MON is not set
1317#
1318# USB Network Adapters
1319#
1320# CONFIG_USB_CATC is not set
1321# CONFIG_USB_KAWETH is not set
1322# CONFIG_USB_PEGASUS is not set
1323# CONFIG_USB_RTL8150 is not set
1324# CONFIG_USB_USBNET_MII is not set
1325# CONFIG_USB_USBNET is not set
1326CONFIG_USB_MON=y
1327 1361
1328# 1362#
1329# USB port drivers 1363# USB port drivers
@@ -1344,6 +1378,7 @@ CONFIG_USB_MON=y
1344# CONFIG_USB_RIO500 is not set 1378# CONFIG_USB_RIO500 is not set
1345# CONFIG_USB_LEGOTOWER is not set 1379# CONFIG_USB_LEGOTOWER is not set
1346# CONFIG_USB_LCD is not set 1380# CONFIG_USB_LCD is not set
1381# CONFIG_USB_BERRY_CHARGE is not set
1347# CONFIG_USB_LED is not set 1382# CONFIG_USB_LED is not set
1348# CONFIG_USB_CYPRESS_CY7C63 is not set 1383# CONFIG_USB_CYPRESS_CY7C63 is not set
1349# CONFIG_USB_CYTHERM is not set 1384# CONFIG_USB_CYTHERM is not set
@@ -1354,6 +1389,7 @@ CONFIG_USB_MON=y
1354# CONFIG_USB_SISUSBVGA is not set 1389# CONFIG_USB_SISUSBVGA is not set
1355# CONFIG_USB_LD is not set 1390# CONFIG_USB_LD is not set
1356# CONFIG_USB_TRANCEVIBRATOR is not set 1391# CONFIG_USB_TRANCEVIBRATOR is not set
1392# CONFIG_USB_IOWARRIOR is not set
1357# CONFIG_USB_TEST is not set 1393# CONFIG_USB_TEST is not set
1358 1394
1359# 1395#
@@ -1364,10 +1400,6 @@ CONFIG_USB_MON=y
1364# USB Gadget Support 1400# USB Gadget Support
1365# 1401#
1366# CONFIG_USB_GADGET is not set 1402# CONFIG_USB_GADGET is not set
1367
1368#
1369# MMC/SD Card support
1370#
1371# CONFIG_MMC is not set 1403# CONFIG_MMC is not set
1372 1404
1373# 1405#
@@ -1408,24 +1440,37 @@ CONFIG_RTC_INTF_SYSFS=y
1408CONFIG_RTC_INTF_PROC=y 1440CONFIG_RTC_INTF_PROC=y
1409CONFIG_RTC_INTF_DEV=y 1441CONFIG_RTC_INTF_DEV=y
1410# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set 1442# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
1443# CONFIG_RTC_DRV_TEST is not set
1411 1444
1412# 1445#
1413# RTC drivers 1446# I2C RTC drivers
1414# 1447#
1415# CONFIG_RTC_DRV_X1205 is not set
1416CONFIG_RTC_DRV_DS1307=y 1448CONFIG_RTC_DRV_DS1307=y
1417# CONFIG_RTC_DRV_DS1553 is not set
1418# CONFIG_RTC_DRV_ISL1208 is not set
1419# CONFIG_RTC_DRV_DS1672 is not set 1449# CONFIG_RTC_DRV_DS1672 is not set
1420# CONFIG_RTC_DRV_DS1742 is not set 1450# CONFIG_RTC_DRV_MAX6900 is not set
1451# CONFIG_RTC_DRV_RS5C372 is not set
1452# CONFIG_RTC_DRV_ISL1208 is not set
1453# CONFIG_RTC_DRV_X1205 is not set
1421# CONFIG_RTC_DRV_PCF8563 is not set 1454# CONFIG_RTC_DRV_PCF8563 is not set
1422# CONFIG_RTC_DRV_PCF8583 is not set 1455# CONFIG_RTC_DRV_PCF8583 is not set
1423# CONFIG_RTC_DRV_RS5C372 is not set 1456
1457#
1458# SPI RTC drivers
1459#
1460
1461#
1462# Platform RTC drivers
1463#
1464# CONFIG_RTC_DRV_DS1553 is not set
1465# CONFIG_RTC_DRV_DS1742 is not set
1424# CONFIG_RTC_DRV_M48T86 is not set 1466# CONFIG_RTC_DRV_M48T86 is not set
1425# CONFIG_RTC_DRV_TEST is not set
1426# CONFIG_RTC_DRV_V3020 is not set 1467# CONFIG_RTC_DRV_V3020 is not set
1427 1468
1428# 1469#
1470# on-CPU RTC drivers
1471#
1472
1473#
1429# DMA Engine support 1474# DMA Engine support
1430# 1475#
1431# CONFIG_DMA_ENGINE is not set 1476# CONFIG_DMA_ENGINE is not set
@@ -1439,10 +1484,6 @@ CONFIG_RTC_DRV_DS1307=y
1439# 1484#
1440 1485
1441# 1486#
1442# Virtualization
1443#
1444
1445#
1446# File systems 1487# File systems
1447# 1488#
1448CONFIG_EXT2_FS=y 1489CONFIG_EXT2_FS=y
@@ -1466,7 +1507,8 @@ CONFIG_FS_POSIX_ACL=y
1466# CONFIG_OCFS2_FS is not set 1507# CONFIG_OCFS2_FS is not set
1467# CONFIG_MINIX_FS is not set 1508# CONFIG_MINIX_FS is not set
1468# CONFIG_ROMFS_FS is not set 1509# CONFIG_ROMFS_FS is not set
1469# CONFIG_INOTIFY is not set 1510CONFIG_INOTIFY=y
1511CONFIG_INOTIFY_USER=y
1470# CONFIG_QUOTA is not set 1512# CONFIG_QUOTA is not set
1471CONFIG_DNOTIFY=y 1513CONFIG_DNOTIFY=y
1472CONFIG_AUTOFS_FS=y 1514CONFIG_AUTOFS_FS=y
@@ -1538,6 +1580,7 @@ CONFIG_LOCKD=y
1538CONFIG_LOCKD_V4=y 1580CONFIG_LOCKD_V4=y
1539CONFIG_NFS_COMMON=y 1581CONFIG_NFS_COMMON=y
1540CONFIG_SUNRPC=y 1582CONFIG_SUNRPC=y
1583# CONFIG_SUNRPC_BIND34 is not set
1541# CONFIG_RPCSEC_GSS_KRB5 is not set 1584# CONFIG_RPCSEC_GSS_KRB5 is not set
1542# CONFIG_RPCSEC_GSS_SPKM3 is not set 1585# CONFIG_RPCSEC_GSS_SPKM3 is not set
1543# CONFIG_SMB_FS is not set 1586# CONFIG_SMB_FS is not set
@@ -1567,6 +1610,7 @@ CONFIG_MSDOS_PARTITION=y
1567# CONFIG_SUN_PARTITION is not set 1610# CONFIG_SUN_PARTITION is not set
1568# CONFIG_KARMA_PARTITION is not set 1611# CONFIG_KARMA_PARTITION is not set
1569# CONFIG_EFI_PARTITION is not set 1612# CONFIG_EFI_PARTITION is not set
1613# CONFIG_SYSV68_PARTITION is not set
1570 1614
1571# 1615#
1572# Native Language Support 1616# Native Language Support
@@ -1616,6 +1660,8 @@ CONFIG_NLS_ISO8859_1=y
1616# Distributed Lock Manager 1660# Distributed Lock Manager
1617# 1661#
1618# CONFIG_DLM is not set 1662# CONFIG_DLM is not set
1663# CONFIG_UCC_SLOW is not set
1664# CONFIG_UCC_FAST is not set
1619 1665
1620# 1666#
1621# Library routines 1667# Library routines
@@ -1623,10 +1669,13 @@ CONFIG_NLS_ISO8859_1=y
1623CONFIG_BITREVERSE=y 1669CONFIG_BITREVERSE=y
1624CONFIG_CRC_CCITT=y 1670CONFIG_CRC_CCITT=y
1625# CONFIG_CRC16 is not set 1671# CONFIG_CRC16 is not set
1672# CONFIG_CRC_ITU_T is not set
1626CONFIG_CRC32=y 1673CONFIG_CRC32=y
1627# CONFIG_LIBCRC32C is not set 1674# CONFIG_LIBCRC32C is not set
1628CONFIG_PLIST=y 1675CONFIG_PLIST=y
1629CONFIG_IOMAP_COPY=y 1676CONFIG_HAS_IOMEM=y
1677CONFIG_HAS_IOPORT=y
1678CONFIG_HAS_DMA=y
1630 1679
1631# 1680#
1632# Instrumentation Support 1681# Instrumentation Support
@@ -1645,32 +1694,34 @@ CONFIG_MAGIC_SYSRQ=y
1645# CONFIG_DEBUG_FS is not set 1694# CONFIG_DEBUG_FS is not set
1646# CONFIG_HEADERS_CHECK is not set 1695# CONFIG_HEADERS_CHECK is not set
1647CONFIG_DEBUG_KERNEL=y 1696CONFIG_DEBUG_KERNEL=y
1648CONFIG_LOG_BUF_SHIFT=17 1697# CONFIG_DEBUG_SHIRQ is not set
1649CONFIG_DETECT_SOFTLOCKUP=y 1698CONFIG_DETECT_SOFTLOCKUP=y
1650# CONFIG_SCHEDSTATS is not set 1699# CONFIG_SCHEDSTATS is not set
1700# CONFIG_TIMER_STATS is not set
1651# CONFIG_DEBUG_SLAB is not set 1701# CONFIG_DEBUG_SLAB is not set
1652# CONFIG_DEBUG_RT_MUTEXES is not set 1702# CONFIG_DEBUG_RT_MUTEXES is not set
1653# CONFIG_RT_MUTEX_TESTER is not set 1703# CONFIG_RT_MUTEX_TESTER is not set
1654# CONFIG_DEBUG_SPINLOCK is not set 1704# CONFIG_DEBUG_SPINLOCK is not set
1655# CONFIG_DEBUG_MUTEXES is not set 1705# CONFIG_DEBUG_MUTEXES is not set
1656# CONFIG_DEBUG_RWSEMS is not set
1657# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1706# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1658# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 1707# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1659# CONFIG_DEBUG_KOBJECT is not set 1708# CONFIG_DEBUG_KOBJECT is not set
1660CONFIG_DEBUG_BUGVERBOSE=y 1709CONFIG_DEBUG_BUGVERBOSE=y
1661CONFIG_DEBUG_INFO=y 1710# CONFIG_DEBUG_INFO is not set
1662# CONFIG_DEBUG_VM is not set 1711# CONFIG_DEBUG_VM is not set
1663# CONFIG_DEBUG_LIST is not set 1712# CONFIG_DEBUG_LIST is not set
1664CONFIG_FORCED_INLINING=y 1713# CONFIG_FORCED_INLINING is not set
1665# CONFIG_RCU_TORTURE_TEST is not set 1714# CONFIG_RCU_TORTURE_TEST is not set
1715# CONFIG_FAULT_INJECTION is not set
1666# CONFIG_DEBUG_STACKOVERFLOW is not set 1716# CONFIG_DEBUG_STACKOVERFLOW is not set
1667# CONFIG_DEBUG_STACK_USAGE is not set 1717# CONFIG_DEBUG_STACK_USAGE is not set
1718# CONFIG_DEBUG_PAGEALLOC is not set
1668CONFIG_DEBUGGER=y 1719CONFIG_DEBUGGER=y
1669CONFIG_XMON=y 1720CONFIG_XMON=y
1670CONFIG_XMON_DEFAULT=y 1721CONFIG_XMON_DEFAULT=y
1671CONFIG_XMON_DISASSEMBLY=y 1722CONFIG_XMON_DISASSEMBLY=y
1672# CONFIG_IRQSTACKS is not set 1723# CONFIG_IRQSTACKS is not set
1673CONFIG_BOOTX_TEXT=y 1724# CONFIG_BOOTX_TEXT is not set
1674# CONFIG_PPC_EARLY_DEBUG is not set 1725# CONFIG_PPC_EARLY_DEBUG is not set
1675 1726
1676# 1727#
@@ -1700,8 +1751,11 @@ CONFIG_CRYPTO_SHA1=y
1700# CONFIG_CRYPTO_GF128MUL is not set 1751# CONFIG_CRYPTO_GF128MUL is not set
1701CONFIG_CRYPTO_ECB=m 1752CONFIG_CRYPTO_ECB=m
1702CONFIG_CRYPTO_CBC=y 1753CONFIG_CRYPTO_CBC=y
1754CONFIG_CRYPTO_PCBC=m
1703# CONFIG_CRYPTO_LRW is not set 1755# CONFIG_CRYPTO_LRW is not set
1756# CONFIG_CRYPTO_CRYPTD is not set
1704CONFIG_CRYPTO_DES=y 1757CONFIG_CRYPTO_DES=y
1758# CONFIG_CRYPTO_FCRYPT is not set
1705# CONFIG_CRYPTO_BLOWFISH is not set 1759# CONFIG_CRYPTO_BLOWFISH is not set
1706# CONFIG_CRYPTO_TWOFISH is not set 1760# CONFIG_CRYPTO_TWOFISH is not set
1707# CONFIG_CRYPTO_SERPENT is not set 1761# CONFIG_CRYPTO_SERPENT is not set
@@ -1715,6 +1769,7 @@ CONFIG_CRYPTO_DES=y
1715# CONFIG_CRYPTO_DEFLATE is not set 1769# CONFIG_CRYPTO_DEFLATE is not set
1716# CONFIG_CRYPTO_MICHAEL_MIC is not set 1770# CONFIG_CRYPTO_MICHAEL_MIC is not set
1717# CONFIG_CRYPTO_CRC32C is not set 1771# CONFIG_CRYPTO_CRC32C is not set
1772# CONFIG_CRYPTO_CAMELLIA is not set
1718# CONFIG_CRYPTO_TEST is not set 1773# CONFIG_CRYPTO_TEST is not set
1719 1774
1720# 1775#
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c
index 9cb24d20f0f9..6ef87fb90b8e 100644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/cputable.c
@@ -836,7 +836,7 @@ static struct cpu_spec cpu_specs[] = {
836 .pvr_mask = 0xffff0000, 836 .pvr_mask = 0xffff0000,
837 .pvr_value = 0x80040000, 837 .pvr_value = 0x80040000,
838 .cpu_name = "7448", 838 .cpu_name = "7448",
839 .cpu_features = CPU_FTRS_7447A, 839 .cpu_features = CPU_FTRS_7448,
840 .cpu_user_features = COMMON_USER | 840 .cpu_user_features = COMMON_USER |
841 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE, 841 PPC_FEATURE_HAS_ALTIVEC_COMP | PPC_FEATURE_PPC_LE,
842 .icache_bsize = 32, 842 .icache_bsize = 32,
diff --git a/arch/powerpc/kernel/entry_32.S b/arch/powerpc/kernel/entry_32.S
index c29d1652a421..4074c0b31453 100644
--- a/arch/powerpc/kernel/entry_32.S
+++ b/arch/powerpc/kernel/entry_32.S
@@ -596,7 +596,11 @@ fast_exception_return:
596 mr r12,r4 /* restart at exc_exit_restart */ 596 mr r12,r4 /* restart at exc_exit_restart */
597 b 2b 597 b 2b
598 598
599 .comm fee_restarts,4 599 .section .bss
600 .align 2
601fee_restarts:
602 .space 4
603 .previous
600 604
601/* aargh, a nonrecoverable interrupt, panic */ 605/* aargh, a nonrecoverable interrupt, panic */
602/* aargh, we don't know which trap this is */ 606/* aargh, we don't know which trap this is */
@@ -851,7 +855,11 @@ load_dbcr0:
851 mtspr SPRN_DBSR,r11 /* clear all pending debug events */ 855 mtspr SPRN_DBSR,r11 /* clear all pending debug events */
852 blr 856 blr
853 857
854 .comm global_dbcr0,8 858 .section .bss
859 .align 4
860global_dbcr0:
861 .space 8
862 .previous
855#endif /* !(CONFIG_4xx || CONFIG_BOOKE) */ 863#endif /* !(CONFIG_4xx || CONFIG_BOOKE) */
856 864
857do_work: /* r10 contains MSR_KERNEL here */ 865do_work: /* r10 contains MSR_KERNEL here */
@@ -926,7 +934,11 @@ END_FTR_SECTION_IFSET(CPU_FTR_601)
926 /* shouldn't return */ 934 /* shouldn't return */
927 b 4b 935 b 4b
928 936
929 .comm ee_restarts,4 937 .section .bss
938 .align 2
939ee_restarts:
940 .space 4
941 .previous
930 942
931/* 943/*
932 * PROM code for specific machines follows. Put it 944 * PROM code for specific machines follows. Put it
diff --git a/arch/powerpc/kernel/of_platform.c b/arch/powerpc/kernel/of_platform.c
index 84c34d979a88..d501c23e5159 100644
--- a/arch/powerpc/kernel/of_platform.c
+++ b/arch/powerpc/kernel/of_platform.c
@@ -427,11 +427,13 @@ static int __devinit of_pci_phb_probe(struct of_device *dev,
427 /* Process "ranges" property */ 427 /* Process "ranges" property */
428 pci_process_bridge_OF_ranges(phb, dev->node, 0); 428 pci_process_bridge_OF_ranges(phb, dev->node, 0);
429 429
430 /* Setup IO space. 430 /* Setup IO space. We use the non-dynamic version of that code here,
431 * This will not work properly for ISA IOs, something needs to be done 431 * which doesn't quite support unplugging. Next kernel release will
432 * about it if we ever generalize that way of probing PCI brigdes 432 * have a better fix for this.
433 * Note also that we don't do ISA, this will also be fixed with a
434 * more massive rework.
433 */ 435 */
434 pci_setup_phb_io_dynamic(phb, 0); 436 pci_setup_phb_io(phb, 0);
435 437
436 /* Init pci_dn data structures */ 438 /* Init pci_dn data structures */
437 pci_devs_phb_init_dynamic(phb); 439 pci_devs_phb_init_dynamic(phb);
diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c
index b0409e19b1c1..249cca27a9b8 100644
--- a/arch/powerpc/kernel/pci_64.c
+++ b/arch/powerpc/kernel/pci_64.c
@@ -41,6 +41,7 @@
41 41
42unsigned long pci_probe_only = 1; 42unsigned long pci_probe_only = 1;
43int pci_assign_all_buses = 0; 43int pci_assign_all_buses = 0;
44static int pci_initial_scan_done;
44 45
45static void fixup_resource(struct resource *res, struct pci_dev *dev); 46static void fixup_resource(struct resource *res, struct pci_dev *dev);
46static void do_bus_setup(struct pci_bus *bus); 47static void do_bus_setup(struct pci_bus *bus);
@@ -604,6 +605,8 @@ static int __init pcibios_init(void)
604 /* map in PCI I/O space */ 605 /* map in PCI I/O space */
605 phbs_remap_io(); 606 phbs_remap_io();
606 607
608 pci_initial_scan_done = 1;
609
607 printk(KERN_DEBUG "PCI: Probing PCI hardware done\n"); 610 printk(KERN_DEBUG "PCI: Probing PCI hardware done\n");
608 611
609 return 0; 612 return 0;
@@ -1042,13 +1045,16 @@ void __devinit pci_process_bridge_OF_ranges(struct pci_controller *hose,
1042 } 1045 }
1043} 1046}
1044 1047
1045void __init pci_setup_phb_io(struct pci_controller *hose, int primary) 1048void __devinit pci_setup_phb_io(struct pci_controller *hose, int primary)
1046{ 1049{
1047 unsigned long size = hose->pci_io_size; 1050 unsigned long size = hose->pci_io_size;
1048 unsigned long io_virt_offset; 1051 unsigned long io_virt_offset;
1049 struct resource *res; 1052 struct resource *res;
1050 struct device_node *isa_dn; 1053 struct device_node *isa_dn;
1051 1054
1055 if (size == 0)
1056 return;
1057
1052 hose->io_base_virt = reserve_phb_iospace(size); 1058 hose->io_base_virt = reserve_phb_iospace(size);
1053 DBG("phb%d io_base_phys 0x%lx io_base_virt 0x%lx\n", 1059 DBG("phb%d io_base_phys 0x%lx io_base_virt 0x%lx\n",
1054 hose->global_number, hose->io_base_phys, 1060 hose->global_number, hose->io_base_phys,
@@ -1069,6 +1075,15 @@ void __init pci_setup_phb_io(struct pci_controller *hose, int primary)
1069 res = &hose->io_resource; 1075 res = &hose->io_resource;
1070 res->start += io_virt_offset; 1076 res->start += io_virt_offset;
1071 res->end += io_virt_offset; 1077 res->end += io_virt_offset;
1078
1079 /* If this is called after the initial PCI scan, then we need to
1080 * proceed to IO mappings now
1081 */
1082 if (pci_initial_scan_done)
1083 __ioremap_explicit(hose->io_base_phys,
1084 (unsigned long)hose->io_base_virt,
1085 hose->pci_io_size,
1086 _PAGE_NO_CACHE | _PAGE_GUARDED);
1072} 1087}
1073 1088
1074void __devinit pci_setup_phb_io_dynamic(struct pci_controller *hose, 1089void __devinit pci_setup_phb_io_dynamic(struct pci_controller *hose,
@@ -1078,6 +1093,9 @@ void __devinit pci_setup_phb_io_dynamic(struct pci_controller *hose,
1078 unsigned long io_virt_offset; 1093 unsigned long io_virt_offset;
1079 struct resource *res; 1094 struct resource *res;
1080 1095
1096 if (size == 0)
1097 return;
1098
1081 hose->io_base_virt = __ioremap(hose->io_base_phys, size, 1099 hose->io_base_virt = __ioremap(hose->io_base_phys, size,
1082 _PAGE_NO_CACHE | _PAGE_GUARDED); 1100 _PAGE_NO_CACHE | _PAGE_GUARDED);
1083 DBG("phb%d io_base_phys 0x%lx io_base_virt 0x%lx\n", 1101 DBG("phb%d io_base_phys 0x%lx io_base_virt 0x%lx\n",
@@ -1106,6 +1124,9 @@ static int get_bus_io_range(struct pci_bus *bus, unsigned long *start_phys,
1106 /* Root Bus */ 1124 /* Root Bus */
1107 res = &hose->io_resource; 1125 res = &hose->io_resource;
1108 1126
1127 if (res->end == 0 && res->start == 0)
1128 return 1;
1129
1109 *start_virt = pci_io_base + res->start; 1130 *start_virt = pci_io_base + res->start;
1110 *start_phys = *start_virt + hose->io_base_phys 1131 *start_phys = *start_virt + hose->io_base_phys
1111 - (unsigned long) hose->io_base_virt; 1132 - (unsigned long) hose->io_base_virt;
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c
index c065b5550368..066a6a7a25b8 100644
--- a/arch/powerpc/kernel/prom.c
+++ b/arch/powerpc/kernel/prom.c
@@ -1472,6 +1472,11 @@ static int of_finish_dynamic_node(struct device_node *node)
1472 node->name = of_get_property(node, "name", NULL); 1472 node->name = of_get_property(node, "name", NULL);
1473 node->type = of_get_property(node, "device_type", NULL); 1473 node->type = of_get_property(node, "device_type", NULL);
1474 1474
1475 if (!node->name)
1476 node->name = "<NULL>";
1477 if (!node->type)
1478 node->type = "<NULL>";
1479
1475 if (!parent) { 1480 if (!parent) {
1476 err = -ENODEV; 1481 err = -ENODEV;
1477 goto out; 1482 goto out;
diff --git a/arch/powerpc/kernel/rtas-proc.c b/arch/powerpc/kernel/rtas-proc.c
index 190b7ed1dbfb..f2e3bc714d76 100644
--- a/arch/powerpc/kernel/rtas-proc.c
+++ b/arch/powerpc/kernel/rtas-proc.c
@@ -379,7 +379,7 @@ static ssize_t ppc_rtas_progress_write(struct file *file,
379/* ****************************************************************** */ 379/* ****************************************************************** */
380static int ppc_rtas_progress_show(struct seq_file *m, void *v) 380static int ppc_rtas_progress_show(struct seq_file *m, void *v)
381{ 381{
382 if (progress_led) 382 if (progress_led[0])
383 seq_printf(m, "%s\n", progress_led); 383 seq_printf(m, "%s\n", progress_led);
384 return 0; 384 return 0;
385} 385}
diff --git a/arch/powerpc/lib/rheap.c b/arch/powerpc/lib/rheap.c
index b2f6dcc59600..180ee2933ab9 100644
--- a/arch/powerpc/lib/rheap.c
+++ b/arch/powerpc/lib/rheap.c
@@ -468,25 +468,19 @@ unsigned long rh_alloc_align(rh_info_t * info, int size, int alignment, const ch
468 if (blk->size == size) { 468 if (blk->size == size) {
469 /* Move from free list to taken list */ 469 /* Move from free list to taken list */
470 list_del(&blk->list); 470 list_del(&blk->list);
471 blk->owner = owner; 471 newblk = blk;
472 start = blk->start; 472 } else {
473 473 newblk = get_slot(info);
474 attach_taken_block(info, blk); 474 newblk->start = blk->start;
475 newblk->size = size;
475 476
476 return start; 477 /* blk still in free list, with updated start, size */
478 blk->start += size;
479 blk->size -= size;
477 } 480 }
478 481
479 newblk = get_slot(info);
480 newblk->start = blk->start;
481 newblk->size = size;
482 newblk->owner = owner; 482 newblk->owner = owner;
483
484 /* blk still in free list, with updated start, size */
485 blk->start += size;
486 blk->size -= size;
487
488 start = newblk->start; 483 start = newblk->start;
489
490 attach_taken_block(info, newblk); 484 attach_taken_block(info, newblk);
491 485
492 /* for larger alignment return fixed up pointer */ 486 /* for larger alignment return fixed up pointer */
diff --git a/arch/powerpc/mm/hash_low_32.S b/arch/powerpc/mm/hash_low_32.S
index ddceefc06ecc..7f830a4888d6 100644
--- a/arch/powerpc/mm/hash_low_32.S
+++ b/arch/powerpc/mm/hash_low_32.S
@@ -30,7 +30,11 @@
30#include <asm/asm-offsets.h> 30#include <asm/asm-offsets.h>
31 31
32#ifdef CONFIG_SMP 32#ifdef CONFIG_SMP
33 .comm mmu_hash_lock,4 33 .section .bss
34 .align 2
35 .globl mmu_hash_lock
36mmu_hash_lock:
37 .space 4
34#endif /* CONFIG_SMP */ 38#endif /* CONFIG_SMP */
35 39
36/* 40/*
@@ -455,9 +459,15 @@ found_slot:
455 sync /* make sure pte updates get to memory */ 459 sync /* make sure pte updates get to memory */
456 blr 460 blr
457 461
458 .comm next_slot,4 462 .section .bss
459 .comm primary_pteg_full,4 463 .align 2
460 .comm htab_hash_searches,4 464next_slot:
465 .space 4
466primary_pteg_full:
467 .space 4
468htab_hash_searches:
469 .space 4
470 .previous
461 471
462/* 472/*
463 * Flush the entry for a particular page from the hash table. 473 * Flush the entry for a particular page from the hash table.
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 028ba4ed03d2..4f2f4534a9d8 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -430,7 +430,7 @@ static void __init htab_finish_init(void)
430 make_bl(ht64_call_hpte_insert2, ppc_md.hpte_insert); 430 make_bl(ht64_call_hpte_insert2, ppc_md.hpte_insert);
431 make_bl(ht64_call_hpte_remove, ppc_md.hpte_remove); 431 make_bl(ht64_call_hpte_remove, ppc_md.hpte_remove);
432 make_bl(ht64_call_hpte_updatepp, ppc_md.hpte_updatepp); 432 make_bl(ht64_call_hpte_updatepp, ppc_md.hpte_updatepp);
433#endif /* CONFIG_PPC_64K_PAGES */ 433#endif /* CONFIG_PPC_HAS_HASH_64K */
434 434
435 make_bl(htab_call_hpte_insert1, ppc_md.hpte_insert); 435 make_bl(htab_call_hpte_insert1, ppc_md.hpte_insert);
436 make_bl(htab_call_hpte_insert2, ppc_md.hpte_insert); 436 make_bl(htab_call_hpte_insert2, ppc_md.hpte_insert);
@@ -837,7 +837,7 @@ void hash_preload(struct mm_struct *mm, unsigned long ea,
837 if (mm->context.user_psize == MMU_PAGE_64K) 837 if (mm->context.user_psize == MMU_PAGE_64K)
838 __hash_page_64K(ea, access, vsid, ptep, trap, local); 838 __hash_page_64K(ea, access, vsid, ptep, trap, local);
839 else 839 else
840#endif /* CONFIG_PPC_64K_PAGES */ 840#endif /* CONFIG_PPC_HAS_HASH_64K */
841 __hash_page_4K(ea, access, vsid, ptep, trap, local); 841 __hash_page_4K(ea, access, vsid, ptep, trap, local);
842 842
843 local_irq_restore(flags); 843 local_irq_restore(flags);
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c
index 1d443407423c..ad6e135bf212 100644
--- a/arch/powerpc/mm/pgtable_64.c
+++ b/arch/powerpc/mm/pgtable_64.c
@@ -322,6 +322,8 @@ EXPORT_SYMBOL(__ioremap);
322EXPORT_SYMBOL(iounmap); 322EXPORT_SYMBOL(iounmap);
323EXPORT_SYMBOL(__iounmap); 323EXPORT_SYMBOL(__iounmap);
324 324
325static DEFINE_SPINLOCK(phb_io_lock);
326
325void __iomem * reserve_phb_iospace(unsigned long size) 327void __iomem * reserve_phb_iospace(unsigned long size)
326{ 328{
327 void __iomem *virt_addr; 329 void __iomem *virt_addr;
@@ -329,8 +331,10 @@ void __iomem * reserve_phb_iospace(unsigned long size)
329 if (phbs_io_bot >= IMALLOC_BASE) 331 if (phbs_io_bot >= IMALLOC_BASE)
330 panic("reserve_phb_iospace(): phb io space overflow\n"); 332 panic("reserve_phb_iospace(): phb io space overflow\n");
331 333
334 spin_lock(&phb_io_lock);
332 virt_addr = (void __iomem *) phbs_io_bot; 335 virt_addr = (void __iomem *) phbs_io_bot;
333 phbs_io_bot += size; 336 phbs_io_bot += size;
337 spin_unlock(&phb_io_lock);
334 338
335 return virt_addr; 339 return virt_addr;
336} 340}
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig
index 8e66949e7c67..1b3e008fd148 100644
--- a/arch/powerpc/platforms/44x/Kconfig
+++ b/arch/powerpc/platforms/44x/Kconfig
@@ -38,7 +38,8 @@ config 440EP
38 38
39config 440GP 39config 440GP
40 bool 40 bool
41 select IBM_NEW_EMAC_ZMII 41# Disabled until the new EMAC Driver is merged.
42# select IBM_NEW_EMAC_ZMII
42 43
43config 440GX 44config 440GX
44 bool 45 bool
diff --git a/arch/powerpc/platforms/44x/ebony.c b/arch/powerpc/platforms/44x/ebony.c
index ad526eafc90b..5a7fec8d10d3 100644
--- a/arch/powerpc/platforms/44x/ebony.c
+++ b/arch/powerpc/platforms/44x/ebony.c
@@ -27,9 +27,9 @@
27#include "44x.h" 27#include "44x.h"
28 28
29static struct of_device_id ebony_of_bus[] = { 29static struct of_device_id ebony_of_bus[] = {
30 { .type = "ibm,plb", }, 30 { .compatible = "ibm,plb4", },
31 { .type = "ibm,opb", }, 31 { .compatible = "ibm,opb", },
32 { .type = "ibm,ebc", }, 32 { .compatible = "ibm,ebc", },
33 {}, 33 {},
34}; 34};
35 35
diff --git a/arch/powerpc/platforms/iseries/viopath.c b/arch/powerpc/platforms/iseries/viopath.c
index 354b8dd2a2c1..6a0060a5f2ec 100644
--- a/arch/powerpc/platforms/iseries/viopath.c
+++ b/arch/powerpc/platforms/iseries/viopath.c
@@ -37,6 +37,7 @@
37#include <linux/wait.h> 37#include <linux/wait.h>
38#include <linux/seq_file.h> 38#include <linux/seq_file.h>
39#include <linux/interrupt.h> 39#include <linux/interrupt.h>
40#include <linux/completion.h>
40 41
41#include <asm/system.h> 42#include <asm/system.h>
42#include <asm/uaccess.h> 43#include <asm/uaccess.h>
@@ -81,7 +82,7 @@ static void handleMonitorEvent(struct HvLpEvent *event);
81 * if system_state is not SYSTEM_RUNNING, then wait_atomic is used ... 82 * if system_state is not SYSTEM_RUNNING, then wait_atomic is used ...
82 */ 83 */
83struct alloc_parms { 84struct alloc_parms {
84 struct semaphore sem; 85 struct completion done;
85 int number; 86 int number;
86 atomic_t wait_atomic; 87 atomic_t wait_atomic;
87 int used_wait_atomic; 88 int used_wait_atomic;
@@ -115,7 +116,7 @@ static int proc_viopath_show(struct seq_file *m, void *v)
115 u16 vlanMap; 116 u16 vlanMap;
116 dma_addr_t handle; 117 dma_addr_t handle;
117 HvLpEvent_Rc hvrc; 118 HvLpEvent_Rc hvrc;
118 DECLARE_MUTEX_LOCKED(Semaphore); 119 DECLARE_COMPLETION(done);
119 struct device_node *node; 120 struct device_node *node;
120 const char *sysid; 121 const char *sysid;
121 122
@@ -132,13 +133,13 @@ static int proc_viopath_show(struct seq_file *m, void *v)
132 HvLpEvent_AckInd_DoAck, HvLpEvent_AckType_ImmediateAck, 133 HvLpEvent_AckInd_DoAck, HvLpEvent_AckType_ImmediateAck,
133 viopath_sourceinst(viopath_hostLp), 134 viopath_sourceinst(viopath_hostLp),
134 viopath_targetinst(viopath_hostLp), 135 viopath_targetinst(viopath_hostLp),
135 (u64)(unsigned long)&Semaphore, VIOVERSION << 16, 136 (u64)(unsigned long)&done, VIOVERSION << 16,
136 ((u64)handle) << 32, HW_PAGE_SIZE, 0, 0); 137 ((u64)handle) << 32, HW_PAGE_SIZE, 0, 0);
137 138
138 if (hvrc != HvLpEvent_Rc_Good) 139 if (hvrc != HvLpEvent_Rc_Good)
139 printk(VIOPATH_KERN_WARN "hv error on op %d\n", (int)hvrc); 140 printk(VIOPATH_KERN_WARN "hv error on op %d\n", (int)hvrc);
140 141
141 down(&Semaphore); 142 wait_for_completion(&done);
142 143
143 vlanMap = HvLpConfig_getVirtualLanIndexMap(); 144 vlanMap = HvLpConfig_getVirtualLanIndexMap();
144 145
@@ -353,7 +354,7 @@ static void handleConfig(struct HvLpEvent *event)
353 return; 354 return;
354 } 355 }
355 356
356 up((struct semaphore *)event->xCorrelationToken); 357 complete((struct completion *)event->xCorrelationToken);
357} 358}
358 359
359/* 360/*
@@ -464,7 +465,7 @@ static void viopath_donealloc(void *parm, int number)
464 if (parmsp->used_wait_atomic) 465 if (parmsp->used_wait_atomic)
465 atomic_set(&parmsp->wait_atomic, 0); 466 atomic_set(&parmsp->wait_atomic, 0);
466 else 467 else
467 up(&parmsp->sem); 468 complete(&parmsp->done);
468} 469}
469 470
470static int allocateEvents(HvLpIndex remoteLp, int numEvents) 471static int allocateEvents(HvLpIndex remoteLp, int numEvents)
@@ -476,7 +477,7 @@ static int allocateEvents(HvLpIndex remoteLp, int numEvents)
476 atomic_set(&parms.wait_atomic, 1); 477 atomic_set(&parms.wait_atomic, 1);
477 } else { 478 } else {
478 parms.used_wait_atomic = 0; 479 parms.used_wait_atomic = 0;
479 init_MUTEX_LOCKED(&parms.sem); 480 init_completion(&parms.done);
480 } 481 }
481 mf_allocate_lp_events(remoteLp, HvLpEvent_Type_VirtualIo, 250, /* It would be nice to put a real number here! */ 482 mf_allocate_lp_events(remoteLp, HvLpEvent_Type_VirtualIo, 250, /* It would be nice to put a real number here! */
482 numEvents, &viopath_donealloc, &parms); 483 numEvents, &viopath_donealloc, &parms);
@@ -484,7 +485,7 @@ static int allocateEvents(HvLpIndex remoteLp, int numEvents)
484 while (atomic_read(&parms.wait_atomic)) 485 while (atomic_read(&parms.wait_atomic))
485 mb(); 486 mb();
486 } else 487 } else
487 down(&parms.sem); 488 wait_for_completion(&parms.done);
488 return parms.number; 489 return parms.number;
489} 490}
490 491
@@ -585,10 +586,10 @@ int viopath_close(HvLpIndex remoteLp, int subtype, int numReq)
585 spin_unlock_irqrestore(&statuslock, flags); 586 spin_unlock_irqrestore(&statuslock, flags);
586 587
587 parms.used_wait_atomic = 0; 588 parms.used_wait_atomic = 0;
588 init_MUTEX_LOCKED(&parms.sem); 589 init_completion(&parms.done);
589 mf_deallocate_lp_events(remoteLp, HvLpEvent_Type_VirtualIo, 590 mf_deallocate_lp_events(remoteLp, HvLpEvent_Type_VirtualIo,
590 numReq, &viopath_donealloc, &parms); 591 numReq, &viopath_donealloc, &parms);
591 down(&parms.sem); 592 wait_for_completion(&parms.done);
592 593
593 spin_lock_irqsave(&statuslock, flags); 594 spin_lock_irqsave(&statuslock, flags);
594 for (i = 0, numOpen = 0; i < VIO_MAX_SUBTYPES; i++) 595 for (i = 0, numOpen = 0; i < VIO_MAX_SUBTYPES; i++)
diff --git a/arch/powerpc/platforms/pasemi/Kconfig b/arch/powerpc/platforms/pasemi/Kconfig
index eb4dbc705b06..7c5076e38ea1 100644
--- a/arch/powerpc/platforms/pasemi/Kconfig
+++ b/arch/powerpc/platforms/pasemi/Kconfig
@@ -4,7 +4,6 @@ config PPC_PASEMI
4 default n 4 default n
5 select MPIC 5 select MPIC
6 select PPC_UDBG_16550 6 select PPC_UDBG_16550
7 select GENERIC_TBSYNC
8 select PPC_NATIVE 7 select PPC_NATIVE
9 help 8 help
10 This option enables support for PA Semi's PWRficient line 9 This option enables support for PA Semi's PWRficient line
diff --git a/arch/powerpc/platforms/pseries/pseries.h b/arch/powerpc/platforms/pseries/pseries.h
index 22bc01989749..2729d559fd91 100644
--- a/arch/powerpc/platforms/pseries/pseries.h
+++ b/arch/powerpc/platforms/pseries/pseries.h
@@ -21,8 +21,8 @@ extern int pSeries_machine_check_exception(struct pt_regs *regs);
21extern void smp_init_pseries_mpic(void); 21extern void smp_init_pseries_mpic(void);
22extern void smp_init_pseries_xics(void); 22extern void smp_init_pseries_xics(void);
23#else 23#else
24static inline smp_init_pseries_mpic(void) { }; 24static inline void smp_init_pseries_mpic(void) { };
25static inline smp_init_pseries_xics(void) { }; 25static inline void smp_init_pseries_xics(void) { };
26#endif 26#endif
27 27
28#ifdef CONFIG_KEXEC 28#ifdef CONFIG_KEXEC
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 4fd2bec89916..75aad38179f0 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1424,7 +1424,7 @@ unsigned int mpic_get_irq(void)
1424void mpic_request_ipis(void) 1424void mpic_request_ipis(void)
1425{ 1425{
1426 struct mpic *mpic = mpic_primary; 1426 struct mpic *mpic = mpic_primary;
1427 int i; 1427 int i, err;
1428 static char *ipi_names[] = { 1428 static char *ipi_names[] = {
1429 "IPI0 (call function)", 1429 "IPI0 (call function)",
1430 "IPI1 (reschedule)", 1430 "IPI1 (reschedule)",
@@ -1442,8 +1442,14 @@ void mpic_request_ipis(void)
1442 printk(KERN_ERR "Failed to map IPI %d\n", i); 1442 printk(KERN_ERR "Failed to map IPI %d\n", i);
1443 break; 1443 break;
1444 } 1444 }
1445 request_irq(vipi, mpic_ipi_action, IRQF_DISABLED|IRQF_PERCPU, 1445 err = request_irq(vipi, mpic_ipi_action,
1446 ipi_names[i], mpic); 1446 IRQF_DISABLED|IRQF_PERCPU,
1447 ipi_names[i], mpic);
1448 if (err) {
1449 printk(KERN_ERR "Request of irq %d for IPI %d failed\n",
1450 vipi, i);
1451 break;
1452 }
1447 } 1453 }
1448} 1454}
1449 1455
diff --git a/arch/ppc/syslib/pq2_sys.c b/arch/ppc/syslib/pq2_sys.c
index f52600c0db20..9c85300846c7 100644
--- a/arch/ppc/syslib/pq2_sys.c
+++ b/arch/ppc/syslib/pq2_sys.c
@@ -26,7 +26,7 @@ struct ppc_sys_spec ppc_sys_specs[] = {
26 { 26 {
27 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3, 27 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3,
28 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, 28 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3,
29 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC1, MPC82xx_CPM_SMC1, 29 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC2, MPC82xx_CPM_SMC1,
30 MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C, 30 MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C,
31 } 31 }
32 }, 32 },
@@ -39,7 +39,7 @@ struct ppc_sys_spec ppc_sys_specs[] = {
39 { 39 {
40 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_SCC1, 40 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_SCC1,
41 MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, MPC82xx_CPM_SCC4, 41 MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, MPC82xx_CPM_SCC4,
42 MPC82xx_CPM_MCC1, MPC82xx_CPM_SMC1, MPC82xx_CPM_SMC2, 42 MPC82xx_CPM_MCC2, MPC82xx_CPM_SMC1, MPC82xx_CPM_SMC2,
43 MPC82xx_CPM_SPI, MPC82xx_CPM_I2C, 43 MPC82xx_CPM_SPI, MPC82xx_CPM_I2C,
44 } 44 }
45 }, 45 },
@@ -47,52 +47,56 @@ struct ppc_sys_spec ppc_sys_specs[] = {
47 .ppc_sys_name = "8260", 47 .ppc_sys_name = "8260",
48 .mask = 0x0000ff00, 48 .mask = 0x0000ff00,
49 .value = 0x00000000, 49 .value = 0x00000000,
50 .num_devices = 12, 50 .num_devices = 13,
51 .device_list = (enum ppc_sys_devices[]) 51 .device_list = (enum ppc_sys_devices[])
52 { 52 {
53 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3, 53 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3,
54 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, 54 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3,
55 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC1, MPC82xx_CPM_SMC1, 55 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC1, MPC82xx_CPM_MCC2,
56 MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C, 56 MPC82xx_CPM_SMC1, MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI,
57 MPC82xx_CPM_I2C,
57 } 58 }
58 }, 59 },
59 { 60 {
60 .ppc_sys_name = "8264", 61 .ppc_sys_name = "8264",
61 .mask = 0x0000ff00, 62 .mask = 0x0000ff00,
62 .value = 0x00000000, 63 .value = 0x00000000,
63 .num_devices = 12, 64 .num_devices = 13,
64 .device_list = (enum ppc_sys_devices[]) 65 .device_list = (enum ppc_sys_devices[])
65 { 66 {
66 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3, 67 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3,
67 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, 68 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3,
68 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC1, MPC82xx_CPM_SMC1, 69 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC1, MPC82xx_CPM_MCC2,
69 MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C, 70 MPC82xx_CPM_SMC1, MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI,
71 MPC82xx_CPM_I2C,
70 } 72 }
71 }, 73 },
72 { 74 {
73 .ppc_sys_name = "8265", 75 .ppc_sys_name = "8265",
74 .mask = 0x0000ff00, 76 .mask = 0x0000ff00,
75 .value = 0x00000000, 77 .value = 0x00000000,
76 .num_devices = 12, 78 .num_devices = 13,
77 .device_list = (enum ppc_sys_devices[]) 79 .device_list = (enum ppc_sys_devices[])
78 { 80 {
79 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3, 81 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3,
80 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, 82 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3,
81 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC1, MPC82xx_CPM_SMC1, 83 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC1, MPC82xx_CPM_MCC2,
82 MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C, 84 MPC82xx_CPM_SMC1, MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI,
85 MPC82xx_CPM_I2C,
83 } 86 }
84 }, 87 },
85 { 88 {
86 .ppc_sys_name = "8266", 89 .ppc_sys_name = "8266",
87 .mask = 0x0000ff00, 90 .mask = 0x0000ff00,
88 .value = 0x00000000, 91 .value = 0x00000000,
89 .num_devices = 12, 92 .num_devices = 13,
90 .device_list = (enum ppc_sys_devices[]) 93 .device_list = (enum ppc_sys_devices[])
91 { 94 {
92 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3, 95 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3,
93 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, 96 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3,
94 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC1, MPC82xx_CPM_SMC1, 97 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC1, MPC82xx_CPM_MCC2,
95 MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C, 98 MPC82xx_CPM_SMC1, MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI,
99 MPC82xx_CPM_I2C,
96 } 100 }
97 }, 101 },
98 /* below is a list of the 8272 family of processors */ 102 /* below is a list of the 8272 family of processors */
@@ -159,7 +163,7 @@ struct ppc_sys_spec ppc_sys_specs[] = {
159 { 163 {
160 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3, 164 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3,
161 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, 165 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3,
162 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC1, MPC82xx_CPM_SMC1, 166 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC2, MPC82xx_CPM_SMC1,
163 MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C, 167 MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C,
164 }, 168 },
165 }, 169 },
@@ -172,7 +176,7 @@ struct ppc_sys_spec ppc_sys_specs[] = {
172 { 176 {
173 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3, 177 MPC82xx_CPM_FCC1, MPC82xx_CPM_FCC2, MPC82xx_CPM_FCC3,
174 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3, 178 MPC82xx_CPM_SCC1, MPC82xx_CPM_SCC2, MPC82xx_CPM_SCC3,
175 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC1, MPC82xx_CPM_SMC1, 179 MPC82xx_CPM_SCC4, MPC82xx_CPM_MCC2, MPC82xx_CPM_SMC1,
176 MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C, 180 MPC82xx_CPM_SMC2, MPC82xx_CPM_SPI, MPC82xx_CPM_I2C,
177 }, 181 },
178 }, 182 },
diff --git a/arch/sparc64/kernel/time.c b/arch/sparc64/kernel/time.c
index 6b9a06e42542..2d63d7689962 100644
--- a/arch/sparc64/kernel/time.c
+++ b/arch/sparc64/kernel/time.c
@@ -1030,7 +1030,7 @@ void __devinit setup_sparc64_timer(void)
1030 clockevents_register_device(sevt); 1030 clockevents_register_device(sevt);
1031} 1031}
1032 1032
1033#define SPARC64_NSEC_PER_CYC_SHIFT 32UL 1033#define SPARC64_NSEC_PER_CYC_SHIFT 10UL
1034 1034
1035static struct clocksource clocksource_tick = { 1035static struct clocksource clocksource_tick = {
1036 .rating = 100, 1036 .rating = 100,
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index d5939e659cbb..d3ea7f55283c 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -101,12 +101,6 @@ int libata_noacpi = 1;
101module_param_named(noacpi, libata_noacpi, int, 0444); 101module_param_named(noacpi, libata_noacpi, int, 0444);
102MODULE_PARM_DESC(noacpi, "Disables the use of ACPI in suspend/resume when set"); 102MODULE_PARM_DESC(noacpi, "Disables the use of ACPI in suspend/resume when set");
103 103
104int ata_spindown_compat = 1;
105module_param_named(spindown_compat, ata_spindown_compat, int, 0644);
106MODULE_PARM_DESC(spindown_compat, "Enable backward compatible spindown "
107 "behavior. Will be removed. More info can be found in "
108 "Documentation/feature-removal-schedule.txt\n");
109
110MODULE_AUTHOR("Jeff Garzik"); 104MODULE_AUTHOR("Jeff Garzik");
111MODULE_DESCRIPTION("Library module for ATA devices"); 105MODULE_DESCRIPTION("Library module for ATA devices");
112MODULE_LICENSE("GPL"); 106MODULE_LICENSE("GPL");
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index b6a1de8fad5b..242c43eef807 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -893,7 +893,7 @@ int ata_scsi_change_queue_depth(struct scsi_device *sdev, int queue_depth)
893 return queue_depth; 893 return queue_depth;
894} 894}
895 895
896/* XXX: for ata_spindown_compat */ 896/* XXX: for spindown warning */
897static void ata_delayed_done_timerfn(unsigned long arg) 897static void ata_delayed_done_timerfn(unsigned long arg)
898{ 898{
899 struct scsi_cmnd *scmd = (void *)arg; 899 struct scsi_cmnd *scmd = (void *)arg;
@@ -901,7 +901,7 @@ static void ata_delayed_done_timerfn(unsigned long arg)
901 scmd->scsi_done(scmd); 901 scmd->scsi_done(scmd);
902} 902}
903 903
904/* XXX: for ata_spindown_compat */ 904/* XXX: for spindown warning */
905static void ata_delayed_done(struct scsi_cmnd *scmd) 905static void ata_delayed_done(struct scsi_cmnd *scmd)
906{ 906{
907 static struct timer_list timer; 907 static struct timer_list timer;
@@ -966,8 +966,7 @@ static unsigned int ata_scsi_start_stop_xlat(struct ata_queued_cmd *qc)
966 * removed. Read Documentation/feature-removal-schedule.txt 966 * removed. Read Documentation/feature-removal-schedule.txt
967 * for more info. 967 * for more info.
968 */ 968 */
969 if (ata_spindown_compat && 969 if ((qc->dev->flags & ATA_DFLAG_SPUNDOWN) &&
970 (qc->dev->flags & ATA_DFLAG_SPUNDOWN) &&
971 (system_state == SYSTEM_HALT || 970 (system_state == SYSTEM_HALT ||
972 system_state == SYSTEM_POWER_OFF)) { 971 system_state == SYSTEM_POWER_OFF)) {
973 static unsigned long warned = 0; 972 static unsigned long warned = 0;
@@ -1395,7 +1394,7 @@ static void ata_scsi_qc_complete(struct ata_queued_cmd *qc)
1395 } 1394 }
1396 } 1395 }
1397 1396
1398 /* XXX: track spindown state for spindown_compat */ 1397 /* XXX: track spindown state for spindown skipping and warning */
1399 if (unlikely(qc->tf.command == ATA_CMD_STANDBY || 1398 if (unlikely(qc->tf.command == ATA_CMD_STANDBY ||
1400 qc->tf.command == ATA_CMD_STANDBYNOW1)) 1399 qc->tf.command == ATA_CMD_STANDBYNOW1))
1401 qc->dev->flags |= ATA_DFLAG_SPUNDOWN; 1400 qc->dev->flags |= ATA_DFLAG_SPUNDOWN;
diff --git a/drivers/ata/libata.h b/drivers/ata/libata.h
index 13cb0c9af68d..5e2466658420 100644
--- a/drivers/ata/libata.h
+++ b/drivers/ata/libata.h
@@ -58,7 +58,6 @@ extern int atapi_enabled;
58extern int atapi_dmadir; 58extern int atapi_dmadir;
59extern int libata_fua; 59extern int libata_fua;
60extern int libata_noacpi; 60extern int libata_noacpi;
61extern int ata_spindown_compat;
62extern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev); 61extern struct ata_queued_cmd *ata_qc_new_init(struct ata_device *dev);
63extern int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev, 62extern int ata_build_rw_tf(struct ata_taskfile *tf, struct ata_device *dev,
64 u64 block, u32 n_block, unsigned int tf_flags, 63 u64 block, u32 n_block, unsigned int tf_flags,
diff --git a/drivers/ata/sata_nv.c b/drivers/ata/sata_nv.c
index 4cea3ef75226..1a49c777fa6a 100644
--- a/drivers/ata/sata_nv.c
+++ b/drivers/ata/sata_nv.c
@@ -229,7 +229,6 @@ struct nv_host_priv {
229#define NV_ADMA_CHECK_INTR(GCTL, PORT) ((GCTL) & ( 1 << (19 + (12 * (PORT))))) 229#define NV_ADMA_CHECK_INTR(GCTL, PORT) ((GCTL) & ( 1 << (19 + (12 * (PORT)))))
230 230
231static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent); 231static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent);
232static void nv_remove_one (struct pci_dev *pdev);
233#ifdef CONFIG_PM 232#ifdef CONFIG_PM
234static int nv_pci_device_resume(struct pci_dev *pdev); 233static int nv_pci_device_resume(struct pci_dev *pdev);
235#endif 234#endif
@@ -288,12 +287,6 @@ static const struct pci_device_id nv_pci_tbl[] = {
288 { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA), GENERIC }, 287 { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA), GENERIC },
289 { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2), GENERIC }, 288 { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2), GENERIC },
290 { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3), GENERIC }, 289 { PCI_VDEVICE(NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3), GENERIC },
291 { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID,
292 PCI_ANY_ID, PCI_ANY_ID,
293 PCI_CLASS_STORAGE_IDE<<8, 0xffff00, GENERIC },
294 { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID,
295 PCI_ANY_ID, PCI_ANY_ID,
296 PCI_CLASS_STORAGE_RAID<<8, 0xffff00, GENERIC },
297 290
298 { } /* terminate list */ 291 { } /* terminate list */
299}; 292};
@@ -306,7 +299,7 @@ static struct pci_driver nv_pci_driver = {
306 .suspend = ata_pci_device_suspend, 299 .suspend = ata_pci_device_suspend,
307 .resume = nv_pci_device_resume, 300 .resume = nv_pci_device_resume,
308#endif 301#endif
309 .remove = nv_remove_one, 302 .remove = ata_pci_remove_one,
310}; 303};
311 304
312static struct scsi_host_template nv_sht = { 305static struct scsi_host_template nv_sht = {
@@ -1613,15 +1606,6 @@ static int nv_init_one (struct pci_dev *pdev, const struct pci_device_id *ent)
1613 IRQF_SHARED, ppi[0]->sht); 1606 IRQF_SHARED, ppi[0]->sht);
1614} 1607}
1615 1608
1616static void nv_remove_one (struct pci_dev *pdev)
1617{
1618 struct ata_host *host = dev_get_drvdata(&pdev->dev);
1619 struct nv_host_priv *hpriv = host->private_data;
1620
1621 ata_pci_remove_one(pdev);
1622 kfree(hpriv);
1623}
1624
1625#ifdef CONFIG_PM 1609#ifdef CONFIG_PM
1626static int nv_pci_device_resume(struct pci_dev *pdev) 1610static int nv_pci_device_resume(struct pci_dev *pdev)
1627{ 1611{
diff --git a/drivers/ata/sata_via.c b/drivers/ata/sata_via.c
index d105d2c189d2..ac4f43c4993f 100644
--- a/drivers/ata/sata_via.c
+++ b/drivers/ata/sata_via.c
@@ -441,7 +441,7 @@ static int vt6421_prepare_host(struct pci_dev *pdev, struct ata_host **r_host)
441 return -ENOMEM; 441 return -ENOMEM;
442 } 442 }
443 443
444 rc = pcim_iomap_regions(pdev, 0x1f, DRV_NAME); 444 rc = pcim_iomap_regions(pdev, 0x3f, DRV_NAME);
445 if (rc) { 445 if (rc) {
446 dev_printk(KERN_ERR, &pdev->dev, "failed to request/iomap " 446 dev_printk(KERN_ERR, &pdev->dev, "failed to request/iomap "
447 "PCI BARs (errno=%d)\n", rc); 447 "PCI BARs (errno=%d)\n", rc);
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
index 370dfe1c422e..5acc6c44aead 100644
--- a/drivers/block/cciss.c
+++ b/drivers/block/cciss.c
@@ -3469,13 +3469,39 @@ static int __devinit cciss_init_one(struct pci_dev *pdev,
3469 return -1; 3469 return -1;
3470} 3470}
3471 3471
3472static void cciss_remove_one(struct pci_dev *pdev) 3472static void cciss_shutdown(struct pci_dev *pdev)
3473{ 3473{
3474 ctlr_info_t *tmp_ptr; 3474 ctlr_info_t *tmp_ptr;
3475 int i, j; 3475 int i;
3476 char flush_buf[4]; 3476 char flush_buf[4];
3477 int return_code; 3477 int return_code;
3478 3478
3479 tmp_ptr = pci_get_drvdata(pdev);
3480 if (tmp_ptr == NULL)
3481 return;
3482 i = tmp_ptr->ctlr;
3483 if (hba[i] == NULL)
3484 return;
3485
3486 /* Turn board interrupts off and send the flush cache command */
3487 /* sendcmd will turn off interrupt, and send the flush...
3488 * To write all data in the battery backed cache to disks */
3489 memset(flush_buf, 0, 4);
3490 return_code = sendcmd(CCISS_CACHE_FLUSH, i, flush_buf, 4, 0, 0, 0, NULL,
3491 TYPE_CMD);
3492 if (return_code == IO_OK) {
3493 printk(KERN_INFO "Completed flushing cache on controller %d\n", i);
3494 } else {
3495 printk(KERN_WARNING "Error flushing cache on controller %d\n", i);
3496 }
3497 free_irq(hba[i]->intr[2], hba[i]);
3498}
3499
3500static void __devexit cciss_remove_one(struct pci_dev *pdev)
3501{
3502 ctlr_info_t *tmp_ptr;
3503 int i, j;
3504
3479 if (pci_get_drvdata(pdev) == NULL) { 3505 if (pci_get_drvdata(pdev) == NULL) {
3480 printk(KERN_ERR "cciss: Unable to remove device \n"); 3506 printk(KERN_ERR "cciss: Unable to remove device \n");
3481 return; 3507 return;
@@ -3506,18 +3532,7 @@ static void cciss_remove_one(struct pci_dev *pdev)
3506 3532
3507 cciss_unregister_scsi(i); /* unhook from SCSI subsystem */ 3533 cciss_unregister_scsi(i); /* unhook from SCSI subsystem */
3508 3534
3509 /* Turn board interrupts off and send the flush cache command */ 3535 cciss_shutdown(pdev);
3510 /* sendcmd will turn off interrupt, and send the flush...
3511 * To write all data in the battery backed cache to disks */
3512 memset(flush_buf, 0, 4);
3513 return_code = sendcmd(CCISS_CACHE_FLUSH, i, flush_buf, 4, 0, 0, 0, NULL,
3514 TYPE_CMD);
3515 if (return_code == IO_OK) {
3516 printk(KERN_INFO "Completed flushing cache on controller %d\n", i);
3517 } else {
3518 printk(KERN_WARNING "Error flushing cache on controller %d\n", i);
3519 }
3520 free_irq(hba[i]->intr[2], hba[i]);
3521 3536
3522#ifdef CONFIG_PCI_MSI 3537#ifdef CONFIG_PCI_MSI
3523 if (hba[i]->msix_vector) 3538 if (hba[i]->msix_vector)
@@ -3550,7 +3565,7 @@ static struct pci_driver cciss_pci_driver = {
3550 .probe = cciss_init_one, 3565 .probe = cciss_init_one,
3551 .remove = __devexit_p(cciss_remove_one), 3566 .remove = __devexit_p(cciss_remove_one),
3552 .id_table = cciss_pci_device_id, /* id_table */ 3567 .id_table = cciss_pci_device_id, /* id_table */
3553 .shutdown = cciss_remove_one, 3568 .shutdown = cciss_shutdown,
3554}; 3569};
3555 3570
3556/* 3571/*
diff --git a/drivers/char/watchdog/booke_wdt.c b/drivers/char/watchdog/booke_wdt.c
index 0e23f29f71ab..0f5c77ddd39d 100644
--- a/drivers/char/watchdog/booke_wdt.c
+++ b/drivers/char/watchdog/booke_wdt.c
@@ -24,7 +24,7 @@
24#include <asm/uaccess.h> 24#include <asm/uaccess.h>
25#include <asm/system.h> 25#include <asm/system.h>
26 26
27/* If the kernel parameter wdt_enable=1, the watchdog will be enabled at boot. 27/* If the kernel parameter wdt=1, the watchdog will be enabled at boot.
28 * Also, the wdt_period sets the watchdog timer period timeout. 28 * Also, the wdt_period sets the watchdog timer period timeout.
29 * For E500 cpus the wdt_period sets which bit changing from 0->1 will 29 * For E500 cpus the wdt_period sets which bit changing from 0->1 will
30 * trigger a watchog timeout. This watchdog timeout will occur 3 times, the 30 * trigger a watchog timeout. This watchdog timeout will occur 3 times, the
diff --git a/drivers/macintosh/windfarm_core.c b/drivers/macintosh/windfarm_core.c
index 192b26e97777..11ced17f438a 100644
--- a/drivers/macintosh/windfarm_core.c
+++ b/drivers/macintosh/windfarm_core.c
@@ -216,7 +216,10 @@ int wf_register_control(struct wf_control *new_ct)
216 new_ct->attr.attr.mode = 0644; 216 new_ct->attr.attr.mode = 0644;
217 new_ct->attr.show = wf_show_control; 217 new_ct->attr.show = wf_show_control;
218 new_ct->attr.store = wf_store_control; 218 new_ct->attr.store = wf_store_control;
219 device_create_file(&wf_platform_device.dev, &new_ct->attr); 219 if (device_create_file(&wf_platform_device.dev, &new_ct->attr))
220 printk(KERN_WARNING "windfarm: device_create_file failed"
221 " for %s\n", new_ct->name);
222 /* the subsystem still does useful work without the file */
220 223
221 DBG("wf: Registered control %s\n", new_ct->name); 224 DBG("wf: Registered control %s\n", new_ct->name);
222 225
@@ -326,7 +329,10 @@ int wf_register_sensor(struct wf_sensor *new_sr)
326 new_sr->attr.attr.mode = 0444; 329 new_sr->attr.attr.mode = 0444;
327 new_sr->attr.show = wf_show_sensor; 330 new_sr->attr.show = wf_show_sensor;
328 new_sr->attr.store = NULL; 331 new_sr->attr.store = NULL;
329 device_create_file(&wf_platform_device.dev, &new_sr->attr); 332 if (device_create_file(&wf_platform_device.dev, &new_sr->attr))
333 printk(KERN_WARNING "windfarm: device_create_file failed"
334 " for %s\n", new_sr->name);
335 /* the subsystem still does useful work without the file */
330 336
331 DBG("wf: Registered sensor %s\n", new_sr->name); 337 DBG("wf: Registered sensor %s\n", new_sr->name);
332 338
diff --git a/drivers/net/e1000/e1000.h b/drivers/net/e1000/e1000.h
index a9ea67e75c1b..16a6edfeba41 100644
--- a/drivers/net/e1000/e1000.h
+++ b/drivers/net/e1000/e1000.h
@@ -333,11 +333,9 @@ struct e1000_adapter {
333 struct e1000_tx_ring test_tx_ring; 333 struct e1000_tx_ring test_tx_ring;
334 struct e1000_rx_ring test_rx_ring; 334 struct e1000_rx_ring test_rx_ring;
335 335
336
337 int msg_enable; 336 int msg_enable;
338#ifdef CONFIG_PCI_MSI
339 boolean_t have_msi; 337 boolean_t have_msi;
340#endif 338
341 /* to not mess up cache alignment, always add to the bottom */ 339 /* to not mess up cache alignment, always add to the bottom */
342 boolean_t tso_force; 340 boolean_t tso_force;
343 boolean_t smart_power_down; /* phy smart power down */ 341 boolean_t smart_power_down; /* phy smart power down */
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index 637ae8f68791..49be393e1c1d 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -158,9 +158,7 @@ static struct net_device_stats * e1000_get_stats(struct net_device *netdev);
158static int e1000_change_mtu(struct net_device *netdev, int new_mtu); 158static int e1000_change_mtu(struct net_device *netdev, int new_mtu);
159static int e1000_set_mac(struct net_device *netdev, void *p); 159static int e1000_set_mac(struct net_device *netdev, void *p);
160static irqreturn_t e1000_intr(int irq, void *data); 160static irqreturn_t e1000_intr(int irq, void *data);
161#ifdef CONFIG_PCI_MSI
162static irqreturn_t e1000_intr_msi(int irq, void *data); 161static irqreturn_t e1000_intr_msi(int irq, void *data);
163#endif
164static boolean_t e1000_clean_tx_irq(struct e1000_adapter *adapter, 162static boolean_t e1000_clean_tx_irq(struct e1000_adapter *adapter,
165 struct e1000_tx_ring *tx_ring); 163 struct e1000_tx_ring *tx_ring);
166#ifdef CONFIG_E1000_NAPI 164#ifdef CONFIG_E1000_NAPI
@@ -300,31 +298,26 @@ module_exit(e1000_exit_module);
300static int e1000_request_irq(struct e1000_adapter *adapter) 298static int e1000_request_irq(struct e1000_adapter *adapter)
301{ 299{
302 struct net_device *netdev = adapter->netdev; 300 struct net_device *netdev = adapter->netdev;
303 int flags, err = 0; 301 void (*handler) = &e1000_intr;
302 int irq_flags = IRQF_SHARED;
303 int err;
304 304
305 flags = IRQF_SHARED;
306#ifdef CONFIG_PCI_MSI
307 if (adapter->hw.mac_type >= e1000_82571) { 305 if (adapter->hw.mac_type >= e1000_82571) {
308 adapter->have_msi = TRUE; 306 adapter->have_msi = !pci_enable_msi(adapter->pdev);
309 if ((err = pci_enable_msi(adapter->pdev))) { 307 if (adapter->have_msi) {
310 DPRINTK(PROBE, ERR, 308 handler = &e1000_intr_msi;
311 "Unable to allocate MSI interrupt Error: %d\n", err); 309 irq_flags = 0;
312 adapter->have_msi = FALSE;
313 } 310 }
314 } 311 }
315 if (adapter->have_msi) { 312
316 flags &= ~IRQF_SHARED; 313 err = request_irq(adapter->pdev->irq, handler, irq_flags, netdev->name,
317 err = request_irq(adapter->pdev->irq, &e1000_intr_msi, flags, 314 netdev);
318 netdev->name, netdev); 315 if (err) {
319 if (err) 316 if (adapter->have_msi)
320 DPRINTK(PROBE, ERR, 317 pci_disable_msi(adapter->pdev);
321 "Unable to allocate interrupt Error: %d\n", err);
322 } else
323#endif
324 if ((err = request_irq(adapter->pdev->irq, &e1000_intr, flags,
325 netdev->name, netdev)))
326 DPRINTK(PROBE, ERR, 318 DPRINTK(PROBE, ERR,
327 "Unable to allocate interrupt Error: %d\n", err); 319 "Unable to allocate interrupt Error: %d\n", err);
320 }
328 321
329 return err; 322 return err;
330} 323}
@@ -335,10 +328,8 @@ static void e1000_free_irq(struct e1000_adapter *adapter)
335 328
336 free_irq(adapter->pdev->irq, netdev); 329 free_irq(adapter->pdev->irq, netdev);
337 330
338#ifdef CONFIG_PCI_MSI
339 if (adapter->have_msi) 331 if (adapter->have_msi)
340 pci_disable_msi(adapter->pdev); 332 pci_disable_msi(adapter->pdev);
341#endif
342} 333}
343 334
344/** 335/**
@@ -3744,7 +3735,6 @@ e1000_update_stats(struct e1000_adapter *adapter)
3744 3735
3745 spin_unlock_irqrestore(&adapter->stats_lock, flags); 3736 spin_unlock_irqrestore(&adapter->stats_lock, flags);
3746} 3737}
3747#ifdef CONFIG_PCI_MSI
3748 3738
3749/** 3739/**
3750 * e1000_intr_msi - Interrupt Handler 3740 * e1000_intr_msi - Interrupt Handler
@@ -3810,7 +3800,6 @@ e1000_intr_msi(int irq, void *data)
3810 3800
3811 return IRQ_HANDLED; 3801 return IRQ_HANDLED;
3812} 3802}
3813#endif
3814 3803
3815/** 3804/**
3816 * e1000_intr - Interrupt Handler 3805 * e1000_intr - Interrupt Handler
diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c
index b666a0cc0642..f5b3cba23fc5 100644
--- a/drivers/net/gianfar.c
+++ b/drivers/net/gianfar.c
@@ -1025,6 +1025,15 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)
1025 1025
1026 dev->trans_start = jiffies; 1026 dev->trans_start = jiffies;
1027 1027
1028 /* The powerpc-specific eieio() is used, as wmb() has too strong
1029 * semantics (it requires synchronization between cacheable and
1030 * uncacheable mappings, which eieio doesn't provide and which we
1031 * don't need), thus requiring a more expensive sync instruction. At
1032 * some point, the set of architecture-independent barrier functions
1033 * should be expanded to include weaker barriers.
1034 */
1035
1036 eieio();
1028 txbdp->status = status; 1037 txbdp->status = status;
1029 1038
1030 /* If this was the last BD in the ring, the next one */ 1039 /* If this was the last BD in the ring, the next one */
@@ -1301,6 +1310,7 @@ struct sk_buff * gfar_new_skb(struct net_device *dev, struct rxbd8 *bdp)
1301 bdp->length = 0; 1310 bdp->length = 0;
1302 1311
1303 /* Mark the buffer empty */ 1312 /* Mark the buffer empty */
1313 eieio();
1304 bdp->status |= (RXBD_EMPTY | RXBD_INTERRUPT); 1314 bdp->status |= (RXBD_EMPTY | RXBD_INTERRUPT);
1305 1315
1306 return skb; 1316 return skb;
@@ -1484,6 +1494,7 @@ int gfar_clean_rx_ring(struct net_device *dev, int rx_work_limit)
1484 bdp = priv->cur_rx; 1494 bdp = priv->cur_rx;
1485 1495
1486 while (!((bdp->status & RXBD_EMPTY) || (--rx_work_limit < 0))) { 1496 while (!((bdp->status & RXBD_EMPTY) || (--rx_work_limit < 0))) {
1497 rmb();
1487 skb = priv->rx_skbuff[priv->skb_currx]; 1498 skb = priv->rx_skbuff[priv->skb_currx];
1488 1499
1489 if (!(bdp->status & 1500 if (!(bdp->status &
diff --git a/drivers/net/ibm_emac/ibm_emac_core.c b/drivers/net/ibm_emac/ibm_emac_core.c
index 50035ebd4f52..f752e5fc65ba 100644
--- a/drivers/net/ibm_emac/ibm_emac_core.c
+++ b/drivers/net/ibm_emac/ibm_emac_core.c
@@ -926,7 +926,7 @@ static int emac_link_differs(struct ocp_enet_private *dev)
926 int duplex = r & EMAC_MR1_FDE ? DUPLEX_FULL : DUPLEX_HALF; 926 int duplex = r & EMAC_MR1_FDE ? DUPLEX_FULL : DUPLEX_HALF;
927 int speed, pause, asym_pause; 927 int speed, pause, asym_pause;
928 928
929 if (r & (EMAC_MR1_MF_1000 | EMAC_MR1_MF_1000GPCS)) 929 if (r & EMAC_MR1_MF_1000)
930 speed = SPEED_1000; 930 speed = SPEED_1000;
931 else if (r & EMAC_MR1_MF_100) 931 else if (r & EMAC_MR1_MF_100)
932 speed = SPEED_100; 932 speed = SPEED_100;
diff --git a/drivers/net/ibm_emac/ibm_emac_mal.c b/drivers/net/ibm_emac/ibm_emac_mal.c
index 6c0f071e4052..cabd9846a5ee 100644
--- a/drivers/net/ibm_emac/ibm_emac_mal.c
+++ b/drivers/net/ibm_emac/ibm_emac_mal.c
@@ -59,8 +59,7 @@ int __init mal_register_commac(struct ibm_ocp_mal *mal,
59 return 0; 59 return 0;
60} 60}
61 61
62void __exit mal_unregister_commac(struct ibm_ocp_mal *mal, 62void mal_unregister_commac(struct ibm_ocp_mal *mal, struct mal_commac *commac)
63 struct mal_commac *commac)
64{ 63{
65 unsigned long flags; 64 unsigned long flags;
66 local_irq_save(flags); 65 local_irq_save(flags);
diff --git a/drivers/net/ibm_emac/ibm_emac_mal.h b/drivers/net/ibm_emac/ibm_emac_mal.h
index 407d2acbf7c7..64bc338acc6c 100644
--- a/drivers/net/ibm_emac/ibm_emac_mal.h
+++ b/drivers/net/ibm_emac/ibm_emac_mal.h
@@ -223,8 +223,7 @@ void mal_exit(void) __exit;
223 223
224int mal_register_commac(struct ibm_ocp_mal *mal, 224int mal_register_commac(struct ibm_ocp_mal *mal,
225 struct mal_commac *commac) __init; 225 struct mal_commac *commac) __init;
226void mal_unregister_commac(struct ibm_ocp_mal *mal, 226void mal_unregister_commac(struct ibm_ocp_mal *mal, struct mal_commac *commac);
227 struct mal_commac *commac) __exit;
228int mal_set_rcbs(struct ibm_ocp_mal *mal, int channel, unsigned long size); 227int mal_set_rcbs(struct ibm_ocp_mal *mal, int channel, unsigned long size);
229 228
230/* Returns BD ring offset for a particular channel 229/* Returns BD ring offset for a particular channel
diff --git a/drivers/net/ibm_emac/ibm_emac_phy.c b/drivers/net/ibm_emac/ibm_emac_phy.c
index 9074f76ee2bf..e57862b34cae 100644
--- a/drivers/net/ibm_emac/ibm_emac_phy.c
+++ b/drivers/net/ibm_emac/ibm_emac_phy.c
@@ -22,6 +22,7 @@
22 22
23#include <asm/ocp.h> 23#include <asm/ocp.h>
24 24
25#include "ibm_emac_core.h"
25#include "ibm_emac_phy.h" 26#include "ibm_emac_phy.h"
26 27
27static inline int phy_read(struct mii_phy *phy, int reg) 28static inline int phy_read(struct mii_phy *phy, int reg)
@@ -34,11 +35,39 @@ static inline void phy_write(struct mii_phy *phy, int reg, int val)
34 phy->mdio_write(phy->dev, phy->address, reg, val); 35 phy->mdio_write(phy->dev, phy->address, reg, val);
35} 36}
36 37
37int mii_reset_phy(struct mii_phy *phy) 38/*
39 * polls MII_BMCR until BMCR_RESET bit clears or operation times out.
40 *
41 * returns:
42 * >= 0 => success, value in BMCR returned to caller
43 * -EBUSY => failure, RESET bit never cleared
44 * otherwise => failure, lower level PHY read failed
45 */
46static int mii_spin_reset_complete(struct mii_phy *phy)
38{ 47{
39 int val; 48 int val;
40 int limit = 10000; 49 int limit = 10000;
41 50
51 while (limit--) {
52 val = phy_read(phy, MII_BMCR);
53 if (val >= 0 && !(val & BMCR_RESET))
54 return val; /* success */
55 udelay(10);
56 }
57 if (val & BMCR_RESET)
58 val = -EBUSY;
59
60 if (net_ratelimit())
61 printk(KERN_ERR "emac%d: PHY reset timeout (%d)\n",
62 ((struct ocp_enet_private *)phy->dev->priv)->def->index,
63 val);
64 return val;
65}
66
67int mii_reset_phy(struct mii_phy *phy)
68{
69 int val;
70
42 val = phy_read(phy, MII_BMCR); 71 val = phy_read(phy, MII_BMCR);
43 val &= ~BMCR_ISOLATE; 72 val &= ~BMCR_ISOLATE;
44 val |= BMCR_RESET; 73 val |= BMCR_RESET;
@@ -46,16 +75,11 @@ int mii_reset_phy(struct mii_phy *phy)
46 75
47 udelay(300); 76 udelay(300);
48 77
49 while (limit--) { 78 val = mii_spin_reset_complete(phy);
50 val = phy_read(phy, MII_BMCR); 79 if (val >= 0 && (val & BMCR_ISOLATE))
51 if (val >= 0 && (val & BMCR_RESET) == 0)
52 break;
53 udelay(10);
54 }
55 if ((val & BMCR_ISOLATE) && limit > 0)
56 phy_write(phy, MII_BMCR, val & ~BMCR_ISOLATE); 80 phy_write(phy, MII_BMCR, val & ~BMCR_ISOLATE);
57 81
58 return limit <= 0; 82 return val < 0;
59} 83}
60 84
61static int genmii_setup_aneg(struct mii_phy *phy, u32 advertise) 85static int genmii_setup_aneg(struct mii_phy *phy, u32 advertise)
@@ -102,8 +126,14 @@ static int genmii_setup_aneg(struct mii_phy *phy, u32 advertise)
102 } 126 }
103 127
104 /* Start/Restart aneg */ 128 /* Start/Restart aneg */
105 ctl = phy_read(phy, MII_BMCR); 129 /* on some PHYs (e.g. National DP83843) a write to MII_ADVERTISE
106 ctl |= (BMCR_ANENABLE | BMCR_ANRESTART); 130 * causes BMCR_RESET to be set on the next read of MII_BMCR, which
131 * if not checked for causes the PHY to be reset below */
132 ctl = mii_spin_reset_complete(phy);
133 if (ctl < 0)
134 return ctl;
135
136 ctl |= BMCR_ANENABLE | BMCR_ANRESTART;
107 phy_write(phy, MII_BMCR, ctl); 137 phy_write(phy, MII_BMCR, ctl);
108 138
109 return 0; 139 return 0;
@@ -118,13 +148,13 @@ static int genmii_setup_forced(struct mii_phy *phy, int speed, int fd)
118 phy->duplex = fd; 148 phy->duplex = fd;
119 phy->pause = phy->asym_pause = 0; 149 phy->pause = phy->asym_pause = 0;
120 150
151 /* First reset the PHY */
152 mii_reset_phy(phy);
153
121 ctl = phy_read(phy, MII_BMCR); 154 ctl = phy_read(phy, MII_BMCR);
122 if (ctl < 0) 155 if (ctl < 0)
123 return ctl; 156 return ctl;
124 ctl &= ~(BMCR_FULLDPLX | BMCR_SPEED100 | BMCR_ANENABLE); 157 ctl &= ~(BMCR_FULLDPLX | BMCR_SPEED100 | BMCR_ANENABLE | BMCR_SPEED1000);
125
126 /* First reset the PHY */
127 phy_write(phy, MII_BMCR, ctl | BMCR_RESET);
128 158
129 /* Select speed & duplex */ 159 /* Select speed & duplex */
130 switch (speed) { 160 switch (speed) {
diff --git a/drivers/net/ibm_emac/ibm_emac_rgmii.c b/drivers/net/ibm_emac/ibm_emac_rgmii.c
index 53d281cb9a16..9dbb5e5936c3 100644
--- a/drivers/net/ibm_emac/ibm_emac_rgmii.c
+++ b/drivers/net/ibm_emac/ibm_emac_rgmii.c
@@ -162,7 +162,7 @@ void rgmii_set_speed(struct ocp_device *ocpdev, int input, int speed)
162 out_be32(&dev->base->ssr, ssr); 162 out_be32(&dev->base->ssr, ssr);
163} 163}
164 164
165void __exit __rgmii_fini(struct ocp_device *ocpdev, int input) 165void __rgmii_fini(struct ocp_device *ocpdev, int input)
166{ 166{
167 struct ibm_ocp_rgmii *dev = ocp_get_drvdata(ocpdev); 167 struct ibm_ocp_rgmii *dev = ocp_get_drvdata(ocpdev);
168 BUG_ON(!dev || dev->users == 0); 168 BUG_ON(!dev || dev->users == 0);
diff --git a/drivers/net/ibm_emac/ibm_emac_rgmii.h b/drivers/net/ibm_emac/ibm_emac_rgmii.h
index 117ea486c2ca..971e45815c6c 100644
--- a/drivers/net/ibm_emac/ibm_emac_rgmii.h
+++ b/drivers/net/ibm_emac/ibm_emac_rgmii.h
@@ -37,7 +37,7 @@ struct ibm_ocp_rgmii {
37#ifdef CONFIG_IBM_EMAC_RGMII 37#ifdef CONFIG_IBM_EMAC_RGMII
38int rgmii_attach(void *emac) __init; 38int rgmii_attach(void *emac) __init;
39 39
40void __rgmii_fini(struct ocp_device *ocpdev, int input) __exit; 40void __rgmii_fini(struct ocp_device *ocpdev, int input);
41static inline void rgmii_fini(struct ocp_device *ocpdev, int input) 41static inline void rgmii_fini(struct ocp_device *ocpdev, int input)
42{ 42{
43 if (ocpdev) 43 if (ocpdev)
diff --git a/drivers/net/ibm_emac/ibm_emac_tah.c b/drivers/net/ibm_emac/ibm_emac_tah.c
index e287b451bb44..3c2d5ba522a1 100644
--- a/drivers/net/ibm_emac/ibm_emac_tah.c
+++ b/drivers/net/ibm_emac/ibm_emac_tah.c
@@ -63,7 +63,7 @@ int __init tah_attach(void *emac)
63 return 0; 63 return 0;
64} 64}
65 65
66void __exit __tah_fini(struct ocp_device *ocpdev) 66void __tah_fini(struct ocp_device *ocpdev)
67{ 67{
68 struct tah_regs *p = ocp_get_drvdata(ocpdev); 68 struct tah_regs *p = ocp_get_drvdata(ocpdev);
69 BUG_ON(!p); 69 BUG_ON(!p);
diff --git a/drivers/net/ibm_emac/ibm_emac_tah.h b/drivers/net/ibm_emac/ibm_emac_tah.h
index 38153945a240..ccf64915e1e4 100644
--- a/drivers/net/ibm_emac/ibm_emac_tah.h
+++ b/drivers/net/ibm_emac/ibm_emac_tah.h
@@ -55,7 +55,7 @@ struct tah_regs {
55#ifdef CONFIG_IBM_EMAC_TAH 55#ifdef CONFIG_IBM_EMAC_TAH
56int tah_attach(void *emac) __init; 56int tah_attach(void *emac) __init;
57 57
58void __tah_fini(struct ocp_device *ocpdev) __exit; 58void __tah_fini(struct ocp_device *ocpdev);
59static inline void tah_fini(struct ocp_device *ocpdev) 59static inline void tah_fini(struct ocp_device *ocpdev)
60{ 60{
61 if (ocpdev) 61 if (ocpdev)
diff --git a/drivers/net/ibm_emac/ibm_emac_zmii.c b/drivers/net/ibm_emac/ibm_emac_zmii.c
index 37dc8f342868..2c0fdb0cabff 100644
--- a/drivers/net/ibm_emac/ibm_emac_zmii.c
+++ b/drivers/net/ibm_emac/ibm_emac_zmii.c
@@ -215,7 +215,7 @@ void __zmii_set_speed(struct ocp_device *ocpdev, int input, int speed)
215 out_be32(&dev->base->ssr, ssr); 215 out_be32(&dev->base->ssr, ssr);
216} 216}
217 217
218void __exit __zmii_fini(struct ocp_device *ocpdev, int input) 218void __zmii_fini(struct ocp_device *ocpdev, int input)
219{ 219{
220 struct ibm_ocp_zmii *dev = ocp_get_drvdata(ocpdev); 220 struct ibm_ocp_zmii *dev = ocp_get_drvdata(ocpdev);
221 BUG_ON(!dev || dev->users == 0); 221 BUG_ON(!dev || dev->users == 0);
diff --git a/drivers/net/ibm_emac/ibm_emac_zmii.h b/drivers/net/ibm_emac/ibm_emac_zmii.h
index 972e3a44a09f..fad6d8bf983a 100644
--- a/drivers/net/ibm_emac/ibm_emac_zmii.h
+++ b/drivers/net/ibm_emac/ibm_emac_zmii.h
@@ -40,7 +40,7 @@ struct ibm_ocp_zmii {
40#ifdef CONFIG_IBM_EMAC_ZMII 40#ifdef CONFIG_IBM_EMAC_ZMII
41int zmii_attach(void *emac) __init; 41int zmii_attach(void *emac) __init;
42 42
43void __zmii_fini(struct ocp_device *ocpdev, int input) __exit; 43void __zmii_fini(struct ocp_device *ocpdev, int input);
44static inline void zmii_fini(struct ocp_device *ocpdev, int input) 44static inline void zmii_fini(struct ocp_device *ocpdev, int input)
45{ 45{
46 if (ocpdev) 46 if (ocpdev)
diff --git a/drivers/net/ixgb/ixgb.h b/drivers/net/ixgb/ixgb.h
index c8e90861f869..3569d5b03388 100644
--- a/drivers/net/ixgb/ixgb.h
+++ b/drivers/net/ixgb/ixgb.h
@@ -193,8 +193,6 @@ struct ixgb_adapter {
193 u16 msg_enable; 193 u16 msg_enable;
194 struct ixgb_hw_stats stats; 194 struct ixgb_hw_stats stats;
195 uint32_t alloc_rx_buff_failed; 195 uint32_t alloc_rx_buff_failed;
196#ifdef CONFIG_PCI_MSI
197 boolean_t have_msi; 196 boolean_t have_msi;
198#endif
199}; 197};
200#endif /* _IXGB_H_ */ 198#endif /* _IXGB_H_ */
diff --git a/drivers/net/ixgb/ixgb_main.c b/drivers/net/ixgb/ixgb_main.c
index 6d2b059371f1..991c8833e23c 100644
--- a/drivers/net/ixgb/ixgb_main.c
+++ b/drivers/net/ixgb/ixgb_main.c
@@ -227,7 +227,7 @@ int
227ixgb_up(struct ixgb_adapter *adapter) 227ixgb_up(struct ixgb_adapter *adapter)
228{ 228{
229 struct net_device *netdev = adapter->netdev; 229 struct net_device *netdev = adapter->netdev;
230 int err; 230 int err, irq_flags = IRQF_SHARED;
231 int max_frame = netdev->mtu + ENET_HEADER_SIZE + ENET_FCS_LENGTH; 231 int max_frame = netdev->mtu + ENET_HEADER_SIZE + ENET_FCS_LENGTH;
232 struct ixgb_hw *hw = &adapter->hw; 232 struct ixgb_hw *hw = &adapter->hw;
233 233
@@ -246,26 +246,21 @@ ixgb_up(struct ixgb_adapter *adapter)
246 /* disable interrupts and get the hardware into a known state */ 246 /* disable interrupts and get the hardware into a known state */
247 IXGB_WRITE_REG(&adapter->hw, IMC, 0xffffffff); 247 IXGB_WRITE_REG(&adapter->hw, IMC, 0xffffffff);
248 248
249#ifdef CONFIG_PCI_MSI 249 /* only enable MSI if bus is in PCI-X mode */
250 { 250 if (IXGB_READ_REG(&adapter->hw, STATUS) & IXGB_STATUS_PCIX_MODE) {
251 boolean_t pcix = (IXGB_READ_REG(&adapter->hw, STATUS) & 251 err = pci_enable_msi(adapter->pdev);
252 IXGB_STATUS_PCIX_MODE) ? TRUE : FALSE; 252 if (!err) {
253 adapter->have_msi = TRUE; 253 adapter->have_msi = 1;
254 254 irq_flags = 0;
255 if (!pcix) 255 }
256 adapter->have_msi = FALSE;
257 else if((err = pci_enable_msi(adapter->pdev))) {
258 DPRINTK(PROBE, ERR,
259 "Unable to allocate MSI interrupt Error: %d\n", err);
260 adapter->have_msi = FALSE;
261 /* proceed to try to request regular interrupt */ 256 /* proceed to try to request regular interrupt */
262 } 257 }
263 }
264 258
265#endif 259 err = request_irq(adapter->pdev->irq, &ixgb_intr, irq_flags,
266 if((err = request_irq(adapter->pdev->irq, &ixgb_intr, 260 netdev->name, netdev);
267 IRQF_SHARED | IRQF_SAMPLE_RANDOM, 261 if (err) {
268 netdev->name, netdev))) { 262 if (adapter->have_msi)
263 pci_disable_msi(adapter->pdev);
269 DPRINTK(PROBE, ERR, 264 DPRINTK(PROBE, ERR,
270 "Unable to allocate interrupt Error: %d\n", err); 265 "Unable to allocate interrupt Error: %d\n", err);
271 return err; 266 return err;
@@ -307,11 +302,10 @@ ixgb_down(struct ixgb_adapter *adapter, boolean_t kill_watchdog)
307 302
308 ixgb_irq_disable(adapter); 303 ixgb_irq_disable(adapter);
309 free_irq(adapter->pdev->irq, netdev); 304 free_irq(adapter->pdev->irq, netdev);
310#ifdef CONFIG_PCI_MSI 305
311 if(adapter->have_msi == TRUE) 306 if (adapter->have_msi)
312 pci_disable_msi(adapter->pdev); 307 pci_disable_msi(adapter->pdev);
313 308
314#endif
315 if(kill_watchdog) 309 if(kill_watchdog)
316 del_timer_sync(&adapter->watchdog_timer); 310 del_timer_sync(&adapter->watchdog_timer);
317#ifdef CONFIG_IXGB_NAPI 311#ifdef CONFIG_IXGB_NAPI
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
index cf0e96adfe44..a36892457761 100644
--- a/drivers/net/netxen/netxen_nic_init.c
+++ b/drivers/net/netxen/netxen_nic_init.c
@@ -1216,7 +1216,7 @@ u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctxid, int max)
1216 /* Window = 1 */ 1216 /* Window = 1 */
1217 writel(consumer, 1217 writel(consumer,
1218 NETXEN_CRB_NORMALIZE(adapter, 1218 NETXEN_CRB_NORMALIZE(adapter,
1219 recv_crb_registers[ctxid]. 1219 recv_crb_registers[adapter->portnum].
1220 crb_rcv_status_consumer)); 1220 crb_rcv_status_consumer));
1221 } 1221 }
1222 1222
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 104e20456e6f..832fd69a0e59 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -40,7 +40,6 @@
40#include <linux/if_vlan.h> 40#include <linux/if_vlan.h>
41#include <linux/prefetch.h> 41#include <linux/prefetch.h>
42#include <linux/mii.h> 42#include <linux/mii.h>
43#include <linux/dmi.h>
44 43
45#include <asm/irq.h> 44#include <asm/irq.h>
46 45
@@ -151,8 +150,6 @@ static const char *yukon2_name[] = {
151 "FE", /* 0xb7 */ 150 "FE", /* 0xb7 */
152}; 151};
153 152
154static int dmi_blacklisted;
155
156/* Access to external PHY */ 153/* Access to external PHY */
157static int gm_phy_write(struct sky2_hw *hw, unsigned port, u16 reg, u16 val) 154static int gm_phy_write(struct sky2_hw *hw, unsigned port, u16 reg, u16 val)
158{ 155{
@@ -307,10 +304,13 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port)
307 PHY_M_EC_MAC_S_MSK); 304 PHY_M_EC_MAC_S_MSK);
308 ectrl |= PHY_M_EC_MAC_S(MAC_TX_CLK_25_MHZ); 305 ectrl |= PHY_M_EC_MAC_S(MAC_TX_CLK_25_MHZ);
309 306
307 /* on PHY 88E1040 Rev.D0 (and newer) downshift control changed */
310 if (hw->chip_id == CHIP_ID_YUKON_EC) 308 if (hw->chip_id == CHIP_ID_YUKON_EC)
309 /* set downshift counter to 3x and enable downshift */
311 ectrl |= PHY_M_EC_DSC_2(2) | PHY_M_EC_DOWN_S_ENA; 310 ectrl |= PHY_M_EC_DSC_2(2) | PHY_M_EC_DOWN_S_ENA;
312 else 311 else
313 ectrl |= PHY_M_EC_M_DSC(2) | PHY_M_EC_S_DSC(3); 312 /* set master & slave downshift counter to 1x */
313 ectrl |= PHY_M_EC_M_DSC(0) | PHY_M_EC_S_DSC(1);
314 314
315 gm_phy_write(hw, port, PHY_MARV_EXT_CTRL, ectrl); 315 gm_phy_write(hw, port, PHY_MARV_EXT_CTRL, ectrl);
316 } 316 }
@@ -327,10 +327,12 @@ static void sky2_phy_init(struct sky2_hw *hw, unsigned port)
327 /* enable automatic crossover */ 327 /* enable automatic crossover */
328 ctrl |= PHY_M_PC_MDI_XMODE(PHY_M_PC_ENA_AUTO); 328 ctrl |= PHY_M_PC_MDI_XMODE(PHY_M_PC_ENA_AUTO);
329 329
330 /* downshift on PHY 88E1112 and 88E1149 is changed */
330 if (sky2->autoneg == AUTONEG_ENABLE 331 if (sky2->autoneg == AUTONEG_ENABLE
331 && (hw->chip_id == CHIP_ID_YUKON_XL 332 && (hw->chip_id == CHIP_ID_YUKON_XL
332 || hw->chip_id == CHIP_ID_YUKON_EC_U 333 || hw->chip_id == CHIP_ID_YUKON_EC_U
333 || hw->chip_id == CHIP_ID_YUKON_EX)) { 334 || hw->chip_id == CHIP_ID_YUKON_EX)) {
335 /* set downshift counter to 3x and enable downshift */
334 ctrl &= ~PHY_M_PC_DSC_MSK; 336 ctrl &= ~PHY_M_PC_DSC_MSK;
335 ctrl |= PHY_M_PC_DSC(2) | PHY_M_PC_DOWN_S_ENA; 337 ctrl |= PHY_M_PC_DSC(2) | PHY_M_PC_DOWN_S_ENA;
336 } 338 }
@@ -842,10 +844,12 @@ static inline struct tx_ring_info *tx_le_re(struct sky2_port *sky2,
842/* Update chip's next pointer */ 844/* Update chip's next pointer */
843static inline void sky2_put_idx(struct sky2_hw *hw, unsigned q, u16 idx) 845static inline void sky2_put_idx(struct sky2_hw *hw, unsigned q, u16 idx)
844{ 846{
845 q = Y2_QADDR(q, PREF_UNIT_PUT_IDX); 847 /* Make sure write' to descriptors are complete before we tell hardware */
846 wmb(); 848 wmb();
847 sky2_write16(hw, q, idx); 849 sky2_write16(hw, Y2_QADDR(q, PREF_UNIT_PUT_IDX), idx);
848 sky2_read16(hw, q); 850
851 /* Synchronize I/O on since next processor may write to tail */
852 mmiowb();
849} 853}
850 854
851 855
@@ -977,6 +981,7 @@ stopped:
977 981
978 /* reset the Rx prefetch unit */ 982 /* reset the Rx prefetch unit */
979 sky2_write32(hw, Y2_QADDR(rxq, PREF_UNIT_CTRL), PREF_UNIT_RST_SET); 983 sky2_write32(hw, Y2_QADDR(rxq, PREF_UNIT_CTRL), PREF_UNIT_RST_SET);
984 mmiowb();
980} 985}
981 986
982/* Clean out receive buffer area, assumes receiver hardware stopped */ 987/* Clean out receive buffer area, assumes receiver hardware stopped */
@@ -1196,7 +1201,7 @@ static int sky2_rx_start(struct sky2_port *sky2)
1196 } 1201 }
1197 1202
1198 /* Tell chip about available buffers */ 1203 /* Tell chip about available buffers */
1199 sky2_write16(hw, Y2_QADDR(rxq, PREF_UNIT_PUT_IDX), sky2->rx_put); 1204 sky2_put_idx(hw, rxq, sky2->rx_put);
1200 return 0; 1205 return 0;
1201nomem: 1206nomem:
1202 sky2_rx_clean(sky2); 1207 sky2_rx_clean(sky2);
@@ -1538,6 +1543,8 @@ static void sky2_tx_complete(struct sky2_port *sky2, u16 done)
1538 } 1543 }
1539 1544
1540 sky2->tx_cons = idx; 1545 sky2->tx_cons = idx;
1546 smp_mb();
1547
1541 if (tx_avail(sky2) > MAX_SKB_TX_LE + 4) 1548 if (tx_avail(sky2) > MAX_SKB_TX_LE + 4)
1542 netif_wake_queue(dev); 1549 netif_wake_queue(dev);
1543} 1550}
@@ -1577,13 +1584,6 @@ static int sky2_down(struct net_device *dev)
1577 imask &= ~portirq_msk[port]; 1584 imask &= ~portirq_msk[port];
1578 sky2_write32(hw, B0_IMSK, imask); 1585 sky2_write32(hw, B0_IMSK, imask);
1579 1586
1580 /*
1581 * Both ports share the NAPI poll on port 0, so if necessary undo the
1582 * the disable that is done in dev_close.
1583 */
1584 if (sky2->port == 0 && hw->ports > 1)
1585 netif_poll_enable(dev);
1586
1587 sky2_gmac_reset(hw, port); 1587 sky2_gmac_reset(hw, port);
1588 1588
1589 /* Stop transmitter */ 1589 /* Stop transmitter */
@@ -2139,8 +2139,10 @@ static int sky2_status_intr(struct sky2_hw *hw, int to_do)
2139 switch (le->opcode & ~HW_OWNER) { 2139 switch (le->opcode & ~HW_OWNER) {
2140 case OP_RXSTAT: 2140 case OP_RXSTAT:
2141 skb = sky2_receive(dev, length, status); 2141 skb = sky2_receive(dev, length, status);
2142 if (!skb) 2142 if (unlikely(!skb)) {
2143 sky2->net_stats.rx_dropped++;
2143 goto force_update; 2144 goto force_update;
2145 }
2144 2146
2145 skb->protocol = eth_type_trans(skb, dev); 2147 skb->protocol = eth_type_trans(skb, dev);
2146 sky2->net_stats.rx_packets++; 2148 sky2->net_stats.rx_packets++;
@@ -2221,6 +2223,7 @@ force_update:
2221 2223
2222 /* Fully processed status ring so clear irq */ 2224 /* Fully processed status ring so clear irq */
2223 sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ); 2225 sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ);
2226 mmiowb();
2224 2227
2225exit_loop: 2228exit_loop:
2226 if (buf_write[0]) { 2229 if (buf_write[0]) {
@@ -2341,6 +2344,12 @@ static void sky2_mac_intr(struct sky2_hw *hw, unsigned port)
2341 printk(KERN_INFO PFX "%s: mac interrupt status 0x%x\n", 2344 printk(KERN_INFO PFX "%s: mac interrupt status 0x%x\n",
2342 dev->name, status); 2345 dev->name, status);
2343 2346
2347 if (status & GM_IS_RX_CO_OV)
2348 gma_read16(hw, port, GM_RX_IRQ_SRC);
2349
2350 if (status & GM_IS_TX_CO_OV)
2351 gma_read16(hw, port, GM_TX_IRQ_SRC);
2352
2344 if (status & GM_IS_RX_FF_OR) { 2353 if (status & GM_IS_RX_FF_OR) {
2345 ++sky2->net_stats.rx_fifo_errors; 2354 ++sky2->net_stats.rx_fifo_errors;
2346 sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_CLI_RX_FO); 2355 sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_CLI_RX_FO);
@@ -2439,6 +2448,7 @@ static int sky2_poll(struct net_device *dev0, int *budget)
2439 if (work_done < work_limit) { 2448 if (work_done < work_limit) {
2440 netif_rx_complete(dev0); 2449 netif_rx_complete(dev0);
2441 2450
2451 /* end of interrupt, re-enables also acts as I/O synchronization */
2442 sky2_read32(hw, B0_Y2_SP_LISR); 2452 sky2_read32(hw, B0_Y2_SP_LISR);
2443 return 0; 2453 return 0;
2444 } else { 2454 } else {
@@ -2534,17 +2544,6 @@ static int __devinit sky2_init(struct sky2_hw *hw)
2534 return -EOPNOTSUPP; 2544 return -EOPNOTSUPP;
2535 } 2545 }
2536 2546
2537
2538 /* Some Gigabyte motherboards have 88e8056 but cause problems
2539 * There is some unresolved hardware related problem that causes
2540 * descriptor errors and receive data corruption.
2541 */
2542 if (hw->chip_id == CHIP_ID_YUKON_EC_U && dmi_blacklisted) {
2543 dev_err(&hw->pdev->dev,
2544 "88E8056 on this motherboard not supported\n");
2545 return -EOPNOTSUPP;
2546 }
2547
2548 hw->pmd_type = sky2_read8(hw, B2_PMD_TYP); 2547 hw->pmd_type = sky2_read8(hw, B2_PMD_TYP);
2549 hw->ports = 1; 2548 hw->ports = 1;
2550 t8 = sky2_read8(hw, B2_Y2_HW_RES); 2549 t8 = sky2_read8(hw, B2_Y2_HW_RES);
@@ -3910,24 +3909,8 @@ static struct pci_driver sky2_driver = {
3910 .shutdown = sky2_shutdown, 3909 .shutdown = sky2_shutdown,
3911}; 3910};
3912 3911
3913static struct dmi_system_id __initdata broken_dmi_table[] = {
3914 {
3915 .ident = "Gigabyte 965P-S3",
3916 .matches = {
3917 DMI_MATCH(DMI_SYS_VENDOR, "Gigabyte Technology Co., Ltd."),
3918 DMI_MATCH(DMI_PRODUCT_NAME, "965P-S3"),
3919
3920 },
3921 },
3922 { }
3923};
3924
3925static int __init sky2_init_module(void) 3912static int __init sky2_init_module(void)
3926{ 3913{
3927 /* Look for sick motherboards */
3928 if (dmi_check_system(broken_dmi_table))
3929 dmi_blacklisted = 1;
3930
3931 return pci_register_driver(&sky2_driver); 3914 return pci_register_driver(&sky2_driver);
3932} 3915}
3933 3916
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c
index 108adbf5b5eb..c3964c3d89d9 100644
--- a/drivers/net/spider_net.c
+++ b/drivers/net/spider_net.c
@@ -430,7 +430,8 @@ spider_net_prepare_rx_descr(struct spider_net_card *card,
430 /* and we need to have it 128 byte aligned, therefore we allocate a 430 /* and we need to have it 128 byte aligned, therefore we allocate a
431 * bit more */ 431 * bit more */
432 /* allocate an skb */ 432 /* allocate an skb */
433 descr->skb = dev_alloc_skb(bufsize + SPIDER_NET_RXBUF_ALIGN - 1); 433 descr->skb = netdev_alloc_skb(card->netdev,
434 bufsize + SPIDER_NET_RXBUF_ALIGN - 1);
434 if (!descr->skb) { 435 if (!descr->skb) {
435 if (netif_msg_rx_err(card) && net_ratelimit()) 436 if (netif_msg_rx_err(card) && net_ratelimit())
436 pr_err("Not enough memory to allocate rx buffer\n"); 437 pr_err("Not enough memory to allocate rx buffer\n");
diff --git a/fs/eventfd.c b/fs/eventfd.c
index 480e2b3c4166..2ce19c000d2a 100644
--- a/fs/eventfd.c
+++ b/fs/eventfd.c
@@ -17,7 +17,6 @@
17#include <linux/eventfd.h> 17#include <linux/eventfd.h>
18 18
19struct eventfd_ctx { 19struct eventfd_ctx {
20 spinlock_t lock;
21 wait_queue_head_t wqh; 20 wait_queue_head_t wqh;
22 /* 21 /*
23 * Every time that a write(2) is performed on an eventfd, the 22 * Every time that a write(2) is performed on an eventfd, the
@@ -45,13 +44,13 @@ int eventfd_signal(struct file *file, int n)
45 44
46 if (n < 0) 45 if (n < 0)
47 return -EINVAL; 46 return -EINVAL;
48 spin_lock_irqsave(&ctx->lock, flags); 47 spin_lock_irqsave(&ctx->wqh.lock, flags);
49 if (ULLONG_MAX - ctx->count < n) 48 if (ULLONG_MAX - ctx->count < n)
50 n = (int) (ULLONG_MAX - ctx->count); 49 n = (int) (ULLONG_MAX - ctx->count);
51 ctx->count += n; 50 ctx->count += n;
52 if (waitqueue_active(&ctx->wqh)) 51 if (waitqueue_active(&ctx->wqh))
53 wake_up_locked(&ctx->wqh); 52 wake_up_locked(&ctx->wqh);
54 spin_unlock_irqrestore(&ctx->lock, flags); 53 spin_unlock_irqrestore(&ctx->wqh.lock, flags);
55 54
56 return n; 55 return n;
57} 56}
@@ -70,14 +69,14 @@ static unsigned int eventfd_poll(struct file *file, poll_table *wait)
70 69
71 poll_wait(file, &ctx->wqh, wait); 70 poll_wait(file, &ctx->wqh, wait);
72 71
73 spin_lock_irqsave(&ctx->lock, flags); 72 spin_lock_irqsave(&ctx->wqh.lock, flags);
74 if (ctx->count > 0) 73 if (ctx->count > 0)
75 events |= POLLIN; 74 events |= POLLIN;
76 if (ctx->count == ULLONG_MAX) 75 if (ctx->count == ULLONG_MAX)
77 events |= POLLERR; 76 events |= POLLERR;
78 if (ULLONG_MAX - 1 > ctx->count) 77 if (ULLONG_MAX - 1 > ctx->count)
79 events |= POLLOUT; 78 events |= POLLOUT;
80 spin_unlock_irqrestore(&ctx->lock, flags); 79 spin_unlock_irqrestore(&ctx->wqh.lock, flags);
81 80
82 return events; 81 return events;
83} 82}
@@ -92,7 +91,7 @@ static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count,
92 91
93 if (count < sizeof(ucnt)) 92 if (count < sizeof(ucnt))
94 return -EINVAL; 93 return -EINVAL;
95 spin_lock_irq(&ctx->lock); 94 spin_lock_irq(&ctx->wqh.lock);
96 res = -EAGAIN; 95 res = -EAGAIN;
97 ucnt = ctx->count; 96 ucnt = ctx->count;
98 if (ucnt > 0) 97 if (ucnt > 0)
@@ -110,9 +109,9 @@ static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count,
110 res = -ERESTARTSYS; 109 res = -ERESTARTSYS;
111 break; 110 break;
112 } 111 }
113 spin_unlock_irq(&ctx->lock); 112 spin_unlock_irq(&ctx->wqh.lock);
114 schedule(); 113 schedule();
115 spin_lock_irq(&ctx->lock); 114 spin_lock_irq(&ctx->wqh.lock);
116 } 115 }
117 __remove_wait_queue(&ctx->wqh, &wait); 116 __remove_wait_queue(&ctx->wqh, &wait);
118 __set_current_state(TASK_RUNNING); 117 __set_current_state(TASK_RUNNING);
@@ -122,7 +121,7 @@ static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count,
122 if (waitqueue_active(&ctx->wqh)) 121 if (waitqueue_active(&ctx->wqh))
123 wake_up_locked(&ctx->wqh); 122 wake_up_locked(&ctx->wqh);
124 } 123 }
125 spin_unlock_irq(&ctx->lock); 124 spin_unlock_irq(&ctx->wqh.lock);
126 if (res > 0 && put_user(ucnt, (__u64 __user *) buf)) 125 if (res > 0 && put_user(ucnt, (__u64 __user *) buf))
127 return -EFAULT; 126 return -EFAULT;
128 127
@@ -143,7 +142,7 @@ static ssize_t eventfd_write(struct file *file, const char __user *buf, size_t c
143 return -EFAULT; 142 return -EFAULT;
144 if (ucnt == ULLONG_MAX) 143 if (ucnt == ULLONG_MAX)
145 return -EINVAL; 144 return -EINVAL;
146 spin_lock_irq(&ctx->lock); 145 spin_lock_irq(&ctx->wqh.lock);
147 res = -EAGAIN; 146 res = -EAGAIN;
148 if (ULLONG_MAX - ctx->count > ucnt) 147 if (ULLONG_MAX - ctx->count > ucnt)
149 res = sizeof(ucnt); 148 res = sizeof(ucnt);
@@ -159,9 +158,9 @@ static ssize_t eventfd_write(struct file *file, const char __user *buf, size_t c
159 res = -ERESTARTSYS; 158 res = -ERESTARTSYS;
160 break; 159 break;
161 } 160 }
162 spin_unlock_irq(&ctx->lock); 161 spin_unlock_irq(&ctx->wqh.lock);
163 schedule(); 162 schedule();
164 spin_lock_irq(&ctx->lock); 163 spin_lock_irq(&ctx->wqh.lock);
165 } 164 }
166 __remove_wait_queue(&ctx->wqh, &wait); 165 __remove_wait_queue(&ctx->wqh, &wait);
167 __set_current_state(TASK_RUNNING); 166 __set_current_state(TASK_RUNNING);
@@ -171,7 +170,7 @@ static ssize_t eventfd_write(struct file *file, const char __user *buf, size_t c
171 if (waitqueue_active(&ctx->wqh)) 170 if (waitqueue_active(&ctx->wqh))
172 wake_up_locked(&ctx->wqh); 171 wake_up_locked(&ctx->wqh);
173 } 172 }
174 spin_unlock_irq(&ctx->lock); 173 spin_unlock_irq(&ctx->wqh.lock);
175 174
176 return res; 175 return res;
177} 176}
@@ -210,7 +209,6 @@ asmlinkage long sys_eventfd(unsigned int count)
210 return -ENOMEM; 209 return -ENOMEM;
211 210
212 init_waitqueue_head(&ctx->wqh); 211 init_waitqueue_head(&ctx->wqh);
213 spin_lock_init(&ctx->lock);
214 ctx->count = count; 212 ctx->count = count;
215 213
216 /* 214 /*
diff --git a/fs/lockd/clntlock.c b/fs/lockd/clntlock.c
index f4d45d4d835b..d070b18e539d 100644
--- a/fs/lockd/clntlock.c
+++ b/fs/lockd/clntlock.c
@@ -153,7 +153,7 @@ nlmclnt_recovery(struct nlm_host *host)
153 if (!host->h_reclaiming++) { 153 if (!host->h_reclaiming++) {
154 nlm_get_host(host); 154 nlm_get_host(host);
155 __module_get(THIS_MODULE); 155 __module_get(THIS_MODULE);
156 if (kernel_thread(reclaimer, host, CLONE_KERNEL) < 0) 156 if (kernel_thread(reclaimer, host, CLONE_FS | CLONE_FILES) < 0)
157 module_put(THIS_MODULE); 157 module_put(THIS_MODULE);
158 } 158 }
159} 159}
diff --git a/fs/lockd/host.c b/fs/lockd/host.c
index ad21c0713efa..96070bff93fc 100644
--- a/fs/lockd/host.c
+++ b/fs/lockd/host.c
@@ -221,7 +221,7 @@ nlm_bind_host(struct nlm_host *host)
221 host->h_nextrebind - jiffies); 221 host->h_nextrebind - jiffies);
222 } 222 }
223 } else { 223 } else {
224 unsigned long increment = nlmsvc_timeout * HZ; 224 unsigned long increment = nlmsvc_timeout;
225 struct rpc_timeout timeparms = { 225 struct rpc_timeout timeparms = {
226 .to_initval = increment, 226 .to_initval = increment,
227 .to_increment = increment, 227 .to_increment = increment,
diff --git a/fs/lockd/xdr.c b/fs/lockd/xdr.c
index 9702956d206c..5316e307a49d 100644
--- a/fs/lockd/xdr.c
+++ b/fs/lockd/xdr.c
@@ -586,10 +586,6 @@ static struct rpc_version nlm_version3 = {
586 .procs = nlm_procedures, 586 .procs = nlm_procedures,
587}; 587};
588 588
589#ifdef CONFIG_LOCKD_V4
590extern struct rpc_version nlm_version4;
591#endif
592
593static struct rpc_version * nlm_versions[] = { 589static struct rpc_version * nlm_versions[] = {
594 [1] = &nlm_version1, 590 [1] = &nlm_version1,
595 [3] = &nlm_version3, 591 [3] = &nlm_version3,
diff --git a/fs/lockd/xdr4.c b/fs/lockd/xdr4.c
index ce1efdbe1b3a..846fc1d639dd 100644
--- a/fs/lockd/xdr4.c
+++ b/fs/lockd/xdr4.c
@@ -123,7 +123,8 @@ static __be32 *
123nlm4_decode_lock(__be32 *p, struct nlm_lock *lock) 123nlm4_decode_lock(__be32 *p, struct nlm_lock *lock)
124{ 124{
125 struct file_lock *fl = &lock->fl; 125 struct file_lock *fl = &lock->fl;
126 __s64 len, start, end; 126 __u64 len, start;
127 __s64 end;
127 128
128 if (!(p = xdr_decode_string_inplace(p, &lock->caller, 129 if (!(p = xdr_decode_string_inplace(p, &lock->caller,
129 &lock->len, NLM_MAXSTRLEN)) 130 &lock->len, NLM_MAXSTRLEN))
@@ -417,7 +418,8 @@ nlm4clt_decode_testres(struct rpc_rqst *req, __be32 *p, struct nlm_res *resp)
417 if (resp->status == nlm_lck_denied) { 418 if (resp->status == nlm_lck_denied) {
418 struct file_lock *fl = &resp->lock.fl; 419 struct file_lock *fl = &resp->lock.fl;
419 u32 excl; 420 u32 excl;
420 s64 start, end, len; 421 __u64 start, len;
422 __s64 end;
421 423
422 memset(&resp->lock, 0, sizeof(resp->lock)); 424 memset(&resp->lock, 0, sizeof(resp->lock));
423 locks_init_lock(fl); 425 locks_init_lock(fl);
diff --git a/fs/nfs/callback.h b/fs/nfs/callback.h
index db3d7919c601..c2bb14e053e1 100644
--- a/fs/nfs/callback.h
+++ b/fs/nfs/callback.h
@@ -24,7 +24,7 @@ enum nfs4_callback_opnum {
24}; 24};
25 25
26struct cb_compound_hdr_arg { 26struct cb_compound_hdr_arg {
27 int taglen; 27 unsigned int taglen;
28 const char *tag; 28 const char *tag;
29 unsigned int callback_ident; 29 unsigned int callback_ident;
30 unsigned nops; 30 unsigned nops;
@@ -32,7 +32,7 @@ struct cb_compound_hdr_arg {
32 32
33struct cb_compound_hdr_res { 33struct cb_compound_hdr_res {
34 __be32 *status; 34 __be32 *status;
35 int taglen; 35 unsigned int taglen;
36 const char *tag; 36 const char *tag;
37 __be32 *nops; 37 __be32 *nops;
38}; 38};
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c
index 841c99a9b11c..7f37d1bea83f 100644
--- a/fs/nfs/delegation.c
+++ b/fs/nfs/delegation.c
@@ -226,7 +226,7 @@ restart:
226 spin_unlock(&clp->cl_lock); 226 spin_unlock(&clp->cl_lock);
227} 227}
228 228
229int nfs_do_expire_all_delegations(void *ptr) 229static int nfs_do_expire_all_delegations(void *ptr)
230{ 230{
231 struct nfs_client *clp = ptr; 231 struct nfs_client *clp = ptr;
232 struct nfs_delegation *delegation; 232 struct nfs_delegation *delegation;
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 3df428816559..ac92e45432a3 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -607,7 +607,7 @@ static int nfs_readdir(struct file *filp, void *dirent, filldir_t filldir)
607 return res; 607 return res;
608} 608}
609 609
610loff_t nfs_llseek_dir(struct file *filp, loff_t offset, int origin) 610static loff_t nfs_llseek_dir(struct file *filp, loff_t offset, int origin)
611{ 611{
612 mutex_lock(&filp->f_path.dentry->d_inode->i_mutex); 612 mutex_lock(&filp->f_path.dentry->d_inode->i_mutex);
613 switch (origin) { 613 switch (origin) {
@@ -633,7 +633,7 @@ out:
633 * All directory operations under NFS are synchronous, so fsync() 633 * All directory operations under NFS are synchronous, so fsync()
634 * is a dummy operation. 634 * is a dummy operation.
635 */ 635 */
636int nfs_fsync_dir(struct file *filp, struct dentry *dentry, int datasync) 636static int nfs_fsync_dir(struct file *filp, struct dentry *dentry, int datasync)
637{ 637{
638 dfprintk(VFS, "NFS: fsync_dir(%s/%s) datasync %d\n", 638 dfprintk(VFS, "NFS: fsync_dir(%s/%s) datasync %d\n",
639 dentry->d_parent->d_name.name, dentry->d_name.name, 639 dentry->d_parent->d_name.name, dentry->d_name.name,
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index d6a30e965787..648e0ac0f90e 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -790,7 +790,7 @@ out:
790 return -EACCES; 790 return -EACCES;
791} 791}
792 792
793int nfs4_recover_expired_lease(struct nfs_server *server) 793static int nfs4_recover_expired_lease(struct nfs_server *server)
794{ 794{
795 struct nfs_client *clp = server->nfs_client; 795 struct nfs_client *clp = server->nfs_client;
796 int ret; 796 int ret;
@@ -2748,7 +2748,7 @@ static int nfs4_delay(struct rpc_clnt *clnt, long *timeout)
2748/* This is the error handling routine for processes that are allowed 2748/* This is the error handling routine for processes that are allowed
2749 * to sleep. 2749 * to sleep.
2750 */ 2750 */
2751int nfs4_handle_exception(const struct nfs_server *server, int errorcode, struct nfs4_exception *exception) 2751static int nfs4_handle_exception(const struct nfs_server *server, int errorcode, struct nfs4_exception *exception)
2752{ 2752{
2753 struct nfs_client *clp = server->nfs_client; 2753 struct nfs_client *clp = server->nfs_client;
2754 int ret = errorcode; 2754 int ret = errorcode;
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 5fffbdfa971f..8ed79d5c54f9 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -104,7 +104,7 @@ struct rpc_cred *nfs4_get_renew_cred(struct nfs_client *clp)
104 return cred; 104 return cred;
105} 105}
106 106
107struct rpc_cred *nfs4_get_setclientid_cred(struct nfs_client *clp) 107static struct rpc_cred *nfs4_get_setclientid_cred(struct nfs_client *clp)
108{ 108{
109 struct nfs4_state_owner *sp; 109 struct nfs4_state_owner *sp;
110 110
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index 938f37166788..8003c91ccb9a 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -646,10 +646,10 @@ static int encode_close(struct xdr_stream *xdr, const struct nfs_closeargs *arg)
646{ 646{
647 __be32 *p; 647 __be32 *p;
648 648
649 RESERVE_SPACE(8+sizeof(arg->stateid->data)); 649 RESERVE_SPACE(8+NFS4_STATEID_SIZE);
650 WRITE32(OP_CLOSE); 650 WRITE32(OP_CLOSE);
651 WRITE32(arg->seqid->sequence->counter); 651 WRITE32(arg->seqid->sequence->counter);
652 WRITEMEM(arg->stateid->data, sizeof(arg->stateid->data)); 652 WRITEMEM(arg->stateid->data, NFS4_STATEID_SIZE);
653 653
654 return 0; 654 return 0;
655} 655}
@@ -793,17 +793,17 @@ static int encode_lock(struct xdr_stream *xdr, const struct nfs_lock_args *args)
793 WRITE64(nfs4_lock_length(args->fl)); 793 WRITE64(nfs4_lock_length(args->fl));
794 WRITE32(args->new_lock_owner); 794 WRITE32(args->new_lock_owner);
795 if (args->new_lock_owner){ 795 if (args->new_lock_owner){
796 RESERVE_SPACE(40); 796 RESERVE_SPACE(4+NFS4_STATEID_SIZE+20);
797 WRITE32(args->open_seqid->sequence->counter); 797 WRITE32(args->open_seqid->sequence->counter);
798 WRITEMEM(args->open_stateid->data, sizeof(args->open_stateid->data)); 798 WRITEMEM(args->open_stateid->data, NFS4_STATEID_SIZE);
799 WRITE32(args->lock_seqid->sequence->counter); 799 WRITE32(args->lock_seqid->sequence->counter);
800 WRITE64(args->lock_owner.clientid); 800 WRITE64(args->lock_owner.clientid);
801 WRITE32(4); 801 WRITE32(4);
802 WRITE32(args->lock_owner.id); 802 WRITE32(args->lock_owner.id);
803 } 803 }
804 else { 804 else {
805 RESERVE_SPACE(20); 805 RESERVE_SPACE(NFS4_STATEID_SIZE+4);
806 WRITEMEM(args->lock_stateid->data, sizeof(args->lock_stateid->data)); 806 WRITEMEM(args->lock_stateid->data, NFS4_STATEID_SIZE);
807 WRITE32(args->lock_seqid->sequence->counter); 807 WRITE32(args->lock_seqid->sequence->counter);
808 } 808 }
809 809
@@ -830,11 +830,11 @@ static int encode_locku(struct xdr_stream *xdr, const struct nfs_locku_args *arg
830{ 830{
831 __be32 *p; 831 __be32 *p;
832 832
833 RESERVE_SPACE(44); 833 RESERVE_SPACE(12+NFS4_STATEID_SIZE+16);
834 WRITE32(OP_LOCKU); 834 WRITE32(OP_LOCKU);
835 WRITE32(nfs4_lock_type(args->fl, 0)); 835 WRITE32(nfs4_lock_type(args->fl, 0));
836 WRITE32(args->seqid->sequence->counter); 836 WRITE32(args->seqid->sequence->counter);
837 WRITEMEM(args->stateid->data, sizeof(args->stateid->data)); 837 WRITEMEM(args->stateid->data, NFS4_STATEID_SIZE);
838 WRITE64(args->fl->fl_start); 838 WRITE64(args->fl->fl_start);
839 WRITE64(nfs4_lock_length(args->fl)); 839 WRITE64(nfs4_lock_length(args->fl));
840 840
@@ -966,9 +966,9 @@ static inline void encode_claim_delegate_cur(struct xdr_stream *xdr, const struc
966{ 966{
967 __be32 *p; 967 __be32 *p;
968 968
969 RESERVE_SPACE(4+sizeof(stateid->data)); 969 RESERVE_SPACE(4+NFS4_STATEID_SIZE);
970 WRITE32(NFS4_OPEN_CLAIM_DELEGATE_CUR); 970 WRITE32(NFS4_OPEN_CLAIM_DELEGATE_CUR);
971 WRITEMEM(stateid->data, sizeof(stateid->data)); 971 WRITEMEM(stateid->data, NFS4_STATEID_SIZE);
972 encode_string(xdr, name->len, name->name); 972 encode_string(xdr, name->len, name->name);
973} 973}
974 974
@@ -996,9 +996,9 @@ static int encode_open_confirm(struct xdr_stream *xdr, const struct nfs_open_con
996{ 996{
997 __be32 *p; 997 __be32 *p;
998 998
999 RESERVE_SPACE(8+sizeof(arg->stateid->data)); 999 RESERVE_SPACE(4+NFS4_STATEID_SIZE+4);
1000 WRITE32(OP_OPEN_CONFIRM); 1000 WRITE32(OP_OPEN_CONFIRM);
1001 WRITEMEM(arg->stateid->data, sizeof(arg->stateid->data)); 1001 WRITEMEM(arg->stateid->data, NFS4_STATEID_SIZE);
1002 WRITE32(arg->seqid->sequence->counter); 1002 WRITE32(arg->seqid->sequence->counter);
1003 1003
1004 return 0; 1004 return 0;
@@ -1008,9 +1008,9 @@ static int encode_open_downgrade(struct xdr_stream *xdr, const struct nfs_closea
1008{ 1008{
1009 __be32 *p; 1009 __be32 *p;
1010 1010
1011 RESERVE_SPACE(8+sizeof(arg->stateid->data)); 1011 RESERVE_SPACE(4+NFS4_STATEID_SIZE+4);
1012 WRITE32(OP_OPEN_DOWNGRADE); 1012 WRITE32(OP_OPEN_DOWNGRADE);
1013 WRITEMEM(arg->stateid->data, sizeof(arg->stateid->data)); 1013 WRITEMEM(arg->stateid->data, NFS4_STATEID_SIZE);
1014 WRITE32(arg->seqid->sequence->counter); 1014 WRITE32(arg->seqid->sequence->counter);
1015 encode_share_access(xdr, arg->open_flags); 1015 encode_share_access(xdr, arg->open_flags);
1016 return 0; 1016 return 0;
@@ -1045,12 +1045,12 @@ static void encode_stateid(struct xdr_stream *xdr, const struct nfs_open_context
1045 nfs4_stateid stateid; 1045 nfs4_stateid stateid;
1046 __be32 *p; 1046 __be32 *p;
1047 1047
1048 RESERVE_SPACE(16); 1048 RESERVE_SPACE(NFS4_STATEID_SIZE);
1049 if (ctx->state != NULL) { 1049 if (ctx->state != NULL) {
1050 nfs4_copy_stateid(&stateid, ctx->state, ctx->lockowner); 1050 nfs4_copy_stateid(&stateid, ctx->state, ctx->lockowner);
1051 WRITEMEM(stateid.data, sizeof(stateid.data)); 1051 WRITEMEM(stateid.data, NFS4_STATEID_SIZE);
1052 } else 1052 } else
1053 WRITEMEM(zero_stateid.data, sizeof(zero_stateid.data)); 1053 WRITEMEM(zero_stateid.data, NFS4_STATEID_SIZE);
1054} 1054}
1055 1055
1056static int encode_read(struct xdr_stream *xdr, const struct nfs_readargs *args) 1056static int encode_read(struct xdr_stream *xdr, const struct nfs_readargs *args)
@@ -1079,10 +1079,10 @@ static int encode_readdir(struct xdr_stream *xdr, const struct nfs4_readdir_arg
1079 int replen; 1079 int replen;
1080 __be32 *p; 1080 __be32 *p;
1081 1081
1082 RESERVE_SPACE(32+sizeof(nfs4_verifier)); 1082 RESERVE_SPACE(12+NFS4_VERIFIER_SIZE+20);
1083 WRITE32(OP_READDIR); 1083 WRITE32(OP_READDIR);
1084 WRITE64(readdir->cookie); 1084 WRITE64(readdir->cookie);
1085 WRITEMEM(readdir->verifier.data, sizeof(readdir->verifier.data)); 1085 WRITEMEM(readdir->verifier.data, NFS4_VERIFIER_SIZE);
1086 WRITE32(readdir->count >> 1); /* We're not doing readdirplus */ 1086 WRITE32(readdir->count >> 1); /* We're not doing readdirplus */
1087 WRITE32(readdir->count); 1087 WRITE32(readdir->count);
1088 WRITE32(2); 1088 WRITE32(2);
@@ -1190,9 +1190,9 @@ encode_setacl(struct xdr_stream *xdr, struct nfs_setaclargs *arg)
1190{ 1190{
1191 __be32 *p; 1191 __be32 *p;
1192 1192
1193 RESERVE_SPACE(4+sizeof(zero_stateid.data)); 1193 RESERVE_SPACE(4+NFS4_STATEID_SIZE);
1194 WRITE32(OP_SETATTR); 1194 WRITE32(OP_SETATTR);
1195 WRITEMEM(zero_stateid.data, sizeof(zero_stateid.data)); 1195 WRITEMEM(zero_stateid.data, NFS4_STATEID_SIZE);
1196 RESERVE_SPACE(2*4); 1196 RESERVE_SPACE(2*4);
1197 WRITE32(1); 1197 WRITE32(1);
1198 WRITE32(FATTR4_WORD0_ACL); 1198 WRITE32(FATTR4_WORD0_ACL);
@@ -1220,9 +1220,9 @@ static int encode_setattr(struct xdr_stream *xdr, const struct nfs_setattrargs *
1220 int status; 1220 int status;
1221 __be32 *p; 1221 __be32 *p;
1222 1222
1223 RESERVE_SPACE(4+sizeof(arg->stateid.data)); 1223 RESERVE_SPACE(4+NFS4_STATEID_SIZE);
1224 WRITE32(OP_SETATTR); 1224 WRITE32(OP_SETATTR);
1225 WRITEMEM(arg->stateid.data, sizeof(arg->stateid.data)); 1225 WRITEMEM(arg->stateid.data, NFS4_STATEID_SIZE);
1226 1226
1227 if ((status = encode_attrs(xdr, arg->iap, server))) 1227 if ((status = encode_attrs(xdr, arg->iap, server)))
1228 return status; 1228 return status;
@@ -1234,9 +1234,9 @@ static int encode_setclientid(struct xdr_stream *xdr, const struct nfs4_setclien
1234{ 1234{
1235 __be32 *p; 1235 __be32 *p;
1236 1236
1237 RESERVE_SPACE(4 + sizeof(setclientid->sc_verifier->data)); 1237 RESERVE_SPACE(4 + NFS4_VERIFIER_SIZE);
1238 WRITE32(OP_SETCLIENTID); 1238 WRITE32(OP_SETCLIENTID);
1239 WRITEMEM(setclientid->sc_verifier->data, sizeof(setclientid->sc_verifier->data)); 1239 WRITEMEM(setclientid->sc_verifier->data, NFS4_VERIFIER_SIZE);
1240 1240
1241 encode_string(xdr, setclientid->sc_name_len, setclientid->sc_name); 1241 encode_string(xdr, setclientid->sc_name_len, setclientid->sc_name);
1242 RESERVE_SPACE(4); 1242 RESERVE_SPACE(4);
@@ -1253,10 +1253,10 @@ static int encode_setclientid_confirm(struct xdr_stream *xdr, const struct nfs_c
1253{ 1253{
1254 __be32 *p; 1254 __be32 *p;
1255 1255
1256 RESERVE_SPACE(12 + sizeof(client_state->cl_confirm.data)); 1256 RESERVE_SPACE(12 + NFS4_VERIFIER_SIZE);
1257 WRITE32(OP_SETCLIENTID_CONFIRM); 1257 WRITE32(OP_SETCLIENTID_CONFIRM);
1258 WRITE64(client_state->cl_clientid); 1258 WRITE64(client_state->cl_clientid);
1259 WRITEMEM(client_state->cl_confirm.data, sizeof(client_state->cl_confirm.data)); 1259 WRITEMEM(client_state->cl_confirm.data, NFS4_VERIFIER_SIZE);
1260 1260
1261 return 0; 1261 return 0;
1262} 1262}
@@ -1284,10 +1284,10 @@ static int encode_delegreturn(struct xdr_stream *xdr, const nfs4_stateid *statei
1284{ 1284{
1285 __be32 *p; 1285 __be32 *p;
1286 1286
1287 RESERVE_SPACE(20); 1287 RESERVE_SPACE(4+NFS4_STATEID_SIZE);
1288 1288
1289 WRITE32(OP_DELEGRETURN); 1289 WRITE32(OP_DELEGRETURN);
1290 WRITEMEM(stateid->data, sizeof(stateid->data)); 1290 WRITEMEM(stateid->data, NFS4_STATEID_SIZE);
1291 return 0; 1291 return 0;
1292 1292
1293} 1293}
@@ -2494,7 +2494,7 @@ static int decode_attr_fs_locations(struct xdr_stream *xdr, uint32_t *bitmap, st
2494 int i; 2494 int i;
2495 dprintk("%s: using first %d of %d servers returned for location %d\n", __FUNCTION__, NFS4_FS_LOCATION_MAXSERVERS, m, res->nlocations); 2495 dprintk("%s: using first %d of %d servers returned for location %d\n", __FUNCTION__, NFS4_FS_LOCATION_MAXSERVERS, m, res->nlocations);
2496 for (i = loc->nservers; i < m; i++) { 2496 for (i = loc->nservers; i < m; i++) {
2497 int len; 2497 unsigned int len;
2498 char *data; 2498 char *data;
2499 status = decode_opaque_inline(xdr, &len, &data); 2499 status = decode_opaque_inline(xdr, &len, &data);
2500 if (unlikely(status != 0)) 2500 if (unlikely(status != 0))
@@ -2642,7 +2642,7 @@ static int decode_attr_nlink(struct xdr_stream *xdr, uint32_t *bitmap, uint32_t
2642 return 0; 2642 return 0;
2643} 2643}
2644 2644
2645static int decode_attr_owner(struct xdr_stream *xdr, uint32_t *bitmap, struct nfs_client *clp, int32_t *uid) 2645static int decode_attr_owner(struct xdr_stream *xdr, uint32_t *bitmap, struct nfs_client *clp, uint32_t *uid)
2646{ 2646{
2647 uint32_t len; 2647 uint32_t len;
2648 __be32 *p; 2648 __be32 *p;
@@ -2667,7 +2667,7 @@ static int decode_attr_owner(struct xdr_stream *xdr, uint32_t *bitmap, struct nf
2667 return 0; 2667 return 0;
2668} 2668}
2669 2669
2670static int decode_attr_group(struct xdr_stream *xdr, uint32_t *bitmap, struct nfs_client *clp, int32_t *gid) 2670static int decode_attr_group(struct xdr_stream *xdr, uint32_t *bitmap, struct nfs_client *clp, uint32_t *gid)
2671{ 2671{
2672 uint32_t len; 2672 uint32_t len;
2673 __be32 *p; 2673 __be32 *p;
@@ -2897,8 +2897,8 @@ static int decode_close(struct xdr_stream *xdr, struct nfs_closeres *res)
2897 status = decode_op_hdr(xdr, OP_CLOSE); 2897 status = decode_op_hdr(xdr, OP_CLOSE);
2898 if (status) 2898 if (status)
2899 return status; 2899 return status;
2900 READ_BUF(sizeof(res->stateid.data)); 2900 READ_BUF(NFS4_STATEID_SIZE);
2901 COPYMEM(res->stateid.data, sizeof(res->stateid.data)); 2901 COPYMEM(res->stateid.data, NFS4_STATEID_SIZE);
2902 return 0; 2902 return 0;
2903} 2903}
2904 2904
@@ -3186,8 +3186,8 @@ static int decode_lock(struct xdr_stream *xdr, struct nfs_lock_res *res)
3186 3186
3187 status = decode_op_hdr(xdr, OP_LOCK); 3187 status = decode_op_hdr(xdr, OP_LOCK);
3188 if (status == 0) { 3188 if (status == 0) {
3189 READ_BUF(sizeof(res->stateid.data)); 3189 READ_BUF(NFS4_STATEID_SIZE);
3190 COPYMEM(res->stateid.data, sizeof(res->stateid.data)); 3190 COPYMEM(res->stateid.data, NFS4_STATEID_SIZE);
3191 } else if (status == -NFS4ERR_DENIED) 3191 } else if (status == -NFS4ERR_DENIED)
3192 return decode_lock_denied(xdr, NULL); 3192 return decode_lock_denied(xdr, NULL);
3193 return status; 3193 return status;
@@ -3209,8 +3209,8 @@ static int decode_locku(struct xdr_stream *xdr, struct nfs_locku_res *res)
3209 3209
3210 status = decode_op_hdr(xdr, OP_LOCKU); 3210 status = decode_op_hdr(xdr, OP_LOCKU);
3211 if (status == 0) { 3211 if (status == 0) {
3212 READ_BUF(sizeof(res->stateid.data)); 3212 READ_BUF(NFS4_STATEID_SIZE);
3213 COPYMEM(res->stateid.data, sizeof(res->stateid.data)); 3213 COPYMEM(res->stateid.data, NFS4_STATEID_SIZE);
3214 } 3214 }
3215 return status; 3215 return status;
3216} 3216}
@@ -3251,8 +3251,8 @@ static int decode_delegation(struct xdr_stream *xdr, struct nfs_openres *res)
3251 res->delegation_type = 0; 3251 res->delegation_type = 0;
3252 return 0; 3252 return 0;
3253 } 3253 }
3254 READ_BUF(20); 3254 READ_BUF(NFS4_STATEID_SIZE+4);
3255 COPYMEM(res->delegation.data, sizeof(res->delegation.data)); 3255 COPYMEM(res->delegation.data, NFS4_STATEID_SIZE);
3256 READ32(res->do_recall); 3256 READ32(res->do_recall);
3257 switch (delegation_type) { 3257 switch (delegation_type) {
3258 case NFS4_OPEN_DELEGATE_READ: 3258 case NFS4_OPEN_DELEGATE_READ:
@@ -3275,8 +3275,8 @@ static int decode_open(struct xdr_stream *xdr, struct nfs_openres *res)
3275 status = decode_op_hdr(xdr, OP_OPEN); 3275 status = decode_op_hdr(xdr, OP_OPEN);
3276 if (status) 3276 if (status)
3277 return status; 3277 return status;
3278 READ_BUF(sizeof(res->stateid.data)); 3278 READ_BUF(NFS4_STATEID_SIZE);
3279 COPYMEM(res->stateid.data, sizeof(res->stateid.data)); 3279 COPYMEM(res->stateid.data, NFS4_STATEID_SIZE);
3280 3280
3281 decode_change_info(xdr, &res->cinfo); 3281 decode_change_info(xdr, &res->cinfo);
3282 3282
@@ -3302,8 +3302,8 @@ static int decode_open_confirm(struct xdr_stream *xdr, struct nfs_open_confirmre
3302 status = decode_op_hdr(xdr, OP_OPEN_CONFIRM); 3302 status = decode_op_hdr(xdr, OP_OPEN_CONFIRM);
3303 if (status) 3303 if (status)
3304 return status; 3304 return status;
3305 READ_BUF(sizeof(res->stateid.data)); 3305 READ_BUF(NFS4_STATEID_SIZE);
3306 COPYMEM(res->stateid.data, sizeof(res->stateid.data)); 3306 COPYMEM(res->stateid.data, NFS4_STATEID_SIZE);
3307 return 0; 3307 return 0;
3308} 3308}
3309 3309
@@ -3315,8 +3315,8 @@ static int decode_open_downgrade(struct xdr_stream *xdr, struct nfs_closeres *re
3315 status = decode_op_hdr(xdr, OP_OPEN_DOWNGRADE); 3315 status = decode_op_hdr(xdr, OP_OPEN_DOWNGRADE);
3316 if (status) 3316 if (status)
3317 return status; 3317 return status;
3318 READ_BUF(sizeof(res->stateid.data)); 3318 READ_BUF(NFS4_STATEID_SIZE);
3319 COPYMEM(res->stateid.data, sizeof(res->stateid.data)); 3319 COPYMEM(res->stateid.data, NFS4_STATEID_SIZE);
3320 return 0; 3320 return 0;
3321} 3321}
3322 3322
@@ -3590,9 +3590,9 @@ static int decode_setclientid(struct xdr_stream *xdr, struct nfs_client *clp)
3590 } 3590 }
3591 READ32(nfserr); 3591 READ32(nfserr);
3592 if (nfserr == NFS_OK) { 3592 if (nfserr == NFS_OK) {
3593 READ_BUF(8 + sizeof(clp->cl_confirm.data)); 3593 READ_BUF(8 + NFS4_VERIFIER_SIZE);
3594 READ64(clp->cl_clientid); 3594 READ64(clp->cl_clientid);
3595 COPYMEM(clp->cl_confirm.data, sizeof(clp->cl_confirm.data)); 3595 COPYMEM(clp->cl_confirm.data, NFS4_VERIFIER_SIZE);
3596 } else if (nfserr == NFSERR_CLID_INUSE) { 3596 } else if (nfserr == NFSERR_CLID_INUSE) {
3597 uint32_t len; 3597 uint32_t len;
3598 3598
diff --git a/fs/nfs/read.c b/fs/nfs/read.c
index 9a55807b2a70..7bd7cb95c034 100644
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -79,7 +79,7 @@ void nfs_readdata_release(void *data)
79static 79static
80int nfs_return_empty_page(struct page *page) 80int nfs_return_empty_page(struct page *page)
81{ 81{
82 memclear_highpage_flush(page, 0, PAGE_CACHE_SIZE); 82 zero_user_page(page, 0, PAGE_CACHE_SIZE, KM_USER0);
83 SetPageUptodate(page); 83 SetPageUptodate(page);
84 unlock_page(page); 84 unlock_page(page);
85 return 0; 85 return 0;
@@ -103,10 +103,10 @@ static void nfs_readpage_truncate_uninitialised_page(struct nfs_read_data *data)
103 pglen = PAGE_CACHE_SIZE - base; 103 pglen = PAGE_CACHE_SIZE - base;
104 for (;;) { 104 for (;;) {
105 if (remainder <= pglen) { 105 if (remainder <= pglen) {
106 memclear_highpage_flush(*pages, base, remainder); 106 zero_user_page(*pages, base, remainder, KM_USER0);
107 break; 107 break;
108 } 108 }
109 memclear_highpage_flush(*pages, base, pglen); 109 zero_user_page(*pages, base, pglen, KM_USER0);
110 pages++; 110 pages++;
111 remainder -= pglen; 111 remainder -= pglen;
112 pglen = PAGE_CACHE_SIZE; 112 pglen = PAGE_CACHE_SIZE;
@@ -130,7 +130,7 @@ static int nfs_readpage_async(struct nfs_open_context *ctx, struct inode *inode,
130 return PTR_ERR(new); 130 return PTR_ERR(new);
131 } 131 }
132 if (len < PAGE_CACHE_SIZE) 132 if (len < PAGE_CACHE_SIZE)
133 memclear_highpage_flush(page, len, PAGE_CACHE_SIZE - len); 133 zero_user_page(page, len, PAGE_CACHE_SIZE - len, KM_USER0);
134 134
135 nfs_list_add_request(new, &one_request); 135 nfs_list_add_request(new, &one_request);
136 if (NFS_SERVER(inode)->rsize < PAGE_CACHE_SIZE) 136 if (NFS_SERVER(inode)->rsize < PAGE_CACHE_SIZE)
@@ -532,7 +532,7 @@ readpage_async_filler(void *data, struct page *page)
532 return PTR_ERR(new); 532 return PTR_ERR(new);
533 } 533 }
534 if (len < PAGE_CACHE_SIZE) 534 if (len < PAGE_CACHE_SIZE)
535 memclear_highpage_flush(page, len, PAGE_CACHE_SIZE - len); 535 zero_user_page(page, len, PAGE_CACHE_SIZE - len, KM_USER0);
536 nfs_pageio_add_request(desc->pgio, new); 536 nfs_pageio_add_request(desc->pgio, new);
537 return 0; 537 return 0;
538} 538}
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index de92b9509d94..b084c03ce493 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -58,7 +58,7 @@ struct nfs_write_data *nfs_commit_alloc(void)
58 return p; 58 return p;
59} 59}
60 60
61void nfs_commit_rcu_free(struct rcu_head *head) 61static void nfs_commit_rcu_free(struct rcu_head *head)
62{ 62{
63 struct nfs_write_data *p = container_of(head, struct nfs_write_data, task.u.tk_rcu); 63 struct nfs_write_data *p = container_of(head, struct nfs_write_data, task.u.tk_rcu);
64 if (p && (p->pagevec != &p->page_array[0])) 64 if (p && (p->pagevec != &p->page_array[0]))
@@ -168,7 +168,7 @@ static void nfs_mark_uptodate(struct page *page, unsigned int base, unsigned int
168 if (count != nfs_page_length(page)) 168 if (count != nfs_page_length(page))
169 return; 169 return;
170 if (count != PAGE_CACHE_SIZE) 170 if (count != PAGE_CACHE_SIZE)
171 memclear_highpage_flush(page, count, PAGE_CACHE_SIZE - count); 171 zero_user_page(page, count, PAGE_CACHE_SIZE - count, KM_USER0);
172 SetPageUptodate(page); 172 SetPageUptodate(page);
173} 173}
174 174
@@ -922,7 +922,7 @@ static int nfs_flush_one(struct inode *inode, struct list_head *head, unsigned i
922 return 0; 922 return 0;
923 out_bad: 923 out_bad:
924 while (!list_empty(head)) { 924 while (!list_empty(head)) {
925 struct nfs_page *req = nfs_list_entry(head->next); 925 req = nfs_list_entry(head->next);
926 nfs_list_remove_request(req); 926 nfs_list_remove_request(req);
927 nfs_redirty_request(req); 927 nfs_redirty_request(req);
928 nfs_end_page_writeback(req->wb_page); 928 nfs_end_page_writeback(req->wb_page);
diff --git a/fs/timerfd.c b/fs/timerfd.c
index e329e37f15a8..af9eca5c0230 100644
--- a/fs/timerfd.c
+++ b/fs/timerfd.c
@@ -24,7 +24,6 @@
24struct timerfd_ctx { 24struct timerfd_ctx {
25 struct hrtimer tmr; 25 struct hrtimer tmr;
26 ktime_t tintv; 26 ktime_t tintv;
27 spinlock_t lock;
28 wait_queue_head_t wqh; 27 wait_queue_head_t wqh;
29 int expired; 28 int expired;
30}; 29};
@@ -39,10 +38,10 @@ static enum hrtimer_restart timerfd_tmrproc(struct hrtimer *htmr)
39 struct timerfd_ctx *ctx = container_of(htmr, struct timerfd_ctx, tmr); 38 struct timerfd_ctx *ctx = container_of(htmr, struct timerfd_ctx, tmr);
40 unsigned long flags; 39 unsigned long flags;
41 40
42 spin_lock_irqsave(&ctx->lock, flags); 41 spin_lock_irqsave(&ctx->wqh.lock, flags);
43 ctx->expired = 1; 42 ctx->expired = 1;
44 wake_up_locked(&ctx->wqh); 43 wake_up_locked(&ctx->wqh);
45 spin_unlock_irqrestore(&ctx->lock, flags); 44 spin_unlock_irqrestore(&ctx->wqh.lock, flags);
46 45
47 return HRTIMER_NORESTART; 46 return HRTIMER_NORESTART;
48} 47}
@@ -83,10 +82,10 @@ static unsigned int timerfd_poll(struct file *file, poll_table *wait)
83 82
84 poll_wait(file, &ctx->wqh, wait); 83 poll_wait(file, &ctx->wqh, wait);
85 84
86 spin_lock_irqsave(&ctx->lock, flags); 85 spin_lock_irqsave(&ctx->wqh.lock, flags);
87 if (ctx->expired) 86 if (ctx->expired)
88 events |= POLLIN; 87 events |= POLLIN;
89 spin_unlock_irqrestore(&ctx->lock, flags); 88 spin_unlock_irqrestore(&ctx->wqh.lock, flags);
90 89
91 return events; 90 return events;
92} 91}
@@ -101,7 +100,7 @@ static ssize_t timerfd_read(struct file *file, char __user *buf, size_t count,
101 100
102 if (count < sizeof(ticks)) 101 if (count < sizeof(ticks))
103 return -EINVAL; 102 return -EINVAL;
104 spin_lock_irq(&ctx->lock); 103 spin_lock_irq(&ctx->wqh.lock);
105 res = -EAGAIN; 104 res = -EAGAIN;
106 if (!ctx->expired && !(file->f_flags & O_NONBLOCK)) { 105 if (!ctx->expired && !(file->f_flags & O_NONBLOCK)) {
107 __add_wait_queue(&ctx->wqh, &wait); 106 __add_wait_queue(&ctx->wqh, &wait);
@@ -115,9 +114,9 @@ static ssize_t timerfd_read(struct file *file, char __user *buf, size_t count,
115 res = -ERESTARTSYS; 114 res = -ERESTARTSYS;
116 break; 115 break;
117 } 116 }
118 spin_unlock_irq(&ctx->lock); 117 spin_unlock_irq(&ctx->wqh.lock);
119 schedule(); 118 schedule();
120 spin_lock_irq(&ctx->lock); 119 spin_lock_irq(&ctx->wqh.lock);
121 } 120 }
122 __remove_wait_queue(&ctx->wqh, &wait); 121 __remove_wait_queue(&ctx->wqh, &wait);
123 __set_current_state(TASK_RUNNING); 122 __set_current_state(TASK_RUNNING);
@@ -139,7 +138,7 @@ static ssize_t timerfd_read(struct file *file, char __user *buf, size_t count,
139 } else 138 } else
140 ticks = 1; 139 ticks = 1;
141 } 140 }
142 spin_unlock_irq(&ctx->lock); 141 spin_unlock_irq(&ctx->wqh.lock);
143 if (ticks) 142 if (ticks)
144 res = put_user(ticks, buf) ? -EFAULT: sizeof(ticks); 143 res = put_user(ticks, buf) ? -EFAULT: sizeof(ticks);
145 return res; 144 return res;
@@ -176,7 +175,6 @@ asmlinkage long sys_timerfd(int ufd, int clockid, int flags,
176 return -ENOMEM; 175 return -ENOMEM;
177 176
178 init_waitqueue_head(&ctx->wqh); 177 init_waitqueue_head(&ctx->wqh);
179 spin_lock_init(&ctx->lock);
180 178
181 timerfd_setup(ctx, clockid, flags, &ktmr); 179 timerfd_setup(ctx, clockid, flags, &ktmr);
182 180
@@ -202,10 +200,10 @@ asmlinkage long sys_timerfd(int ufd, int clockid, int flags,
202 * it to the new values. 200 * it to the new values.
203 */ 201 */
204 for (;;) { 202 for (;;) {
205 spin_lock_irq(&ctx->lock); 203 spin_lock_irq(&ctx->wqh.lock);
206 if (hrtimer_try_to_cancel(&ctx->tmr) >= 0) 204 if (hrtimer_try_to_cancel(&ctx->tmr) >= 0)
207 break; 205 break;
208 spin_unlock_irq(&ctx->lock); 206 spin_unlock_irq(&ctx->wqh.lock);
209 cpu_relax(); 207 cpu_relax();
210 } 208 }
211 /* 209 /*
@@ -213,7 +211,7 @@ asmlinkage long sys_timerfd(int ufd, int clockid, int flags,
213 */ 211 */
214 timerfd_setup(ctx, clockid, flags, &ktmr); 212 timerfd_setup(ctx, clockid, flags, &ktmr);
215 213
216 spin_unlock_irq(&ctx->lock); 214 spin_unlock_irq(&ctx->wqh.lock);
217 fput(file); 215 fput(file);
218 } 216 }
219 217
diff --git a/include/asm-powerpc/cputable.h b/include/asm-powerpc/cputable.h
index 434524931ef3..82d595a52109 100644
--- a/include/asm-powerpc/cputable.h
+++ b/include/asm-powerpc/cputable.h
@@ -302,6 +302,12 @@ extern void do_feature_fixups(unsigned long value, void *fixup_start,
302 CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \ 302 CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \
303 CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \ 303 CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \
304 CPU_FTR_NEED_COHERENT | CPU_FTR_PPC_LE) 304 CPU_FTR_NEED_COHERENT | CPU_FTR_PPC_LE)
305#define CPU_FTRS_7448 (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \
306 CPU_FTR_USE_TB | \
307 CPU_FTR_MAYBE_CAN_NAP | CPU_FTR_L2CR | CPU_FTR_ALTIVEC_COMP | \
308 CPU_FTR_HPTE_TABLE | CPU_FTR_SPEC7450 | \
309 CPU_FTR_NAP_DISABLE_L2_PR | CPU_FTR_HAS_HIGH_BATS | \
310 CPU_FTR_PPC_LE)
305#define CPU_FTRS_82XX (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \ 311#define CPU_FTRS_82XX (CPU_FTR_COMMON | CPU_FTR_SPLIT_ID_CACHE | \
306 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB) 312 CPU_FTR_MAYBE_CAN_DOZE | CPU_FTR_USE_TB)
307#define CPU_FTRS_G2_LE (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | \ 313#define CPU_FTRS_G2_LE (CPU_FTR_SPLIT_ID_CACHE | CPU_FTR_MAYBE_CAN_DOZE | \
diff --git a/include/asm-powerpc/mmu-44x.h b/include/asm-powerpc/mmu-44x.h
index d5ce7a8dfe9f..62772ae839ca 100644
--- a/include/asm-powerpc/mmu-44x.h
+++ b/include/asm-powerpc/mmu-44x.h
@@ -55,8 +55,6 @@
55 55
56typedef unsigned long long phys_addr_t; 56typedef unsigned long long phys_addr_t;
57 57
58extern phys_addr_t fixup_bigphys_addr(phys_addr_t, phys_addr_t);
59
60typedef struct { 58typedef struct {
61 unsigned long id; 59 unsigned long id;
62 unsigned long vdso_base; 60 unsigned long vdso_base;
diff --git a/include/asm-powerpc/mpc8260.h b/include/asm-powerpc/mpc8260.h
index f1b83b09ab2e..e0d480790e12 100644
--- a/include/asm-powerpc/mpc8260.h
+++ b/include/asm-powerpc/mpc8260.h
@@ -5,8 +5,8 @@
5 * this one and the configuration switching is done here. 5 * this one and the configuration switching is done here.
6 */ 6 */
7#ifdef __KERNEL__ 7#ifdef __KERNEL__
8#ifndef __ASM_PPC_MPC8260_H__ 8#ifndef __ASM_POWERPC_MPC8260_H__
9#define __ASM_PPC_MPC8260_H__ 9#define __ASM_POWERPC_MPC8260_H__
10 10
11 11
12#ifdef CONFIG_8260 12#ifdef CONFIG_8260
@@ -20,5 +20,5 @@
20#endif 20#endif
21 21
22#endif /* CONFIG_8260 */ 22#endif /* CONFIG_8260 */
23#endif /* !__ASM_PPC_MPC8260_H__ */ 23#endif /* !__ASM_POWERPC_MPC8260_H__ */
24#endif /* __KERNEL__ */ 24#endif /* __KERNEL__ */
diff --git a/include/asm-powerpc/pgtable-ppc32.h b/include/asm-powerpc/pgtable-ppc32.h
index 09662a24f226..c863bdb2889c 100644
--- a/include/asm-powerpc/pgtable-ppc32.h
+++ b/include/asm-powerpc/pgtable-ppc32.h
@@ -782,23 +782,8 @@ extern void kernel_set_cachemode (unsigned long address, unsigned long size,
782/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ 782/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
783#define kern_addr_valid(addr) (1) 783#define kern_addr_valid(addr) (1)
784 784
785#ifdef CONFIG_PHYS_64BIT
786extern int remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
787 unsigned long paddr, unsigned long size, pgprot_t prot);
788
789static inline int io_remap_pfn_range(struct vm_area_struct *vma,
790 unsigned long vaddr,
791 unsigned long pfn,
792 unsigned long size,
793 pgprot_t prot)
794{
795 phys_addr_t paddr64 = fixup_bigphys_addr(pfn << PAGE_SHIFT, size);
796 return remap_pfn_range(vma, vaddr, paddr64 >> PAGE_SHIFT, size, prot);
797}
798#else
799#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ 785#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
800 remap_pfn_range(vma, vaddr, pfn, size, prot) 786 remap_pfn_range(vma, vaddr, pfn, size, prot)
801#endif
802 787
803/* 788/*
804 * No page table caches to initialise 789 * No page table caches to initialise
diff --git a/include/asm-powerpc/pmac_feature.h b/include/asm-powerpc/pmac_feature.h
index d43d91beba9b..26bcb0aa164a 100644
--- a/include/asm-powerpc/pmac_feature.h
+++ b/include/asm-powerpc/pmac_feature.h
@@ -28,8 +28,8 @@
28 */ 28 */
29 29
30#ifdef __KERNEL__ 30#ifdef __KERNEL__
31#ifndef __PPC_ASM_PMAC_FEATURE_H 31#ifndef __ASM_POWERPC_PMAC_FEATURE_H
32#define __PPC_ASM_PMAC_FEATURE_H 32#define __ASM_POWERPC_PMAC_FEATURE_H
33 33
34#include <asm/macio.h> 34#include <asm/macio.h>
35#include <asm/machdep.h> 35#include <asm/machdep.h>
@@ -393,5 +393,5 @@ extern u32 __iomem *uninorth_base;
393#define UN_BIC(r,v) (UN_OUT((r), UN_IN(r) & ~(v))) 393#define UN_BIC(r,v) (UN_OUT((r), UN_IN(r) & ~(v)))
394 394
395 395
396#endif /* __PPC_ASM_PMAC_FEATURE_H */ 396#endif /* __ASM_POWERPC_PMAC_FEATURE_H */
397#endif /* __KERNEL__ */ 397#endif /* __KERNEL__ */
diff --git a/include/asm-powerpc/systbl.h b/include/asm-powerpc/systbl.h
index 3d44446fb74f..700ca5928741 100644
--- a/include/asm-powerpc/systbl.h
+++ b/include/asm-powerpc/systbl.h
@@ -308,3 +308,6 @@ COMPAT_SYS_SPU(move_pages)
308SYSCALL_SPU(getcpu) 308SYSCALL_SPU(getcpu)
309COMPAT_SYS(epoll_pwait) 309COMPAT_SYS(epoll_pwait)
310COMPAT_SYS_SPU(utimensat) 310COMPAT_SYS_SPU(utimensat)
311COMPAT_SYS_SPU(signalfd)
312COMPAT_SYS_SPU(timerfd)
313SYSCALL_SPU(eventfd)
diff --git a/include/asm-powerpc/tsi108_irq.h b/include/asm-powerpc/tsi108_irq.h
index 3e4d04effa57..6ed93979fbe4 100644
--- a/include/asm-powerpc/tsi108_irq.h
+++ b/include/asm-powerpc/tsi108_irq.h
@@ -26,8 +26,8 @@
26 * demultiplexing on TSI108EMU/SVB boards. 26 * demultiplexing on TSI108EMU/SVB boards.
27 */ 27 */
28 28
29#ifndef _ASM_PPC_TSI108_IRQ_H 29#ifndef _ASM_POWERPC_TSI108_IRQ_H
30#define _ASM_PPC_TSI108_IRQ_H 30#define _ASM_POWERPC_TSI108_IRQ_H
31 31
32/* 32/*
33 * Tsi108 interrupts 33 * Tsi108 interrupts
@@ -121,4 +121,4 @@ typedef enum {
121 TSI108_IRQ_DIRECTED, 121 TSI108_IRQ_DIRECTED,
122 TSI108_IRQ_DISTRIBUTED, 122 TSI108_IRQ_DISTRIBUTED,
123} TSI108_IRQ_MODE; 123} TSI108_IRQ_MODE;
124#endif /* _ASM_PPC_TSI108_IRQ_H */ 124#endif /* _ASM_POWERPC_TSI108_IRQ_H */
diff --git a/include/asm-powerpc/tsi108_pci.h b/include/asm-powerpc/tsi108_pci.h
index a9f92f73232c..5653d7cc3e24 100644
--- a/include/asm-powerpc/tsi108_pci.h
+++ b/include/asm-powerpc/tsi108_pci.h
@@ -18,8 +18,8 @@
18 * MA 02111-1307 USA 18 * MA 02111-1307 USA
19 */ 19 */
20 20
21#ifndef _ASM_PPC_TSI108_PCI_H 21#ifndef _ASM_POWERPC_TSI108_PCI_H
22#define _ASM_PPC_TSI108_PCI_H 22#define _ASM_POWERPC_TSI108_PCI_H
23 23
24#include <asm/tsi108.h> 24#include <asm/tsi108.h>
25 25
@@ -42,4 +42,4 @@ extern void tsi108_pci_int_init(struct device_node *node);
42extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc); 42extern void tsi108_irq_cascade(unsigned int irq, struct irq_desc *desc);
43extern void tsi108_clear_pci_cfg_error(void); 43extern void tsi108_clear_pci_cfg_error(void);
44 44
45#endif /* _ASM_PPC_TSI108_PCI_H */ 45#endif /* _ASM_POWERPC_TSI108_PCI_H */
diff --git a/include/asm-powerpc/unistd.h b/include/asm-powerpc/unistd.h
index 21f004aef508..e3c28dc31abf 100644
--- a/include/asm-powerpc/unistd.h
+++ b/include/asm-powerpc/unistd.h
@@ -1,5 +1,5 @@
1#ifndef _ASM_PPC_UNISTD_H_ 1#ifndef _ASM_POWERPC_UNISTD_H_
2#define _ASM_PPC_UNISTD_H_ 2#define _ASM_POWERPC_UNISTD_H_
3 3
4/* 4/*
5 * This file contains the system call numbers. 5 * This file contains the system call numbers.
@@ -327,10 +327,13 @@
327#define __NR_getcpu 302 327#define __NR_getcpu 302
328#define __NR_epoll_pwait 303 328#define __NR_epoll_pwait 303
329#define __NR_utimensat 304 329#define __NR_utimensat 304
330#define __NR_signalfd 305
331#define __NR_timerfd 306
332#define __NR_eventfd 307
330 333
331#ifdef __KERNEL__ 334#ifdef __KERNEL__
332 335
333#define __NR_syscalls 305 336#define __NR_syscalls 308
334 337
335#define __NR__exit __NR_exit 338#define __NR__exit __NR_exit
336#define NR_syscalls __NR_syscalls 339#define NR_syscalls __NR_syscalls
@@ -381,4 +384,4 @@
381#endif /* __ASSEMBLY__ */ 384#endif /* __ASSEMBLY__ */
382#endif /* __KERNEL__ */ 385#endif /* __KERNEL__ */
383 386
384#endif /* _ASM_PPC_UNISTD_H_ */ 387#endif /* _ASM_POWERPC_UNISTD_H_ */
diff --git a/include/linux/lockd/xdr4.h b/include/linux/lockd/xdr4.h
index dd12b4c9e613..12bfe09de2b1 100644
--- a/include/linux/lockd/xdr4.h
+++ b/include/linux/lockd/xdr4.h
@@ -42,5 +42,6 @@ int nlmclt_encode_lockargs(struct rpc_rqst *, u32 *, struct nlm_args *);
42int nlmclt_encode_cancargs(struct rpc_rqst *, u32 *, struct nlm_args *); 42int nlmclt_encode_cancargs(struct rpc_rqst *, u32 *, struct nlm_args *);
43int nlmclt_encode_unlockargs(struct rpc_rqst *, u32 *, struct nlm_args *); 43int nlmclt_encode_unlockargs(struct rpc_rqst *, u32 *, struct nlm_args *);
44 */ 44 */
45extern struct rpc_version nlm_version4;
45 46
46#endif /* LOCKD_XDR4_H */ 47#endif /* LOCKD_XDR4_H */
diff --git a/include/linux/log2.h b/include/linux/log2.h
index 57e641e19a81..1b8a2c1cb0e3 100644
--- a/include/linux/log2.h
+++ b/include/linux/log2.h
@@ -159,7 +159,7 @@ unsigned long __roundup_pow_of_two(unsigned long n)
159#define roundup_pow_of_two(n) \ 159#define roundup_pow_of_two(n) \
160( \ 160( \
161 __builtin_constant_p(n) ? ( \ 161 __builtin_constant_p(n) ? ( \
162 (n == 1) ? 0 : \ 162 (n == 1) ? 1 : \
163 (1UL << (ilog2((n) - 1) + 1)) \ 163 (1UL << (ilog2((n) - 1) + 1)) \
164 ) : \ 164 ) : \
165 __roundup_pow_of_two(n) \ 165 __roundup_pow_of_two(n) \
diff --git a/include/linux/mii.h b/include/linux/mii.h
index beddc6d3b0f6..151b7e0182c7 100644
--- a/include/linux/mii.h
+++ b/include/linux/mii.h
@@ -56,8 +56,8 @@
56#define BMSR_ANEGCOMPLETE 0x0020 /* Auto-negotiation complete */ 56#define BMSR_ANEGCOMPLETE 0x0020 /* Auto-negotiation complete */
57#define BMSR_RESV 0x00c0 /* Unused... */ 57#define BMSR_RESV 0x00c0 /* Unused... */
58#define BMSR_ESTATEN 0x0100 /* Extended Status in R15 */ 58#define BMSR_ESTATEN 0x0100 /* Extended Status in R15 */
59#define BMSR_100FULL2 0x0200 /* Can do 100BASE-T2 HDX */ 59#define BMSR_100HALF2 0x0200 /* Can do 100BASE-T2 HDX */
60#define BMSR_100HALF2 0x0400 /* Can do 100BASE-T2 FDX */ 60#define BMSR_100FULL2 0x0400 /* Can do 100BASE-T2 FDX */
61#define BMSR_10HALF 0x0800 /* Can do 10mbps, half-duplex */ 61#define BMSR_10HALF 0x0800 /* Can do 10mbps, half-duplex */
62#define BMSR_10FULL 0x1000 /* Can do 10mbps, full-duplex */ 62#define BMSR_10FULL 0x1000 /* Can do 10mbps, full-duplex */
63#define BMSR_100HALF 0x2000 /* Can do 100mbps, half-duplex */ 63#define BMSR_100HALF 0x2000 /* Can do 100mbps, half-duplex */
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h
index 1be5be88debe..7e7f33a38fc0 100644
--- a/include/linux/nfs4.h
+++ b/include/linux/nfs4.h
@@ -16,6 +16,7 @@
16#include <linux/types.h> 16#include <linux/types.h>
17 17
18#define NFS4_VERIFIER_SIZE 8 18#define NFS4_VERIFIER_SIZE 8
19#define NFS4_STATEID_SIZE 16
19#define NFS4_FHSIZE 128 20#define NFS4_FHSIZE 128
20#define NFS4_MAXPATHLEN PATH_MAX 21#define NFS4_MAXPATHLEN PATH_MAX
21#define NFS4_MAXNAMLEN NAME_MAX 22#define NFS4_MAXNAMLEN NAME_MAX
@@ -113,7 +114,7 @@ struct nfs4_acl {
113}; 114};
114 115
115typedef struct { char data[NFS4_VERIFIER_SIZE]; } nfs4_verifier; 116typedef struct { char data[NFS4_VERIFIER_SIZE]; } nfs4_verifier;
116typedef struct { char data[16]; } nfs4_stateid; 117typedef struct { char data[NFS4_STATEID_SIZE]; } nfs4_stateid;
117 118
118enum nfs_opnum4 { 119enum nfs_opnum4 {
119 OP_ACCESS = 3, 120 OP_ACCESS = 3,
diff --git a/include/linux/sunrpc/rpc_pipe_fs.h b/include/linux/sunrpc/rpc_pipe_fs.h
index 4a68125b6de6..ad293760f6eb 100644
--- a/include/linux/sunrpc/rpc_pipe_fs.h
+++ b/include/linux/sunrpc/rpc_pipe_fs.h
@@ -47,6 +47,8 @@ extern struct dentry *rpc_mkpipe(struct dentry *, const char *, void *, struct r
47extern int rpc_unlink(struct dentry *); 47extern int rpc_unlink(struct dentry *);
48extern struct vfsmount *rpc_get_mount(void); 48extern struct vfsmount *rpc_get_mount(void);
49extern void rpc_put_mount(void); 49extern void rpc_put_mount(void);
50extern int register_rpc_pipefs(void);
51extern void unregister_rpc_pipefs(void);
50 52
51#endif 53#endif
52#endif 54#endif
diff --git a/include/linux/sunrpc/xprt.h b/include/linux/sunrpc/xprt.h
index fa89ce6ce076..34f7590506fa 100644
--- a/include/linux/sunrpc/xprt.h
+++ b/include/linux/sunrpc/xprt.h
@@ -244,6 +244,8 @@ void xprt_disconnect(struct rpc_xprt *xprt);
244 */ 244 */
245struct rpc_xprt * xs_setup_udp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to); 245struct rpc_xprt * xs_setup_udp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to);
246struct rpc_xprt * xs_setup_tcp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to); 246struct rpc_xprt * xs_setup_tcp(struct sockaddr *addr, size_t addrlen, struct rpc_timeout *to);
247int init_socket_xprt(void);
248void cleanup_socket_xprt(void);
247 249
248/* 250/*
249 * Reserved bit positions in xprt->state 251 * Reserved bit positions in xprt->state
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index 7eae8665ff59..ce0719a2cfeb 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -160,7 +160,7 @@ static inline int cancel_delayed_work(struct delayed_work *work)
160{ 160{
161 int ret; 161 int ret;
162 162
163 ret = del_timer(&work->timer); 163 ret = del_timer_sync(&work->timer);
164 if (ret) 164 if (ret)
165 work_clear_pending(&work->work); 165 work_clear_pending(&work->work);
166 return ret; 166 return ret;
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
index bfc9a35bad33..1dae3dfc66a9 100644
--- a/net/bluetooth/hci_sock.c
+++ b/net/bluetooth/hci_sock.c
@@ -665,7 +665,8 @@ static int hci_sock_dev_event(struct notifier_block *this, unsigned long event,
665 /* Detach sockets from device */ 665 /* Detach sockets from device */
666 read_lock(&hci_sk_list.lock); 666 read_lock(&hci_sk_list.lock);
667 sk_for_each(sk, node, &hci_sk_list.head) { 667 sk_for_each(sk, node, &hci_sk_list.head) {
668 lock_sock(sk); 668 local_bh_disable();
669 bh_lock_sock_nested(sk);
669 if (hci_pi(sk)->hdev == hdev) { 670 if (hci_pi(sk)->hdev == hdev) {
670 hci_pi(sk)->hdev = NULL; 671 hci_pi(sk)->hdev = NULL;
671 sk->sk_err = EPIPE; 672 sk->sk_err = EPIPE;
@@ -674,7 +675,8 @@ static int hci_sock_dev_event(struct notifier_block *this, unsigned long event,
674 675
675 hci_dev_put(hdev); 676 hci_dev_put(hdev);
676 } 677 }
677 release_sock(sk); 678 bh_unlock_sock(sk);
679 local_bh_enable();
678 } 680 }
679 read_unlock(&hci_sk_list.lock); 681 read_unlock(&hci_sk_list.lock);
680 } 682 }
diff --git a/net/core/dev.c b/net/core/dev.c
index 8301e2ac747f..f2b61111e26d 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -116,6 +116,7 @@
116#include <linux/dmaengine.h> 116#include <linux/dmaengine.h>
117#include <linux/err.h> 117#include <linux/err.h>
118#include <linux/ctype.h> 118#include <linux/ctype.h>
119#include <linux/if_arp.h>
119 120
120/* 121/*
121 * The list of packet types we will receive (as opposed to discard) 122 * The list of packet types we will receive (as opposed to discard)
@@ -217,6 +218,73 @@ extern void netdev_unregister_sysfs(struct net_device *);
217#define netdev_unregister_sysfs(dev) do { } while(0) 218#define netdev_unregister_sysfs(dev) do { } while(0)
218#endif 219#endif
219 220
221#ifdef CONFIG_DEBUG_LOCK_ALLOC
222/*
223 * register_netdevice() inits dev->_xmit_lock and sets lockdep class
224 * according to dev->type
225 */
226static const unsigned short netdev_lock_type[] =
227 {ARPHRD_NETROM, ARPHRD_ETHER, ARPHRD_EETHER, ARPHRD_AX25,
228 ARPHRD_PRONET, ARPHRD_CHAOS, ARPHRD_IEEE802, ARPHRD_ARCNET,
229 ARPHRD_APPLETLK, ARPHRD_DLCI, ARPHRD_ATM, ARPHRD_METRICOM,
230 ARPHRD_IEEE1394, ARPHRD_EUI64, ARPHRD_INFINIBAND, ARPHRD_SLIP,
231 ARPHRD_CSLIP, ARPHRD_SLIP6, ARPHRD_CSLIP6, ARPHRD_RSRVD,
232 ARPHRD_ADAPT, ARPHRD_ROSE, ARPHRD_X25, ARPHRD_HWX25,
233 ARPHRD_PPP, ARPHRD_CISCO, ARPHRD_LAPB, ARPHRD_DDCMP,
234 ARPHRD_RAWHDLC, ARPHRD_TUNNEL, ARPHRD_TUNNEL6, ARPHRD_FRAD,
235 ARPHRD_SKIP, ARPHRD_LOOPBACK, ARPHRD_LOCALTLK, ARPHRD_FDDI,
236 ARPHRD_BIF, ARPHRD_SIT, ARPHRD_IPDDP, ARPHRD_IPGRE,
237 ARPHRD_PIMREG, ARPHRD_HIPPI, ARPHRD_ASH, ARPHRD_ECONET,
238 ARPHRD_IRDA, ARPHRD_FCPP, ARPHRD_FCAL, ARPHRD_FCPL,
239 ARPHRD_FCFABRIC, ARPHRD_IEEE802_TR, ARPHRD_IEEE80211,
240 ARPHRD_IEEE80211_PRISM, ARPHRD_IEEE80211_RADIOTAP, ARPHRD_VOID,
241 ARPHRD_NONE};
242
243static const char *netdev_lock_name[] =
244 {"_xmit_NETROM", "_xmit_ETHER", "_xmit_EETHER", "_xmit_AX25",
245 "_xmit_PRONET", "_xmit_CHAOS", "_xmit_IEEE802", "_xmit_ARCNET",
246 "_xmit_APPLETLK", "_xmit_DLCI", "_xmit_ATM", "_xmit_METRICOM",
247 "_xmit_IEEE1394", "_xmit_EUI64", "_xmit_INFINIBAND", "_xmit_SLIP",
248 "_xmit_CSLIP", "_xmit_SLIP6", "_xmit_CSLIP6", "_xmit_RSRVD",
249 "_xmit_ADAPT", "_xmit_ROSE", "_xmit_X25", "_xmit_HWX25",
250 "_xmit_PPP", "_xmit_CISCO", "_xmit_LAPB", "_xmit_DDCMP",
251 "_xmit_RAWHDLC", "_xmit_TUNNEL", "_xmit_TUNNEL6", "_xmit_FRAD",
252 "_xmit_SKIP", "_xmit_LOOPBACK", "_xmit_LOCALTLK", "_xmit_FDDI",
253 "_xmit_BIF", "_xmit_SIT", "_xmit_IPDDP", "_xmit_IPGRE",
254 "_xmit_PIMREG", "_xmit_HIPPI", "_xmit_ASH", "_xmit_ECONET",
255 "_xmit_IRDA", "_xmit_FCPP", "_xmit_FCAL", "_xmit_FCPL",
256 "_xmit_FCFABRIC", "_xmit_IEEE802_TR", "_xmit_IEEE80211",
257 "_xmit_IEEE80211_PRISM", "_xmit_IEEE80211_RADIOTAP", "_xmit_VOID",
258 "_xmit_NONE"};
259
260static struct lock_class_key netdev_xmit_lock_key[ARRAY_SIZE(netdev_lock_type)];
261
262static inline unsigned short netdev_lock_pos(unsigned short dev_type)
263{
264 int i;
265
266 for (i = 0; i < ARRAY_SIZE(netdev_lock_type); i++)
267 if (netdev_lock_type[i] == dev_type)
268 return i;
269 /* the last key is used by default */
270 return ARRAY_SIZE(netdev_lock_type) - 1;
271}
272
273static inline void netdev_set_lockdep_class(spinlock_t *lock,
274 unsigned short dev_type)
275{
276 int i;
277
278 i = netdev_lock_pos(dev_type);
279 lockdep_set_class_and_name(lock, &netdev_xmit_lock_key[i],
280 netdev_lock_name[i]);
281}
282#else
283static inline void netdev_set_lockdep_class(spinlock_t *lock,
284 unsigned short dev_type)
285{
286}
287#endif
220 288
221/******************************************************************************* 289/*******************************************************************************
222 290
@@ -3001,6 +3069,7 @@ int register_netdevice(struct net_device *dev)
3001 3069
3002 spin_lock_init(&dev->queue_lock); 3070 spin_lock_init(&dev->queue_lock);
3003 spin_lock_init(&dev->_xmit_lock); 3071 spin_lock_init(&dev->_xmit_lock);
3072 netdev_set_lockdep_class(&dev->_xmit_lock, dev->type);
3004 dev->xmit_lock_owner = -1; 3073 dev->xmit_lock_owner = -1;
3005 spin_lock_init(&dev->ingress_lock); 3074 spin_lock_init(&dev->ingress_lock);
3006 3075
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig
index c68196cc56ab..010fbb2d45e9 100644
--- a/net/ipv4/Kconfig
+++ b/net/ipv4/Kconfig
@@ -43,11 +43,11 @@ config IP_ADVANCED_ROUTER
43 asymmetric routing (packets from you to a host take a different path 43 asymmetric routing (packets from you to a host take a different path
44 than packets from that host to you) or if you operate a non-routing 44 than packets from that host to you) or if you operate a non-routing
45 host which has several IP addresses on different interfaces. To turn 45 host which has several IP addresses on different interfaces. To turn
46 rp_filter off use: 46 rp_filter on use:
47 47
48 echo 0 > /proc/sys/net/ipv4/conf/<device>/rp_filter 48 echo 1 > /proc/sys/net/ipv4/conf/<device>/rp_filter
49 or 49 or
50 echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter 50 echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
51 51
52 If unsure, say N here. 52 If unsure, say N here.
53 53
@@ -577,6 +577,7 @@ config TCP_CONG_VENO
577config TCP_CONG_YEAH 577config TCP_CONG_YEAH
578 tristate "YeAH TCP" 578 tristate "YeAH TCP"
579 depends on EXPERIMENTAL 579 depends on EXPERIMENTAL
580 select TCP_CONG_VEGAS
580 default n 581 default n
581 ---help--- 582 ---help---
582 YeAH-TCP is a sender-side high-speed enabled TCP congestion control 583 YeAH-TCP is a sender-side high-speed enabled TCP congestion control
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index cb76e3c725a0..df9fe4f2e8cc 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -2396,7 +2396,7 @@ static int ip_route_output_slow(struct rtable **rp, const struct flowi *oldflp)
2396 2396
2397 /* It is equivalent to inet_addr_type(saddr) == RTN_LOCAL */ 2397 /* It is equivalent to inet_addr_type(saddr) == RTN_LOCAL */
2398 dev_out = ip_dev_find(oldflp->fl4_src); 2398 dev_out = ip_dev_find(oldflp->fl4_src);
2399 if ((dev_out == NULL) && !(sysctl_ip_nonlocal_bind)) 2399 if (dev_out == NULL)
2400 goto out; 2400 goto out;
2401 2401
2402 /* I removed check for oif == dev_out->oif here. 2402 /* I removed check for oif == dev_out->oif here.
@@ -2407,7 +2407,7 @@ static int ip_route_output_slow(struct rtable **rp, const struct flowi *oldflp)
2407 of another iface. --ANK 2407 of another iface. --ANK
2408 */ 2408 */
2409 2409
2410 if (dev_out && oldflp->oif == 0 2410 if (oldflp->oif == 0
2411 && (MULTICAST(oldflp->fl4_dst) || oldflp->fl4_dst == htonl(0xFFFFFFFF))) { 2411 && (MULTICAST(oldflp->fl4_dst) || oldflp->fl4_dst == htonl(0xFFFFFFFF))) {
2412 /* Special hack: user can direct multicasts 2412 /* Special hack: user can direct multicasts
2413 and limited broadcast via necessary interface 2413 and limited broadcast via necessary interface
diff --git a/net/ipv4/tcp_cong.c b/net/ipv4/tcp_cong.c
index 86b26539e54b..1260e52ad772 100644
--- a/net/ipv4/tcp_cong.c
+++ b/net/ipv4/tcp_cong.c
@@ -276,30 +276,34 @@ int tcp_set_congestion_control(struct sock *sk, const char *name)
276 276
277 277
278/* 278/*
279 * Slow start (exponential increase) with 279 * Slow start is used when congestion window is less than slow start
280 * RFC3742 Limited Slow Start (fast linear increase) support. 280 * threshold. This version implements the basic RFC2581 version
281 * and optionally supports:
282 * RFC3742 Limited Slow Start - growth limited to max_ssthresh
283 * RFC3465 Appropriate Byte Counting - growth limited by bytes acknowledged
281 */ 284 */
282void tcp_slow_start(struct tcp_sock *tp) 285void tcp_slow_start(struct tcp_sock *tp)
283{ 286{
284 int cnt = 0; 287 int cnt; /* increase in packets */
285 288
286 if (sysctl_tcp_abc) { 289 /* RFC3465: ABC Slow start
287 /* RFC3465: Slow Start 290 * Increase only after a full MSS of bytes is acked
288 * TCP sender SHOULD increase cwnd by the number of 291 *
289 * previously unacknowledged bytes ACKed by each incoming 292 * TCP sender SHOULD increase cwnd by the number of
290 * acknowledgment, provided the increase is not more than L 293 * previously unacknowledged bytes ACKed by each incoming
291 */ 294 * acknowledgment, provided the increase is not more than L
292 if (tp->bytes_acked < tp->mss_cache) 295 */
293 return; 296 if (sysctl_tcp_abc && tp->bytes_acked < tp->mss_cache)
294 } 297 return;
295 298
296 if (sysctl_tcp_max_ssthresh > 0 && 299 if (sysctl_tcp_max_ssthresh > 0 && tp->snd_cwnd > sysctl_tcp_max_ssthresh)
297 tp->snd_cwnd > sysctl_tcp_max_ssthresh) 300 cnt = sysctl_tcp_max_ssthresh >> 1; /* limited slow start */
298 cnt += sysctl_tcp_max_ssthresh>>1;
299 else 301 else
300 cnt += tp->snd_cwnd; 302 cnt = tp->snd_cwnd; /* exponential increase */
301 303
302 /* RFC3465: We MAY increase by 2 if discovered delayed ack */ 304 /* RFC3465: ABC
305 * We MAY increase by 2 if discovered delayed ack
306 */
303 if (sysctl_tcp_abc > 1 && tp->bytes_acked >= 2*tp->mss_cache) 307 if (sysctl_tcp_abc > 1 && tp->bytes_acked >= 2*tp->mss_cache)
304 cnt <<= 1; 308 cnt <<= 1;
305 tp->bytes_acked = 0; 309 tp->bytes_acked = 0;
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
index b011eb625e49..944d75396fb3 100644
--- a/net/sunrpc/sched.c
+++ b/net/sunrpc/sched.c
@@ -989,8 +989,6 @@ void rpc_killall_tasks(struct rpc_clnt *clnt)
989 spin_unlock(&rpc_sched_lock); 989 spin_unlock(&rpc_sched_lock);
990} 990}
991 991
992static DECLARE_MUTEX_LOCKED(rpciod_running);
993
994static void rpciod_killall(void) 992static void rpciod_killall(void)
995{ 993{
996 unsigned long flags; 994 unsigned long flags;
diff --git a/net/sunrpc/sunrpc_syms.c b/net/sunrpc/sunrpc_syms.c
index 0d35bc796d00..73075dec83c0 100644
--- a/net/sunrpc/sunrpc_syms.c
+++ b/net/sunrpc/sunrpc_syms.c
@@ -134,11 +134,7 @@ EXPORT_SYMBOL(nfsd_debug);
134EXPORT_SYMBOL(nlm_debug); 134EXPORT_SYMBOL(nlm_debug);
135#endif 135#endif
136 136
137extern int register_rpc_pipefs(void);
138extern void unregister_rpc_pipefs(void);
139extern struct cache_detail ip_map_cache, unix_gid_cache; 137extern struct cache_detail ip_map_cache, unix_gid_cache;
140extern int init_socket_xprt(void);
141extern void cleanup_socket_xprt(void);
142 138
143static int __init 139static int __init
144init_sunrpc(void) 140init_sunrpc(void)