aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/00-INDEX6
-rw-r--r--Documentation/filesystems/proc.txt4
-rw-r--r--Documentation/kernel-parameters.txt2
-rw-r--r--Documentation/laptops/00-INDEX2
-rw-r--r--Documentation/laptops/acer-wmi.txt4
-rw-r--r--Documentation/laptops/laptop-mode.txt (renamed from Documentation/laptop-mode.txt)0
-rw-r--r--Documentation/power/00-INDEX6
-rw-r--r--Documentation/power/pm.txt (renamed from Documentation/pm.txt)2
-rw-r--r--Documentation/power/pm_qos_interface.txt (renamed from Documentation/pm_qos_interface.txt)0
-rw-r--r--Documentation/power/power_supply_class.txt (renamed from Documentation/power_supply_class.txt)0
-rw-r--r--Documentation/thermal/sysfs-api.txt22
-rw-r--r--MAINTAINERS32
-rw-r--r--arch/alpha/Kconfig3
-rw-r--r--arch/alpha/kernel/pci_iommu.c12
-rw-r--r--arch/arm/Makefile1
-rw-r--r--arch/arm/common/it8152.c6
-rw-r--r--arch/arm/configs/omap_h2_1610_defconfig71
-rw-r--r--arch/arm/configs/omap_osk_5912_defconfig123
-rw-r--r--arch/arm/kernel/head-common.S3
-rw-r--r--arch/arm/kernel/head.S3
-rw-r--r--arch/arm/kernel/kprobes.c5
-rw-r--r--arch/arm/mach-at91/board-sam9263ek.c5
-rw-r--r--arch/arm/mach-at91/gpio.c7
-rw-r--r--arch/arm/mach-h720x/common.c12
-rw-r--r--arch/arm/mach-imx/dma.c12
-rw-r--r--arch/arm/mach-imx/irq.c6
-rw-r--r--arch/arm/mach-iop13xx/iq81340mc.c2
-rw-r--r--arch/arm/mach-iop13xx/iq81340sc.c2
-rw-r--r--arch/arm/mach-iop13xx/pci.c8
-rw-r--r--arch/arm/mach-iop13xx/setup.c2
-rw-r--r--arch/arm/mach-ixp4xx/common-pci.c2
-rw-r--r--arch/arm/mach-ixp4xx/gtwx5715-pci.c2
-rw-r--r--arch/arm/mach-netx/generic.c6
-rw-r--r--arch/arm/mach-ns9xxx/gpio.c2
-rw-r--r--arch/arm/mach-omap1/board-h2.c4
-rw-r--r--arch/arm/mach-omap1/board-h3.c22
-rw-r--r--arch/arm/mach-omap1/pm.c2
-rw-r--r--arch/arm/mach-omap2/io.c6
-rw-r--r--arch/arm/mach-orion/addr-map.c14
-rw-r--r--arch/arm/mach-orion/common.c24
-rw-r--r--arch/arm/mach-orion/common.h6
-rw-r--r--arch/arm/mach-orion/dns323-setup.c1
-rw-r--r--arch/arm/mach-orion/gpio.c12
-rw-r--r--arch/arm/mach-orion/kurobox_pro-setup.c1
-rw-r--r--arch/arm/mach-orion/ts209-setup.c1
-rw-r--r--arch/arm/mach-pnx4008/clock.c2
-rw-r--r--arch/arm/mach-pnx4008/dma.c2
-rw-r--r--arch/arm/mach-pxa/cm-x270-pci.c2
-rw-r--r--arch/arm/mach-pxa/cm-x270.c4
-rw-r--r--arch/arm/mach-pxa/dma.c2
-rw-r--r--arch/arm/mach-pxa/em-x270.c2
-rw-r--r--arch/arm/mach-pxa/mainstone.c4
-rw-r--r--arch/arm/mach-pxa/trizeps4.c8
-rw-r--r--arch/arm/mach-sa1100/badge4.c6
-rw-r--r--arch/arm/mach-sa1100/cpu-sa1100.c2
-rw-r--r--arch/arm/mach-sa1100/dma.c8
-rw-r--r--arch/arm/mach-sa1100/h3600.c14
-rw-r--r--arch/arm/plat-iop/pci.c2
-rw-r--r--arch/arm/plat-omap/cpu-omap.c32
-rw-r--r--arch/arm/plat-omap/devices.c63
-rw-r--r--arch/arm/plat-omap/dma.c14
-rw-r--r--arch/arm/plat-omap/dmtimer.c2
-rw-r--r--arch/arm/plat-omap/gpio.c65
-rw-r--r--arch/arm/plat-s3c24xx/dma.c64
-rw-r--r--arch/mips/Kconfig2
-rw-r--r--arch/mips/Makefile2
-rw-r--r--arch/mips/au1000/common/dbdma.c34
-rw-r--r--arch/mips/defconfig1158
-rw-r--r--arch/mips/kernel/Makefile1
-rw-r--r--arch/mips/kernel/cpu-bugs64.c4
-rw-r--r--arch/mips/kernel/cpu-probe.c10
-rw-r--r--arch/mips/kernel/csrc-r4k.c7
-rw-r--r--arch/mips/kernel/head.S2
-rw-r--r--arch/mips/kernel/traps.c38
-rw-r--r--arch/mips/lib/ucmpdi2.c2
-rw-r--r--arch/mips/lib/uncached.c2
-rw-r--r--arch/mips/mips-boards/generic/time.c2
-rw-r--r--arch/mips/mipssim/sim_time.c2
-rw-r--r--arch/mips/mm/c-r3k.c2
-rw-r--r--arch/mips/mm/c-r4k.c30
-rw-r--r--arch/mips/mm/c-tx39.c2
-rw-r--r--arch/mips/mm/cache.c5
-rw-r--r--arch/mips/mm/cex-sb1.S4
-rw-r--r--arch/mips/mm/pg-r4k.c22
-rw-r--r--arch/mips/mm/pg-sb1.c4
-rw-r--r--arch/mips/mm/sc-ip22.c2
-rw-r--r--arch/mips/mm/sc-mips.c3
-rw-r--r--arch/mips/mm/sc-r5k.c2
-rw-r--r--arch/mips/mm/sc-rm7k.c2
-rw-r--r--arch/mips/mm/tlb-r3k.c2
-rw-r--r--arch/mips/mm/tlb-r4k.c10
-rw-r--r--arch/mips/mm/tlb-r8k.c4
-rw-r--r--arch/mips/mm/tlbex.c70
-rw-r--r--arch/mips/mm/uasm.c68
-rw-r--r--arch/mips/mm/uasm.h76
-rw-r--r--arch/mips/pci/pci-bcm1480.c5
-rw-r--r--arch/mips/pci/pci-ip27.c2
-rw-r--r--arch/mips/pci/pci.c2
-rw-r--r--arch/mips/pmc-sierra/yosemite/smp.c6
-rw-r--r--arch/mips/sgi-ip27/ip27-init.c2
-rw-r--r--arch/mips/sgi-ip27/ip27-timer.c2
-rw-r--r--arch/mips/sgi-ip27/ip27-xtalk.c6
-rw-r--r--arch/powerpc/Makefile2
-rw-r--r--arch/powerpc/boot/Makefile18
-rw-r--r--arch/powerpc/boot/dts/mpc8377_mds.dts70
-rw-r--r--arch/powerpc/boot/dts/mpc8378_mds.dts70
-rw-r--r--arch/powerpc/boot/dts/mpc8379_mds.dts70
-rw-r--r--arch/powerpc/boot/dts/sbc8548.dts16
-rwxr-xr-xarch/powerpc/boot/wrapper6
-rw-r--r--arch/powerpc/configs/adder875-redboot_defconfig798
-rw-r--r--arch/powerpc/configs/adder875_defconfig (renamed from arch/powerpc/configs/adder875-uboot_defconfig)61
-rw-r--r--arch/powerpc/kernel/head_8xx.S30
-rw-r--r--arch/powerpc/kernel/misc_32.S15
-rw-r--r--arch/powerpc/kernel/pci-common.c8
-rw-r--r--arch/powerpc/kernel/ppc_ksyms.c3
-rw-r--r--arch/powerpc/mm/hash_utils_64.c4
-rw-r--r--arch/powerpc/platforms/83xx/mpc837x_mds.c8
-rw-r--r--arch/powerpc/platforms/Kconfig1
-rw-r--r--arch/powerpc/platforms/Kconfig.cputype7
-rw-r--r--arch/powerpc/platforms/cell/spufs/context.c3
-rw-r--r--arch/powerpc/platforms/cell/spufs/run.c3
-rw-r--r--arch/powerpc/platforms/cell/spufs/sched.c4
-rw-r--r--arch/powerpc/platforms/cell/spufs/spufs.h1
-rw-r--r--arch/powerpc/platforms/powermac/pic.c2
-rw-r--r--arch/powerpc/sysdev/qe_lib/qe.c7
-rw-r--r--arch/ppc/kernel/head_8xx.S30
-rw-r--r--arch/x86/Kconfig2
-rw-r--r--block/genhd.c4
-rw-r--r--crypto/async_tx/async_memcpy.c6
-rw-r--r--crypto/async_tx/async_memset.c6
-rw-r--r--crypto/async_tx/async_tx.c6
-rw-r--r--crypto/async_tx/async_xor.c12
-rw-r--r--drivers/acpi/Kconfig19
-rw-r--r--drivers/acpi/bus.c2
-rw-r--r--drivers/acpi/button.c1
-rw-r--r--drivers/acpi/ec.c17
-rw-r--r--drivers/acpi/osl.c2
-rw-r--r--drivers/acpi/pci_irq.c98
-rw-r--r--drivers/acpi/pci_root.c2
-rw-r--r--drivers/acpi/processor_core.c25
-rw-r--r--drivers/acpi/scan.c5
-rw-r--r--drivers/acpi/sleep/main.c2
-rw-r--r--drivers/acpi/system.c2
-rw-r--r--drivers/acpi/thermal.c12
-rw-r--r--drivers/acpi/toshiba_acpi.c7
-rw-r--r--drivers/acpi/utilities/utdebug.c2
-rw-r--r--drivers/acpi/utilities/utobject.c2
-rw-r--r--drivers/acpi/utils.c6
-rw-r--r--drivers/acpi/video.c4
-rw-r--r--drivers/acpi/wmi.c10
-rw-r--r--drivers/atm/firestream.c4
-rw-r--r--drivers/atm/fore200e.c4
-rw-r--r--drivers/atm/idt77252.c12
-rw-r--r--drivers/block/floppy.c5
-rw-r--r--drivers/block/viodasd.c3
-rw-r--r--drivers/bluetooth/hci_usb.c3
-rw-r--r--drivers/char/riscom8.c2
-rw-r--r--drivers/dma/dmaengine.c2
-rw-r--r--drivers/dma/fsldma.c58
-rw-r--r--drivers/dma/iop-adma.c32
-rw-r--r--drivers/i2c/busses/i2c-amd756.c2
-rw-r--r--drivers/i2c/chips/Makefile7
-rw-r--r--drivers/i2c/i2c-core.c6
-rw-r--r--drivers/infiniband/hw/ipath/ipath_common.h2
-rw-r--r--drivers/infiniband/hw/ipath/ipath_driver.c28
-rw-r--r--drivers/infiniband/hw/ipath/ipath_kernel.h1
-rw-r--r--drivers/infiniband/hw/ipath/ipath_mad.c7
-rw-r--r--drivers/infiniband/hw/ipath/ipath_qp.c13
-rw-r--r--drivers/infiniband/hw/ipath/ipath_rc.c4
-rw-r--r--drivers/infiniband/hw/ipath/ipath_registers.h2
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_cm.c9
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_main.c9
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_multicast.c2
-rw-r--r--drivers/isdn/i4l/isdn_common.c4
-rw-r--r--drivers/isdn/i4l/isdn_v110.c2
-rw-r--r--drivers/macintosh/via-pmu-backlight.c5
-rw-r--r--drivers/macintosh/via-pmu.c2
-rw-r--r--drivers/misc/Kconfig1
-rw-r--r--drivers/misc/acer-wmi.c44
-rw-r--r--drivers/misc/sony-laptop.c2
-rw-r--r--drivers/net/Kconfig20
-rw-r--r--drivers/net/ac3200.c7
-rw-r--r--drivers/net/apne.c7
-rw-r--r--drivers/net/appletalk/ltpc.c3
-rw-r--r--drivers/net/arcnet/capmode.c6
-rw-r--r--drivers/net/atarilance.c5
-rw-r--r--drivers/net/e100.c29
-rw-r--r--drivers/net/enc28j60.c3
-rw-r--r--drivers/net/ixgbe/ixgbe_main.c2
-rw-r--r--drivers/net/mv643xx_eth.c1
-rw-r--r--drivers/net/pcmcia/axnet_cs.c2
-rw-r--r--drivers/net/phy/Kconfig1
-rw-r--r--drivers/net/phy/davicom.c17
-rw-r--r--drivers/net/pppol2tp.c69
-rw-r--r--drivers/net/s2io.c2
-rw-r--r--drivers/net/tulip/de2104x.c3
-rw-r--r--drivers/net/wan/sbni.c2
-rw-r--r--drivers/net/wireless/libertas/cmdresp.c2
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c5
-rw-r--r--drivers/pci/bus.c6
-rw-r--r--drivers/pci/pci-acpi.c24
-rw-r--r--drivers/pnp/quirks.c100
-rw-r--r--drivers/spi/au1550_spi.c4
-rw-r--r--drivers/spi/spi_bitbang.c8
-rw-r--r--drivers/thermal/Kconfig1
-rw-r--r--drivers/thermal/thermal.c169
-rw-r--r--fs/proc/base.c3
-rw-r--r--fs/proc/generic.c26
-rw-r--r--fs/proc/internal.h7
-rw-r--r--fs/proc/proc_net.c117
-rw-r--r--fs/proc/task_mmu.c18
-rw-r--r--include/asm-arm/arch-omap/board-h3.h2
-rw-r--r--include/asm-arm/arch-omap/common.h9
-rw-r--r--include/asm-arm/arch-omap/gpioexpander.h11
-rw-r--r--include/asm-arm/pgtable-nommu.h2
-rw-r--r--include/asm-arm/plat-s3c/uncompress.h4
-rw-r--r--include/asm-arm/proc-fns.h4
-rw-r--r--include/asm-h8300/uaccess.h11
-rw-r--r--include/asm-mips/cacheflush.h2
-rw-r--r--include/asm-mips/highmem.h1
-rw-r--r--include/asm-mips/mach-ip27/cpu-feature-overrides.h4
-rw-r--r--include/asm-mips/mach-jmr3927/ioremap.h2
-rw-r--r--include/asm-mips/mach-lasat/irq.h2
-rw-r--r--include/asm-mips/pgtable-32.h2
-rw-r--r--include/asm-mips/time.h5
-rw-r--r--include/asm-powerpc/pgtable-ppc32.h8
-rw-r--r--include/asm-ppc/pgtable.h8
-rw-r--r--include/linux/Kbuild1
-rw-r--r--include/linux/ethtool.h1
-rw-r--r--include/linux/genhd.h30
-rw-r--r--include/linux/mm.h13
-rw-r--r--include/linux/netfilter/nfnetlink_compat.h2
-rw-r--r--include/linux/pci.h1
-rw-r--r--include/linux/pmu.h9
-rw-r--r--include/linux/proc_fs.h3
-rw-r--r--include/net/bluetooth/bluetooth.h2
-rw-r--r--include/net/irda/irttp.h6
-rw-r--r--include/net/net_namespace.h1
-rw-r--r--include/net/netfilter/nf_conntrack_extend.h1
-rw-r--r--kernel/power/Kconfig2
-rw-r--r--kernel/power/snapshot.c41
-rw-r--r--lib/swiotlb.c30
-rw-r--r--net/bluetooth/bnep/bnep.h2
-rw-r--r--net/bluetooth/bnep/sock.c4
-rw-r--r--net/bluetooth/hci_core.c4
-rw-r--r--net/bluetooth/hci_sock.c4
-rw-r--r--net/ipv4/tcp_output.c12
-rw-r--r--net/netfilter/nf_conntrack_expect.c2
-rw-r--r--net/netfilter/nf_conntrack_extend.c19
-rw-r--r--net/netfilter/nf_queue.c2
-rw-r--r--net/netfilter/nfnetlink_log.c32
-rw-r--r--net/netfilter/nfnetlink_queue.c17
-rw-r--r--net/netfilter/xt_time.c7
-rw-r--r--net/rxrpc/ar-recvmsg.c3
-rw-r--r--net/sctp/bind_addr.c4
-rw-r--r--net/sctp/ipv6.c4
-rw-r--r--net/sctp/protocol.c4
-rw-r--r--net/sctp/sm_make_chunk.c8
-rw-r--r--net/sctp/socket.c73
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_sendto.c2
-rw-r--r--net/sunrpc/xprtrdma/svc_rdma_transport.c96
-rwxr-xr-xscripts/kernel-doc4
-rw-r--r--security/smack/smack.h8
-rw-r--r--security/smack/smackfs.c31
265 files changed, 2179 insertions, 3189 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX
index 042073f656e5..fc8e7c7d182f 100644
--- a/Documentation/00-INDEX
+++ b/Documentation/00-INDEX
@@ -225,8 +225,6 @@ kprobes.txt
225 - documents the kernel probes debugging feature. 225 - documents the kernel probes debugging feature.
226kref.txt 226kref.txt
227 - docs on adding reference counters (krefs) to kernel objects. 227 - docs on adding reference counters (krefs) to kernel objects.
228laptop-mode.txt
229 - how to conserve battery power using laptop-mode.
230laptops/ 228laptops/
231 - directory with laptop related info and laptop driver documentation. 229 - directory with laptop related info and laptop driver documentation.
232ldm.txt 230ldm.txt
@@ -301,12 +299,8 @@ pcmcia/
301 - info on the Linux PCMCIA driver. 299 - info on the Linux PCMCIA driver.
302pi-futex.txt 300pi-futex.txt
303 - documentation on lightweight PI-futexes. 301 - documentation on lightweight PI-futexes.
304pm.txt
305 - info on Linux power management support.
306pnp.txt 302pnp.txt
307 - Linux Plug and Play documentation. 303 - Linux Plug and Play documentation.
308power_supply_class.txt
309 - Tells userspace about battery, UPS, AC or DC power supply properties
310power/ 304power/
311 - directory with info on Linux PCI power management. 305 - directory with info on Linux PCI power management.
312powerpc/ 306powerpc/
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt
index 5681e2fa1496..518ebe609e2b 100644
--- a/Documentation/filesystems/proc.txt
+++ b/Documentation/filesystems/proc.txt
@@ -1506,13 +1506,13 @@ laptop_mode
1506----------- 1506-----------
1507 1507
1508laptop_mode is a knob that controls "laptop mode". All the things that are 1508laptop_mode is a knob that controls "laptop mode". All the things that are
1509controlled by this knob are discussed in Documentation/laptop-mode.txt. 1509controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt.
1510 1510
1511block_dump 1511block_dump
1512---------- 1512----------
1513 1513
1514block_dump enables block I/O debugging when set to a nonzero value. More 1514block_dump enables block I/O debugging when set to a nonzero value. More
1515information on block I/O debugging is in Documentation/laptop-mode.txt. 1515information on block I/O debugging is in Documentation/laptops/laptop-mode.txt.
1516 1516
1517swap_token_timeout 1517swap_token_timeout
1518------------------ 1518------------------
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 533e67febf81..49318b99e581 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -138,7 +138,7 @@ and is between 256 and 4096 characters. It is defined in the file
138 strict -- Be less tolerant of platforms that are not 138 strict -- Be less tolerant of platforms that are not
139 strictly ACPI specification compliant. 139 strictly ACPI specification compliant.
140 140
141 See also Documentation/pm.txt, pci=noacpi 141 See also Documentation/power/pm.txt, pci=noacpi
142 142
143 acpi_apic_instance= [ACPI, IOAPIC] 143 acpi_apic_instance= [ACPI, IOAPIC]
144 Format: <int> 144 Format: <int>
diff --git a/Documentation/laptops/00-INDEX b/Documentation/laptops/00-INDEX
index 729c2c062e10..ee5692b26dd4 100644
--- a/Documentation/laptops/00-INDEX
+++ b/Documentation/laptops/00-INDEX
@@ -2,6 +2,8 @@
2 - This file 2 - This file
3acer-wmi.txt 3acer-wmi.txt
4 - information on the Acer Laptop WMI Extras driver. 4 - information on the Acer Laptop WMI Extras driver.
5laptop-mode.txt
6 - how to conserve battery power using laptop-mode.
5sony-laptop.txt 7sony-laptop.txt
6 - Sony Notebook Control Driver (SNC) Readme. 8 - Sony Notebook Control Driver (SNC) Readme.
7sonypi.txt 9sonypi.txt
diff --git a/Documentation/laptops/acer-wmi.txt b/Documentation/laptops/acer-wmi.txt
index b06696329cff..23df051dbf69 100644
--- a/Documentation/laptops/acer-wmi.txt
+++ b/Documentation/laptops/acer-wmi.txt
@@ -48,7 +48,7 @@ DSDT.
48 48
49To send me the DSDT, as root/sudo: 49To send me the DSDT, as root/sudo:
50 50
51cat /sys/firmware/acpi/DSDT > dsdt 51cat /sys/firmware/acpi/tables/DSDT > dsdt
52 52
53And send me the resulting 'dsdt' file. 53And send me the resulting 'dsdt' file.
54 54
@@ -169,7 +169,7 @@ can be added to acer-wmi.
169 169
170The LED is exposed through the LED subsystem, and can be found in: 170The LED is exposed through the LED subsystem, and can be found in:
171 171
172/sys/devices/platform/acer-wmi/leds/acer-mail:green/ 172/sys/devices/platform/acer-wmi/leds/acer-wmi::mail/
173 173
174The mail LED is autodetected, so if you don't have one, the LED device won't 174The mail LED is autodetected, so if you don't have one, the LED device won't
175be registered. 175be registered.
diff --git a/Documentation/laptop-mode.txt b/Documentation/laptops/laptop-mode.txt
index eeedee11c8c2..eeedee11c8c2 100644
--- a/Documentation/laptop-mode.txt
+++ b/Documentation/laptops/laptop-mode.txt
diff --git a/Documentation/power/00-INDEX b/Documentation/power/00-INDEX
index 8db4e41a052d..a55d7f1c836d 100644
--- a/Documentation/power/00-INDEX
+++ b/Documentation/power/00-INDEX
@@ -14,6 +14,12 @@ notifiers.txt
14 - Registering suspend notifiers in device drivers 14 - Registering suspend notifiers in device drivers
15pci.txt 15pci.txt
16 - How the PCI Subsystem Does Power Management 16 - How the PCI Subsystem Does Power Management
17pm.txt
18 - info on Linux power management support.
19pm_qos_interface.txt
20 - info on Linux PM Quality of Service interface
21power_supply_class.txt
22 - Tells userspace about battery, UPS, AC or DC power supply properties
17s2ram.txt 23s2ram.txt
18 - How to get suspend to ram working (and debug it when it isn't) 24 - How to get suspend to ram working (and debug it when it isn't)
19states.txt 25states.txt
diff --git a/Documentation/pm.txt b/Documentation/power/pm.txt
index da8589a0e07d..be841507e43f 100644
--- a/Documentation/pm.txt
+++ b/Documentation/power/pm.txt
@@ -108,7 +108,7 @@ void pm_unregister_all(pm_callback cback);
108 * EINVAL if the request is not supported 108 * EINVAL if the request is not supported
109 * EBUSY if the device is now busy and cannot handle the request 109 * EBUSY if the device is now busy and cannot handle the request
110 * ENOMEM if the device was unable to handle the request due to memory 110 * ENOMEM if the device was unable to handle the request due to memory
111 * 111 *
112 * Details: The device request callback will be called before the 112 * Details: The device request callback will be called before the
113 * device/system enters a suspend state (ACPI D1-D3) or 113 * device/system enters a suspend state (ACPI D1-D3) or
114 * or after the device/system resumes from suspend (ACPI D0). 114 * or after the device/system resumes from suspend (ACPI D0).
diff --git a/Documentation/pm_qos_interface.txt b/Documentation/power/pm_qos_interface.txt
index 49adb1a33514..49adb1a33514 100644
--- a/Documentation/pm_qos_interface.txt
+++ b/Documentation/power/pm_qos_interface.txt
diff --git a/Documentation/power_supply_class.txt b/Documentation/power/power_supply_class.txt
index a8686e5a6857..a8686e5a6857 100644
--- a/Documentation/power_supply_class.txt
+++ b/Documentation/power/power_supply_class.txt
diff --git a/Documentation/thermal/sysfs-api.txt b/Documentation/thermal/sysfs-api.txt
index ba9c2da5a8c2..d9f28be75403 100644
--- a/Documentation/thermal/sysfs-api.txt
+++ b/Documentation/thermal/sysfs-api.txt
@@ -143,10 +143,10 @@ type Strings which represent the thermal zone type.
143 This is given by thermal zone driver as part of registration. 143 This is given by thermal zone driver as part of registration.
144 Eg: "ACPI thermal zone" indicates it's a ACPI thermal device 144 Eg: "ACPI thermal zone" indicates it's a ACPI thermal device
145 RO 145 RO
146 Optional 146 Required
147 147
148temp Current temperature as reported by thermal zone (sensor) 148temp Current temperature as reported by thermal zone (sensor)
149 Unit: degree Celsius 149 Unit: millidegree Celsius
150 RO 150 RO
151 Required 151 Required
152 152
@@ -163,7 +163,7 @@ mode One of the predefined values in [kernel, user]
163 charge of the thermal management. 163 charge of the thermal management.
164 164
165trip_point_[0-*]_temp The temperature above which trip point will be fired 165trip_point_[0-*]_temp The temperature above which trip point will be fired
166 Unit: degree Celsius 166 Unit: millidegree Celsius
167 RO 167 RO
168 Optional 168 Optional
169 169
@@ -193,7 +193,7 @@ type String which represents the type of device
193 eg. For memory controller device on intel_menlow platform: 193 eg. For memory controller device on intel_menlow platform:
194 this should be "Memory controller" 194 this should be "Memory controller"
195 RO 195 RO
196 Optional 196 Required
197 197
198max_state The maximum permissible cooling state of this cooling device. 198max_state The maximum permissible cooling state of this cooling device.
199 RO 199 RO
@@ -219,16 +219,16 @@ the sys I/F structure will be built like this:
219 219
220|thermal_zone1: 220|thermal_zone1:
221 |-----type: ACPI thermal zone 221 |-----type: ACPI thermal zone
222 |-----temp: 37 222 |-----temp: 37000
223 |-----mode: kernel 223 |-----mode: kernel
224 |-----trip_point_0_temp: 100 224 |-----trip_point_0_temp: 100000
225 |-----trip_point_0_type: critical 225 |-----trip_point_0_type: critical
226 |-----trip_point_1_temp: 80 226 |-----trip_point_1_temp: 80000
227 |-----trip_point_1_type: passive 227 |-----trip_point_1_type: passive
228 |-----trip_point_2_temp: 70 228 |-----trip_point_2_temp: 70000
229 |-----trip_point_2_type: active[0] 229 |-----trip_point_2_type: active0
230 |-----trip_point_3_temp: 60 230 |-----trip_point_3_temp: 60000
231 |-----trip_point_3_type: active[1] 231 |-----trip_point_3_type: active1
232 |-----cdev0: --->/sys/class/thermal/cooling_device0 232 |-----cdev0: --->/sys/class/thermal/cooling_device0
233 |-----cdev0_trip_point: 1 /* cdev0 can be used for passive */ 233 |-----cdev0_trip_point: 1 /* cdev0 can be used for passive */
234 |-----cdev1: --->/sys/class/thermal/cooling_device3 234 |-----cdev1: --->/sys/class/thermal/cooling_device3
diff --git a/MAINTAINERS b/MAINTAINERS
index 25f450fe1059..0f95a4a787a6 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2052,43 +2052,19 @@ M: kernel@wantstofly.org
2052L: netdev@vger.kernel.org 2052L: netdev@vger.kernel.org
2053S: Maintained 2053S: Maintained
2054 2054
2055INTEL PRO/100 ETHERNET SUPPORT 2055INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe)
2056P: Auke Kok 2056P: Auke Kok
2057M: auke-jan.h.kok@intel.com 2057M: auke-jan.h.kok@intel.com
2058P: Jesse Brandeburg 2058P: Jesse Brandeburg
2059M: jesse.brandeburg@intel.com 2059M: jesse.brandeburg@intel.com
2060P: Jeff Kirsher 2060P: Jeff Kirsher
2061M: jeffrey.t.kirsher@intel.com 2061M: jeffrey.t.kirsher@intel.com
2062P: Bruce Allan
2063M: bruce.w.allan@intel.com
2062P: John Ronciak 2064P: John Ronciak
2063M: john.ronciak@intel.com 2065M: john.ronciak@intel.com
2064L: e1000-devel@lists.sourceforge.net 2066L: e1000-devel@lists.sourceforge.net
2065W: http://sourceforge.net/projects/e1000/ 2067W: http://e1000.sourceforge.net/
2066S: Supported
2067
2068INTEL PRO/1000 GIGABIT ETHERNET SUPPORT
2069P: Auke Kok
2070M: auke-jan.h.kok@intel.com
2071P: Jesse Brandeburg
2072M: jesse.brandeburg@intel.com
2073P: Jeff Kirsher
2074M: jeffrey.t.kirsher@intel.com
2075P: John Ronciak
2076M: john.ronciak@intel.com
2077L: e1000-devel@lists.sourceforge.net
2078W: http://sourceforge.net/projects/e1000/
2079S: Supported
2080
2081INTEL PRO/10GbE SUPPORT
2082P: Ayyappan Veeraiyan
2083M: ayyappan.veeraiyan@intel.com
2084P: Auke Kok
2085M: auke-jan.h.kok@intel.com
2086P: Jesse Brandeburg
2087M: jesse.brandeburg@intel.com
2088P: John Ronciak
2089M: john.ronciak@intel.com
2090L: e1000-devel@lists.sourceforge.net
2091W: http://sourceforge.net/projects/e1000/
2092S: Supported 2068S: Supported
2093 2069
2094INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT 2070INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index 002703b8c0b0..729cdbdf8036 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -330,6 +330,9 @@ config PCI_DOMAINS
330config PCI_SYSCALL 330config PCI_SYSCALL
331 def_bool PCI 331 def_bool PCI
332 332
333config IOMMU_HELPER
334 def_bool PCI
335
333config ALPHA_CORE_AGP 336config ALPHA_CORE_AGP
334 bool 337 bool
335 depends on ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL 338 depends on ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c
index e07a23fc5b74..4e1c08636edd 100644
--- a/arch/alpha/kernel/pci_iommu.c
+++ b/arch/alpha/kernel/pci_iommu.c
@@ -10,6 +10,7 @@
10#include <linux/scatterlist.h> 10#include <linux/scatterlist.h>
11#include <linux/log2.h> 11#include <linux/log2.h>
12#include <linux/dma-mapping.h> 12#include <linux/dma-mapping.h>
13#include <linux/iommu-helper.h>
13 14
14#include <asm/io.h> 15#include <asm/io.h>
15#include <asm/hwrpb.h> 16#include <asm/hwrpb.h>
@@ -125,14 +126,6 @@ iommu_arena_new(struct pci_controller *hose, dma_addr_t base,
125 return iommu_arena_new_node(0, hose, base, window_size, align); 126 return iommu_arena_new_node(0, hose, base, window_size, align);
126} 127}
127 128
128static inline int is_span_boundary(unsigned int index, unsigned int nr,
129 unsigned long shift,
130 unsigned long boundary_size)
131{
132 shift = (shift + index) & (boundary_size - 1);
133 return shift + nr > boundary_size;
134}
135
136/* Must be called with the arena lock held */ 129/* Must be called with the arena lock held */
137static long 130static long
138iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena, 131iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena,
@@ -147,7 +140,6 @@ iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena,
147 base = arena->dma_base >> PAGE_SHIFT; 140 base = arena->dma_base >> PAGE_SHIFT;
148 if (dev) { 141 if (dev) {
149 boundary_size = dma_get_seg_boundary(dev) + 1; 142 boundary_size = dma_get_seg_boundary(dev) + 1;
150 BUG_ON(!is_power_of_2(boundary_size));
151 boundary_size >>= PAGE_SHIFT; 143 boundary_size >>= PAGE_SHIFT;
152 } else { 144 } else {
153 boundary_size = 1UL << (32 - PAGE_SHIFT); 145 boundary_size = 1UL << (32 - PAGE_SHIFT);
@@ -161,7 +153,7 @@ iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena,
161 153
162again: 154again:
163 while (i < n && p+i < nent) { 155 while (i < n && p+i < nent) {
164 if (!i && is_span_boundary(p, n, base, boundary_size)) { 156 if (!i && iommu_is_span_boundary(p, n, base, boundary_size)) {
165 p = ALIGN(p + 1, mask + 1); 157 p = ALIGN(p + 1, mask + 1);
166 goto again; 158 goto again;
167 } 159 }
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 7b8ff66febe1..1a4649667ec8 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -251,6 +251,7 @@ define archhelp
251 echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)' 251 echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
252 echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' 252 echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
253 echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)' 253 echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)'
254 echo ' uImage - U-Boot wrapped zImage'
254 echo ' bootpImage - Combined zImage and initial RAM disk' 255 echo ' bootpImage - Combined zImage and initial RAM disk'
255 echo ' (supply initrd image via make variable INITRD=<path>)' 256 echo ' (supply initrd image via make variable INITRD=<path>)'
256 echo ' install - Install uncompressed kernel' 257 echo ' install - Install uncompressed kernel'
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c
index 97b7dc13d9aa..538262241483 100644
--- a/arch/arm/common/it8152.c
+++ b/arch/arm/common/it8152.c
@@ -274,7 +274,7 @@ static int it8152_pci_platform_notify_remove(struct device *dev)
274int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size) 274int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
275{ 275{
276 dev_dbg(dev, "%s: dma_addr %08x, size %08x\n", 276 dev_dbg(dev, "%s: dma_addr %08x, size %08x\n",
277 __FUNCTION__, dma_addr, size); 277 __func__, dma_addr, size);
278 return (dev->bus == &pci_bus_type) && 278 return (dev->bus == &pci_bus_type) &&
279 ((dma_addr + size - PHYS_OFFSET) >= SZ_64M); 279 ((dma_addr + size - PHYS_OFFSET) >= SZ_64M);
280} 280}
@@ -289,7 +289,7 @@ int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size)
289 */ 289 */
290int pci_set_dma_mask(struct pci_dev *dev, u64 mask) 290int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
291{ 291{
292 dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask); 292 dev_dbg(&dev->dev, "%s: %llx\n", __func__, mask);
293 if (mask >= PHYS_OFFSET + SZ_64M - 1) 293 if (mask >= PHYS_OFFSET + SZ_64M - 1)
294 return 0; 294 return 0;
295 295
@@ -299,7 +299,7 @@ int pci_set_dma_mask(struct pci_dev *dev, u64 mask)
299int 299int
300pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) 300pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask)
301{ 301{
302 dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask); 302 dev_dbg(&dev->dev, "%s: %llx\n", __func__, mask);
303 if (mask >= PHYS_OFFSET + SZ_64M - 1) 303 if (mask >= PHYS_OFFSET + SZ_64M - 1)
304 return 0; 304 return 0;
305 305
diff --git a/arch/arm/configs/omap_h2_1610_defconfig b/arch/arm/configs/omap_h2_1610_defconfig
index c2345af3707a..323c1deeb953 100644
--- a/arch/arm/configs/omap_h2_1610_defconfig
+++ b/arch/arm/configs/omap_h2_1610_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.24-rc5 3# Linux kernel version: 2.6.25-rc3
4# Mon Dec 17 20:04:38 2007 4# Mon Mar 3 03:39:48 2008
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 21# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_GENERIC_HWEIGHT=y 22CONFIG_GENERIC_HWEIGHT=y
23CONFIG_GENERIC_CALIBRATE_DELAY=y 23CONFIG_GENERIC_CALIBRATE_DELAY=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
24CONFIG_ZONE_DMA=y 25CONFIG_ZONE_DMA=y
25CONFIG_VECTORS_BASE=0xffff0000 26CONFIG_VECTORS_BASE=0xffff0000
26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -40,17 +41,22 @@ CONFIG_SYSVIPC_SYSCTL=y
40# CONFIG_POSIX_MQUEUE is not set 41# CONFIG_POSIX_MQUEUE is not set
41# CONFIG_BSD_PROCESS_ACCT is not set 42# CONFIG_BSD_PROCESS_ACCT is not set
42# CONFIG_TASKSTATS is not set 43# CONFIG_TASKSTATS is not set
43# CONFIG_USER_NS is not set
44# CONFIG_PID_NS is not set
45# CONFIG_AUDIT is not set 44# CONFIG_AUDIT is not set
46# CONFIG_IKCONFIG is not set 45# CONFIG_IKCONFIG is not set
47CONFIG_LOG_BUF_SHIFT=14 46CONFIG_LOG_BUF_SHIFT=14
48# CONFIG_CGROUPS is not set 47# CONFIG_CGROUPS is not set
48CONFIG_GROUP_SCHED=y
49CONFIG_FAIR_GROUP_SCHED=y 49CONFIG_FAIR_GROUP_SCHED=y
50CONFIG_FAIR_USER_SCHED=y 50# CONFIG_RT_GROUP_SCHED is not set
51# CONFIG_FAIR_CGROUP_SCHED is not set 51CONFIG_USER_SCHED=y
52# CONFIG_CGROUP_SCHED is not set
52# CONFIG_SYSFS_DEPRECATED is not set 53# CONFIG_SYSFS_DEPRECATED is not set
53# CONFIG_RELAY is not set 54# CONFIG_RELAY is not set
55CONFIG_NAMESPACES=y
56# CONFIG_UTS_NS is not set
57# CONFIG_IPC_NS is not set
58# CONFIG_USER_NS is not set
59# CONFIG_PID_NS is not set
54CONFIG_BLK_DEV_INITRD=y 60CONFIG_BLK_DEV_INITRD=y
55CONFIG_INITRAMFS_SOURCE="" 61CONFIG_INITRAMFS_SOURCE=""
56CONFIG_CC_OPTIMIZE_FOR_SIZE=y 62CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -64,17 +70,26 @@ CONFIG_HOTPLUG=y
64CONFIG_PRINTK=y 70CONFIG_PRINTK=y
65CONFIG_BUG=y 71CONFIG_BUG=y
66CONFIG_ELF_CORE=y 72CONFIG_ELF_CORE=y
73CONFIG_COMPAT_BRK=y
67CONFIG_BASE_FULL=y 74CONFIG_BASE_FULL=y
68CONFIG_FUTEX=y 75CONFIG_FUTEX=y
69CONFIG_ANON_INODES=y 76CONFIG_ANON_INODES=y
70CONFIG_EPOLL=y 77CONFIG_EPOLL=y
71CONFIG_SIGNALFD=y 78CONFIG_SIGNALFD=y
79CONFIG_TIMERFD=y
72CONFIG_EVENTFD=y 80CONFIG_EVENTFD=y
73CONFIG_SHMEM=y 81CONFIG_SHMEM=y
74CONFIG_VM_EVENT_COUNTERS=y 82CONFIG_VM_EVENT_COUNTERS=y
75CONFIG_SLAB=y 83CONFIG_SLAB=y
76# CONFIG_SLUB is not set 84# CONFIG_SLUB is not set
77# CONFIG_SLOB is not set 85# CONFIG_SLOB is not set
86# CONFIG_PROFILING is not set
87# CONFIG_MARKERS is not set
88CONFIG_HAVE_OPROFILE=y
89# CONFIG_KPROBES is not set
90CONFIG_HAVE_KPROBES=y
91CONFIG_PROC_PAGE_MONITOR=y
92CONFIG_SLABINFO=y
78CONFIG_RT_MUTEXES=y 93CONFIG_RT_MUTEXES=y
79# CONFIG_TINY_SHMEM is not set 94# CONFIG_TINY_SHMEM is not set
80CONFIG_BASE_SMALL=0 95CONFIG_BASE_SMALL=0
@@ -102,6 +117,8 @@ CONFIG_DEFAULT_AS=y
102# CONFIG_DEFAULT_CFQ is not set 117# CONFIG_DEFAULT_CFQ is not set
103# CONFIG_DEFAULT_NOOP is not set 118# CONFIG_DEFAULT_NOOP is not set
104CONFIG_DEFAULT_IOSCHED="anticipatory" 119CONFIG_DEFAULT_IOSCHED="anticipatory"
120CONFIG_CLASSIC_RCU=y
121# CONFIG_PREEMPT_RCU is not set
105 122
106# 123#
107# System Type 124# System Type
@@ -130,6 +147,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
130# CONFIG_ARCH_KS8695 is not set 147# CONFIG_ARCH_KS8695 is not set
131# CONFIG_ARCH_NS9XXX is not set 148# CONFIG_ARCH_NS9XXX is not set
132# CONFIG_ARCH_MXC is not set 149# CONFIG_ARCH_MXC is not set
150# CONFIG_ARCH_ORION is not set
133# CONFIG_ARCH_PNX4008 is not set 151# CONFIG_ARCH_PNX4008 is not set
134# CONFIG_ARCH_PXA is not set 152# CONFIG_ARCH_PXA is not set
135# CONFIG_ARCH_RPC is not set 153# CONFIG_ARCH_RPC is not set
@@ -139,6 +157,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
139# CONFIG_ARCH_LH7A40X is not set 157# CONFIG_ARCH_LH7A40X is not set
140# CONFIG_ARCH_DAVINCI is not set 158# CONFIG_ARCH_DAVINCI is not set
141CONFIG_ARCH_OMAP=y 159CONFIG_ARCH_OMAP=y
160# CONFIG_ARCH_MSM7X00A is not set
142 161
143# 162#
144# TI OMAP Implementations 163# TI OMAP Implementations
@@ -155,6 +174,7 @@ CONFIG_OMAP_MUX=y
155# CONFIG_OMAP_MUX_DEBUG is not set 174# CONFIG_OMAP_MUX_DEBUG is not set
156CONFIG_OMAP_MUX_WARNINGS=y 175CONFIG_OMAP_MUX_WARNINGS=y
157CONFIG_OMAP_MCBSP=y 176CONFIG_OMAP_MCBSP=y
177# CONFIG_OMAP_MMU_FWK is not set
158# CONFIG_OMAP_MPU_TIMER is not set 178# CONFIG_OMAP_MPU_TIMER is not set
159CONFIG_OMAP_32K_TIMER=y 179CONFIG_OMAP_32K_TIMER=y
160CONFIG_OMAP_32K_TIMER_HZ=128 180CONFIG_OMAP_32K_TIMER_HZ=128
@@ -266,6 +286,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
266CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh" 286CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh"
267# CONFIG_XIP_KERNEL is not set 287# CONFIG_XIP_KERNEL is not set
268# CONFIG_KEXEC is not set 288# CONFIG_KEXEC is not set
289# CONFIG_ATAGS_PROC is not set
269 290
270# 291#
271# CPU Frequency scaling 292# CPU Frequency scaling
@@ -311,9 +332,10 @@ CONFIG_PM=y
311# CONFIG_PM_LEGACY is not set 332# CONFIG_PM_LEGACY is not set
312# CONFIG_PM_DEBUG is not set 333# CONFIG_PM_DEBUG is not set
313CONFIG_PM_SLEEP=y 334CONFIG_PM_SLEEP=y
314CONFIG_SUSPEND_UP_POSSIBLE=y
315CONFIG_SUSPEND=y 335CONFIG_SUSPEND=y
336CONFIG_SUSPEND_FREEZER=y
316# CONFIG_APM_EMULATION is not set 337# CONFIG_APM_EMULATION is not set
338CONFIG_ARCH_SUSPEND_POSSIBLE=y
317 339
318# 340#
319# Networking 341# Networking
@@ -330,6 +352,7 @@ CONFIG_XFRM=y
330# CONFIG_XFRM_USER is not set 352# CONFIG_XFRM_USER is not set
331# CONFIG_XFRM_SUB_POLICY is not set 353# CONFIG_XFRM_SUB_POLICY is not set
332# CONFIG_XFRM_MIGRATE is not set 354# CONFIG_XFRM_MIGRATE is not set
355# CONFIG_XFRM_STATISTICS is not set
333# CONFIG_NET_KEY is not set 356# CONFIG_NET_KEY is not set
334CONFIG_INET=y 357CONFIG_INET=y
335# CONFIG_IP_MULTICAST is not set 358# CONFIG_IP_MULTICAST is not set
@@ -384,6 +407,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
384# 407#
385# CONFIG_NET_PKTGEN is not set 408# CONFIG_NET_PKTGEN is not set
386# CONFIG_HAMRADIO is not set 409# CONFIG_HAMRADIO is not set
410# CONFIG_CAN is not set
387# CONFIG_IRDA is not set 411# CONFIG_IRDA is not set
388# CONFIG_BT is not set 412# CONFIG_BT is not set
389# CONFIG_AF_RXRPC is not set 413# CONFIG_AF_RXRPC is not set
@@ -421,11 +445,13 @@ CONFIG_BLK_DEV_LOOP=y
421CONFIG_BLK_DEV_RAM=y 445CONFIG_BLK_DEV_RAM=y
422CONFIG_BLK_DEV_RAM_COUNT=16 446CONFIG_BLK_DEV_RAM_COUNT=16
423CONFIG_BLK_DEV_RAM_SIZE=8192 447CONFIG_BLK_DEV_RAM_SIZE=8192
424CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 448# CONFIG_BLK_DEV_XIP is not set
425# CONFIG_CDROM_PKTCDVD is not set 449# CONFIG_CDROM_PKTCDVD is not set
426CONFIG_ATA_OVER_ETH=m 450CONFIG_ATA_OVER_ETH=m
427CONFIG_MISC_DEVICES=y 451CONFIG_MISC_DEVICES=y
428# CONFIG_EEPROM_93CX6 is not set 452# CONFIG_EEPROM_93CX6 is not set
453# CONFIG_ENCLOSURE_SERVICES is not set
454# CONFIG_HAVE_IDE is not set
429 455
430# 456#
431# SCSI device support 457# SCSI device support
@@ -489,6 +515,7 @@ CONFIG_SMC91X=y
489# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 515# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
490# CONFIG_B44 is not set 516# CONFIG_B44 is not set
491CONFIG_NETDEV_1000=y 517CONFIG_NETDEV_1000=y
518# CONFIG_E1000E_ENABLED is not set
492CONFIG_NETDEV_10000=y 519CONFIG_NETDEV_10000=y
493 520
494# 521#
@@ -512,7 +539,6 @@ CONFIG_SLIP_COMPRESSED=y
512CONFIG_SLHC=y 539CONFIG_SLHC=y
513# CONFIG_SLIP_SMART is not set 540# CONFIG_SLIP_SMART is not set
514# CONFIG_SLIP_MODE_SLIP6 is not set 541# CONFIG_SLIP_MODE_SLIP6 is not set
515# CONFIG_SHAPER is not set
516# CONFIG_NETCONSOLE is not set 542# CONFIG_NETCONSOLE is not set
517# CONFIG_NETPOLL is not set 543# CONFIG_NETPOLL is not set
518# CONFIG_NET_POLL_CONTROLLER is not set 544# CONFIG_NET_POLL_CONTROLLER is not set
@@ -616,12 +642,10 @@ CONFIG_I2C_OMAP=y
616# 642#
617# Miscellaneous I2C Chip support 643# Miscellaneous I2C Chip support
618# 644#
619# CONFIG_SENSORS_DS1337 is not set
620# CONFIG_SENSORS_DS1374 is not set
621# CONFIG_DS1682 is not set 645# CONFIG_DS1682 is not set
622# CONFIG_SENSORS_EEPROM is not set 646# CONFIG_SENSORS_EEPROM is not set
623# CONFIG_SENSORS_PCF8574 is not set 647# CONFIG_SENSORS_PCF8574 is not set
624# CONFIG_SENSORS_PCA9539 is not set 648# CONFIG_PCF8575 is not set
625# CONFIG_SENSORS_PCF8591 is not set 649# CONFIG_SENSORS_PCF8591 is not set
626# CONFIG_ISP1301_OMAP is not set 650# CONFIG_ISP1301_OMAP is not set
627CONFIG_TPS65010=y 651CONFIG_TPS65010=y
@@ -649,6 +673,7 @@ CONFIG_HWMON=y
649# CONFIG_SENSORS_ADM1031 is not set 673# CONFIG_SENSORS_ADM1031 is not set
650# CONFIG_SENSORS_ADM9240 is not set 674# CONFIG_SENSORS_ADM9240 is not set
651# CONFIG_SENSORS_ADT7470 is not set 675# CONFIG_SENSORS_ADT7470 is not set
676# CONFIG_SENSORS_ADT7473 is not set
652# CONFIG_SENSORS_ATXP1 is not set 677# CONFIG_SENSORS_ATXP1 is not set
653# CONFIG_SENSORS_DS1621 is not set 678# CONFIG_SENSORS_DS1621 is not set
654# CONFIG_SENSORS_F71805F is not set 679# CONFIG_SENSORS_F71805F is not set
@@ -676,6 +701,7 @@ CONFIG_HWMON=y
676# CONFIG_SENSORS_SMSC47M1 is not set 701# CONFIG_SENSORS_SMSC47M1 is not set
677# CONFIG_SENSORS_SMSC47M192 is not set 702# CONFIG_SENSORS_SMSC47M192 is not set
678# CONFIG_SENSORS_SMSC47B397 is not set 703# CONFIG_SENSORS_SMSC47B397 is not set
704# CONFIG_SENSORS_ADS7828 is not set
679# CONFIG_SENSORS_THMC50 is not set 705# CONFIG_SENSORS_THMC50 is not set
680# CONFIG_SENSORS_VT1211 is not set 706# CONFIG_SENSORS_VT1211 is not set
681# CONFIG_SENSORS_W83781D is not set 707# CONFIG_SENSORS_W83781D is not set
@@ -683,6 +709,7 @@ CONFIG_HWMON=y
683# CONFIG_SENSORS_W83792D is not set 709# CONFIG_SENSORS_W83792D is not set
684# CONFIG_SENSORS_W83793 is not set 710# CONFIG_SENSORS_W83793 is not set
685# CONFIG_SENSORS_W83L785TS is not set 711# CONFIG_SENSORS_W83L785TS is not set
712# CONFIG_SENSORS_W83L786NG is not set
686# CONFIG_SENSORS_W83627HF is not set 713# CONFIG_SENSORS_W83627HF is not set
687# CONFIG_SENSORS_W83627EHF is not set 714# CONFIG_SENSORS_W83627EHF is not set
688# CONFIG_HWMON_DEBUG_CHIP is not set 715# CONFIG_HWMON_DEBUG_CHIP is not set
@@ -705,6 +732,7 @@ CONFIG_SSB_POSSIBLE=y
705# Multifunction device drivers 732# Multifunction device drivers
706# 733#
707# CONFIG_MFD_SM501 is not set 734# CONFIG_MFD_SM501 is not set
735# CONFIG_MFD_ASIC3 is not set
708 736
709# 737#
710# Multimedia devices 738# Multimedia devices
@@ -802,10 +830,6 @@ CONFIG_USB_ARCH_HAS_OHCI=y
802# 830#
803# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 831# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
804# 832#
805
806#
807# USB Gadget Support
808#
809# CONFIG_USB_GADGET is not set 833# CONFIG_USB_GADGET is not set
810# CONFIG_MMC is not set 834# CONFIG_MMC is not set
811# CONFIG_NEW_LEDS is not set 835# CONFIG_NEW_LEDS is not set
@@ -826,12 +850,10 @@ CONFIG_EXT2_FS=y
826# CONFIG_XFS_FS is not set 850# CONFIG_XFS_FS is not set
827# CONFIG_GFS2_FS is not set 851# CONFIG_GFS2_FS is not set
828# CONFIG_OCFS2_FS is not set 852# CONFIG_OCFS2_FS is not set
829# CONFIG_MINIX_FS is not set 853CONFIG_DNOTIFY=y
830CONFIG_ROMFS_FS=y
831CONFIG_INOTIFY=y 854CONFIG_INOTIFY=y
832CONFIG_INOTIFY_USER=y 855CONFIG_INOTIFY_USER=y
833# CONFIG_QUOTA is not set 856# CONFIG_QUOTA is not set
834CONFIG_DNOTIFY=y
835# CONFIG_AUTOFS_FS is not set 857# CONFIG_AUTOFS_FS is not set
836# CONFIG_AUTOFS4_FS is not set 858# CONFIG_AUTOFS4_FS is not set
837# CONFIG_FUSE_FS is not set 859# CONFIG_FUSE_FS is not set
@@ -874,8 +896,10 @@ CONFIG_SYSFS=y
874# CONFIG_EFS_FS is not set 896# CONFIG_EFS_FS is not set
875CONFIG_CRAMFS=y 897CONFIG_CRAMFS=y
876# CONFIG_VXFS_FS is not set 898# CONFIG_VXFS_FS is not set
899# CONFIG_MINIX_FS is not set
877# CONFIG_HPFS_FS is not set 900# CONFIG_HPFS_FS is not set
878# CONFIG_QNX4FS_FS is not set 901# CONFIG_QNX4FS_FS is not set
902CONFIG_ROMFS_FS=y
879# CONFIG_SYSV_FS is not set 903# CONFIG_SYSV_FS is not set
880# CONFIG_UFS_FS is not set 904# CONFIG_UFS_FS is not set
881CONFIG_NETWORK_FILESYSTEMS=y 905CONFIG_NETWORK_FILESYSTEMS=y
@@ -946,9 +970,6 @@ CONFIG_NLS_ISO8859_1=y
946# CONFIG_NLS_KOI8_U is not set 970# CONFIG_NLS_KOI8_U is not set
947# CONFIG_NLS_UTF8 is not set 971# CONFIG_NLS_UTF8 is not set
948# CONFIG_DLM is not set 972# CONFIG_DLM is not set
949CONFIG_INSTRUMENTATION=y
950# CONFIG_PROFILING is not set
951# CONFIG_MARKERS is not set
952 973
953# 974#
954# Kernel hacking 975# Kernel hacking
@@ -975,6 +996,7 @@ CONFIG_FRAME_POINTER=y
975CONFIG_CRYPTO=y 996CONFIG_CRYPTO=y
976CONFIG_CRYPTO_ALGAPI=y 997CONFIG_CRYPTO_ALGAPI=y
977CONFIG_CRYPTO_BLKCIPHER=y 998CONFIG_CRYPTO_BLKCIPHER=y
999# CONFIG_CRYPTO_SEQIV is not set
978CONFIG_CRYPTO_MANAGER=y 1000CONFIG_CRYPTO_MANAGER=y
979# CONFIG_CRYPTO_HMAC is not set 1001# CONFIG_CRYPTO_HMAC is not set
980# CONFIG_CRYPTO_XCBC is not set 1002# CONFIG_CRYPTO_XCBC is not set
@@ -992,6 +1014,9 @@ CONFIG_CRYPTO_CBC=y
992CONFIG_CRYPTO_PCBC=m 1014CONFIG_CRYPTO_PCBC=m
993# CONFIG_CRYPTO_LRW is not set 1015# CONFIG_CRYPTO_LRW is not set
994# CONFIG_CRYPTO_XTS is not set 1016# CONFIG_CRYPTO_XTS is not set
1017# CONFIG_CRYPTO_CTR is not set
1018# CONFIG_CRYPTO_GCM is not set
1019# CONFIG_CRYPTO_CCM is not set
995# CONFIG_CRYPTO_CRYPTD is not set 1020# CONFIG_CRYPTO_CRYPTD is not set
996CONFIG_CRYPTO_DES=y 1021CONFIG_CRYPTO_DES=y
997# CONFIG_CRYPTO_FCRYPT is not set 1022# CONFIG_CRYPTO_FCRYPT is not set
@@ -1006,12 +1031,14 @@ CONFIG_CRYPTO_DES=y
1006# CONFIG_CRYPTO_KHAZAD is not set 1031# CONFIG_CRYPTO_KHAZAD is not set
1007# CONFIG_CRYPTO_ANUBIS is not set 1032# CONFIG_CRYPTO_ANUBIS is not set
1008# CONFIG_CRYPTO_SEED is not set 1033# CONFIG_CRYPTO_SEED is not set
1034# CONFIG_CRYPTO_SALSA20 is not set
1009# CONFIG_CRYPTO_DEFLATE is not set 1035# CONFIG_CRYPTO_DEFLATE is not set
1010# CONFIG_CRYPTO_MICHAEL_MIC is not set 1036# CONFIG_CRYPTO_MICHAEL_MIC is not set
1011# CONFIG_CRYPTO_CRC32C is not set 1037# CONFIG_CRYPTO_CRC32C is not set
1012# CONFIG_CRYPTO_CAMELLIA is not set 1038# CONFIG_CRYPTO_CAMELLIA is not set
1013# CONFIG_CRYPTO_TEST is not set 1039# CONFIG_CRYPTO_TEST is not set
1014# CONFIG_CRYPTO_AUTHENC is not set 1040# CONFIG_CRYPTO_AUTHENC is not set
1041# CONFIG_CRYPTO_LZO is not set
1015CONFIG_CRYPTO_HW=y 1042CONFIG_CRYPTO_HW=y
1016 1043
1017# 1044#
diff --git a/arch/arm/configs/omap_osk_5912_defconfig b/arch/arm/configs/omap_osk_5912_defconfig
index d592a6487114..d4ca5e6e4ffa 100644
--- a/arch/arm/configs/omap_osk_5912_defconfig
+++ b/arch/arm/configs/omap_osk_5912_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.24-rc5 3# Linux kernel version: 2.6.25-rc3
4# Mon Dec 17 21:12:45 2007 4# Mon Mar 3 03:35:17 2008
5# 5#
6CONFIG_ARM=y 6CONFIG_ARM=y
7CONFIG_SYS_SUPPORTS_APM_EMULATION=y 7CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
21# CONFIG_ARCH_HAS_ILOG2_U64 is not set 21# CONFIG_ARCH_HAS_ILOG2_U64 is not set
22CONFIG_GENERIC_HWEIGHT=y 22CONFIG_GENERIC_HWEIGHT=y
23CONFIG_GENERIC_CALIBRATE_DELAY=y 23CONFIG_GENERIC_CALIBRATE_DELAY=y
24CONFIG_ARCH_SUPPORTS_AOUT=y
24CONFIG_ZONE_DMA=y 25CONFIG_ZONE_DMA=y
25CONFIG_VECTORS_BASE=0xffff0000 26CONFIG_VECTORS_BASE=0xffff0000
26CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 27CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -39,17 +40,22 @@ CONFIG_SYSVIPC_SYSCTL=y
39# CONFIG_POSIX_MQUEUE is not set 40# CONFIG_POSIX_MQUEUE is not set
40# CONFIG_BSD_PROCESS_ACCT is not set 41# CONFIG_BSD_PROCESS_ACCT is not set
41# CONFIG_TASKSTATS is not set 42# CONFIG_TASKSTATS is not set
42# CONFIG_USER_NS is not set
43# CONFIG_PID_NS is not set
44# CONFIG_AUDIT is not set 43# CONFIG_AUDIT is not set
45# CONFIG_IKCONFIG is not set 44# CONFIG_IKCONFIG is not set
46CONFIG_LOG_BUF_SHIFT=14 45CONFIG_LOG_BUF_SHIFT=14
47# CONFIG_CGROUPS is not set 46# CONFIG_CGROUPS is not set
47CONFIG_GROUP_SCHED=y
48CONFIG_FAIR_GROUP_SCHED=y 48CONFIG_FAIR_GROUP_SCHED=y
49CONFIG_FAIR_USER_SCHED=y 49# CONFIG_RT_GROUP_SCHED is not set
50# CONFIG_FAIR_CGROUP_SCHED is not set 50CONFIG_USER_SCHED=y
51# CONFIG_CGROUP_SCHED is not set
51# CONFIG_SYSFS_DEPRECATED is not set 52# CONFIG_SYSFS_DEPRECATED is not set
52# CONFIG_RELAY is not set 53# CONFIG_RELAY is not set
54CONFIG_NAMESPACES=y
55# CONFIG_UTS_NS is not set
56# CONFIG_IPC_NS is not set
57# CONFIG_USER_NS is not set
58# CONFIG_PID_NS is not set
53CONFIG_BLK_DEV_INITRD=y 59CONFIG_BLK_DEV_INITRD=y
54CONFIG_INITRAMFS_SOURCE="" 60CONFIG_INITRAMFS_SOURCE=""
55CONFIG_CC_OPTIMIZE_FOR_SIZE=y 61CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -63,17 +69,26 @@ CONFIG_HOTPLUG=y
63CONFIG_PRINTK=y 69CONFIG_PRINTK=y
64CONFIG_BUG=y 70CONFIG_BUG=y
65CONFIG_ELF_CORE=y 71CONFIG_ELF_CORE=y
72CONFIG_COMPAT_BRK=y
66CONFIG_BASE_FULL=y 73CONFIG_BASE_FULL=y
67CONFIG_FUTEX=y 74CONFIG_FUTEX=y
68CONFIG_ANON_INODES=y 75CONFIG_ANON_INODES=y
69CONFIG_EPOLL=y 76CONFIG_EPOLL=y
70CONFIG_SIGNALFD=y 77CONFIG_SIGNALFD=y
78CONFIG_TIMERFD=y
71CONFIG_EVENTFD=y 79CONFIG_EVENTFD=y
72CONFIG_SHMEM=y 80CONFIG_SHMEM=y
73CONFIG_VM_EVENT_COUNTERS=y 81CONFIG_VM_EVENT_COUNTERS=y
74CONFIG_SLAB=y 82CONFIG_SLAB=y
75# CONFIG_SLUB is not set 83# CONFIG_SLUB is not set
76# CONFIG_SLOB is not set 84# CONFIG_SLOB is not set
85# CONFIG_PROFILING is not set
86# CONFIG_MARKERS is not set
87CONFIG_HAVE_OPROFILE=y
88# CONFIG_KPROBES is not set
89CONFIG_HAVE_KPROBES=y
90CONFIG_PROC_PAGE_MONITOR=y
91CONFIG_SLABINFO=y
77CONFIG_RT_MUTEXES=y 92CONFIG_RT_MUTEXES=y
78# CONFIG_TINY_SHMEM is not set 93# CONFIG_TINY_SHMEM is not set
79CONFIG_BASE_SMALL=0 94CONFIG_BASE_SMALL=0
@@ -101,6 +116,8 @@ CONFIG_IOSCHED_CFQ=y
101CONFIG_DEFAULT_CFQ=y 116CONFIG_DEFAULT_CFQ=y
102# CONFIG_DEFAULT_NOOP is not set 117# CONFIG_DEFAULT_NOOP is not set
103CONFIG_DEFAULT_IOSCHED="cfq" 118CONFIG_DEFAULT_IOSCHED="cfq"
119CONFIG_CLASSIC_RCU=y
120# CONFIG_PREEMPT_RCU is not set
104 121
105# 122#
106# System Type 123# System Type
@@ -129,6 +146,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
129# CONFIG_ARCH_KS8695 is not set 146# CONFIG_ARCH_KS8695 is not set
130# CONFIG_ARCH_NS9XXX is not set 147# CONFIG_ARCH_NS9XXX is not set
131# CONFIG_ARCH_MXC is not set 148# CONFIG_ARCH_MXC is not set
149# CONFIG_ARCH_ORION is not set
132# CONFIG_ARCH_PNX4008 is not set 150# CONFIG_ARCH_PNX4008 is not set
133# CONFIG_ARCH_PXA is not set 151# CONFIG_ARCH_PXA is not set
134# CONFIG_ARCH_RPC is not set 152# CONFIG_ARCH_RPC is not set
@@ -138,6 +156,7 @@ CONFIG_DEFAULT_IOSCHED="cfq"
138# CONFIG_ARCH_LH7A40X is not set 156# CONFIG_ARCH_LH7A40X is not set
139# CONFIG_ARCH_DAVINCI is not set 157# CONFIG_ARCH_DAVINCI is not set
140CONFIG_ARCH_OMAP=y 158CONFIG_ARCH_OMAP=y
159# CONFIG_ARCH_MSM7X00A is not set
141 160
142# 161#
143# TI OMAP Implementations 162# TI OMAP Implementations
@@ -154,6 +173,7 @@ CONFIG_OMAP_MUX=y
154# CONFIG_OMAP_MUX_DEBUG is not set 173# CONFIG_OMAP_MUX_DEBUG is not set
155CONFIG_OMAP_MUX_WARNINGS=y 174CONFIG_OMAP_MUX_WARNINGS=y
156CONFIG_OMAP_MCBSP=y 175CONFIG_OMAP_MCBSP=y
176# CONFIG_OMAP_MMU_FWK is not set
157# CONFIG_OMAP_MPU_TIMER is not set 177# CONFIG_OMAP_MPU_TIMER is not set
158CONFIG_OMAP_32K_TIMER=y 178CONFIG_OMAP_32K_TIMER=y
159CONFIG_OMAP_32K_TIMER_HZ=128 179CONFIG_OMAP_32K_TIMER_HZ=128
@@ -173,13 +193,13 @@ CONFIG_ARCH_OMAP16XX=y
173# 193#
174# OMAP Board Type 194# OMAP Board Type
175# 195#
176# CONFIG_MACH_OMAP_INNOVATOR is not set 196CONFIG_MACH_OMAP_INNOVATOR=y
177# CONFIG_MACH_OMAP_H2 is not set 197CONFIG_MACH_OMAP_H2=y
178# CONFIG_MACH_OMAP_H3 is not set 198CONFIG_MACH_OMAP_H3=y
179CONFIG_MACH_OMAP_OSK=y 199CONFIG_MACH_OMAP_OSK=y
180# CONFIG_OMAP_OSK_MISTRAL is not set 200# CONFIG_OMAP_OSK_MISTRAL is not set
181# CONFIG_MACH_NOKIA770 is not set 201CONFIG_MACH_NOKIA770=y
182# CONFIG_MACH_OMAP_GENERIC is not set 202CONFIG_MACH_OMAP_GENERIC=y
183 203
184# 204#
185# OMAP CPU Speed 205# OMAP CPU Speed
@@ -275,6 +295,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0
275CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x10400000,8M root=/dev/ram0 rw" 295CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x10400000,8M root=/dev/ram0 rw"
276# CONFIG_XIP_KERNEL is not set 296# CONFIG_XIP_KERNEL is not set
277# CONFIG_KEXEC is not set 297# CONFIG_KEXEC is not set
298# CONFIG_ATAGS_PROC is not set
278 299
279# 300#
280# CPU Frequency scaling 301# CPU Frequency scaling
@@ -307,9 +328,10 @@ CONFIG_PM=y
307# CONFIG_PM_LEGACY is not set 328# CONFIG_PM_LEGACY is not set
308# CONFIG_PM_DEBUG is not set 329# CONFIG_PM_DEBUG is not set
309CONFIG_PM_SLEEP=y 330CONFIG_PM_SLEEP=y
310CONFIG_SUSPEND_UP_POSSIBLE=y
311CONFIG_SUSPEND=y 331CONFIG_SUSPEND=y
332CONFIG_SUSPEND_FREEZER=y
312# CONFIG_APM_EMULATION is not set 333# CONFIG_APM_EMULATION is not set
334CONFIG_ARCH_SUSPEND_POSSIBLE=y
313 335
314# 336#
315# Networking 337# Networking
@@ -326,6 +348,7 @@ CONFIG_XFRM=y
326# CONFIG_XFRM_USER is not set 348# CONFIG_XFRM_USER is not set
327# CONFIG_XFRM_SUB_POLICY is not set 349# CONFIG_XFRM_SUB_POLICY is not set
328# CONFIG_XFRM_MIGRATE is not set 350# CONFIG_XFRM_MIGRATE is not set
351# CONFIG_XFRM_STATISTICS is not set
329# CONFIG_NET_KEY is not set 352# CONFIG_NET_KEY is not set
330CONFIG_INET=y 353CONFIG_INET=y
331CONFIG_IP_MULTICAST=y 354CONFIG_IP_MULTICAST=y
@@ -381,6 +404,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
381# 404#
382# CONFIG_NET_PKTGEN is not set 405# CONFIG_NET_PKTGEN is not set
383# CONFIG_HAMRADIO is not set 406# CONFIG_HAMRADIO is not set
407# CONFIG_CAN is not set
384# CONFIG_IRDA is not set 408# CONFIG_IRDA is not set
385# CONFIG_BT is not set 409# CONFIG_BT is not set
386# CONFIG_AF_RXRPC is not set 410# CONFIG_AF_RXRPC is not set
@@ -493,11 +517,13 @@ CONFIG_BLK_DEV_LOOP=y
493CONFIG_BLK_DEV_RAM=y 517CONFIG_BLK_DEV_RAM=y
494CONFIG_BLK_DEV_RAM_COUNT=16 518CONFIG_BLK_DEV_RAM_COUNT=16
495CONFIG_BLK_DEV_RAM_SIZE=8192 519CONFIG_BLK_DEV_RAM_SIZE=8192
496CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 520# CONFIG_BLK_DEV_XIP is not set
497# CONFIG_CDROM_PKTCDVD is not set 521# CONFIG_CDROM_PKTCDVD is not set
498# CONFIG_ATA_OVER_ETH is not set 522# CONFIG_ATA_OVER_ETH is not set
499CONFIG_MISC_DEVICES=y 523CONFIG_MISC_DEVICES=y
500# CONFIG_EEPROM_93CX6 is not set 524# CONFIG_EEPROM_93CX6 is not set
525# CONFIG_ENCLOSURE_SERVICES is not set
526CONFIG_HAVE_IDE=y
501CONFIG_IDE=m 527CONFIG_IDE=m
502CONFIG_BLK_DEV_IDE=m 528CONFIG_BLK_DEV_IDE=m
503 529
@@ -519,7 +545,6 @@ CONFIG_IDE_PROC_FS=y
519# 545#
520# CONFIG_IDE_GENERIC is not set 546# CONFIG_IDE_GENERIC is not set
521# CONFIG_BLK_DEV_PLATFORM is not set 547# CONFIG_BLK_DEV_PLATFORM is not set
522# CONFIG_IDE_ARM is not set
523# CONFIG_BLK_DEV_IDEDMA is not set 548# CONFIG_BLK_DEV_IDEDMA is not set
524CONFIG_IDE_ARCH_OBSOLETE_INIT=y 549CONFIG_IDE_ARCH_OBSOLETE_INIT=y
525# CONFIG_BLK_DEV_HD is not set 550# CONFIG_BLK_DEV_HD is not set
@@ -553,6 +578,7 @@ CONFIG_SMC91X=y
553# CONFIG_IBM_NEW_EMAC_EMAC4 is not set 578# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
554# CONFIG_B44 is not set 579# CONFIG_B44 is not set
555CONFIG_NETDEV_1000=y 580CONFIG_NETDEV_1000=y
581# CONFIG_E1000E_ENABLED is not set
556CONFIG_NETDEV_10000=y 582CONFIG_NETDEV_10000=y
557 583
558# 584#
@@ -574,7 +600,6 @@ CONFIG_PPP_MULTILINK=y
574# CONFIG_PPPOL2TP is not set 600# CONFIG_PPPOL2TP is not set
575# CONFIG_SLIP is not set 601# CONFIG_SLIP is not set
576CONFIG_SLHC=y 602CONFIG_SLHC=y
577# CONFIG_SHAPER is not set
578# CONFIG_NETCONSOLE is not set 603# CONFIG_NETCONSOLE is not set
579# CONFIG_NETPOLL is not set 604# CONFIG_NETPOLL is not set
580# CONFIG_NET_POLL_CONTROLLER is not set 605# CONFIG_NET_POLL_CONTROLLER is not set
@@ -671,6 +696,7 @@ CONFIG_HW_RANDOM_OMAP=m
671# CONFIG_SYNCLINK_CS is not set 696# CONFIG_SYNCLINK_CS is not set
672# CONFIG_CARDMAN_4000 is not set 697# CONFIG_CARDMAN_4000 is not set
673# CONFIG_CARDMAN_4040 is not set 698# CONFIG_CARDMAN_4040 is not set
699# CONFIG_IPWIRELESS is not set
674# CONFIG_RAW_DRIVER is not set 700# CONFIG_RAW_DRIVER is not set
675# CONFIG_TCG_TPM is not set 701# CONFIG_TCG_TPM is not set
676CONFIG_I2C=y 702CONFIG_I2C=y
@@ -698,12 +724,10 @@ CONFIG_I2C_OMAP=y
698# 724#
699# Miscellaneous I2C Chip support 725# Miscellaneous I2C Chip support
700# 726#
701# CONFIG_SENSORS_DS1337 is not set
702# CONFIG_SENSORS_DS1374 is not set
703# CONFIG_DS1682 is not set 727# CONFIG_DS1682 is not set
704# CONFIG_SENSORS_EEPROM is not set 728# CONFIG_SENSORS_EEPROM is not set
705# CONFIG_SENSORS_PCF8574 is not set 729# CONFIG_SENSORS_PCF8574 is not set
706# CONFIG_SENSORS_PCA9539 is not set 730# CONFIG_PCF8575 is not set
707# CONFIG_SENSORS_PCF8591 is not set 731# CONFIG_SENSORS_PCF8591 is not set
708# CONFIG_ISP1301_OMAP is not set 732# CONFIG_ISP1301_OMAP is not set
709CONFIG_TPS65010=y 733CONFIG_TPS65010=y
@@ -731,6 +755,7 @@ CONFIG_HWMON=y
731# CONFIG_SENSORS_ADM1031 is not set 755# CONFIG_SENSORS_ADM1031 is not set
732# CONFIG_SENSORS_ADM9240 is not set 756# CONFIG_SENSORS_ADM9240 is not set
733# CONFIG_SENSORS_ADT7470 is not set 757# CONFIG_SENSORS_ADT7470 is not set
758# CONFIG_SENSORS_ADT7473 is not set
734# CONFIG_SENSORS_ATXP1 is not set 759# CONFIG_SENSORS_ATXP1 is not set
735# CONFIG_SENSORS_DS1621 is not set 760# CONFIG_SENSORS_DS1621 is not set
736# CONFIG_SENSORS_F71805F is not set 761# CONFIG_SENSORS_F71805F is not set
@@ -758,6 +783,7 @@ CONFIG_HWMON=y
758# CONFIG_SENSORS_SMSC47M1 is not set 783# CONFIG_SENSORS_SMSC47M1 is not set
759# CONFIG_SENSORS_SMSC47M192 is not set 784# CONFIG_SENSORS_SMSC47M192 is not set
760# CONFIG_SENSORS_SMSC47B397 is not set 785# CONFIG_SENSORS_SMSC47B397 is not set
786# CONFIG_SENSORS_ADS7828 is not set
761# CONFIG_SENSORS_THMC50 is not set 787# CONFIG_SENSORS_THMC50 is not set
762# CONFIG_SENSORS_VT1211 is not set 788# CONFIG_SENSORS_VT1211 is not set
763# CONFIG_SENSORS_W83781D is not set 789# CONFIG_SENSORS_W83781D is not set
@@ -765,6 +791,7 @@ CONFIG_HWMON=y
765# CONFIG_SENSORS_W83792D is not set 791# CONFIG_SENSORS_W83792D is not set
766# CONFIG_SENSORS_W83793 is not set 792# CONFIG_SENSORS_W83793 is not set
767# CONFIG_SENSORS_W83L785TS is not set 793# CONFIG_SENSORS_W83L785TS is not set
794# CONFIG_SENSORS_W83L786NG is not set
768# CONFIG_SENSORS_W83627HF is not set 795# CONFIG_SENSORS_W83627HF is not set
769# CONFIG_SENSORS_W83627EHF is not set 796# CONFIG_SENSORS_W83627EHF is not set
770# CONFIG_HWMON_DEBUG_CHIP is not set 797# CONFIG_HWMON_DEBUG_CHIP is not set
@@ -780,6 +807,7 @@ CONFIG_SSB_POSSIBLE=y
780# Multifunction device drivers 807# Multifunction device drivers
781# 808#
782# CONFIG_MFD_SM501 is not set 809# CONFIG_MFD_SM501 is not set
810# CONFIG_MFD_ASIC3 is not set
783 811
784# 812#
785# Multimedia devices 813# Multimedia devices
@@ -865,10 +893,6 @@ CONFIG_USB_ARCH_HAS_OHCI=y
865# 893#
866# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 894# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
867# 895#
868
869#
870# USB Gadget Support
871#
872# CONFIG_USB_GADGET is not set 896# CONFIG_USB_GADGET is not set
873# CONFIG_MMC is not set 897# CONFIG_MMC is not set
874# CONFIG_NEW_LEDS is not set 898# CONFIG_NEW_LEDS is not set
@@ -889,12 +913,10 @@ CONFIG_EXT2_FS=y
889# CONFIG_XFS_FS is not set 913# CONFIG_XFS_FS is not set
890# CONFIG_GFS2_FS is not set 914# CONFIG_GFS2_FS is not set
891# CONFIG_OCFS2_FS is not set 915# CONFIG_OCFS2_FS is not set
892# CONFIG_MINIX_FS is not set 916CONFIG_DNOTIFY=y
893# CONFIG_ROMFS_FS is not set
894CONFIG_INOTIFY=y 917CONFIG_INOTIFY=y
895CONFIG_INOTIFY_USER=y 918CONFIG_INOTIFY_USER=y
896# CONFIG_QUOTA is not set 919# CONFIG_QUOTA is not set
897CONFIG_DNOTIFY=y
898CONFIG_AUTOFS_FS=y 920CONFIG_AUTOFS_FS=y
899CONFIG_AUTOFS4_FS=y 921CONFIG_AUTOFS4_FS=y
900# CONFIG_FUSE_FS is not set 922# CONFIG_FUSE_FS is not set
@@ -948,8 +970,10 @@ CONFIG_JFFS2_RTIME=y
948# CONFIG_JFFS2_RUBIN is not set 970# CONFIG_JFFS2_RUBIN is not set
949# CONFIG_CRAMFS is not set 971# CONFIG_CRAMFS is not set
950# CONFIG_VXFS_FS is not set 972# CONFIG_VXFS_FS is not set
973# CONFIG_MINIX_FS is not set
951# CONFIG_HPFS_FS is not set 974# CONFIG_HPFS_FS is not set
952# CONFIG_QNX4FS_FS is not set 975# CONFIG_QNX4FS_FS is not set
976# CONFIG_ROMFS_FS is not set
953# CONFIG_SYSV_FS is not set 977# CONFIG_SYSV_FS is not set
954# CONFIG_UFS_FS is not set 978# CONFIG_UFS_FS is not set
955CONFIG_NETWORK_FILESYSTEMS=y 979CONFIG_NETWORK_FILESYSTEMS=y
@@ -1019,9 +1043,6 @@ CONFIG_NLS_ISO8859_1=m
1019# CONFIG_NLS_KOI8_U is not set 1043# CONFIG_NLS_KOI8_U is not set
1020# CONFIG_NLS_UTF8 is not set 1044# CONFIG_NLS_UTF8 is not set
1021# CONFIG_DLM is not set 1045# CONFIG_DLM is not set
1022CONFIG_INSTRUMENTATION=y
1023# CONFIG_PROFILING is not set
1024# CONFIG_MARKERS is not set
1025 1046
1026# 1047#
1027# Kernel hacking 1048# Kernel hacking
@@ -1045,7 +1066,51 @@ CONFIG_FRAME_POINTER=y
1045# CONFIG_KEYS is not set 1066# CONFIG_KEYS is not set
1046# CONFIG_SECURITY is not set 1067# CONFIG_SECURITY is not set
1047# CONFIG_SECURITY_FILE_CAPABILITIES is not set 1068# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1048# CONFIG_CRYPTO is not set 1069CONFIG_CRYPTO=y
1070# CONFIG_CRYPTO_SEQIV is not set
1071# CONFIG_CRYPTO_MANAGER is not set
1072# CONFIG_CRYPTO_HMAC is not set
1073# CONFIG_CRYPTO_XCBC is not set
1074# CONFIG_CRYPTO_NULL is not set
1075# CONFIG_CRYPTO_MD4 is not set
1076# CONFIG_CRYPTO_MD5 is not set
1077# CONFIG_CRYPTO_SHA1 is not set
1078# CONFIG_CRYPTO_SHA256 is not set
1079# CONFIG_CRYPTO_SHA512 is not set
1080# CONFIG_CRYPTO_WP512 is not set
1081# CONFIG_CRYPTO_TGR192 is not set
1082# CONFIG_CRYPTO_GF128MUL is not set
1083# CONFIG_CRYPTO_ECB is not set
1084# CONFIG_CRYPTO_CBC is not set
1085# CONFIG_CRYPTO_PCBC is not set
1086# CONFIG_CRYPTO_LRW is not set
1087# CONFIG_CRYPTO_XTS is not set
1088# CONFIG_CRYPTO_CTR is not set
1089# CONFIG_CRYPTO_GCM is not set
1090# CONFIG_CRYPTO_CCM is not set
1091# CONFIG_CRYPTO_CRYPTD is not set
1092# CONFIG_CRYPTO_DES is not set
1093# CONFIG_CRYPTO_FCRYPT is not set
1094# CONFIG_CRYPTO_BLOWFISH is not set
1095# CONFIG_CRYPTO_TWOFISH is not set
1096# CONFIG_CRYPTO_SERPENT is not set
1097# CONFIG_CRYPTO_AES is not set
1098# CONFIG_CRYPTO_CAST5 is not set
1099# CONFIG_CRYPTO_CAST6 is not set
1100# CONFIG_CRYPTO_TEA is not set
1101# CONFIG_CRYPTO_ARC4 is not set
1102# CONFIG_CRYPTO_KHAZAD is not set
1103# CONFIG_CRYPTO_ANUBIS is not set
1104# CONFIG_CRYPTO_SEED is not set
1105# CONFIG_CRYPTO_SALSA20 is not set
1106# CONFIG_CRYPTO_DEFLATE is not set
1107# CONFIG_CRYPTO_MICHAEL_MIC is not set
1108# CONFIG_CRYPTO_CRC32C is not set
1109# CONFIG_CRYPTO_CAMELLIA is not set
1110# CONFIG_CRYPTO_TEST is not set
1111# CONFIG_CRYPTO_AUTHENC is not set
1112# CONFIG_CRYPTO_LZO is not set
1113CONFIG_CRYPTO_HW=y
1049 1114
1050# 1115#
1051# Library routines 1116# Library routines
diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S
index 024a9cf469b4..50f667febe29 100644
--- a/arch/arm/kernel/head-common.S
+++ b/arch/arm/kernel/head-common.S
@@ -11,6 +11,9 @@
11 * 11 *
12 */ 12 */
13 13
14#define ATAG_CORE 0x54410001
15#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
16
14 .type __switch_data, %object 17 .type __switch_data, %object
15__switch_data: 18__switch_data:
16 .long __mmap_switched 19 .long __mmap_switched
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index 7898cbc9861a..bff4c6e90dd5 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -29,9 +29,6 @@
29#define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET) 29#define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET)
30#define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET) 30#define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET)
31 31
32#define ATAG_CORE 0x54410001
33#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2)
34
35 32
36/* 33/*
37 * swapper_pg_dir is the virtual address of the initial page table. 34 * swapper_pg_dir is the virtual address of the initial page table.
diff --git a/arch/arm/kernel/kprobes.c b/arch/arm/kernel/kprobes.c
index a22a98c43ca5..13e371aad879 100644
--- a/arch/arm/kernel/kprobes.c
+++ b/arch/arm/kernel/kprobes.c
@@ -431,6 +431,11 @@ int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs)
431 return 0; 431 return 0;
432} 432}
433 433
434int __kprobes arch_trampoline_kprobe(struct kprobe *p)
435{
436 return 0;
437}
438
434static struct undef_hook kprobes_break_hook = { 439static struct undef_hook kprobes_break_hook = {
435 .instr_mask = 0xffffffff, 440 .instr_mask = 0xffffffff,
436 .instr_val = KPROBE_BREAKPOINT_INSTRUCTION, 441 .instr_val = KPROBE_BREAKPOINT_INSTRUCTION,
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c
index 38313abef657..bf103b24c937 100644
--- a/arch/arm/mach-at91/board-sam9263ek.c
+++ b/arch/arm/mach-at91/board-sam9263ek.c
@@ -245,10 +245,7 @@ static struct fb_monspecs at91fb_default_monspecs = {
245 245
246static void at91_lcdc_power_control(int on) 246static void at91_lcdc_power_control(int on)
247{ 247{
248 if (on) 248 at91_set_gpio_value(AT91_PIN_PA30, on);
249 at91_set_gpio_value(AT91_PIN_PD12, 0); /* power up */
250 else
251 at91_set_gpio_value(AT91_PIN_PD12, 1); /* power down */
252} 249}
253 250
254/* Driver datas */ 251/* Driver datas */
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c
index f629c2b5f0c5..ee4964abcaf5 100644
--- a/arch/arm/mach-at91/gpio.c
+++ b/arch/arm/mach-at91/gpio.c
@@ -490,6 +490,11 @@ postcore_initcall(at91_gpio_debugfs_init);
490 490
491/*--------------------------------------------------------------------------*/ 491/*--------------------------------------------------------------------------*/
492 492
493/* This lock class tells lockdep that GPIO irqs are in a different
494 * category than their parents, so it won't report false recursion.
495 */
496static struct lock_class_key gpio_lock_class;
497
493/* 498/*
494 * Called from the processor-specific init to enable GPIO interrupt support. 499 * Called from the processor-specific init to enable GPIO interrupt support.
495 */ 500 */
@@ -510,6 +515,8 @@ void __init at91_gpio_irq_setup(void)
510 __raw_writel(~0, this->regbase + PIO_IDR); 515 __raw_writel(~0, this->regbase + PIO_IDR);
511 516
512 for (i = 0, pin = this->chipbase; i < 32; i++, pin++) { 517 for (i = 0, pin = this->chipbase; i < 32; i++, pin++) {
518 lockdep_set_class(&irq_desc[pin].lock, &gpio_lock_class);
519
513 /* 520 /*
514 * Can use the "simple" and not "edge" handler since it's 521 * Can use the "simple" and not "edge" handler since it's
515 * shorter, and the AIC handles interrupts sanely. 522 * shorter, and the AIC handles interrupts sanely.
diff --git a/arch/arm/mach-h720x/common.c b/arch/arm/mach-h720x/common.c
index 7f31816896ad..45144ad2bed9 100644
--- a/arch/arm/mach-h720x/common.c
+++ b/arch/arm/mach-h720x/common.c
@@ -103,7 +103,7 @@ static void
103h720x_gpio_handler(unsigned int mask, unsigned int irq, 103h720x_gpio_handler(unsigned int mask, unsigned int irq,
104 struct irq_desc *desc) 104 struct irq_desc *desc)
105{ 105{
106 IRQDBG("%s irq: %d\n",__FUNCTION__,irq); 106 IRQDBG("%s irq: %d\n", __func__, irq);
107 desc = irq_desc + irq; 107 desc = irq_desc + irq;
108 while (mask) { 108 while (mask) {
109 if (mask & 1) { 109 if (mask & 1) {
@@ -123,7 +123,7 @@ h720x_gpioa_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
123 123
124 mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT); 124 mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT);
125 irq = IRQ_CHAINED_GPIOA(0); 125 irq = IRQ_CHAINED_GPIOA(0);
126 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 126 IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
127 h720x_gpio_handler(mask, irq, desc); 127 h720x_gpio_handler(mask, irq, desc);
128} 128}
129 129
@@ -133,7 +133,7 @@ h720x_gpiob_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
133 unsigned int mask, irq; 133 unsigned int mask, irq;
134 mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT); 134 mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT);
135 irq = IRQ_CHAINED_GPIOB(0); 135 irq = IRQ_CHAINED_GPIOB(0);
136 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 136 IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
137 h720x_gpio_handler(mask, irq, desc); 137 h720x_gpio_handler(mask, irq, desc);
138} 138}
139 139
@@ -144,7 +144,7 @@ h720x_gpioc_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
144 144
145 mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT); 145 mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT);
146 irq = IRQ_CHAINED_GPIOC(0); 146 irq = IRQ_CHAINED_GPIOC(0);
147 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 147 IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
148 h720x_gpio_handler(mask, irq, desc); 148 h720x_gpio_handler(mask, irq, desc);
149} 149}
150 150
@@ -155,7 +155,7 @@ h720x_gpiod_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
155 155
156 mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT); 156 mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT);
157 irq = IRQ_CHAINED_GPIOD(0); 157 irq = IRQ_CHAINED_GPIOD(0);
158 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 158 IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
159 h720x_gpio_handler(mask, irq, desc); 159 h720x_gpio_handler(mask, irq, desc);
160} 160}
161 161
@@ -167,7 +167,7 @@ h720x_gpioe_demux_handler(unsigned int irq_unused, struct irq_desc *desc)
167 167
168 mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT); 168 mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT);
169 irq = IRQ_CHAINED_GPIOE(0); 169 irq = IRQ_CHAINED_GPIOE(0);
170 IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); 170 IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq);
171 h720x_gpio_handler(mask, irq, desc); 171 h720x_gpio_handler(mask, irq, desc);
172} 172}
173#endif 173#endif
diff --git a/arch/arm/mach-imx/dma.c b/arch/arm/mach-imx/dma.c
index bc6fb02d213b..a59ff2987cb7 100644
--- a/arch/arm/mach-imx/dma.c
+++ b/arch/arm/mach-imx/dma.c
@@ -54,7 +54,7 @@ static inline int imx_dma_sg_next(imx_dmach_t dma_ch, unsigned int lastcount)
54 54
55 if (!imxdma->name) { 55 if (!imxdma->name) {
56 printk(KERN_CRIT "%s: called for not allocated channel %d\n", 56 printk(KERN_CRIT "%s: called for not allocated channel %d\n",
57 __FUNCTION__, dma_ch); 57 __func__, dma_ch);
58 return 0; 58 return 0;
59 } 59 }
60 60
@@ -288,7 +288,7 @@ imx_dma_setup_handlers(imx_dmach_t dma_ch,
288 288
289 if (!imxdma->name) { 289 if (!imxdma->name) {
290 printk(KERN_CRIT "%s: called for not allocated channel %d\n", 290 printk(KERN_CRIT "%s: called for not allocated channel %d\n",
291 __FUNCTION__, dma_ch); 291 __func__, dma_ch);
292 return -ENODEV; 292 return -ENODEV;
293 } 293 }
294 294
@@ -321,7 +321,7 @@ void imx_dma_enable(imx_dmach_t dma_ch)
321 321
322 if (!imxdma->name) { 322 if (!imxdma->name) {
323 printk(KERN_CRIT "%s: called for not allocated channel %d\n", 323 printk(KERN_CRIT "%s: called for not allocated channel %d\n",
324 __FUNCTION__, dma_ch); 324 __func__, dma_ch);
325 return; 325 return;
326 } 326 }
327 327
@@ -365,7 +365,7 @@ int imx_dma_request(imx_dmach_t dma_ch, const char *name)
365 365
366 if (dma_ch >= IMX_DMA_CHANNELS) { 366 if (dma_ch >= IMX_DMA_CHANNELS) {
367 printk(KERN_CRIT "%s: called for non-existed channel %d\n", 367 printk(KERN_CRIT "%s: called for non-existed channel %d\n",
368 __FUNCTION__, dma_ch); 368 __func__, dma_ch);
369 return -EINVAL; 369 return -EINVAL;
370 } 370 }
371 371
@@ -396,7 +396,7 @@ void imx_dma_free(imx_dmach_t dma_ch)
396 if (!imxdma->name) { 396 if (!imxdma->name) {
397 printk(KERN_CRIT 397 printk(KERN_CRIT
398 "%s: trying to free channel %d which is already freed\n", 398 "%s: trying to free channel %d which is already freed\n",
399 __FUNCTION__, dma_ch); 399 __func__, dma_ch);
400 return; 400 return;
401 } 401 }
402 402
@@ -456,7 +456,7 @@ imx_dma_request_by_prio(imx_dmach_t * pdma_ch, const char *name,
456 } 456 }
457 } 457 }
458 458
459 printk(KERN_ERR "%s: no free DMA channel found\n", __FUNCTION__); 459 printk(KERN_ERR "%s: no free DMA channel found\n", __func__);
460 460
461 return -ENODEV; 461 return -ENODEV;
462} 462}
diff --git a/arch/arm/mach-imx/irq.c b/arch/arm/mach-imx/irq.c
index a7465db84893..e6695c4e623b 100644
--- a/arch/arm/mach-imx/irq.c
+++ b/arch/arm/mach-imx/irq.c
@@ -160,21 +160,21 @@ imx_gpio_irq_type(unsigned int _irq, unsigned int type)
160static void 160static void
161imx_gpio_ack_irq(unsigned int irq) 161imx_gpio_ack_irq(unsigned int irq)
162{ 162{
163 DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq); 163 DEBUG_IRQ("%s: irq %d\n", __func__, irq);
164 ISR(IRQ_TO_REG(irq)) = 1 << ((irq - IRQ_GPIOA(0)) % 32); 164 ISR(IRQ_TO_REG(irq)) = 1 << ((irq - IRQ_GPIOA(0)) % 32);
165} 165}
166 166
167static void 167static void
168imx_gpio_mask_irq(unsigned int irq) 168imx_gpio_mask_irq(unsigned int irq)
169{ 169{
170 DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq); 170 DEBUG_IRQ("%s: irq %d\n", __func__, irq);
171 IMR(IRQ_TO_REG(irq)) &= ~( 1 << ((irq - IRQ_GPIOA(0)) % 32)); 171 IMR(IRQ_TO_REG(irq)) &= ~( 1 << ((irq - IRQ_GPIOA(0)) % 32));
172} 172}
173 173
174static void 174static void
175imx_gpio_unmask_irq(unsigned int irq) 175imx_gpio_unmask_irq(unsigned int irq)
176{ 176{
177 DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq); 177 DEBUG_IRQ("%s: irq %d\n", __func__, irq);
178 IMR(IRQ_TO_REG(irq)) |= 1 << ((irq - IRQ_GPIOA(0)) % 32); 178 IMR(IRQ_TO_REG(irq)) |= 1 << ((irq - IRQ_GPIOA(0)) % 32);
179} 179}
180 180
diff --git a/arch/arm/mach-iop13xx/iq81340mc.c b/arch/arm/mach-iop13xx/iq81340mc.c
index 268a8d84999c..77b24cd1d88d 100644
--- a/arch/arm/mach-iop13xx/iq81340mc.c
+++ b/arch/arm/mach-iop13xx/iq81340mc.c
@@ -81,7 +81,7 @@ static void __init iq81340mc_init(void)
81static void __init iq81340mc_timer_init(void) 81static void __init iq81340mc_timer_init(void)
82{ 82{
83 unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio(); 83 unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio();
84 printk(KERN_DEBUG "%s: bus frequency: %lu\n", __FUNCTION__, bus_freq); 84 printk(KERN_DEBUG "%s: bus frequency: %lu\n", __func__, bus_freq);
85 iop_init_time(bus_freq); 85 iop_init_time(bus_freq);
86} 86}
87 87
diff --git a/arch/arm/mach-iop13xx/iq81340sc.c b/arch/arm/mach-iop13xx/iq81340sc.c
index a51ffd2683e5..e8522b3b8163 100644
--- a/arch/arm/mach-iop13xx/iq81340sc.c
+++ b/arch/arm/mach-iop13xx/iq81340sc.c
@@ -83,7 +83,7 @@ static void __init iq81340sc_init(void)
83static void __init iq81340sc_timer_init(void) 83static void __init iq81340sc_timer_init(void)
84{ 84{
85 unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio(); 85 unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio();
86 printk(KERN_DEBUG "%s: bus frequency: %lu\n", __FUNCTION__, bus_freq); 86 printk(KERN_DEBUG "%s: bus frequency: %lu\n", __func__, bus_freq);
87 iop_init_time(bus_freq); 87 iop_init_time(bus_freq);
88} 88}
89 89
diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c
index 99d94cb1bafd..7825c1aaa27b 100644
--- a/arch/arm/mach-iop13xx/pci.c
+++ b/arch/arm/mach-iop13xx/pci.c
@@ -94,13 +94,13 @@ void iop13xx_map_pci_memory(void)
94 , 0, iop13xx_atux_mem_size, MT_DEVICE); 94 , 0, iop13xx_atux_mem_size, MT_DEVICE);
95 if (!iop13xx_atux_mem_base) { 95 if (!iop13xx_atux_mem_base) {
96 printk("%s: atux allocation " 96 printk("%s: atux allocation "
97 "failed\n", __FUNCTION__); 97 "failed\n", __func__);
98 BUG(); 98 BUG();
99 } 99 }
100 } else 100 } else
101 iop13xx_atux_mem_size = 0; 101 iop13xx_atux_mem_size = 0;
102 PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n", 102 PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n",
103 __FUNCTION__, atu, iop13xx_atux_mem_size, 103 __func__, atu, iop13xx_atux_mem_size,
104 iop13xx_atux_mem_base); 104 iop13xx_atux_mem_base);
105 break; 105 break;
106 case 1: 106 case 1:
@@ -120,13 +120,13 @@ void iop13xx_map_pci_memory(void)
120 , 0, iop13xx_atue_mem_size, MT_DEVICE); 120 , 0, iop13xx_atue_mem_size, MT_DEVICE);
121 if (!iop13xx_atue_mem_base) { 121 if (!iop13xx_atue_mem_base) {
122 printk("%s: atue allocation " 122 printk("%s: atue allocation "
123 "failed\n", __FUNCTION__); 123 "failed\n", __func__);
124 BUG(); 124 BUG();
125 } 125 }
126 } else 126 } else
127 iop13xx_atue_mem_size = 0; 127 iop13xx_atue_mem_size = 0;
128 PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n", 128 PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n",
129 __FUNCTION__, atu, iop13xx_atue_mem_size, 129 __func__, atu, iop13xx_atue_mem_size,
130 iop13xx_atue_mem_base); 130 iop13xx_atue_mem_base);
131 break; 131 break;
132 } 132 }
diff --git a/arch/arm/mach-iop13xx/setup.c b/arch/arm/mach-iop13xx/setup.c
index bfe0c87e3397..246f6d478720 100644
--- a/arch/arm/mach-iop13xx/setup.c
+++ b/arch/arm/mach-iop13xx/setup.c
@@ -519,7 +519,7 @@ void __init iop13xx_platform_init(void)
519 if (iq8134x_flash_resource.end > iq8134x_flash_resource.start) 519 if (iq8134x_flash_resource.end > iq8134x_flash_resource.start)
520 iop13xx_devices[plat_idx++] = &iq8134x_flash; 520 iop13xx_devices[plat_idx++] = &iq8134x_flash;
521 else 521 else
522 printk(KERN_ERR "%s: Failed to probe flash size\n", __FUNCTION__); 522 printk(KERN_ERR "%s: Failed to probe flash size\n", __func__);
523#endif 523#endif
524 524
525 platform_add_devices(iop13xx_devices, plat_idx); 525 platform_add_devices(iop13xx_devices, plat_idx);
diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c
index bf04121d1a31..64be341109b3 100644
--- a/arch/arm/mach-ixp4xx/common-pci.c
+++ b/arch/arm/mach-ixp4xx/common-pci.c
@@ -87,7 +87,7 @@ static inline int check_master_abort(void)
87 if (isr & PCI_ISR_PFE) { 87 if (isr & PCI_ISR_PFE) {
88 /* make sure the Master Abort bit is reset */ 88 /* make sure the Master Abort bit is reset */
89 *PCI_ISR = PCI_ISR_PFE; 89 *PCI_ISR = PCI_ISR_PFE;
90 pr_debug("%s failed\n", __FUNCTION__); 90 pr_debug("%s failed\n", __func__);
91 return 1; 91 return 1;
92 } 92 }
93 93
diff --git a/arch/arm/mach-ixp4xx/gtwx5715-pci.c b/arch/arm/mach-ixp4xx/gtwx5715-pci.c
index 0d5a42455820..49dec7868807 100644
--- a/arch/arm/mach-ixp4xx/gtwx5715-pci.c
+++ b/arch/arm/mach-ixp4xx/gtwx5715-pci.c
@@ -65,7 +65,7 @@ static int __init gtwx5715_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
65 else 65 else
66 rc = gtwx5715_irqmap[slot][pin-1]; 66 rc = gtwx5715_irqmap[slot][pin-1];
67 67
68 printk("%s: Mapped slot %d pin %d to IRQ %d\n", __FUNCTION__,slot, pin, rc); 68 printk("%s: Mapped slot %d pin %d to IRQ %d\n", __func__, slot, pin, rc);
69 return(rc); 69 return(rc);
70} 70}
71 71
diff --git a/arch/arm/mach-netx/generic.c b/arch/arm/mach-netx/generic.c
index b9ca8f98265d..fd7537f7d11e 100644
--- a/arch/arm/mach-netx/generic.c
+++ b/arch/arm/mach-netx/generic.c
@@ -133,7 +133,7 @@ netx_hif_ack_irq(unsigned int _irq)
133 val &= ~((1 << 24) << irq); 133 val &= ~((1 << 24) << irq);
134 writel(val, NETX_DPMAS_INT_EN); 134 writel(val, NETX_DPMAS_INT_EN);
135 135
136 DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq); 136 DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
137} 137}
138 138
139static void 139static void
@@ -145,7 +145,7 @@ netx_hif_mask_irq(unsigned int _irq)
145 val = readl(NETX_DPMAS_INT_EN); 145 val = readl(NETX_DPMAS_INT_EN);
146 val &= ~((1 << 24) << irq); 146 val &= ~((1 << 24) << irq);
147 writel(val, NETX_DPMAS_INT_EN); 147 writel(val, NETX_DPMAS_INT_EN);
148 DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq); 148 DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
149} 149}
150 150
151static void 151static void
@@ -157,7 +157,7 @@ netx_hif_unmask_irq(unsigned int _irq)
157 val = readl(NETX_DPMAS_INT_EN); 157 val = readl(NETX_DPMAS_INT_EN);
158 val |= (1 << 24) << irq; 158 val |= (1 << 24) << irq;
159 writel(val, NETX_DPMAS_INT_EN); 159 writel(val, NETX_DPMAS_INT_EN);
160 DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq); 160 DEBUG_IRQ("%s: irq %d\n", __func__, _irq);
161} 161}
162 162
163static struct irq_chip netx_hif_chip = { 163static struct irq_chip netx_hif_chip = {
diff --git a/arch/arm/mach-ns9xxx/gpio.c b/arch/arm/mach-ns9xxx/gpio.c
index b2230213b983..5286e9fc1d30 100644
--- a/arch/arm/mach-ns9xxx/gpio.c
+++ b/arch/arm/mach-ns9xxx/gpio.c
@@ -31,7 +31,7 @@
31static spinlock_t gpio_lock = __SPIN_LOCK_UNLOCKED(gpio_lock); 31static spinlock_t gpio_lock = __SPIN_LOCK_UNLOCKED(gpio_lock);
32 32
33/* only access gpiores with atomic ops */ 33/* only access gpiores with atomic ops */
34static DECLARE_BITMAP(gpiores, GPIO_MAX); 34static DECLARE_BITMAP(gpiores, GPIO_MAX + 1);
35 35
36static inline int ns9xxx_valid_gpio(unsigned gpio) 36static inline int ns9xxx_valid_gpio(unsigned gpio)
37{ 37{
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c
index 070345ee39a5..507987720015 100644
--- a/arch/arm/mach-omap1/board-h2.c
+++ b/arch/arm/mach-omap1/board-h2.c
@@ -350,6 +350,10 @@ static void __init h2_init_smc91x(void)
350 350
351static struct i2c_board_info __initdata h2_i2c_board_info[] = { 351static struct i2c_board_info __initdata h2_i2c_board_info[] = {
352 { 352 {
353 I2C_BOARD_INFO("tps65010", 0x48),
354 .type = "tps65010",
355 .irq = OMAP_GPIO_IRQ(58),
356 }, {
353 I2C_BOARD_INFO("isp1301_omap", 0x2d), 357 I2C_BOARD_INFO("isp1301_omap", 0x2d),
354 .type = "isp1301_omap", 358 .type = "isp1301_omap",
355 .irq = OMAP_GPIO_IRQ(2), 359 .irq = OMAP_GPIO_IRQ(2),
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c
index 6fc516855a8c..c3ef1ee5f77b 100644
--- a/arch/arm/mach-omap1/board-h3.c
+++ b/arch/arm/mach-omap1/board-h3.c
@@ -26,6 +26,7 @@
26#include <linux/mtd/nand.h> 26#include <linux/mtd/nand.h>
27#include <linux/mtd/partitions.h> 27#include <linux/mtd/partitions.h>
28#include <linux/input.h> 28#include <linux/input.h>
29#include <linux/spi/spi.h>
29#include <linux/i2c/tps65010.h> 30#include <linux/i2c/tps65010.h>
30 31
31#include <asm/setup.h> 32#include <asm/setup.h>
@@ -51,6 +52,8 @@
51#include <asm/arch/mcbsp.h> 52#include <asm/arch/mcbsp.h>
52#include <asm/arch/omap-alsa.h> 53#include <asm/arch/omap-alsa.h>
53 54
55#define H3_TS_GPIO 48
56
54static int h3_keymap[] = { 57static int h3_keymap[] = {
55 KEY(0, 0, KEY_LEFT), 58 KEY(0, 0, KEY_LEFT),
56 KEY(0, 1, KEY_RIGHT), 59 KEY(0, 1, KEY_RIGHT),
@@ -373,6 +376,17 @@ static struct platform_device h3_lcd_device = {
373 .id = -1, 376 .id = -1,
374}; 377};
375 378
379static struct spi_board_info h3_spi_board_info[] __initdata = {
380 [0] = {
381 .modalias = "tsc2101",
382 .bus_num = 2,
383 .chip_select = 0,
384 .irq = OMAP_GPIO_IRQ(H3_TS_GPIO),
385 .max_speed_hz = 16000000,
386 /* .platform_data = &tsc_platform_data, */
387 },
388};
389
376static struct omap_mcbsp_reg_cfg mcbsp_regs = { 390static struct omap_mcbsp_reg_cfg mcbsp_regs = {
377 .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), 391 .spcr2 = FREE | FRST | GRST | XRST | XINTM(3),
378 .spcr1 = RINTM(3) | RRST, 392 .spcr1 = RINTM(3) | RRST,
@@ -457,6 +471,14 @@ static struct omap_board_config_kernel h3_config[] __initdata = {
457 { OMAP_TAG_LCD, &h3_lcd_config }, 471 { OMAP_TAG_LCD, &h3_lcd_config },
458}; 472};
459 473
474static struct i2c_board_info __initdata h3_i2c_board_info[] = {
475 {
476 I2C_BOARD_INFO("tps65010", 0x48),
477 .type = "tps65013",
478 /* .irq = OMAP_GPIO_IRQ(??), */
479 },
480};
481
460static struct omap_gpio_switch h3_gpio_switches[] __initdata = { 482static struct omap_gpio_switch h3_gpio_switches[] __initdata = {
461 { 483 {
462 .name = "mmc_slot", 484 .name = "mmc_slot",
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c
index 8eb5dcdaead2..e6c64e10b7ec 100644
--- a/arch/arm/mach-omap1/pm.c
+++ b/arch/arm/mach-omap1/pm.c
@@ -717,7 +717,7 @@ static int __init omap_pm_init(void)
717#endif 717#endif
718 718
719#ifdef CONFIG_OMAP_32K_TIMER 719#ifdef CONFIG_OMAP_32K_TIMER
720 error = sysfs_create_file(power_kobj, &sleep_while_idle_attr); 720 error = sysfs_create_file(power_kobj, &sleep_while_idle_attr.attr);
721 if (error) 721 if (error)
722 printk(KERN_ERR "sysfs_create_file failed: %d\n", error); 722 printk(KERN_ERR "sysfs_create_file failed: %d\n", error);
723#endif 723#endif
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 5a4091f582ed..69c8174f3aac 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -42,6 +42,12 @@ static struct map_desc omap2_io_desc[] __initdata = {
42 .length = L3_24XX_SIZE, 42 .length = L3_24XX_SIZE,
43 .type = MT_DEVICE 43 .type = MT_DEVICE
44 }, 44 },
45 {
46 .virtual = L4_24XX_VIRT,
47 .pfn = __phys_to_pfn(L4_24XX_PHYS),
48 .length = L4_24XX_SIZE,
49 .type = MT_DEVICE
50 },
45#ifdef CONFIG_ARCH_OMAP2430 51#ifdef CONFIG_ARCH_OMAP2430
46 { 52 {
47 .virtual = L4_WK_243X_VIRT, 53 .virtual = L4_WK_243X_VIRT,
diff --git a/arch/arm/mach-orion/addr-map.c b/arch/arm/mach-orion/addr-map.c
index 2e2fd63643c3..58cc3c0333b6 100644
--- a/arch/arm/mach-orion/addr-map.c
+++ b/arch/arm/mach-orion/addr-map.c
@@ -97,14 +97,20 @@
97#define PCIE_BAR_CTRL(n) ORION_PCIE_REG(0x1804 + ((n - 1) * 4)) 97#define PCIE_BAR_CTRL(n) ORION_PCIE_REG(0x1804 + ((n - 1) * 4))
98#define PCIE_BAR_LO(n) ORION_PCIE_REG(0x0010 + ((n) * 8)) 98#define PCIE_BAR_LO(n) ORION_PCIE_REG(0x0010 + ((n) * 8))
99#define PCIE_BAR_HI(n) ORION_PCIE_REG(0x0014 + ((n) * 8)) 99#define PCIE_BAR_HI(n) ORION_PCIE_REG(0x0014 + ((n) * 8))
100#define PCIE_WIN_CTRL(n) ORION_PCIE_REG(0x1820 + ((n) << 4)) 100#define PCIE_WIN_CTRL(n) (((n) < 5) ? \
101#define PCIE_WIN_BASE(n) ORION_PCIE_REG(0x1824 + ((n) << 4)) 101 ORION_PCIE_REG(0x1820 + ((n) << 4)) : \
102#define PCIE_WIN_REMAP(n) ORION_PCIE_REG(0x182c + ((n) << 4)) 102 ORION_PCIE_REG(0x1880))
103#define PCIE_WIN_BASE(n) (((n) < 5) ? \
104 ORION_PCIE_REG(0x1824 + ((n) << 4)) : \
105 ORION_PCIE_REG(0x1884))
106#define PCIE_WIN_REMAP(n) (((n) < 5) ? \
107 ORION_PCIE_REG(0x182c + ((n) << 4)) : \
108 ORION_PCIE_REG(0x188c))
103#define PCIE_DEFWIN_CTRL ORION_PCIE_REG(0x18b0) 109#define PCIE_DEFWIN_CTRL ORION_PCIE_REG(0x18b0)
104#define PCIE_EXPROM_WIN_CTRL ORION_PCIE_REG(0x18c0) 110#define PCIE_EXPROM_WIN_CTRL ORION_PCIE_REG(0x18c0)
105#define PCIE_EXPROM_WIN_REMP ORION_PCIE_REG(0x18c4) 111#define PCIE_EXPROM_WIN_REMP ORION_PCIE_REG(0x18c4)
106#define PCIE_MAX_BARS 3 112#define PCIE_MAX_BARS 3
107#define PCIE_MAX_WINS 5 113#define PCIE_MAX_WINS 6
108 114
109/* 115/*
110 * Use PCIE BAR '1' for all DDR banks 116 * Use PCIE BAR '1' for all DDR banks
diff --git a/arch/arm/mach-orion/common.c b/arch/arm/mach-orion/common.c
index 5f0ee4b8a9b7..bbc2b4ec932c 100644
--- a/arch/arm/mach-orion/common.c
+++ b/arch/arm/mach-orion/common.c
@@ -17,7 +17,9 @@
17#include <linux/mv643xx_eth.h> 17#include <linux/mv643xx_eth.h>
18#include <linux/mv643xx_i2c.h> 18#include <linux/mv643xx_i2c.h>
19#include <asm/page.h> 19#include <asm/page.h>
20#include <asm/setup.h>
20#include <asm/timex.h> 21#include <asm/timex.h>
22#include <asm/mach/arch.h>
21#include <asm/mach/map.h> 23#include <asm/mach/map.h>
22#include <asm/arch/hardware.h> 24#include <asm/arch/hardware.h>
23#include "common.h" 25#include "common.h"
@@ -177,8 +179,8 @@ static struct platform_device orion_ehci1 = {
177 179
178static struct resource orion_eth_shared_resources[] = { 180static struct resource orion_eth_shared_resources[] = {
179 { 181 {
180 .start = ORION_ETH_PHYS_BASE, 182 .start = ORION_ETH_PHYS_BASE + 0x2000,
181 .end = ORION_ETH_PHYS_BASE + 0xffff, 183 .end = ORION_ETH_PHYS_BASE + 0x3fff,
182 .flags = IORESOURCE_MEM, 184 .flags = IORESOURCE_MEM,
183 }, 185 },
184}; 186};
@@ -347,3 +349,21 @@ void __init orion_init(void)
347 platform_device_register(&orion_ehci1); 349 platform_device_register(&orion_ehci1);
348 platform_device_register(&orion_i2c); 350 platform_device_register(&orion_i2c);
349} 351}
352
353/*
354 * Many orion-based systems have buggy bootloader implementations.
355 * This is a common fixup for bogus memory tags.
356 */
357void __init tag_fixup_mem32(struct machine_desc *mdesc, struct tag *t,
358 char **from, struct meminfo *meminfo)
359{
360 for (; t->hdr.size; t = tag_next(t))
361 if (t->hdr.tag == ATAG_MEM &&
362 (!t->u.mem.size || t->u.mem.size & ~PAGE_MASK ||
363 t->u.mem.start & ~PAGE_MASK)) {
364 printk(KERN_WARNING
365 "Clearing invalid memory bank %dKB@0x%08x\n",
366 t->u.mem.size / 1024, t->u.mem.start);
367 t->hdr.tag = 0;
368 }
369}
diff --git a/arch/arm/mach-orion/common.h b/arch/arm/mach-orion/common.h
index 10154ec885df..501497cc2c4d 100644
--- a/arch/arm/mach-orion/common.h
+++ b/arch/arm/mach-orion/common.h
@@ -83,4 +83,10 @@ struct mv_sata_platform_data;
83 83
84void __init orion_sata_init(struct mv_sata_platform_data *sata_data); 84void __init orion_sata_init(struct mv_sata_platform_data *sata_data);
85 85
86struct machine_desc;
87struct meminfo;
88struct tag;
89extern void __init tag_fixup_mem32(struct machine_desc *, struct tag *,
90 char **, struct meminfo *);
91
86#endif /* __ARCH_ORION_COMMON_H__ */ 92#endif /* __ARCH_ORION_COMMON_H__ */
diff --git a/arch/arm/mach-orion/dns323-setup.c b/arch/arm/mach-orion/dns323-setup.c
index 02b280c24820..076e155ad510 100644
--- a/arch/arm/mach-orion/dns323-setup.c
+++ b/arch/arm/mach-orion/dns323-setup.c
@@ -319,4 +319,5 @@ MACHINE_START(DNS323, "D-Link DNS-323")
319 .map_io = orion_map_io, 319 .map_io = orion_map_io,
320 .init_irq = orion_init_irq, 320 .init_irq = orion_init_irq,
321 .timer = &orion_timer, 321 .timer = &orion_timer,
322 .fixup = tag_fixup_mem32,
322MACHINE_END 323MACHINE_END
diff --git a/arch/arm/mach-orion/gpio.c b/arch/arm/mach-orion/gpio.c
index d5f00c86d616..f713818c66a3 100644
--- a/arch/arm/mach-orion/gpio.c
+++ b/arch/arm/mach-orion/gpio.c
@@ -36,7 +36,7 @@ int gpio_direction_input(unsigned pin)
36 unsigned long flags; 36 unsigned long flags;
37 37
38 if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { 38 if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
39 pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin); 39 pr_debug("%s: invalid GPIO %d\n", __func__, pin);
40 return -EINVAL; 40 return -EINVAL;
41 } 41 }
42 42
@@ -62,7 +62,7 @@ int gpio_direction_output(unsigned pin, int value)
62 int mask; 62 int mask;
63 63
64 if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { 64 if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
65 pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin); 65 pr_debug("%s: invalid GPIO %d\n", __func__, pin);
66 return -EINVAL; 66 return -EINVAL;
67 } 67 }
68 68
@@ -141,7 +141,7 @@ int gpio_request(unsigned pin, const char *label)
141 unsigned long flags; 141 unsigned long flags;
142 142
143 if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { 143 if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
144 pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin); 144 pr_debug("%s: invalid GPIO %d\n", __func__, pin);
145 return -EINVAL; 145 return -EINVAL;
146 } 146 }
147 147
@@ -149,7 +149,7 @@ int gpio_request(unsigned pin, const char *label)
149 149
150 if (gpio_label[pin]) { 150 if (gpio_label[pin]) {
151 pr_debug("%s: GPIO %d already used as %s\n", 151 pr_debug("%s: GPIO %d already used as %s\n",
152 __FUNCTION__, pin, gpio_label[pin]); 152 __func__, pin, gpio_label[pin]);
153 ret = -EBUSY; 153 ret = -EBUSY;
154 } else 154 } else
155 gpio_label[pin] = label ? label : "?"; 155 gpio_label[pin] = label ? label : "?";
@@ -162,12 +162,12 @@ EXPORT_SYMBOL(gpio_request);
162void gpio_free(unsigned pin) 162void gpio_free(unsigned pin)
163{ 163{
164 if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { 164 if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) {
165 pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin); 165 pr_debug("%s: invalid GPIO %d\n", __func__, pin);
166 return; 166 return;
167 } 167 }
168 168
169 if (!gpio_label[pin]) 169 if (!gpio_label[pin])
170 pr_warning("%s: GPIO %d already freed\n", __FUNCTION__, pin); 170 pr_warning("%s: GPIO %d already freed\n", __func__, pin);
171 else 171 else
172 gpio_label[pin] = NULL; 172 gpio_label[pin] = NULL;
173} 173}
diff --git a/arch/arm/mach-orion/kurobox_pro-setup.c b/arch/arm/mach-orion/kurobox_pro-setup.c
index 6817aca4aa26..785a07bdf1e2 100644
--- a/arch/arm/mach-orion/kurobox_pro-setup.c
+++ b/arch/arm/mach-orion/kurobox_pro-setup.c
@@ -240,4 +240,5 @@ MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro")
240 .map_io = orion_map_io, 240 .map_io = orion_map_io,
241 .init_irq = orion_init_irq, 241 .init_irq = orion_init_irq,
242 .timer = &orion_timer, 242 .timer = &orion_timer,
243 .fixup = tag_fixup_mem32,
243MACHINE_END 244MACHINE_END
diff --git a/arch/arm/mach-orion/ts209-setup.c b/arch/arm/mach-orion/ts209-setup.c
index b8cfe6813e9d..45764dad16d0 100644
--- a/arch/arm/mach-orion/ts209-setup.c
+++ b/arch/arm/mach-orion/ts209-setup.c
@@ -357,4 +357,5 @@ MACHINE_START(TS209, "QNAP TS-109/TS-209")
357 .map_io = orion_map_io, 357 .map_io = orion_map_io,
358 .init_irq = orion_init_irq, 358 .init_irq = orion_init_irq,
359 .timer = &orion_timer, 359 .timer = &orion_timer,
360 .fixup = tag_fixup_mem32,
360MACHINE_END 361MACHINE_END
diff --git a/arch/arm/mach-pnx4008/clock.c b/arch/arm/mach-pnx4008/clock.c
index daa8d3d98eff..8e00ed43fb95 100644
--- a/arch/arm/mach-pnx4008/clock.c
+++ b/arch/arm/mach-pnx4008/clock.c
@@ -976,7 +976,7 @@ static int __init clk_init(void)
976 (*clkp)->set_parent((*clkp), (*clkp)->parent); 976 (*clkp)->set_parent((*clkp), (*clkp)->parent);
977 } 977 }
978 pr_debug("%s: clock %s, rate %ld\n", 978 pr_debug("%s: clock %s, rate %ld\n",
979 __FUNCTION__, (*clkp)->name, (*clkp)->rate); 979 __func__, (*clkp)->name, (*clkp)->rate);
980 } 980 }
981 981
982 local_clk_use(&ck_pll4); 982 local_clk_use(&ck_pll4);
diff --git a/arch/arm/mach-pnx4008/dma.c b/arch/arm/mach-pnx4008/dma.c
index f7009d845be8..fe152e82590b 100644
--- a/arch/arm/mach-pnx4008/dma.c
+++ b/arch/arm/mach-pnx4008/dma.c
@@ -192,7 +192,7 @@ void pnx4008_free_channel(int ch)
192 if (!dma_channels[ch].name) { 192 if (!dma_channels[ch].name) {
193 printk(KERN_CRIT 193 printk(KERN_CRIT
194 "%s: trying to free channel %d which is already freed\n", 194 "%s: trying to free channel %d which is already freed\n",
195 __FUNCTION__, ch); 195 __func__, ch);
196 return; 196 return;
197 } 197 }
198 198
diff --git a/arch/arm/mach-pxa/cm-x270-pci.c b/arch/arm/mach-pxa/cm-x270-pci.c
index 15c4e0df3e10..fcda7d5cb693 100644
--- a/arch/arm/mach-pxa/cm-x270-pci.c
+++ b/arch/arm/mach-pxa/cm-x270-pci.c
@@ -104,7 +104,7 @@ static int __init cmx270_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
104{ 104{
105 int irq; 105 int irq;
106 106
107 dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __FUNCTION__, slot, pin); 107 dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __func__, slot, pin);
108 108
109 irq = it8152_pci_map_irq(dev, slot, pin); 109 irq = it8152_pci_map_irq(dev, slot, pin);
110 if (irq) 110 if (irq)
diff --git a/arch/arm/mach-pxa/cm-x270.c b/arch/arm/mach-pxa/cm-x270.c
index 6012177a29a3..ecdbc96a4de1 100644
--- a/arch/arm/mach-pxa/cm-x270.c
+++ b/arch/arm/mach-pxa/cm-x270.c
@@ -504,11 +504,11 @@ static void cmx270_mci_setpower(struct device *dev, unsigned int vdd)
504 struct pxamci_platform_data *p_d = dev->platform_data; 504 struct pxamci_platform_data *p_d = dev->platform_data;
505 505
506 if ((1 << vdd) & p_d->ocr_mask) { 506 if ((1 << vdd) & p_d->ocr_mask) {
507 printk(KERN_DEBUG "%s: on\n", __FUNCTION__); 507 printk(KERN_DEBUG "%s: on\n", __func__);
508 GPCR(105) = GPIO_bit(105); 508 GPCR(105) = GPIO_bit(105);
509 } else { 509 } else {
510 GPSR(105) = GPIO_bit(105); 510 GPSR(105) = GPIO_bit(105);
511 printk(KERN_DEBUG "%s: off\n", __FUNCTION__); 511 printk(KERN_DEBUG "%s: off\n", __func__);
512 } 512 }
513} 513}
514 514
diff --git a/arch/arm/mach-pxa/dma.c b/arch/arm/mach-pxa/dma.c
index 93c4f31f127f..3215316d7b06 100644
--- a/arch/arm/mach-pxa/dma.c
+++ b/arch/arm/mach-pxa/dma.c
@@ -81,7 +81,7 @@ void pxa_free_dma (int dma_ch)
81 if (!dma_channels[dma_ch].name) { 81 if (!dma_channels[dma_ch].name) {
82 printk (KERN_CRIT 82 printk (KERN_CRIT
83 "%s: trying to free channel %d which is already freed\n", 83 "%s: trying to free channel %d which is already freed\n",
84 __FUNCTION__, dma_ch); 84 __func__, dma_ch);
85 return; 85 return;
86 } 86 }
87 87
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
index 3d0ad5065ee5..3bb31314429a 100644
--- a/arch/arm/mach-pxa/em-x270.c
+++ b/arch/arm/mach-pxa/em-x270.c
@@ -264,7 +264,7 @@ static int em_x270_mci_init(struct device *dev,
264 "MMC card detect", data); 264 "MMC card detect", data);
265 if (err) { 265 if (err) {
266 printk(KERN_ERR "%s: can't request MMC card detect IRQ: %d\n", 266 printk(KERN_ERR "%s: can't request MMC card detect IRQ: %d\n",
267 __FUNCTION__, err); 267 __func__, err);
268 return err; 268 return err;
269 } 269 }
270 270
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c
index 345c3deeb02e..72a436fb9a29 100644
--- a/arch/arm/mach-pxa/mainstone.c
+++ b/arch/arm/mach-pxa/mainstone.c
@@ -390,11 +390,11 @@ static void mainstone_mci_setpower(struct device *dev, unsigned int vdd)
390 struct pxamci_platform_data* p_d = dev->platform_data; 390 struct pxamci_platform_data* p_d = dev->platform_data;
391 391
392 if (( 1 << vdd) & p_d->ocr_mask) { 392 if (( 1 << vdd) & p_d->ocr_mask) {
393 printk(KERN_DEBUG "%s: on\n", __FUNCTION__); 393 printk(KERN_DEBUG "%s: on\n", __func__);
394 MST_MSCWR1 |= MST_MSCWR1_MMC_ON; 394 MST_MSCWR1 |= MST_MSCWR1_MMC_ON;
395 MST_MSCWR1 &= ~MST_MSCWR1_MS_SEL; 395 MST_MSCWR1 &= ~MST_MSCWR1_MS_SEL;
396 } else { 396 } else {
397 printk(KERN_DEBUG "%s: off\n", __FUNCTION__); 397 printk(KERN_DEBUG "%s: off\n", __func__);
398 MST_MSCWR1 &= ~MST_MSCWR1_MMC_ON; 398 MST_MSCWR1 &= ~MST_MSCWR1_MMC_ON;
399 } 399 }
400} 400}
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c
index 853fc9433750..f207fcd30cd7 100644
--- a/arch/arm/mach-pxa/trizeps4.c
+++ b/arch/arm/mach-pxa/trizeps4.c
@@ -217,7 +217,7 @@ void board_pcmcia_power(int power)
217 ConXS_BCR = trizeps_conxs_bcr; 217 ConXS_BCR = trizeps_conxs_bcr;
218 218
219 } 219 }
220 pr_debug("%s: o%s 0x%x\n", __FUNCTION__, power ? "n": "ff", trizeps_conxs_bcr); 220 pr_debug("%s: o%s 0x%x\n", __func__, power ? "n": "ff", trizeps_conxs_bcr);
221} 221}
222 222
223/* backlight power switching for LCD panel */ 223/* backlight power switching for LCD panel */
@@ -228,7 +228,7 @@ static void board_backlight_power(int on)
228 } else { 228 } else {
229 trizeps_conxs_bcr &= ~ConXS_BCR_L_DISP; 229 trizeps_conxs_bcr &= ~ConXS_BCR_L_DISP;
230 } 230 }
231 pr_debug("%s: o%s 0x%x\n", __FUNCTION__, on ? "n" : "ff", trizeps_conxs_bcr); 231 pr_debug("%s: o%s 0x%x\n", __func__, on ? "n" : "ff", trizeps_conxs_bcr);
232 ConXS_BCR = trizeps_conxs_bcr; 232 ConXS_BCR = trizeps_conxs_bcr;
233} 233}
234 234
@@ -238,10 +238,10 @@ static void board_mci_power(struct device *dev, unsigned int vdd)
238 struct pxamci_platform_data* p_d = dev->platform_data; 238 struct pxamci_platform_data* p_d = dev->platform_data;
239 239
240 if (( 1 << vdd) & p_d->ocr_mask) { 240 if (( 1 << vdd) & p_d->ocr_mask) {
241 pr_debug("%s: on\n", __FUNCTION__); 241 pr_debug("%s: on\n", __func__);
242 /* FIXME fill in values here */ 242 /* FIXME fill in values here */
243 } else { 243 } else {
244 pr_debug("%s: off\n", __FUNCTION__); 244 pr_debug("%s: off\n", __func__);
245 /* FIXME fill in values here */ 245 /* FIXME fill in values here */
246 } 246 }
247} 247}
diff --git a/arch/arm/mach-sa1100/badge4.c b/arch/arm/mach-sa1100/badge4.c
index f60b7a66dfa0..842d9e6dc5ff 100644
--- a/arch/arm/mach-sa1100/badge4.c
+++ b/arch/arm/mach-sa1100/badge4.c
@@ -206,7 +206,7 @@ static int __init badge4_init(void)
206 if (ret < 0) 206 if (ret < 0)
207 printk(KERN_ERR 207 printk(KERN_ERR
208 "%s: SA-1111 initialization failed (%d)\n", 208 "%s: SA-1111 initialization failed (%d)\n",
209 __FUNCTION__, ret); 209 __func__, ret);
210 210
211 211
212 /* maybe turn on 5v0 from the start */ 212 /* maybe turn on 5v0 from the start */
@@ -240,11 +240,11 @@ void badge4_set_5V(unsigned subsystem, int on)
240 /* detect on->off and off->on transitions */ 240 /* detect on->off and off->on transitions */
241 if ((!old_5V_bitmap) && (badge4_5V_bitmap)) { 241 if ((!old_5V_bitmap) && (badge4_5V_bitmap)) {
242 /* was off, now on */ 242 /* was off, now on */
243 printk(KERN_INFO "%s: enabling 5V supply rail\n", __FUNCTION__); 243 printk(KERN_INFO "%s: enabling 5V supply rail\n", __func__);
244 GPSR = BADGE4_GPIO_PCMEN5V; 244 GPSR = BADGE4_GPIO_PCMEN5V;
245 } else if ((old_5V_bitmap) && (!badge4_5V_bitmap)) { 245 } else if ((old_5V_bitmap) && (!badge4_5V_bitmap)) {
246 /* was on, now off */ 246 /* was on, now off */
247 printk(KERN_INFO "%s: disabling 5V supply rail\n", __FUNCTION__); 247 printk(KERN_INFO "%s: disabling 5V supply rail\n", __func__);
248 GPCR = BADGE4_GPIO_PCMEN5V; 248 GPCR = BADGE4_GPIO_PCMEN5V;
249 } 249 }
250 250
diff --git a/arch/arm/mach-sa1100/cpu-sa1100.c b/arch/arm/mach-sa1100/cpu-sa1100.c
index d68630b74d78..343368aa82de 100644
--- a/arch/arm/mach-sa1100/cpu-sa1100.c
+++ b/arch/arm/mach-sa1100/cpu-sa1100.c
@@ -139,7 +139,7 @@ static void sa1100_update_dram_timings(int current_speed, int new_speed)
139 139
140 if (settings->speed == 0) { 140 if (settings->speed == 0) {
141 panic("%s: couldn't find dram setting for speed %d\n", 141 panic("%s: couldn't find dram setting for speed %d\n",
142 __FUNCTION__, new_speed); 142 __func__, new_speed);
143 } 143 }
144 144
145 /* No risk, no fun: run with interrupts on! */ 145 /* No risk, no fun: run with interrupts on! */
diff --git a/arch/arm/mach-sa1100/dma.c b/arch/arm/mach-sa1100/dma.c
index 1fbe053e8b59..e5080286060e 100644
--- a/arch/arm/mach-sa1100/dma.c
+++ b/arch/arm/mach-sa1100/dma.c
@@ -129,7 +129,7 @@ int sa1100_request_dma (dma_device_t device, const char *device_id,
129 if (err) { 129 if (err) {
130 printk(KERN_ERR 130 printk(KERN_ERR
131 "%s: unable to request IRQ %d for %s\n", 131 "%s: unable to request IRQ %d for %s\n",
132 __FUNCTION__, IRQ_DMA0 + i, device_id); 132 __func__, IRQ_DMA0 + i, device_id);
133 dma->device = 0; 133 dma->device = 0;
134 return err; 134 return err;
135 } 135 }
@@ -165,12 +165,12 @@ void sa1100_free_dma(dma_regs_t *regs)
165 if (regs == (dma_regs_t *)&DDAR(i)) 165 if (regs == (dma_regs_t *)&DDAR(i))
166 break; 166 break;
167 if (i >= SA1100_DMA_CHANNELS) { 167 if (i >= SA1100_DMA_CHANNELS) {
168 printk(KERN_ERR "%s: bad DMA identifier\n", __FUNCTION__); 168 printk(KERN_ERR "%s: bad DMA identifier\n", __func__);
169 return; 169 return;
170 } 170 }
171 171
172 if (!dma_chan[i].device) { 172 if (!dma_chan[i].device) {
173 printk(KERN_ERR "%s: Trying to free free DMA\n", __FUNCTION__); 173 printk(KERN_ERR "%s: Trying to free free DMA\n", __func__);
174 return; 174 return;
175 } 175 }
176 176
@@ -329,7 +329,7 @@ void sa1100_reset_dma(dma_regs_t *regs)
329 if (regs == (dma_regs_t *)&DDAR(i)) 329 if (regs == (dma_regs_t *)&DDAR(i))
330 break; 330 break;
331 if (i >= SA1100_DMA_CHANNELS) { 331 if (i >= SA1100_DMA_CHANNELS) {
332 printk(KERN_ERR "%s: bad DMA identifier\n", __FUNCTION__); 332 printk(KERN_ERR "%s: bad DMA identifier\n", __func__);
333 return; 333 return;
334 } 334 }
335 335
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c
index b72fee0f2538..8473c37b77d6 100644
--- a/arch/arm/mach-sa1100/h3600.c
+++ b/arch/arm/mach-sa1100/h3600.c
@@ -596,7 +596,7 @@ static void h3800_control_egpio(enum ipaq_egpio_type x, int setp)
596 case IPAQ_EGPIO_CODEC_NRESET: 596 case IPAQ_EGPIO_CODEC_NRESET:
597 case IPAQ_EGPIO_AUDIO_ON: 597 case IPAQ_EGPIO_AUDIO_ON:
598 case IPAQ_EGPIO_QMUTE: 598 case IPAQ_EGPIO_QMUTE:
599 printk("%s: error - should not be called\n", __FUNCTION__); 599 printk("%s: error - should not be called\n", __func__);
600 break; 600 break;
601 case IPAQ_EGPIO_OPT_NVRAM_ON: 601 case IPAQ_EGPIO_OPT_NVRAM_ON:
602 SET_ASIC2(GPIO2_OPT_ON_NVRAM); 602 SET_ASIC2(GPIO2_OPT_ON_NVRAM);
@@ -638,7 +638,7 @@ static int h3800_pm_callback(int req)
638 static u16 asic2_data; 638 static u16 asic2_data;
639 int result = 0; 639 int result = 0;
640 640
641 printk("%s %d\n", __FUNCTION__, req); 641 printk("%s %d\n", __func__, req);
642 642
643 switch (req) { 643 switch (req) {
644 case PM_RESUME: 644 case PM_RESUME:
@@ -666,7 +666,7 @@ static int h3800_pm_callback(int req)
666 asic2_data = H3800_ASIC2_GPIOPIOD; 666 asic2_data = H3800_ASIC2_GPIOPIOD;
667 break; 667 break;
668 default: 668 default:
669 printk("%s: unrecognized PM callback\n", __FUNCTION__); 669 printk("%s: unrecognized PM callback\n", __func__);
670 break; 670 break;
671 } 671 }
672 return result; 672 return result;
@@ -706,7 +706,7 @@ static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc)
706{ 706{
707 int i; 707 int i;
708 708
709 if (0) printk("%s: interrupt received\n", __FUNCTION__); 709 if (0) printk("%s: interrupt received\n", __func__);
710 710
711 desc->chip->ack(irq); 711 desc->chip->ack(irq);
712 712
@@ -716,21 +716,21 @@ static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc)
716 716
717 /* KPIO */ 717 /* KPIO */
718 irq = H3800_ASIC2_KPIINTFLAG; 718 irq = H3800_ASIC2_KPIINTFLAG;
719 if (0) printk("%s KPIO 0x%08X\n", __FUNCTION__, irq); 719 if (0) printk("%s KPIO 0x%08X\n", __func__, irq);
720 for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++) 720 for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++)
721 if (irq & kpio_irq_mask[j]) 721 if (irq & kpio_irq_mask[j])
722 handle_edge_irq(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j); 722 handle_edge_irq(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j);
723 723
724 /* GPIO2 */ 724 /* GPIO2 */
725 irq = H3800_ASIC2_GPIINTFLAG; 725 irq = H3800_ASIC2_GPIINTFLAG;
726 if (0) printk("%s GPIO 0x%08X\n", __FUNCTION__, irq); 726 if (0) printk("%s GPIO 0x%08X\n", __func__, irq);
727 for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++) 727 for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++)
728 if (irq & gpio_irq_mask[j]) 728 if (irq & gpio_irq_mask[j])
729 handle_edge_irq(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j); 729 handle_edge_irq(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j);
730 } 730 }
731 731
732 if (i >= MAX_ASIC_ISR_LOOPS) 732 if (i >= MAX_ASIC_ISR_LOOPS)
733 printk("%s: interrupt processing overrun\n", __FUNCTION__); 733 printk("%s: interrupt processing overrun\n", __func__);
734 734
735 /* For level-based interrupts */ 735 /* For level-based interrupts */
736 desc->chip->unmask(irq); 736 desc->chip->unmask(irq);
diff --git a/arch/arm/plat-iop/pci.c b/arch/arm/plat-iop/pci.c
index 2b5aa1135b11..98d01517b563 100644
--- a/arch/arm/plat-iop/pci.c
+++ b/arch/arm/plat-iop/pci.c
@@ -371,7 +371,7 @@ static int __init iop3xx_init_atu_setup(char *str)
371 default: 371 default:
372 printk(KERN_DEBUG "\"%s\" malformed at " 372 printk(KERN_DEBUG "\"%s\" malformed at "
373 "character: \'%c\'", 373 "character: \'%c\'",
374 __FUNCTION__, 374 __func__,
375 *str); 375 *str);
376 *(str + 1) = '\0'; 376 *(str + 1) = '\0';
377 } 377 }
diff --git a/arch/arm/plat-omap/cpu-omap.c b/arch/arm/plat-omap/cpu-omap.c
index c0d63b0c61c9..d719c15daa55 100644
--- a/arch/arm/plat-omap/cpu-omap.c
+++ b/arch/arm/plat-omap/cpu-omap.c
@@ -33,43 +33,33 @@
33#define MPU_CLK "virt_prcm_set" 33#define MPU_CLK "virt_prcm_set"
34#endif 34#endif
35 35
36static struct clk *mpu_clk;
37
36/* TODO: Add support for SDRAM timing changes */ 38/* TODO: Add support for SDRAM timing changes */
37 39
38int omap_verify_speed(struct cpufreq_policy *policy) 40int omap_verify_speed(struct cpufreq_policy *policy)
39{ 41{
40 struct clk * mpu_clk;
41
42 if (policy->cpu) 42 if (policy->cpu)
43 return -EINVAL; 43 return -EINVAL;
44 44
45 cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, 45 cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
46 policy->cpuinfo.max_freq); 46 policy->cpuinfo.max_freq);
47 mpu_clk = clk_get(NULL, MPU_CLK); 47
48 if (IS_ERR(mpu_clk))
49 return PTR_ERR(mpu_clk);
50 policy->min = clk_round_rate(mpu_clk, policy->min * 1000) / 1000; 48 policy->min = clk_round_rate(mpu_clk, policy->min * 1000) / 1000;
51 policy->max = clk_round_rate(mpu_clk, policy->max * 1000) / 1000; 49 policy->max = clk_round_rate(mpu_clk, policy->max * 1000) / 1000;
52 cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, 50 cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq,
53 policy->cpuinfo.max_freq); 51 policy->cpuinfo.max_freq);
54 clk_put(mpu_clk);
55
56 return 0; 52 return 0;
57} 53}
58 54
59unsigned int omap_getspeed(unsigned int cpu) 55unsigned int omap_getspeed(unsigned int cpu)
60{ 56{
61 struct clk * mpu_clk;
62 unsigned long rate; 57 unsigned long rate;
63 58
64 if (cpu) 59 if (cpu)
65 return 0; 60 return 0;
66 61
67 mpu_clk = clk_get(NULL, MPU_CLK);
68 if (IS_ERR(mpu_clk))
69 return 0;
70 rate = clk_get_rate(mpu_clk) / 1000; 62 rate = clk_get_rate(mpu_clk) / 1000;
71 clk_put(mpu_clk);
72
73 return rate; 63 return rate;
74} 64}
75 65
@@ -77,14 +67,9 @@ static int omap_target(struct cpufreq_policy *policy,
77 unsigned int target_freq, 67 unsigned int target_freq,
78 unsigned int relation) 68 unsigned int relation)
79{ 69{
80 struct clk * mpu_clk;
81 struct cpufreq_freqs freqs; 70 struct cpufreq_freqs freqs;
82 int ret = 0; 71 int ret = 0;
83 72
84 mpu_clk = clk_get(NULL, MPU_CLK);
85 if (IS_ERR(mpu_clk))
86 return PTR_ERR(mpu_clk);
87
88 freqs.old = omap_getspeed(0); 73 freqs.old = omap_getspeed(0);
89 freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000; 74 freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000;
90 freqs.cpu = 0; 75 freqs.cpu = 0;
@@ -92,15 +77,12 @@ static int omap_target(struct cpufreq_policy *policy,
92 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); 77 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
93 ret = clk_set_rate(mpu_clk, target_freq * 1000); 78 ret = clk_set_rate(mpu_clk, target_freq * 1000);
94 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); 79 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
95 clk_put(mpu_clk);
96 80
97 return ret; 81 return ret;
98} 82}
99 83
100static int __init omap_cpu_init(struct cpufreq_policy *policy) 84static int __init omap_cpu_init(struct cpufreq_policy *policy)
101{ 85{
102 struct clk * mpu_clk;
103
104 mpu_clk = clk_get(NULL, MPU_CLK); 86 mpu_clk = clk_get(NULL, MPU_CLK);
105 if (IS_ERR(mpu_clk)) 87 if (IS_ERR(mpu_clk))
106 return PTR_ERR(mpu_clk); 88 return PTR_ERR(mpu_clk);
@@ -111,17 +93,23 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy)
111 policy->cpuinfo.min_freq = clk_round_rate(mpu_clk, 0) / 1000; 93 policy->cpuinfo.min_freq = clk_round_rate(mpu_clk, 0) / 1000;
112 policy->cpuinfo.max_freq = clk_round_rate(mpu_clk, VERY_HI_RATE) / 1000; 94 policy->cpuinfo.max_freq = clk_round_rate(mpu_clk, VERY_HI_RATE) / 1000;
113 policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; 95 policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
114 clk_put(mpu_clk);
115 96
116 return 0; 97 return 0;
117} 98}
118 99
100static int omap_cpu_exit(struct cpufreq_policy *policy)
101{
102 clk_put(mpu_clk);
103 return 0;
104}
105
119static struct cpufreq_driver omap_driver = { 106static struct cpufreq_driver omap_driver = {
120 .flags = CPUFREQ_STICKY, 107 .flags = CPUFREQ_STICKY,
121 .verify = omap_verify_speed, 108 .verify = omap_verify_speed,
122 .target = omap_target, 109 .target = omap_target,
123 .get = omap_getspeed, 110 .get = omap_getspeed,
124 .init = omap_cpu_init, 111 .init = omap_cpu_init,
112 .exit = omap_cpu_exit,
125 .name = "omap", 113 .name = "omap",
126}; 114};
127 115
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c
index c5dab1d6417e..4a53f9ba6c43 100644
--- a/arch/arm/plat-omap/devices.c
+++ b/arch/arm/plat-omap/devices.c
@@ -89,68 +89,6 @@ static inline void omap_init_dsp(void) { }
89#endif /* CONFIG_OMAP_DSP */ 89#endif /* CONFIG_OMAP_DSP */
90 90
91/*-------------------------------------------------------------------------*/ 91/*-------------------------------------------------------------------------*/
92#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
93
94#define OMAP1_I2C_BASE 0xfffb3800
95#define OMAP2_I2C_BASE1 0x48070000
96#define OMAP_I2C_SIZE 0x3f
97#define OMAP1_I2C_INT INT_I2C
98#define OMAP2_I2C_INT1 56
99
100static struct resource i2c_resources1[] = {
101 {
102 .start = 0,
103 .end = 0,
104 .flags = IORESOURCE_MEM,
105 },
106 {
107 .start = 0,
108 .flags = IORESOURCE_IRQ,
109 },
110};
111
112/* DMA not used; works around erratum writing to non-empty i2c fifo */
113
114static struct platform_device omap_i2c_device1 = {
115 .name = "i2c_omap",
116 .id = 1,
117 .num_resources = ARRAY_SIZE(i2c_resources1),
118 .resource = i2c_resources1,
119};
120
121/* See also arch/arm/mach-omap2/devices.c for second I2C on 24xx */
122static void omap_init_i2c(void)
123{
124 if (cpu_is_omap24xx()) {
125 i2c_resources1[0].start = OMAP2_I2C_BASE1;
126 i2c_resources1[0].end = OMAP2_I2C_BASE1 + OMAP_I2C_SIZE;
127 i2c_resources1[1].start = OMAP2_I2C_INT1;
128 } else {
129 i2c_resources1[0].start = OMAP1_I2C_BASE;
130 i2c_resources1[0].end = OMAP1_I2C_BASE + OMAP_I2C_SIZE;
131 i2c_resources1[1].start = OMAP1_I2C_INT;
132 }
133
134 /* FIXME define and use a boot tag, in case of boards that
135 * either don't wire up I2C, or chips that mux it differently...
136 * it can include clocking and address info, maybe more.
137 */
138 if (cpu_is_omap24xx()) {
139 omap_cfg_reg(M19_24XX_I2C1_SCL);
140 omap_cfg_reg(L15_24XX_I2C1_SDA);
141 } else {
142 omap_cfg_reg(I2C_SCL);
143 omap_cfg_reg(I2C_SDA);
144 }
145
146 (void) platform_device_register(&omap_i2c_device1);
147}
148
149#else
150static inline void omap_init_i2c(void) {}
151#endif
152
153/*-------------------------------------------------------------------------*/
154#if defined(CONFIG_KEYBOARD_OMAP) || defined(CONFIG_KEYBOARD_OMAP_MODULE) 92#if defined(CONFIG_KEYBOARD_OMAP) || defined(CONFIG_KEYBOARD_OMAP_MODULE)
155 93
156static void omap_init_kp(void) 94static void omap_init_kp(void)
@@ -501,7 +439,6 @@ static int __init omap_init_devices(void)
501 * in alphabetical order so they're easier to sort through. 439 * in alphabetical order so they're easier to sort through.
502 */ 440 */
503 omap_init_dsp(); 441 omap_init_dsp();
504 omap_init_i2c();
505 omap_init_kp(); 442 omap_init_kp();
506 omap_init_mmc(); 443 omap_init_mmc();
507 omap_init_uwire(); 444 omap_init_uwire();
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c
index a46676db8113..91004a3c4794 100644
--- a/arch/arm/plat-omap/dma.c
+++ b/arch/arm/plat-omap/dma.c
@@ -137,7 +137,7 @@ static void omap_disable_channel_irq(int lch);
137static inline void omap_enable_channel_irq(int lch); 137static inline void omap_enable_channel_irq(int lch);
138 138
139#define REVISIT_24XX() printk(KERN_ERR "FIXME: no %s on 24xx\n", \ 139#define REVISIT_24XX() printk(KERN_ERR "FIXME: no %s on 24xx\n", \
140 __FUNCTION__); 140 __func__);
141 141
142#ifdef CONFIG_ARCH_OMAP15XX 142#ifdef CONFIG_ARCH_OMAP15XX
143/* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */ 143/* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */
@@ -699,7 +699,7 @@ omap_dma_set_global_params(int arb_rate, int max_fifo_depth, int tparams)
699 u32 reg; 699 u32 reg;
700 700
701 if (!cpu_class_is_omap2()) { 701 if (!cpu_class_is_omap2()) {
702 printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __FUNCTION__); 702 printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __func__);
703 return; 703 return;
704 } 704 }
705 705
@@ -1705,14 +1705,8 @@ static int omap2_dma_handle_ch(int ch)
1705 status = OMAP_DMA_CSR_REG(ch); 1705 status = OMAP_DMA_CSR_REG(ch);
1706 } 1706 }
1707 1707
1708 if (likely(dma_chan[ch].callback != NULL)) { 1708 if (likely(dma_chan[ch].callback != NULL))
1709 if (dma_chan[ch].chain_id != -1) 1709 dma_chan[ch].callback(ch, status, dma_chan[ch].data);
1710 dma_chan[ch].callback(dma_chan[ch].chain_id, status,
1711 dma_chan[ch].data);
1712 else
1713 dma_chan[ch].callback(ch, status, dma_chan[ch].data);
1714
1715 }
1716 1710
1717 OMAP_DMA_CSR_REG(ch) = status; 1711 OMAP_DMA_CSR_REG(ch) = status;
1718 1712
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
index e719d0eeb5c8..302ad8dff2cb 100644
--- a/arch/arm/plat-omap/dmtimer.c
+++ b/arch/arm/plat-omap/dmtimer.c
@@ -268,7 +268,7 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id)
268 if (id <= 0 || id > dm_timer_count || dm_timers[id-1].reserved) { 268 if (id <= 0 || id > dm_timer_count || dm_timers[id-1].reserved) {
269 spin_unlock_irqrestore(&dm_timer_lock, flags); 269 spin_unlock_irqrestore(&dm_timer_lock, flags);
270 printk("BUG: warning at %s:%d/%s(): unable to get timer %d\n", 270 printk("BUG: warning at %s:%d/%s(): unable to get timer %d\n",
271 __FILE__, __LINE__, __FUNCTION__, id); 271 __FILE__, __LINE__, __func__, id);
272 dump_stack(); 272 dump_stack();
273 return NULL; 273 return NULL;
274 } 274 }
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index 56f4d1394d56..66a1455595f4 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -333,13 +333,14 @@ static void _set_gpio_direction(struct gpio_bank *bank, int gpio, int is_input)
333void omap_set_gpio_direction(int gpio, int is_input) 333void omap_set_gpio_direction(int gpio, int is_input)
334{ 334{
335 struct gpio_bank *bank; 335 struct gpio_bank *bank;
336 unsigned long flags;
336 337
337 if (check_gpio(gpio) < 0) 338 if (check_gpio(gpio) < 0)
338 return; 339 return;
339 bank = get_gpio_bank(gpio); 340 bank = get_gpio_bank(gpio);
340 spin_lock(&bank->lock); 341 spin_lock_irqsave(&bank->lock, flags);
341 _set_gpio_direction(bank, get_gpio_index(gpio), is_input); 342 _set_gpio_direction(bank, get_gpio_index(gpio), is_input);
342 spin_unlock(&bank->lock); 343 spin_unlock_irqrestore(&bank->lock, flags);
343} 344}
344 345
345static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable) 346static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
@@ -406,13 +407,14 @@ static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable)
406void omap_set_gpio_dataout(int gpio, int enable) 407void omap_set_gpio_dataout(int gpio, int enable)
407{ 408{
408 struct gpio_bank *bank; 409 struct gpio_bank *bank;
410 unsigned long flags;
409 411
410 if (check_gpio(gpio) < 0) 412 if (check_gpio(gpio) < 0)
411 return; 413 return;
412 bank = get_gpio_bank(gpio); 414 bank = get_gpio_bank(gpio);
413 spin_lock(&bank->lock); 415 spin_lock_irqsave(&bank->lock, flags);
414 _set_gpio_dataout(bank, get_gpio_index(gpio), enable); 416 _set_gpio_dataout(bank, get_gpio_index(gpio), enable);
415 spin_unlock(&bank->lock); 417 spin_unlock_irqrestore(&bank->lock, flags);
416} 418}
417 419
418int omap_get_gpio_datain(int gpio) 420int omap_get_gpio_datain(int gpio)
@@ -624,6 +626,7 @@ static int gpio_irq_type(unsigned irq, unsigned type)
624 struct gpio_bank *bank; 626 struct gpio_bank *bank;
625 unsigned gpio; 627 unsigned gpio;
626 int retval; 628 int retval;
629 unsigned long flags;
627 630
628 if (!cpu_class_is_omap2() && irq > IH_MPUIO_BASE) 631 if (!cpu_class_is_omap2() && irq > IH_MPUIO_BASE)
629 gpio = OMAP_MPUIO(irq - IH_MPUIO_BASE); 632 gpio = OMAP_MPUIO(irq - IH_MPUIO_BASE);
@@ -642,13 +645,13 @@ static int gpio_irq_type(unsigned irq, unsigned type)
642 return -EINVAL; 645 return -EINVAL;
643 646
644 bank = get_irq_chip_data(irq); 647 bank = get_irq_chip_data(irq);
645 spin_lock(&bank->lock); 648 spin_lock_irqsave(&bank->lock, flags);
646 retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type); 649 retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type);
647 if (retval == 0) { 650 if (retval == 0) {
648 irq_desc[irq].status &= ~IRQ_TYPE_SENSE_MASK; 651 irq_desc[irq].status &= ~IRQ_TYPE_SENSE_MASK;
649 irq_desc[irq].status |= type; 652 irq_desc[irq].status |= type;
650 } 653 }
651 spin_unlock(&bank->lock); 654 spin_unlock_irqrestore(&bank->lock, flags);
652 return retval; 655 return retval;
653} 656}
654 657
@@ -830,11 +833,13 @@ static inline void _set_gpio_irqenable(struct gpio_bank *bank, int gpio, int ena
830 */ 833 */
831static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) 834static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
832{ 835{
836 unsigned long flags;
837
833 switch (bank->method) { 838 switch (bank->method) {
834#ifdef CONFIG_ARCH_OMAP16XX 839#ifdef CONFIG_ARCH_OMAP16XX
835 case METHOD_MPUIO: 840 case METHOD_MPUIO:
836 case METHOD_GPIO_1610: 841 case METHOD_GPIO_1610:
837 spin_lock(&bank->lock); 842 spin_lock_irqsave(&bank->lock, flags);
838 if (enable) { 843 if (enable) {
839 bank->suspend_wakeup |= (1 << gpio); 844 bank->suspend_wakeup |= (1 << gpio);
840 enable_irq_wake(bank->irq); 845 enable_irq_wake(bank->irq);
@@ -842,7 +847,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
842 disable_irq_wake(bank->irq); 847 disable_irq_wake(bank->irq);
843 bank->suspend_wakeup &= ~(1 << gpio); 848 bank->suspend_wakeup &= ~(1 << gpio);
844 } 849 }
845 spin_unlock(&bank->lock); 850 spin_unlock_irqrestore(&bank->lock, flags);
846 return 0; 851 return 0;
847#endif 852#endif
848#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) 853#if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX)
@@ -853,7 +858,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
853 (bank - gpio_bank) * 32 + gpio); 858 (bank - gpio_bank) * 32 + gpio);
854 return -EINVAL; 859 return -EINVAL;
855 } 860 }
856 spin_lock(&bank->lock); 861 spin_lock_irqsave(&bank->lock, flags);
857 if (enable) { 862 if (enable) {
858 bank->suspend_wakeup |= (1 << gpio); 863 bank->suspend_wakeup |= (1 << gpio);
859 enable_irq_wake(bank->irq); 864 enable_irq_wake(bank->irq);
@@ -861,7 +866,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
861 disable_irq_wake(bank->irq); 866 disable_irq_wake(bank->irq);
862 bank->suspend_wakeup &= ~(1 << gpio); 867 bank->suspend_wakeup &= ~(1 << gpio);
863 } 868 }
864 spin_unlock(&bank->lock); 869 spin_unlock_irqrestore(&bank->lock, flags);
865 return 0; 870 return 0;
866#endif 871#endif
867 default: 872 default:
@@ -897,16 +902,17 @@ static int gpio_wake_enable(unsigned int irq, unsigned int enable)
897int omap_request_gpio(int gpio) 902int omap_request_gpio(int gpio)
898{ 903{
899 struct gpio_bank *bank; 904 struct gpio_bank *bank;
905 unsigned long flags;
900 906
901 if (check_gpio(gpio) < 0) 907 if (check_gpio(gpio) < 0)
902 return -EINVAL; 908 return -EINVAL;
903 909
904 bank = get_gpio_bank(gpio); 910 bank = get_gpio_bank(gpio);
905 spin_lock(&bank->lock); 911 spin_lock_irqsave(&bank->lock, flags);
906 if (unlikely(bank->reserved_map & (1 << get_gpio_index(gpio)))) { 912 if (unlikely(bank->reserved_map & (1 << get_gpio_index(gpio)))) {
907 printk(KERN_ERR "omap-gpio: GPIO %d is already reserved!\n", gpio); 913 printk(KERN_ERR "omap-gpio: GPIO %d is already reserved!\n", gpio);
908 dump_stack(); 914 dump_stack();
909 spin_unlock(&bank->lock); 915 spin_unlock_irqrestore(&bank->lock, flags);
910 return -1; 916 return -1;
911 } 917 }
912 bank->reserved_map |= (1 << get_gpio_index(gpio)); 918 bank->reserved_map |= (1 << get_gpio_index(gpio));
@@ -925,7 +931,7 @@ int omap_request_gpio(int gpio)
925 __raw_writel(__raw_readl(reg) | (1 << get_gpio_index(gpio)), reg); 931 __raw_writel(__raw_readl(reg) | (1 << get_gpio_index(gpio)), reg);
926 } 932 }
927#endif 933#endif
928 spin_unlock(&bank->lock); 934 spin_unlock_irqrestore(&bank->lock, flags);
929 935
930 return 0; 936 return 0;
931} 937}
@@ -933,15 +939,16 @@ int omap_request_gpio(int gpio)
933void omap_free_gpio(int gpio) 939void omap_free_gpio(int gpio)
934{ 940{
935 struct gpio_bank *bank; 941 struct gpio_bank *bank;
942 unsigned long flags;
936 943
937 if (check_gpio(gpio) < 0) 944 if (check_gpio(gpio) < 0)
938 return; 945 return;
939 bank = get_gpio_bank(gpio); 946 bank = get_gpio_bank(gpio);
940 spin_lock(&bank->lock); 947 spin_lock_irqsave(&bank->lock, flags);
941 if (unlikely(!(bank->reserved_map & (1 << get_gpio_index(gpio))))) { 948 if (unlikely(!(bank->reserved_map & (1 << get_gpio_index(gpio))))) {
942 printk(KERN_ERR "omap-gpio: GPIO %d wasn't reserved!\n", gpio); 949 printk(KERN_ERR "omap-gpio: GPIO %d wasn't reserved!\n", gpio);
943 dump_stack(); 950 dump_stack();
944 spin_unlock(&bank->lock); 951 spin_unlock_irqrestore(&bank->lock, flags);
945 return; 952 return;
946 } 953 }
947#ifdef CONFIG_ARCH_OMAP16XX 954#ifdef CONFIG_ARCH_OMAP16XX
@@ -960,7 +967,7 @@ void omap_free_gpio(int gpio)
960#endif 967#endif
961 bank->reserved_map &= ~(1 << get_gpio_index(gpio)); 968 bank->reserved_map &= ~(1 << get_gpio_index(gpio));
962 _reset_gpio(bank, gpio); 969 _reset_gpio(bank, gpio);
963 spin_unlock(&bank->lock); 970 spin_unlock_irqrestore(&bank->lock, flags);
964} 971}
965 972
966/* 973/*
@@ -1194,11 +1201,12 @@ static int omap_mpuio_suspend_late(struct platform_device *pdev, pm_message_t me
1194{ 1201{
1195 struct gpio_bank *bank = platform_get_drvdata(pdev); 1202 struct gpio_bank *bank = platform_get_drvdata(pdev);
1196 void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT; 1203 void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT;
1204 unsigned long flags;
1197 1205
1198 spin_lock(&bank->lock); 1206 spin_lock_irqsave(&bank->lock, flags);
1199 bank->saved_wakeup = __raw_readl(mask_reg); 1207 bank->saved_wakeup = __raw_readl(mask_reg);
1200 __raw_writel(0xffff & ~bank->suspend_wakeup, mask_reg); 1208 __raw_writel(0xffff & ~bank->suspend_wakeup, mask_reg);
1201 spin_unlock(&bank->lock); 1209 spin_unlock_irqrestore(&bank->lock, flags);
1202 1210
1203 return 0; 1211 return 0;
1204} 1212}
@@ -1207,10 +1215,11 @@ static int omap_mpuio_resume_early(struct platform_device *pdev)
1207{ 1215{
1208 struct gpio_bank *bank = platform_get_drvdata(pdev); 1216 struct gpio_bank *bank = platform_get_drvdata(pdev);
1209 void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT; 1217 void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT;
1218 unsigned long flags;
1210 1219
1211 spin_lock(&bank->lock); 1220 spin_lock_irqsave(&bank->lock, flags);
1212 __raw_writel(bank->saved_wakeup, mask_reg); 1221 __raw_writel(bank->saved_wakeup, mask_reg);
1213 spin_unlock(&bank->lock); 1222 spin_unlock_irqrestore(&bank->lock, flags);
1214 1223
1215 return 0; 1224 return 0;
1216} 1225}
@@ -1277,6 +1286,11 @@ static struct clk *gpio_fclks[OMAP34XX_NR_GPIOS];
1277static struct clk *gpio_iclks[OMAP34XX_NR_GPIOS]; 1286static struct clk *gpio_iclks[OMAP34XX_NR_GPIOS];
1278#endif 1287#endif
1279 1288
1289/* This lock class tells lockdep that GPIO irqs are in a different
1290 * category than their parents, so it won't report false recursion.
1291 */
1292static struct lock_class_key gpio_lock_class;
1293
1280static int __init _omap_gpio_init(void) 1294static int __init _omap_gpio_init(void)
1281{ 1295{
1282 int i; 1296 int i;
@@ -1450,6 +1464,7 @@ static int __init _omap_gpio_init(void)
1450#endif 1464#endif
1451 for (j = bank->virtual_irq_start; 1465 for (j = bank->virtual_irq_start;
1452 j < bank->virtual_irq_start + gpio_count; j++) { 1466 j < bank->virtual_irq_start + gpio_count; j++) {
1467 lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class);
1453 set_irq_chip_data(j, bank); 1468 set_irq_chip_data(j, bank);
1454 if (bank_is_mpuio(bank)) 1469 if (bank_is_mpuio(bank))
1455 set_irq_chip(j, &mpuio_irq_chip); 1470 set_irq_chip(j, &mpuio_irq_chip);
@@ -1489,6 +1504,7 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
1489 void __iomem *wake_status; 1504 void __iomem *wake_status;
1490 void __iomem *wake_clear; 1505 void __iomem *wake_clear;
1491 void __iomem *wake_set; 1506 void __iomem *wake_set;
1507 unsigned long flags;
1492 1508
1493 switch (bank->method) { 1509 switch (bank->method) {
1494#ifdef CONFIG_ARCH_OMAP16XX 1510#ifdef CONFIG_ARCH_OMAP16XX
@@ -1509,11 +1525,11 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg)
1509 continue; 1525 continue;
1510 } 1526 }
1511 1527
1512 spin_lock(&bank->lock); 1528 spin_lock_irqsave(&bank->lock, flags);
1513 bank->saved_wakeup = __raw_readl(wake_status); 1529 bank->saved_wakeup = __raw_readl(wake_status);
1514 __raw_writel(0xffffffff, wake_clear); 1530 __raw_writel(0xffffffff, wake_clear);
1515 __raw_writel(bank->suspend_wakeup, wake_set); 1531 __raw_writel(bank->suspend_wakeup, wake_set);
1516 spin_unlock(&bank->lock); 1532 spin_unlock_irqrestore(&bank->lock, flags);
1517 } 1533 }
1518 1534
1519 return 0; 1535 return 0;
@@ -1530,6 +1546,7 @@ static int omap_gpio_resume(struct sys_device *dev)
1530 struct gpio_bank *bank = &gpio_bank[i]; 1546 struct gpio_bank *bank = &gpio_bank[i];
1531 void __iomem *wake_clear; 1547 void __iomem *wake_clear;
1532 void __iomem *wake_set; 1548 void __iomem *wake_set;
1549 unsigned long flags;
1533 1550
1534 switch (bank->method) { 1551 switch (bank->method) {
1535#ifdef CONFIG_ARCH_OMAP16XX 1552#ifdef CONFIG_ARCH_OMAP16XX
@@ -1548,10 +1565,10 @@ static int omap_gpio_resume(struct sys_device *dev)
1548 continue; 1565 continue;
1549 } 1566 }
1550 1567
1551 spin_lock(&bank->lock); 1568 spin_lock_irqsave(&bank->lock, flags);
1552 __raw_writel(0xffffffff, wake_clear); 1569 __raw_writel(0xffffffff, wake_clear);
1553 __raw_writel(bank->saved_wakeup, wake_set); 1570 __raw_writel(bank->saved_wakeup, wake_set);
1554 spin_unlock(&bank->lock); 1571 spin_unlock_irqrestore(&bank->lock, flags);
1555 } 1572 }
1556 1573
1557 return 0; 1574 return 0;
diff --git a/arch/arm/plat-s3c24xx/dma.c b/arch/arm/plat-s3c24xx/dma.c
index ac9ff1666fcc..60f162dc4fad 100644
--- a/arch/arm/plat-s3c24xx/dma.c
+++ b/arch/arm/plat-s3c24xx/dma.c
@@ -130,8 +130,8 @@ dmadbg_showregs(const char *fname, int line, struct s3c2410_dma_chan *chan)
130 dmadbg_dumpregs(fname, line, chan, &state); 130 dmadbg_dumpregs(fname, line, chan, &state);
131} 131}
132 132
133#define dbg_showregs(chan) dmadbg_showregs(__FUNCTION__, __LINE__, (chan)) 133#define dbg_showregs(chan) dmadbg_showregs(__func__, __LINE__, (chan))
134#define dbg_showchan(chan) dmadbg_showchan(__FUNCTION__, __LINE__, (chan)) 134#define dbg_showchan(chan) dmadbg_showchan(__func__, __LINE__, (chan))
135#else 135#else
136#define dbg_showregs(chan) do { } while(0) 136#define dbg_showregs(chan) do { } while(0)
137#define dbg_showchan(chan) do { } while(0) 137#define dbg_showchan(chan) do { } while(0)
@@ -403,7 +403,7 @@ static int s3c2410_dma_start(struct s3c2410_dma_chan *chan)
403 403
404 if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { 404 if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
405 pr_debug("%s: buff not yet loaded, no more todo\n", 405 pr_debug("%s: buff not yet loaded, no more todo\n",
406 __FUNCTION__); 406 __func__);
407 } else { 407 } else {
408 chan->load_state = S3C2410_DMALOAD_1RUNNING; 408 chan->load_state = S3C2410_DMALOAD_1RUNNING;
409 s3c2410_dma_loadbuffer(chan, chan->next); 409 s3c2410_dma_loadbuffer(chan, chan->next);
@@ -463,16 +463,16 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
463 return -EINVAL; 463 return -EINVAL;
464 464
465 pr_debug("%s: id=%p, data=%08x, size=%d\n", 465 pr_debug("%s: id=%p, data=%08x, size=%d\n",
466 __FUNCTION__, id, (unsigned int)data, size); 466 __func__, id, (unsigned int)data, size);
467 467
468 buf = kmem_cache_alloc(dma_kmem, GFP_ATOMIC); 468 buf = kmem_cache_alloc(dma_kmem, GFP_ATOMIC);
469 if (buf == NULL) { 469 if (buf == NULL) {
470 pr_debug("%s: out of memory (%ld alloc)\n", 470 pr_debug("%s: out of memory (%ld alloc)\n",
471 __FUNCTION__, (long)sizeof(*buf)); 471 __func__, (long)sizeof(*buf));
472 return -ENOMEM; 472 return -ENOMEM;
473 } 473 }
474 474
475 //pr_debug("%s: new buffer %p\n", __FUNCTION__, buf); 475 //pr_debug("%s: new buffer %p\n", __func__, buf);
476 //dbg_showchan(chan); 476 //dbg_showchan(chan);
477 477
478 buf->next = NULL; 478 buf->next = NULL;
@@ -486,18 +486,18 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id,
486 if (chan->curr == NULL) { 486 if (chan->curr == NULL) {
487 /* we've got nothing loaded... */ 487 /* we've got nothing loaded... */
488 pr_debug("%s: buffer %p queued onto empty channel\n", 488 pr_debug("%s: buffer %p queued onto empty channel\n",
489 __FUNCTION__, buf); 489 __func__, buf);
490 490
491 chan->curr = buf; 491 chan->curr = buf;
492 chan->end = buf; 492 chan->end = buf;
493 chan->next = NULL; 493 chan->next = NULL;
494 } else { 494 } else {
495 pr_debug("dma%d: %s: buffer %p queued onto non-empty channel\n", 495 pr_debug("dma%d: %s: buffer %p queued onto non-empty channel\n",
496 chan->number, __FUNCTION__, buf); 496 chan->number, __func__, buf);
497 497
498 if (chan->end == NULL) 498 if (chan->end == NULL)
499 pr_debug("dma%d: %s: %p not empty, and chan->end==NULL?\n", 499 pr_debug("dma%d: %s: %p not empty, and chan->end==NULL?\n",
500 chan->number, __FUNCTION__, chan); 500 chan->number, __func__, chan);
501 501
502 chan->end->next = buf; 502 chan->end->next = buf;
503 chan->end = buf; 503 chan->end = buf;
@@ -572,7 +572,7 @@ s3c2410_dma_lastxfer(struct s3c2410_dma_chan *chan)
572 if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { 572 if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
573 /* flag error? */ 573 /* flag error? */
574 printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n", 574 printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n",
575 chan->number, __FUNCTION__); 575 chan->number, __func__);
576 return; 576 return;
577 } 577 }
578 break; 578 break;
@@ -658,7 +658,7 @@ s3c2410_dma_irq(int irq, void *devpw)
658 658
659 if (buf->magic != BUF_MAGIC) { 659 if (buf->magic != BUF_MAGIC) {
660 printk(KERN_ERR "dma%d: %s: buf %p incorrect magic\n", 660 printk(KERN_ERR "dma%d: %s: buf %p incorrect magic\n",
661 chan->number, __FUNCTION__, buf); 661 chan->number, __func__, buf);
662 return IRQ_HANDLED; 662 return IRQ_HANDLED;
663 } 663 }
664 664
@@ -692,7 +692,7 @@ s3c2410_dma_irq(int irq, void *devpw)
692 if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { 692 if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
693 /* flag error? */ 693 /* flag error? */
694 printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n", 694 printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n",
695 chan->number, __FUNCTION__); 695 chan->number, __func__);
696 return IRQ_HANDLED; 696 return IRQ_HANDLED;
697 } 697 }
698 698
@@ -759,7 +759,7 @@ int s3c2410_dma_request(unsigned int channel,
759 759
760 if (!chan->irq_claimed) { 760 if (!chan->irq_claimed) {
761 pr_debug("dma%d: %s : requesting irq %d\n", 761 pr_debug("dma%d: %s : requesting irq %d\n",
762 channel, __FUNCTION__, chan->irq); 762 channel, __func__, chan->irq);
763 763
764 chan->irq_claimed = 1; 764 chan->irq_claimed = 1;
765 local_irq_restore(flags); 765 local_irq_restore(flags);
@@ -786,7 +786,7 @@ int s3c2410_dma_request(unsigned int channel,
786 786
787 /* need to setup */ 787 /* need to setup */
788 788
789 pr_debug("%s: channel initialised, %p\n", __FUNCTION__, chan); 789 pr_debug("%s: channel initialised, %p\n", __func__, chan);
790 790
791 return chan->number | DMACH_LOW_LEVEL; 791 return chan->number | DMACH_LOW_LEVEL;
792} 792}
@@ -823,7 +823,7 @@ int s3c2410_dma_free(dmach_t channel, struct s3c2410_dma_client *client)
823 823
824 if (chan->state != S3C2410_DMA_IDLE) { 824 if (chan->state != S3C2410_DMA_IDLE) {
825 pr_debug("%s: need to stop dma channel %p\n", 825 pr_debug("%s: need to stop dma channel %p\n",
826 __FUNCTION__, chan); 826 __func__, chan);
827 827
828 /* possibly flush the channel */ 828 /* possibly flush the channel */
829 s3c2410_dma_ctrl(channel, S3C2410_DMAOP_STOP); 829 s3c2410_dma_ctrl(channel, S3C2410_DMAOP_STOP);
@@ -852,7 +852,7 @@ static int s3c2410_dma_dostop(struct s3c2410_dma_chan *chan)
852 unsigned long flags; 852 unsigned long flags;
853 unsigned long tmp; 853 unsigned long tmp;
854 854
855 pr_debug("%s:\n", __FUNCTION__); 855 pr_debug("%s:\n", __func__);
856 856
857 dbg_showchan(chan); 857 dbg_showchan(chan);
858 858
@@ -907,14 +907,14 @@ static int s3c2410_dma_flush(struct s3c2410_dma_chan *chan)
907 struct s3c2410_dma_buf *buf, *next; 907 struct s3c2410_dma_buf *buf, *next;
908 unsigned long flags; 908 unsigned long flags;
909 909
910 pr_debug("%s: chan %p (%d)\n", __FUNCTION__, chan, chan->number); 910 pr_debug("%s: chan %p (%d)\n", __func__, chan, chan->number);
911 911
912 dbg_showchan(chan); 912 dbg_showchan(chan);
913 913
914 local_irq_save(flags); 914 local_irq_save(flags);
915 915
916 if (chan->state != S3C2410_DMA_IDLE) { 916 if (chan->state != S3C2410_DMA_IDLE) {
917 pr_debug("%s: stopping channel...\n", __FUNCTION__ ); 917 pr_debug("%s: stopping channel...\n", __func__ );
918 s3c2410_dma_ctrl(chan->number, S3C2410_DMAOP_STOP); 918 s3c2410_dma_ctrl(chan->number, S3C2410_DMAOP_STOP);
919 } 919 }
920 920
@@ -929,7 +929,7 @@ static int s3c2410_dma_flush(struct s3c2410_dma_chan *chan)
929 next = buf->next; 929 next = buf->next;
930 930
931 pr_debug("%s: free buffer %p, next %p\n", 931 pr_debug("%s: free buffer %p, next %p\n",
932 __FUNCTION__, buf, buf->next); 932 __func__, buf, buf->next);
933 933
934 s3c2410_dma_buffdone(chan, buf, S3C2410_RES_ABORT); 934 s3c2410_dma_buffdone(chan, buf, S3C2410_RES_ABORT);
935 s3c2410_dma_freebuf(buf); 935 s3c2410_dma_freebuf(buf);
@@ -976,7 +976,7 @@ static int s3c2410_dma_started(struct s3c2410_dma_chan *chan)
976 976
977 if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { 977 if (s3c2410_dma_waitforload(chan, __LINE__) == 0) {
978 pr_debug("%s: buff not yet loaded, no more todo\n", 978 pr_debug("%s: buff not yet loaded, no more todo\n",
979 __FUNCTION__); 979 __func__);
980 } else { 980 } else {
981 chan->load_state = S3C2410_DMALOAD_1RUNNING; 981 chan->load_state = S3C2410_DMALOAD_1RUNNING;
982 s3c2410_dma_loadbuffer(chan, chan->next); 982 s3c2410_dma_loadbuffer(chan, chan->next);
@@ -1050,16 +1050,16 @@ int s3c2410_dma_config(dmach_t channel,
1050 struct s3c2410_dma_chan *chan = lookup_dma_channel(channel); 1050 struct s3c2410_dma_chan *chan = lookup_dma_channel(channel);
1051 1051
1052 pr_debug("%s: chan=%d, xfer_unit=%d, dcon=%08x\n", 1052 pr_debug("%s: chan=%d, xfer_unit=%d, dcon=%08x\n",
1053 __FUNCTION__, channel, xferunit, dcon); 1053 __func__, channel, xferunit, dcon);
1054 1054
1055 if (chan == NULL) 1055 if (chan == NULL)
1056 return -EINVAL; 1056 return -EINVAL;
1057 1057
1058 pr_debug("%s: Initial dcon is %08x\n", __FUNCTION__, dcon); 1058 pr_debug("%s: Initial dcon is %08x\n", __func__, dcon);
1059 1059
1060 dcon |= chan->dcon & dma_sel.dcon_mask; 1060 dcon |= chan->dcon & dma_sel.dcon_mask;
1061 1061
1062 pr_debug("%s: New dcon is %08x\n", __FUNCTION__, dcon); 1062 pr_debug("%s: New dcon is %08x\n", __func__, dcon);
1063 1063
1064 switch (xferunit) { 1064 switch (xferunit) {
1065 case 1: 1065 case 1:
@@ -1075,14 +1075,14 @@ int s3c2410_dma_config(dmach_t channel,
1075 break; 1075 break;
1076 1076
1077 default: 1077 default:
1078 pr_debug("%s: bad transfer size %d\n", __FUNCTION__, xferunit); 1078 pr_debug("%s: bad transfer size %d\n", __func__, xferunit);
1079 return -EINVAL; 1079 return -EINVAL;
1080 } 1080 }
1081 1081
1082 dcon |= S3C2410_DCON_HWTRIG; 1082 dcon |= S3C2410_DCON_HWTRIG;
1083 dcon |= S3C2410_DCON_INTREQ; 1083 dcon |= S3C2410_DCON_INTREQ;
1084 1084
1085 pr_debug("%s: dcon now %08x\n", __FUNCTION__, dcon); 1085 pr_debug("%s: dcon now %08x\n", __func__, dcon);
1086 1086
1087 chan->dcon = dcon; 1087 chan->dcon = dcon;
1088 chan->xfer_unit = xferunit; 1088 chan->xfer_unit = xferunit;
@@ -1099,7 +1099,7 @@ int s3c2410_dma_setflags(dmach_t channel, unsigned int flags)
1099 if (chan == NULL) 1099 if (chan == NULL)
1100 return -EINVAL; 1100 return -EINVAL;
1101 1101
1102 pr_debug("%s: chan=%p, flags=%08x\n", __FUNCTION__, chan, flags); 1102 pr_debug("%s: chan=%p, flags=%08x\n", __func__, chan, flags);
1103 1103
1104 chan->flags = flags; 1104 chan->flags = flags;
1105 1105
@@ -1120,7 +1120,7 @@ int s3c2410_dma_set_opfn(dmach_t channel, s3c2410_dma_opfn_t rtn)
1120 if (chan == NULL) 1120 if (chan == NULL)
1121 return -EINVAL; 1121 return -EINVAL;
1122 1122
1123 pr_debug("%s: chan=%p, op rtn=%p\n", __FUNCTION__, chan, rtn); 1123 pr_debug("%s: chan=%p, op rtn=%p\n", __func__, chan, rtn);
1124 1124
1125 chan->op_fn = rtn; 1125 chan->op_fn = rtn;
1126 1126
@@ -1136,7 +1136,7 @@ int s3c2410_dma_set_buffdone_fn(dmach_t channel, s3c2410_dma_cbfn_t rtn)
1136 if (chan == NULL) 1136 if (chan == NULL)
1137 return -EINVAL; 1137 return -EINVAL;
1138 1138
1139 pr_debug("%s: chan=%p, callback rtn=%p\n", __FUNCTION__, chan, rtn); 1139 pr_debug("%s: chan=%p, callback rtn=%p\n", __func__, chan, rtn);
1140 1140
1141 chan->callback_fn = rtn; 1141 chan->callback_fn = rtn;
1142 1142
@@ -1170,7 +1170,7 @@ int s3c2410_dma_devconfig(int channel,
1170 return -EINVAL; 1170 return -EINVAL;
1171 1171
1172 pr_debug("%s: source=%d, hwcfg=%08x, devaddr=%08lx\n", 1172 pr_debug("%s: source=%d, hwcfg=%08x, devaddr=%08lx\n",
1173 __FUNCTION__, (int)source, hwcfg, devaddr); 1173 __func__, (int)source, hwcfg, devaddr);
1174 1174
1175 chan->source = source; 1175 chan->source = source;
1176 chan->dev_addr = devaddr; 1176 chan->dev_addr = devaddr;
@@ -1180,7 +1180,7 @@ int s3c2410_dma_devconfig(int channel,
1180 case S3C2410_DMASRC_HW: 1180 case S3C2410_DMASRC_HW:
1181 /* source is hardware */ 1181 /* source is hardware */
1182 pr_debug("%s: hw source, devaddr=%08lx, hwcfg=%d\n", 1182 pr_debug("%s: hw source, devaddr=%08lx, hwcfg=%d\n",
1183 __FUNCTION__, devaddr, hwcfg); 1183 __func__, devaddr, hwcfg);
1184 dma_wrreg(chan, S3C2410_DMA_DISRCC, hwcfg & 3); 1184 dma_wrreg(chan, S3C2410_DMA_DISRCC, hwcfg & 3);
1185 dma_wrreg(chan, S3C2410_DMA_DISRC, devaddr); 1185 dma_wrreg(chan, S3C2410_DMA_DISRC, devaddr);
1186 dma_wrreg(chan, S3C2410_DMA_DIDSTC, (0<<1) | (0<<0)); 1186 dma_wrreg(chan, S3C2410_DMA_DIDSTC, (0<<1) | (0<<0));
@@ -1190,8 +1190,8 @@ int s3c2410_dma_devconfig(int channel,
1190 1190
1191 case S3C2410_DMASRC_MEM: 1191 case S3C2410_DMASRC_MEM:
1192 /* source is memory */ 1192 /* source is memory */
1193 pr_debug( "%s: mem source, devaddr=%08lx, hwcfg=%d\n", 1193 pr_debug("%s: mem source, devaddr=%08lx, hwcfg=%d\n",
1194 __FUNCTION__, devaddr, hwcfg); 1194 __func__, devaddr, hwcfg);
1195 dma_wrreg(chan, S3C2410_DMA_DISRCC, (0<<1) | (0<<0)); 1195 dma_wrreg(chan, S3C2410_DMA_DISRCC, (0<<1) | (0<<0));
1196 dma_wrreg(chan, S3C2410_DMA_DIDST, devaddr); 1196 dma_wrreg(chan, S3C2410_DMA_DIDST, devaddr);
1197 dma_wrreg(chan, S3C2410_DMA_DIDSTC, hwcfg & 3); 1197 dma_wrreg(chan, S3C2410_DMA_DIDSTC, hwcfg & 3);
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index ade230d445d9..8724ed3298d3 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1824,7 +1824,7 @@ choice
1824 Allows the configuration of the timer frequency. 1824 Allows the configuration of the timer frequency.
1825 1825
1826 config HZ_48 1826 config HZ_48
1827 bool "48 HZ" if SYS_SUPPORTS_48HZ 1827 bool "48 HZ" if SYS_SUPPORTS_48HZ || SYS_SUPPORTS_ARBIT_HZ
1828 1828
1829 config HZ_100 1829 config HZ_100
1830 bool "100 HZ" if SYS_SUPPORTS_100HZ || SYS_SUPPORTS_ARBIT_HZ 1830 bool "100 HZ" if SYS_SUPPORTS_100HZ || SYS_SUPPORTS_ARBIT_HZ
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 3fb7f3065c92..72097dacabd3 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -12,6 +12,8 @@
12# for "archclean" cleaning up for this architecture. 12# for "archclean" cleaning up for this architecture.
13# 13#
14 14
15KBUILD_DEFCONFIG := ip22_defconfig
16
15cflags-y := 17cflags-y :=
16 18
17# 19#
diff --git a/arch/mips/au1000/common/dbdma.c b/arch/mips/au1000/common/dbdma.c
index 428ed275a0f6..57f17b41098d 100644
--- a/arch/mips/au1000/common/dbdma.c
+++ b/arch/mips/au1000/common/dbdma.c
@@ -161,22 +161,22 @@ static dbdev_tab_t dbdev_tab[] = {
161 { DSCR_CMD0_ALWAYS, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 }, 161 { DSCR_CMD0_ALWAYS, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 },
162 162
163 /* Provide 16 user definable device types */ 163 /* Provide 16 user definable device types */
164 { 0, 0, 0, 0, 0, 0, 0 }, 164 { ~0, 0, 0, 0, 0, 0, 0 },
165 { 0, 0, 0, 0, 0, 0, 0 }, 165 { ~0, 0, 0, 0, 0, 0, 0 },
166 { 0, 0, 0, 0, 0, 0, 0 }, 166 { ~0, 0, 0, 0, 0, 0, 0 },
167 { 0, 0, 0, 0, 0, 0, 0 }, 167 { ~0, 0, 0, 0, 0, 0, 0 },
168 { 0, 0, 0, 0, 0, 0, 0 }, 168 { ~0, 0, 0, 0, 0, 0, 0 },
169 { 0, 0, 0, 0, 0, 0, 0 }, 169 { ~0, 0, 0, 0, 0, 0, 0 },
170 { 0, 0, 0, 0, 0, 0, 0 }, 170 { ~0, 0, 0, 0, 0, 0, 0 },
171 { 0, 0, 0, 0, 0, 0, 0 }, 171 { ~0, 0, 0, 0, 0, 0, 0 },
172 { 0, 0, 0, 0, 0, 0, 0 }, 172 { ~0, 0, 0, 0, 0, 0, 0 },
173 { 0, 0, 0, 0, 0, 0, 0 }, 173 { ~0, 0, 0, 0, 0, 0, 0 },
174 { 0, 0, 0, 0, 0, 0, 0 }, 174 { ~0, 0, 0, 0, 0, 0, 0 },
175 { 0, 0, 0, 0, 0, 0, 0 }, 175 { ~0, 0, 0, 0, 0, 0, 0 },
176 { 0, 0, 0, 0, 0, 0, 0 }, 176 { ~0, 0, 0, 0, 0, 0, 0 },
177 { 0, 0, 0, 0, 0, 0, 0 }, 177 { ~0, 0, 0, 0, 0, 0, 0 },
178 { 0, 0, 0, 0, 0, 0, 0 }, 178 { ~0, 0, 0, 0, 0, 0, 0 },
179 { 0, 0, 0, 0, 0, 0, 0 }, 179 { ~0, 0, 0, 0, 0, 0, 0 },
180}; 180};
181 181
182#define DBDEV_TAB_SIZE ARRAY_SIZE(dbdev_tab) 182#define DBDEV_TAB_SIZE ARRAY_SIZE(dbdev_tab)
@@ -209,7 +209,7 @@ au1xxx_ddma_add_device(dbdev_tab_t *dev)
209 dbdev_tab_t *p=NULL; 209 dbdev_tab_t *p=NULL;
210 static u16 new_id=0x1000; 210 static u16 new_id=0x1000;
211 211
212 p = find_dbdev_id(0); 212 p = find_dbdev_id(~0);
213 if ( NULL != p ) 213 if ( NULL != p )
214 { 214 {
215 memcpy(p, dev, sizeof(dbdev_tab_t)); 215 memcpy(p, dev, sizeof(dbdev_tab_t));
diff --git a/arch/mips/defconfig b/arch/mips/defconfig
deleted file mode 100644
index 4f5e56c9335e..000000000000
--- a/arch/mips/defconfig
+++ /dev/null
@@ -1,1158 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc2
4# Tue Aug 7 12:39:49 2007
5#
6CONFIG_MIPS=y
7
8#
9# Machine selection
10#
11CONFIG_ZONE_DMA=y
12# CONFIG_MACH_ALCHEMY is not set
13# CONFIG_BASLER_EXCITE is not set
14# CONFIG_MIPS_COBALT is not set
15# CONFIG_MACH_DECSTATION is not set
16# CONFIG_MACH_JAZZ is not set
17# CONFIG_LEMOTE_FULONG is not set
18# CONFIG_MIPS_ATLAS is not set
19# CONFIG_MIPS_MALTA is not set
20# CONFIG_MIPS_SEAD is not set
21# CONFIG_MIPS_SIM is not set
22# CONFIG_MARKEINS is not set
23# CONFIG_MACH_VR41XX is not set
24# CONFIG_PNX8550_JBS is not set
25# CONFIG_PNX8550_STB810 is not set
26# CONFIG_PMC_MSP is not set
27# CONFIG_PMC_YOSEMITE is not set
28CONFIG_SGI_IP22=y
29# CONFIG_SGI_IP27 is not set
30# CONFIG_SGI_IP32 is not set
31# CONFIG_SIBYTE_CRHINE is not set
32# CONFIG_SIBYTE_CARMEL is not set
33# CONFIG_SIBYTE_CRHONE is not set
34# CONFIG_SIBYTE_RHONE is not set
35# CONFIG_SIBYTE_SWARM is not set
36# CONFIG_SIBYTE_LITTLESUR is not set
37# CONFIG_SIBYTE_SENTOSA is not set
38# CONFIG_SIBYTE_BIGSUR is not set
39# CONFIG_SNI_RM is not set
40# CONFIG_TOSHIBA_JMR3927 is not set
41# CONFIG_TOSHIBA_RBTX4927 is not set
42# CONFIG_TOSHIBA_RBTX4938 is not set
43# CONFIG_WR_PPMC is not set
44CONFIG_RWSEM_GENERIC_SPINLOCK=y
45# CONFIG_ARCH_HAS_ILOG2_U32 is not set
46# CONFIG_ARCH_HAS_ILOG2_U64 is not set
47CONFIG_GENERIC_FIND_NEXT_BIT=y
48CONFIG_GENERIC_HWEIGHT=y
49CONFIG_GENERIC_CALIBRATE_DELAY=y
50CONFIG_GENERIC_TIME=y
51CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
52# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
53CONFIG_ARC=y
54CONFIG_DMA_NONCOHERENT=y
55CONFIG_DMA_NEED_PCI_MAP_STATE=y
56CONFIG_EARLY_PRINTK=y
57CONFIG_SYS_HAS_EARLY_PRINTK=y
58# CONFIG_NO_IOPORT is not set
59CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y
60CONFIG_CPU_BIG_ENDIAN=y
61# CONFIG_CPU_LITTLE_ENDIAN is not set
62CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y
63CONFIG_IRQ_CPU=y
64CONFIG_SWAP_IO_SPACE=y
65CONFIG_ARC32=y
66CONFIG_BOOT_ELF32=y
67CONFIG_MIPS_L1_CACHE_SHIFT=5
68CONFIG_ARC_CONSOLE=y
69CONFIG_ARC_PROMLIB=y
70
71#
72# CPU selection
73#
74# CONFIG_CPU_LOONGSON2 is not set
75# CONFIG_CPU_MIPS32_R1 is not set
76# CONFIG_CPU_MIPS32_R2 is not set
77# CONFIG_CPU_MIPS64_R1 is not set
78# CONFIG_CPU_MIPS64_R2 is not set
79# CONFIG_CPU_R3000 is not set
80# CONFIG_CPU_TX39XX is not set
81# CONFIG_CPU_VR41XX is not set
82# CONFIG_CPU_R4300 is not set
83# CONFIG_CPU_R4X00 is not set
84# CONFIG_CPU_TX49XX is not set
85CONFIG_CPU_R5000=y
86# CONFIG_CPU_R5432 is not set
87# CONFIG_CPU_R6000 is not set
88# CONFIG_CPU_NEVADA is not set
89# CONFIG_CPU_R8000 is not set
90# CONFIG_CPU_R10000 is not set
91# CONFIG_CPU_RM7000 is not set
92# CONFIG_CPU_RM9000 is not set
93# CONFIG_CPU_SB1 is not set
94CONFIG_SYS_HAS_CPU_R4X00=y
95CONFIG_SYS_HAS_CPU_R5000=y
96CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
97CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y
98CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y
99CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
100
101#
102# Kernel type
103#
104CONFIG_32BIT=y
105# CONFIG_64BIT is not set
106CONFIG_PAGE_SIZE_4KB=y
107# CONFIG_PAGE_SIZE_8KB is not set
108# CONFIG_PAGE_SIZE_16KB is not set
109# CONFIG_PAGE_SIZE_64KB is not set
110CONFIG_BOARD_SCACHE=y
111CONFIG_IP22_CPU_SCACHE=y
112CONFIG_MIPS_MT_DISABLED=y
113# CONFIG_MIPS_MT_SMP is not set
114# CONFIG_MIPS_MT_SMTC is not set
115CONFIG_CPU_HAS_LLSC=y
116CONFIG_CPU_HAS_SYNC=y
117CONFIG_GENERIC_HARDIRQS=y
118CONFIG_GENERIC_IRQ_PROBE=y
119CONFIG_ARCH_FLATMEM_ENABLE=y
120CONFIG_SELECT_MEMORY_MODEL=y
121CONFIG_FLATMEM_MANUAL=y
122# CONFIG_DISCONTIGMEM_MANUAL is not set
123# CONFIG_SPARSEMEM_MANUAL is not set
124CONFIG_FLATMEM=y
125CONFIG_FLAT_NODE_MEM_MAP=y
126# CONFIG_SPARSEMEM_STATIC is not set
127CONFIG_SPLIT_PTLOCK_CPUS=4
128# CONFIG_RESOURCES_64BIT is not set
129CONFIG_ZONE_DMA_FLAG=1
130CONFIG_BOUNCE=y
131CONFIG_VIRT_TO_BUS=y
132# CONFIG_HZ_48 is not set
133# CONFIG_HZ_100 is not set
134# CONFIG_HZ_128 is not set
135# CONFIG_HZ_250 is not set
136# CONFIG_HZ_256 is not set
137CONFIG_HZ_1000=y
138# CONFIG_HZ_1024 is not set
139CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
140CONFIG_HZ=1000
141# CONFIG_PREEMPT_NONE is not set
142CONFIG_PREEMPT_VOLUNTARY=y
143# CONFIG_PREEMPT is not set
144# CONFIG_KEXEC is not set
145CONFIG_SECCOMP=y
146CONFIG_LOCKDEP_SUPPORT=y
147CONFIG_STACKTRACE_SUPPORT=y
148CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
149
150#
151# General setup
152#
153CONFIG_EXPERIMENTAL=y
154CONFIG_BROKEN_ON_SMP=y
155CONFIG_INIT_ENV_ARG_LIMIT=32
156CONFIG_LOCALVERSION=""
157CONFIG_LOCALVERSION_AUTO=y
158CONFIG_SWAP=y
159CONFIG_SYSVIPC=y
160CONFIG_SYSVIPC_SYSCTL=y
161# CONFIG_POSIX_MQUEUE is not set
162# CONFIG_BSD_PROCESS_ACCT is not set
163# CONFIG_TASKSTATS is not set
164# CONFIG_USER_NS is not set
165# CONFIG_AUDIT is not set
166CONFIG_IKCONFIG=y
167CONFIG_IKCONFIG_PROC=y
168CONFIG_LOG_BUF_SHIFT=14
169CONFIG_SYSFS_DEPRECATED=y
170CONFIG_RELAY=y
171# CONFIG_BLK_DEV_INITRD is not set
172# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
173CONFIG_SYSCTL=y
174CONFIG_EMBEDDED=y
175CONFIG_SYSCTL_SYSCALL=y
176CONFIG_KALLSYMS=y
177# CONFIG_KALLSYMS_EXTRA_PASS is not set
178# CONFIG_HOTPLUG is not set
179CONFIG_PRINTK=y
180CONFIG_BUG=y
181CONFIG_ELF_CORE=y
182CONFIG_BASE_FULL=y
183CONFIG_FUTEX=y
184CONFIG_ANON_INODES=y
185CONFIG_EPOLL=y
186CONFIG_SIGNALFD=y
187CONFIG_TIMERFD=y
188CONFIG_EVENTFD=y
189CONFIG_SHMEM=y
190CONFIG_VM_EVENT_COUNTERS=y
191CONFIG_SLAB=y
192# CONFIG_SLUB is not set
193# CONFIG_SLOB is not set
194CONFIG_RT_MUTEXES=y
195# CONFIG_TINY_SHMEM is not set
196CONFIG_BASE_SMALL=0
197CONFIG_MODULES=y
198CONFIG_MODULE_UNLOAD=y
199# CONFIG_MODULE_FORCE_UNLOAD is not set
200CONFIG_MODVERSIONS=y
201CONFIG_MODULE_SRCVERSION_ALL=y
202CONFIG_KMOD=y
203CONFIG_BLOCK=y
204# CONFIG_LBD is not set
205# CONFIG_BLK_DEV_IO_TRACE is not set
206# CONFIG_LSF is not set
207# CONFIG_BLK_DEV_BSG is not set
208
209#
210# IO Schedulers
211#
212CONFIG_IOSCHED_NOOP=y
213CONFIG_IOSCHED_AS=y
214CONFIG_IOSCHED_DEADLINE=y
215CONFIG_IOSCHED_CFQ=y
216CONFIG_DEFAULT_AS=y
217# CONFIG_DEFAULT_DEADLINE is not set
218# CONFIG_DEFAULT_CFQ is not set
219# CONFIG_DEFAULT_NOOP is not set
220CONFIG_DEFAULT_IOSCHED="anticipatory"
221
222#
223# Bus options (PCI, PCMCIA, EISA, ISA, TC)
224#
225CONFIG_HW_HAS_EISA=y
226# CONFIG_ARCH_SUPPORTS_MSI is not set
227# CONFIG_EISA is not set
228CONFIG_MMU=y
229
230#
231# PCCARD (PCMCIA/CardBus) support
232#
233
234#
235# Executable file formats
236#
237CONFIG_BINFMT_ELF=y
238CONFIG_BINFMT_MISC=m
239CONFIG_TRAD_SIGNALS=y
240
241#
242# Power management options
243#
244CONFIG_PM=y
245# CONFIG_PM_LEGACY is not set
246# CONFIG_PM_DEBUG is not set
247# CONFIG_SUSPEND is not set
248
249#
250# Networking
251#
252CONFIG_NET=y
253
254#
255# Networking options
256#
257CONFIG_PACKET=y
258CONFIG_PACKET_MMAP=y
259CONFIG_UNIX=y
260CONFIG_XFRM=y
261CONFIG_XFRM_USER=m
262# CONFIG_XFRM_SUB_POLICY is not set
263CONFIG_XFRM_MIGRATE=y
264CONFIG_NET_KEY=y
265CONFIG_NET_KEY_MIGRATE=y
266CONFIG_INET=y
267CONFIG_IP_MULTICAST=y
268# CONFIG_IP_ADVANCED_ROUTER is not set
269CONFIG_IP_FIB_HASH=y
270CONFIG_IP_PNP=y
271# CONFIG_IP_PNP_DHCP is not set
272CONFIG_IP_PNP_BOOTP=y
273# CONFIG_IP_PNP_RARP is not set
274# CONFIG_NET_IPIP is not set
275# CONFIG_NET_IPGRE is not set
276# CONFIG_IP_MROUTE is not set
277# CONFIG_ARPD is not set
278# CONFIG_SYN_COOKIES is not set
279CONFIG_INET_AH=m
280CONFIG_INET_ESP=m
281CONFIG_INET_IPCOMP=m
282CONFIG_INET_XFRM_TUNNEL=m
283CONFIG_INET_TUNNEL=m
284CONFIG_INET_XFRM_MODE_TRANSPORT=m
285CONFIG_INET_XFRM_MODE_TUNNEL=m
286CONFIG_INET_XFRM_MODE_BEET=m
287CONFIG_INET_DIAG=y
288CONFIG_INET_TCP_DIAG=y
289# CONFIG_TCP_CONG_ADVANCED is not set
290CONFIG_TCP_CONG_CUBIC=y
291CONFIG_DEFAULT_TCP_CONG="cubic"
292CONFIG_TCP_MD5SIG=y
293CONFIG_IP_VS=m
294# CONFIG_IP_VS_DEBUG is not set
295CONFIG_IP_VS_TAB_BITS=12
296
297#
298# IPVS transport protocol load balancing support
299#
300CONFIG_IP_VS_PROTO_TCP=y
301CONFIG_IP_VS_PROTO_UDP=y
302CONFIG_IP_VS_PROTO_ESP=y
303CONFIG_IP_VS_PROTO_AH=y
304
305#
306# IPVS scheduler
307#
308CONFIG_IP_VS_RR=m
309CONFIG_IP_VS_WRR=m
310CONFIG_IP_VS_LC=m
311CONFIG_IP_VS_WLC=m
312CONFIG_IP_VS_LBLC=m
313CONFIG_IP_VS_LBLCR=m
314CONFIG_IP_VS_DH=m
315CONFIG_IP_VS_SH=m
316CONFIG_IP_VS_SED=m
317CONFIG_IP_VS_NQ=m
318
319#
320# IPVS application helper
321#
322CONFIG_IP_VS_FTP=m
323CONFIG_IPV6=m
324CONFIG_IPV6_PRIVACY=y
325CONFIG_IPV6_ROUTER_PREF=y
326CONFIG_IPV6_ROUTE_INFO=y
327CONFIG_IPV6_OPTIMISTIC_DAD=y
328CONFIG_INET6_AH=m
329CONFIG_INET6_ESP=m
330CONFIG_INET6_IPCOMP=m
331CONFIG_IPV6_MIP6=m
332CONFIG_INET6_XFRM_TUNNEL=m
333CONFIG_INET6_TUNNEL=m
334CONFIG_INET6_XFRM_MODE_TRANSPORT=m
335CONFIG_INET6_XFRM_MODE_TUNNEL=m
336CONFIG_INET6_XFRM_MODE_BEET=m
337CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
338CONFIG_IPV6_SIT=m
339CONFIG_IPV6_TUNNEL=m
340CONFIG_IPV6_MULTIPLE_TABLES=y
341CONFIG_IPV6_SUBTREES=y
342CONFIG_NETWORK_SECMARK=y
343CONFIG_NETFILTER=y
344# CONFIG_NETFILTER_DEBUG is not set
345
346#
347# Core Netfilter Configuration
348#
349CONFIG_NETFILTER_NETLINK=m
350CONFIG_NETFILTER_NETLINK_QUEUE=m
351CONFIG_NETFILTER_NETLINK_LOG=m
352CONFIG_NF_CONNTRACK_ENABLED=m
353CONFIG_NF_CONNTRACK=m
354CONFIG_NF_CT_ACCT=y
355CONFIG_NF_CONNTRACK_MARK=y
356CONFIG_NF_CONNTRACK_SECMARK=y
357CONFIG_NF_CONNTRACK_EVENTS=y
358CONFIG_NF_CT_PROTO_GRE=m
359CONFIG_NF_CT_PROTO_SCTP=m
360CONFIG_NF_CT_PROTO_UDPLITE=m
361CONFIG_NF_CONNTRACK_AMANDA=m
362CONFIG_NF_CONNTRACK_FTP=m
363CONFIG_NF_CONNTRACK_H323=m
364CONFIG_NF_CONNTRACK_IRC=m
365# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
366CONFIG_NF_CONNTRACK_PPTP=m
367CONFIG_NF_CONNTRACK_SANE=m
368CONFIG_NF_CONNTRACK_SIP=m
369CONFIG_NF_CONNTRACK_TFTP=m
370CONFIG_NF_CT_NETLINK=m
371CONFIG_NETFILTER_XTABLES=m
372CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
373CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
374CONFIG_NETFILTER_XT_TARGET_DSCP=m
375CONFIG_NETFILTER_XT_TARGET_MARK=m
376CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
377CONFIG_NETFILTER_XT_TARGET_NFLOG=m
378CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
379CONFIG_NETFILTER_XT_TARGET_TRACE=m
380CONFIG_NETFILTER_XT_TARGET_SECMARK=m
381CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m
382CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
383CONFIG_NETFILTER_XT_MATCH_COMMENT=m
384CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
385CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
386CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
387CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
388CONFIG_NETFILTER_XT_MATCH_DCCP=m
389CONFIG_NETFILTER_XT_MATCH_DSCP=m
390CONFIG_NETFILTER_XT_MATCH_ESP=m
391CONFIG_NETFILTER_XT_MATCH_HELPER=m
392CONFIG_NETFILTER_XT_MATCH_LENGTH=m
393CONFIG_NETFILTER_XT_MATCH_LIMIT=m
394CONFIG_NETFILTER_XT_MATCH_MAC=m
395CONFIG_NETFILTER_XT_MATCH_MARK=m
396CONFIG_NETFILTER_XT_MATCH_POLICY=m
397CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
398CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
399CONFIG_NETFILTER_XT_MATCH_QUOTA=m
400CONFIG_NETFILTER_XT_MATCH_REALM=m
401CONFIG_NETFILTER_XT_MATCH_SCTP=m
402CONFIG_NETFILTER_XT_MATCH_STATE=m
403CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
404CONFIG_NETFILTER_XT_MATCH_STRING=m
405CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
406CONFIG_NETFILTER_XT_MATCH_U32=m
407CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
408
409#
410# IP: Netfilter Configuration
411#
412CONFIG_NF_CONNTRACK_IPV4=m
413CONFIG_NF_CONNTRACK_PROC_COMPAT=y
414CONFIG_IP_NF_QUEUE=m
415CONFIG_IP_NF_IPTABLES=m
416CONFIG_IP_NF_MATCH_IPRANGE=m
417CONFIG_IP_NF_MATCH_TOS=m
418CONFIG_IP_NF_MATCH_RECENT=m
419CONFIG_IP_NF_MATCH_ECN=m
420CONFIG_IP_NF_MATCH_AH=m
421CONFIG_IP_NF_MATCH_TTL=m
422CONFIG_IP_NF_MATCH_OWNER=m
423CONFIG_IP_NF_MATCH_ADDRTYPE=m
424CONFIG_IP_NF_FILTER=m
425CONFIG_IP_NF_TARGET_REJECT=m
426CONFIG_IP_NF_TARGET_LOG=m
427CONFIG_IP_NF_TARGET_ULOG=m
428CONFIG_NF_NAT=m
429CONFIG_NF_NAT_NEEDED=y
430CONFIG_IP_NF_TARGET_MASQUERADE=m
431CONFIG_IP_NF_TARGET_REDIRECT=m
432CONFIG_IP_NF_TARGET_NETMAP=m
433CONFIG_IP_NF_TARGET_SAME=m
434CONFIG_NF_NAT_SNMP_BASIC=m
435CONFIG_NF_NAT_PROTO_GRE=m
436CONFIG_NF_NAT_FTP=m
437CONFIG_NF_NAT_IRC=m
438CONFIG_NF_NAT_TFTP=m
439CONFIG_NF_NAT_AMANDA=m
440CONFIG_NF_NAT_PPTP=m
441CONFIG_NF_NAT_H323=m
442CONFIG_NF_NAT_SIP=m
443CONFIG_IP_NF_MANGLE=m
444CONFIG_IP_NF_TARGET_TOS=m
445CONFIG_IP_NF_TARGET_ECN=m
446CONFIG_IP_NF_TARGET_TTL=m
447CONFIG_IP_NF_TARGET_CLUSTERIP=m
448CONFIG_IP_NF_RAW=m
449CONFIG_IP_NF_ARPTABLES=m
450CONFIG_IP_NF_ARPFILTER=m
451CONFIG_IP_NF_ARP_MANGLE=m
452
453#
454# IPv6: Netfilter Configuration (EXPERIMENTAL)
455#
456CONFIG_NF_CONNTRACK_IPV6=m
457CONFIG_IP6_NF_QUEUE=m
458CONFIG_IP6_NF_IPTABLES=m
459CONFIG_IP6_NF_MATCH_RT=m
460CONFIG_IP6_NF_MATCH_OPTS=m
461CONFIG_IP6_NF_MATCH_FRAG=m
462CONFIG_IP6_NF_MATCH_HL=m
463CONFIG_IP6_NF_MATCH_OWNER=m
464CONFIG_IP6_NF_MATCH_IPV6HEADER=m
465CONFIG_IP6_NF_MATCH_AH=m
466CONFIG_IP6_NF_MATCH_MH=m
467CONFIG_IP6_NF_MATCH_EUI64=m
468CONFIG_IP6_NF_FILTER=m
469CONFIG_IP6_NF_TARGET_LOG=m
470CONFIG_IP6_NF_TARGET_REJECT=m
471CONFIG_IP6_NF_MANGLE=m
472CONFIG_IP6_NF_TARGET_HL=m
473CONFIG_IP6_NF_RAW=m
474# CONFIG_IP_DCCP is not set
475CONFIG_IP_SCTP=m
476# CONFIG_SCTP_DBG_MSG is not set
477# CONFIG_SCTP_DBG_OBJCNT is not set
478# CONFIG_SCTP_HMAC_NONE is not set
479# CONFIG_SCTP_HMAC_SHA1 is not set
480CONFIG_SCTP_HMAC_MD5=y
481# CONFIG_TIPC is not set
482# CONFIG_ATM is not set
483# CONFIG_BRIDGE is not set
484# CONFIG_VLAN_8021Q is not set
485# CONFIG_DECNET is not set
486# CONFIG_LLC2 is not set
487# CONFIG_IPX is not set
488# CONFIG_ATALK is not set
489# CONFIG_X25 is not set
490# CONFIG_LAPB is not set
491# CONFIG_ECONET is not set
492# CONFIG_WAN_ROUTER is not set
493
494#
495# QoS and/or fair queueing
496#
497CONFIG_NET_SCHED=y
498CONFIG_NET_SCH_FIFO=y
499
500#
501# Queueing/Scheduling
502#
503CONFIG_NET_SCH_CBQ=m
504CONFIG_NET_SCH_HTB=m
505CONFIG_NET_SCH_HFSC=m
506CONFIG_NET_SCH_PRIO=m
507CONFIG_NET_SCH_RR=m
508CONFIG_NET_SCH_RED=m
509CONFIG_NET_SCH_SFQ=m
510CONFIG_NET_SCH_TEQL=m
511CONFIG_NET_SCH_TBF=m
512CONFIG_NET_SCH_GRED=m
513CONFIG_NET_SCH_DSMARK=m
514CONFIG_NET_SCH_NETEM=m
515CONFIG_NET_SCH_INGRESS=m
516
517#
518# Classification
519#
520CONFIG_NET_CLS=y
521CONFIG_NET_CLS_BASIC=m
522CONFIG_NET_CLS_TCINDEX=m
523CONFIG_NET_CLS_ROUTE4=m
524CONFIG_NET_CLS_ROUTE=y
525CONFIG_NET_CLS_FW=m
526CONFIG_NET_CLS_U32=m
527# CONFIG_CLS_U32_PERF is not set
528# CONFIG_CLS_U32_MARK is not set
529CONFIG_NET_CLS_RSVP=m
530CONFIG_NET_CLS_RSVP6=m
531# CONFIG_NET_EMATCH is not set
532CONFIG_NET_CLS_ACT=y
533CONFIG_NET_ACT_POLICE=y
534CONFIG_NET_ACT_GACT=m
535CONFIG_GACT_PROB=y
536CONFIG_NET_ACT_MIRRED=m
537CONFIG_NET_ACT_IPT=m
538CONFIG_NET_ACT_PEDIT=m
539CONFIG_NET_ACT_SIMP=m
540CONFIG_NET_CLS_POLICE=y
541# CONFIG_NET_CLS_IND is not set
542
543#
544# Network testing
545#
546# CONFIG_NET_PKTGEN is not set
547# CONFIG_HAMRADIO is not set
548# CONFIG_IRDA is not set
549# CONFIG_BT is not set
550# CONFIG_AF_RXRPC is not set
551CONFIG_FIB_RULES=y
552
553#
554# Wireless
555#
556CONFIG_CFG80211=m
557CONFIG_WIRELESS_EXT=y
558CONFIG_MAC80211=m
559# CONFIG_MAC80211_DEBUG is not set
560CONFIG_IEEE80211=m
561# CONFIG_IEEE80211_DEBUG is not set
562CONFIG_IEEE80211_CRYPT_WEP=m
563CONFIG_IEEE80211_CRYPT_CCMP=m
564CONFIG_IEEE80211_CRYPT_TKIP=m
565CONFIG_IEEE80211_SOFTMAC=m
566# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
567CONFIG_RFKILL=m
568CONFIG_RFKILL_INPUT=m
569# CONFIG_NET_9P is not set
570
571#
572# Device Drivers
573#
574
575#
576# Generic Driver Options
577#
578CONFIG_STANDALONE=y
579CONFIG_PREVENT_FIRMWARE_BUILD=y
580# CONFIG_SYS_HYPERVISOR is not set
581CONFIG_CONNECTOR=m
582# CONFIG_MTD is not set
583# CONFIG_PARPORT is not set
584CONFIG_BLK_DEV=y
585# CONFIG_BLK_DEV_COW_COMMON is not set
586# CONFIG_BLK_DEV_LOOP is not set
587# CONFIG_BLK_DEV_NBD is not set
588# CONFIG_BLK_DEV_RAM is not set
589CONFIG_CDROM_PKTCDVD=m
590CONFIG_CDROM_PKTCDVD_BUFFERS=8
591# CONFIG_CDROM_PKTCDVD_WCACHE is not set
592CONFIG_ATA_OVER_ETH=m
593# CONFIG_MISC_DEVICES is not set
594# CONFIG_IDE is not set
595
596#
597# SCSI device support
598#
599CONFIG_RAID_ATTRS=m
600CONFIG_SCSI=y
601CONFIG_SCSI_DMA=y
602CONFIG_SCSI_TGT=m
603# CONFIG_SCSI_NETLINK is not set
604CONFIG_SCSI_PROC_FS=y
605
606#
607# SCSI support type (disk, tape, CD-ROM)
608#
609CONFIG_BLK_DEV_SD=y
610CONFIG_CHR_DEV_ST=y
611# CONFIG_CHR_DEV_OSST is not set
612CONFIG_BLK_DEV_SR=y
613# CONFIG_BLK_DEV_SR_VENDOR is not set
614# CONFIG_CHR_DEV_SG is not set
615CONFIG_CHR_DEV_SCH=m
616
617#
618# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
619#
620# CONFIG_SCSI_MULTI_LUN is not set
621CONFIG_SCSI_CONSTANTS=y
622# CONFIG_SCSI_LOGGING is not set
623CONFIG_SCSI_SCAN_ASYNC=y
624CONFIG_SCSI_WAIT_SCAN=m
625
626#
627# SCSI Transports
628#
629CONFIG_SCSI_SPI_ATTRS=m
630# CONFIG_SCSI_FC_ATTRS is not set
631CONFIG_SCSI_ISCSI_ATTRS=m
632# CONFIG_SCSI_SAS_LIBSAS is not set
633CONFIG_SCSI_LOWLEVEL=y
634CONFIG_ISCSI_TCP=m
635CONFIG_SGIWD93_SCSI=y
636# CONFIG_SCSI_DEBUG is not set
637# CONFIG_ATA is not set
638# CONFIG_MD is not set
639CONFIG_NETDEVICES=y
640# CONFIG_NETDEVICES_MULTIQUEUE is not set
641# CONFIG_IFB is not set
642CONFIG_DUMMY=m
643CONFIG_BONDING=m
644CONFIG_MACVLAN=m
645CONFIG_EQUALIZER=m
646CONFIG_TUN=m
647CONFIG_PHYLIB=m
648
649#
650# MII PHY device drivers
651#
652CONFIG_MARVELL_PHY=m
653CONFIG_DAVICOM_PHY=m
654CONFIG_QSEMI_PHY=m
655CONFIG_LXT_PHY=m
656CONFIG_CICADA_PHY=m
657# CONFIG_VITESSE_PHY is not set
658# CONFIG_SMSC_PHY is not set
659# CONFIG_BROADCOM_PHY is not set
660# CONFIG_ICPLUS_PHY is not set
661# CONFIG_FIXED_PHY is not set
662CONFIG_NET_ETHERNET=y
663# CONFIG_MII is not set
664# CONFIG_AX88796 is not set
665# CONFIG_DM9000 is not set
666CONFIG_SGISEEQ=y
667# CONFIG_NETDEV_1000 is not set
668# CONFIG_NETDEV_10000 is not set
669
670#
671# Wireless LAN
672#
673CONFIG_WLAN_PRE80211=y
674CONFIG_STRIP=m
675CONFIG_WLAN_80211=y
676# CONFIG_LIBERTAS is not set
677CONFIG_HOSTAP=m
678# CONFIG_HOSTAP_FIRMWARE is not set
679# CONFIG_WAN is not set
680# CONFIG_PPP is not set
681# CONFIG_SLIP is not set
682# CONFIG_SHAPER is not set
683# CONFIG_NETCONSOLE is not set
684# CONFIG_NETPOLL is not set
685# CONFIG_NET_POLL_CONTROLLER is not set
686# CONFIG_ISDN is not set
687# CONFIG_PHONE is not set
688
689#
690# Input device support
691#
692CONFIG_INPUT=y
693# CONFIG_INPUT_FF_MEMLESS is not set
694# CONFIG_INPUT_POLLDEV is not set
695
696#
697# Userland interfaces
698#
699CONFIG_INPUT_MOUSEDEV=m
700CONFIG_INPUT_MOUSEDEV_PSAUX=y
701CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
702CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
703# CONFIG_INPUT_JOYDEV is not set
704# CONFIG_INPUT_TSDEV is not set
705# CONFIG_INPUT_EVDEV is not set
706# CONFIG_INPUT_EVBUG is not set
707
708#
709# Input Device Drivers
710#
711CONFIG_INPUT_KEYBOARD=y
712CONFIG_KEYBOARD_ATKBD=y
713# CONFIG_KEYBOARD_SUNKBD is not set
714# CONFIG_KEYBOARD_LKKBD is not set
715# CONFIG_KEYBOARD_XTKBD is not set
716# CONFIG_KEYBOARD_NEWTON is not set
717# CONFIG_KEYBOARD_STOWAWAY is not set
718CONFIG_INPUT_MOUSE=y
719CONFIG_MOUSE_PS2=m
720# CONFIG_MOUSE_PS2_ALPS is not set
721CONFIG_MOUSE_PS2_LOGIPS2PP=y
722# CONFIG_MOUSE_PS2_SYNAPTICS is not set
723# CONFIG_MOUSE_PS2_LIFEBOOK is not set
724CONFIG_MOUSE_PS2_TRACKPOINT=y
725# CONFIG_MOUSE_PS2_TOUCHKIT is not set
726CONFIG_MOUSE_SERIAL=m
727# CONFIG_MOUSE_VSXXXAA is not set
728# CONFIG_INPUT_JOYSTICK is not set
729# CONFIG_INPUT_TABLET is not set
730# CONFIG_INPUT_TOUCHSCREEN is not set
731# CONFIG_INPUT_MISC is not set
732
733#
734# Hardware I/O ports
735#
736CONFIG_SERIO=y
737CONFIG_SERIO_I8042=y
738CONFIG_SERIO_SERPORT=y
739CONFIG_SERIO_LIBPS2=y
740CONFIG_SERIO_RAW=m
741# CONFIG_GAMEPORT is not set
742
743#
744# Character devices
745#
746CONFIG_VT=y
747CONFIG_VT_CONSOLE=y
748CONFIG_HW_CONSOLE=y
749CONFIG_VT_HW_CONSOLE_BINDING=y
750# CONFIG_SERIAL_NONSTANDARD is not set
751
752#
753# Serial drivers
754#
755# CONFIG_SERIAL_8250 is not set
756
757#
758# Non-8250 serial port support
759#
760CONFIG_SERIAL_IP22_ZILOG=m
761CONFIG_SERIAL_CORE=m
762CONFIG_UNIX98_PTYS=y
763CONFIG_LEGACY_PTYS=y
764CONFIG_LEGACY_PTY_COUNT=256
765# CONFIG_IPMI_HANDLER is not set
766CONFIG_WATCHDOG=y
767# CONFIG_WATCHDOG_NOWAYOUT is not set
768
769#
770# Watchdog Device Drivers
771#
772# CONFIG_SOFT_WATCHDOG is not set
773CONFIG_INDYDOG=m
774# CONFIG_HW_RANDOM is not set
775# CONFIG_RTC is not set
776CONFIG_SGI_DS1286=m
777# CONFIG_R3964 is not set
778CONFIG_RAW_DRIVER=m
779CONFIG_MAX_RAW_DEVS=256
780# CONFIG_TCG_TPM is not set
781# CONFIG_I2C is not set
782
783#
784# SPI support
785#
786# CONFIG_SPI is not set
787# CONFIG_SPI_MASTER is not set
788# CONFIG_W1 is not set
789# CONFIG_POWER_SUPPLY is not set
790# CONFIG_HWMON is not set
791
792#
793# Multifunction device drivers
794#
795# CONFIG_MFD_SM501 is not set
796
797#
798# Multimedia devices
799#
800# CONFIG_VIDEO_DEV is not set
801# CONFIG_DVB_CORE is not set
802# CONFIG_DAB is not set
803
804#
805# Graphics support
806#
807# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
808
809#
810# Display device support
811#
812# CONFIG_DISPLAY_SUPPORT is not set
813# CONFIG_VGASTATE is not set
814# CONFIG_VIDEO_OUTPUT_CONTROL is not set
815# CONFIG_FB is not set
816
817#
818# Console display driver support
819#
820# CONFIG_VGA_CONSOLE is not set
821CONFIG_SGI_NEWPORT_CONSOLE=y
822CONFIG_DUMMY_CONSOLE=y
823CONFIG_FONT_8x16=y
824CONFIG_LOGO=y
825# CONFIG_LOGO_LINUX_MONO is not set
826# CONFIG_LOGO_LINUX_VGA16 is not set
827# CONFIG_LOGO_LINUX_CLUT224 is not set
828CONFIG_LOGO_SGI_CLUT224=y
829
830#
831# Sound
832#
833# CONFIG_SOUND is not set
834CONFIG_HID_SUPPORT=y
835CONFIG_HID=y
836# CONFIG_HID_DEBUG is not set
837CONFIG_USB_SUPPORT=y
838# CONFIG_USB_ARCH_HAS_HCD is not set
839# CONFIG_USB_ARCH_HAS_OHCI is not set
840# CONFIG_USB_ARCH_HAS_EHCI is not set
841
842#
843# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
844#
845
846#
847# USB Gadget Support
848#
849# CONFIG_USB_GADGET is not set
850# CONFIG_MMC is not set
851# CONFIG_NEW_LEDS is not set
852# CONFIG_RTC_CLASS is not set
853
854#
855# DMA Engine support
856#
857# CONFIG_DMA_ENGINE is not set
858
859#
860# DMA Clients
861#
862
863#
864# DMA Devices
865#
866
867#
868# Userspace I/O
869#
870# CONFIG_UIO is not set
871
872#
873# File systems
874#
875CONFIG_EXT2_FS=m
876# CONFIG_EXT2_FS_XATTR is not set
877# CONFIG_EXT2_FS_XIP is not set
878CONFIG_EXT3_FS=y
879CONFIG_EXT3_FS_XATTR=y
880CONFIG_EXT3_FS_POSIX_ACL=y
881CONFIG_EXT3_FS_SECURITY=y
882# CONFIG_EXT4DEV_FS is not set
883CONFIG_JBD=y
884# CONFIG_JBD_DEBUG is not set
885CONFIG_FS_MBCACHE=y
886# CONFIG_REISERFS_FS is not set
887# CONFIG_JFS_FS is not set
888CONFIG_FS_POSIX_ACL=y
889CONFIG_XFS_FS=m
890CONFIG_XFS_QUOTA=y
891CONFIG_XFS_SECURITY=y
892# CONFIG_XFS_POSIX_ACL is not set
893# CONFIG_XFS_RT is not set
894# CONFIG_GFS2_FS is not set
895# CONFIG_OCFS2_FS is not set
896CONFIG_MINIX_FS=m
897# CONFIG_ROMFS_FS is not set
898CONFIG_INOTIFY=y
899CONFIG_INOTIFY_USER=y
900CONFIG_QUOTA=y
901# CONFIG_QFMT_V1 is not set
902CONFIG_QFMT_V2=m
903CONFIG_QUOTACTL=y
904CONFIG_DNOTIFY=y
905CONFIG_AUTOFS_FS=m
906CONFIG_AUTOFS4_FS=m
907CONFIG_FUSE_FS=m
908CONFIG_GENERIC_ACL=y
909
910#
911# CD-ROM/DVD Filesystems
912#
913CONFIG_ISO9660_FS=m
914CONFIG_JOLIET=y
915CONFIG_ZISOFS=y
916CONFIG_UDF_FS=m
917CONFIG_UDF_NLS=y
918
919#
920# DOS/FAT/NT Filesystems
921#
922CONFIG_FAT_FS=m
923CONFIG_MSDOS_FS=m
924CONFIG_VFAT_FS=m
925CONFIG_FAT_DEFAULT_CODEPAGE=437
926CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
927# CONFIG_NTFS_FS is not set
928
929#
930# Pseudo filesystems
931#
932CONFIG_PROC_FS=y
933CONFIG_PROC_KCORE=y
934CONFIG_PROC_SYSCTL=y
935CONFIG_SYSFS=y
936CONFIG_TMPFS=y
937CONFIG_TMPFS_POSIX_ACL=y
938# CONFIG_HUGETLB_PAGE is not set
939CONFIG_RAMFS=y
940CONFIG_CONFIGFS_FS=m
941
942#
943# Miscellaneous filesystems
944#
945# CONFIG_ADFS_FS is not set
946# CONFIG_AFFS_FS is not set
947# CONFIG_ECRYPT_FS is not set
948# CONFIG_HFS_FS is not set
949# CONFIG_HFSPLUS_FS is not set
950# CONFIG_BEFS_FS is not set
951# CONFIG_BFS_FS is not set
952CONFIG_EFS_FS=m
953# CONFIG_CRAMFS is not set
954# CONFIG_VXFS_FS is not set
955# CONFIG_HPFS_FS is not set
956# CONFIG_QNX4FS_FS is not set
957# CONFIG_SYSV_FS is not set
958CONFIG_UFS_FS=m
959# CONFIG_UFS_FS_WRITE is not set
960# CONFIG_UFS_DEBUG is not set
961
962#
963# Network File Systems
964#
965CONFIG_NFS_FS=m
966CONFIG_NFS_V3=y
967CONFIG_NFS_V3_ACL=y
968# CONFIG_NFS_V4 is not set
969# CONFIG_NFS_DIRECTIO is not set
970CONFIG_NFSD=m
971CONFIG_NFSD_V2_ACL=y
972CONFIG_NFSD_V3=y
973CONFIG_NFSD_V3_ACL=y
974# CONFIG_NFSD_V4 is not set
975CONFIG_NFSD_TCP=y
976CONFIG_LOCKD=m
977CONFIG_LOCKD_V4=y
978CONFIG_EXPORTFS=m
979CONFIG_NFS_ACL_SUPPORT=m
980CONFIG_NFS_COMMON=y
981CONFIG_SUNRPC=m
982CONFIG_SUNRPC_GSS=m
983# CONFIG_SUNRPC_BIND34 is not set
984CONFIG_RPCSEC_GSS_KRB5=m
985# CONFIG_RPCSEC_GSS_SPKM3 is not set
986CONFIG_SMB_FS=m
987CONFIG_SMB_NLS_DEFAULT=y
988CONFIG_SMB_NLS_REMOTE="cp437"
989CONFIG_CIFS=m
990# CONFIG_CIFS_STATS is not set
991# CONFIG_CIFS_WEAK_PW_HASH is not set
992# CONFIG_CIFS_XATTR is not set
993# CONFIG_CIFS_DEBUG2 is not set
994# CONFIG_CIFS_EXPERIMENTAL is not set
995# CONFIG_NCP_FS is not set
996CONFIG_CODA_FS=m
997# CONFIG_CODA_FS_OLD_API is not set
998# CONFIG_AFS_FS is not set
999
1000#
1001# Partition Types
1002#
1003CONFIG_PARTITION_ADVANCED=y
1004# CONFIG_ACORN_PARTITION is not set
1005# CONFIG_OSF_PARTITION is not set
1006# CONFIG_AMIGA_PARTITION is not set
1007# CONFIG_ATARI_PARTITION is not set
1008# CONFIG_MAC_PARTITION is not set
1009CONFIG_MSDOS_PARTITION=y
1010# CONFIG_BSD_DISKLABEL is not set
1011# CONFIG_MINIX_SUBPARTITION is not set
1012# CONFIG_SOLARIS_X86_PARTITION is not set
1013# CONFIG_UNIXWARE_DISKLABEL is not set
1014# CONFIG_LDM_PARTITION is not set
1015CONFIG_SGI_PARTITION=y
1016# CONFIG_ULTRIX_PARTITION is not set
1017# CONFIG_SUN_PARTITION is not set
1018# CONFIG_KARMA_PARTITION is not set
1019# CONFIG_EFI_PARTITION is not set
1020# CONFIG_SYSV68_PARTITION is not set
1021
1022#
1023# Native Language Support
1024#
1025CONFIG_NLS=m
1026CONFIG_NLS_DEFAULT="iso8859-1"
1027CONFIG_NLS_CODEPAGE_437=m
1028CONFIG_NLS_CODEPAGE_737=m
1029CONFIG_NLS_CODEPAGE_775=m
1030CONFIG_NLS_CODEPAGE_850=m
1031CONFIG_NLS_CODEPAGE_852=m
1032CONFIG_NLS_CODEPAGE_855=m
1033CONFIG_NLS_CODEPAGE_857=m
1034CONFIG_NLS_CODEPAGE_860=m
1035CONFIG_NLS_CODEPAGE_861=m
1036CONFIG_NLS_CODEPAGE_862=m
1037CONFIG_NLS_CODEPAGE_863=m
1038CONFIG_NLS_CODEPAGE_864=m
1039CONFIG_NLS_CODEPAGE_865=m
1040CONFIG_NLS_CODEPAGE_866=m
1041CONFIG_NLS_CODEPAGE_869=m
1042CONFIG_NLS_CODEPAGE_936=m
1043CONFIG_NLS_CODEPAGE_950=m
1044CONFIG_NLS_CODEPAGE_932=m
1045CONFIG_NLS_CODEPAGE_949=m
1046CONFIG_NLS_CODEPAGE_874=m
1047CONFIG_NLS_ISO8859_8=m
1048CONFIG_NLS_CODEPAGE_1250=m
1049CONFIG_NLS_CODEPAGE_1251=m
1050CONFIG_NLS_ASCII=m
1051CONFIG_NLS_ISO8859_1=m
1052CONFIG_NLS_ISO8859_2=m
1053CONFIG_NLS_ISO8859_3=m
1054CONFIG_NLS_ISO8859_4=m
1055CONFIG_NLS_ISO8859_5=m
1056CONFIG_NLS_ISO8859_6=m
1057CONFIG_NLS_ISO8859_7=m
1058CONFIG_NLS_ISO8859_9=m
1059CONFIG_NLS_ISO8859_13=m
1060CONFIG_NLS_ISO8859_14=m
1061CONFIG_NLS_ISO8859_15=m
1062CONFIG_NLS_KOI8_R=m
1063CONFIG_NLS_KOI8_U=m
1064CONFIG_NLS_UTF8=m
1065
1066#
1067# Distributed Lock Manager
1068#
1069CONFIG_DLM=m
1070# CONFIG_DLM_DEBUG is not set
1071
1072#
1073# Profiling support
1074#
1075# CONFIG_PROFILING is not set
1076
1077#
1078# Kernel hacking
1079#
1080CONFIG_TRACE_IRQFLAGS_SUPPORT=y
1081# CONFIG_PRINTK_TIME is not set
1082CONFIG_ENABLE_MUST_CHECK=y
1083# CONFIG_MAGIC_SYSRQ is not set
1084# CONFIG_UNUSED_SYMBOLS is not set
1085# CONFIG_DEBUG_FS is not set
1086# CONFIG_HEADERS_CHECK is not set
1087# CONFIG_DEBUG_KERNEL is not set
1088CONFIG_CROSSCOMPILE=y
1089CONFIG_CMDLINE=""
1090
1091#
1092# Security options
1093#
1094CONFIG_KEYS=y
1095CONFIG_KEYS_DEBUG_PROC_KEYS=y
1096# CONFIG_SECURITY is not set
1097CONFIG_CRYPTO=y
1098CONFIG_CRYPTO_ALGAPI=y
1099CONFIG_CRYPTO_ABLKCIPHER=m
1100CONFIG_CRYPTO_BLKCIPHER=m
1101CONFIG_CRYPTO_HASH=y
1102CONFIG_CRYPTO_MANAGER=y
1103CONFIG_CRYPTO_HMAC=y
1104CONFIG_CRYPTO_XCBC=m
1105CONFIG_CRYPTO_NULL=m
1106CONFIG_CRYPTO_MD4=m
1107CONFIG_CRYPTO_MD5=y
1108CONFIG_CRYPTO_SHA1=m
1109CONFIG_CRYPTO_SHA256=m
1110CONFIG_CRYPTO_SHA512=m
1111CONFIG_CRYPTO_WP512=m
1112CONFIG_CRYPTO_TGR192=m
1113CONFIG_CRYPTO_GF128MUL=m
1114CONFIG_CRYPTO_ECB=m
1115CONFIG_CRYPTO_CBC=m
1116CONFIG_CRYPTO_PCBC=m
1117CONFIG_CRYPTO_LRW=m
1118CONFIG_CRYPTO_CRYPTD=m
1119CONFIG_CRYPTO_DES=m
1120CONFIG_CRYPTO_FCRYPT=m
1121CONFIG_CRYPTO_BLOWFISH=m
1122CONFIG_CRYPTO_TWOFISH=m
1123CONFIG_CRYPTO_TWOFISH_COMMON=m
1124CONFIG_CRYPTO_SERPENT=m
1125CONFIG_CRYPTO_AES=m
1126CONFIG_CRYPTO_CAST5=m
1127CONFIG_CRYPTO_CAST6=m
1128CONFIG_CRYPTO_TEA=m
1129CONFIG_CRYPTO_ARC4=m
1130CONFIG_CRYPTO_KHAZAD=m
1131CONFIG_CRYPTO_ANUBIS=m
1132CONFIG_CRYPTO_DEFLATE=m
1133CONFIG_CRYPTO_MICHAEL_MIC=m
1134CONFIG_CRYPTO_CRC32C=m
1135CONFIG_CRYPTO_CAMELLIA=m
1136# CONFIG_CRYPTO_TEST is not set
1137# CONFIG_CRYPTO_HW is not set
1138
1139#
1140# Library routines
1141#
1142CONFIG_BITREVERSE=m
1143# CONFIG_CRC_CCITT is not set
1144CONFIG_CRC16=m
1145# CONFIG_CRC_ITU_T is not set
1146CONFIG_CRC32=m
1147# CONFIG_CRC7 is not set
1148CONFIG_LIBCRC32C=m
1149CONFIG_ZLIB_INFLATE=m
1150CONFIG_ZLIB_DEFLATE=m
1151CONFIG_TEXTSEARCH=y
1152CONFIG_TEXTSEARCH_KMP=m
1153CONFIG_TEXTSEARCH_BM=m
1154CONFIG_TEXTSEARCH_FSM=m
1155CONFIG_PLIST=y
1156CONFIG_HAS_IOMEM=y
1157CONFIG_HAS_IOPORT=y
1158CONFIG_HAS_DMA=y
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile
index ffa08362de17..9e78e1a4ca17 100644
--- a/arch/mips/kernel/Makefile
+++ b/arch/mips/kernel/Makefile
@@ -76,7 +76,6 @@ obj-$(CONFIG_PROC_FS) += proc.o
76obj-$(CONFIG_64BIT) += cpu-bugs64.o 76obj-$(CONFIG_64BIT) += cpu-bugs64.o
77 77
78obj-$(CONFIG_I8253) += i8253.o 78obj-$(CONFIG_I8253) += i8253.o
79obj-$(CONFIG_PCSPEAKER) += pcspeaker.o
80 79
81obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o 80obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o
82obj-$(CONFIG_EARLY_PRINTK) += early_printk.o 81obj-$(CONFIG_EARLY_PRINTK) += early_printk.o
diff --git a/arch/mips/kernel/cpu-bugs64.c b/arch/mips/kernel/cpu-bugs64.c
index 417bb3e336ac..a1b48af0992f 100644
--- a/arch/mips/kernel/cpu-bugs64.c
+++ b/arch/mips/kernel/cpu-bugs64.c
@@ -167,7 +167,7 @@ static inline void check_mult_sh(void)
167 panic(bug64hit, !R4000_WAR ? r4kwar : nowar); 167 panic(bug64hit, !R4000_WAR ? r4kwar : nowar);
168} 168}
169 169
170static volatile int daddi_ov __initdata = 0; 170static volatile int daddi_ov __cpuinitdata = 0;
171 171
172asmlinkage void __init do_daddi_ov(struct pt_regs *regs) 172asmlinkage void __init do_daddi_ov(struct pt_regs *regs)
173{ 173{
@@ -239,7 +239,7 @@ static inline void check_daddi(void)
239 panic(bug64hit, !DADDI_WAR ? daddiwar : nowar); 239 panic(bug64hit, !DADDI_WAR ? daddiwar : nowar);
240} 240}
241 241
242int daddiu_bug __initdata = -1; 242int daddiu_bug __cpuinitdata = -1;
243 243
244static inline void check_daddiu(void) 244static inline void check_daddiu(void)
245{ 245{
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c
index 5861a432a52f..89c3304cb93c 100644
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -550,7 +550,7 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c)
550 } 550 }
551} 551}
552 552
553static char unknown_isa[] __initdata = KERN_ERR \ 553static char unknown_isa[] __cpuinitdata = KERN_ERR \
554 "Unsupported ISA type, c0.config0: %d."; 554 "Unsupported ISA type, c0.config0: %d.";
555 555
556static inline unsigned int decode_config0(struct cpuinfo_mips *c) 556static inline unsigned int decode_config0(struct cpuinfo_mips *c)
@@ -656,7 +656,7 @@ static inline unsigned int decode_config3(struct cpuinfo_mips *c)
656 return config3 & MIPS_CONF_M; 656 return config3 & MIPS_CONF_M;
657} 657}
658 658
659static void __init decode_configs(struct cpuinfo_mips *c) 659static void __cpuinit decode_configs(struct cpuinfo_mips *c)
660{ 660{
661 /* MIPS32 or MIPS64 compliant CPU. */ 661 /* MIPS32 or MIPS64 compliant CPU. */
662 c->options = MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER | 662 c->options = MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER |
@@ -814,7 +814,7 @@ const char *__cpu_name[NR_CPUS];
814/* 814/*
815 * Name a CPU 815 * Name a CPU
816 */ 816 */
817static __init const char *cpu_to_name(struct cpuinfo_mips *c) 817static __cpuinit const char *cpu_to_name(struct cpuinfo_mips *c)
818{ 818{
819 const char *name = NULL; 819 const char *name = NULL;
820 820
@@ -896,7 +896,7 @@ static __init const char *cpu_to_name(struct cpuinfo_mips *c)
896 return name; 896 return name;
897} 897}
898 898
899__init void cpu_probe(void) 899__cpuinit void cpu_probe(void)
900{ 900{
901 struct cpuinfo_mips *c = &current_cpu_data; 901 struct cpuinfo_mips *c = &current_cpu_data;
902 unsigned int cpu = smp_processor_id(); 902 unsigned int cpu = smp_processor_id();
@@ -959,7 +959,7 @@ __init void cpu_probe(void)
959 c->srsets = 1; 959 c->srsets = 1;
960} 960}
961 961
962__init void cpu_report(void) 962__cpuinit void cpu_report(void)
963{ 963{
964 struct cpuinfo_mips *c = &current_cpu_data; 964 struct cpuinfo_mips *c = &current_cpu_data;
965 965
diff --git a/arch/mips/kernel/csrc-r4k.c b/arch/mips/kernel/csrc-r4k.c
index 0e2b5cd81f67..86e026f067bc 100644
--- a/arch/mips/kernel/csrc-r4k.c
+++ b/arch/mips/kernel/csrc-r4k.c
@@ -22,12 +22,17 @@ static struct clocksource clocksource_mips = {
22 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 22 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
23}; 23};
24 24
25void __init init_mips_clocksource(void) 25int __init init_mips_clocksource(void)
26{ 26{
27 if (!cpu_has_counter || !mips_hpt_frequency)
28 return -ENXIO;
29
27 /* Calclate a somewhat reasonable rating value */ 30 /* Calclate a somewhat reasonable rating value */
28 clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000; 31 clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000;
29 32
30 clocksource_set_clock(&clocksource_mips, mips_hpt_frequency); 33 clocksource_set_clock(&clocksource_mips, mips_hpt_frequency);
31 34
32 clocksource_register(&clocksource_mips); 35 clocksource_register(&clocksource_mips);
36
37 return 0;
33} 38}
diff --git a/arch/mips/kernel/head.S b/arch/mips/kernel/head.S
index a24fb7900901..361364501d34 100644
--- a/arch/mips/kernel/head.S
+++ b/arch/mips/kernel/head.S
@@ -195,7 +195,7 @@ NESTED(kernel_entry, 16, sp) # kernel entry point
195 j start_kernel 195 j start_kernel
196 END(kernel_entry) 196 END(kernel_entry)
197 197
198 __INIT 198 __CPUINIT
199 199
200#ifdef CONFIG_SMP 200#ifdef CONFIG_SMP
201/* 201/*
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c
index fcae66752972..984c0d0a7b4d 100644
--- a/arch/mips/kernel/traps.c
+++ b/arch/mips/kernel/traps.c
@@ -534,8 +534,7 @@ static int simulate_llsc(struct pt_regs *regs, unsigned int opcode)
534 534
535/* 535/*
536 * Simulate trapping 'rdhwr' instructions to provide user accessible 536 * Simulate trapping 'rdhwr' instructions to provide user accessible
537 * registers not implemented in hardware. The only current use of this 537 * registers not implemented in hardware.
538 * is the thread area pointer.
539 */ 538 */
540static int simulate_rdhwr(struct pt_regs *regs, unsigned int opcode) 539static int simulate_rdhwr(struct pt_regs *regs, unsigned int opcode)
541{ 540{
@@ -545,11 +544,31 @@ static int simulate_rdhwr(struct pt_regs *regs, unsigned int opcode)
545 int rd = (opcode & RD) >> 11; 544 int rd = (opcode & RD) >> 11;
546 int rt = (opcode & RT) >> 16; 545 int rt = (opcode & RT) >> 16;
547 switch (rd) { 546 switch (rd) {
548 case 29: 547 case 0: /* CPU number */
549 regs->regs[rt] = ti->tp_value; 548 regs->regs[rt] = smp_processor_id();
550 return 0; 549 return 0;
550 case 1: /* SYNCI length */
551 regs->regs[rt] = min(current_cpu_data.dcache.linesz,
552 current_cpu_data.icache.linesz);
553 return 0;
554 case 2: /* Read count register */
555 regs->regs[rt] = read_c0_count();
556 return 0;
557 case 3: /* Count register resolution */
558 switch (current_cpu_data.cputype) {
559 case CPU_20KC:
560 case CPU_25KF:
561 regs->regs[rt] = 1;
562 break;
551 default: 563 default:
552 return -1; 564 regs->regs[rt] = 2;
565 }
566 return 0;
567 case 29:
568 regs->regs[rt] = ti->tp_value;
569 return 0;
570 default:
571 return -1;
553 } 572 }
554 } 573 }
555 574
@@ -1287,7 +1306,7 @@ int cp0_compare_irq;
1287int cp0_perfcount_irq; 1306int cp0_perfcount_irq;
1288EXPORT_SYMBOL_GPL(cp0_perfcount_irq); 1307EXPORT_SYMBOL_GPL(cp0_perfcount_irq);
1289 1308
1290void __init per_cpu_trap_init(void) 1309void __cpuinit per_cpu_trap_init(void)
1291{ 1310{
1292 unsigned int cpu = smp_processor_id(); 1311 unsigned int cpu = smp_processor_id();
1293 unsigned int status_set = ST0_CU0; 1312 unsigned int status_set = ST0_CU0;
@@ -1404,11 +1423,12 @@ void __init set_handler(unsigned long offset, void *addr, unsigned long size)
1404 flush_icache_range(ebase + offset, ebase + offset + size); 1423 flush_icache_range(ebase + offset, ebase + offset + size);
1405} 1424}
1406 1425
1407static char panic_null_cerr[] __initdata = 1426static char panic_null_cerr[] __cpuinitdata =
1408 "Trying to set NULL cache error exception handler"; 1427 "Trying to set NULL cache error exception handler";
1409 1428
1410/* Install uncached CPU exception handler */ 1429/* Install uncached CPU exception handler */
1411void __init set_uncached_handler(unsigned long offset, void *addr, unsigned long size) 1430void __cpuinit set_uncached_handler(unsigned long offset, void *addr,
1431 unsigned long size)
1412{ 1432{
1413#ifdef CONFIG_32BIT 1433#ifdef CONFIG_32BIT
1414 unsigned long uncached_ebase = KSEG1ADDR(ebase); 1434 unsigned long uncached_ebase = KSEG1ADDR(ebase);
diff --git a/arch/mips/lib/ucmpdi2.c b/arch/mips/lib/ucmpdi2.c
index b33d8569bcb0..bb4cb2f828ea 100644
--- a/arch/mips/lib/ucmpdi2.c
+++ b/arch/mips/lib/ucmpdi2.c
@@ -17,3 +17,5 @@ word_type __ucmpdi2(unsigned long long a, unsigned long long b)
17 return 2; 17 return 2;
18 return 1; 18 return 1;
19} 19}
20
21EXPORT_SYMBOL(__ucmpdi2);
diff --git a/arch/mips/lib/uncached.c b/arch/mips/lib/uncached.c
index 27b012d4341c..a6d1c77034d5 100644
--- a/arch/mips/lib/uncached.c
+++ b/arch/mips/lib/uncached.c
@@ -36,7 +36,7 @@
36 * values, so we can avoid sharing the same stack area between a cached 36 * values, so we can avoid sharing the same stack area between a cached
37 * and the uncached mode. 37 * and the uncached mode.
38 */ 38 */
39unsigned long __init run_uncached(void *func) 39unsigned long __cpuinit run_uncached(void *func)
40{ 40{
41 register long sp __asm__("$sp"); 41 register long sp __asm__("$sp");
42 register long ret __asm__("$2"); 42 register long ret __asm__("$2");
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c
index f02ce6308e51..b50e0fc406ac 100644
--- a/arch/mips/mips-boards/generic/time.c
+++ b/arch/mips/mips-boards/generic/time.c
@@ -146,7 +146,7 @@ void __init plat_perf_setup(void)
146 } 146 }
147} 147}
148 148
149unsigned int __init get_c0_compare_int(void) 149unsigned int __cpuinit get_c0_compare_int(void)
150{ 150{
151#ifdef MSC01E_INT_BASE 151#ifdef MSC01E_INT_BASE
152 if (cpu_has_veic) { 152 if (cpu_has_veic) {
diff --git a/arch/mips/mipssim/sim_time.c b/arch/mips/mipssim/sim_time.c
index e39bbe989da3..881ecbc1fa23 100644
--- a/arch/mips/mipssim/sim_time.c
+++ b/arch/mips/mipssim/sim_time.c
@@ -83,7 +83,7 @@ static void mips_timer_dispatch(void)
83} 83}
84 84
85 85
86unsigned __init get_c0_compare_int(void) 86unsigned __cpuinit get_c0_compare_int(void)
87{ 87{
88#ifdef MSC01E_INT_BASE 88#ifdef MSC01E_INT_BASE
89 if (cpu_has_veic) { 89 if (cpu_has_veic) {
diff --git a/arch/mips/mm/c-r3k.c b/arch/mips/mm/c-r3k.c
index 562abb77d1d5..76935e320214 100644
--- a/arch/mips/mm/c-r3k.c
+++ b/arch/mips/mm/c-r3k.c
@@ -307,7 +307,7 @@ static void r3k_dma_cache_wback_inv(unsigned long start, unsigned long size)
307 r3k_flush_dcache_range(start, start + size); 307 r3k_flush_dcache_range(start, start + size);
308} 308}
309 309
310void __init r3k_cache_init(void) 310void __cpuinit r3k_cache_init(void)
311{ 311{
312 extern void build_clear_page(void); 312 extern void build_clear_page(void);
313 extern void build_copy_page(void); 313 extern void build_copy_page(void);
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
index 2c4f7e11f0d5..6496925b5e29 100644
--- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c
@@ -93,7 +93,7 @@ static inline void r4k_blast_dcache_page_dc32(unsigned long addr)
93 blast_dcache32_page(addr); 93 blast_dcache32_page(addr);
94} 94}
95 95
96static void __init r4k_blast_dcache_page_setup(void) 96static void __cpuinit r4k_blast_dcache_page_setup(void)
97{ 97{
98 unsigned long dc_lsize = cpu_dcache_line_size(); 98 unsigned long dc_lsize = cpu_dcache_line_size();
99 99
@@ -107,7 +107,7 @@ static void __init r4k_blast_dcache_page_setup(void)
107 107
108static void (* r4k_blast_dcache_page_indexed)(unsigned long addr); 108static void (* r4k_blast_dcache_page_indexed)(unsigned long addr);
109 109
110static void __init r4k_blast_dcache_page_indexed_setup(void) 110static void __cpuinit r4k_blast_dcache_page_indexed_setup(void)
111{ 111{
112 unsigned long dc_lsize = cpu_dcache_line_size(); 112 unsigned long dc_lsize = cpu_dcache_line_size();
113 113
@@ -121,7 +121,7 @@ static void __init r4k_blast_dcache_page_indexed_setup(void)
121 121
122static void (* r4k_blast_dcache)(void); 122static void (* r4k_blast_dcache)(void);
123 123
124static void __init r4k_blast_dcache_setup(void) 124static void __cpuinit r4k_blast_dcache_setup(void)
125{ 125{
126 unsigned long dc_lsize = cpu_dcache_line_size(); 126 unsigned long dc_lsize = cpu_dcache_line_size();
127 127
@@ -206,7 +206,7 @@ static inline void tx49_blast_icache32_page_indexed(unsigned long page)
206 206
207static void (* r4k_blast_icache_page)(unsigned long addr); 207static void (* r4k_blast_icache_page)(unsigned long addr);
208 208
209static void __init r4k_blast_icache_page_setup(void) 209static void __cpuinit r4k_blast_icache_page_setup(void)
210{ 210{
211 unsigned long ic_lsize = cpu_icache_line_size(); 211 unsigned long ic_lsize = cpu_icache_line_size();
212 212
@@ -223,7 +223,7 @@ static void __init r4k_blast_icache_page_setup(void)
223 223
224static void (* r4k_blast_icache_page_indexed)(unsigned long addr); 224static void (* r4k_blast_icache_page_indexed)(unsigned long addr);
225 225
226static void __init r4k_blast_icache_page_indexed_setup(void) 226static void __cpuinit r4k_blast_icache_page_indexed_setup(void)
227{ 227{
228 unsigned long ic_lsize = cpu_icache_line_size(); 228 unsigned long ic_lsize = cpu_icache_line_size();
229 229
@@ -247,7 +247,7 @@ static void __init r4k_blast_icache_page_indexed_setup(void)
247 247
248static void (* r4k_blast_icache)(void); 248static void (* r4k_blast_icache)(void);
249 249
250static void __init r4k_blast_icache_setup(void) 250static void __cpuinit r4k_blast_icache_setup(void)
251{ 251{
252 unsigned long ic_lsize = cpu_icache_line_size(); 252 unsigned long ic_lsize = cpu_icache_line_size();
253 253
@@ -268,7 +268,7 @@ static void __init r4k_blast_icache_setup(void)
268 268
269static void (* r4k_blast_scache_page)(unsigned long addr); 269static void (* r4k_blast_scache_page)(unsigned long addr);
270 270
271static void __init r4k_blast_scache_page_setup(void) 271static void __cpuinit r4k_blast_scache_page_setup(void)
272{ 272{
273 unsigned long sc_lsize = cpu_scache_line_size(); 273 unsigned long sc_lsize = cpu_scache_line_size();
274 274
@@ -286,7 +286,7 @@ static void __init r4k_blast_scache_page_setup(void)
286 286
287static void (* r4k_blast_scache_page_indexed)(unsigned long addr); 287static void (* r4k_blast_scache_page_indexed)(unsigned long addr);
288 288
289static void __init r4k_blast_scache_page_indexed_setup(void) 289static void __cpuinit r4k_blast_scache_page_indexed_setup(void)
290{ 290{
291 unsigned long sc_lsize = cpu_scache_line_size(); 291 unsigned long sc_lsize = cpu_scache_line_size();
292 292
@@ -304,7 +304,7 @@ static void __init r4k_blast_scache_page_indexed_setup(void)
304 304
305static void (* r4k_blast_scache)(void); 305static void (* r4k_blast_scache)(void);
306 306
307static void __init r4k_blast_scache_setup(void) 307static void __cpuinit r4k_blast_scache_setup(void)
308{ 308{
309 unsigned long sc_lsize = cpu_scache_line_size(); 309 unsigned long sc_lsize = cpu_scache_line_size();
310 310
@@ -691,11 +691,11 @@ static inline void rm7k_erratum31(void)
691 } 691 }
692} 692}
693 693
694static char *way_string[] __initdata = { NULL, "direct mapped", "2-way", 694static char *way_string[] __cpuinitdata = { NULL, "direct mapped", "2-way",
695 "3-way", "4-way", "5-way", "6-way", "7-way", "8-way" 695 "3-way", "4-way", "5-way", "6-way", "7-way", "8-way"
696}; 696};
697 697
698static void __init probe_pcache(void) 698static void __cpuinit probe_pcache(void)
699{ 699{
700 struct cpuinfo_mips *c = &current_cpu_data; 700 struct cpuinfo_mips *c = &current_cpu_data;
701 unsigned int config = read_c0_config(); 701 unsigned int config = read_c0_config();
@@ -1016,7 +1016,7 @@ static void __init probe_pcache(void)
1016 * executes in KSEG1 space or else you will crash and burn badly. You have 1016 * executes in KSEG1 space or else you will crash and burn badly. You have
1017 * been warned. 1017 * been warned.
1018 */ 1018 */
1019static int __init probe_scache(void) 1019static int __cpuinit probe_scache(void)
1020{ 1020{
1021 unsigned long flags, addr, begin, end, pow2; 1021 unsigned long flags, addr, begin, end, pow2;
1022 unsigned int config = read_c0_config(); 1022 unsigned int config = read_c0_config();
@@ -1095,7 +1095,7 @@ extern int r5k_sc_init(void);
1095extern int rm7k_sc_init(void); 1095extern int rm7k_sc_init(void);
1096extern int mips_sc_init(void); 1096extern int mips_sc_init(void);
1097 1097
1098static void __init setup_scache(void) 1098static void __cpuinit setup_scache(void)
1099{ 1099{
1100 struct cpuinfo_mips *c = &current_cpu_data; 1100 struct cpuinfo_mips *c = &current_cpu_data;
1101 unsigned int config = read_c0_config(); 1101 unsigned int config = read_c0_config();
@@ -1206,7 +1206,7 @@ void au1x00_fixup_config_od(void)
1206 } 1206 }
1207} 1207}
1208 1208
1209static void __init coherency_setup(void) 1209static void __cpuinit coherency_setup(void)
1210{ 1210{
1211 change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT); 1211 change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT);
1212 1212
@@ -1238,7 +1238,7 @@ static void __init coherency_setup(void)
1238 } 1238 }
1239} 1239}
1240 1240
1241void __init r4k_cache_init(void) 1241void __cpuinit r4k_cache_init(void)
1242{ 1242{
1243 extern void build_clear_page(void); 1243 extern void build_clear_page(void);
1244 extern void build_copy_page(void); 1244 extern void build_copy_page(void);
diff --git a/arch/mips/mm/c-tx39.c b/arch/mips/mm/c-tx39.c
index 9ea121e8cdce..b09d56981d53 100644
--- a/arch/mips/mm/c-tx39.c
+++ b/arch/mips/mm/c-tx39.c
@@ -329,7 +329,7 @@ static __init void tx39_probe_cache(void)
329 } 329 }
330} 330}
331 331
332void __init tx39_cache_init(void) 332void __cpuinit tx39_cache_init(void)
333{ 333{
334 extern void build_clear_page(void); 334 extern void build_clear_page(void);
335 extern void build_copy_page(void); 335 extern void build_copy_page(void);
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index 6a24651971df..51ab1faa027d 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -127,9 +127,10 @@ void __update_cache(struct vm_area_struct *vma, unsigned long address,
127 } 127 }
128} 128}
129 129
130static char cache_panic[] __initdata = "Yeee, unsupported cache architecture."; 130static char cache_panic[] __cpuinitdata =
131 "Yeee, unsupported cache architecture.";
131 132
132void __init cpu_cache_init(void) 133void __devinit cpu_cache_init(void)
133{ 134{
134 if (cpu_has_3k_cache) { 135 if (cpu_has_3k_cache) {
135 extern void __weak r3k_cache_init(void); 136 extern void __weak r3k_cache_init(void);
diff --git a/arch/mips/mm/cex-sb1.S b/arch/mips/mm/cex-sb1.S
index e54a62f2807c..2d08268bb705 100644
--- a/arch/mips/mm/cex-sb1.S
+++ b/arch/mips/mm/cex-sb1.S
@@ -34,8 +34,6 @@
34 * is changed. 34 * is changed.
35 */ 35 */
36 36
37 __INIT
38
39 .set mips64 37 .set mips64
40 .set noreorder 38 .set noreorder
41 .set noat 39 .set noat
@@ -51,6 +49,8 @@
51 * (0x170-0x17f) are used to preserve k0, k1, and ra. 49 * (0x170-0x17f) are used to preserve k0, k1, and ra.
52 */ 50 */
53 51
52 __CPUINIT
53
54LEAF(except_vec2_sb1) 54LEAF(except_vec2_sb1)
55 /* 55 /*
56 * If this error is recoverable, we need to exit the handler 56 * If this error is recoverable, we need to exit the handler
diff --git a/arch/mips/mm/pg-r4k.c b/arch/mips/mm/pg-r4k.c
index 9185fbf37c0d..455dedb5b39e 100644
--- a/arch/mips/mm/pg-r4k.c
+++ b/arch/mips/mm/pg-r4k.c
@@ -66,21 +66,21 @@ EXPORT_SYMBOL(copy_page);
66 * with 64-bit kernels. The prefetch offsets have been experimentally tuned 66 * with 64-bit kernels. The prefetch offsets have been experimentally tuned
67 * an Origin 200. 67 * an Origin 200.
68 */ 68 */
69static int pref_offset_clear __initdata = 512; 69static int pref_offset_clear __cpuinitdata = 512;
70static int pref_offset_copy __initdata = 256; 70static int pref_offset_copy __cpuinitdata = 256;
71 71
72static unsigned int pref_src_mode __initdata; 72static unsigned int pref_src_mode __cpuinitdata;
73static unsigned int pref_dst_mode __initdata; 73static unsigned int pref_dst_mode __cpuinitdata;
74 74
75static int load_offset __initdata; 75static int load_offset __cpuinitdata;
76static int store_offset __initdata; 76static int store_offset __cpuinitdata;
77 77
78static unsigned int __initdata *dest, *epc; 78static unsigned int __cpuinitdata *dest, *epc;
79 79
80static unsigned int instruction_pending; 80static unsigned int instruction_pending;
81static union mips_instruction delayed_mi; 81static union mips_instruction delayed_mi;
82 82
83static void __init emit_instruction(union mips_instruction mi) 83static void __cpuinit emit_instruction(union mips_instruction mi)
84{ 84{
85 if (instruction_pending) 85 if (instruction_pending)
86 *epc++ = delayed_mi.word; 86 *epc++ = delayed_mi.word;
@@ -222,7 +222,7 @@ static inline void build_cdex_p(void)
222 emit_instruction(mi); 222 emit_instruction(mi);
223} 223}
224 224
225static void __init __build_store_reg(int reg) 225static void __cpuinit __build_store_reg(int reg)
226{ 226{
227 union mips_instruction mi; 227 union mips_instruction mi;
228 unsigned int width; 228 unsigned int width;
@@ -339,7 +339,7 @@ static inline void build_jr_ra(void)
339 flush_delay_slot_or_nop(); 339 flush_delay_slot_or_nop();
340} 340}
341 341
342void __init build_clear_page(void) 342void __cpuinit build_clear_page(void)
343{ 343{
344 unsigned int loop_start; 344 unsigned int loop_start;
345 unsigned long off; 345 unsigned long off;
@@ -442,7 +442,7 @@ dest = label();
442 pr_debug("\t.set pop\n"); 442 pr_debug("\t.set pop\n");
443} 443}
444 444
445void __init build_copy_page(void) 445void __cpuinit build_copy_page(void)
446{ 446{
447 unsigned int loop_start; 447 unsigned int loop_start;
448 unsigned long off; 448 unsigned long off;
diff --git a/arch/mips/mm/pg-sb1.c b/arch/mips/mm/pg-sb1.c
index 89925ec57d6a..49e289d05414 100644
--- a/arch/mips/mm/pg-sb1.c
+++ b/arch/mips/mm/pg-sb1.c
@@ -293,10 +293,10 @@ void copy_page(void *to, void *from)
293EXPORT_SYMBOL(clear_page); 293EXPORT_SYMBOL(clear_page);
294EXPORT_SYMBOL(copy_page); 294EXPORT_SYMBOL(copy_page);
295 295
296void __init build_clear_page(void) 296void __cpuinit build_clear_page(void)
297{ 297{
298} 298}
299 299
300void __init build_copy_page(void) 300void __cpuinit build_copy_page(void)
301{ 301{
302} 302}
diff --git a/arch/mips/mm/sc-ip22.c b/arch/mips/mm/sc-ip22.c
index d236cf8b7374..1f602a110e10 100644
--- a/arch/mips/mm/sc-ip22.c
+++ b/arch/mips/mm/sc-ip22.c
@@ -168,7 +168,7 @@ struct bcache_ops indy_sc_ops = {
168 .bc_inv = indy_sc_wback_invalidate 168 .bc_inv = indy_sc_wback_invalidate
169}; 169};
170 170
171void __init indy_sc_init(void) 171void __cpuinit indy_sc_init(void)
172{ 172{
173 if (indy_sc_probe()) { 173 if (indy_sc_probe()) {
174 indy_sc_enable(); 174 indy_sc_enable();
diff --git a/arch/mips/mm/sc-mips.c b/arch/mips/mm/sc-mips.c
index c13170bc675c..b55c2d1b998f 100644
--- a/arch/mips/mm/sc-mips.c
+++ b/arch/mips/mm/sc-mips.c
@@ -100,7 +100,7 @@ static inline int __init mips_sc_probe(void)
100 return 1; 100 return 1;
101} 101}
102 102
103int __init mips_sc_init(void) 103int __cpuinit mips_sc_init(void)
104{ 104{
105 int found = mips_sc_probe(); 105 int found = mips_sc_probe();
106 if (found) { 106 if (found) {
@@ -109,4 +109,3 @@ int __init mips_sc_init(void)
109 } 109 }
110 return found; 110 return found;
111} 111}
112
diff --git a/arch/mips/mm/sc-r5k.c b/arch/mips/mm/sc-r5k.c
index d35b6c1103a3..f330d38e5575 100644
--- a/arch/mips/mm/sc-r5k.c
+++ b/arch/mips/mm/sc-r5k.c
@@ -99,7 +99,7 @@ static struct bcache_ops r5k_sc_ops = {
99 .bc_inv = r5k_dma_cache_inv_sc 99 .bc_inv = r5k_dma_cache_inv_sc
100}; 100};
101 101
102void __init r5k_sc_init(void) 102void __cpuinit r5k_sc_init(void)
103{ 103{
104 if (r5k_sc_probe()) { 104 if (r5k_sc_probe()) {
105 r5k_sc_enable(); 105 r5k_sc_enable();
diff --git a/arch/mips/mm/sc-rm7k.c b/arch/mips/mm/sc-rm7k.c
index 31ec73052423..fc227f3b1199 100644
--- a/arch/mips/mm/sc-rm7k.c
+++ b/arch/mips/mm/sc-rm7k.c
@@ -128,7 +128,7 @@ struct bcache_ops rm7k_sc_ops = {
128 .bc_inv = rm7k_sc_inv 128 .bc_inv = rm7k_sc_inv
129}; 129};
130 130
131void __init rm7k_sc_init(void) 131void __cpuinit rm7k_sc_init(void)
132{ 132{
133 struct cpuinfo_mips *c = &current_cpu_data; 133 struct cpuinfo_mips *c = &current_cpu_data;
134 unsigned int config = read_c0_config(); 134 unsigned int config = read_c0_config();
diff --git a/arch/mips/mm/tlb-r3k.c b/arch/mips/mm/tlb-r3k.c
index 7948e9a5e372..a782549ac80e 100644
--- a/arch/mips/mm/tlb-r3k.c
+++ b/arch/mips/mm/tlb-r3k.c
@@ -281,7 +281,7 @@ void __init add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
281 } 281 }
282} 282}
283 283
284void __init tlb_init(void) 284void __cpuinit tlb_init(void)
285{ 285{
286 local_flush_tlb_all(); 286 local_flush_tlb_all();
287 287
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c
index 74ae0348cc92..63065d6e8063 100644
--- a/arch/mips/mm/tlb-r4k.c
+++ b/arch/mips/mm/tlb-r4k.c
@@ -388,7 +388,7 @@ void __init add_wired_entry(unsigned long entrylo0, unsigned long entrylo1,
388 * lifetime of the system 388 * lifetime of the system
389 */ 389 */
390 390
391static int temp_tlb_entry __initdata; 391static int temp_tlb_entry __cpuinitdata;
392 392
393__init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, 393__init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
394 unsigned long entryhi, unsigned long pagemask) 394 unsigned long entryhi, unsigned long pagemask)
@@ -427,7 +427,7 @@ out:
427 return ret; 427 return ret;
428} 428}
429 429
430static void __init probe_tlb(unsigned long config) 430static void __cpuinit probe_tlb(unsigned long config)
431{ 431{
432 struct cpuinfo_mips *c = &current_cpu_data; 432 struct cpuinfo_mips *c = &current_cpu_data;
433 unsigned int reg; 433 unsigned int reg;
@@ -455,7 +455,7 @@ static void __init probe_tlb(unsigned long config)
455 c->tlbsize = ((reg >> 25) & 0x3f) + 1; 455 c->tlbsize = ((reg >> 25) & 0x3f) + 1;
456} 456}
457 457
458static int __initdata ntlb = 0; 458static int __cpuinitdata ntlb = 0;
459static int __init set_ntlb(char *str) 459static int __init set_ntlb(char *str)
460{ 460{
461 get_option(&str, &ntlb); 461 get_option(&str, &ntlb);
@@ -464,7 +464,7 @@ static int __init set_ntlb(char *str)
464 464
465__setup("ntlb=", set_ntlb); 465__setup("ntlb=", set_ntlb);
466 466
467void __init tlb_init(void) 467void __cpuinit tlb_init(void)
468{ 468{
469 unsigned int config = read_c0_config(); 469 unsigned int config = read_c0_config();
470 470
@@ -473,7 +473,7 @@ void __init tlb_init(void)
473 * - On R4600 1.7 the tlbp never hits for pages smaller than 473 * - On R4600 1.7 the tlbp never hits for pages smaller than
474 * the value in the c0_pagemask register. 474 * the value in the c0_pagemask register.
475 * - The entire mm handling assumes the c0_pagemask register to 475 * - The entire mm handling assumes the c0_pagemask register to
476 * be set for 4kb pages. 476 * be set to fixed-size pages.
477 */ 477 */
478 probe_tlb(config); 478 probe_tlb(config);
479 write_c0_pagemask(PM_DEFAULT_MASK); 479 write_c0_pagemask(PM_DEFAULT_MASK);
diff --git a/arch/mips/mm/tlb-r8k.c b/arch/mips/mm/tlb-r8k.c
index bd8409d8ff62..4f01a3be215c 100644
--- a/arch/mips/mm/tlb-r8k.c
+++ b/arch/mips/mm/tlb-r8k.c
@@ -214,14 +214,14 @@ void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte)
214 local_irq_restore(flags); 214 local_irq_restore(flags);
215} 215}
216 216
217static void __init probe_tlb(unsigned long config) 217static void __cpuinit probe_tlb(unsigned long config)
218{ 218{
219 struct cpuinfo_mips *c = &current_cpu_data; 219 struct cpuinfo_mips *c = &current_cpu_data;
220 220
221 c->tlbsize = 3 * 128; /* 3 sets each 128 entries */ 221 c->tlbsize = 3 * 128; /* 3 sets each 128 entries */
222} 222}
223 223
224void __init tlb_init(void) 224void __cpuinit tlb_init(void)
225{ 225{
226 unsigned int config = read_c0_config(); 226 unsigned int config = read_c0_config();
227 unsigned long status; 227 unsigned long status;
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
index 218a6cc415e8..3a93d4ce2703 100644
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -60,7 +60,7 @@ static inline int __maybe_unused r10000_llsc_war(void)
60 * why; it's not an issue caused by the core RTL. 60 * why; it's not an issue caused by the core RTL.
61 * 61 *
62 */ 62 */
63static int __init m4kc_tlbp_war(void) 63static int __cpuinit m4kc_tlbp_war(void)
64{ 64{
65 return (current_cpu_data.processor_id & 0xffff00) == 65 return (current_cpu_data.processor_id & 0xffff00) ==
66 (PRID_COMP_MIPS | PRID_IMP_4KC); 66 (PRID_COMP_MIPS | PRID_IMP_4KC);
@@ -144,16 +144,16 @@ static inline void dump_handler(const u32 *handler, int count)
144 * We deliberately chose a buffer size of 128, so we won't scribble 144 * We deliberately chose a buffer size of 128, so we won't scribble
145 * over anything important on overflow before we panic. 145 * over anything important on overflow before we panic.
146 */ 146 */
147static u32 tlb_handler[128] __initdata; 147static u32 tlb_handler[128] __cpuinitdata;
148 148
149/* simply assume worst case size for labels and relocs */ 149/* simply assume worst case size for labels and relocs */
150static struct uasm_label labels[128] __initdata; 150static struct uasm_label labels[128] __cpuinitdata;
151static struct uasm_reloc relocs[128] __initdata; 151static struct uasm_reloc relocs[128] __cpuinitdata;
152 152
153/* 153/*
154 * The R3000 TLB handler is simple. 154 * The R3000 TLB handler is simple.
155 */ 155 */
156static void __init build_r3000_tlb_refill_handler(void) 156static void __cpuinit build_r3000_tlb_refill_handler(void)
157{ 157{
158 long pgdc = (long)pgd_current; 158 long pgdc = (long)pgd_current;
159 u32 *p; 159 u32 *p;
@@ -197,7 +197,7 @@ static void __init build_r3000_tlb_refill_handler(void)
197 * other one.To keep things simple, we first assume linear space, 197 * other one.To keep things simple, we first assume linear space,
198 * then we relocate it to the final handler layout as needed. 198 * then we relocate it to the final handler layout as needed.
199 */ 199 */
200static u32 final_handler[64] __initdata; 200static u32 final_handler[64] __cpuinitdata;
201 201
202/* 202/*
203 * Hazards 203 * Hazards
@@ -221,7 +221,7 @@ static u32 final_handler[64] __initdata;
221 * 221 *
222 * As if we MIPS hackers wouldn't know how to nop pipelines happy ... 222 * As if we MIPS hackers wouldn't know how to nop pipelines happy ...
223 */ 223 */
224static void __init __maybe_unused build_tlb_probe_entry(u32 **p) 224static void __cpuinit __maybe_unused build_tlb_probe_entry(u32 **p)
225{ 225{
226 switch (current_cpu_type()) { 226 switch (current_cpu_type()) {
227 /* Found by experiment: R4600 v2.0 needs this, too. */ 227 /* Found by experiment: R4600 v2.0 needs this, too. */
@@ -245,7 +245,7 @@ static void __init __maybe_unused build_tlb_probe_entry(u32 **p)
245 */ 245 */
246enum tlb_write_entry { tlb_random, tlb_indexed }; 246enum tlb_write_entry { tlb_random, tlb_indexed };
247 247
248static void __init build_tlb_write_entry(u32 **p, struct uasm_label **l, 248static void __cpuinit build_tlb_write_entry(u32 **p, struct uasm_label **l,
249 struct uasm_reloc **r, 249 struct uasm_reloc **r,
250 enum tlb_write_entry wmode) 250 enum tlb_write_entry wmode)
251{ 251{
@@ -389,7 +389,7 @@ static void __init build_tlb_write_entry(u32 **p, struct uasm_label **l,
389 * TMP and PTR are scratch. 389 * TMP and PTR are scratch.
390 * TMP will be clobbered, PTR will hold the pmd entry. 390 * TMP will be clobbered, PTR will hold the pmd entry.
391 */ 391 */
392static void __init 392static void __cpuinit
393build_get_pmde64(u32 **p, struct uasm_label **l, struct uasm_reloc **r, 393build_get_pmde64(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
394 unsigned int tmp, unsigned int ptr) 394 unsigned int tmp, unsigned int ptr)
395{ 395{
@@ -450,7 +450,7 @@ build_get_pmde64(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
450 * BVADDR is the faulting address, PTR is scratch. 450 * BVADDR is the faulting address, PTR is scratch.
451 * PTR will hold the pgd for vmalloc. 451 * PTR will hold the pgd for vmalloc.
452 */ 452 */
453static void __init 453static void __cpuinit
454build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r, 454build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
455 unsigned int bvaddr, unsigned int ptr) 455 unsigned int bvaddr, unsigned int ptr)
456{ 456{
@@ -522,7 +522,7 @@ build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
522 * TMP and PTR are scratch. 522 * TMP and PTR are scratch.
523 * TMP will be clobbered, PTR will hold the pgd entry. 523 * TMP will be clobbered, PTR will hold the pgd entry.
524 */ 524 */
525static void __init __maybe_unused 525static void __cpuinit __maybe_unused
526build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr) 526build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr)
527{ 527{
528 long pgdc = (long)pgd_current; 528 long pgdc = (long)pgd_current;
@@ -557,7 +557,7 @@ build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr)
557 557
558#endif /* !CONFIG_64BIT */ 558#endif /* !CONFIG_64BIT */
559 559
560static void __init build_adjust_context(u32 **p, unsigned int ctx) 560static void __cpuinit build_adjust_context(u32 **p, unsigned int ctx)
561{ 561{
562 unsigned int shift = 4 - (PTE_T_LOG2 + 1) + PAGE_SHIFT - 12; 562 unsigned int shift = 4 - (PTE_T_LOG2 + 1) + PAGE_SHIFT - 12;
563 unsigned int mask = (PTRS_PER_PTE / 2 - 1) << (PTE_T_LOG2 + 1); 563 unsigned int mask = (PTRS_PER_PTE / 2 - 1) << (PTE_T_LOG2 + 1);
@@ -583,7 +583,7 @@ static void __init build_adjust_context(u32 **p, unsigned int ctx)
583 uasm_i_andi(p, ctx, ctx, mask); 583 uasm_i_andi(p, ctx, ctx, mask);
584} 584}
585 585
586static void __init build_get_ptep(u32 **p, unsigned int tmp, unsigned int ptr) 586static void __cpuinit build_get_ptep(u32 **p, unsigned int tmp, unsigned int ptr)
587{ 587{
588 /* 588 /*
589 * Bug workaround for the Nevada. It seems as if under certain 589 * Bug workaround for the Nevada. It seems as if under certain
@@ -608,7 +608,7 @@ static void __init build_get_ptep(u32 **p, unsigned int tmp, unsigned int ptr)
608 UASM_i_ADDU(p, ptr, ptr, tmp); /* add in offset */ 608 UASM_i_ADDU(p, ptr, ptr, tmp); /* add in offset */
609} 609}
610 610
611static void __init build_update_entries(u32 **p, unsigned int tmp, 611static void __cpuinit build_update_entries(u32 **p, unsigned int tmp,
612 unsigned int ptep) 612 unsigned int ptep)
613{ 613{
614 /* 614 /*
@@ -651,7 +651,7 @@ static void __init build_update_entries(u32 **p, unsigned int tmp,
651#endif 651#endif
652} 652}
653 653
654static void __init build_r4000_tlb_refill_handler(void) 654static void __cpuinit build_r4000_tlb_refill_handler(void)
655{ 655{
656 u32 *p = tlb_handler; 656 u32 *p = tlb_handler;
657 struct uasm_label *l = labels; 657 struct uasm_label *l = labels;
@@ -783,7 +783,7 @@ u32 handle_tlbl[FASTPATH_SIZE] __cacheline_aligned;
783u32 handle_tlbs[FASTPATH_SIZE] __cacheline_aligned; 783u32 handle_tlbs[FASTPATH_SIZE] __cacheline_aligned;
784u32 handle_tlbm[FASTPATH_SIZE] __cacheline_aligned; 784u32 handle_tlbm[FASTPATH_SIZE] __cacheline_aligned;
785 785
786static void __init 786static void __cpuinit
787iPTE_LW(u32 **p, struct uasm_label **l, unsigned int pte, unsigned int ptr) 787iPTE_LW(u32 **p, struct uasm_label **l, unsigned int pte, unsigned int ptr)
788{ 788{
789#ifdef CONFIG_SMP 789#ifdef CONFIG_SMP
@@ -803,7 +803,7 @@ iPTE_LW(u32 **p, struct uasm_label **l, unsigned int pte, unsigned int ptr)
803#endif 803#endif
804} 804}
805 805
806static void __init 806static void __cpuinit
807iPTE_SW(u32 **p, struct uasm_reloc **r, unsigned int pte, unsigned int ptr, 807iPTE_SW(u32 **p, struct uasm_reloc **r, unsigned int pte, unsigned int ptr,
808 unsigned int mode) 808 unsigned int mode)
809{ 809{
@@ -863,7 +863,7 @@ iPTE_SW(u32 **p, struct uasm_reloc **r, unsigned int pte, unsigned int ptr,
863 * the page table where this PTE is located, PTE will be re-loaded 863 * the page table where this PTE is located, PTE will be re-loaded
864 * with it's original value. 864 * with it's original value.
865 */ 865 */
866static void __init 866static void __cpuinit
867build_pte_present(u32 **p, struct uasm_label **l, struct uasm_reloc **r, 867build_pte_present(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
868 unsigned int pte, unsigned int ptr, enum label_id lid) 868 unsigned int pte, unsigned int ptr, enum label_id lid)
869{ 869{
@@ -874,7 +874,7 @@ build_pte_present(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
874} 874}
875 875
876/* Make PTE valid, store result in PTR. */ 876/* Make PTE valid, store result in PTR. */
877static void __init 877static void __cpuinit
878build_make_valid(u32 **p, struct uasm_reloc **r, unsigned int pte, 878build_make_valid(u32 **p, struct uasm_reloc **r, unsigned int pte,
879 unsigned int ptr) 879 unsigned int ptr)
880{ 880{
@@ -887,7 +887,7 @@ build_make_valid(u32 **p, struct uasm_reloc **r, unsigned int pte,
887 * Check if PTE can be written to, if not branch to LABEL. Regardless 887 * Check if PTE can be written to, if not branch to LABEL. Regardless
888 * restore PTE with value from PTR when done. 888 * restore PTE with value from PTR when done.
889 */ 889 */
890static void __init 890static void __cpuinit
891build_pte_writable(u32 **p, struct uasm_label **l, struct uasm_reloc **r, 891build_pte_writable(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
892 unsigned int pte, unsigned int ptr, enum label_id lid) 892 unsigned int pte, unsigned int ptr, enum label_id lid)
893{ 893{
@@ -900,7 +900,7 @@ build_pte_writable(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
900/* Make PTE writable, update software status bits as well, then store 900/* Make PTE writable, update software status bits as well, then store
901 * at PTR. 901 * at PTR.
902 */ 902 */
903static void __init 903static void __cpuinit
904build_make_write(u32 **p, struct uasm_reloc **r, unsigned int pte, 904build_make_write(u32 **p, struct uasm_reloc **r, unsigned int pte,
905 unsigned int ptr) 905 unsigned int ptr)
906{ 906{
@@ -914,7 +914,7 @@ build_make_write(u32 **p, struct uasm_reloc **r, unsigned int pte,
914 * Check if PTE can be modified, if not branch to LABEL. Regardless 914 * Check if PTE can be modified, if not branch to LABEL. Regardless
915 * restore PTE with value from PTR when done. 915 * restore PTE with value from PTR when done.
916 */ 916 */
917static void __init 917static void __cpuinit
918build_pte_modifiable(u32 **p, struct uasm_label **l, struct uasm_reloc **r, 918build_pte_modifiable(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
919 unsigned int pte, unsigned int ptr, enum label_id lid) 919 unsigned int pte, unsigned int ptr, enum label_id lid)
920{ 920{
@@ -931,7 +931,7 @@ build_pte_modifiable(u32 **p, struct uasm_label **l, struct uasm_reloc **r,
931 * This places the pte into ENTRYLO0 and writes it with tlbwi. 931 * This places the pte into ENTRYLO0 and writes it with tlbwi.
932 * Then it returns. 932 * Then it returns.
933 */ 933 */
934static void __init 934static void __cpuinit
935build_r3000_pte_reload_tlbwi(u32 **p, unsigned int pte, unsigned int tmp) 935build_r3000_pte_reload_tlbwi(u32 **p, unsigned int pte, unsigned int tmp)
936{ 936{
937 uasm_i_mtc0(p, pte, C0_ENTRYLO0); /* cp0 delay */ 937 uasm_i_mtc0(p, pte, C0_ENTRYLO0); /* cp0 delay */
@@ -947,7 +947,7 @@ build_r3000_pte_reload_tlbwi(u32 **p, unsigned int pte, unsigned int tmp)
947 * may have the probe fail bit set as a result of a trap on a 947 * may have the probe fail bit set as a result of a trap on a
948 * kseg2 access, i.e. without refill. Then it returns. 948 * kseg2 access, i.e. without refill. Then it returns.
949 */ 949 */
950static void __init 950static void __cpuinit
951build_r3000_tlb_reload_write(u32 **p, struct uasm_label **l, 951build_r3000_tlb_reload_write(u32 **p, struct uasm_label **l,
952 struct uasm_reloc **r, unsigned int pte, 952 struct uasm_reloc **r, unsigned int pte,
953 unsigned int tmp) 953 unsigned int tmp)
@@ -965,7 +965,7 @@ build_r3000_tlb_reload_write(u32 **p, struct uasm_label **l,
965 uasm_i_rfe(p); /* branch delay */ 965 uasm_i_rfe(p); /* branch delay */
966} 966}
967 967
968static void __init 968static void __cpuinit
969build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte, 969build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte,
970 unsigned int ptr) 970 unsigned int ptr)
971{ 971{
@@ -985,7 +985,7 @@ build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte,
985 uasm_i_tlbp(p); /* load delay */ 985 uasm_i_tlbp(p); /* load delay */
986} 986}
987 987
988static void __init build_r3000_tlb_load_handler(void) 988static void __cpuinit build_r3000_tlb_load_handler(void)
989{ 989{
990 u32 *p = handle_tlbl; 990 u32 *p = handle_tlbl;
991 struct uasm_label *l = labels; 991 struct uasm_label *l = labels;
@@ -1015,7 +1015,7 @@ static void __init build_r3000_tlb_load_handler(void)
1015 dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl)); 1015 dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl));
1016} 1016}
1017 1017
1018static void __init build_r3000_tlb_store_handler(void) 1018static void __cpuinit build_r3000_tlb_store_handler(void)
1019{ 1019{
1020 u32 *p = handle_tlbs; 1020 u32 *p = handle_tlbs;
1021 struct uasm_label *l = labels; 1021 struct uasm_label *l = labels;
@@ -1045,7 +1045,7 @@ static void __init build_r3000_tlb_store_handler(void)
1045 dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs)); 1045 dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs));
1046} 1046}
1047 1047
1048static void __init build_r3000_tlb_modify_handler(void) 1048static void __cpuinit build_r3000_tlb_modify_handler(void)
1049{ 1049{
1050 u32 *p = handle_tlbm; 1050 u32 *p = handle_tlbm;
1051 struct uasm_label *l = labels; 1051 struct uasm_label *l = labels;
@@ -1078,7 +1078,7 @@ static void __init build_r3000_tlb_modify_handler(void)
1078/* 1078/*
1079 * R4000 style TLB load/store/modify handlers. 1079 * R4000 style TLB load/store/modify handlers.
1080 */ 1080 */
1081static void __init 1081static void __cpuinit
1082build_r4000_tlbchange_handler_head(u32 **p, struct uasm_label **l, 1082build_r4000_tlbchange_handler_head(u32 **p, struct uasm_label **l,
1083 struct uasm_reloc **r, unsigned int pte, 1083 struct uasm_reloc **r, unsigned int pte,
1084 unsigned int ptr) 1084 unsigned int ptr)
@@ -1103,7 +1103,7 @@ build_r4000_tlbchange_handler_head(u32 **p, struct uasm_label **l,
1103 build_tlb_probe_entry(p); 1103 build_tlb_probe_entry(p);
1104} 1104}
1105 1105
1106static void __init 1106static void __cpuinit
1107build_r4000_tlbchange_handler_tail(u32 **p, struct uasm_label **l, 1107build_r4000_tlbchange_handler_tail(u32 **p, struct uasm_label **l,
1108 struct uasm_reloc **r, unsigned int tmp, 1108 struct uasm_reloc **r, unsigned int tmp,
1109 unsigned int ptr) 1109 unsigned int ptr)
@@ -1120,7 +1120,7 @@ build_r4000_tlbchange_handler_tail(u32 **p, struct uasm_label **l,
1120#endif 1120#endif
1121} 1121}
1122 1122
1123static void __init build_r4000_tlb_load_handler(void) 1123static void __cpuinit build_r4000_tlb_load_handler(void)
1124{ 1124{
1125 u32 *p = handle_tlbl; 1125 u32 *p = handle_tlbl;
1126 struct uasm_label *l = labels; 1126 struct uasm_label *l = labels;
@@ -1160,7 +1160,7 @@ static void __init build_r4000_tlb_load_handler(void)
1160 dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl)); 1160 dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl));
1161} 1161}
1162 1162
1163static void __init build_r4000_tlb_store_handler(void) 1163static void __cpuinit build_r4000_tlb_store_handler(void)
1164{ 1164{
1165 u32 *p = handle_tlbs; 1165 u32 *p = handle_tlbs;
1166 struct uasm_label *l = labels; 1166 struct uasm_label *l = labels;
@@ -1191,7 +1191,7 @@ static void __init build_r4000_tlb_store_handler(void)
1191 dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs)); 1191 dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs));
1192} 1192}
1193 1193
1194static void __init build_r4000_tlb_modify_handler(void) 1194static void __cpuinit build_r4000_tlb_modify_handler(void)
1195{ 1195{
1196 u32 *p = handle_tlbm; 1196 u32 *p = handle_tlbm;
1197 struct uasm_label *l = labels; 1197 struct uasm_label *l = labels;
@@ -1223,7 +1223,7 @@ static void __init build_r4000_tlb_modify_handler(void)
1223 dump_handler(handle_tlbm, ARRAY_SIZE(handle_tlbm)); 1223 dump_handler(handle_tlbm, ARRAY_SIZE(handle_tlbm));
1224} 1224}
1225 1225
1226void __init build_tlb_refill_handler(void) 1226void __cpuinit build_tlb_refill_handler(void)
1227{ 1227{
1228 /* 1228 /*
1229 * The refill handler is generated per-CPU, multi-node systems 1229 * The refill handler is generated per-CPU, multi-node systems
@@ -1269,7 +1269,7 @@ void __init build_tlb_refill_handler(void)
1269 } 1269 }
1270} 1270}
1271 1271
1272void __init flush_tlb_handlers(void) 1272void __cpuinit flush_tlb_handlers(void)
1273{ 1273{
1274 flush_icache_range((unsigned long)handle_tlbl, 1274 flush_icache_range((unsigned long)handle_tlbl,
1275 (unsigned long)handle_tlbl + sizeof(handle_tlbl)); 1275 (unsigned long)handle_tlbl + sizeof(handle_tlbl));
diff --git a/arch/mips/mm/uasm.c b/arch/mips/mm/uasm.c
index e3f74ed5f704..1a6f7704cc89 100644
--- a/arch/mips/mm/uasm.c
+++ b/arch/mips/mm/uasm.c
@@ -82,7 +82,7 @@ struct insn {
82 | (e) << RE_SH \ 82 | (e) << RE_SH \
83 | (f) << FUNC_SH) 83 | (f) << FUNC_SH)
84 84
85static struct insn insn_table[] __initdata = { 85static struct insn insn_table[] __cpuinitdata = {
86 { insn_addiu, M(addiu_op, 0, 0, 0, 0, 0), RS | RT | SIMM }, 86 { insn_addiu, M(addiu_op, 0, 0, 0, 0, 0), RS | RT | SIMM },
87 { insn_addu, M(spec_op, 0, 0, 0, 0, addu_op), RS | RT | RD }, 87 { insn_addu, M(spec_op, 0, 0, 0, 0, addu_op), RS | RT | RD },
88 { insn_and, M(spec_op, 0, 0, 0, 0, and_op), RS | RT | RD }, 88 { insn_and, M(spec_op, 0, 0, 0, 0, and_op), RS | RT | RD },
@@ -135,7 +135,7 @@ static struct insn insn_table[] __initdata = {
135 135
136#undef M 136#undef M
137 137
138static inline __init u32 build_rs(u32 arg) 138static inline __cpuinit u32 build_rs(u32 arg)
139{ 139{
140 if (arg & ~RS_MASK) 140 if (arg & ~RS_MASK)
141 printk(KERN_WARNING "Micro-assembler field overflow\n"); 141 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -143,7 +143,7 @@ static inline __init u32 build_rs(u32 arg)
143 return (arg & RS_MASK) << RS_SH; 143 return (arg & RS_MASK) << RS_SH;
144} 144}
145 145
146static inline __init u32 build_rt(u32 arg) 146static inline __cpuinit u32 build_rt(u32 arg)
147{ 147{
148 if (arg & ~RT_MASK) 148 if (arg & ~RT_MASK)
149 printk(KERN_WARNING "Micro-assembler field overflow\n"); 149 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -151,7 +151,7 @@ static inline __init u32 build_rt(u32 arg)
151 return (arg & RT_MASK) << RT_SH; 151 return (arg & RT_MASK) << RT_SH;
152} 152}
153 153
154static inline __init u32 build_rd(u32 arg) 154static inline __cpuinit u32 build_rd(u32 arg)
155{ 155{
156 if (arg & ~RD_MASK) 156 if (arg & ~RD_MASK)
157 printk(KERN_WARNING "Micro-assembler field overflow\n"); 157 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -159,7 +159,7 @@ static inline __init u32 build_rd(u32 arg)
159 return (arg & RD_MASK) << RD_SH; 159 return (arg & RD_MASK) << RD_SH;
160} 160}
161 161
162static inline __init u32 build_re(u32 arg) 162static inline __cpuinit u32 build_re(u32 arg)
163{ 163{
164 if (arg & ~RE_MASK) 164 if (arg & ~RE_MASK)
165 printk(KERN_WARNING "Micro-assembler field overflow\n"); 165 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -167,7 +167,7 @@ static inline __init u32 build_re(u32 arg)
167 return (arg & RE_MASK) << RE_SH; 167 return (arg & RE_MASK) << RE_SH;
168} 168}
169 169
170static inline __init u32 build_simm(s32 arg) 170static inline __cpuinit u32 build_simm(s32 arg)
171{ 171{
172 if (arg > 0x7fff || arg < -0x8000) 172 if (arg > 0x7fff || arg < -0x8000)
173 printk(KERN_WARNING "Micro-assembler field overflow\n"); 173 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -175,7 +175,7 @@ static inline __init u32 build_simm(s32 arg)
175 return arg & 0xffff; 175 return arg & 0xffff;
176} 176}
177 177
178static inline __init u32 build_uimm(u32 arg) 178static inline __cpuinit u32 build_uimm(u32 arg)
179{ 179{
180 if (arg & ~IMM_MASK) 180 if (arg & ~IMM_MASK)
181 printk(KERN_WARNING "Micro-assembler field overflow\n"); 181 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -183,7 +183,7 @@ static inline __init u32 build_uimm(u32 arg)
183 return arg & IMM_MASK; 183 return arg & IMM_MASK;
184} 184}
185 185
186static inline __init u32 build_bimm(s32 arg) 186static inline __cpuinit u32 build_bimm(s32 arg)
187{ 187{
188 if (arg > 0x1ffff || arg < -0x20000) 188 if (arg > 0x1ffff || arg < -0x20000)
189 printk(KERN_WARNING "Micro-assembler field overflow\n"); 189 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -194,7 +194,7 @@ static inline __init u32 build_bimm(s32 arg)
194 return ((arg < 0) ? (1 << 15) : 0) | ((arg >> 2) & 0x7fff); 194 return ((arg < 0) ? (1 << 15) : 0) | ((arg >> 2) & 0x7fff);
195} 195}
196 196
197static inline __init u32 build_jimm(u32 arg) 197static inline __cpuinit u32 build_jimm(u32 arg)
198{ 198{
199 if (arg & ~((JIMM_MASK) << 2)) 199 if (arg & ~((JIMM_MASK) << 2))
200 printk(KERN_WARNING "Micro-assembler field overflow\n"); 200 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -202,7 +202,7 @@ static inline __init u32 build_jimm(u32 arg)
202 return (arg >> 2) & JIMM_MASK; 202 return (arg >> 2) & JIMM_MASK;
203} 203}
204 204
205static inline __init u32 build_func(u32 arg) 205static inline __cpuinit u32 build_func(u32 arg)
206{ 206{
207 if (arg & ~FUNC_MASK) 207 if (arg & ~FUNC_MASK)
208 printk(KERN_WARNING "Micro-assembler field overflow\n"); 208 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -210,7 +210,7 @@ static inline __init u32 build_func(u32 arg)
210 return arg & FUNC_MASK; 210 return arg & FUNC_MASK;
211} 211}
212 212
213static inline __init u32 build_set(u32 arg) 213static inline __cpuinit u32 build_set(u32 arg)
214{ 214{
215 if (arg & ~SET_MASK) 215 if (arg & ~SET_MASK)
216 printk(KERN_WARNING "Micro-assembler field overflow\n"); 216 printk(KERN_WARNING "Micro-assembler field overflow\n");
@@ -222,7 +222,7 @@ static inline __init u32 build_set(u32 arg)
222 * The order of opcode arguments is implicitly left to right, 222 * The order of opcode arguments is implicitly left to right,
223 * starting with RS and ending with FUNC or IMM. 223 * starting with RS and ending with FUNC or IMM.
224 */ 224 */
225static void __init build_insn(u32 **buf, enum opcode opc, ...) 225static void __cpuinit build_insn(u32 **buf, enum opcode opc, ...)
226{ 226{
227 struct insn *ip = NULL; 227 struct insn *ip = NULL;
228 unsigned int i; 228 unsigned int i;
@@ -375,14 +375,14 @@ I_u3u1u2(_xor)
375I_u2u1u3(_xori) 375I_u2u1u3(_xori)
376 376
377/* Handle labels. */ 377/* Handle labels. */
378void __init uasm_build_label(struct uasm_label **lab, u32 *addr, int lid) 378void __cpuinit uasm_build_label(struct uasm_label **lab, u32 *addr, int lid)
379{ 379{
380 (*lab)->addr = addr; 380 (*lab)->addr = addr;
381 (*lab)->lab = lid; 381 (*lab)->lab = lid;
382 (*lab)++; 382 (*lab)++;
383} 383}
384 384
385int __init uasm_in_compat_space_p(long addr) 385int __cpuinit uasm_in_compat_space_p(long addr)
386{ 386{
387 /* Is this address in 32bit compat space? */ 387 /* Is this address in 32bit compat space? */
388#ifdef CONFIG_64BIT 388#ifdef CONFIG_64BIT
@@ -392,7 +392,7 @@ int __init uasm_in_compat_space_p(long addr)
392#endif 392#endif
393} 393}
394 394
395int __init uasm_rel_highest(long val) 395int __cpuinit uasm_rel_highest(long val)
396{ 396{
397#ifdef CONFIG_64BIT 397#ifdef CONFIG_64BIT
398 return ((((val + 0x800080008000L) >> 48) & 0xffff) ^ 0x8000) - 0x8000; 398 return ((((val + 0x800080008000L) >> 48) & 0xffff) ^ 0x8000) - 0x8000;
@@ -401,7 +401,7 @@ int __init uasm_rel_highest(long val)
401#endif 401#endif
402} 402}
403 403
404int __init uasm_rel_higher(long val) 404int __cpuinit uasm_rel_higher(long val)
405{ 405{
406#ifdef CONFIG_64BIT 406#ifdef CONFIG_64BIT
407 return ((((val + 0x80008000L) >> 32) & 0xffff) ^ 0x8000) - 0x8000; 407 return ((((val + 0x80008000L) >> 32) & 0xffff) ^ 0x8000) - 0x8000;
@@ -410,17 +410,17 @@ int __init uasm_rel_higher(long val)
410#endif 410#endif
411} 411}
412 412
413int __init uasm_rel_hi(long val) 413int __cpuinit uasm_rel_hi(long val)
414{ 414{
415 return ((((val + 0x8000L) >> 16) & 0xffff) ^ 0x8000) - 0x8000; 415 return ((((val + 0x8000L) >> 16) & 0xffff) ^ 0x8000) - 0x8000;
416} 416}
417 417
418int __init uasm_rel_lo(long val) 418int __cpuinit uasm_rel_lo(long val)
419{ 419{
420 return ((val & 0xffff) ^ 0x8000) - 0x8000; 420 return ((val & 0xffff) ^ 0x8000) - 0x8000;
421} 421}
422 422
423void __init UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr) 423void __cpuinit UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr)
424{ 424{
425 if (!uasm_in_compat_space_p(addr)) { 425 if (!uasm_in_compat_space_p(addr)) {
426 uasm_i_lui(buf, rs, uasm_rel_highest(addr)); 426 uasm_i_lui(buf, rs, uasm_rel_highest(addr));
@@ -436,7 +436,7 @@ void __init UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr)
436 uasm_i_lui(buf, rs, uasm_rel_hi(addr)); 436 uasm_i_lui(buf, rs, uasm_rel_hi(addr));
437} 437}
438 438
439void __init UASM_i_LA(u32 **buf, unsigned int rs, long addr) 439void __cpuinit UASM_i_LA(u32 **buf, unsigned int rs, long addr)
440{ 440{
441 UASM_i_LA_mostly(buf, rs, addr); 441 UASM_i_LA_mostly(buf, rs, addr);
442 if (uasm_rel_lo(addr)) { 442 if (uasm_rel_lo(addr)) {
@@ -448,7 +448,7 @@ void __init UASM_i_LA(u32 **buf, unsigned int rs, long addr)
448} 448}
449 449
450/* Handle relocations. */ 450/* Handle relocations. */
451void __init 451void __cpuinit
452uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid) 452uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid)
453{ 453{
454 (*rel)->addr = addr; 454 (*rel)->addr = addr;
@@ -457,7 +457,7 @@ uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid)
457 (*rel)++; 457 (*rel)++;
458} 458}
459 459
460static inline void __init 460static inline void __cpuinit
461__resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab) 461__resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab)
462{ 462{
463 long laddr = (long)lab->addr; 463 long laddr = (long)lab->addr;
@@ -474,7 +474,7 @@ __resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab)
474 } 474 }
475} 475}
476 476
477void __init 477void __cpuinit
478uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab) 478uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab)
479{ 479{
480 struct uasm_label *l; 480 struct uasm_label *l;
@@ -485,7 +485,7 @@ uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab)
485 __resolve_relocs(rel, l); 485 __resolve_relocs(rel, l);
486} 486}
487 487
488void __init 488void __cpuinit
489uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off) 489uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off)
490{ 490{
491 for (; rel->lab != UASM_LABEL_INVALID; rel++) 491 for (; rel->lab != UASM_LABEL_INVALID; rel++)
@@ -493,7 +493,7 @@ uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off)
493 rel->addr += off; 493 rel->addr += off;
494} 494}
495 495
496void __init 496void __cpuinit
497uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off) 497uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off)
498{ 498{
499 for (; lab->lab != UASM_LABEL_INVALID; lab++) 499 for (; lab->lab != UASM_LABEL_INVALID; lab++)
@@ -501,7 +501,7 @@ uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off)
501 lab->addr += off; 501 lab->addr += off;
502} 502}
503 503
504void __init 504void __cpuinit
505uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first, 505uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first,
506 u32 *end, u32 *target) 506 u32 *end, u32 *target)
507{ 507{
@@ -513,7 +513,7 @@ uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first,
513 uasm_move_labels(lab, first, end, off); 513 uasm_move_labels(lab, first, end, off);
514} 514}
515 515
516int __init uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr) 516int __cpuinit uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr)
517{ 517{
518 for (; rel->lab != UASM_LABEL_INVALID; rel++) { 518 for (; rel->lab != UASM_LABEL_INVALID; rel++) {
519 if (rel->addr == addr 519 if (rel->addr == addr
@@ -526,49 +526,49 @@ int __init uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr)
526} 526}
527 527
528/* Convenience functions for labeled branches. */ 528/* Convenience functions for labeled branches. */
529void __init 529void __cpuinit
530uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 530uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
531{ 531{
532 uasm_r_mips_pc16(r, *p, lid); 532 uasm_r_mips_pc16(r, *p, lid);
533 uasm_i_bltz(p, reg, 0); 533 uasm_i_bltz(p, reg, 0);
534} 534}
535 535
536void __init 536void __cpuinit
537uasm_il_b(u32 **p, struct uasm_reloc **r, int lid) 537uasm_il_b(u32 **p, struct uasm_reloc **r, int lid)
538{ 538{
539 uasm_r_mips_pc16(r, *p, lid); 539 uasm_r_mips_pc16(r, *p, lid);
540 uasm_i_b(p, 0); 540 uasm_i_b(p, 0);
541} 541}
542 542
543void __init 543void __cpuinit
544uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 544uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
545{ 545{
546 uasm_r_mips_pc16(r, *p, lid); 546 uasm_r_mips_pc16(r, *p, lid);
547 uasm_i_beqz(p, reg, 0); 547 uasm_i_beqz(p, reg, 0);
548} 548}
549 549
550void __init 550void __cpuinit
551uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 551uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
552{ 552{
553 uasm_r_mips_pc16(r, *p, lid); 553 uasm_r_mips_pc16(r, *p, lid);
554 uasm_i_beqzl(p, reg, 0); 554 uasm_i_beqzl(p, reg, 0);
555} 555}
556 556
557void __init 557void __cpuinit
558uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 558uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
559{ 559{
560 uasm_r_mips_pc16(r, *p, lid); 560 uasm_r_mips_pc16(r, *p, lid);
561 uasm_i_bnez(p, reg, 0); 561 uasm_i_bnez(p, reg, 0);
562} 562}
563 563
564void __init 564void __cpuinit
565uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 565uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
566{ 566{
567 uasm_r_mips_pc16(r, *p, lid); 567 uasm_r_mips_pc16(r, *p, lid);
568 uasm_i_bgezl(p, reg, 0); 568 uasm_i_bgezl(p, reg, 0);
569} 569}
570 570
571void __init 571void __cpuinit
572uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) 572uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid)
573{ 573{
574 uasm_r_mips_pc16(r, *p, lid); 574 uasm_r_mips_pc16(r, *p, lid);
diff --git a/arch/mips/mm/uasm.h b/arch/mips/mm/uasm.h
index a10fc1135c76..fe0574f6e77d 100644
--- a/arch/mips/mm/uasm.h
+++ b/arch/mips/mm/uasm.h
@@ -11,38 +11,38 @@
11#include <linux/types.h> 11#include <linux/types.h>
12 12
13#define Ip_u1u2u3(op) \ 13#define Ip_u1u2u3(op) \
14void __init \ 14void __cpuinit \
15uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) 15uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c)
16 16
17#define Ip_u2u1u3(op) \ 17#define Ip_u2u1u3(op) \
18void __init \ 18void __cpuinit \
19uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) 19uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c)
20 20
21#define Ip_u3u1u2(op) \ 21#define Ip_u3u1u2(op) \
22void __init \ 22void __cpuinit \
23uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) 23uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c)
24 24
25#define Ip_u1u2s3(op) \ 25#define Ip_u1u2s3(op) \
26void __init \ 26void __cpuinit \
27uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c) 27uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c)
28 28
29#define Ip_u2s3u1(op) \ 29#define Ip_u2s3u1(op) \
30void __init \ 30void __cpuinit \
31uasm_i##op(u32 **buf, unsigned int a, signed int b, unsigned int c) 31uasm_i##op(u32 **buf, unsigned int a, signed int b, unsigned int c)
32 32
33#define Ip_u2u1s3(op) \ 33#define Ip_u2u1s3(op) \
34void __init \ 34void __cpuinit \
35uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c) 35uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c)
36 36
37#define Ip_u1u2(op) \ 37#define Ip_u1u2(op) \
38void __init uasm_i##op(u32 **buf, unsigned int a, unsigned int b) 38void __cpuinit uasm_i##op(u32 **buf, unsigned int a, unsigned int b)
39 39
40#define Ip_u1s2(op) \ 40#define Ip_u1s2(op) \
41void __init uasm_i##op(u32 **buf, unsigned int a, signed int b) 41void __cpuinit uasm_i##op(u32 **buf, unsigned int a, signed int b)
42 42
43#define Ip_u1(op) void __init uasm_i##op(u32 **buf, unsigned int a) 43#define Ip_u1(op) void __cpuinit uasm_i##op(u32 **buf, unsigned int a)
44 44
45#define Ip_0(op) void __init uasm_i##op(u32 **buf) 45#define Ip_0(op) void __cpuinit uasm_i##op(u32 **buf)
46 46
47Ip_u2u1s3(_addiu); 47Ip_u2u1s3(_addiu);
48Ip_u3u1u2(_addu); 48Ip_u3u1u2(_addu);
@@ -98,19 +98,19 @@ struct uasm_label {
98 int lab; 98 int lab;
99}; 99};
100 100
101void __init uasm_build_label(struct uasm_label **lab, u32 *addr, int lid); 101void __cpuinit uasm_build_label(struct uasm_label **lab, u32 *addr, int lid);
102#ifdef CONFIG_64BIT 102#ifdef CONFIG_64BIT
103int __init uasm_in_compat_space_p(long addr); 103int uasm_in_compat_space_p(long addr);
104int __init uasm_rel_highest(long val); 104int uasm_rel_highest(long val);
105int __init uasm_rel_higher(long val); 105int uasm_rel_higher(long val);
106#endif 106#endif
107int __init uasm_rel_hi(long val); 107int uasm_rel_hi(long val);
108int __init uasm_rel_lo(long val); 108int uasm_rel_lo(long val);
109void __init UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr); 109void UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr);
110void __init UASM_i_LA(u32 **buf, unsigned int rs, long addr); 110void UASM_i_LA(u32 **buf, unsigned int rs, long addr);
111 111
112#define UASM_L_LA(lb) \ 112#define UASM_L_LA(lb) \
113static inline void __init uasm_l##lb(struct uasm_label **lab, u32 *addr) \ 113static inline void __cpuinit uasm_l##lb(struct uasm_label **lab, u32 *addr) \
114{ \ 114{ \
115 uasm_build_label(lab, addr, label##lb); \ 115 uasm_build_label(lab, addr, label##lb); \
116} 116}
@@ -164,29 +164,19 @@ struct uasm_reloc {
164/* This is zero so we can use zeroed label arrays. */ 164/* This is zero so we can use zeroed label arrays. */
165#define UASM_LABEL_INVALID 0 165#define UASM_LABEL_INVALID 0
166 166
167void __init uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid); 167void uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid);
168void __init 168void uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab);
169uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab); 169void uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off);
170void __init 170void uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off);
171uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off); 171void uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab,
172void __init 172 u32 *first, u32 *end, u32 *target);
173uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off); 173int uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr);
174void __init
175uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first,
176 u32 *end, u32 *target);
177int __init uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr);
178 174
179/* Convenience functions for labeled branches. */ 175/* Convenience functions for labeled branches. */
180void __init 176void uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
181uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); 177void uasm_il_b(u32 **p, struct uasm_reloc **r, int lid);
182void __init uasm_il_b(u32 **p, struct uasm_reloc **r, int lid); 178void uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
183void __init 179void uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
184uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); 180void uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
185void __init 181void uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
186uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); 182void uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
187void __init
188uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
189void __init
190uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
191void __init
192uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid);
diff --git a/arch/mips/pci/pci-bcm1480.c b/arch/mips/pci/pci-bcm1480.c
index 30ed36125bcd..ab68c4318a30 100644
--- a/arch/mips/pci/pci-bcm1480.c
+++ b/arch/mips/pci/pci-bcm1480.c
@@ -249,8 +249,9 @@ static int __init bcm1480_pcibios_init(void)
249 * XXX ehs: Should this happen in PCI Device mode? 249 * XXX ehs: Should this happen in PCI Device mode?
250 */ 250 */
251 251
252 set_io_port_base((unsigned long) 252 bcm1480_controller.io_map_base = (unsigned long)
253 ioremap(A_BCM1480_PHYS_PCI_IO_MATCH_BYTES, 65536)); 253 ioremap(A_BCM1480_PHYS_PCI_IO_MATCH_BYTES, 65536);
254 set_io_port_base(bcm1480_controller.io_map_base);
254 isa_slot_offset = (unsigned long) 255 isa_slot_offset = (unsigned long)
255 ioremap(A_BCM1480_PHYS_PCI_MEM_MATCH_BYTES, 1024*1024); 256 ioremap(A_BCM1480_PHYS_PCI_MEM_MATCH_BYTES, 1024*1024);
256 257
diff --git a/arch/mips/pci/pci-ip27.c b/arch/mips/pci/pci-ip27.c
index a322543ac34e..bb64828a92fe 100644
--- a/arch/mips/pci/pci-ip27.c
+++ b/arch/mips/pci/pci-ip27.c
@@ -40,7 +40,7 @@ int irq_to_slot[MAX_PCI_BUSSES * MAX_DEVICES_PER_PCIBUS];
40 40
41extern struct pci_ops bridge_pci_ops; 41extern struct pci_ops bridge_pci_ops;
42 42
43int __init bridge_probe(nasid_t nasid, int widget_id, int masterwid) 43int __cpuinit bridge_probe(nasid_t nasid, int widget_id, int masterwid)
44{ 44{
45 unsigned long offset = NODE_OFFSET(nasid); 45 unsigned long offset = NODE_OFFSET(nasid);
46 struct bridge_controller *bc; 46 struct bridge_controller *bc;
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c
index f9471d77c096..358ad6210949 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -260,7 +260,7 @@ static void pcibios_fixup_device_resources(struct pci_dev *dev,
260 } 260 }
261} 261}
262 262
263void pcibios_fixup_bus(struct pci_bus *bus) 263void __devinit pcibios_fixup_bus(struct pci_bus *bus)
264{ 264{
265 /* Propagate hose info into the subordinate devices. */ 265 /* Propagate hose info into the subordinate devices. */
266 266
diff --git a/arch/mips/pmc-sierra/yosemite/smp.c b/arch/mips/pmc-sierra/yosemite/smp.c
index 653f3ec61cab..3a7df647ca77 100644
--- a/arch/mips/pmc-sierra/yosemite/smp.c
+++ b/arch/mips/pmc-sierra/yosemite/smp.c
@@ -7,10 +7,10 @@
7 7
8#define LAUNCHSTACK_SIZE 256 8#define LAUNCHSTACK_SIZE 256
9 9
10static __initdata DEFINE_SPINLOCK(launch_lock); 10static __cpuinitdata DEFINE_SPINLOCK(launch_lock);
11 11
12static unsigned long secondary_sp __initdata; 12static unsigned long secondary_sp __cpuinitdata;
13static unsigned long secondary_gp __initdata; 13static unsigned long secondary_gp __cpuinitdata;
14 14
15static unsigned char launchstack[LAUNCHSTACK_SIZE] __initdata 15static unsigned char launchstack[LAUNCHSTACK_SIZE] __initdata
16 __attribute__((aligned(2 * sizeof(long)))); 16 __attribute__((aligned(2 * sizeof(long))));
diff --git a/arch/mips/sgi-ip27/ip27-init.c b/arch/mips/sgi-ip27/ip27-init.c
index a49e7c85f724..7093e7c573a4 100644
--- a/arch/mips/sgi-ip27/ip27-init.c
+++ b/arch/mips/sgi-ip27/ip27-init.c
@@ -53,7 +53,7 @@ extern void pcibr_setup(cnodeid_t);
53 53
54extern void xtalk_probe_node(cnodeid_t nid); 54extern void xtalk_probe_node(cnodeid_t nid);
55 55
56static void __init per_hub_init(cnodeid_t cnode) 56static void __cpuinit per_hub_init(cnodeid_t cnode)
57{ 57{
58 struct hub_data *hub = hub_data(cnode); 58 struct hub_data *hub = hub_data(cnode);
59 nasid_t nasid = COMPACT_TO_NASID_NODEID(cnode); 59 nasid_t nasid = COMPACT_TO_NASID_NODEID(cnode);
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c
index 08d45369be45..25d3baf0ebc4 100644
--- a/arch/mips/sgi-ip27/ip27-timer.c
+++ b/arch/mips/sgi-ip27/ip27-timer.c
@@ -285,7 +285,7 @@ void __cpuinit cpu_time_init(void)
285 set_c0_status(SRB_TIMOCLK); 285 set_c0_status(SRB_TIMOCLK);
286} 286}
287 287
288void __init hub_rtc_init(cnodeid_t cnode) 288void __cpuinit hub_rtc_init(cnodeid_t cnode)
289{ 289{
290 /* 290 /*
291 * We only need to initialize the current node. 291 * We only need to initialize the current node.
diff --git a/arch/mips/sgi-ip27/ip27-xtalk.c b/arch/mips/sgi-ip27/ip27-xtalk.c
index fc82f34a32ce..6ae64e8dfc40 100644
--- a/arch/mips/sgi-ip27/ip27-xtalk.c
+++ b/arch/mips/sgi-ip27/ip27-xtalk.c
@@ -22,7 +22,7 @@
22 22
23extern int bridge_probe(nasid_t nasid, int widget, int masterwid); 23extern int bridge_probe(nasid_t nasid, int widget, int masterwid);
24 24
25static int __init probe_one_port(nasid_t nasid, int widget, int masterwid) 25static int __cpuinit probe_one_port(nasid_t nasid, int widget, int masterwid)
26{ 26{
27 widgetreg_t widget_id; 27 widgetreg_t widget_id;
28 xwidget_part_num_t partnum; 28 xwidget_part_num_t partnum;
@@ -46,7 +46,7 @@ static int __init probe_one_port(nasid_t nasid, int widget, int masterwid)
46 return 0; 46 return 0;
47} 47}
48 48
49static int __init xbow_probe(nasid_t nasid) 49static int __cpuinit xbow_probe(nasid_t nasid)
50{ 50{
51 lboard_t *brd; 51 lboard_t *brd;
52 klxbow_t *xbow_p; 52 klxbow_t *xbow_p;
@@ -99,7 +99,7 @@ static int __init xbow_probe(nasid_t nasid)
99 return 0; 99 return 0;
100} 100}
101 101
102void __init xtalk_probe_node(cnodeid_t nid) 102void __cpuinit xtalk_probe_node(cnodeid_t nid)
103{ 103{
104 volatile u64 hubreg; 104 volatile u64 hubreg;
105 nasid_t nasid; 105 nasid_t nasid;
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 1c6ce3536e4c..ab5cfe8ef988 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -155,7 +155,7 @@ all: zImage
155 155
156CPPFLAGS_vmlinux.lds := -Upowerpc 156CPPFLAGS_vmlinux.lds := -Upowerpc
157 157
158BOOT_TARGETS = zImage zImage.initrd uImage treeImage.% cuImage.% 158BOOT_TARGETS = zImage zImage.initrd uImage zImage% dtbImage% treeImage.% cuImage.%
159 159
160PHONY += $(BOOT_TARGETS) 160PHONY += $(BOOT_TARGETS)
161 161
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index e3993a607584..4974d9e56ead 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -186,7 +186,7 @@ quiet_cmd_wrap = WRAP $@
186image-$(CONFIG_PPC_PSERIES) += zImage.pseries 186image-$(CONFIG_PPC_PSERIES) += zImage.pseries
187image-$(CONFIG_PPC_MAPLE) += zImage.pseries 187image-$(CONFIG_PPC_MAPLE) += zImage.pseries
188image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries 188image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries
189image-$(CONFIG_PPC_PS3) += zImage-dtb.ps3 189image-$(CONFIG_PPC_PS3) += dtbImage.ps3
190image-$(CONFIG_PPC_CELLEB) += zImage.pseries 190image-$(CONFIG_PPC_CELLEB) += zImage.pseries
191image-$(CONFIG_PPC_CHRP) += zImage.chrp 191image-$(CONFIG_PPC_CHRP) += zImage.chrp
192image-$(CONFIG_PPC_EFIKA) += zImage.chrp 192image-$(CONFIG_PPC_EFIKA) += zImage.chrp
@@ -205,7 +205,7 @@ image-$(CONFIG_DEFAULT_UIMAGE) += uImage
205# 205#
206 206
207# Board ports in arch/powerpc/platform/40x/Kconfig 207# Board ports in arch/powerpc/platform/40x/Kconfig
208image-$(CONFIG_EP405) += zImage-dtb.ep405 208image-$(CONFIG_EP405) += dtbImage.ep405
209image-$(CONFIG_WALNUT) += treeImage.walnut 209image-$(CONFIG_WALNUT) += treeImage.walnut
210 210
211# Board ports in arch/powerpc/platform/44x/Kconfig 211# Board ports in arch/powerpc/platform/44x/Kconfig
@@ -220,9 +220,9 @@ image-$(CONFIG_WARP) += cuImage.warp
220# Board ports in arch/powerpc/platform/8xx/Kconfig 220# Board ports in arch/powerpc/platform/8xx/Kconfig
221image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads 221image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads
222image-$(CONFIG_PPC_MPC885ADS) += cuImage.mpc885ads 222image-$(CONFIG_PPC_MPC885ADS) += cuImage.mpc885ads
223image-$(CONFIG_PPC_EP88XC) += zImage-dtb.ep88xc 223image-$(CONFIG_PPC_EP88XC) += dtbImage.ep88xc
224image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \ 224image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \
225 zImage-dtb.adder875-redboot 225 dtbImage.adder875-redboot
226 226
227# Board ports in arch/powerpc/platform/52xx/Kconfig 227# Board ports in arch/powerpc/platform/52xx/Kconfig
228image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b 228image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b
@@ -230,7 +230,7 @@ image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b
230# Board ports in arch/powerpc/platform/82xx/Kconfig 230# Board ports in arch/powerpc/platform/82xx/Kconfig
231image-$(CONFIG_MPC8272_ADS) += cuImage.mpc8272ads 231image-$(CONFIG_MPC8272_ADS) += cuImage.mpc8272ads
232image-$(CONFIG_PQ2FADS) += cuImage.pq2fads 232image-$(CONFIG_PQ2FADS) += cuImage.pq2fads
233image-$(CONFIG_EP8248E) += zImage-dtb.ep8248e 233image-$(CONFIG_EP8248E) += dtbImage.ep8248e
234 234
235# Board ports in arch/powerpc/platform/83xx/Kconfig 235# Board ports in arch/powerpc/platform/83xx/Kconfig
236image-$(CONFIG_MPC832x_MDS) += cuImage.mpc832x_mds 236image-$(CONFIG_MPC832x_MDS) += cuImage.mpc832x_mds
@@ -268,7 +268,8 @@ endif
268 268
269initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-)) 269initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-))
270initrd-y := $(patsubst zImage%, zImage.initrd%, \ 270initrd-y := $(patsubst zImage%, zImage.initrd%, \
271 $(patsubst treeImage%, treeImage.initrd%, $(image-y))) 271 $(patsubst dtbImage%, dtbImage.initrd%, \
272 $(patsubst treeImage%, treeImage.initrd%, $(image-y))))
272initrd-y := $(filter-out $(image-y), $(initrd-y)) 273initrd-y := $(filter-out $(image-y), $(initrd-y))
273targets += $(image-y) $(initrd-y) 274targets += $(image-y) $(initrd-y)
274 275
@@ -283,10 +284,11 @@ $(obj)/zImage.initrd.%: vmlinux $(wrapperbits)
283$(obj)/zImage.%: vmlinux $(wrapperbits) 284$(obj)/zImage.%: vmlinux $(wrapperbits)
284 $(call if_changed,wrap,$*) 285 $(call if_changed,wrap,$*)
285 286
286$(obj)/zImage-dtb.initrd.%: vmlinux $(wrapperbits) $(dtstree)/%.dts 287# dtbImage% - a dtbImage is a zImage with an embedded device tree blob
288$(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(dtstree)/%.dts
287 $(call if_changed,wrap,$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz) 289 $(call if_changed,wrap,$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz)
288 290
289$(obj)/zImage-dtb.%: vmlinux $(wrapperbits) $(dtstree)/%.dts 291$(obj)/dtbImage.%: vmlinux $(wrapperbits) $(dtstree)/%.dts
290 $(call if_changed,wrap,$*,$(dtstree)/$*.dts) 292 $(call if_changed,wrap,$*,$(dtstree)/$*.dts)
291 293
292# This cannot be in the root of $(src) as the zImage rule always adds a $(obj) 294# This cannot be in the root of $(src) as the zImage rule always adds a $(obj)
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts
index a3637fff73cc..49c05e97386c 100644
--- a/arch/powerpc/boot/dts/mpc8377_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8377_mds.dts
@@ -47,6 +47,72 @@
47 reg = <0x00000000 0x20000000>; // 512MB at 0 47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 }; 48 };
49 49
50 localbus@e0005000 {
51 #address-cells = <2>;
52 #size-cells = <1>;
53 compatible = "fsl,mpc8377-elbc", "fsl,elbc", "simple-bus";
54 reg = <0xe0005000 0x1000>;
55 interrupts = <77 0x8>;
56 interrupt-parent = <&ipic>;
57
58 // booting from NOR flash
59 ranges = <0 0x0 0xfe000000 0x02000000
60 1 0x0 0xf8000000 0x00008000
61 3 0x0 0xe0600000 0x00008000>;
62
63 flash@0,0 {
64 #address-cells = <1>;
65 #size-cells = <1>;
66 compatible = "cfi-flash";
67 reg = <0 0x0 0x2000000>;
68 bank-width = <2>;
69 device-width = <1>;
70
71 u-boot@0 {
72 reg = <0x0 0x100000>;
73 read-only;
74 };
75
76 fs@100000 {
77 reg = <0x100000 0x800000>;
78 };
79
80 kernel@1d00000 {
81 reg = <0x1d00000 0x200000>;
82 };
83
84 dtb@1f00000 {
85 reg = <0x1f00000 0x100000>;
86 };
87 };
88
89 bcsr@1,0 {
90 reg = <1 0x0 0x8000>;
91 compatible = "fsl,mpc837xmds-bcsr";
92 };
93
94 nand@3,0 {
95 #address-cells = <1>;
96 #size-cells = <1>;
97 compatible = "fsl,mpc8377-fcm-nand",
98 "fsl,elbc-fcm-nand";
99 reg = <3 0x0 0x8000>;
100
101 u-boot@0 {
102 reg = <0x0 0x100000>;
103 read-only;
104 };
105
106 kernel@100000 {
107 reg = <0x100000 0x300000>;
108 };
109
110 fs@400000 {
111 reg = <0x400000 0x1c00000>;
112 };
113 };
114 };
115
50 soc@e0000000 { 116 soc@e0000000 {
51 #address-cells = <1>; 117 #address-cells = <1>;
52 #size-cells = <1>; 118 #size-cells = <1>;
@@ -91,7 +157,6 @@
91 mode = "cpu"; 157 mode = "cpu";
92 }; 158 };
93 159
94 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
95 usb@23000 { 160 usb@23000 {
96 compatible = "fsl-usb2-dr"; 161 compatible = "fsl-usb2-dr";
97 reg = <0x23000 0x1000>; 162 reg = <0x23000 0x1000>;
@@ -99,7 +164,8 @@
99 #size-cells = <0>; 164 #size-cells = <0>;
100 interrupt-parent = <&ipic>; 165 interrupt-parent = <&ipic>;
101 interrupts = <38 0x8>; 166 interrupts = <38 0x8>;
102 phy_type = "utmi_wide"; 167 dr_mode = "host";
168 phy_type = "ulpi";
103 }; 169 };
104 170
105 mdio@24520 { 171 mdio@24520 {
diff --git a/arch/powerpc/boot/dts/mpc8378_mds.dts b/arch/powerpc/boot/dts/mpc8378_mds.dts
index 533e9b06cc8f..1d6ea080ad73 100644
--- a/arch/powerpc/boot/dts/mpc8378_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8378_mds.dts
@@ -47,6 +47,72 @@
47 reg = <0x00000000 0x20000000>; // 512MB at 0 47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 }; 48 };
49 49
50 localbus@e0005000 {
51 #address-cells = <2>;
52 #size-cells = <1>;
53 compatible = "fsl,mpc8378-elbc", "fsl,elbc", "simple-bus";
54 reg = <0xe0005000 0x1000>;
55 interrupts = <77 0x8>;
56 interrupt-parent = <&ipic>;
57
58 // booting from NOR flash
59 ranges = <0 0x0 0xfe000000 0x02000000
60 1 0x0 0xf8000000 0x00008000
61 3 0x0 0xe0600000 0x00008000>;
62
63 flash@0,0 {
64 #address-cells = <1>;
65 #size-cells = <1>;
66 compatible = "cfi-flash";
67 reg = <0 0x0 0x2000000>;
68 bank-width = <2>;
69 device-width = <1>;
70
71 u-boot@0 {
72 reg = <0x0 0x100000>;
73 read-only;
74 };
75
76 fs@100000 {
77 reg = <0x100000 0x800000>;
78 };
79
80 kernel@1d00000 {
81 reg = <0x1d00000 0x200000>;
82 };
83
84 dtb@1f00000 {
85 reg = <0x1f00000 0x100000>;
86 };
87 };
88
89 bcsr@1,0 {
90 reg = <1 0x0 0x8000>;
91 compatible = "fsl,mpc837xmds-bcsr";
92 };
93
94 nand@3,0 {
95 #address-cells = <1>;
96 #size-cells = <1>;
97 compatible = "fsl,mpc8378-fcm-nand",
98 "fsl,elbc-fcm-nand";
99 reg = <3 0x0 0x8000>;
100
101 u-boot@0 {
102 reg = <0x0 0x100000>;
103 read-only;
104 };
105
106 kernel@100000 {
107 reg = <0x100000 0x300000>;
108 };
109
110 fs@400000 {
111 reg = <0x400000 0x1c00000>;
112 };
113 };
114 };
115
50 soc@e0000000 { 116 soc@e0000000 {
51 #address-cells = <1>; 117 #address-cells = <1>;
52 #size-cells = <1>; 118 #size-cells = <1>;
@@ -91,7 +157,6 @@
91 mode = "cpu"; 157 mode = "cpu";
92 }; 158 };
93 159
94 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
95 usb@23000 { 160 usb@23000 {
96 compatible = "fsl-usb2-dr"; 161 compatible = "fsl-usb2-dr";
97 reg = <0x23000 0x1000>; 162 reg = <0x23000 0x1000>;
@@ -99,7 +164,8 @@
99 #size-cells = <0>; 164 #size-cells = <0>;
100 interrupt-parent = <&ipic>; 165 interrupt-parent = <&ipic>;
101 interrupts = <38 0x8>; 166 interrupts = <38 0x8>;
102 phy_type = "utmi_wide"; 167 dr_mode = "host";
168 phy_type = "ulpi";
103 }; 169 };
104 170
105 mdio@24520 { 171 mdio@24520 {
diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts
index c270685bbde4..fdb4a9255b24 100644
--- a/arch/powerpc/boot/dts/mpc8379_mds.dts
+++ b/arch/powerpc/boot/dts/mpc8379_mds.dts
@@ -47,6 +47,72 @@
47 reg = <0x00000000 0x20000000>; // 512MB at 0 47 reg = <0x00000000 0x20000000>; // 512MB at 0
48 }; 48 };
49 49
50 localbus@e0005000 {
51 #address-cells = <2>;
52 #size-cells = <1>;
53 compatible = "fsl,mpc8379-elbc", "fsl,elbc", "simple-bus";
54 reg = <0xe0005000 0x1000>;
55 interrupts = <77 0x8>;
56 interrupt-parent = <&ipic>;
57
58 // booting from NOR flash
59 ranges = <0 0x0 0xfe000000 0x02000000
60 1 0x0 0xf8000000 0x00008000
61 3 0x0 0xe0600000 0x00008000>;
62
63 flash@0,0 {
64 #address-cells = <1>;
65 #size-cells = <1>;
66 compatible = "cfi-flash";
67 reg = <0 0x0 0x2000000>;
68 bank-width = <2>;
69 device-width = <1>;
70
71 u-boot@0 {
72 reg = <0x0 0x100000>;
73 read-only;
74 };
75
76 fs@100000 {
77 reg = <0x100000 0x800000>;
78 };
79
80 kernel@1d00000 {
81 reg = <0x1d00000 0x200000>;
82 };
83
84 dtb@1f00000 {
85 reg = <0x1f00000 0x100000>;
86 };
87 };
88
89 bcsr@1,0 {
90 reg = <1 0x0 0x8000>;
91 compatible = "fsl,mpc837xmds-bcsr";
92 };
93
94 nand@3,0 {
95 #address-cells = <1>;
96 #size-cells = <1>;
97 compatible = "fsl,mpc8379-fcm-nand",
98 "fsl,elbc-fcm-nand";
99 reg = <3 0x0 0x8000>;
100
101 u-boot@0 {
102 reg = <0x0 0x100000>;
103 read-only;
104 };
105
106 kernel@100000 {
107 reg = <0x100000 0x300000>;
108 };
109
110 fs@400000 {
111 reg = <0x400000 0x1c00000>;
112 };
113 };
114 };
115
50 soc@e0000000 { 116 soc@e0000000 {
51 #address-cells = <1>; 117 #address-cells = <1>;
52 #size-cells = <1>; 118 #size-cells = <1>;
@@ -91,7 +157,6 @@
91 mode = "cpu"; 157 mode = "cpu";
92 }; 158 };
93 159
94 /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
95 usb@23000 { 160 usb@23000 {
96 compatible = "fsl-usb2-dr"; 161 compatible = "fsl-usb2-dr";
97 reg = <0x23000 0x1000>; 162 reg = <0x23000 0x1000>;
@@ -99,7 +164,8 @@
99 #size-cells = <0>; 164 #size-cells = <0>;
100 interrupt-parent = <&ipic>; 165 interrupt-parent = <&ipic>;
101 interrupts = <38 0x8>; 166 interrupts = <38 0x8>;
102 phy_type = "utmi_wide"; 167 dr_mode = "host";
168 phy_type = "ulpi";
103 }; 169 };
104 170
105 mdio@24520 { 171 mdio@24520 {
diff --git a/arch/powerpc/boot/dts/sbc8548.dts b/arch/powerpc/boot/dts/sbc8548.dts
index 14be38ad5d4b..b86e65d926c1 100644
--- a/arch/powerpc/boot/dts/sbc8548.dts
+++ b/arch/powerpc/boot/dts/sbc8548.dts
@@ -184,11 +184,17 @@
184 cell-index = <0>; 184 cell-index = <0>;
185 interrupt-map-mask = <0xf800 0x0 0x0 0x7>; 185 interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
186 interrupt-map = < 186 interrupt-map = <
187 /* IDSEL 0x01 (PCI-X slot) */ 187 /* IDSEL 0x01 (PCI-X slot) @66MHz */
188 0x0800 0x0 0x0 0x1 &mpic 0x0 0x1 188 0x0800 0x0 0x0 0x1 &mpic 0x2 0x1
189 0x0800 0x0 0x0 0x2 &mpic 0x1 0x1 189 0x0800 0x0 0x0 0x2 &mpic 0x3 0x1
190 0x0800 0x0 0x0 0x3 &mpic 0x2 0x1 190 0x0800 0x0 0x0 0x3 &mpic 0x4 0x1
191 0x0800 0x0 0x0 0x4 &mpic 0x3 0x1>; 191 0x0800 0x0 0x0 0x4 &mpic 0x1 0x1
192
193 /* IDSEL 0x11 (PCI, 3.3V 32bit) @33MHz */
194 0x8800 0x0 0x0 0x1 &mpic 0x2 0x1
195 0x8800 0x0 0x0 0x2 &mpic 0x3 0x1
196 0x8800 0x0 0x0 0x3 &mpic 0x4 0x1
197 0x8800 0x0 0x0 0x4 &mpic 0x1 0x1>;
192 198
193 interrupt-parent = <&mpic>; 199 interrupt-parent = <&mpic>;
194 interrupts = <0x18 0x2>; 200 interrupts = <0x18 0x2>;
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index c3178155311b..d50e498a072b 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -191,10 +191,14 @@ ps3)
191 ksection=.kernel:vmlinux.bin 191 ksection=.kernel:vmlinux.bin
192 isection=.kernel:initrd 192 isection=.kernel:initrd
193 ;; 193 ;;
194ep88xc|ep405|redboot*|ep8248e) 194ep88xc|ep405|ep8248e)
195 platformo="$object/fixed-head.o $object/$platform.o" 195 platformo="$object/fixed-head.o $object/$platform.o"
196 binary=y 196 binary=y
197 ;; 197 ;;
198adder875-redboot)
199 platformo="$object/fixed-head.o $object/redboot-8xx.o"
200 binary=y
201 ;;
198esac 202esac
199 203
200vmz="$tmpdir/`basename \"$kernel\"`.$ext" 204vmz="$tmpdir/`basename \"$kernel\"`.$ext"
diff --git a/arch/powerpc/configs/adder875-redboot_defconfig b/arch/powerpc/configs/adder875-redboot_defconfig
deleted file mode 100644
index cab5f9b64567..000000000000
--- a/arch/powerpc/configs/adder875-redboot_defconfig
+++ /dev/null
@@ -1,798 +0,0 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.24-rc6
4# Thu Jan 17 16:17:38 2008
5#
6# CONFIG_PPC64 is not set
7
8#
9# Processor support
10#
11# CONFIG_6xx is not set
12# CONFIG_PPC_85xx is not set
13CONFIG_PPC_8xx=y
14# CONFIG_40x is not set
15# CONFIG_44x is not set
16# CONFIG_E200 is not set
17CONFIG_8xx=y
18# CONFIG_PPC_MM_SLICES is not set
19CONFIG_NOT_COHERENT_CACHE=y
20CONFIG_PPC32=y
21CONFIG_WORD_SIZE=32
22CONFIG_PPC_MERGE=y
23CONFIG_MMU=y
24CONFIG_GENERIC_CMOS_UPDATE=y
25CONFIG_GENERIC_TIME=y
26CONFIG_GENERIC_TIME_VSYSCALL=y
27CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y
29CONFIG_IRQ_PER_CPU=y
30CONFIG_RWSEM_XCHGADD_ALGORITHM=y
31CONFIG_ARCH_HAS_ILOG2_U32=y
32CONFIG_GENERIC_HWEIGHT=y
33CONFIG_GENERIC_CALIBRATE_DELAY=y
34CONFIG_GENERIC_FIND_NEXT_BIT=y
35# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
36CONFIG_PPC=y
37CONFIG_EARLY_PRINTK=y
38CONFIG_GENERIC_NVRAM=y
39CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
40CONFIG_ARCH_MAY_HAVE_PC_FDC=y
41CONFIG_PPC_OF=y
42CONFIG_OF=y
43# CONFIG_PPC_UDBG_16550 is not set
44# CONFIG_GENERIC_TBSYNC is not set
45CONFIG_AUDIT_ARCH=y
46CONFIG_GENERIC_BUG=y
47# CONFIG_DEFAULT_UIMAGE is not set
48CONFIG_REDBOOT=y
49# CONFIG_PPC_DCR_NATIVE is not set
50# CONFIG_PPC_DCR_MMIO is not set
51CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
52
53#
54# General setup
55#
56CONFIG_EXPERIMENTAL=y
57CONFIG_BROKEN_ON_SMP=y
58CONFIG_INIT_ENV_ARG_LIMIT=32
59CONFIG_LOCALVERSION=""
60CONFIG_LOCALVERSION_AUTO=y
61# CONFIG_SWAP is not set
62CONFIG_SYSVIPC=y
63CONFIG_SYSVIPC_SYSCTL=y
64# CONFIG_POSIX_MQUEUE is not set
65# CONFIG_BSD_PROCESS_ACCT is not set
66# CONFIG_TASKSTATS is not set
67# CONFIG_USER_NS is not set
68# CONFIG_PID_NS is not set
69# CONFIG_AUDIT is not set
70# CONFIG_IKCONFIG is not set
71CONFIG_LOG_BUF_SHIFT=14
72# CONFIG_CGROUPS is not set
73CONFIG_FAIR_GROUP_SCHED=y
74CONFIG_FAIR_USER_SCHED=y
75# CONFIG_FAIR_CGROUP_SCHED is not set
76CONFIG_SYSFS_DEPRECATED=y
77# CONFIG_RELAY is not set
78# CONFIG_BLK_DEV_INITRD is not set
79# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
80CONFIG_SYSCTL=y
81CONFIG_EMBEDDED=y
82# CONFIG_SYSCTL_SYSCALL is not set
83CONFIG_KALLSYMS=y
84# CONFIG_KALLSYMS_ALL is not set
85# CONFIG_KALLSYMS_EXTRA_PASS is not set
86CONFIG_HOTPLUG=y
87CONFIG_PRINTK=y
88CONFIG_BUG=y
89# CONFIG_ELF_CORE is not set
90# CONFIG_BASE_FULL is not set
91# CONFIG_FUTEX is not set
92CONFIG_ANON_INODES=y
93CONFIG_EPOLL=y
94CONFIG_SIGNALFD=y
95CONFIG_EVENTFD=y
96CONFIG_SHMEM=y
97# CONFIG_VM_EVENT_COUNTERS is not set
98CONFIG_SLUB_DEBUG=y
99# CONFIG_SLAB is not set
100CONFIG_SLUB=y
101# CONFIG_SLOB is not set
102# CONFIG_TINY_SHMEM is not set
103CONFIG_BASE_SMALL=1
104# CONFIG_MODULES is not set
105CONFIG_BLOCK=y
106# CONFIG_LBD is not set
107# CONFIG_BLK_DEV_IO_TRACE is not set
108# CONFIG_LSF is not set
109# CONFIG_BLK_DEV_BSG is not set
110
111#
112# IO Schedulers
113#
114CONFIG_IOSCHED_NOOP=y
115# CONFIG_IOSCHED_AS is not set
116CONFIG_IOSCHED_DEADLINE=y
117# CONFIG_IOSCHED_CFQ is not set
118# CONFIG_DEFAULT_AS is not set
119CONFIG_DEFAULT_DEADLINE=y
120# CONFIG_DEFAULT_CFQ is not set
121# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="deadline"
123
124#
125# Platform support
126#
127# CONFIG_PPC_MPC52xx is not set
128# CONFIG_PPC_MPC5200 is not set
129# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set
131CONFIG_CPM1=y
132# CONFIG_MPC8XXFADS is not set
133# CONFIG_MPC86XADS is not set
134# CONFIG_MPC885ADS is not set
135# CONFIG_PPC_EP88XC is not set
136CONFIG_PPC_ADDER875=y
137
138#
139# MPC8xx CPM Options
140#
141
142#
143# Generic MPC8xx Options
144#
145CONFIG_8xx_COPYBACK=y
146# CONFIG_8xx_CPU6 is not set
147CONFIG_8xx_CPU15=y
148CONFIG_NO_UCODE_PATCH=y
149# CONFIG_USB_SOF_UCODE_PATCH is not set
150# CONFIG_I2C_SPI_UCODE_PATCH is not set
151# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set
152# CONFIG_PQ2ADS is not set
153# CONFIG_MPIC is not set
154# CONFIG_MPIC_WEIRD is not set
155# CONFIG_PPC_I8259 is not set
156# CONFIG_PPC_RTAS is not set
157# CONFIG_MMIO_NVRAM is not set
158# CONFIG_PPC_MPC106 is not set
159# CONFIG_PPC_970_NAP is not set
160# CONFIG_PPC_INDIRECT_IO is not set
161# CONFIG_GENERIC_IOMAP is not set
162# CONFIG_CPU_FREQ is not set
163# CONFIG_CPM2 is not set
164CONFIG_PPC_CPM_NEW_BINDING=y
165# CONFIG_FSL_ULI1575 is not set
166CONFIG_CPM=y
167
168#
169# Kernel options
170#
171# CONFIG_HIGHMEM is not set
172# CONFIG_TICK_ONESHOT is not set
173# CONFIG_NO_HZ is not set
174# CONFIG_HIGH_RES_TIMERS is not set
175CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
176# CONFIG_HZ_100 is not set
177# CONFIG_HZ_250 is not set
178# CONFIG_HZ_300 is not set
179CONFIG_HZ_1000=y
180CONFIG_HZ=1000
181CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set
183# CONFIG_PREEMPT is not set
184CONFIG_BINFMT_ELF=y
185# CONFIG_BINFMT_MISC is not set
186# CONFIG_MATH_EMULATION is not set
187# CONFIG_8XX_MINIMAL_FPEMU is not set
188CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
189CONFIG_ARCH_FLATMEM_ENABLE=y
190CONFIG_ARCH_POPULATES_NODE_MAP=y
191CONFIG_SELECT_MEMORY_MODEL=y
192CONFIG_FLATMEM_MANUAL=y
193# CONFIG_DISCONTIGMEM_MANUAL is not set
194# CONFIG_SPARSEMEM_MANUAL is not set
195CONFIG_FLATMEM=y
196CONFIG_FLAT_NODE_MEM_MAP=y
197# CONFIG_SPARSEMEM_STATIC is not set
198# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
199CONFIG_SPLIT_PTLOCK_CPUS=4
200# CONFIG_RESOURCES_64BIT is not set
201CONFIG_ZONE_DMA_FLAG=1
202CONFIG_BOUNCE=y
203CONFIG_VIRT_TO_BUS=y
204# CONFIG_PROC_DEVICETREE is not set
205# CONFIG_CMDLINE_BOOL is not set
206# CONFIG_PM is not set
207CONFIG_SUSPEND_UP_POSSIBLE=y
208CONFIG_HIBERNATION_UP_POSSIBLE=y
209# CONFIG_SECCOMP is not set
210CONFIG_WANT_DEVICE_TREE=y
211CONFIG_DEVICE_TREE="adder875-redboot.dts"
212CONFIG_ISA_DMA_API=y
213
214#
215# Bus options
216#
217CONFIG_ZONE_DMA=y
218CONFIG_FSL_SOC=y
219# CONFIG_PCI is not set
220# CONFIG_PCI_DOMAINS is not set
221# CONFIG_PCI_SYSCALL is not set
222# CONFIG_PCI_QSPAN is not set
223# CONFIG_ARCH_SUPPORTS_MSI is not set
224# CONFIG_PCCARD is not set
225
226#
227# Advanced setup
228#
229# CONFIG_ADVANCED_OPTIONS is not set
230
231#
232# Default settings for advanced configuration options are used
233#
234CONFIG_HIGHMEM_START=0xfe000000
235CONFIG_LOWMEM_SIZE=0x30000000
236CONFIG_KERNEL_START=0xc0000000
237CONFIG_TASK_SIZE=0x80000000
238CONFIG_CONSISTENT_START=0xfd000000
239CONFIG_CONSISTENT_SIZE=0x00200000
240CONFIG_BOOT_LOAD=0x00400000
241
242#
243# Networking
244#
245CONFIG_NET=y
246
247#
248# Networking options
249#
250CONFIG_PACKET=y
251# CONFIG_PACKET_MMAP is not set
252CONFIG_UNIX=y
253# CONFIG_NET_KEY is not set
254CONFIG_INET=y
255CONFIG_IP_MULTICAST=y
256# CONFIG_IP_ADVANCED_ROUTER is not set
257CONFIG_IP_FIB_HASH=y
258CONFIG_IP_PNP=y
259# CONFIG_IP_PNP_DHCP is not set
260# CONFIG_IP_PNP_BOOTP is not set
261# CONFIG_IP_PNP_RARP is not set
262# CONFIG_NET_IPIP is not set
263# CONFIG_NET_IPGRE is not set
264# CONFIG_IP_MROUTE is not set
265# CONFIG_ARPD is not set
266CONFIG_SYN_COOKIES=y
267# CONFIG_INET_AH is not set
268# CONFIG_INET_ESP is not set
269# CONFIG_INET_IPCOMP is not set
270# CONFIG_INET_XFRM_TUNNEL is not set
271# CONFIG_INET_TUNNEL is not set
272# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
273# CONFIG_INET_XFRM_MODE_TUNNEL is not set
274# CONFIG_INET_XFRM_MODE_BEET is not set
275# CONFIG_INET_LRO is not set
276CONFIG_INET_DIAG=y
277CONFIG_INET_TCP_DIAG=y
278# CONFIG_TCP_CONG_ADVANCED is not set
279CONFIG_TCP_CONG_CUBIC=y
280CONFIG_DEFAULT_TCP_CONG="cubic"
281# CONFIG_TCP_MD5SIG is not set
282# CONFIG_IPV6 is not set
283# CONFIG_INET6_XFRM_TUNNEL is not set
284# CONFIG_INET6_TUNNEL is not set
285# CONFIG_NETWORK_SECMARK is not set
286# CONFIG_NETFILTER is not set
287# CONFIG_IP_DCCP is not set
288# CONFIG_IP_SCTP is not set
289# CONFIG_TIPC is not set
290# CONFIG_ATM is not set
291# CONFIG_BRIDGE is not set
292# CONFIG_VLAN_8021Q is not set
293# CONFIG_DECNET is not set
294# CONFIG_LLC2 is not set
295# CONFIG_IPX is not set
296# CONFIG_ATALK is not set
297# CONFIG_X25 is not set
298# CONFIG_LAPB is not set
299# CONFIG_ECONET is not set
300# CONFIG_WAN_ROUTER is not set
301# CONFIG_NET_SCHED is not set
302
303#
304# Network testing
305#
306# CONFIG_NET_PKTGEN is not set
307# CONFIG_HAMRADIO is not set
308# CONFIG_IRDA is not set
309# CONFIG_BT is not set
310# CONFIG_AF_RXRPC is not set
311
312#
313# Wireless
314#
315# CONFIG_CFG80211 is not set
316# CONFIG_WIRELESS_EXT is not set
317# CONFIG_MAC80211 is not set
318# CONFIG_IEEE80211 is not set
319# CONFIG_RFKILL is not set
320# CONFIG_NET_9P is not set
321
322#
323# Device Drivers
324#
325
326#
327# Generic Driver Options
328#
329CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
330CONFIG_STANDALONE=y
331CONFIG_PREVENT_FIRMWARE_BUILD=y
332# CONFIG_FW_LOADER is not set
333# CONFIG_DEBUG_DRIVER is not set
334# CONFIG_DEBUG_DEVRES is not set
335# CONFIG_SYS_HYPERVISOR is not set
336# CONFIG_CONNECTOR is not set
337CONFIG_MTD=y
338# CONFIG_MTD_DEBUG is not set
339# CONFIG_MTD_CONCAT is not set
340# CONFIG_MTD_PARTITIONS is not set
341
342#
343# User Modules And Translation Layers
344#
345CONFIG_MTD_CHAR=y
346CONFIG_MTD_BLKDEVS=y
347CONFIG_MTD_BLOCK=y
348# CONFIG_FTL is not set
349# CONFIG_NFTL is not set
350# CONFIG_INFTL is not set
351# CONFIG_RFD_FTL is not set
352# CONFIG_SSFDC is not set
353# CONFIG_MTD_OOPS is not set
354
355#
356# RAM/ROM/Flash chip drivers
357#
358CONFIG_MTD_CFI=y
359# CONFIG_MTD_JEDECPROBE is not set
360CONFIG_MTD_GEN_PROBE=y
361# CONFIG_MTD_CFI_ADV_OPTIONS is not set
362CONFIG_MTD_MAP_BANK_WIDTH_1=y
363CONFIG_MTD_MAP_BANK_WIDTH_2=y
364CONFIG_MTD_MAP_BANK_WIDTH_4=y
365# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
366# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
367# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
368CONFIG_MTD_CFI_I1=y
369CONFIG_MTD_CFI_I2=y
370# CONFIG_MTD_CFI_I4 is not set
371# CONFIG_MTD_CFI_I8 is not set
372# CONFIG_MTD_CFI_INTELEXT is not set
373CONFIG_MTD_CFI_AMDSTD=y
374# CONFIG_MTD_CFI_STAA is not set
375CONFIG_MTD_CFI_UTIL=y
376# CONFIG_MTD_RAM is not set
377# CONFIG_MTD_ROM is not set
378# CONFIG_MTD_ABSENT is not set
379
380#
381# Mapping drivers for chip access
382#
383# CONFIG_MTD_COMPLEX_MAPPINGS is not set
384# CONFIG_MTD_PHYSMAP is not set
385CONFIG_MTD_PHYSMAP_OF=y
386# CONFIG_MTD_CFI_FLAGADM is not set
387# CONFIG_MTD_PLATRAM is not set
388
389#
390# Self-contained MTD device drivers
391#
392# CONFIG_MTD_SLRAM is not set
393# CONFIG_MTD_PHRAM is not set
394# CONFIG_MTD_MTDRAM is not set
395# CONFIG_MTD_BLOCK2MTD is not set
396
397#
398# Disk-On-Chip Device Drivers
399#
400# CONFIG_MTD_DOC2000 is not set
401# CONFIG_MTD_DOC2001 is not set
402# CONFIG_MTD_DOC2001PLUS is not set
403# CONFIG_MTD_NAND is not set
404# CONFIG_MTD_ONENAND is not set
405
406#
407# UBI - Unsorted block images
408#
409# CONFIG_MTD_UBI is not set
410CONFIG_OF_DEVICE=y
411# CONFIG_PARPORT is not set
412# CONFIG_BLK_DEV is not set
413# CONFIG_MISC_DEVICES is not set
414# CONFIG_IDE is not set
415
416#
417# SCSI device support
418#
419# CONFIG_RAID_ATTRS is not set
420# CONFIG_SCSI is not set
421# CONFIG_SCSI_DMA is not set
422# CONFIG_SCSI_NETLINK is not set
423# CONFIG_ATA is not set
424# CONFIG_MD is not set
425# CONFIG_MACINTOSH_DRIVERS is not set
426CONFIG_NETDEVICES=y
427# CONFIG_NETDEVICES_MULTIQUEUE is not set
428# CONFIG_DUMMY is not set
429# CONFIG_BONDING is not set
430# CONFIG_MACVLAN is not set
431# CONFIG_EQUALIZER is not set
432# CONFIG_TUN is not set
433# CONFIG_VETH is not set
434CONFIG_PHYLIB=y
435
436#
437# MII PHY device drivers
438#
439# CONFIG_MARVELL_PHY is not set
440CONFIG_DAVICOM_PHY=y
441# CONFIG_QSEMI_PHY is not set
442# CONFIG_LXT_PHY is not set
443# CONFIG_CICADA_PHY is not set
444# CONFIG_VITESSE_PHY is not set
445# CONFIG_SMSC_PHY is not set
446# CONFIG_BROADCOM_PHY is not set
447# CONFIG_ICPLUS_PHY is not set
448# CONFIG_FIXED_PHY is not set
449# CONFIG_MDIO_BITBANG is not set
450CONFIG_NET_ETHERNET=y
451CONFIG_MII=y
452# CONFIG_IBM_NEW_EMAC_ZMII is not set
453# CONFIG_IBM_NEW_EMAC_RGMII is not set
454# CONFIG_IBM_NEW_EMAC_TAH is not set
455# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
456# CONFIG_B44 is not set
457CONFIG_FS_ENET=y
458# CONFIG_FS_ENET_HAS_SCC is not set
459CONFIG_FS_ENET_HAS_FEC=y
460CONFIG_FS_ENET_MDIO_FEC=y
461# CONFIG_NETDEV_1000 is not set
462# CONFIG_NETDEV_10000 is not set
463
464#
465# Wireless LAN
466#
467# CONFIG_WLAN_PRE80211 is not set
468# CONFIG_WLAN_80211 is not set
469# CONFIG_WAN is not set
470# CONFIG_PPP is not set
471# CONFIG_SLIP is not set
472# CONFIG_SHAPER is not set
473# CONFIG_NETCONSOLE is not set
474# CONFIG_NETPOLL is not set
475# CONFIG_NET_POLL_CONTROLLER is not set
476# CONFIG_ISDN is not set
477# CONFIG_PHONE is not set
478
479#
480# Input device support
481#
482CONFIG_INPUT=y
483# CONFIG_INPUT_FF_MEMLESS is not set
484# CONFIG_INPUT_POLLDEV is not set
485
486#
487# Userland interfaces
488#
489CONFIG_INPUT_MOUSEDEV=y
490CONFIG_INPUT_MOUSEDEV_PSAUX=y
491CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
492CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
493# CONFIG_INPUT_JOYDEV is not set
494# CONFIG_INPUT_EVDEV is not set
495# CONFIG_INPUT_EVBUG is not set
496
497#
498# Input Device Drivers
499#
500CONFIG_INPUT_KEYBOARD=y
501CONFIG_KEYBOARD_ATKBD=y
502# CONFIG_KEYBOARD_SUNKBD is not set
503# CONFIG_KEYBOARD_LKKBD is not set
504# CONFIG_KEYBOARD_XTKBD is not set
505# CONFIG_KEYBOARD_NEWTON is not set
506# CONFIG_KEYBOARD_STOWAWAY is not set
507CONFIG_INPUT_MOUSE=y
508CONFIG_MOUSE_PS2=y
509CONFIG_MOUSE_PS2_ALPS=y
510CONFIG_MOUSE_PS2_LOGIPS2PP=y
511CONFIG_MOUSE_PS2_SYNAPTICS=y
512CONFIG_MOUSE_PS2_LIFEBOOK=y
513CONFIG_MOUSE_PS2_TRACKPOINT=y
514# CONFIG_MOUSE_PS2_TOUCHKIT is not set
515# CONFIG_MOUSE_SERIAL is not set
516# CONFIG_MOUSE_VSXXXAA is not set
517# CONFIG_INPUT_JOYSTICK is not set
518# CONFIG_INPUT_TABLET is not set
519# CONFIG_INPUT_TOUCHSCREEN is not set
520# CONFIG_INPUT_MISC is not set
521
522#
523# Hardware I/O ports
524#
525CONFIG_SERIO=y
526CONFIG_SERIO_I8042=y
527CONFIG_SERIO_SERPORT=y
528CONFIG_SERIO_LIBPS2=y
529# CONFIG_SERIO_RAW is not set
530# CONFIG_GAMEPORT is not set
531
532#
533# Character devices
534#
535# CONFIG_VT is not set
536# CONFIG_SERIAL_NONSTANDARD is not set
537
538#
539# Serial drivers
540#
541# CONFIG_SERIAL_8250 is not set
542
543#
544# Non-8250 serial port support
545#
546# CONFIG_SERIAL_UARTLITE is not set
547CONFIG_SERIAL_CORE=y
548CONFIG_SERIAL_CORE_CONSOLE=y
549CONFIG_SERIAL_CPM=y
550CONFIG_SERIAL_CPM_CONSOLE=y
551# CONFIG_SERIAL_CPM_SCC1 is not set
552# CONFIG_SERIAL_CPM_SCC2 is not set
553# CONFIG_SERIAL_CPM_SCC3 is not set
554# CONFIG_SERIAL_CPM_SCC4 is not set
555CONFIG_SERIAL_CPM_SMC1=y
556CONFIG_SERIAL_CPM_SMC2=y
557CONFIG_UNIX98_PTYS=y
558# CONFIG_LEGACY_PTYS is not set
559# CONFIG_IPMI_HANDLER is not set
560CONFIG_HW_RANDOM=y
561# CONFIG_NVRAM is not set
562CONFIG_GEN_RTC=y
563# CONFIG_GEN_RTC_X is not set
564# CONFIG_R3964 is not set
565# CONFIG_RAW_DRIVER is not set
566# CONFIG_TCG_TPM is not set
567# CONFIG_I2C is not set
568
569#
570# SPI support
571#
572# CONFIG_SPI is not set
573# CONFIG_SPI_MASTER is not set
574# CONFIG_W1 is not set
575# CONFIG_POWER_SUPPLY is not set
576# CONFIG_HWMON is not set
577# CONFIG_WATCHDOG is not set
578
579#
580# Sonics Silicon Backplane
581#
582CONFIG_SSB_POSSIBLE=y
583# CONFIG_SSB is not set
584
585#
586# Multifunction device drivers
587#
588# CONFIG_MFD_SM501 is not set
589
590#
591# Multimedia devices
592#
593# CONFIG_VIDEO_DEV is not set
594# CONFIG_DVB_CORE is not set
595CONFIG_DAB=y
596
597#
598# Graphics support
599#
600# CONFIG_VGASTATE is not set
601CONFIG_VIDEO_OUTPUT_CONTROL=y
602# CONFIG_FB is not set
603# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
604
605#
606# Display device support
607#
608# CONFIG_DISPLAY_SUPPORT is not set
609
610#
611# Sound
612#
613# CONFIG_SOUND is not set
614# CONFIG_HID_SUPPORT is not set
615# CONFIG_USB_SUPPORT is not set
616# CONFIG_MMC is not set
617# CONFIG_NEW_LEDS is not set
618# CONFIG_EDAC is not set
619# CONFIG_RTC_CLASS is not set
620
621#
622# Userspace I/O
623#
624# CONFIG_UIO is not set
625
626#
627# File systems
628#
629# CONFIG_EXT2_FS is not set
630# CONFIG_EXT3_FS is not set
631# CONFIG_EXT4DEV_FS is not set
632# CONFIG_REISERFS_FS is not set
633# CONFIG_JFS_FS is not set
634# CONFIG_FS_POSIX_ACL is not set
635# CONFIG_XFS_FS is not set
636# CONFIG_GFS2_FS is not set
637# CONFIG_OCFS2_FS is not set
638# CONFIG_MINIX_FS is not set
639# CONFIG_ROMFS_FS is not set
640# CONFIG_INOTIFY is not set
641# CONFIG_QUOTA is not set
642# CONFIG_DNOTIFY is not set
643# CONFIG_AUTOFS_FS is not set
644# CONFIG_AUTOFS4_FS is not set
645# CONFIG_FUSE_FS is not set
646
647#
648# CD-ROM/DVD Filesystems
649#
650# CONFIG_ISO9660_FS is not set
651# CONFIG_UDF_FS is not set
652
653#
654# DOS/FAT/NT Filesystems
655#
656# CONFIG_MSDOS_FS is not set
657# CONFIG_VFAT_FS is not set
658# CONFIG_NTFS_FS is not set
659
660#
661# Pseudo filesystems
662#
663CONFIG_PROC_FS=y
664# CONFIG_PROC_KCORE is not set
665CONFIG_PROC_SYSCTL=y
666CONFIG_SYSFS=y
667CONFIG_TMPFS=y
668# CONFIG_TMPFS_POSIX_ACL is not set
669# CONFIG_HUGETLB_PAGE is not set
670# CONFIG_CONFIGFS_FS is not set
671
672#
673# Miscellaneous filesystems
674#
675# CONFIG_ADFS_FS is not set
676# CONFIG_AFFS_FS is not set
677# CONFIG_HFS_FS is not set
678# CONFIG_HFSPLUS_FS is not set
679# CONFIG_BEFS_FS is not set
680# CONFIG_BFS_FS is not set
681# CONFIG_EFS_FS is not set
682# CONFIG_JFFS2_FS is not set
683CONFIG_CRAMFS=y
684# CONFIG_VXFS_FS is not set
685# CONFIG_HPFS_FS is not set
686# CONFIG_QNX4FS_FS is not set
687# CONFIG_SYSV_FS is not set
688# CONFIG_UFS_FS is not set
689CONFIG_NETWORK_FILESYSTEMS=y
690CONFIG_NFS_FS=y
691CONFIG_NFS_V3=y
692# CONFIG_NFS_V3_ACL is not set
693# CONFIG_NFS_V4 is not set
694# CONFIG_NFS_DIRECTIO is not set
695# CONFIG_NFSD is not set
696CONFIG_ROOT_NFS=y
697CONFIG_LOCKD=y
698CONFIG_LOCKD_V4=y
699CONFIG_NFS_COMMON=y
700CONFIG_SUNRPC=y
701# CONFIG_SUNRPC_BIND34 is not set
702# CONFIG_RPCSEC_GSS_KRB5 is not set
703# CONFIG_RPCSEC_GSS_SPKM3 is not set
704# CONFIG_SMB_FS is not set
705# CONFIG_CIFS is not set
706# CONFIG_NCP_FS is not set
707# CONFIG_CODA_FS is not set
708# CONFIG_AFS_FS is not set
709
710#
711# Partition Types
712#
713CONFIG_PARTITION_ADVANCED=y
714# CONFIG_ACORN_PARTITION is not set
715# CONFIG_OSF_PARTITION is not set
716# CONFIG_AMIGA_PARTITION is not set
717# CONFIG_ATARI_PARTITION is not set
718# CONFIG_MAC_PARTITION is not set
719CONFIG_MSDOS_PARTITION=y
720# CONFIG_BSD_DISKLABEL is not set
721# CONFIG_MINIX_SUBPARTITION is not set
722# CONFIG_SOLARIS_X86_PARTITION is not set
723# CONFIG_UNIXWARE_DISKLABEL is not set
724# CONFIG_LDM_PARTITION is not set
725# CONFIG_SGI_PARTITION is not set
726# CONFIG_ULTRIX_PARTITION is not set
727# CONFIG_SUN_PARTITION is not set
728# CONFIG_KARMA_PARTITION is not set
729# CONFIG_EFI_PARTITION is not set
730# CONFIG_SYSV68_PARTITION is not set
731# CONFIG_NLS is not set
732# CONFIG_DLM is not set
733# CONFIG_UCC_SLOW is not set
734
735#
736# Library routines
737#
738# CONFIG_CRC_CCITT is not set
739# CONFIG_CRC16 is not set
740# CONFIG_CRC_ITU_T is not set
741# CONFIG_CRC32 is not set
742# CONFIG_CRC7 is not set
743# CONFIG_LIBCRC32C is not set
744CONFIG_ZLIB_INFLATE=y
745CONFIG_HAS_IOMEM=y
746CONFIG_HAS_IOPORT=y
747CONFIG_HAS_DMA=y
748CONFIG_INSTRUMENTATION=y
749# CONFIG_PROFILING is not set
750# CONFIG_MARKERS is not set
751
752#
753# Kernel hacking
754#
755# CONFIG_PRINTK_TIME is not set
756CONFIG_ENABLE_WARN_DEPRECATED=y
757CONFIG_ENABLE_MUST_CHECK=y
758CONFIG_MAGIC_SYSRQ=y
759# CONFIG_UNUSED_SYMBOLS is not set
760# CONFIG_DEBUG_FS is not set
761# CONFIG_HEADERS_CHECK is not set
762CONFIG_DEBUG_KERNEL=y
763# CONFIG_DEBUG_SHIRQ is not set
764CONFIG_DETECT_SOFTLOCKUP=y
765CONFIG_SCHED_DEBUG=y
766# CONFIG_SCHEDSTATS is not set
767# CONFIG_TIMER_STATS is not set
768# CONFIG_SLUB_DEBUG_ON is not set
769# CONFIG_DEBUG_SPINLOCK is not set
770# CONFIG_DEBUG_MUTEXES is not set
771# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
772# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
773# CONFIG_DEBUG_KOBJECT is not set
774CONFIG_DEBUG_BUGVERBOSE=y
775CONFIG_DEBUG_INFO=y
776# CONFIG_DEBUG_VM is not set
777# CONFIG_DEBUG_LIST is not set
778# CONFIG_DEBUG_SG is not set
779CONFIG_FORCED_INLINING=y
780# CONFIG_BOOT_PRINTK_DELAY is not set
781# CONFIG_FAULT_INJECTION is not set
782# CONFIG_SAMPLES is not set
783# CONFIG_DEBUG_STACKOVERFLOW is not set
784# CONFIG_DEBUG_STACK_USAGE is not set
785# CONFIG_DEBUG_PAGEALLOC is not set
786# CONFIG_DEBUGGER is not set
787# CONFIG_BDI_SWITCH is not set
788# CONFIG_PPC_EARLY_DEBUG is not set
789
790#
791# Security options
792#
793# CONFIG_KEYS is not set
794# CONFIG_SECURITY is not set
795# CONFIG_SECURITY_FILE_CAPABILITIES is not set
796# CONFIG_CRYPTO is not set
797# CONFIG_PPC_CLOCK is not set
798CONFIG_PPC_LIB_RHEAP=y
diff --git a/arch/powerpc/configs/adder875-uboot_defconfig b/arch/powerpc/configs/adder875_defconfig
index 1faf7ef59a23..a3cc94a2ff06 100644
--- a/arch/powerpc/configs/adder875-uboot_defconfig
+++ b/arch/powerpc/configs/adder875_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.24-rc6 3# Linux kernel version: 2.6.25-rc2
4# Thu Jan 17 16:17:18 2008 4# Wed Feb 20 12:26:07 2008
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -26,6 +26,7 @@ CONFIG_GENERIC_TIME=y
26CONFIG_GENERIC_TIME_VSYSCALL=y 26CONFIG_GENERIC_TIME_VSYSCALL=y
27CONFIG_GENERIC_CLOCKEVENTS=y 27CONFIG_GENERIC_CLOCKEVENTS=y
28CONFIG_GENERIC_HARDIRQS=y 28CONFIG_GENERIC_HARDIRQS=y
29# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
29CONFIG_IRQ_PER_CPU=y 30CONFIG_IRQ_PER_CPU=y
30CONFIG_RWSEM_XCHGADD_ALGORITHM=y 31CONFIG_RWSEM_XCHGADD_ALGORITHM=y
31CONFIG_ARCH_HAS_ILOG2_U32=y 32CONFIG_ARCH_HAS_ILOG2_U32=y
@@ -64,17 +65,18 @@ CONFIG_SYSVIPC_SYSCTL=y
64# CONFIG_POSIX_MQUEUE is not set 65# CONFIG_POSIX_MQUEUE is not set
65# CONFIG_BSD_PROCESS_ACCT is not set 66# CONFIG_BSD_PROCESS_ACCT is not set
66# CONFIG_TASKSTATS is not set 67# CONFIG_TASKSTATS is not set
67# CONFIG_USER_NS is not set
68# CONFIG_PID_NS is not set
69# CONFIG_AUDIT is not set 68# CONFIG_AUDIT is not set
70# CONFIG_IKCONFIG is not set 69# CONFIG_IKCONFIG is not set
71CONFIG_LOG_BUF_SHIFT=14 70CONFIG_LOG_BUF_SHIFT=14
72# CONFIG_CGROUPS is not set 71# CONFIG_CGROUPS is not set
72CONFIG_GROUP_SCHED=y
73CONFIG_FAIR_GROUP_SCHED=y 73CONFIG_FAIR_GROUP_SCHED=y
74CONFIG_FAIR_USER_SCHED=y 74# CONFIG_RT_GROUP_SCHED is not set
75# CONFIG_FAIR_CGROUP_SCHED is not set 75CONFIG_USER_SCHED=y
76# CONFIG_CGROUP_SCHED is not set
76CONFIG_SYSFS_DEPRECATED=y 77CONFIG_SYSFS_DEPRECATED=y
77# CONFIG_RELAY is not set 78# CONFIG_RELAY is not set
79# CONFIG_NAMESPACES is not set
78# CONFIG_BLK_DEV_INITRD is not set 80# CONFIG_BLK_DEV_INITRD is not set
79# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 81# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
80CONFIG_SYSCTL=y 82CONFIG_SYSCTL=y
@@ -87,11 +89,13 @@ CONFIG_HOTPLUG=y
87CONFIG_PRINTK=y 89CONFIG_PRINTK=y
88CONFIG_BUG=y 90CONFIG_BUG=y
89# CONFIG_ELF_CORE is not set 91# CONFIG_ELF_CORE is not set
92CONFIG_COMPAT_BRK=y
90# CONFIG_BASE_FULL is not set 93# CONFIG_BASE_FULL is not set
91# CONFIG_FUTEX is not set 94# CONFIG_FUTEX is not set
92CONFIG_ANON_INODES=y 95CONFIG_ANON_INODES=y
93CONFIG_EPOLL=y 96CONFIG_EPOLL=y
94CONFIG_SIGNALFD=y 97CONFIG_SIGNALFD=y
98CONFIG_TIMERFD=y
95CONFIG_EVENTFD=y 99CONFIG_EVENTFD=y
96CONFIG_SHMEM=y 100CONFIG_SHMEM=y
97# CONFIG_VM_EVENT_COUNTERS is not set 101# CONFIG_VM_EVENT_COUNTERS is not set
@@ -99,6 +103,12 @@ CONFIG_SLUB_DEBUG=y
99# CONFIG_SLAB is not set 103# CONFIG_SLAB is not set
100CONFIG_SLUB=y 104CONFIG_SLUB=y
101# CONFIG_SLOB is not set 105# CONFIG_SLOB is not set
106# CONFIG_PROFILING is not set
107# CONFIG_MARKERS is not set
108CONFIG_HAVE_OPROFILE=y
109CONFIG_HAVE_KPROBES=y
110CONFIG_PROC_PAGE_MONITOR=y
111CONFIG_SLABINFO=y
102# CONFIG_TINY_SHMEM is not set 112# CONFIG_TINY_SHMEM is not set
103CONFIG_BASE_SMALL=1 113CONFIG_BASE_SMALL=1
104# CONFIG_MODULES is not set 114# CONFIG_MODULES is not set
@@ -120,12 +130,14 @@ CONFIG_DEFAULT_DEADLINE=y
120# CONFIG_DEFAULT_CFQ is not set 130# CONFIG_DEFAULT_CFQ is not set
121# CONFIG_DEFAULT_NOOP is not set 131# CONFIG_DEFAULT_NOOP is not set
122CONFIG_DEFAULT_IOSCHED="deadline" 132CONFIG_DEFAULT_IOSCHED="deadline"
133CONFIG_CLASSIC_RCU=y
134# CONFIG_PREEMPT_RCU is not set
123 135
124# 136#
125# Platform support 137# Platform support
126# 138#
127# CONFIG_PPC_MPC52xx is not set 139# CONFIG_PPC_MPC512x is not set
128# CONFIG_PPC_MPC5200 is not set 140# CONFIG_PPC_MPC5121 is not set
129# CONFIG_PPC_CELL is not set 141# CONFIG_PPC_CELL is not set
130# CONFIG_PPC_CELL_NATIVE is not set 142# CONFIG_PPC_CELL_NATIVE is not set
131CONFIG_CPM1=y 143CONFIG_CPM1=y
@@ -150,6 +162,7 @@ CONFIG_NO_UCODE_PATCH=y
150# CONFIG_I2C_SPI_UCODE_PATCH is not set 162# CONFIG_I2C_SPI_UCODE_PATCH is not set
151# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set 163# CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set
152# CONFIG_PQ2ADS is not set 164# CONFIG_PQ2ADS is not set
165# CONFIG_IPIC is not set
153# CONFIG_MPIC is not set 166# CONFIG_MPIC is not set
154# CONFIG_MPIC_WEIRD is not set 167# CONFIG_MPIC_WEIRD is not set
155# CONFIG_PPC_I8259 is not set 168# CONFIG_PPC_I8259 is not set
@@ -160,7 +173,6 @@ CONFIG_NO_UCODE_PATCH=y
160# CONFIG_PPC_INDIRECT_IO is not set 173# CONFIG_PPC_INDIRECT_IO is not set
161# CONFIG_GENERIC_IOMAP is not set 174# CONFIG_GENERIC_IOMAP is not set
162# CONFIG_CPU_FREQ is not set 175# CONFIG_CPU_FREQ is not set
163# CONFIG_CPM2 is not set
164CONFIG_PPC_CPM_NEW_BINDING=y 176CONFIG_PPC_CPM_NEW_BINDING=y
165# CONFIG_FSL_ULI1575 is not set 177# CONFIG_FSL_ULI1575 is not set
166CONFIG_CPM=y 178CONFIG_CPM=y
@@ -178,14 +190,19 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
178# CONFIG_HZ_300 is not set 190# CONFIG_HZ_300 is not set
179CONFIG_HZ_1000=y 191CONFIG_HZ_1000=y
180CONFIG_HZ=1000 192CONFIG_HZ=1000
193# CONFIG_SCHED_HRTICK is not set
181CONFIG_PREEMPT_NONE=y 194CONFIG_PREEMPT_NONE=y
182# CONFIG_PREEMPT_VOLUNTARY is not set 195# CONFIG_PREEMPT_VOLUNTARY is not set
183# CONFIG_PREEMPT is not set 196# CONFIG_PREEMPT is not set
197CONFIG_RCU_TRACE=y
184CONFIG_BINFMT_ELF=y 198CONFIG_BINFMT_ELF=y
185# CONFIG_BINFMT_MISC is not set 199# CONFIG_BINFMT_MISC is not set
186# CONFIG_MATH_EMULATION is not set 200# CONFIG_MATH_EMULATION is not set
187# CONFIG_8XX_MINIMAL_FPEMU is not set 201# CONFIG_8XX_MINIMAL_FPEMU is not set
202# CONFIG_IOMMU_HELPER is not set
188CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y 203CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
204CONFIG_ARCH_HAS_WALK_MEMORY=y
205CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
189CONFIG_ARCH_FLATMEM_ENABLE=y 206CONFIG_ARCH_FLATMEM_ENABLE=y
190CONFIG_ARCH_POPULATES_NODE_MAP=y 207CONFIG_ARCH_POPULATES_NODE_MAP=y
191CONFIG_SELECT_MEMORY_MODEL=y 208CONFIG_SELECT_MEMORY_MODEL=y
@@ -204,11 +221,7 @@ CONFIG_VIRT_TO_BUS=y
204# CONFIG_PROC_DEVICETREE is not set 221# CONFIG_PROC_DEVICETREE is not set
205# CONFIG_CMDLINE_BOOL is not set 222# CONFIG_CMDLINE_BOOL is not set
206# CONFIG_PM is not set 223# CONFIG_PM is not set
207CONFIG_SUSPEND_UP_POSSIBLE=y
208CONFIG_HIBERNATION_UP_POSSIBLE=y
209# CONFIG_SECCOMP is not set 224# CONFIG_SECCOMP is not set
210CONFIG_WANT_DEVICE_TREE=y
211CONFIG_DEVICE_TREE="adder875-uboot.dts"
212CONFIG_ISA_DMA_API=y 225CONFIG_ISA_DMA_API=y
213 226
214# 227#
@@ -305,6 +318,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
305# 318#
306# CONFIG_NET_PKTGEN is not set 319# CONFIG_NET_PKTGEN is not set
307# CONFIG_HAMRADIO is not set 320# CONFIG_HAMRADIO is not set
321# CONFIG_CAN is not set
308# CONFIG_IRDA is not set 322# CONFIG_IRDA is not set
309# CONFIG_BT is not set 323# CONFIG_BT is not set
310# CONFIG_AF_RXRPC is not set 324# CONFIG_AF_RXRPC is not set
@@ -411,6 +425,7 @@ CONFIG_OF_DEVICE=y
411# CONFIG_PARPORT is not set 425# CONFIG_PARPORT is not set
412# CONFIG_BLK_DEV is not set 426# CONFIG_BLK_DEV is not set
413# CONFIG_MISC_DEVICES is not set 427# CONFIG_MISC_DEVICES is not set
428CONFIG_HAVE_IDE=y
414# CONFIG_IDE is not set 429# CONFIG_IDE is not set
415 430
416# 431#
@@ -445,6 +460,7 @@ CONFIG_DAVICOM_PHY=y
445# CONFIG_SMSC_PHY is not set 460# CONFIG_SMSC_PHY is not set
446# CONFIG_BROADCOM_PHY is not set 461# CONFIG_BROADCOM_PHY is not set
447# CONFIG_ICPLUS_PHY is not set 462# CONFIG_ICPLUS_PHY is not set
463# CONFIG_REALTEK_PHY is not set
448# CONFIG_FIXED_PHY is not set 464# CONFIG_FIXED_PHY is not set
449# CONFIG_MDIO_BITBANG is not set 465# CONFIG_MDIO_BITBANG is not set
450CONFIG_NET_ETHERNET=y 466CONFIG_NET_ETHERNET=y
@@ -469,7 +485,6 @@ CONFIG_FS_ENET_MDIO_FEC=y
469# CONFIG_WAN is not set 485# CONFIG_WAN is not set
470# CONFIG_PPP is not set 486# CONFIG_PPP is not set
471# CONFIG_SLIP is not set 487# CONFIG_SLIP is not set
472# CONFIG_SHAPER is not set
473# CONFIG_NETCONSOLE is not set 488# CONFIG_NETCONSOLE is not set
474# CONFIG_NETPOLL is not set 489# CONFIG_NETPOLL is not set
475# CONFIG_NET_POLL_CONTROLLER is not set 490# CONFIG_NET_POLL_CONTROLLER is not set
@@ -574,6 +589,7 @@ CONFIG_GEN_RTC=y
574# CONFIG_W1 is not set 589# CONFIG_W1 is not set
575# CONFIG_POWER_SUPPLY is not set 590# CONFIG_POWER_SUPPLY is not set
576# CONFIG_HWMON is not set 591# CONFIG_HWMON is not set
592CONFIG_THERMAL=y
577# CONFIG_WATCHDOG is not set 593# CONFIG_WATCHDOG is not set
578 594
579# 595#
@@ -614,6 +630,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
614# CONFIG_HID_SUPPORT is not set 630# CONFIG_HID_SUPPORT is not set
615# CONFIG_USB_SUPPORT is not set 631# CONFIG_USB_SUPPORT is not set
616# CONFIG_MMC is not set 632# CONFIG_MMC is not set
633# CONFIG_MEMSTICK is not set
617# CONFIG_NEW_LEDS is not set 634# CONFIG_NEW_LEDS is not set
618# CONFIG_EDAC is not set 635# CONFIG_EDAC is not set
619# CONFIG_RTC_CLASS is not set 636# CONFIG_RTC_CLASS is not set
@@ -635,11 +652,9 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y
635# CONFIG_XFS_FS is not set 652# CONFIG_XFS_FS is not set
636# CONFIG_GFS2_FS is not set 653# CONFIG_GFS2_FS is not set
637# CONFIG_OCFS2_FS is not set 654# CONFIG_OCFS2_FS is not set
638# CONFIG_MINIX_FS is not set 655# CONFIG_DNOTIFY is not set
639# CONFIG_ROMFS_FS is not set
640# CONFIG_INOTIFY is not set 656# CONFIG_INOTIFY is not set
641# CONFIG_QUOTA is not set 657# CONFIG_QUOTA is not set
642# CONFIG_DNOTIFY is not set
643# CONFIG_AUTOFS_FS is not set 658# CONFIG_AUTOFS_FS is not set
644# CONFIG_AUTOFS4_FS is not set 659# CONFIG_AUTOFS4_FS is not set
645# CONFIG_FUSE_FS is not set 660# CONFIG_FUSE_FS is not set
@@ -682,8 +697,10 @@ CONFIG_TMPFS=y
682# CONFIG_JFFS2_FS is not set 697# CONFIG_JFFS2_FS is not set
683CONFIG_CRAMFS=y 698CONFIG_CRAMFS=y
684# CONFIG_VXFS_FS is not set 699# CONFIG_VXFS_FS is not set
700# CONFIG_MINIX_FS is not set
685# CONFIG_HPFS_FS is not set 701# CONFIG_HPFS_FS is not set
686# CONFIG_QNX4FS_FS is not set 702# CONFIG_QNX4FS_FS is not set
703# CONFIG_ROMFS_FS is not set
687# CONFIG_SYSV_FS is not set 704# CONFIG_SYSV_FS is not set
688# CONFIG_UFS_FS is not set 705# CONFIG_UFS_FS is not set
689CONFIG_NETWORK_FILESYSTEMS=y 706CONFIG_NETWORK_FILESYSTEMS=y
@@ -730,7 +747,6 @@ CONFIG_MSDOS_PARTITION=y
730# CONFIG_SYSV68_PARTITION is not set 747# CONFIG_SYSV68_PARTITION is not set
731# CONFIG_NLS is not set 748# CONFIG_NLS is not set
732# CONFIG_DLM is not set 749# CONFIG_DLM is not set
733# CONFIG_UCC_SLOW is not set
734 750
735# 751#
736# Library routines 752# Library routines
@@ -745,9 +761,6 @@ CONFIG_ZLIB_INFLATE=y
745CONFIG_HAS_IOMEM=y 761CONFIG_HAS_IOMEM=y
746CONFIG_HAS_IOPORT=y 762CONFIG_HAS_IOPORT=y
747CONFIG_HAS_DMA=y 763CONFIG_HAS_DMA=y
748CONFIG_INSTRUMENTATION=y
749# CONFIG_PROFILING is not set
750# CONFIG_MARKERS is not set
751 764
752# 765#
753# Kernel hacking 766# Kernel hacking
@@ -757,7 +770,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y
757CONFIG_ENABLE_MUST_CHECK=y 770CONFIG_ENABLE_MUST_CHECK=y
758CONFIG_MAGIC_SYSRQ=y 771CONFIG_MAGIC_SYSRQ=y
759# CONFIG_UNUSED_SYMBOLS is not set 772# CONFIG_UNUSED_SYMBOLS is not set
760# CONFIG_DEBUG_FS is not set 773CONFIG_DEBUG_FS=y
761# CONFIG_HEADERS_CHECK is not set 774# CONFIG_HEADERS_CHECK is not set
762CONFIG_DEBUG_KERNEL=y 775CONFIG_DEBUG_KERNEL=y
763# CONFIG_DEBUG_SHIRQ is not set 776# CONFIG_DEBUG_SHIRQ is not set
@@ -766,6 +779,7 @@ CONFIG_SCHED_DEBUG=y
766# CONFIG_SCHEDSTATS is not set 779# CONFIG_SCHEDSTATS is not set
767# CONFIG_TIMER_STATS is not set 780# CONFIG_TIMER_STATS is not set
768# CONFIG_SLUB_DEBUG_ON is not set 781# CONFIG_SLUB_DEBUG_ON is not set
782# CONFIG_SLUB_STATS is not set
769# CONFIG_DEBUG_SPINLOCK is not set 783# CONFIG_DEBUG_SPINLOCK is not set
770# CONFIG_DEBUG_MUTEXES is not set 784# CONFIG_DEBUG_MUTEXES is not set
771# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 785# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
@@ -776,14 +790,15 @@ CONFIG_DEBUG_INFO=y
776# CONFIG_DEBUG_VM is not set 790# CONFIG_DEBUG_VM is not set
777# CONFIG_DEBUG_LIST is not set 791# CONFIG_DEBUG_LIST is not set
778# CONFIG_DEBUG_SG is not set 792# CONFIG_DEBUG_SG is not set
779CONFIG_FORCED_INLINING=y
780# CONFIG_BOOT_PRINTK_DELAY is not set 793# CONFIG_BOOT_PRINTK_DELAY is not set
794# CONFIG_BACKTRACE_SELF_TEST is not set
781# CONFIG_FAULT_INJECTION is not set 795# CONFIG_FAULT_INJECTION is not set
782# CONFIG_SAMPLES is not set 796# CONFIG_SAMPLES is not set
783# CONFIG_DEBUG_STACKOVERFLOW is not set 797# CONFIG_DEBUG_STACKOVERFLOW is not set
784# CONFIG_DEBUG_STACK_USAGE is not set 798# CONFIG_DEBUG_STACK_USAGE is not set
785# CONFIG_DEBUG_PAGEALLOC is not set 799# CONFIG_DEBUG_PAGEALLOC is not set
786# CONFIG_DEBUGGER is not set 800# CONFIG_DEBUGGER is not set
801# CONFIG_VIRQ_DEBUG is not set
787# CONFIG_BDI_SWITCH is not set 802# CONFIG_BDI_SWITCH is not set
788# CONFIG_PPC_EARLY_DEBUG is not set 803# CONFIG_PPC_EARLY_DEBUG is not set
789 804
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
index f7458396cd7c..3c9452d4308b 100644
--- a/arch/powerpc/kernel/head_8xx.S
+++ b/arch/powerpc/kernel/head_8xx.S
@@ -332,8 +332,18 @@ InstructionTLBMiss:
332 mfspr r11, SPRN_MD_TWC /* ....and get the pte address */ 332 mfspr r11, SPRN_MD_TWC /* ....and get the pte address */
333 lwz r10, 0(r11) /* Get the pte */ 333 lwz r10, 0(r11) /* Get the pte */
334 334
335#ifdef CONFIG_SWAP
336 /* do not set the _PAGE_ACCESSED bit of a non-present page */
337 andi. r11, r10, _PAGE_PRESENT
338 beq 4f
339 ori r10, r10, _PAGE_ACCESSED
340 mfspr r11, SPRN_MD_TWC /* get the pte address again */
341 stw r10, 0(r11)
3424:
343#else
335 ori r10, r10, _PAGE_ACCESSED 344 ori r10, r10, _PAGE_ACCESSED
336 stw r10, 0(r11) 345 stw r10, 0(r11)
346#endif
337 347
338 /* The Linux PTE won't go exactly into the MMU TLB. 348 /* The Linux PTE won't go exactly into the MMU TLB.
339 * Software indicator bits 21, 22 and 28 must be clear. 349 * Software indicator bits 21, 22 and 28 must be clear.
@@ -398,8 +408,17 @@ DataStoreTLBMiss:
398 DO_8xx_CPU6(0x3b80, r3) 408 DO_8xx_CPU6(0x3b80, r3)
399 mtspr SPRN_MD_TWC, r11 409 mtspr SPRN_MD_TWC, r11
400 410
401 mfspr r11, SPRN_MD_TWC /* get the pte address again */ 411#ifdef CONFIG_SWAP
412 /* do not set the _PAGE_ACCESSED bit of a non-present page */
413 andi. r11, r10, _PAGE_PRESENT
414 beq 4f
402 ori r10, r10, _PAGE_ACCESSED 415 ori r10, r10, _PAGE_ACCESSED
4164:
417 /* and update pte in table */
418#else
419 ori r10, r10, _PAGE_ACCESSED
420#endif
421 mfspr r11, SPRN_MD_TWC /* get the pte address again */
403 stw r10, 0(r11) 422 stw r10, 0(r11)
404 423
405 /* The Linux PTE won't go exactly into the MMU TLB. 424 /* The Linux PTE won't go exactly into the MMU TLB.
@@ -507,7 +526,16 @@ DataTLBError:
507 526
508 /* Update 'changed', among others. 527 /* Update 'changed', among others.
509 */ 528 */
529#ifdef CONFIG_SWAP
530 ori r10, r10, _PAGE_DIRTY|_PAGE_HWWRITE
531 /* do not set the _PAGE_ACCESSED bit of a non-present page */
532 andi. r11, r10, _PAGE_PRESENT
533 beq 4f
534 ori r10, r10, _PAGE_ACCESSED
5354:
536#else
510 ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE 537 ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE
538#endif
511 mfspr r11, SPRN_MD_TWC /* Get pte address again */ 539 mfspr r11, SPRN_MD_TWC /* Get pte address again */
512 stw r10, 0(r11) /* and update pte in table */ 540 stw r10, 0(r11) /* and update pte in table */
513 541
diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S
index 5c2e253ddfb1..9d2c56621f1e 100644
--- a/arch/powerpc/kernel/misc_32.S
+++ b/arch/powerpc/kernel/misc_32.S
@@ -785,6 +785,21 @@ _GLOBAL(__lshrdi3)
785 or r4,r4,r7 # LSW |= t2 785 or r4,r4,r7 # LSW |= t2
786 blr 786 blr
787 787
788/*
789 * 64-bit comparison: __ucmpdi2(u64 a, u64 b)
790 * Returns 0 if a < b, 1 if a == b, 2 if a > b.
791 */
792_GLOBAL(__ucmpdi2)
793 cmplw r3,r5
794 li r3,1
795 bne 1f
796 cmplw r4,r6
797 beqlr
7981: li r3,0
799 bltlr
800 li r3,2
801 blr
802
788_GLOBAL(abs) 803_GLOBAL(abs)
789 srawi r4,r3,31 804 srawi r4,r3,31
790 xor r3,r3,r4 805 xor r3,r3,r4
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 980fe32895c0..89c83ccb85c1 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -748,7 +748,13 @@ static void __devinit pcibios_fixup_resources(struct pci_dev *dev)
748 struct resource *res = dev->resource + i; 748 struct resource *res = dev->resource + i;
749 if (!res->flags) 749 if (!res->flags)
750 continue; 750 continue;
751 if (res->end == 0xffffffff) { 751 /* On platforms that have PPC_PCI_PROBE_ONLY set, we don't
752 * consider 0 as an unassigned BAR value. It's technically
753 * a valid value, but linux doesn't like it... so when we can
754 * re-assign things, we do so, but if we can't, we keep it
755 * around and hope for the best...
756 */
757 if (res->start == 0 && !(ppc_pci_flags & PPC_PCI_PROBE_ONLY)) {
752 pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] is unassigned\n", 758 pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] is unassigned\n",
753 pci_name(dev), i, 759 pci_name(dev), i,
754 (unsigned long long)res->start, 760 (unsigned long long)res->start,
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c
index aa9ff35b0e63..9c98424277a8 100644
--- a/arch/powerpc/kernel/ppc_ksyms.c
+++ b/arch/powerpc/kernel/ppc_ksyms.c
@@ -58,6 +58,7 @@ extern void program_check_exception(struct pt_regs *regs);
58extern void single_step_exception(struct pt_regs *regs); 58extern void single_step_exception(struct pt_regs *regs);
59extern int sys_sigreturn(struct pt_regs *regs); 59extern int sys_sigreturn(struct pt_regs *regs);
60 60
61EXPORT_SYMBOL(empty_zero_page);
61EXPORT_SYMBOL(clear_pages); 62EXPORT_SYMBOL(clear_pages);
62EXPORT_SYMBOL(copy_page); 63EXPORT_SYMBOL(copy_page);
63EXPORT_SYMBOL(ISA_DMA_THRESHOLD); 64EXPORT_SYMBOL(ISA_DMA_THRESHOLD);
@@ -149,6 +150,8 @@ long long __lshrdi3(long long, int);
149EXPORT_SYMBOL(__ashrdi3); 150EXPORT_SYMBOL(__ashrdi3);
150EXPORT_SYMBOL(__ashldi3); 151EXPORT_SYMBOL(__ashldi3);
151EXPORT_SYMBOL(__lshrdi3); 152EXPORT_SYMBOL(__lshrdi3);
153int __ucmpdi2(unsigned long long, unsigned long long);
154EXPORT_SYMBOL(__ucmpdi2);
152#endif 155#endif
153 156
154EXPORT_SYMBOL(memcpy); 157EXPORT_SYMBOL(memcpy);
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c
index 32f416175db1..590f1f67c874 100644
--- a/arch/powerpc/mm/hash_utils_64.c
+++ b/arch/powerpc/mm/hash_utils_64.c
@@ -506,10 +506,10 @@ void __init htab_initialize(void)
506 } else { 506 } else {
507 /* Find storage for the HPT. Must be contiguous in 507 /* Find storage for the HPT. Must be contiguous in
508 * the absolute address space. On cell we want it to be 508 * the absolute address space. On cell we want it to be
509 * in the first 1 Gig. 509 * in the first 2 Gig so we can use it for IOMMU hacks.
510 */ 510 */
511 if (machine_is(cell)) 511 if (machine_is(cell))
512 limit = 0x40000000; 512 limit = 0x80000000;
513 else 513 else
514 limit = 0; 514 limit = 0;
515 515
diff --git a/arch/powerpc/platforms/83xx/mpc837x_mds.c b/arch/powerpc/platforms/83xx/mpc837x_mds.c
index 8a9c26973605..64d17b0d6455 100644
--- a/arch/powerpc/platforms/83xx/mpc837x_mds.c
+++ b/arch/powerpc/platforms/83xx/mpc837x_mds.c
@@ -39,12 +39,9 @@ static int mpc837xmds_usb_cfg(void)
39 if (ret) 39 if (ret)
40 return ret; 40 return ret;
41 /* Map BCSR area */ 41 /* Map BCSR area */
42 np = of_find_node_by_name(NULL, "bcsr"); 42 np = of_find_compatible_node(NULL, NULL, "fsl,mpc837xmds-bcsr");
43 if (np) { 43 if (np) {
44 struct resource res; 44 bcsr_regs = of_iomap(np, 0);
45
46 of_address_to_resource(np, 0, &res);
47 bcsr_regs = ioremap(res.start, res.end - res.start + 1);
48 of_node_put(np); 45 of_node_put(np);
49 } 46 }
50 if (!bcsr_regs) 47 if (!bcsr_regs)
@@ -96,6 +93,7 @@ static void __init mpc837x_mds_setup_arch(void)
96static struct of_device_id mpc837x_ids[] = { 93static struct of_device_id mpc837x_ids[] = {
97 { .type = "soc", }, 94 { .type = "soc", },
98 { .compatible = "soc", }, 95 { .compatible = "soc", },
96 { .compatible = "simple-bus", },
99 {}, 97 {},
100}; 98};
101 99
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig
index 0afd22595546..a578b966ecbc 100644
--- a/arch/powerpc/platforms/Kconfig
+++ b/arch/powerpc/platforms/Kconfig
@@ -22,7 +22,6 @@ config PPC_83xx
22 select FSL_SOC 22 select FSL_SOC
23 select MPC83xx 23 select MPC83xx
24 select IPIC 24 select IPIC
25 select FSL_EMB_PERFMON
26 25
27config PPC_86xx 26config PPC_86xx
28 bool "Freescale 86xx" 27 bool "Freescale 86xx"
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index 73d81ce14b67..0c3face0ddbb 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -113,7 +113,12 @@ config FSL_BOOKE
113 default y 113 default y
114 114
115config FSL_EMB_PERFMON 115config FSL_EMB_PERFMON
116 bool 116 bool "Freescale Embedded Perfmon"
117 depends on E500 || PPC_83xx
118 help
119 This is the Performance Monitor support found on the e500 core
120 and some e300 cores (c3 and c4). Select this only if your
121 core supports the Embedded Performance Monitor APU
117 122
118config PTE_64BIT 123config PTE_64BIT
119 bool 124 bool
diff --git a/arch/powerpc/platforms/cell/spufs/context.c b/arch/powerpc/platforms/cell/spufs/context.c
index cf6c2c89211d..0ad83aeb70b1 100644
--- a/arch/powerpc/platforms/cell/spufs/context.c
+++ b/arch/powerpc/platforms/cell/spufs/context.c
@@ -170,7 +170,8 @@ void spu_release_saved(struct spu_context *ctx)
170{ 170{
171 BUG_ON(ctx->state != SPU_STATE_SAVED); 171 BUG_ON(ctx->state != SPU_STATE_SAVED);
172 172
173 if (test_and_clear_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags)) 173 if (test_and_clear_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags) &&
174 test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
174 spu_activate(ctx, 0); 175 spu_activate(ctx, 0);
175 176
176 spu_release(ctx); 177 spu_release(ctx);
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c
index 6221968c2a3c..cac69e116776 100644
--- a/arch/powerpc/platforms/cell/spufs/run.c
+++ b/arch/powerpc/platforms/cell/spufs/run.c
@@ -220,6 +220,7 @@ static int spu_run_init(struct spu_context *ctx, u32 *npc)
220 } 220 }
221 } 221 }
222 222
223 set_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags);
223 return 0; 224 return 0;
224} 225}
225 226
@@ -234,7 +235,7 @@ static int spu_run_fini(struct spu_context *ctx, u32 *npc,
234 *npc = ctx->ops->npc_read(ctx); 235 *npc = ctx->ops->npc_read(ctx);
235 236
236 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); 237 spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED);
237 ctx->policy = SCHED_IDLE; 238 clear_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags);
238 spu_release(ctx); 239 spu_release(ctx);
239 240
240 if (signal_pending(current)) 241 if (signal_pending(current))
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c
index 5d5f680cd0b8..00528ef84ad2 100644
--- a/arch/powerpc/platforms/cell/spufs/sched.c
+++ b/arch/powerpc/platforms/cell/spufs/sched.c
@@ -867,7 +867,7 @@ static noinline void spusched_tick(struct spu_context *ctx)
867 if (ctx->policy == SCHED_FIFO) 867 if (ctx->policy == SCHED_FIFO)
868 goto out; 868 goto out;
869 869
870 if (--ctx->time_slice && ctx->policy != SCHED_IDLE) 870 if (--ctx->time_slice && test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
871 goto out; 871 goto out;
872 872
873 spu = ctx->spu; 873 spu = ctx->spu;
@@ -877,7 +877,7 @@ static noinline void spusched_tick(struct spu_context *ctx)
877 new = grab_runnable_context(ctx->prio + 1, spu->node); 877 new = grab_runnable_context(ctx->prio + 1, spu->node);
878 if (new) { 878 if (new) {
879 spu_unschedule(spu, ctx); 879 spu_unschedule(spu, ctx);
880 if (ctx->policy != SCHED_IDLE) 880 if (test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags))
881 spu_add_to_rq(ctx); 881 spu_add_to_rq(ctx);
882 } else { 882 } else {
883 spu_context_nospu_trace(spusched_tick__newslice, ctx); 883 spu_context_nospu_trace(spusched_tick__newslice, ctx);
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h
index 2c2fe3c07d72..cdc515182f82 100644
--- a/arch/powerpc/platforms/cell/spufs/spufs.h
+++ b/arch/powerpc/platforms/cell/spufs/spufs.h
@@ -44,6 +44,7 @@ struct spu_gang;
44enum { 44enum {
45 SPU_SCHED_NOTIFY_ACTIVE, 45 SPU_SCHED_NOTIFY_ACTIVE,
46 SPU_SCHED_WAS_ACTIVE, /* was active upon spu_acquire_saved() */ 46 SPU_SCHED_WAS_ACTIVE, /* was active upon spu_acquire_saved() */
47 SPU_SCHED_SPU_RUN, /* context is within spu_run */
47}; 48};
48 49
49struct spu_context { 50struct spu_context {
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c
index 40736400ef80..829b8b02527b 100644
--- a/arch/powerpc/platforms/powermac/pic.c
+++ b/arch/powerpc/platforms/powermac/pic.c
@@ -618,9 +618,9 @@ static int pmacpic_find_viaint(void)
618 if (np == NULL) 618 if (np == NULL)
619 goto not_found; 619 goto not_found;
620 viaint = irq_of_parse_and_map(np, 0);; 620 viaint = irq_of_parse_and_map(np, 0);;
621#endif /* CONFIG_ADB_PMU */
622 621
623not_found: 622not_found:
623#endif /* CONFIG_ADB_PMU */
624 return viaint; 624 return viaint;
625} 625}
626 626
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c
index 6efbd5e5bb1b..cc81fd1141b0 100644
--- a/arch/powerpc/sysdev/qe_lib/qe.c
+++ b/arch/powerpc/sysdev/qe_lib/qe.c
@@ -509,7 +509,7 @@ int qe_upload_firmware(const struct qe_firmware *firmware)
509 } 509 }
510 510
511 /* Validate some of the fields */ 511 /* Validate some of the fields */
512 if ((firmware->count < 1) || (firmware->count >= MAX_QE_RISC)) { 512 if ((firmware->count < 1) || (firmware->count > MAX_QE_RISC)) {
513 printk(KERN_ERR "qe-firmware: invalid data\n"); 513 printk(KERN_ERR "qe-firmware: invalid data\n");
514 return -EINVAL; 514 return -EINVAL;
515 } 515 }
@@ -609,7 +609,10 @@ struct qe_firmware_info *qe_get_firmware_info(void)
609 * If we haven't checked yet, and a driver hasn't uploaded a firmware 609 * If we haven't checked yet, and a driver hasn't uploaded a firmware
610 * yet, then check the device tree for information. 610 * yet, then check the device tree for information.
611 */ 611 */
612 if (initialized || qe_firmware_uploaded) 612 if (qe_firmware_uploaded)
613 return &qe_firmware_info;
614
615 if (initialized)
613 return NULL; 616 return NULL;
614 617
615 initialized = 1; 618 initialized = 1;
diff --git a/arch/ppc/kernel/head_8xx.S b/arch/ppc/kernel/head_8xx.S
index eb8d26f87362..321bda2de2cb 100644
--- a/arch/ppc/kernel/head_8xx.S
+++ b/arch/ppc/kernel/head_8xx.S
@@ -329,8 +329,18 @@ InstructionTLBMiss:
329 mfspr r11, SPRN_MD_TWC /* ....and get the pte address */ 329 mfspr r11, SPRN_MD_TWC /* ....and get the pte address */
330 lwz r10, 0(r11) /* Get the pte */ 330 lwz r10, 0(r11) /* Get the pte */
331 331
332#ifdef CONFIG_SWAP
333 /* do not set the _PAGE_ACCESSED bit of a non-present page */
334 andi. r11, r10, _PAGE_PRESENT
335 beq 4f
336 ori r10, r10, _PAGE_ACCESSED
337 mfspr r11, SPRN_MD_TWC /* get the pte address again */
338 stw r10, 0(r11)
3394:
340#else
332 ori r10, r10, _PAGE_ACCESSED 341 ori r10, r10, _PAGE_ACCESSED
333 stw r10, 0(r11) 342 stw r10, 0(r11)
343#endif
334 344
335 /* The Linux PTE won't go exactly into the MMU TLB. 345 /* The Linux PTE won't go exactly into the MMU TLB.
336 * Software indicator bits 21, 22 and 28 must be clear. 346 * Software indicator bits 21, 22 and 28 must be clear.
@@ -395,8 +405,17 @@ DataStoreTLBMiss:
395 DO_8xx_CPU6(0x3b80, r3) 405 DO_8xx_CPU6(0x3b80, r3)
396 mtspr SPRN_MD_TWC, r11 406 mtspr SPRN_MD_TWC, r11
397 407
398 mfspr r11, SPRN_MD_TWC /* get the pte address again */ 408#ifdef CONFIG_SWAP
409 /* do not set the _PAGE_ACCESSED bit of a non-present page */
410 andi. r11, r10, _PAGE_PRESENT
411 beq 4f
412 ori r10, r10, _PAGE_ACCESSED
4134:
414 /* and update pte in table */
415#else
399 ori r10, r10, _PAGE_ACCESSED 416 ori r10, r10, _PAGE_ACCESSED
417#endif
418 mfspr r11, SPRN_MD_TWC /* get the pte address again */
400 stw r10, 0(r11) 419 stw r10, 0(r11)
401 420
402 /* The Linux PTE won't go exactly into the MMU TLB. 421 /* The Linux PTE won't go exactly into the MMU TLB.
@@ -575,7 +594,16 @@ DataTLBError:
575 594
576 /* Update 'changed', among others. 595 /* Update 'changed', among others.
577 */ 596 */
597#ifdef CONFIG_SWAP
598 ori r10, r10, _PAGE_DIRTY|_PAGE_HWWRITE
599 /* do not set the _PAGE_ACCESSED bit of a non-present page */
600 andi. r11, r10, _PAGE_PRESENT
601 beq 4f
602 ori r10, r10, _PAGE_ACCESSED
6034:
604#else
578 ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE 605 ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE
606#endif
579 mfspr r11, SPRN_MD_TWC /* Get pte address again */ 607 mfspr r11, SPRN_MD_TWC /* Get pte address again */
580 stw r10, 0(r11) /* and update pte in table */ 608 stw r10, 0(r11) /* and update pte in table */
581 609
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 237fc128143d..6c70fed0f9a0 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -1259,7 +1259,7 @@ menuconfig APM
1259 machines with more than one CPU. 1259 machines with more than one CPU.
1260 1260
1261 In order to use APM, you will need supporting software. For location 1261 In order to use APM, you will need supporting software. For location
1262 and more information, read <file:Documentation/pm.txt> and the 1262 and more information, read <file:Documentation/power/pm.txt> and the
1263 Battery Powered Linux mini-HOWTO, available from 1263 Battery Powered Linux mini-HOWTO, available from
1264 <http://www.tldp.org/docs.html#howto>. 1264 <http://www.tldp.org/docs.html#howto>.
1265 1265
diff --git a/block/genhd.c b/block/genhd.c
index c44527d16c52..00da5219ee37 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -360,7 +360,9 @@ static struct kobject *base_probe(dev_t devt, int *part, void *data)
360 360
361static int __init genhd_device_init(void) 361static int __init genhd_device_init(void)
362{ 362{
363 class_register(&block_class); 363 int error = class_register(&block_class);
364 if (unlikely(error))
365 return error;
364 bdev_map = kobj_map_init(base_probe, &block_class_lock); 366 bdev_map = kobj_map_init(base_probe, &block_class_lock);
365 blk_dev_init(); 367 blk_dev_init();
366 368
diff --git a/crypto/async_tx/async_memcpy.c b/crypto/async_tx/async_memcpy.c
index 0f6282207b32..84caa4efc0d4 100644
--- a/crypto/async_tx/async_memcpy.c
+++ b/crypto/async_tx/async_memcpy.c
@@ -66,11 +66,11 @@ async_memcpy(struct page *dest, struct page *src, unsigned int dest_offset,
66 } 66 }
67 67
68 if (tx) { 68 if (tx) {
69 pr_debug("%s: (async) len: %zu\n", __FUNCTION__, len); 69 pr_debug("%s: (async) len: %zu\n", __func__, len);
70 async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param); 70 async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param);
71 } else { 71 } else {
72 void *dest_buf, *src_buf; 72 void *dest_buf, *src_buf;
73 pr_debug("%s: (sync) len: %zu\n", __FUNCTION__, len); 73 pr_debug("%s: (sync) len: %zu\n", __func__, len);
74 74
75 /* wait for any prerequisite operations */ 75 /* wait for any prerequisite operations */
76 if (depend_tx) { 76 if (depend_tx) {
@@ -80,7 +80,7 @@ async_memcpy(struct page *dest, struct page *src, unsigned int dest_offset,
80 BUG_ON(depend_tx->ack); 80 BUG_ON(depend_tx->ack);
81 if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR) 81 if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR)
82 panic("%s: DMA_ERROR waiting for depend_tx\n", 82 panic("%s: DMA_ERROR waiting for depend_tx\n",
83 __FUNCTION__); 83 __func__);
84 } 84 }
85 85
86 dest_buf = kmap_atomic(dest, KM_USER0) + dest_offset; 86 dest_buf = kmap_atomic(dest, KM_USER0) + dest_offset;
diff --git a/crypto/async_tx/async_memset.c b/crypto/async_tx/async_memset.c
index 09c0e83664bc..f5ff3906b035 100644
--- a/crypto/async_tx/async_memset.c
+++ b/crypto/async_tx/async_memset.c
@@ -63,11 +63,11 @@ async_memset(struct page *dest, int val, unsigned int offset,
63 } 63 }
64 64
65 if (tx) { 65 if (tx) {
66 pr_debug("%s: (async) len: %zu\n", __FUNCTION__, len); 66 pr_debug("%s: (async) len: %zu\n", __func__, len);
67 async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param); 67 async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param);
68 } else { /* run the memset synchronously */ 68 } else { /* run the memset synchronously */
69 void *dest_buf; 69 void *dest_buf;
70 pr_debug("%s: (sync) len: %zu\n", __FUNCTION__, len); 70 pr_debug("%s: (sync) len: %zu\n", __func__, len);
71 71
72 dest_buf = (void *) (((char *) page_address(dest)) + offset); 72 dest_buf = (void *) (((char *) page_address(dest)) + offset);
73 73
@@ -79,7 +79,7 @@ async_memset(struct page *dest, int val, unsigned int offset,
79 BUG_ON(depend_tx->ack); 79 BUG_ON(depend_tx->ack);
80 if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR) 80 if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR)
81 panic("%s: DMA_ERROR waiting for depend_tx\n", 81 panic("%s: DMA_ERROR waiting for depend_tx\n",
82 __FUNCTION__); 82 __func__);
83 } 83 }
84 84
85 memset(dest_buf, val, len); 85 memset(dest_buf, val, len);
diff --git a/crypto/async_tx/async_tx.c b/crypto/async_tx/async_tx.c
index 562882189de5..2be3bae89930 100644
--- a/crypto/async_tx/async_tx.c
+++ b/crypto/async_tx/async_tx.c
@@ -472,11 +472,11 @@ async_trigger_callback(enum async_tx_flags flags,
472 tx = NULL; 472 tx = NULL;
473 473
474 if (tx) { 474 if (tx) {
475 pr_debug("%s: (async)\n", __FUNCTION__); 475 pr_debug("%s: (async)\n", __func__);
476 476
477 async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param); 477 async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param);
478 } else { 478 } else {
479 pr_debug("%s: (sync)\n", __FUNCTION__); 479 pr_debug("%s: (sync)\n", __func__);
480 480
481 /* wait for any prerequisite operations */ 481 /* wait for any prerequisite operations */
482 if (depend_tx) { 482 if (depend_tx) {
@@ -486,7 +486,7 @@ async_trigger_callback(enum async_tx_flags flags,
486 BUG_ON(depend_tx->ack); 486 BUG_ON(depend_tx->ack);
487 if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR) 487 if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR)
488 panic("%s: DMA_ERROR waiting for depend_tx\n", 488 panic("%s: DMA_ERROR waiting for depend_tx\n",
489 __FUNCTION__); 489 __func__);
490 } 490 }
491 491
492 async_tx_sync_epilog(flags, depend_tx, cb_fn, cb_param); 492 async_tx_sync_epilog(flags, depend_tx, cb_fn, cb_param);
diff --git a/crypto/async_tx/async_xor.c b/crypto/async_tx/async_xor.c
index 2259a4ff15cb..7a9db353f198 100644
--- a/crypto/async_tx/async_xor.c
+++ b/crypto/async_tx/async_xor.c
@@ -47,7 +47,7 @@ do_async_xor(struct dma_device *device,
47 int i; 47 int i;
48 unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0; 48 unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0;
49 49
50 pr_debug("%s: len: %zu\n", __FUNCTION__, len); 50 pr_debug("%s: len: %zu\n", __func__, len);
51 51
52 dma_dest = dma_map_page(device->dev, dest, offset, len, 52 dma_dest = dma_map_page(device->dev, dest, offset, len,
53 DMA_FROM_DEVICE); 53 DMA_FROM_DEVICE);
@@ -86,7 +86,7 @@ do_sync_xor(struct page *dest, struct page **src_list, unsigned int offset,
86 void *_dest; 86 void *_dest;
87 int i; 87 int i;
88 88
89 pr_debug("%s: len: %zu\n", __FUNCTION__, len); 89 pr_debug("%s: len: %zu\n", __func__, len);
90 90
91 /* reuse the 'src_list' array to convert to buffer pointers */ 91 /* reuse the 'src_list' array to convert to buffer pointers */
92 for (i = 0; i < src_cnt; i++) 92 for (i = 0; i < src_cnt; i++)
@@ -196,7 +196,7 @@ async_xor(struct page *dest, struct page **src_list, unsigned int offset,
196 DMA_ERROR) 196 DMA_ERROR)
197 panic("%s: DMA_ERROR waiting for " 197 panic("%s: DMA_ERROR waiting for "
198 "depend_tx\n", 198 "depend_tx\n",
199 __FUNCTION__); 199 __func__);
200 } 200 }
201 201
202 do_sync_xor(dest, &src_list[src_off], offset, 202 do_sync_xor(dest, &src_list[src_off], offset,
@@ -276,7 +276,7 @@ async_xor_zero_sum(struct page *dest, struct page **src_list,
276 unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0; 276 unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0;
277 int i; 277 int i;
278 278
279 pr_debug("%s: (async) len: %zu\n", __FUNCTION__, len); 279 pr_debug("%s: (async) len: %zu\n", __func__, len);
280 280
281 for (i = 0; i < src_cnt; i++) 281 for (i = 0; i < src_cnt; i++)
282 dma_src[i] = dma_map_page(device->dev, src_list[i], 282 dma_src[i] = dma_map_page(device->dev, src_list[i],
@@ -299,7 +299,7 @@ async_xor_zero_sum(struct page *dest, struct page **src_list,
299 } else { 299 } else {
300 unsigned long xor_flags = flags; 300 unsigned long xor_flags = flags;
301 301
302 pr_debug("%s: (sync) len: %zu\n", __FUNCTION__, len); 302 pr_debug("%s: (sync) len: %zu\n", __func__, len);
303 303
304 xor_flags |= ASYNC_TX_XOR_DROP_DST; 304 xor_flags |= ASYNC_TX_XOR_DROP_DST;
305 xor_flags &= ~ASYNC_TX_ACK; 305 xor_flags &= ~ASYNC_TX_ACK;
@@ -310,7 +310,7 @@ async_xor_zero_sum(struct page *dest, struct page **src_list,
310 if (tx) { 310 if (tx) {
311 if (dma_wait_for_async_tx(tx) == DMA_ERROR) 311 if (dma_wait_for_async_tx(tx) == DMA_ERROR)
312 panic("%s: DMA_ERROR waiting for tx\n", 312 panic("%s: DMA_ERROR waiting for tx\n",
313 __FUNCTION__); 313 __func__);
314 async_tx_ack(tx); 314 async_tx_ack(tx);
315 } 315 }
316 316
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index f688c214be0c..fbcaa069be86 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -283,24 +283,23 @@ config ACPI_TOSHIBA
283 If you have a legacy free Toshiba laptop (such as the Libretto L1 283 If you have a legacy free Toshiba laptop (such as the Libretto L1
284 series), say Y. 284 series), say Y.
285 285
286config ACPI_CUSTOM_DSDT 286config ACPI_CUSTOM_DSDT_FILE
287 bool "Include Custom DSDT" 287 string "Custom DSDT Table file to include"
288 default ""
288 depends on !STANDALONE 289 depends on !STANDALONE
289 default n
290 help 290 help
291 This option supports a custom DSDT by linking it into the kernel. 291 This option supports a custom DSDT by linking it into the kernel.
292 See Documentation/acpi/dsdt-override.txt 292 See Documentation/acpi/dsdt-override.txt
293 293
294 If unsure, say N.
295
296config ACPI_CUSTOM_DSDT_FILE
297 string "Custom DSDT Table file to include"
298 depends on ACPI_CUSTOM_DSDT
299 default ""
300 help
301 Enter the full path name to the file which includes the AmlCode 294 Enter the full path name to the file which includes the AmlCode
302 declaration. 295 declaration.
303 296
297 If unsure, don't enter a file name.
298
299config ACPI_CUSTOM_DSDT
300 bool
301 default ACPI_CUSTOM_DSDT_FILE != ""
302
304config ACPI_CUSTOM_DSDT_INITRD 303config ACPI_CUSTOM_DSDT_INITRD
305 bool "Read Custom DSDT from initramfs" 304 bool "Read Custom DSDT from initramfs"
306 depends on BLK_DEV_INITRD 305 depends on BLK_DEV_INITRD
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index ce3c0a2cbac4..5b6760e0f957 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -776,7 +776,7 @@ static int __init acpi_init(void)
776 776
777 acpi_kobj = kobject_create_and_add("acpi", firmware_kobj); 777 acpi_kobj = kobject_create_and_add("acpi", firmware_kobj);
778 if (!acpi_kobj) { 778 if (!acpi_kobj) {
779 printk(KERN_WARNING "%s: kset create error\n", __FUNCTION__); 779 printk(KERN_WARNING "%s: kset create error\n", __func__);
780 acpi_kobj = NULL; 780 acpi_kobj = NULL;
781 } 781 }
782 782
diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c
index 24a7865a57cb..6c5da83cdb68 100644
--- a/drivers/acpi/button.c
+++ b/drivers/acpi/button.c
@@ -449,6 +449,7 @@ static int acpi_button_add(struct acpi_device *device)
449 input->phys = button->phys; 449 input->phys = button->phys;
450 input->id.bustype = BUS_HOST; 450 input->id.bustype = BUS_HOST;
451 input->id.product = button->type; 451 input->id.product = button->type;
452 input->dev.parent = &device->dev;
452 453
453 switch (button->type) { 454 switch (button->type) {
454 case ACPI_BUTTON_TYPE_POWER: 455 case ACPI_BUTTON_TYPE_POWER:
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index caf873c14bfb..e7e197e3a4ff 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -129,6 +129,7 @@ static struct acpi_ec {
129 struct mutex lock; 129 struct mutex lock;
130 wait_queue_head_t wait; 130 wait_queue_head_t wait;
131 struct list_head list; 131 struct list_head list;
132 atomic_t irq_count;
132 u8 handlers_installed; 133 u8 handlers_installed;
133} *boot_ec, *first_ec; 134} *boot_ec, *first_ec;
134 135
@@ -181,6 +182,8 @@ static int acpi_ec_wait(struct acpi_ec *ec, enum ec_event event, int force_poll)
181{ 182{
182 int ret = 0; 183 int ret = 0;
183 184
185 atomic_set(&ec->irq_count, 0);
186
184 if (unlikely(event == ACPI_EC_EVENT_OBF_1 && 187 if (unlikely(event == ACPI_EC_EVENT_OBF_1 &&
185 test_bit(EC_FLAGS_NO_OBF1_GPE, &ec->flags))) 188 test_bit(EC_FLAGS_NO_OBF1_GPE, &ec->flags)))
186 force_poll = 1; 189 force_poll = 1;
@@ -227,6 +230,7 @@ static int acpi_ec_wait(struct acpi_ec *ec, enum ec_event event, int force_poll)
227 while (time_before(jiffies, delay)) { 230 while (time_before(jiffies, delay)) {
228 if (acpi_ec_check_status(ec, event)) 231 if (acpi_ec_check_status(ec, event))
229 goto end; 232 goto end;
233 msleep(5);
230 } 234 }
231 } 235 }
232 pr_err(PREFIX "acpi_ec_wait timeout," 236 pr_err(PREFIX "acpi_ec_wait timeout,"
@@ -529,6 +533,13 @@ static u32 acpi_ec_gpe_handler(void *data)
529 struct acpi_ec *ec = data; 533 struct acpi_ec *ec = data;
530 534
531 pr_debug(PREFIX "~~~> interrupt\n"); 535 pr_debug(PREFIX "~~~> interrupt\n");
536 atomic_inc(&ec->irq_count);
537 if (atomic_read(&ec->irq_count) > 5) {
538 pr_err(PREFIX "GPE storm detected, disabling EC GPE\n");
539 acpi_disable_gpe(NULL, ec->gpe, ACPI_ISR);
540 clear_bit(EC_FLAGS_GPE_MODE, &ec->flags);
541 return ACPI_INTERRUPT_HANDLED;
542 }
532 clear_bit(EC_FLAGS_WAIT_GPE, &ec->flags); 543 clear_bit(EC_FLAGS_WAIT_GPE, &ec->flags);
533 if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags)) 544 if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags))
534 wake_up(&ec->wait); 545 wake_up(&ec->wait);
@@ -943,11 +954,7 @@ int __init acpi_ec_ecdt_probe(void)
943 boot_ec->command_addr = ecdt_ptr->control.address; 954 boot_ec->command_addr = ecdt_ptr->control.address;
944 boot_ec->data_addr = ecdt_ptr->data.address; 955 boot_ec->data_addr = ecdt_ptr->data.address;
945 boot_ec->gpe = ecdt_ptr->gpe; 956 boot_ec->gpe = ecdt_ptr->gpe;
946 if (ACPI_FAILURE(acpi_get_handle(NULL, ecdt_ptr->id, 957 boot_ec->handle = ACPI_ROOT_OBJECT;
947 &boot_ec->handle))) {
948 pr_info("Failed to locate handle for boot EC\n");
949 boot_ec->handle = ACPI_ROOT_OBJECT;
950 }
951 } else { 958 } else {
952 /* This workaround is needed only on some broken machines, 959 /* This workaround is needed only on some broken machines,
953 * which require early EC, but fail to provide ECDT */ 960 * which require early EC, but fail to provide ECDT */
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index 8edba7b678eb..065819ba87c7 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -1237,7 +1237,7 @@ int acpi_check_resource_conflict(struct resource *res)
1237 1237
1238 if (clash) { 1238 if (clash) {
1239 if (acpi_enforce_resources != ENFORCE_RESOURCES_NO) { 1239 if (acpi_enforce_resources != ENFORCE_RESOURCES_NO) {
1240 printk(KERN_INFO "%sACPI: %s resource %s [0x%llx-0x%llx]" 1240 printk("%sACPI: %s resource %s [0x%llx-0x%llx]"
1241 " conflicts with ACPI region %s" 1241 " conflicts with ACPI region %s"
1242 " [0x%llx-0x%llx]\n", 1242 " [0x%llx-0x%llx]\n",
1243 acpi_enforce_resources == ENFORCE_RESOURCES_LAX 1243 acpi_enforce_resources == ENFORCE_RESOURCES_LAX
diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c
index 7f19859580c7..7af414a3c63e 100644
--- a/drivers/acpi/pci_irq.c
+++ b/drivers/acpi/pci_irq.c
@@ -25,6 +25,7 @@
25 */ 25 */
26 26
27 27
28#include <linux/dmi.h>
28#include <linux/kernel.h> 29#include <linux/kernel.h>
29#include <linux/module.h> 30#include <linux/module.h>
30#include <linux/init.h> 31#include <linux/init.h>
@@ -76,6 +77,101 @@ static struct acpi_prt_entry *acpi_pci_irq_find_prt_entry(int segment,
76 return NULL; 77 return NULL;
77} 78}
78 79
80/* http://bugzilla.kernel.org/show_bug.cgi?id=4773 */
81static struct dmi_system_id medion_md9580[] = {
82 {
83 .ident = "Medion MD9580-F laptop",
84 .matches = {
85 DMI_MATCH(DMI_SYS_VENDOR, "MEDIONNB"),
86 DMI_MATCH(DMI_PRODUCT_NAME, "A555"),
87 },
88 },
89 { }
90};
91
92/* http://bugzilla.kernel.org/show_bug.cgi?id=5044 */
93static struct dmi_system_id dell_optiplex[] = {
94 {
95 .ident = "Dell Optiplex GX1",
96 .matches = {
97 DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"),
98 DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex GX1 600S+"),
99 },
100 },
101 { }
102};
103
104/* http://bugzilla.kernel.org/show_bug.cgi?id=10138 */
105static struct dmi_system_id hp_t5710[] = {
106 {
107 .ident = "HP t5710",
108 .matches = {
109 DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"),
110 DMI_MATCH(DMI_PRODUCT_NAME, "hp t5000 series"),
111 DMI_MATCH(DMI_BOARD_NAME, "098Ch"),
112 },
113 },
114 { }
115};
116
117struct prt_quirk {
118 struct dmi_system_id *system;
119 unsigned int segment;
120 unsigned int bus;
121 unsigned int device;
122 unsigned char pin;
123 char *source; /* according to BIOS */
124 char *actual_source;
125};
126
127/*
128 * These systems have incorrect _PRT entries. The BIOS claims the PCI
129 * interrupt at the listed segment/bus/device/pin is connected to the first
130 * link device, but it is actually connected to the second.
131 */
132static struct prt_quirk prt_quirks[] = {
133 { medion_md9580, 0, 0, 9, 'A',
134 "\\_SB_.PCI0.ISA.LNKA",
135 "\\_SB_.PCI0.ISA.LNKB"},
136 { dell_optiplex, 0, 0, 0xd, 'A',
137 "\\_SB_.LNKB",
138 "\\_SB_.LNKA"},
139 { hp_t5710, 0, 0, 1, 'A',
140 "\\_SB_.PCI0.LNK1",
141 "\\_SB_.PCI0.LNK3"},
142};
143
144static void
145do_prt_fixups(struct acpi_prt_entry *entry, struct acpi_pci_routing_table *prt)
146{
147 int i;
148 struct prt_quirk *quirk;
149
150 for (i = 0; i < ARRAY_SIZE(prt_quirks); i++) {
151 quirk = &prt_quirks[i];
152
153 /* All current quirks involve link devices, not GSIs */
154 if (!prt->source)
155 continue;
156
157 if (dmi_check_system(quirk->system) &&
158 entry->id.segment == quirk->segment &&
159 entry->id.bus == quirk->bus &&
160 entry->id.device == quirk->device &&
161 entry->pin + 'A' == quirk->pin &&
162 !strcmp(prt->source, quirk->source) &&
163 strlen(prt->source) >= strlen(quirk->actual_source)) {
164 printk(KERN_WARNING PREFIX "firmware reports "
165 "%04x:%02x:%02x[%c] connected to %s; "
166 "changing to %s\n",
167 entry->id.segment, entry->id.bus,
168 entry->id.device, 'A' + entry->pin,
169 prt->source, quirk->actual_source);
170 strcpy(prt->source, quirk->actual_source);
171 }
172 }
173}
174
79static int 175static int
80acpi_pci_irq_add_entry(acpi_handle handle, 176acpi_pci_irq_add_entry(acpi_handle handle,
81 int segment, int bus, struct acpi_pci_routing_table *prt) 177 int segment, int bus, struct acpi_pci_routing_table *prt)
@@ -96,6 +192,8 @@ acpi_pci_irq_add_entry(acpi_handle handle,
96 entry->id.function = prt->address & 0xFFFF; 192 entry->id.function = prt->address & 0xFFFF;
97 entry->pin = prt->pin; 193 entry->pin = prt->pin;
98 194
195 do_prt_fixups(entry, prt);
196
99 /* 197 /*
100 * Type 1: Dynamic 198 * Type 1: Dynamic
101 * --------------- 199 * ---------------
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c
index f14ff1ffab29..c3fed31166b5 100644
--- a/drivers/acpi/pci_root.c
+++ b/drivers/acpi/pci_root.c
@@ -184,7 +184,7 @@ static void acpi_pci_bridge_scan(struct acpi_device *device)
184 } 184 }
185} 185}
186 186
187static int acpi_pci_root_add(struct acpi_device *device) 187static int __devinit acpi_pci_root_add(struct acpi_device *device)
188{ 188{
189 int result = 0; 189 int result = 0;
190 struct acpi_pci_root *root = NULL; 190 struct acpi_pci_root *root = NULL;
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index a3cc8a98255c..36a68fa114e3 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -840,17 +840,19 @@ static int is_processor_present(acpi_handle handle)
840 840
841 841
842 status = acpi_evaluate_integer(handle, "_STA", NULL, &sta); 842 status = acpi_evaluate_integer(handle, "_STA", NULL, &sta);
843 /*
844 * if a processor object does not have an _STA object,
845 * OSPM assumes that the processor is present.
846 */
847 if (status == AE_NOT_FOUND)
848 return 1;
849 843
850 if (ACPI_SUCCESS(status) && (sta & ACPI_STA_DEVICE_PRESENT)) 844 if (ACPI_SUCCESS(status) && (sta & ACPI_STA_DEVICE_PRESENT))
851 return 1; 845 return 1;
852 846
853 ACPI_EXCEPTION((AE_INFO, status, "Processor Device is not present")); 847 /*
848 * _STA is mandatory for a processor that supports hot plug
849 */
850 if (status == AE_NOT_FOUND)
851 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
852 "Processor does not support hot plug\n"));
853 else
854 ACPI_EXCEPTION((AE_INFO, status,
855 "Processor Device is not present"));
854 return 0; 856 return 0;
855} 857}
856 858
@@ -886,8 +888,8 @@ int acpi_processor_device_add(acpi_handle handle, struct acpi_device **device)
886 return 0; 888 return 0;
887} 889}
888 890
889static void 891static void __ref acpi_processor_hotplug_notify(acpi_handle handle,
890acpi_processor_hotplug_notify(acpi_handle handle, u32 event, void *data) 892 u32 event, void *data)
891{ 893{
892 struct acpi_processor *pr; 894 struct acpi_processor *pr;
893 struct acpi_device *device = NULL; 895 struct acpi_device *device = NULL;
@@ -897,9 +899,10 @@ acpi_processor_hotplug_notify(acpi_handle handle, u32 event, void *data)
897 switch (event) { 899 switch (event) {
898 case ACPI_NOTIFY_BUS_CHECK: 900 case ACPI_NOTIFY_BUS_CHECK:
899 case ACPI_NOTIFY_DEVICE_CHECK: 901 case ACPI_NOTIFY_DEVICE_CHECK:
900 printk("Processor driver received %s event\n", 902 ACPI_DEBUG_PRINT((ACPI_DB_INFO,
903 "Processor driver received %s event\n",
901 (event == ACPI_NOTIFY_BUS_CHECK) ? 904 (event == ACPI_NOTIFY_BUS_CHECK) ?
902 "ACPI_NOTIFY_BUS_CHECK" : "ACPI_NOTIFY_DEVICE_CHECK"); 905 "ACPI_NOTIFY_BUS_CHECK" : "ACPI_NOTIFY_DEVICE_CHECK"));
903 906
904 if (!is_processor_present(handle)) 907 if (!is_processor_present(handle))
905 break; 908 break;
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 3fac011f9cf9..57570ac47803 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -609,7 +609,8 @@ acpi_bus_get_ejd(acpi_handle handle, acpi_handle *ejd)
609 status = acpi_evaluate_object(handle, "_EJD", NULL, &buffer); 609 status = acpi_evaluate_object(handle, "_EJD", NULL, &buffer);
610 if (ACPI_SUCCESS(status)) { 610 if (ACPI_SUCCESS(status)) {
611 obj = buffer.pointer; 611 obj = buffer.pointer;
612 status = acpi_get_handle(NULL, obj->string.pointer, ejd); 612 status = acpi_get_handle(ACPI_ROOT_OBJECT, obj->string.pointer,
613 ejd);
613 kfree(buffer.pointer); 614 kfree(buffer.pointer);
614 } 615 }
615 return status; 616 return status;
@@ -966,7 +967,7 @@ static void acpi_device_set_id(struct acpi_device *device,
966 case ACPI_BUS_TYPE_DEVICE: 967 case ACPI_BUS_TYPE_DEVICE:
967 status = acpi_get_object_info(handle, &buffer); 968 status = acpi_get_object_info(handle, &buffer);
968 if (ACPI_FAILURE(status)) { 969 if (ACPI_FAILURE(status)) {
969 printk(KERN_ERR PREFIX "%s: Error reading device info\n", __FUNCTION__); 970 printk(KERN_ERR PREFIX "%s: Error reading device info\n", __func__);
970 return; 971 return;
971 } 972 }
972 973
diff --git a/drivers/acpi/sleep/main.c b/drivers/acpi/sleep/main.c
index 293a1cbb47c0..d2f71a54726c 100644
--- a/drivers/acpi/sleep/main.c
+++ b/drivers/acpi/sleep/main.c
@@ -504,7 +504,7 @@ static void acpi_power_off_prepare(void)
504static void acpi_power_off(void) 504static void acpi_power_off(void)
505{ 505{
506 /* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */ 506 /* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */
507 printk("%s called\n", __FUNCTION__); 507 printk("%s called\n", __func__);
508 local_irq_disable(); 508 local_irq_disable();
509 acpi_enable_wakeup_device(ACPI_STATE_S5); 509 acpi_enable_wakeup_device(ACPI_STATE_S5);
510 acpi_enter_sleep_state(ACPI_STATE_S5); 510 acpi_enter_sleep_state(ACPI_STATE_S5);
diff --git a/drivers/acpi/system.c b/drivers/acpi/system.c
index 55cf4c05bb74..4749f379a915 100644
--- a/drivers/acpi/system.c
+++ b/drivers/acpi/system.c
@@ -319,7 +319,7 @@ void acpi_irq_stats_init(void)
319 goto fail; 319 goto fail;
320 320
321 for (i = 0; i < num_counters; ++i) { 321 for (i = 0; i < num_counters; ++i) {
322 char buffer[10]; 322 char buffer[12];
323 char *name; 323 char *name;
324 324
325 if (i < num_gpes) 325 if (i < num_gpes)
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 8d4b79b4f933..c4e00ac8ea85 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -879,6 +879,8 @@ static void acpi_thermal_check(void *data)
879} 879}
880 880
881/* sys I/F for generic thermal sysfs support */ 881/* sys I/F for generic thermal sysfs support */
882#define KELVIN_TO_MILLICELSIUS(t) (t * 100 - 273200)
883
882static int thermal_get_temp(struct thermal_zone_device *thermal, char *buf) 884static int thermal_get_temp(struct thermal_zone_device *thermal, char *buf)
883{ 885{
884 struct acpi_thermal *tz = thermal->devdata; 886 struct acpi_thermal *tz = thermal->devdata;
@@ -886,7 +888,7 @@ static int thermal_get_temp(struct thermal_zone_device *thermal, char *buf)
886 if (!tz) 888 if (!tz)
887 return -EINVAL; 889 return -EINVAL;
888 890
889 return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS(tz->temperature)); 891 return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS(tz->temperature));
890} 892}
891 893
892static const char enabled[] = "kernel"; 894static const char enabled[] = "kernel";
@@ -980,21 +982,21 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
980 982
981 if (tz->trips.critical.flags.valid) { 983 if (tz->trips.critical.flags.valid) {
982 if (!trip) 984 if (!trip)
983 return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( 985 return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS(
984 tz->trips.critical.temperature)); 986 tz->trips.critical.temperature));
985 trip--; 987 trip--;
986 } 988 }
987 989
988 if (tz->trips.hot.flags.valid) { 990 if (tz->trips.hot.flags.valid) {
989 if (!trip) 991 if (!trip)
990 return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( 992 return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS(
991 tz->trips.hot.temperature)); 993 tz->trips.hot.temperature));
992 trip--; 994 trip--;
993 } 995 }
994 996
995 if (tz->trips.passive.flags.valid) { 997 if (tz->trips.passive.flags.valid) {
996 if (!trip) 998 if (!trip)
997 return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( 999 return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS(
998 tz->trips.passive.temperature)); 1000 tz->trips.passive.temperature));
999 trip--; 1001 trip--;
1000 } 1002 }
@@ -1002,7 +1004,7 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
1002 for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE && 1004 for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE &&
1003 tz->trips.active[i].flags.valid; i++) { 1005 tz->trips.active[i].flags.valid; i++) {
1004 if (!trip) 1006 if (!trip)
1005 return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( 1007 return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS(
1006 tz->trips.active[i].temperature)); 1008 tz->trips.active[i].temperature));
1007 trip--; 1009 trip--;
1008 } 1010 }
diff --git a/drivers/acpi/toshiba_acpi.c b/drivers/acpi/toshiba_acpi.c
index 9e8c20c6a0b7..0a43c8e0eff3 100644
--- a/drivers/acpi/toshiba_acpi.c
+++ b/drivers/acpi/toshiba_acpi.c
@@ -99,6 +99,13 @@ MODULE_LICENSE("GPL");
99#define HCI_VIDEO_OUT_CRT 0x2 99#define HCI_VIDEO_OUT_CRT 0x2
100#define HCI_VIDEO_OUT_TV 0x4 100#define HCI_VIDEO_OUT_TV 0x4
101 101
102static const struct acpi_device_id toshiba_device_ids[] = {
103 {"TOS6200", 0},
104 {"TOS1900", 0},
105 {"", 0},
106};
107MODULE_DEVICE_TABLE(acpi, toshiba_device_ids);
108
102/* utility 109/* utility
103 */ 110 */
104 111
diff --git a/drivers/acpi/utilities/utdebug.c b/drivers/acpi/utilities/utdebug.c
index c7e128e5369b..7361204b1eef 100644
--- a/drivers/acpi/utilities/utdebug.c
+++ b/drivers/acpi/utilities/utdebug.c
@@ -109,7 +109,7 @@ void acpi_ut_track_stack_ptr(void)
109 * RETURN: Updated pointer to the function name 109 * RETURN: Updated pointer to the function name
110 * 110 *
111 * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present. 111 * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present.
112 * This allows compiler macros such as __FUNCTION__ to be used 112 * This allows compiler macros such as __func__ to be used
113 * with no change to the debug output. 113 * with no change to the debug output.
114 * 114 *
115 ******************************************************************************/ 115 ******************************************************************************/
diff --git a/drivers/acpi/utilities/utobject.c b/drivers/acpi/utilities/utobject.c
index 76ee766c84f9..e08b3fa6639f 100644
--- a/drivers/acpi/utilities/utobject.c
+++ b/drivers/acpi/utilities/utobject.c
@@ -432,7 +432,7 @@ acpi_ut_get_simple_object_size(union acpi_operand_object *internal_object,
432 * element -- which is legal) 432 * element -- which is legal)
433 */ 433 */
434 if (!internal_object) { 434 if (!internal_object) {
435 *obj_length = 0; 435 *obj_length = sizeof(union acpi_object);
436 return_ACPI_STATUS(AE_OK); 436 return_ACPI_STATUS(AE_OK);
437 } 437 }
438 438
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c
index eba55b7d6c95..44ea60cf21c0 100644
--- a/drivers/acpi/utils.c
+++ b/drivers/acpi/utils.c
@@ -407,6 +407,12 @@ acpi_evaluate_reference(acpi_handle handle,
407 break; 407 break;
408 } 408 }
409 409
410 if (!element->reference.handle) {
411 printk(KERN_WARNING PREFIX "Invalid reference in"
412 " package %s\n", pathname);
413 status = AE_NULL_ENTRY;
414 break;
415 }
410 /* Get the acpi_handle. */ 416 /* Get the acpi_handle. */
411 417
412 list->handles[i] = element->reference.handle; 418 list->handles[i] = element->reference.handle;
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 12cce69b5441..1bc0c74f2755 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -713,7 +713,7 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
713 713
714 kfree(obj); 714 kfree(obj);
715 715
716 if (device->cap._BCL && device->cap._BCM && device->cap._BQC && max_level > 0){ 716 if (device->cap._BCL && device->cap._BCM && max_level > 0) {
717 int result; 717 int result;
718 static int count = 0; 718 static int count = 0;
719 char *name; 719 char *name;
@@ -1201,7 +1201,7 @@ static int acpi_video_bus_ROM_seq_show(struct seq_file *seq, void *offset)
1201 if (!video) 1201 if (!video)
1202 goto end; 1202 goto end;
1203 1203
1204 printk(KERN_INFO PREFIX "Please implement %s\n", __FUNCTION__); 1204 printk(KERN_INFO PREFIX "Please implement %s\n", __func__);
1205 seq_printf(seq, "<TODO>\n"); 1205 seq_printf(seq, "<TODO>\n");
1206 1206
1207 end: 1207 end:
diff --git a/drivers/acpi/wmi.c b/drivers/acpi/wmi.c
index efacc9f8bfe3..c33b1c6e93b1 100644
--- a/drivers/acpi/wmi.c
+++ b/drivers/acpi/wmi.c
@@ -293,7 +293,7 @@ struct acpi_buffer *out)
293{ 293{
294 struct guid_block *block = NULL; 294 struct guid_block *block = NULL;
295 struct wmi_block *wblock = NULL; 295 struct wmi_block *wblock = NULL;
296 acpi_handle handle; 296 acpi_handle handle, wc_handle;
297 acpi_status status, wc_status = AE_ERROR; 297 acpi_status status, wc_status = AE_ERROR;
298 struct acpi_object_list input, wc_input; 298 struct acpi_object_list input, wc_input;
299 union acpi_object wc_params[1], wq_params[1]; 299 union acpi_object wc_params[1], wq_params[1];
@@ -338,8 +338,10 @@ struct acpi_buffer *out)
338 * expensive, but have no corresponding WCxx method. So we 338 * expensive, but have no corresponding WCxx method. So we
339 * should not fail if this happens. 339 * should not fail if this happens.
340 */ 340 */
341 wc_status = acpi_evaluate_object(handle, wc_method, 341 wc_status = acpi_get_handle(handle, wc_method, &wc_handle);
342 &wc_input, NULL); 342 if (ACPI_SUCCESS(wc_status))
343 wc_status = acpi_evaluate_object(handle, wc_method,
344 &wc_input, NULL);
343 } 345 }
344 346
345 strcpy(method, "WQ"); 347 strcpy(method, "WQ");
@@ -351,7 +353,7 @@ struct acpi_buffer *out)
351 * If ACPI_WMI_EXPENSIVE, call the relevant WCxx method, even if 353 * If ACPI_WMI_EXPENSIVE, call the relevant WCxx method, even if
352 * the WQxx method failed - we should disable collection anyway. 354 * the WQxx method failed - we should disable collection anyway.
353 */ 355 */
354 if ((block->flags & ACPI_WMI_EXPENSIVE) && wc_status) { 356 if ((block->flags & ACPI_WMI_EXPENSIVE) && ACPI_SUCCESS(wc_status)) {
355 wc_params[0].integer.value = 0; 357 wc_params[0].integer.value = 0;
356 status = acpi_evaluate_object(handle, 358 status = acpi_evaluate_object(handle,
357 wc_method, &wc_input, NULL); 359 wc_method, &wc_input, NULL);
diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c
index c662d686154a..47c57a4294b7 100644
--- a/drivers/atm/firestream.c
+++ b/drivers/atm/firestream.c
@@ -331,8 +331,8 @@ module_param(fs_keystream, int, 0);
331#define FS_DEBUG_QSIZE 0x00001000 331#define FS_DEBUG_QSIZE 0x00001000
332 332
333 333
334#define func_enter() fs_dprintk (FS_DEBUG_FLOW, "fs: enter %s\n", __FUNCTION__) 334#define func_enter() fs_dprintk(FS_DEBUG_FLOW, "fs: enter %s\n", __func__)
335#define func_exit() fs_dprintk (FS_DEBUG_FLOW, "fs: exit %s\n", __FUNCTION__) 335#define func_exit() fs_dprintk(FS_DEBUG_FLOW, "fs: exit %s\n", __func__)
336 336
337 337
338static struct fs_dev *fs_boards = NULL; 338static struct fs_dev *fs_boards = NULL;
diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c
index f97e050338f0..9427a61f62b0 100644
--- a/drivers/atm/fore200e.c
+++ b/drivers/atm/fore200e.c
@@ -95,8 +95,8 @@
95#if 1 95#if 1
96#define ASSERT(expr) if (!(expr)) { \ 96#define ASSERT(expr) if (!(expr)) { \
97 printk(FORE200E "assertion failed! %s[%d]: %s\n", \ 97 printk(FORE200E "assertion failed! %s[%d]: %s\n", \
98 __FUNCTION__, __LINE__, #expr); \ 98 __func__, __LINE__, #expr); \
99 panic(FORE200E "%s", __FUNCTION__); \ 99 panic(FORE200E "%s", __func__); \
100 } 100 }
101#else 101#else
102#define ASSERT(expr) do {} while (0) 102#define ASSERT(expr) do {} while (0)
diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c
index eee54c0cde68..b967919fb7e2 100644
--- a/drivers/atm/idt77252.c
+++ b/drivers/atm/idt77252.c
@@ -555,7 +555,7 @@ idt77252_tx_dump(struct idt77252_dev *card)
555 struct vc_map *vc; 555 struct vc_map *vc;
556 int i; 556 int i;
557 557
558 printk("%s\n", __FUNCTION__); 558 printk("%s\n", __func__);
559 for (i = 0; i < card->tct_size; i++) { 559 for (i = 0; i < card->tct_size; i++) {
560 vc = card->vcs[i]; 560 vc = card->vcs[i];
561 if (!vc) 561 if (!vc)
@@ -1035,7 +1035,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe)
1035 skb = sb_pool_skb(card, le32_to_cpu(rsqe->word_2)); 1035 skb = sb_pool_skb(card, le32_to_cpu(rsqe->word_2));
1036 if (skb == NULL) { 1036 if (skb == NULL) {
1037 printk("%s: NULL skb in %s, rsqe: %08x %08x %08x %08x\n", 1037 printk("%s: NULL skb in %s, rsqe: %08x %08x %08x %08x\n",
1038 card->name, __FUNCTION__, 1038 card->name, __func__,
1039 le32_to_cpu(rsqe->word_1), le32_to_cpu(rsqe->word_2), 1039 le32_to_cpu(rsqe->word_1), le32_to_cpu(rsqe->word_2),
1040 le32_to_cpu(rsqe->word_3), le32_to_cpu(rsqe->word_4)); 1040 le32_to_cpu(rsqe->word_3), le32_to_cpu(rsqe->word_4));
1041 return; 1041 return;
@@ -1873,7 +1873,7 @@ add_rx_skb(struct idt77252_dev *card, int queue,
1873 return; 1873 return;
1874 1874
1875 if (sb_pool_add(card, skb, queue)) { 1875 if (sb_pool_add(card, skb, queue)) {
1876 printk("%s: SB POOL full\n", __FUNCTION__); 1876 printk("%s: SB POOL full\n", __func__);
1877 goto outfree; 1877 goto outfree;
1878 } 1878 }
1879 1879
@@ -1883,7 +1883,7 @@ add_rx_skb(struct idt77252_dev *card, int queue,
1883 IDT77252_PRV_PADDR(skb) = paddr; 1883 IDT77252_PRV_PADDR(skb) = paddr;
1884 1884
1885 if (push_rx_skb(card, skb, queue)) { 1885 if (push_rx_skb(card, skb, queue)) {
1886 printk("%s: FB QUEUE full\n", __FUNCTION__); 1886 printk("%s: FB QUEUE full\n", __func__);
1887 goto outunmap; 1887 goto outunmap;
1888 } 1888 }
1889 } 1889 }
@@ -3821,12 +3821,12 @@ static int __init idt77252_init(void)
3821{ 3821{
3822 struct sk_buff *skb; 3822 struct sk_buff *skb;
3823 3823
3824 printk("%s: at %p\n", __FUNCTION__, idt77252_init); 3824 printk("%s: at %p\n", __func__, idt77252_init);
3825 3825
3826 if (sizeof(skb->cb) < sizeof(struct atm_skb_data) + 3826 if (sizeof(skb->cb) < sizeof(struct atm_skb_data) +
3827 sizeof(struct idt77252_skb_prv)) { 3827 sizeof(struct idt77252_skb_prv)) {
3828 printk(KERN_ERR "%s: skb->cb is too small (%lu < %lu)\n", 3828 printk(KERN_ERR "%s: skb->cb is too small (%lu < %lu)\n",
3829 __FUNCTION__, (unsigned long) sizeof(skb->cb), 3829 __func__, (unsigned long) sizeof(skb->cb),
3830 (unsigned long) sizeof(struct atm_skb_data) + 3830 (unsigned long) sizeof(struct atm_skb_data) +
3831 sizeof(struct idt77252_skb_prv)); 3831 sizeof(struct idt77252_skb_prv));
3832 return -EIO; 3832 return -EIO;
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c
index 32c79a55511b..7652e87d60c5 100644
--- a/drivers/block/floppy.c
+++ b/drivers/block/floppy.c
@@ -217,7 +217,6 @@ static int use_virtual_dma;
217 */ 217 */
218 218
219static DEFINE_SPINLOCK(floppy_lock); 219static DEFINE_SPINLOCK(floppy_lock);
220static struct completion device_release;
221 220
222static unsigned short virtual_dma_port = 0x3f0; 221static unsigned short virtual_dma_port = 0x3f0;
223irqreturn_t floppy_interrupt(int irq, void *dev_id); 222irqreturn_t floppy_interrupt(int irq, void *dev_id);
@@ -4144,7 +4143,6 @@ DEVICE_ATTR(cmos,S_IRUGO,floppy_cmos_show,NULL);
4144 4143
4145static void floppy_device_release(struct device *dev) 4144static void floppy_device_release(struct device *dev)
4146{ 4145{
4147 complete(&device_release);
4148} 4146}
4149 4147
4150static struct platform_device floppy_device[N_DRIVE]; 4148static struct platform_device floppy_device[N_DRIVE];
@@ -4539,7 +4537,6 @@ void cleanup_module(void)
4539{ 4537{
4540 int drive; 4538 int drive;
4541 4539
4542 init_completion(&device_release);
4543 blk_unregister_region(MKDEV(FLOPPY_MAJOR, 0), 256); 4540 blk_unregister_region(MKDEV(FLOPPY_MAJOR, 0), 256);
4544 unregister_blkdev(FLOPPY_MAJOR, "fd"); 4541 unregister_blkdev(FLOPPY_MAJOR, "fd");
4545 4542
@@ -4564,8 +4561,6 @@ void cleanup_module(void)
4564 4561
4565 /* eject disk, if any */ 4562 /* eject disk, if any */
4566 fd_eject(0); 4563 fd_eject(0);
4567
4568 wait_for_completion(&device_release);
4569} 4564}
4570 4565
4571module_param(floppy, charp, 0); 4566module_param(floppy, charp, 0);
diff --git a/drivers/block/viodasd.c b/drivers/block/viodasd.c
index 9e61fca46117..41ca721d2523 100644
--- a/drivers/block/viodasd.c
+++ b/drivers/block/viodasd.c
@@ -528,8 +528,7 @@ static int block_event_to_scatterlist(const struct vioblocklpevent *bevent,
528 numsg = VIOMAXBLOCKDMA; 528 numsg = VIOMAXBLOCKDMA;
529 529
530 *total_len = 0; 530 *total_len = 0;
531 memset(sg, 0, sizeof(sg[0]) * VIOMAXBLOCKDMA); 531 sg_init_table(sg, VIOMAXBLOCKDMA);
532
533 for (i = 0; (i < numsg) && (rw_data->dma_info[i].len > 0); ++i) { 532 for (i = 0; (i < numsg) && (rw_data->dma_info[i].len > 0); ++i) {
534 sg_dma_address(&sg[i]) = rw_data->dma_info[i].token; 533 sg_dma_address(&sg[i]) = rw_data->dma_info[i].token;
535 sg_dma_len(&sg[i]) = rw_data->dma_info[i].len; 534 sg_dma_len(&sg[i]) = rw_data->dma_info[i].len;
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c
index f16c94cbf488..8b884f87d8b7 100644
--- a/drivers/bluetooth/hci_usb.c
+++ b/drivers/bluetooth/hci_usb.c
@@ -149,6 +149,9 @@ static struct usb_device_id blacklist_ids[] = {
149 { USB_DEVICE(0x0400, 0x0807), .driver_info = HCI_BROKEN_ISOC }, 149 { USB_DEVICE(0x0400, 0x0807), .driver_info = HCI_BROKEN_ISOC },
150 { USB_DEVICE(0x0400, 0x080a), .driver_info = HCI_BROKEN_ISOC }, 150 { USB_DEVICE(0x0400, 0x080a), .driver_info = HCI_BROKEN_ISOC },
151 151
152 /* CONWISE Technology based adapters with buggy SCO support */
153 { USB_DEVICE(0x0e5e, 0x6622), .driver_info = HCI_BROKEN_ISOC },
154
152 /* Belkin F8T012 and F8T013 devices */ 155 /* Belkin F8T012 and F8T013 devices */
153 { USB_DEVICE(0x050d, 0x0012), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU }, 156 { USB_DEVICE(0x050d, 0x0012), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
154 { USB_DEVICE(0x050d, 0x0013), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU }, 157 { USB_DEVICE(0x050d, 0x0013), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU },
diff --git a/drivers/char/riscom8.c b/drivers/char/riscom8.c
index 589ac6f65b9a..3f9d0a9ac36d 100644
--- a/drivers/char/riscom8.c
+++ b/drivers/char/riscom8.c
@@ -1709,7 +1709,7 @@ static int __init riscom8_init_module (void)
1709 1709
1710 if (iobase || iobase1 || iobase2 || iobase3) { 1710 if (iobase || iobase1 || iobase2 || iobase3) {
1711 for(i = 0; i < RC_NBOARD; i++) 1711 for(i = 0; i < RC_NBOARD; i++)
1712 rc_board[0].base = 0; 1712 rc_board[i].base = 0;
1713 } 1713 }
1714 1714
1715 if (iobase) 1715 if (iobase)
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c
index 29965231b912..8db0e7f9d3f4 100644
--- a/drivers/dma/dmaengine.c
+++ b/drivers/dma/dmaengine.c
@@ -357,7 +357,7 @@ int dma_async_device_register(struct dma_device *device)
357 !device->device_prep_dma_zero_sum); 357 !device->device_prep_dma_zero_sum);
358 BUG_ON(dma_has_cap(DMA_MEMSET, device->cap_mask) && 358 BUG_ON(dma_has_cap(DMA_MEMSET, device->cap_mask) &&
359 !device->device_prep_dma_memset); 359 !device->device_prep_dma_memset);
360 BUG_ON(dma_has_cap(DMA_ZERO_SUM, device->cap_mask) && 360 BUG_ON(dma_has_cap(DMA_INTERRUPT, device->cap_mask) &&
361 !device->device_prep_dma_interrupt); 361 !device->device_prep_dma_interrupt);
362 362
363 BUG_ON(!device->device_alloc_chan_resources); 363 BUG_ON(!device->device_alloc_chan_resources);
diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c
index cc9a68158d99..ad2f938597e2 100644
--- a/drivers/dma/fsldma.c
+++ b/drivers/dma/fsldma.c
@@ -57,12 +57,12 @@ static void dma_init(struct fsl_dma_chan *fsl_chan)
57 57
58} 58}
59 59
60static void set_sr(struct fsl_dma_chan *fsl_chan, dma_addr_t val) 60static void set_sr(struct fsl_dma_chan *fsl_chan, u32 val)
61{ 61{
62 DMA_OUT(fsl_chan, &fsl_chan->reg_base->sr, val, 32); 62 DMA_OUT(fsl_chan, &fsl_chan->reg_base->sr, val, 32);
63} 63}
64 64
65static dma_addr_t get_sr(struct fsl_dma_chan *fsl_chan) 65static u32 get_sr(struct fsl_dma_chan *fsl_chan)
66{ 66{
67 return DMA_IN(fsl_chan, &fsl_chan->reg_base->sr, 32); 67 return DMA_IN(fsl_chan, &fsl_chan->reg_base->sr, 32);
68} 68}
@@ -406,6 +406,32 @@ static void fsl_dma_free_chan_resources(struct dma_chan *chan)
406 dma_pool_destroy(fsl_chan->desc_pool); 406 dma_pool_destroy(fsl_chan->desc_pool);
407} 407}
408 408
409static struct dma_async_tx_descriptor *
410fsl_dma_prep_interrupt(struct dma_chan *chan)
411{
412 struct fsl_dma_chan *fsl_chan;
413 struct fsl_desc_sw *new;
414
415 if (!chan)
416 return NULL;
417
418 fsl_chan = to_fsl_chan(chan);
419
420 new = fsl_dma_alloc_descriptor(fsl_chan);
421 if (!new) {
422 dev_err(fsl_chan->dev, "No free memory for link descriptor\n");
423 return NULL;
424 }
425
426 new->async_tx.cookie = -EBUSY;
427 new->async_tx.ack = 0;
428
429 /* Set End-of-link to the last link descriptor of new list*/
430 set_ld_eol(fsl_chan, new);
431
432 return &new->async_tx;
433}
434
409static struct dma_async_tx_descriptor *fsl_dma_prep_memcpy( 435static struct dma_async_tx_descriptor *fsl_dma_prep_memcpy(
410 struct dma_chan *chan, dma_addr_t dma_dest, dma_addr_t dma_src, 436 struct dma_chan *chan, dma_addr_t dma_dest, dma_addr_t dma_src,
411 size_t len, unsigned long flags) 437 size_t len, unsigned long flags)
@@ -436,7 +462,7 @@ static struct dma_async_tx_descriptor *fsl_dma_prep_memcpy(
436 dev_dbg(fsl_chan->dev, "new link desc alloc %p\n", new); 462 dev_dbg(fsl_chan->dev, "new link desc alloc %p\n", new);
437#endif 463#endif
438 464
439 copy = min(len, FSL_DMA_BCR_MAX_CNT); 465 copy = min(len, (size_t)FSL_DMA_BCR_MAX_CNT);
440 466
441 set_desc_cnt(fsl_chan, &new->hw, copy); 467 set_desc_cnt(fsl_chan, &new->hw, copy);
442 set_desc_src(fsl_chan, &new->hw, dma_src); 468 set_desc_src(fsl_chan, &new->hw, dma_src);
@@ -513,7 +539,6 @@ static void fsl_chan_ld_cleanup(struct fsl_dma_chan *fsl_chan)
513 539
514 spin_lock_irqsave(&fsl_chan->desc_lock, flags); 540 spin_lock_irqsave(&fsl_chan->desc_lock, flags);
515 541
516 fsl_dma_update_completed_cookie(fsl_chan);
517 dev_dbg(fsl_chan->dev, "chan completed_cookie = %d\n", 542 dev_dbg(fsl_chan->dev, "chan completed_cookie = %d\n",
518 fsl_chan->completed_cookie); 543 fsl_chan->completed_cookie);
519 list_for_each_entry_safe(desc, _desc, &fsl_chan->ld_queue, node) { 544 list_for_each_entry_safe(desc, _desc, &fsl_chan->ld_queue, node) {
@@ -581,8 +606,8 @@ static void fsl_chan_xfer_ld_queue(struct fsl_dma_chan *fsl_chan)
581 if (ld_node != &fsl_chan->ld_queue) { 606 if (ld_node != &fsl_chan->ld_queue) {
582 /* Get the ld start address from ld_queue */ 607 /* Get the ld start address from ld_queue */
583 next_dest_addr = to_fsl_desc(ld_node)->async_tx.phys; 608 next_dest_addr = to_fsl_desc(ld_node)->async_tx.phys;
584 dev_dbg(fsl_chan->dev, "xfer LDs staring from 0x%016llx\n", 609 dev_dbg(fsl_chan->dev, "xfer LDs staring from %p\n",
585 (u64)next_dest_addr); 610 (void *)next_dest_addr);
586 set_cdar(fsl_chan, next_dest_addr); 611 set_cdar(fsl_chan, next_dest_addr);
587 dma_start(fsl_chan); 612 dma_start(fsl_chan);
588 } else { 613 } else {
@@ -662,7 +687,7 @@ static enum dma_status fsl_dma_is_complete(struct dma_chan *chan,
662static irqreturn_t fsl_dma_chan_do_interrupt(int irq, void *data) 687static irqreturn_t fsl_dma_chan_do_interrupt(int irq, void *data)
663{ 688{
664 struct fsl_dma_chan *fsl_chan = (struct fsl_dma_chan *)data; 689 struct fsl_dma_chan *fsl_chan = (struct fsl_dma_chan *)data;
665 dma_addr_t stat; 690 u32 stat;
666 691
667 stat = get_sr(fsl_chan); 692 stat = get_sr(fsl_chan);
668 dev_dbg(fsl_chan->dev, "event: channel %d, stat = 0x%x\n", 693 dev_dbg(fsl_chan->dev, "event: channel %d, stat = 0x%x\n",
@@ -681,10 +706,10 @@ static irqreturn_t fsl_dma_chan_do_interrupt(int irq, void *data)
681 */ 706 */
682 if (stat & FSL_DMA_SR_EOSI) { 707 if (stat & FSL_DMA_SR_EOSI) {
683 dev_dbg(fsl_chan->dev, "event: End-of-segments INT\n"); 708 dev_dbg(fsl_chan->dev, "event: End-of-segments INT\n");
684 dev_dbg(fsl_chan->dev, "event: clndar 0x%016llx, " 709 dev_dbg(fsl_chan->dev, "event: clndar %p, nlndar %p\n",
685 "nlndar 0x%016llx\n", (u64)get_cdar(fsl_chan), 710 (void *)get_cdar(fsl_chan), (void *)get_ndar(fsl_chan));
686 (u64)get_ndar(fsl_chan));
687 stat &= ~FSL_DMA_SR_EOSI; 711 stat &= ~FSL_DMA_SR_EOSI;
712 fsl_dma_update_completed_cookie(fsl_chan);
688 } 713 }
689 714
690 /* If it current transfer is the end-of-transfer, 715 /* If it current transfer is the end-of-transfer,
@@ -726,12 +751,15 @@ static void dma_do_tasklet(unsigned long data)
726 fsl_chan_ld_cleanup(fsl_chan); 751 fsl_chan_ld_cleanup(fsl_chan);
727} 752}
728 753
754#ifdef FSL_DMA_CALLBACKTEST
729static void fsl_dma_callback_test(struct fsl_dma_chan *fsl_chan) 755static void fsl_dma_callback_test(struct fsl_dma_chan *fsl_chan)
730{ 756{
731 if (fsl_chan) 757 if (fsl_chan)
732 dev_info(fsl_chan->dev, "selftest: callback is ok!\n"); 758 dev_info(fsl_chan->dev, "selftest: callback is ok!\n");
733} 759}
760#endif
734 761
762#ifdef CONFIG_FSL_DMA_SELFTEST
735static int fsl_dma_self_test(struct fsl_dma_chan *fsl_chan) 763static int fsl_dma_self_test(struct fsl_dma_chan *fsl_chan)
736{ 764{
737 struct dma_chan *chan; 765 struct dma_chan *chan;
@@ -837,9 +865,9 @@ static int fsl_dma_self_test(struct fsl_dma_chan *fsl_chan)
837 if (err) { 865 if (err) {
838 for (i = 0; (*(src + i) == *(dest + i)) && (i < test_size); 866 for (i = 0; (*(src + i) == *(dest + i)) && (i < test_size);
839 i++); 867 i++);
840 dev_err(fsl_chan->dev, "selftest: Test failed, data %d/%d is " 868 dev_err(fsl_chan->dev, "selftest: Test failed, data %d/%ld is "
841 "error! src 0x%x, dest 0x%x\n", 869 "error! src 0x%x, dest 0x%x\n",
842 i, test_size, *(src + i), *(dest + i)); 870 i, (long)test_size, *(src + i), *(dest + i));
843 } 871 }
844 872
845free_resources: 873free_resources:
@@ -848,6 +876,7 @@ out:
848 kfree(src); 876 kfree(src);
849 return err; 877 return err;
850} 878}
879#endif
851 880
852static int __devinit of_fsl_dma_chan_probe(struct of_device *dev, 881static int __devinit of_fsl_dma_chan_probe(struct of_device *dev,
853 const struct of_device_id *match) 882 const struct of_device_id *match)
@@ -1008,8 +1037,8 @@ static int __devinit of_fsl_dma_probe(struct of_device *dev,
1008 } 1037 }
1009 1038
1010 dev_info(&dev->dev, "Probe the Freescale DMA driver for %s " 1039 dev_info(&dev->dev, "Probe the Freescale DMA driver for %s "
1011 "controller at 0x%08x...\n", 1040 "controller at %p...\n",
1012 match->compatible, fdev->reg.start); 1041 match->compatible, (void *)fdev->reg.start);
1013 fdev->reg_base = ioremap(fdev->reg.start, fdev->reg.end 1042 fdev->reg_base = ioremap(fdev->reg.start, fdev->reg.end
1014 - fdev->reg.start + 1); 1043 - fdev->reg.start + 1);
1015 1044
@@ -1017,6 +1046,7 @@ static int __devinit of_fsl_dma_probe(struct of_device *dev,
1017 dma_cap_set(DMA_INTERRUPT, fdev->common.cap_mask); 1046 dma_cap_set(DMA_INTERRUPT, fdev->common.cap_mask);
1018 fdev->common.device_alloc_chan_resources = fsl_dma_alloc_chan_resources; 1047 fdev->common.device_alloc_chan_resources = fsl_dma_alloc_chan_resources;
1019 fdev->common.device_free_chan_resources = fsl_dma_free_chan_resources; 1048 fdev->common.device_free_chan_resources = fsl_dma_free_chan_resources;
1049 fdev->common.device_prep_dma_interrupt = fsl_dma_prep_interrupt;
1020 fdev->common.device_prep_dma_memcpy = fsl_dma_prep_memcpy; 1050 fdev->common.device_prep_dma_memcpy = fsl_dma_prep_memcpy;
1021 fdev->common.device_is_tx_complete = fsl_dma_is_complete; 1051 fdev->common.device_is_tx_complete = fsl_dma_is_complete;
1022 fdev->common.device_issue_pending = fsl_dma_memcpy_issue_pending; 1052 fdev->common.device_issue_pending = fsl_dma_memcpy_issue_pending;
diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c
index 3986d54492bd..f82b0906d466 100644
--- a/drivers/dma/iop-adma.c
+++ b/drivers/dma/iop-adma.c
@@ -140,7 +140,7 @@ static void __iop_adma_slot_cleanup(struct iop_adma_chan *iop_chan)
140 int busy = iop_chan_is_busy(iop_chan); 140 int busy = iop_chan_is_busy(iop_chan);
141 int seen_current = 0, slot_cnt = 0, slots_per_op = 0; 141 int seen_current = 0, slot_cnt = 0, slots_per_op = 0;
142 142
143 dev_dbg(iop_chan->device->common.dev, "%s\n", __FUNCTION__); 143 dev_dbg(iop_chan->device->common.dev, "%s\n", __func__);
144 /* free completed slots from the chain starting with 144 /* free completed slots from the chain starting with
145 * the oldest descriptor 145 * the oldest descriptor
146 */ 146 */
@@ -438,7 +438,7 @@ iop_adma_tx_submit(struct dma_async_tx_descriptor *tx)
438 spin_unlock_bh(&iop_chan->lock); 438 spin_unlock_bh(&iop_chan->lock);
439 439
440 dev_dbg(iop_chan->device->common.dev, "%s cookie: %d slot: %d\n", 440 dev_dbg(iop_chan->device->common.dev, "%s cookie: %d slot: %d\n",
441 __FUNCTION__, sw_desc->async_tx.cookie, sw_desc->idx); 441 __func__, sw_desc->async_tx.cookie, sw_desc->idx);
442 442
443 return cookie; 443 return cookie;
444} 444}
@@ -520,7 +520,7 @@ iop_adma_prep_dma_interrupt(struct dma_chan *chan)
520 struct iop_adma_desc_slot *sw_desc, *grp_start; 520 struct iop_adma_desc_slot *sw_desc, *grp_start;
521 int slot_cnt, slots_per_op; 521 int slot_cnt, slots_per_op;
522 522
523 dev_dbg(iop_chan->device->common.dev, "%s\n", __FUNCTION__); 523 dev_dbg(iop_chan->device->common.dev, "%s\n", __func__);
524 524
525 spin_lock_bh(&iop_chan->lock); 525 spin_lock_bh(&iop_chan->lock);
526 slot_cnt = iop_chan_interrupt_slot_count(&slots_per_op, iop_chan); 526 slot_cnt = iop_chan_interrupt_slot_count(&slots_per_op, iop_chan);
@@ -548,7 +548,7 @@ iop_adma_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dma_dest,
548 BUG_ON(unlikely(len > IOP_ADMA_MAX_BYTE_COUNT)); 548 BUG_ON(unlikely(len > IOP_ADMA_MAX_BYTE_COUNT));
549 549
550 dev_dbg(iop_chan->device->common.dev, "%s len: %u\n", 550 dev_dbg(iop_chan->device->common.dev, "%s len: %u\n",
551 __FUNCTION__, len); 551 __func__, len);
552 552
553 spin_lock_bh(&iop_chan->lock); 553 spin_lock_bh(&iop_chan->lock);
554 slot_cnt = iop_chan_memcpy_slot_count(len, &slots_per_op); 554 slot_cnt = iop_chan_memcpy_slot_count(len, &slots_per_op);
@@ -580,7 +580,7 @@ iop_adma_prep_dma_memset(struct dma_chan *chan, dma_addr_t dma_dest,
580 BUG_ON(unlikely(len > IOP_ADMA_MAX_BYTE_COUNT)); 580 BUG_ON(unlikely(len > IOP_ADMA_MAX_BYTE_COUNT));
581 581
582 dev_dbg(iop_chan->device->common.dev, "%s len: %u\n", 582 dev_dbg(iop_chan->device->common.dev, "%s len: %u\n",
583 __FUNCTION__, len); 583 __func__, len);
584 584
585 spin_lock_bh(&iop_chan->lock); 585 spin_lock_bh(&iop_chan->lock);
586 slot_cnt = iop_chan_memset_slot_count(len, &slots_per_op); 586 slot_cnt = iop_chan_memset_slot_count(len, &slots_per_op);
@@ -614,7 +614,7 @@ iop_adma_prep_dma_xor(struct dma_chan *chan, dma_addr_t dma_dest,
614 614
615 dev_dbg(iop_chan->device->common.dev, 615 dev_dbg(iop_chan->device->common.dev,
616 "%s src_cnt: %d len: %u flags: %lx\n", 616 "%s src_cnt: %d len: %u flags: %lx\n",
617 __FUNCTION__, src_cnt, len, flags); 617 __func__, src_cnt, len, flags);
618 618
619 spin_lock_bh(&iop_chan->lock); 619 spin_lock_bh(&iop_chan->lock);
620 slot_cnt = iop_chan_xor_slot_count(len, src_cnt, &slots_per_op); 620 slot_cnt = iop_chan_xor_slot_count(len, src_cnt, &slots_per_op);
@@ -648,7 +648,7 @@ iop_adma_prep_dma_zero_sum(struct dma_chan *chan, dma_addr_t *dma_src,
648 return NULL; 648 return NULL;
649 649
650 dev_dbg(iop_chan->device->common.dev, "%s src_cnt: %d len: %u\n", 650 dev_dbg(iop_chan->device->common.dev, "%s src_cnt: %d len: %u\n",
651 __FUNCTION__, src_cnt, len); 651 __func__, src_cnt, len);
652 652
653 spin_lock_bh(&iop_chan->lock); 653 spin_lock_bh(&iop_chan->lock);
654 slot_cnt = iop_chan_zero_sum_slot_count(len, src_cnt, &slots_per_op); 654 slot_cnt = iop_chan_zero_sum_slot_count(len, src_cnt, &slots_per_op);
@@ -659,7 +659,7 @@ iop_adma_prep_dma_zero_sum(struct dma_chan *chan, dma_addr_t *dma_src,
659 iop_desc_set_zero_sum_byte_count(grp_start, len); 659 iop_desc_set_zero_sum_byte_count(grp_start, len);
660 grp_start->xor_check_result = result; 660 grp_start->xor_check_result = result;
661 pr_debug("\t%s: grp_start->xor_check_result: %p\n", 661 pr_debug("\t%s: grp_start->xor_check_result: %p\n",
662 __FUNCTION__, grp_start->xor_check_result); 662 __func__, grp_start->xor_check_result);
663 sw_desc->unmap_src_cnt = src_cnt; 663 sw_desc->unmap_src_cnt = src_cnt;
664 sw_desc->unmap_len = len; 664 sw_desc->unmap_len = len;
665 while (src_cnt--) 665 while (src_cnt--)
@@ -700,7 +700,7 @@ static void iop_adma_free_chan_resources(struct dma_chan *chan)
700 iop_chan->last_used = NULL; 700 iop_chan->last_used = NULL;
701 701
702 dev_dbg(iop_chan->device->common.dev, "%s slots_allocated %d\n", 702 dev_dbg(iop_chan->device->common.dev, "%s slots_allocated %d\n",
703 __FUNCTION__, iop_chan->slots_allocated); 703 __func__, iop_chan->slots_allocated);
704 spin_unlock_bh(&iop_chan->lock); 704 spin_unlock_bh(&iop_chan->lock);
705 705
706 /* one is ok since we left it on there on purpose */ 706 /* one is ok since we left it on there on purpose */
@@ -753,7 +753,7 @@ static irqreturn_t iop_adma_eot_handler(int irq, void *data)
753{ 753{
754 struct iop_adma_chan *chan = data; 754 struct iop_adma_chan *chan = data;
755 755
756 dev_dbg(chan->device->common.dev, "%s\n", __FUNCTION__); 756 dev_dbg(chan->device->common.dev, "%s\n", __func__);
757 757
758 tasklet_schedule(&chan->irq_tasklet); 758 tasklet_schedule(&chan->irq_tasklet);
759 759
@@ -766,7 +766,7 @@ static irqreturn_t iop_adma_eoc_handler(int irq, void *data)
766{ 766{
767 struct iop_adma_chan *chan = data; 767 struct iop_adma_chan *chan = data;
768 768
769 dev_dbg(chan->device->common.dev, "%s\n", __FUNCTION__); 769 dev_dbg(chan->device->common.dev, "%s\n", __func__);
770 770
771 tasklet_schedule(&chan->irq_tasklet); 771 tasklet_schedule(&chan->irq_tasklet);
772 772
@@ -823,7 +823,7 @@ static int __devinit iop_adma_memcpy_self_test(struct iop_adma_device *device)
823 int err = 0; 823 int err = 0;
824 struct iop_adma_chan *iop_chan; 824 struct iop_adma_chan *iop_chan;
825 825
826 dev_dbg(device->common.dev, "%s\n", __FUNCTION__); 826 dev_dbg(device->common.dev, "%s\n", __func__);
827 827
828 src = kzalloc(sizeof(u8) * IOP_ADMA_TEST_SIZE, GFP_KERNEL); 828 src = kzalloc(sizeof(u8) * IOP_ADMA_TEST_SIZE, GFP_KERNEL);
829 if (!src) 829 if (!src)
@@ -906,7 +906,7 @@ iop_adma_xor_zero_sum_self_test(struct iop_adma_device *device)
906 int err = 0; 906 int err = 0;
907 struct iop_adma_chan *iop_chan; 907 struct iop_adma_chan *iop_chan;
908 908
909 dev_dbg(device->common.dev, "%s\n", __FUNCTION__); 909 dev_dbg(device->common.dev, "%s\n", __func__);
910 910
911 for (src_idx = 0; src_idx < IOP_ADMA_NUM_SRC_TEST; src_idx++) { 911 for (src_idx = 0; src_idx < IOP_ADMA_NUM_SRC_TEST; src_idx++) {
912 xor_srcs[src_idx] = alloc_page(GFP_KERNEL); 912 xor_srcs[src_idx] = alloc_page(GFP_KERNEL);
@@ -1159,7 +1159,7 @@ static int __devinit iop_adma_probe(struct platform_device *pdev)
1159 } 1159 }
1160 1160
1161 dev_dbg(&pdev->dev, "%s: allocted descriptor pool virt %p phys %p\n", 1161 dev_dbg(&pdev->dev, "%s: allocted descriptor pool virt %p phys %p\n",
1162 __FUNCTION__, adev->dma_desc_pool_virt, 1162 __func__, adev->dma_desc_pool_virt,
1163 (void *) adev->dma_desc_pool); 1163 (void *) adev->dma_desc_pool);
1164 1164
1165 adev->id = plat_data->hw_id; 1165 adev->id = plat_data->hw_id;
@@ -1289,7 +1289,7 @@ static void iop_chan_start_null_memcpy(struct iop_adma_chan *iop_chan)
1289 dma_cookie_t cookie; 1289 dma_cookie_t cookie;
1290 int slot_cnt, slots_per_op; 1290 int slot_cnt, slots_per_op;
1291 1291
1292 dev_dbg(iop_chan->device->common.dev, "%s\n", __FUNCTION__); 1292 dev_dbg(iop_chan->device->common.dev, "%s\n", __func__);
1293 1293
1294 spin_lock_bh(&iop_chan->lock); 1294 spin_lock_bh(&iop_chan->lock);
1295 slot_cnt = iop_chan_memcpy_slot_count(0, &slots_per_op); 1295 slot_cnt = iop_chan_memcpy_slot_count(0, &slots_per_op);
@@ -1346,7 +1346,7 @@ static void iop_chan_start_null_xor(struct iop_adma_chan *iop_chan)
1346 dma_cookie_t cookie; 1346 dma_cookie_t cookie;
1347 int slot_cnt, slots_per_op; 1347 int slot_cnt, slots_per_op;
1348 1348
1349 dev_dbg(iop_chan->device->common.dev, "%s\n", __FUNCTION__); 1349 dev_dbg(iop_chan->device->common.dev, "%s\n", __func__);
1350 1350
1351 spin_lock_bh(&iop_chan->lock); 1351 spin_lock_bh(&iop_chan->lock);
1352 slot_cnt = iop_chan_xor_slot_count(0, 2, &slots_per_op); 1352 slot_cnt = iop_chan_xor_slot_count(0, 2, &slots_per_op);
diff --git a/drivers/i2c/busses/i2c-amd756.c b/drivers/i2c/busses/i2c-amd756.c
index 573abe440842..2fa43183d375 100644
--- a/drivers/i2c/busses/i2c-amd756.c
+++ b/drivers/i2c/busses/i2c-amd756.c
@@ -335,7 +335,7 @@ static int __devinit amd756_probe(struct pci_dev *pdev,
335 u8 temp; 335 u8 temp;
336 336
337 /* driver_data might come from user-space, so check it */ 337 /* driver_data might come from user-space, so check it */
338 if (id->driver_data > ARRAY_SIZE(chipname)) 338 if (id->driver_data >= ARRAY_SIZE(chipname))
339 return -EINVAL; 339 return -EINVAL;
340 340
341 if (amd756_ioport) { 341 if (amd756_ioport) {
diff --git a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile
index 501f00cea782..e47aca0ca5ae 100644
--- a/drivers/i2c/chips/Makefile
+++ b/drivers/i2c/chips/Makefile
@@ -1,6 +1,13 @@
1# 1#
2# Makefile for miscellaneous I2C chip drivers. 2# Makefile for miscellaneous I2C chip drivers.
3# 3#
4# Think twice before you add a new driver to this directory.
5# Device drivers are better grouped according to the functionality they
6# implement rather than to the bus they are connected to. In particular:
7# * Hardware monitoring chip drivers go to drivers/hwmon
8# * RTC chip drivers go to drivers/rtc
9# * I/O expander drivers go to drivers/gpio
10#
4 11
5obj-$(CONFIG_DS1682) += ds1682.o 12obj-$(CONFIG_DS1682) += ds1682.o
6obj-$(CONFIG_SENSORS_EEPROM) += eeprom.o 13obj-$(CONFIG_SENSORS_EEPROM) += eeprom.o
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c
index 96da22e9a5a4..fd84b2a36338 100644
--- a/drivers/i2c/i2c-core.c
+++ b/drivers/i2c/i2c-core.c
@@ -90,12 +90,16 @@ static int i2c_device_probe(struct device *dev)
90{ 90{
91 struct i2c_client *client = to_i2c_client(dev); 91 struct i2c_client *client = to_i2c_client(dev);
92 struct i2c_driver *driver = to_i2c_driver(dev->driver); 92 struct i2c_driver *driver = to_i2c_driver(dev->driver);
93 int status;
93 94
94 if (!driver->probe) 95 if (!driver->probe)
95 return -ENODEV; 96 return -ENODEV;
96 client->driver = driver; 97 client->driver = driver;
97 dev_dbg(dev, "probe\n"); 98 dev_dbg(dev, "probe\n");
98 return driver->probe(client); 99 status = driver->probe(client);
100 if (status)
101 client->driver = NULL;
102 return status;
99} 103}
100 104
101static int i2c_device_remove(struct device *dev) 105static int i2c_device_remove(struct device *dev)
diff --git a/drivers/infiniband/hw/ipath/ipath_common.h b/drivers/infiniband/hw/ipath/ipath_common.h
index 414621095540..591901aab6b7 100644
--- a/drivers/infiniband/hw/ipath/ipath_common.h
+++ b/drivers/infiniband/hw/ipath/ipath_common.h
@@ -75,7 +75,7 @@
75#define IPATH_IB_LINKDOWN 0 75#define IPATH_IB_LINKDOWN 0
76#define IPATH_IB_LINKARM 1 76#define IPATH_IB_LINKARM 1
77#define IPATH_IB_LINKACTIVE 2 77#define IPATH_IB_LINKACTIVE 2
78#define IPATH_IB_LINKINIT 3 78#define IPATH_IB_LINKDOWN_ONLY 3
79#define IPATH_IB_LINKDOWN_SLEEP 4 79#define IPATH_IB_LINKDOWN_SLEEP 4
80#define IPATH_IB_LINKDOWN_DISABLE 5 80#define IPATH_IB_LINKDOWN_DISABLE 5
81#define IPATH_IB_LINK_LOOPBACK 6 /* enable local loopback */ 81#define IPATH_IB_LINK_LOOPBACK 6 /* enable local loopback */
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c
index d5ff6ca2db30..ca4d0acc6786 100644
--- a/drivers/infiniband/hw/ipath/ipath_driver.c
+++ b/drivers/infiniband/hw/ipath/ipath_driver.c
@@ -851,8 +851,7 @@ void ipath_disarm_piobufs(struct ipath_devdata *dd, unsigned first,
851 * -ETIMEDOUT state can have multiple states set, for any of several 851 * -ETIMEDOUT state can have multiple states set, for any of several
852 * transitions. 852 * transitions.
853 */ 853 */
854static int ipath_wait_linkstate(struct ipath_devdata *dd, u32 state, 854int ipath_wait_linkstate(struct ipath_devdata *dd, u32 state, int msecs)
855 int msecs)
856{ 855{
857 dd->ipath_state_wanted = state; 856 dd->ipath_state_wanted = state;
858 wait_event_interruptible_timeout(ipath_state_wait, 857 wait_event_interruptible_timeout(ipath_state_wait,
@@ -1656,8 +1655,8 @@ void ipath_cancel_sends(struct ipath_devdata *dd, int restore_sendctrl)
1656static void ipath_set_ib_lstate(struct ipath_devdata *dd, int which) 1655static void ipath_set_ib_lstate(struct ipath_devdata *dd, int which)
1657{ 1656{
1658 static const char *what[4] = { 1657 static const char *what[4] = {
1659 [0] = "DOWN", 1658 [0] = "NOP",
1660 [INFINIPATH_IBCC_LINKCMD_INIT] = "INIT", 1659 [INFINIPATH_IBCC_LINKCMD_DOWN] = "DOWN",
1661 [INFINIPATH_IBCC_LINKCMD_ARMED] = "ARMED", 1660 [INFINIPATH_IBCC_LINKCMD_ARMED] = "ARMED",
1662 [INFINIPATH_IBCC_LINKCMD_ACTIVE] = "ACTIVE" 1661 [INFINIPATH_IBCC_LINKCMD_ACTIVE] = "ACTIVE"
1663 }; 1662 };
@@ -1672,9 +1671,9 @@ static void ipath_set_ib_lstate(struct ipath_devdata *dd, int which)
1672 (dd, dd->ipath_kregs->kr_ibcstatus) >> 1671 (dd, dd->ipath_kregs->kr_ibcstatus) >>
1673 INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT) & 1672 INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT) &
1674 INFINIPATH_IBCS_LINKTRAININGSTATE_MASK]); 1673 INFINIPATH_IBCS_LINKTRAININGSTATE_MASK]);
1675 /* flush all queued sends when going to DOWN or INIT, to be sure that 1674 /* flush all queued sends when going to DOWN to be sure that
1676 * they don't block MAD packets */ 1675 * they don't block MAD packets */
1677 if (!linkcmd || linkcmd == INFINIPATH_IBCC_LINKCMD_INIT) 1676 if (linkcmd == INFINIPATH_IBCC_LINKCMD_DOWN)
1678 ipath_cancel_sends(dd, 1); 1677 ipath_cancel_sends(dd, 1);
1679 1678
1680 ipath_write_kreg(dd, dd->ipath_kregs->kr_ibcctrl, 1679 ipath_write_kreg(dd, dd->ipath_kregs->kr_ibcctrl,
@@ -1687,6 +1686,13 @@ int ipath_set_linkstate(struct ipath_devdata *dd, u8 newstate)
1687 int ret; 1686 int ret;
1688 1687
1689 switch (newstate) { 1688 switch (newstate) {
1689 case IPATH_IB_LINKDOWN_ONLY:
1690 ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKCMD_DOWN <<
1691 INFINIPATH_IBCC_LINKCMD_SHIFT);
1692 /* don't wait */
1693 ret = 0;
1694 goto bail;
1695
1690 case IPATH_IB_LINKDOWN: 1696 case IPATH_IB_LINKDOWN:
1691 ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKINITCMD_POLL << 1697 ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKINITCMD_POLL <<
1692 INFINIPATH_IBCC_LINKINITCMD_SHIFT); 1698 INFINIPATH_IBCC_LINKINITCMD_SHIFT);
@@ -1709,16 +1715,6 @@ int ipath_set_linkstate(struct ipath_devdata *dd, u8 newstate)
1709 ret = 0; 1715 ret = 0;
1710 goto bail; 1716 goto bail;
1711 1717
1712 case IPATH_IB_LINKINIT:
1713 if (dd->ipath_flags & IPATH_LINKINIT) {
1714 ret = 0;
1715 goto bail;
1716 }
1717 ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKCMD_INIT <<
1718 INFINIPATH_IBCC_LINKCMD_SHIFT);
1719 lstate = IPATH_LINKINIT;
1720 break;
1721
1722 case IPATH_IB_LINKARM: 1718 case IPATH_IB_LINKARM:
1723 if (dd->ipath_flags & IPATH_LINKARMED) { 1719 if (dd->ipath_flags & IPATH_LINKARMED) {
1724 ret = 0; 1720 ret = 0;
diff --git a/drivers/infiniband/hw/ipath/ipath_kernel.h b/drivers/infiniband/hw/ipath/ipath_kernel.h
index 4cc0f95ea877..ecf3f7ff7717 100644
--- a/drivers/infiniband/hw/ipath/ipath_kernel.h
+++ b/drivers/infiniband/hw/ipath/ipath_kernel.h
@@ -767,6 +767,7 @@ void ipath_kreceive(struct ipath_portdata *);
767int ipath_setrcvhdrsize(struct ipath_devdata *, unsigned); 767int ipath_setrcvhdrsize(struct ipath_devdata *, unsigned);
768int ipath_reset_device(int); 768int ipath_reset_device(int);
769void ipath_get_faststats(unsigned long); 769void ipath_get_faststats(unsigned long);
770int ipath_wait_linkstate(struct ipath_devdata *, u32, int);
770int ipath_set_linkstate(struct ipath_devdata *, u8); 771int ipath_set_linkstate(struct ipath_devdata *, u8);
771int ipath_set_mtu(struct ipath_devdata *, u16); 772int ipath_set_mtu(struct ipath_devdata *, u16);
772int ipath_set_lid(struct ipath_devdata *, u32, u8); 773int ipath_set_lid(struct ipath_devdata *, u32, u8);
diff --git a/drivers/infiniband/hw/ipath/ipath_mad.c b/drivers/infiniband/hw/ipath/ipath_mad.c
index d98d5f103700..b34b91d3723a 100644
--- a/drivers/infiniband/hw/ipath/ipath_mad.c
+++ b/drivers/infiniband/hw/ipath/ipath_mad.c
@@ -555,10 +555,7 @@ static int recv_subn_set_portinfo(struct ib_smp *smp,
555 /* FALLTHROUGH */ 555 /* FALLTHROUGH */
556 case IB_PORT_DOWN: 556 case IB_PORT_DOWN:
557 if (lstate == 0) 557 if (lstate == 0)
558 if (get_linkdowndefaultstate(dd)) 558 lstate = IPATH_IB_LINKDOWN_ONLY;
559 lstate = IPATH_IB_LINKDOWN_SLEEP;
560 else
561 lstate = IPATH_IB_LINKDOWN;
562 else if (lstate == 1) 559 else if (lstate == 1)
563 lstate = IPATH_IB_LINKDOWN_SLEEP; 560 lstate = IPATH_IB_LINKDOWN_SLEEP;
564 else if (lstate == 2) 561 else if (lstate == 2)
@@ -568,6 +565,8 @@ static int recv_subn_set_portinfo(struct ib_smp *smp,
568 else 565 else
569 goto err; 566 goto err;
570 ipath_set_linkstate(dd, lstate); 567 ipath_set_linkstate(dd, lstate);
568 ipath_wait_linkstate(dd, IPATH_LINKINIT | IPATH_LINKARMED |
569 IPATH_LINKACTIVE, 1000);
571 break; 570 break;
572 case IB_PORT_ARMED: 571 case IB_PORT_ARMED:
573 ipath_set_linkstate(dd, IPATH_IB_LINKARM); 572 ipath_set_linkstate(dd, IPATH_IB_LINKARM);
diff --git a/drivers/infiniband/hw/ipath/ipath_qp.c b/drivers/infiniband/hw/ipath/ipath_qp.c
index 80dc623cee40..087ed3166479 100644
--- a/drivers/infiniband/hw/ipath/ipath_qp.c
+++ b/drivers/infiniband/hw/ipath/ipath_qp.c
@@ -329,8 +329,9 @@ struct ipath_qp *ipath_lookup_qpn(struct ipath_qp_table *qpt, u32 qpn)
329/** 329/**
330 * ipath_reset_qp - initialize the QP state to the reset state 330 * ipath_reset_qp - initialize the QP state to the reset state
331 * @qp: the QP to reset 331 * @qp: the QP to reset
332 * @type: the QP type
332 */ 333 */
333static void ipath_reset_qp(struct ipath_qp *qp) 334static void ipath_reset_qp(struct ipath_qp *qp, enum ib_qp_type type)
334{ 335{
335 qp->remote_qpn = 0; 336 qp->remote_qpn = 0;
336 qp->qkey = 0; 337 qp->qkey = 0;
@@ -342,7 +343,7 @@ static void ipath_reset_qp(struct ipath_qp *qp)
342 qp->s_psn = 0; 343 qp->s_psn = 0;
343 qp->r_psn = 0; 344 qp->r_psn = 0;
344 qp->r_msn = 0; 345 qp->r_msn = 0;
345 if (qp->ibqp.qp_type == IB_QPT_RC) { 346 if (type == IB_QPT_RC) {
346 qp->s_state = IB_OPCODE_RC_SEND_LAST; 347 qp->s_state = IB_OPCODE_RC_SEND_LAST;
347 qp->r_state = IB_OPCODE_RC_SEND_LAST; 348 qp->r_state = IB_OPCODE_RC_SEND_LAST;
348 } else { 349 } else {
@@ -414,7 +415,7 @@ int ipath_error_qp(struct ipath_qp *qp, enum ib_wc_status err)
414 wc.wr_id = qp->r_wr_id; 415 wc.wr_id = qp->r_wr_id;
415 wc.opcode = IB_WC_RECV; 416 wc.opcode = IB_WC_RECV;
416 wc.status = err; 417 wc.status = err;
417 ipath_cq_enter(to_icq(qp->ibqp.send_cq), &wc, 1); 418 ipath_cq_enter(to_icq(qp->ibqp.recv_cq), &wc, 1);
418 } 419 }
419 wc.status = IB_WC_WR_FLUSH_ERR; 420 wc.status = IB_WC_WR_FLUSH_ERR;
420 421
@@ -534,7 +535,7 @@ int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
534 535
535 switch (new_state) { 536 switch (new_state) {
536 case IB_QPS_RESET: 537 case IB_QPS_RESET:
537 ipath_reset_qp(qp); 538 ipath_reset_qp(qp, ibqp->qp_type);
538 break; 539 break;
539 540
540 case IB_QPS_ERR: 541 case IB_QPS_ERR:
@@ -647,7 +648,7 @@ int ipath_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
647 attr->port_num = 1; 648 attr->port_num = 1;
648 attr->timeout = qp->timeout; 649 attr->timeout = qp->timeout;
649 attr->retry_cnt = qp->s_retry_cnt; 650 attr->retry_cnt = qp->s_retry_cnt;
650 attr->rnr_retry = qp->s_rnr_retry; 651 attr->rnr_retry = qp->s_rnr_retry_cnt;
651 attr->alt_port_num = 0; 652 attr->alt_port_num = 0;
652 attr->alt_timeout = 0; 653 attr->alt_timeout = 0;
653 654
@@ -839,7 +840,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
839 goto bail_qp; 840 goto bail_qp;
840 } 841 }
841 qp->ip = NULL; 842 qp->ip = NULL;
842 ipath_reset_qp(qp); 843 ipath_reset_qp(qp, init_attr->qp_type);
843 break; 844 break;
844 845
845 default: 846 default:
diff --git a/drivers/infiniband/hw/ipath/ipath_rc.c b/drivers/infiniband/hw/ipath/ipath_rc.c
index 459e46e2c016..40f3e37d7adc 100644
--- a/drivers/infiniband/hw/ipath/ipath_rc.c
+++ b/drivers/infiniband/hw/ipath/ipath_rc.c
@@ -1196,6 +1196,10 @@ static inline void ipath_rc_rcv_resp(struct ipath_ibdev *dev,
1196 list_move_tail(&qp->timerwait, 1196 list_move_tail(&qp->timerwait,
1197 &dev->pending[dev->pending_index]); 1197 &dev->pending[dev->pending_index]);
1198 spin_unlock(&dev->pending_lock); 1198 spin_unlock(&dev->pending_lock);
1199
1200 if (opcode == OP(RDMA_READ_RESPONSE_MIDDLE))
1201 qp->s_retry = qp->s_retry_cnt;
1202
1199 /* 1203 /*
1200 * Update the RDMA receive state but do the copy w/o 1204 * Update the RDMA receive state but do the copy w/o
1201 * holding the locks and blocking interrupts. 1205 * holding the locks and blocking interrupts.
diff --git a/drivers/infiniband/hw/ipath/ipath_registers.h b/drivers/infiniband/hw/ipath/ipath_registers.h
index 6d2a17f9c1da..92ad73a7fff0 100644
--- a/drivers/infiniband/hw/ipath/ipath_registers.h
+++ b/drivers/infiniband/hw/ipath/ipath_registers.h
@@ -185,7 +185,7 @@
185#define INFINIPATH_IBCC_LINKINITCMD_SLEEP 3 185#define INFINIPATH_IBCC_LINKINITCMD_SLEEP 3
186#define INFINIPATH_IBCC_LINKINITCMD_SHIFT 16 186#define INFINIPATH_IBCC_LINKINITCMD_SHIFT 16
187#define INFINIPATH_IBCC_LINKCMD_MASK 0x3ULL 187#define INFINIPATH_IBCC_LINKCMD_MASK 0x3ULL
188#define INFINIPATH_IBCC_LINKCMD_INIT 1 /* move to 0x11 */ 188#define INFINIPATH_IBCC_LINKCMD_DOWN 1 /* move to 0x11 */
189#define INFINIPATH_IBCC_LINKCMD_ARMED 2 /* move to 0x21 */ 189#define INFINIPATH_IBCC_LINKCMD_ARMED 2 /* move to 0x21 */
190#define INFINIPATH_IBCC_LINKCMD_ACTIVE 3 /* move to 0x31 */ 190#define INFINIPATH_IBCC_LINKCMD_ACTIVE 3 /* move to 0x31 */
191#define INFINIPATH_IBCC_LINKCMD_SHIFT 18 191#define INFINIPATH_IBCC_LINKCMD_SHIFT 18
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 52b1bebfa744..2490b2d79dbb 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -38,6 +38,7 @@
38#include <net/icmp.h> 38#include <net/icmp.h>
39#include <linux/icmpv6.h> 39#include <linux/icmpv6.h>
40#include <linux/delay.h> 40#include <linux/delay.h>
41#include <linux/vmalloc.h>
41 42
42#include "ipoib.h" 43#include "ipoib.h"
43 44
@@ -637,6 +638,7 @@ static inline int post_send(struct ipoib_dev_priv *priv,
637 priv->tx_sge[0].addr = addr; 638 priv->tx_sge[0].addr = addr;
638 priv->tx_sge[0].length = len; 639 priv->tx_sge[0].length = len;
639 640
641 priv->tx_wr.num_sge = 1;
640 priv->tx_wr.wr_id = wr_id | IPOIB_OP_CM; 642 priv->tx_wr.wr_id = wr_id | IPOIB_OP_CM;
641 643
642 return ib_post_send(tx->qp, &priv->tx_wr, &bad_wr); 644 return ib_post_send(tx->qp, &priv->tx_wr, &bad_wr);
@@ -1030,13 +1032,13 @@ static int ipoib_cm_tx_init(struct ipoib_cm_tx *p, u32 qpn,
1030 struct ipoib_dev_priv *priv = netdev_priv(p->dev); 1032 struct ipoib_dev_priv *priv = netdev_priv(p->dev);
1031 int ret; 1033 int ret;
1032 1034
1033 p->tx_ring = kzalloc(ipoib_sendq_size * sizeof *p->tx_ring, 1035 p->tx_ring = vmalloc(ipoib_sendq_size * sizeof *p->tx_ring);
1034 GFP_KERNEL);
1035 if (!p->tx_ring) { 1036 if (!p->tx_ring) {
1036 ipoib_warn(priv, "failed to allocate tx ring\n"); 1037 ipoib_warn(priv, "failed to allocate tx ring\n");
1037 ret = -ENOMEM; 1038 ret = -ENOMEM;
1038 goto err_tx; 1039 goto err_tx;
1039 } 1040 }
1041 memset(p->tx_ring, 0, ipoib_sendq_size * sizeof *p->tx_ring);
1040 1042
1041 p->qp = ipoib_cm_create_tx_qp(p->dev, p); 1043 p->qp = ipoib_cm_create_tx_qp(p->dev, p);
1042 if (IS_ERR(p->qp)) { 1044 if (IS_ERR(p->qp)) {
@@ -1077,6 +1079,7 @@ err_id:
1077 ib_destroy_qp(p->qp); 1079 ib_destroy_qp(p->qp);
1078err_qp: 1080err_qp:
1079 p->qp = NULL; 1081 p->qp = NULL;
1082 vfree(p->tx_ring);
1080err_tx: 1083err_tx:
1081 return ret; 1084 return ret;
1082} 1085}
@@ -1127,7 +1130,7 @@ timeout:
1127 if (p->qp) 1130 if (p->qp)
1128 ib_destroy_qp(p->qp); 1131 ib_destroy_qp(p->qp);
1129 1132
1130 kfree(p->tx_ring); 1133 vfree(p->tx_ring);
1131 kfree(p); 1134 kfree(p);
1132} 1135}
1133 1136
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index f96477a8ca5a..57282048865c 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -41,6 +41,7 @@
41#include <linux/init.h> 41#include <linux/init.h>
42#include <linux/slab.h> 42#include <linux/slab.h>
43#include <linux/kernel.h> 43#include <linux/kernel.h>
44#include <linux/vmalloc.h>
44 45
45#include <linux/if_arp.h> /* For ARPHRD_xxx */ 46#include <linux/if_arp.h> /* For ARPHRD_xxx */
46 47
@@ -887,13 +888,13 @@ int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port)
887 goto out; 888 goto out;
888 } 889 }
889 890
890 priv->tx_ring = kzalloc(ipoib_sendq_size * sizeof *priv->tx_ring, 891 priv->tx_ring = vmalloc(ipoib_sendq_size * sizeof *priv->tx_ring);
891 GFP_KERNEL);
892 if (!priv->tx_ring) { 892 if (!priv->tx_ring) {
893 printk(KERN_WARNING "%s: failed to allocate TX ring (%d entries)\n", 893 printk(KERN_WARNING "%s: failed to allocate TX ring (%d entries)\n",
894 ca->name, ipoib_sendq_size); 894 ca->name, ipoib_sendq_size);
895 goto out_rx_ring_cleanup; 895 goto out_rx_ring_cleanup;
896 } 896 }
897 memset(priv->tx_ring, 0, ipoib_sendq_size * sizeof *priv->tx_ring);
897 898
898 /* priv->tx_head, tx_tail & tx_outstanding are already 0 */ 899 /* priv->tx_head, tx_tail & tx_outstanding are already 0 */
899 900
@@ -903,7 +904,7 @@ int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port)
903 return 0; 904 return 0;
904 905
905out_tx_ring_cleanup: 906out_tx_ring_cleanup:
906 kfree(priv->tx_ring); 907 vfree(priv->tx_ring);
907 908
908out_rx_ring_cleanup: 909out_rx_ring_cleanup:
909 kfree(priv->rx_ring); 910 kfree(priv->rx_ring);
@@ -928,7 +929,7 @@ void ipoib_dev_cleanup(struct net_device *dev)
928 ipoib_ib_dev_cleanup(dev); 929 ipoib_ib_dev_cleanup(dev);
929 930
930 kfree(priv->rx_ring); 931 kfree(priv->rx_ring);
931 kfree(priv->tx_ring); 932 vfree(priv->tx_ring);
932 933
933 priv->rx_ring = NULL; 934 priv->rx_ring = NULL;
934 priv->tx_ring = NULL; 935 priv->tx_ring = NULL;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index 2628339e3a99..31a53c5bcb13 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -650,7 +650,7 @@ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb)
650 */ 650 */
651 spin_lock(&priv->lock); 651 spin_lock(&priv->lock);
652 652
653 if (!test_bit(IPOIB_MCAST_STARTED, &priv->flags) || 653 if (!test_bit(IPOIB_FLAG_OPER_UP, &priv->flags) ||
654 !priv->broadcast || 654 !priv->broadcast ||
655 !test_bit(IPOIB_MCAST_FLAG_ATTACHED, &priv->broadcast->flags)) { 655 !test_bit(IPOIB_MCAST_FLAG_ATTACHED, &priv->broadcast->flags)) {
656 ++dev->stats.tx_dropped; 656 ++dev->stats.tx_dropped;
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
index 9cef6fcf587b..d4ad6992f776 100644
--- a/drivers/isdn/i4l/isdn_common.c
+++ b/drivers/isdn/i4l/isdn_common.c
@@ -981,13 +981,13 @@ isdn_readbchan_tty(int di, int channel, struct tty_struct *tty, int cisco_hack)
981} 981}
982 982
983 983
984static __inline int 984static inline int
985isdn_minor2drv(int minor) 985isdn_minor2drv(int minor)
986{ 986{
987 return (dev->drvmap[minor]); 987 return (dev->drvmap[minor]);
988} 988}
989 989
990static __inline int 990static inline int
991isdn_minor2chan(int minor) 991isdn_minor2chan(int minor)
992{ 992{
993 return (dev->chanmap[minor]); 993 return (dev->chanmap[minor]);
diff --git a/drivers/isdn/i4l/isdn_v110.c b/drivers/isdn/i4l/isdn_v110.c
index 5484d3c38a57..c5d02b6aafab 100644
--- a/drivers/isdn/i4l/isdn_v110.c
+++ b/drivers/isdn/i4l/isdn_v110.c
@@ -62,7 +62,7 @@ static unsigned char V110_OffMatrix_38400[] =
62 * and to 67452301 when keylen = 2. This is necessary because ordering on 62 * and to 67452301 when keylen = 2. This is necessary because ordering on
63 * the isdn line is the other way. 63 * the isdn line is the other way.
64 */ 64 */
65static __inline unsigned char 65static inline unsigned char
66FlipBits(unsigned char c, int keylen) 66FlipBits(unsigned char c, int keylen)
67{ 67{
68 unsigned char b = c; 68 unsigned char b = c;
diff --git a/drivers/macintosh/via-pmu-backlight.c b/drivers/macintosh/via-pmu-backlight.c
index 741a2e3f4fc6..a348bb0791d3 100644
--- a/drivers/macintosh/via-pmu-backlight.c
+++ b/drivers/macintosh/via-pmu-backlight.c
@@ -17,7 +17,7 @@
17 17
18static struct backlight_ops pmu_backlight_data; 18static struct backlight_ops pmu_backlight_data;
19static DEFINE_SPINLOCK(pmu_backlight_lock); 19static DEFINE_SPINLOCK(pmu_backlight_lock);
20static int sleeping; 20static int sleeping, uses_pmu_bl;
21static u8 bl_curve[FB_BACKLIGHT_LEVELS]; 21static u8 bl_curve[FB_BACKLIGHT_LEVELS];
22 22
23static void pmu_backlight_init_curve(u8 off, u8 min, u8 max) 23static void pmu_backlight_init_curve(u8 off, u8 min, u8 max)
@@ -128,7 +128,7 @@ void pmu_backlight_set_sleep(int sleep)
128 128
129 spin_lock_irqsave(&pmu_backlight_lock, flags); 129 spin_lock_irqsave(&pmu_backlight_lock, flags);
130 sleeping = sleep; 130 sleeping = sleep;
131 if (pmac_backlight) { 131 if (pmac_backlight && uses_pmu_bl) {
132 if (sleep) { 132 if (sleep) {
133 struct adb_request req; 133 struct adb_request req;
134 134
@@ -166,6 +166,7 @@ void __init pmu_backlight_init()
166 printk(KERN_ERR "PMU Backlight registration failed\n"); 166 printk(KERN_ERR "PMU Backlight registration failed\n");
167 return; 167 return;
168 } 168 }
169 uses_pmu_bl = 1;
169 bd->props.max_brightness = FB_BACKLIGHT_LEVELS - 1; 170 bd->props.max_brightness = FB_BACKLIGHT_LEVELS - 1;
170 pmu_backlight_init_curve(0x7F, 0x46, 0x0E); 171 pmu_backlight_init_curve(0x7F, 0x46, 0x0E);
171 172
diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
index ebec663d5d37..d6365a9f0637 100644
--- a/drivers/macintosh/via-pmu.c
+++ b/drivers/macintosh/via-pmu.c
@@ -2528,7 +2528,7 @@ EXPORT_SYMBOL(pmu_wait_complete);
2528EXPORT_SYMBOL(pmu_suspend); 2528EXPORT_SYMBOL(pmu_suspend);
2529EXPORT_SYMBOL(pmu_resume); 2529EXPORT_SYMBOL(pmu_resume);
2530EXPORT_SYMBOL(pmu_unlock); 2530EXPORT_SYMBOL(pmu_unlock);
2531#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32) 2531#if defined(CONFIG_PPC32)
2532EXPORT_SYMBOL(pmu_enable_irled); 2532EXPORT_SYMBOL(pmu_enable_irled);
2533EXPORT_SYMBOL(pmu_battery_count); 2533EXPORT_SYMBOL(pmu_battery_count);
2534EXPORT_SYMBOL(pmu_batteries); 2534EXPORT_SYMBOL(pmu_batteries);
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 982e27b86d10..962817e49fba 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -108,6 +108,7 @@ config ACER_WMI
108 depends on ACPI 108 depends on ACPI
109 depends on LEDS_CLASS 109 depends on LEDS_CLASS
110 depends on BACKLIGHT_CLASS_DEVICE 110 depends on BACKLIGHT_CLASS_DEVICE
111 depends on SERIO_I8042
111 select ACPI_WMI 112 select ACPI_WMI
112 ---help--- 113 ---help---
113 This is a driver for newer Acer (and Wistron) laptops. It adds 114 This is a driver for newer Acer (and Wistron) laptops. It adds
diff --git a/drivers/misc/acer-wmi.c b/drivers/misc/acer-wmi.c
index 74d12b4a3abd..dd13a3749927 100644
--- a/drivers/misc/acer-wmi.c
+++ b/drivers/misc/acer-wmi.c
@@ -219,6 +219,15 @@ static struct dmi_system_id acer_quirks[] = {
219 }, 219 },
220 { 220 {
221 .callback = dmi_matched, 221 .callback = dmi_matched,
222 .ident = "Acer Aspire 3610",
223 .matches = {
224 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
225 DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 3610"),
226 },
227 .driver_data = &quirk_acer_travelmate_2490,
228 },
229 {
230 .callback = dmi_matched,
222 .ident = "Acer Aspire 5100", 231 .ident = "Acer Aspire 5100",
223 .matches = { 232 .matches = {
224 DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 233 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
@@ -228,6 +237,15 @@ static struct dmi_system_id acer_quirks[] = {
228 }, 237 },
229 { 238 {
230 .callback = dmi_matched, 239 .callback = dmi_matched,
240 .ident = "Acer Aspire 5610",
241 .matches = {
242 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
243 DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5610"),
244 },
245 .driver_data = &quirk_acer_travelmate_2490,
246 },
247 {
248 .callback = dmi_matched,
231 .ident = "Acer Aspire 5630", 249 .ident = "Acer Aspire 5630",
232 .matches = { 250 .matches = {
233 DMI_MATCH(DMI_SYS_VENDOR, "Acer"), 251 DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
@@ -761,11 +779,11 @@ enum led_brightness value)
761} 779}
762 780
763static struct led_classdev mail_led = { 781static struct led_classdev mail_led = {
764 .name = "acer-mail:green", 782 .name = "acer-wmi::mail",
765 .brightness_set = mail_led_set, 783 .brightness_set = mail_led_set,
766}; 784};
767 785
768static int __init acer_led_init(struct device *dev) 786static int __devinit acer_led_init(struct device *dev)
769{ 787{
770 return led_classdev_register(dev, &mail_led); 788 return led_classdev_register(dev, &mail_led);
771} 789}
@@ -798,7 +816,7 @@ static struct backlight_ops acer_bl_ops = {
798 .update_status = update_bl_status, 816 .update_status = update_bl_status,
799}; 817};
800 818
801static int __init acer_backlight_init(struct device *dev) 819static int __devinit acer_backlight_init(struct device *dev)
802{ 820{
803 struct backlight_device *bd; 821 struct backlight_device *bd;
804 822
@@ -817,7 +835,7 @@ static int __init acer_backlight_init(struct device *dev)
817 return 0; 835 return 0;
818} 836}
819 837
820static void __exit acer_backlight_exit(void) 838static void acer_backlight_exit(void)
821{ 839{
822 backlight_device_unregister(acer_backlight_device); 840 backlight_device_unregister(acer_backlight_device);
823} 841}
@@ -1052,11 +1070,12 @@ static int __init acer_wmi_init(void)
1052 1070
1053 if (wmi_has_guid(WMID_GUID2) && interface) { 1071 if (wmi_has_guid(WMID_GUID2) && interface) {
1054 if (ACPI_FAILURE(WMID_set_capabilities())) { 1072 if (ACPI_FAILURE(WMID_set_capabilities())) {
1055 printk(ACER_ERR "Unable to detect available devices\n"); 1073 printk(ACER_ERR "Unable to detect available WMID "
1074 "devices\n");
1056 return -ENODEV; 1075 return -ENODEV;
1057 } 1076 }
1058 } else if (!wmi_has_guid(WMID_GUID2) && interface) { 1077 } else if (!wmi_has_guid(WMID_GUID2) && interface) {
1059 printk(ACER_ERR "Unable to detect available devices\n"); 1078 printk(ACER_ERR "No WMID device detection method found\n");
1060 return -ENODEV; 1079 return -ENODEV;
1061 } 1080 }
1062 1081
@@ -1064,21 +1083,20 @@ static int __init acer_wmi_init(void)
1064 interface = &AMW0_interface; 1083 interface = &AMW0_interface;
1065 1084
1066 if (ACPI_FAILURE(AMW0_set_capabilities())) { 1085 if (ACPI_FAILURE(AMW0_set_capabilities())) {
1067 printk(ACER_ERR "Unable to detect available devices\n"); 1086 printk(ACER_ERR "Unable to detect available AMW0 "
1087 "devices\n");
1068 return -ENODEV; 1088 return -ENODEV;
1069 } 1089 }
1070 } 1090 }
1071 1091
1072 if (wmi_has_guid(AMW0_GUID1)) { 1092 if (wmi_has_guid(AMW0_GUID1))
1073 if (ACPI_FAILURE(AMW0_find_mailled())) 1093 AMW0_find_mailled();
1074 printk(ACER_ERR "Unable to detect mail LED\n");
1075 }
1076 1094
1077 find_quirks(); 1095 find_quirks();
1078 1096
1079 if (!interface) { 1097 if (!interface) {
1080 printk(ACER_ERR "No or unsupported WMI interface, unable to "); 1098 printk(ACER_ERR "No or unsupported WMI interface, unable to "
1081 printk(KERN_CONT "load.\n"); 1099 "load\n");
1082 return -ENODEV; 1100 return -ENODEV;
1083 } 1101 }
1084 1102
diff --git a/drivers/misc/sony-laptop.c b/drivers/misc/sony-laptop.c
index 899e3f75f288..02ff3d19b1cc 100644
--- a/drivers/misc/sony-laptop.c
+++ b/drivers/misc/sony-laptop.c
@@ -315,7 +315,7 @@ static void sony_laptop_report_input_event(u8 event)
315 break; 315 break;
316 316
317 default: 317 default:
318 if (event > ARRAY_SIZE(sony_laptop_input_index)) { 318 if (event >= ARRAY_SIZE(sony_laptop_input_index)) {
319 dprintk("sony_laptop_report_input_event, event not known: %d\n", event); 319 dprintk("sony_laptop_report_input_event, event not known: %d\n", event);
320 break; 320 break;
321 } 321 }
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index a0f0e605d630..fe7b5ec09708 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -2366,15 +2366,15 @@ config GELIC_NET
2366 module will be called ps3_gelic. 2366 module will be called ps3_gelic.
2367 2367
2368config GELIC_WIRELESS 2368config GELIC_WIRELESS
2369 bool "PS3 Wireless support" 2369 bool "PS3 Wireless support"
2370 depends on GELIC_NET 2370 depends on GELIC_NET
2371 select WIRELESS_EXT 2371 select WIRELESS_EXT
2372 help 2372 help
2373 This option adds the support for the wireless feature of PS3. 2373 This option adds the support for the wireless feature of PS3.
2374 If you have the wireless-less model of PS3 or have no plan to 2374 If you have the wireless-less model of PS3 or have no plan to
2375 use wireless feature, disabling this option saves memory. As 2375 use wireless feature, disabling this option saves memory. As
2376 the driver automatically distinguishes the models, you can 2376 the driver automatically distinguishes the models, you can
2377 safely enable this option even if you have a wireless-less model. 2377 safely enable this option even if you have a wireless-less model.
2378 2378
2379config GIANFAR 2379config GIANFAR
2380 tristate "Gianfar Ethernet" 2380 tristate "Gianfar Ethernet"
@@ -2519,7 +2519,7 @@ config CHELSIO_T3
2519 2519
2520config EHEA 2520config EHEA
2521 tristate "eHEA Ethernet support" 2521 tristate "eHEA Ethernet support"
2522 depends on IBMEBUS && INET 2522 depends on IBMEBUS && INET && SPARSEMEM
2523 select INET_LRO 2523 select INET_LRO
2524 ---help--- 2524 ---help---
2525 This driver supports the IBM pSeries eHEA ethernet adapter. 2525 This driver supports the IBM pSeries eHEA ethernet adapter.
diff --git a/drivers/net/ac3200.c b/drivers/net/ac3200.c
index 5136d94923aa..b1448637107f 100644
--- a/drivers/net/ac3200.c
+++ b/drivers/net/ac3200.c
@@ -369,7 +369,7 @@ MODULE_PARM_DESC(mem, "Memory base address(es)");
369MODULE_DESCRIPTION("Ansel AC3200 EISA ethernet driver"); 369MODULE_DESCRIPTION("Ansel AC3200 EISA ethernet driver");
370MODULE_LICENSE("GPL"); 370MODULE_LICENSE("GPL");
371 371
372int __init init_module(void) 372static int __init ac3200_module_init(void)
373{ 373{
374 struct net_device *dev; 374 struct net_device *dev;
375 int this_dev, found = 0; 375 int this_dev, found = 0;
@@ -404,8 +404,7 @@ static void cleanup_card(struct net_device *dev)
404 iounmap(ei_status.mem); 404 iounmap(ei_status.mem);
405} 405}
406 406
407void __exit 407static void __exit ac3200_module_exit(void)
408cleanup_module(void)
409{ 408{
410 int this_dev; 409 int this_dev;
411 410
@@ -418,4 +417,6 @@ cleanup_module(void)
418 } 417 }
419 } 418 }
420} 419}
420module_init(ac3200_module_init);
421module_exit(ac3200_module_exit);
421#endif /* MODULE */ 422#endif /* MODULE */
diff --git a/drivers/net/apne.c b/drivers/net/apne.c
index c12cbdf368b1..47a8275d3962 100644
--- a/drivers/net/apne.c
+++ b/drivers/net/apne.c
@@ -569,7 +569,7 @@ static irqreturn_t apne_interrupt(int irq, void *dev_id)
569#ifdef MODULE 569#ifdef MODULE
570static struct net_device *apne_dev; 570static struct net_device *apne_dev;
571 571
572int __init init_module(void) 572static int __init apne_module_init(void)
573{ 573{
574 apne_dev = apne_probe(-1); 574 apne_dev = apne_probe(-1);
575 if (IS_ERR(apne_dev)) 575 if (IS_ERR(apne_dev))
@@ -577,7 +577,7 @@ int __init init_module(void)
577 return 0; 577 return 0;
578} 578}
579 579
580void __exit cleanup_module(void) 580static void __exit apne_module_exit(void)
581{ 581{
582 unregister_netdev(apne_dev); 582 unregister_netdev(apne_dev);
583 583
@@ -591,7 +591,8 @@ void __exit cleanup_module(void)
591 591
592 free_netdev(apne_dev); 592 free_netdev(apne_dev);
593} 593}
594 594module_init(apne_module_init);
595module_exit(apne_module_exit);
595#endif 596#endif
596 597
597static int init_pcmcia(void) 598static int init_pcmcia(void)
diff --git a/drivers/net/appletalk/ltpc.c b/drivers/net/appletalk/ltpc.c
index 6ab2c2d4d673..fef5560bc7a2 100644
--- a/drivers/net/appletalk/ltpc.c
+++ b/drivers/net/appletalk/ltpc.c
@@ -1252,7 +1252,7 @@ module_param(irq, int, 0);
1252module_param(dma, int, 0); 1252module_param(dma, int, 0);
1253 1253
1254 1254
1255int __init init_module(void) 1255static int __init ltpc_module_init(void)
1256{ 1256{
1257 if(io == 0) 1257 if(io == 0)
1258 printk(KERN_NOTICE 1258 printk(KERN_NOTICE
@@ -1263,6 +1263,7 @@ int __init init_module(void)
1263 return PTR_ERR(dev_ltpc); 1263 return PTR_ERR(dev_ltpc);
1264 return 0; 1264 return 0;
1265} 1265}
1266module_init(ltpc_module_init);
1266#endif 1267#endif
1267 1268
1268static void __exit ltpc_cleanup(void) 1269static void __exit ltpc_cleanup(void)
diff --git a/drivers/net/arcnet/capmode.c b/drivers/net/arcnet/capmode.c
index cc4610db6395..02cb8f1c1148 100644
--- a/drivers/net/arcnet/capmode.c
+++ b/drivers/net/arcnet/capmode.c
@@ -80,17 +80,19 @@ void arcnet_cap_init(void)
80 80
81#ifdef MODULE 81#ifdef MODULE
82 82
83int __init init_module(void) 83static int __init capmode_module_init(void)
84{ 84{
85 printk(VERSION); 85 printk(VERSION);
86 arcnet_cap_init(); 86 arcnet_cap_init();
87 return 0; 87 return 0;
88} 88}
89 89
90void cleanup_module(void) 90static void __exit capmode_module_exit(void)
91{ 91{
92 arcnet_unregister_proto(&capmode_proto); 92 arcnet_unregister_proto(&capmode_proto);
93} 93}
94module_init(capmode_module_init);
95module_exit(capmode_module_exit);
94 96
95MODULE_LICENSE("GPL"); 97MODULE_LICENSE("GPL");
96#endif /* MODULE */ 98#endif /* MODULE */
diff --git a/drivers/net/atarilance.c b/drivers/net/atarilance.c
index b74dbeef8050..13c293b286de 100644
--- a/drivers/net/atarilance.c
+++ b/drivers/net/atarilance.c
@@ -336,8 +336,6 @@ struct lance_addr {
336 336
337/***************************** Prototypes *****************************/ 337/***************************** Prototypes *****************************/
338 338
339static int addr_accessible( volatile void *regp, int wordflag, int
340 writeflag );
341static unsigned long lance_probe1( struct net_device *dev, struct lance_addr 339static unsigned long lance_probe1( struct net_device *dev, struct lance_addr
342 *init_rec ); 340 *init_rec );
343static int lance_open( struct net_device *dev ); 341static int lance_open( struct net_device *dev );
@@ -406,7 +404,8 @@ struct net_device * __init atarilance_probe(int unit)
406 404
407/* Derived from hwreg_present() in atari/config.c: */ 405/* Derived from hwreg_present() in atari/config.c: */
408 406
409static int __init addr_accessible( volatile void *regp, int wordflag, int writeflag ) 407static noinline int __init addr_accessible(volatile void *regp, int wordflag,
408 int writeflag)
410{ 409{
411 int ret; 410 int ret;
412 long flags; 411 long flags;
diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index 36ba6dc96acc..cdf3090a1885 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -2782,16 +2782,13 @@ static void __devexit e100_remove(struct pci_dev *pdev)
2782 } 2782 }
2783} 2783}
2784 2784
2785#ifdef CONFIG_PM
2786static int e100_suspend(struct pci_dev *pdev, pm_message_t state) 2785static int e100_suspend(struct pci_dev *pdev, pm_message_t state)
2787{ 2786{
2788 struct net_device *netdev = pci_get_drvdata(pdev); 2787 struct net_device *netdev = pci_get_drvdata(pdev);
2789 struct nic *nic = netdev_priv(netdev); 2788 struct nic *nic = netdev_priv(netdev);
2790 2789
2791 if (netif_running(netdev)) 2790 if (netif_running(netdev))
2792 napi_disable(&nic->napi); 2791 e100_down(nic);
2793 del_timer_sync(&nic->watchdog);
2794 netif_carrier_off(nic->netdev);
2795 netif_device_detach(netdev); 2792 netif_device_detach(netdev);
2796 2793
2797 pci_save_state(pdev); 2794 pci_save_state(pdev);
@@ -2804,14 +2801,13 @@ static int e100_suspend(struct pci_dev *pdev, pm_message_t state)
2804 pci_enable_wake(pdev, PCI_D3cold, 0); 2801 pci_enable_wake(pdev, PCI_D3cold, 0);
2805 } 2802 }
2806 2803
2807 free_irq(pdev->irq, netdev);
2808
2809 pci_disable_device(pdev); 2804 pci_disable_device(pdev);
2810 pci_set_power_state(pdev, PCI_D3hot); 2805 pci_set_power_state(pdev, PCI_D3hot);
2811 2806
2812 return 0; 2807 return 0;
2813} 2808}
2814 2809
2810#ifdef CONFIG_PM
2815static int e100_resume(struct pci_dev *pdev) 2811static int e100_resume(struct pci_dev *pdev)
2816{ 2812{
2817 struct net_device *netdev = pci_get_drvdata(pdev); 2813 struct net_device *netdev = pci_get_drvdata(pdev);
@@ -2832,26 +2828,7 @@ static int e100_resume(struct pci_dev *pdev)
2832 2828
2833static void e100_shutdown(struct pci_dev *pdev) 2829static void e100_shutdown(struct pci_dev *pdev)
2834{ 2830{
2835 struct net_device *netdev = pci_get_drvdata(pdev); 2831 e100_suspend(pdev, PMSG_SUSPEND);
2836 struct nic *nic = netdev_priv(netdev);
2837
2838 if (netif_running(netdev))
2839 napi_disable(&nic->napi);
2840 del_timer_sync(&nic->watchdog);
2841 netif_carrier_off(nic->netdev);
2842
2843 if ((nic->flags & wol_magic) | e100_asf(nic)) {
2844 pci_enable_wake(pdev, PCI_D3hot, 1);
2845 pci_enable_wake(pdev, PCI_D3cold, 1);
2846 } else {
2847 pci_enable_wake(pdev, PCI_D3hot, 0);
2848 pci_enable_wake(pdev, PCI_D3cold, 0);
2849 }
2850
2851 free_irq(pdev->irq, netdev);
2852
2853 pci_disable_device(pdev);
2854 pci_set_power_state(pdev, PCI_D3hot);
2855} 2832}
2856 2833
2857/* ------------------ PCI Error Recovery infrastructure -------------- */ 2834/* ------------------ PCI Error Recovery infrastructure -------------- */
diff --git a/drivers/net/enc28j60.c b/drivers/net/enc28j60.c
index 0809a6a5a286..46a90e9ec563 100644
--- a/drivers/net/enc28j60.c
+++ b/drivers/net/enc28j60.c
@@ -900,7 +900,7 @@ static void enc28j60_hw_rx(struct net_device *ndev)
900 if (RSV_GETBIT(rxstat, RSV_LENCHECKERR)) 900 if (RSV_GETBIT(rxstat, RSV_LENCHECKERR))
901 ndev->stats.rx_frame_errors++; 901 ndev->stats.rx_frame_errors++;
902 } else { 902 } else {
903 skb = dev_alloc_skb(len); 903 skb = dev_alloc_skb(len + NET_IP_ALIGN);
904 if (!skb) { 904 if (!skb) {
905 if (netif_msg_rx_err(priv)) 905 if (netif_msg_rx_err(priv))
906 dev_err(&ndev->dev, 906 dev_err(&ndev->dev,
@@ -908,6 +908,7 @@ static void enc28j60_hw_rx(struct net_device *ndev)
908 ndev->stats.rx_dropped++; 908 ndev->stats.rx_dropped++;
909 } else { 909 } else {
910 skb->dev = ndev; 910 skb->dev = ndev;
911 skb_reserve(skb, NET_IP_ALIGN);
911 /* copy the packet from the receive buffer */ 912 /* copy the packet from the receive buffer */
912 enc28j60_mem_read(priv, priv->next_pk_ptr + sizeof(rsv), 913 enc28j60_mem_read(priv, priv->next_pk_ptr + sizeof(rsv),
913 len, skb_put(skb, len)); 914 len, skb_put(skb, len));
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c
index 23d0a4afe0e1..c2095ce531c9 100644
--- a/drivers/net/ixgbe/ixgbe_main.c
+++ b/drivers/net/ixgbe/ixgbe_main.c
@@ -2133,7 +2133,7 @@ static void ixgbe_watchdog(unsigned long data)
2133 (link_speed == IXGBE_LINK_SPEED_10GB_FULL ? 2133 (link_speed == IXGBE_LINK_SPEED_10GB_FULL ?
2134 "10 Gbps" : 2134 "10 Gbps" :
2135 (link_speed == IXGBE_LINK_SPEED_1GB_FULL ? 2135 (link_speed == IXGBE_LINK_SPEED_1GB_FULL ?
2136 "1 Gpbs" : "unknown speed")), 2136 "1 Gbps" : "unknown speed")),
2137 ((FLOW_RX && FLOW_TX) ? "RX/TX" : 2137 ((FLOW_RX && FLOW_TX) ? "RX/TX" :
2138 (FLOW_RX ? "RX" : 2138 (FLOW_RX ? "RX" :
2139 (FLOW_TX ? "TX" : "None")))); 2139 (FLOW_TX ? "TX" : "None"))));
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c
index b528ce77c406..771139e283af 100644
--- a/drivers/net/mv643xx_eth.c
+++ b/drivers/net/mv643xx_eth.c
@@ -2104,6 +2104,7 @@ MODULE_LICENSE("GPL");
2104MODULE_AUTHOR( "Rabeeh Khoury, Assaf Hoffman, Matthew Dharm, Manish Lachwani" 2104MODULE_AUTHOR( "Rabeeh Khoury, Assaf Hoffman, Matthew Dharm, Manish Lachwani"
2105 " and Dale Farnsworth"); 2105 " and Dale Farnsworth");
2106MODULE_DESCRIPTION("Ethernet driver for Marvell MV643XX"); 2106MODULE_DESCRIPTION("Ethernet driver for Marvell MV643XX");
2107MODULE_ALIAS("platform:mv643xx_eth");
2107 2108
2108/* 2109/*
2109 * The second part is the low level driver of the gigE ethernet ports. 2110 * The second part is the low level driver of the gigE ethernet ports.
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c
index e8a63e483a2b..ce95c5d168fe 100644
--- a/drivers/net/pcmcia/axnet_cs.c
+++ b/drivers/net/pcmcia/axnet_cs.c
@@ -1268,7 +1268,7 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id)
1268 } 1268 }
1269 } 1269 }
1270 1270
1271 if (interrupts && ei_debug) 1271 if (interrupts && ei_debug > 3)
1272 { 1272 {
1273 handled = 1; 1273 handled = 1;
1274 if (nr_serviced >= MAX_SERVICE) 1274 if (nr_serviced >= MAX_SERVICE)
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index f4ca0591231d..3ac8529bb92c 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -67,6 +67,7 @@ config REALTEK_PHY
67 67
68config FIXED_PHY 68config FIXED_PHY
69 bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs" 69 bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs"
70 depends on PHYLIB=y
70 ---help--- 71 ---help---
71 Adds the platform "fixed" MDIO Bus to cover the boards that use 72 Adds the platform "fixed" MDIO Bus to cover the boards that use
72 PHYs that are not connected to the real MDIO bus. 73 PHYs that are not connected to the real MDIO bus.
diff --git a/drivers/net/phy/davicom.c b/drivers/net/phy/davicom.c
index 7ed632db00d7..d926168bc780 100644
--- a/drivers/net/phy/davicom.c
+++ b/drivers/net/phy/davicom.c
@@ -37,6 +37,7 @@
37 37
38#define MII_DM9161_SCR 0x10 38#define MII_DM9161_SCR 0x10
39#define MII_DM9161_SCR_INIT 0x0610 39#define MII_DM9161_SCR_INIT 0x0610
40#define MII_DM9161_SCR_RMII 0x0100
40 41
41/* DM9161 Interrupt Register */ 42/* DM9161 Interrupt Register */
42#define MII_DM9161_INTR 0x15 43#define MII_DM9161_INTR 0x15
@@ -103,7 +104,7 @@ static int dm9161_config_aneg(struct phy_device *phydev)
103 104
104static int dm9161_config_init(struct phy_device *phydev) 105static int dm9161_config_init(struct phy_device *phydev)
105{ 106{
106 int err; 107 int err, temp;
107 108
108 /* Isolate the PHY */ 109 /* Isolate the PHY */
109 err = phy_write(phydev, MII_BMCR, BMCR_ISOLATE); 110 err = phy_write(phydev, MII_BMCR, BMCR_ISOLATE);
@@ -111,9 +112,19 @@ static int dm9161_config_init(struct phy_device *phydev)
111 if (err < 0) 112 if (err < 0)
112 return err; 113 return err;
113 114
114 /* Do not bypass the scrambler/descrambler */ 115 switch (phydev->interface) {
115 err = phy_write(phydev, MII_DM9161_SCR, MII_DM9161_SCR_INIT); 116 case PHY_INTERFACE_MODE_MII:
117 temp = MII_DM9161_SCR_INIT;
118 break;
119 case PHY_INTERFACE_MODE_RMII:
120 temp = MII_DM9161_SCR_INIT | MII_DM9161_SCR_RMII;
121 break;
122 default:
123 return -EINVAL;
124 }
116 125
126 /* Do not bypass the scrambler/descrambler */
127 err = phy_write(phydev, MII_DM9161_SCR, temp);
117 if (err < 0) 128 if (err < 0)
118 return err; 129 return err;
119 130
diff --git a/drivers/net/pppol2tp.c b/drivers/net/pppol2tp.c
index 86e5dba079fe..3d10ca050b79 100644
--- a/drivers/net/pppol2tp.c
+++ b/drivers/net/pppol2tp.c
@@ -302,14 +302,14 @@ pppol2tp_session_find(struct pppol2tp_tunnel *tunnel, u16 session_id)
302 struct pppol2tp_session *session; 302 struct pppol2tp_session *session;
303 struct hlist_node *walk; 303 struct hlist_node *walk;
304 304
305 read_lock(&tunnel->hlist_lock); 305 read_lock_bh(&tunnel->hlist_lock);
306 hlist_for_each_entry(session, walk, session_list, hlist) { 306 hlist_for_each_entry(session, walk, session_list, hlist) {
307 if (session->tunnel_addr.s_session == session_id) { 307 if (session->tunnel_addr.s_session == session_id) {
308 read_unlock(&tunnel->hlist_lock); 308 read_unlock_bh(&tunnel->hlist_lock);
309 return session; 309 return session;
310 } 310 }
311 } 311 }
312 read_unlock(&tunnel->hlist_lock); 312 read_unlock_bh(&tunnel->hlist_lock);
313 313
314 return NULL; 314 return NULL;
315} 315}
@@ -320,14 +320,14 @@ static struct pppol2tp_tunnel *pppol2tp_tunnel_find(u16 tunnel_id)
320{ 320{
321 struct pppol2tp_tunnel *tunnel = NULL; 321 struct pppol2tp_tunnel *tunnel = NULL;
322 322
323 read_lock(&pppol2tp_tunnel_list_lock); 323 read_lock_bh(&pppol2tp_tunnel_list_lock);
324 list_for_each_entry(tunnel, &pppol2tp_tunnel_list, list) { 324 list_for_each_entry(tunnel, &pppol2tp_tunnel_list, list) {
325 if (tunnel->stats.tunnel_id == tunnel_id) { 325 if (tunnel->stats.tunnel_id == tunnel_id) {
326 read_unlock(&pppol2tp_tunnel_list_lock); 326 read_unlock_bh(&pppol2tp_tunnel_list_lock);
327 return tunnel; 327 return tunnel;
328 } 328 }
329 } 329 }
330 read_unlock(&pppol2tp_tunnel_list_lock); 330 read_unlock_bh(&pppol2tp_tunnel_list_lock);
331 331
332 return NULL; 332 return NULL;
333} 333}
@@ -342,10 +342,11 @@ static struct pppol2tp_tunnel *pppol2tp_tunnel_find(u16 tunnel_id)
342static void pppol2tp_recv_queue_skb(struct pppol2tp_session *session, struct sk_buff *skb) 342static void pppol2tp_recv_queue_skb(struct pppol2tp_session *session, struct sk_buff *skb)
343{ 343{
344 struct sk_buff *skbp; 344 struct sk_buff *skbp;
345 struct sk_buff *tmp;
345 u16 ns = PPPOL2TP_SKB_CB(skb)->ns; 346 u16 ns = PPPOL2TP_SKB_CB(skb)->ns;
346 347
347 spin_lock(&session->reorder_q.lock); 348 spin_lock_bh(&session->reorder_q.lock);
348 skb_queue_walk(&session->reorder_q, skbp) { 349 skb_queue_walk_safe(&session->reorder_q, skbp, tmp) {
349 if (PPPOL2TP_SKB_CB(skbp)->ns > ns) { 350 if (PPPOL2TP_SKB_CB(skbp)->ns > ns) {
350 __skb_insert(skb, skbp->prev, skbp, &session->reorder_q); 351 __skb_insert(skb, skbp->prev, skbp, &session->reorder_q);
351 PRINTK(session->debug, PPPOL2TP_MSG_SEQ, KERN_DEBUG, 352 PRINTK(session->debug, PPPOL2TP_MSG_SEQ, KERN_DEBUG,
@@ -360,7 +361,7 @@ static void pppol2tp_recv_queue_skb(struct pppol2tp_session *session, struct sk_
360 __skb_queue_tail(&session->reorder_q, skb); 361 __skb_queue_tail(&session->reorder_q, skb);
361 362
362out: 363out:
363 spin_unlock(&session->reorder_q.lock); 364 spin_unlock_bh(&session->reorder_q.lock);
364} 365}
365 366
366/* Dequeue a single skb. 367/* Dequeue a single skb.
@@ -371,10 +372,9 @@ static void pppol2tp_recv_dequeue_skb(struct pppol2tp_session *session, struct s
371 int length = PPPOL2TP_SKB_CB(skb)->length; 372 int length = PPPOL2TP_SKB_CB(skb)->length;
372 struct sock *session_sock = NULL; 373 struct sock *session_sock = NULL;
373 374
374 /* We're about to requeue the skb, so unlink it and return resources 375 /* We're about to requeue the skb, so return resources
375 * to its current owner (a socket receive buffer). 376 * to its current owner (a socket receive buffer).
376 */ 377 */
377 skb_unlink(skb, &session->reorder_q);
378 skb_orphan(skb); 378 skb_orphan(skb);
379 379
380 tunnel->stats.rx_packets++; 380 tunnel->stats.rx_packets++;
@@ -442,7 +442,7 @@ static void pppol2tp_recv_dequeue(struct pppol2tp_session *session)
442 * expect to send up next, dequeue it and any other 442 * expect to send up next, dequeue it and any other
443 * in-sequence packets behind it. 443 * in-sequence packets behind it.
444 */ 444 */
445 spin_lock(&session->reorder_q.lock); 445 spin_lock_bh(&session->reorder_q.lock);
446 skb_queue_walk_safe(&session->reorder_q, skb, tmp) { 446 skb_queue_walk_safe(&session->reorder_q, skb, tmp) {
447 if (time_after(jiffies, PPPOL2TP_SKB_CB(skb)->expires)) { 447 if (time_after(jiffies, PPPOL2TP_SKB_CB(skb)->expires)) {
448 session->stats.rx_seq_discards++; 448 session->stats.rx_seq_discards++;
@@ -470,13 +470,18 @@ static void pppol2tp_recv_dequeue(struct pppol2tp_session *session)
470 goto out; 470 goto out;
471 } 471 }
472 } 472 }
473 spin_unlock(&session->reorder_q.lock); 473 __skb_unlink(skb, &session->reorder_q);
474
475 /* Process the skb. We release the queue lock while we
476 * do so to let other contexts process the queue.
477 */
478 spin_unlock_bh(&session->reorder_q.lock);
474 pppol2tp_recv_dequeue_skb(session, skb); 479 pppol2tp_recv_dequeue_skb(session, skb);
475 spin_lock(&session->reorder_q.lock); 480 spin_lock_bh(&session->reorder_q.lock);
476 } 481 }
477 482
478out: 483out:
479 spin_unlock(&session->reorder_q.lock); 484 spin_unlock_bh(&session->reorder_q.lock);
480} 485}
481 486
482/* Internal receive frame. Do the real work of receiving an L2TP data frame 487/* Internal receive frame. Do the real work of receiving an L2TP data frame
@@ -1059,7 +1064,7 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
1059 1064
1060 /* Get routing info from the tunnel socket */ 1065 /* Get routing info from the tunnel socket */
1061 dst_release(skb->dst); 1066 dst_release(skb->dst);
1062 skb->dst = sk_dst_get(sk_tun); 1067 skb->dst = dst_clone(__sk_dst_get(sk_tun));
1063 skb_orphan(skb); 1068 skb_orphan(skb);
1064 skb->sk = sk_tun; 1069 skb->sk = sk_tun;
1065 1070
@@ -1107,7 +1112,7 @@ static void pppol2tp_tunnel_closeall(struct pppol2tp_tunnel *tunnel)
1107 PRINTK(tunnel->debug, PPPOL2TP_MSG_CONTROL, KERN_INFO, 1112 PRINTK(tunnel->debug, PPPOL2TP_MSG_CONTROL, KERN_INFO,
1108 "%s: closing all sessions...\n", tunnel->name); 1113 "%s: closing all sessions...\n", tunnel->name);
1109 1114
1110 write_lock(&tunnel->hlist_lock); 1115 write_lock_bh(&tunnel->hlist_lock);
1111 for (hash = 0; hash < PPPOL2TP_HASH_SIZE; hash++) { 1116 for (hash = 0; hash < PPPOL2TP_HASH_SIZE; hash++) {
1112again: 1117again:
1113 hlist_for_each_safe(walk, tmp, &tunnel->session_hlist[hash]) { 1118 hlist_for_each_safe(walk, tmp, &tunnel->session_hlist[hash]) {
@@ -1129,7 +1134,7 @@ again:
1129 * disappear as we're jumping between locks. 1134 * disappear as we're jumping between locks.
1130 */ 1135 */
1131 sock_hold(sk); 1136 sock_hold(sk);
1132 write_unlock(&tunnel->hlist_lock); 1137 write_unlock_bh(&tunnel->hlist_lock);
1133 lock_sock(sk); 1138 lock_sock(sk);
1134 1139
1135 if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND)) { 1140 if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND)) {
@@ -1154,11 +1159,11 @@ again:
1154 * list so we are guaranteed to make forward 1159 * list so we are guaranteed to make forward
1155 * progress. 1160 * progress.
1156 */ 1161 */
1157 write_lock(&tunnel->hlist_lock); 1162 write_lock_bh(&tunnel->hlist_lock);
1158 goto again; 1163 goto again;
1159 } 1164 }
1160 } 1165 }
1161 write_unlock(&tunnel->hlist_lock); 1166 write_unlock_bh(&tunnel->hlist_lock);
1162} 1167}
1163 1168
1164/* Really kill the tunnel. 1169/* Really kill the tunnel.
@@ -1167,9 +1172,9 @@ again:
1167static void pppol2tp_tunnel_free(struct pppol2tp_tunnel *tunnel) 1172static void pppol2tp_tunnel_free(struct pppol2tp_tunnel *tunnel)
1168{ 1173{
1169 /* Remove from socket list */ 1174 /* Remove from socket list */
1170 write_lock(&pppol2tp_tunnel_list_lock); 1175 write_lock_bh(&pppol2tp_tunnel_list_lock);
1171 list_del_init(&tunnel->list); 1176 list_del_init(&tunnel->list);
1172 write_unlock(&pppol2tp_tunnel_list_lock); 1177 write_unlock_bh(&pppol2tp_tunnel_list_lock);
1173 1178
1174 atomic_dec(&pppol2tp_tunnel_count); 1179 atomic_dec(&pppol2tp_tunnel_count);
1175 kfree(tunnel); 1180 kfree(tunnel);
@@ -1245,9 +1250,9 @@ static void pppol2tp_session_destruct(struct sock *sk)
1245 /* Delete the session socket from the 1250 /* Delete the session socket from the
1246 * hash 1251 * hash
1247 */ 1252 */
1248 write_lock(&tunnel->hlist_lock); 1253 write_lock_bh(&tunnel->hlist_lock);
1249 hlist_del_init(&session->hlist); 1254 hlist_del_init(&session->hlist);
1250 write_unlock(&tunnel->hlist_lock); 1255 write_unlock_bh(&tunnel->hlist_lock);
1251 1256
1252 atomic_dec(&pppol2tp_session_count); 1257 atomic_dec(&pppol2tp_session_count);
1253 } 1258 }
@@ -1392,9 +1397,9 @@ static struct sock *pppol2tp_prepare_tunnel_socket(int fd, u16 tunnel_id,
1392 1397
1393 /* Add tunnel to our list */ 1398 /* Add tunnel to our list */
1394 INIT_LIST_HEAD(&tunnel->list); 1399 INIT_LIST_HEAD(&tunnel->list);
1395 write_lock(&pppol2tp_tunnel_list_lock); 1400 write_lock_bh(&pppol2tp_tunnel_list_lock);
1396 list_add(&tunnel->list, &pppol2tp_tunnel_list); 1401 list_add(&tunnel->list, &pppol2tp_tunnel_list);
1397 write_unlock(&pppol2tp_tunnel_list_lock); 1402 write_unlock_bh(&pppol2tp_tunnel_list_lock);
1398 atomic_inc(&pppol2tp_tunnel_count); 1403 atomic_inc(&pppol2tp_tunnel_count);
1399 1404
1400 /* Bump the reference count. The tunnel context is deleted 1405 /* Bump the reference count. The tunnel context is deleted
@@ -1599,11 +1604,11 @@ static int pppol2tp_connect(struct socket *sock, struct sockaddr *uservaddr,
1599 sk->sk_user_data = session; 1604 sk->sk_user_data = session;
1600 1605
1601 /* Add session to the tunnel's hash list */ 1606 /* Add session to the tunnel's hash list */
1602 write_lock(&tunnel->hlist_lock); 1607 write_lock_bh(&tunnel->hlist_lock);
1603 hlist_add_head(&session->hlist, 1608 hlist_add_head(&session->hlist,
1604 pppol2tp_session_id_hash(tunnel, 1609 pppol2tp_session_id_hash(tunnel,
1605 session->tunnel_addr.s_session)); 1610 session->tunnel_addr.s_session));
1606 write_unlock(&tunnel->hlist_lock); 1611 write_unlock_bh(&tunnel->hlist_lock);
1607 1612
1608 atomic_inc(&pppol2tp_session_count); 1613 atomic_inc(&pppol2tp_session_count);
1609 1614
@@ -2205,7 +2210,7 @@ static struct pppol2tp_session *next_session(struct pppol2tp_tunnel *tunnel, str
2205 int next = 0; 2210 int next = 0;
2206 int i; 2211 int i;
2207 2212
2208 read_lock(&tunnel->hlist_lock); 2213 read_lock_bh(&tunnel->hlist_lock);
2209 for (i = 0; i < PPPOL2TP_HASH_SIZE; i++) { 2214 for (i = 0; i < PPPOL2TP_HASH_SIZE; i++) {
2210 hlist_for_each_entry(session, walk, &tunnel->session_hlist[i], hlist) { 2215 hlist_for_each_entry(session, walk, &tunnel->session_hlist[i], hlist) {
2211 if (curr == NULL) { 2216 if (curr == NULL) {
@@ -2223,7 +2228,7 @@ static struct pppol2tp_session *next_session(struct pppol2tp_tunnel *tunnel, str
2223 } 2228 }
2224 } 2229 }
2225out: 2230out:
2226 read_unlock(&tunnel->hlist_lock); 2231 read_unlock_bh(&tunnel->hlist_lock);
2227 if (!found) 2232 if (!found)
2228 session = NULL; 2233 session = NULL;
2229 2234
@@ -2234,13 +2239,13 @@ static struct pppol2tp_tunnel *next_tunnel(struct pppol2tp_tunnel *curr)
2234{ 2239{
2235 struct pppol2tp_tunnel *tunnel = NULL; 2240 struct pppol2tp_tunnel *tunnel = NULL;
2236 2241
2237 read_lock(&pppol2tp_tunnel_list_lock); 2242 read_lock_bh(&pppol2tp_tunnel_list_lock);
2238 if (list_is_last(&curr->list, &pppol2tp_tunnel_list)) { 2243 if (list_is_last(&curr->list, &pppol2tp_tunnel_list)) {
2239 goto out; 2244 goto out;
2240 } 2245 }
2241 tunnel = list_entry(curr->list.next, struct pppol2tp_tunnel, list); 2246 tunnel = list_entry(curr->list.next, struct pppol2tp_tunnel, list);
2242out: 2247out:
2243 read_unlock(&pppol2tp_tunnel_list_lock); 2248 read_unlock_bh(&pppol2tp_tunnel_list_lock);
2244 2249
2245 return tunnel; 2250 return tunnel;
2246} 2251}
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index 6179a0a2032c..c72787adeba3 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -1088,7 +1088,7 @@ static int s2io_print_pci_mode(struct s2io_nic *nic)
1088 * '-1' on failure 1088 * '-1' on failure
1089 */ 1089 */
1090 1090
1091int init_tti(struct s2io_nic *nic, int link) 1091static int init_tti(struct s2io_nic *nic, int link)
1092{ 1092{
1093 struct XENA_dev_config __iomem *bar0 = nic->bar0; 1093 struct XENA_dev_config __iomem *bar0 = nic->bar0;
1094 register u64 val64 = 0; 1094 register u64 val64 = 0;
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c
index 77d9dd7ea34f..567c62757e9d 100644
--- a/drivers/net/tulip/de2104x.c
+++ b/drivers/net/tulip/de2104x.c
@@ -910,7 +910,8 @@ static void de_set_media (struct de_private *de)
910 unsigned media = de->media_type; 910 unsigned media = de->media_type;
911 u32 macmode = dr32(MacMode); 911 u32 macmode = dr32(MacMode);
912 912
913 BUG_ON(de_is_running(de)); 913 if (de_is_running(de))
914 printk(KERN_WARNING "%s: chip is running while changing media!\n", de->dev->name);
914 915
915 if (de->de21040) 916 if (de->de21040)
916 dw32(CSR11, FULL_DUPLEX_MAGIC); 917 dw32(CSR11, FULL_DUPLEX_MAGIC);
diff --git a/drivers/net/wan/sbni.c b/drivers/net/wan/sbni.c
index 15d5c58e57bc..e59255a155a9 100644
--- a/drivers/net/wan/sbni.c
+++ b/drivers/net/wan/sbni.c
@@ -751,7 +751,7 @@ upload_data( struct net_device *dev, unsigned framelen, unsigned frameno,
751} 751}
752 752
753 753
754static __inline void 754static inline void
755send_complete( struct net_local *nl ) 755send_complete( struct net_local *nl )
756{ 756{
757#ifdef CONFIG_SBNI_MULTILINE 757#ifdef CONFIG_SBNI_MULTILINE
diff --git a/drivers/net/wireless/libertas/cmdresp.c b/drivers/net/wireless/libertas/cmdresp.c
index bdc6a1cc2103..f0ef7081bdeb 100644
--- a/drivers/net/wireless/libertas/cmdresp.c
+++ b/drivers/net/wireless/libertas/cmdresp.c
@@ -578,7 +578,7 @@ int lbs_process_rx_command(struct lbs_private *priv)
578 goto done; 578 goto done;
579 } 579 }
580 if (respcmd != CMD_RET(curcmd) && 580 if (respcmd != CMD_RET(curcmd) &&
581 respcmd != CMD_802_11_ASSOCIATE && curcmd != CMD_RET_802_11_ASSOCIATE) { 581 respcmd != CMD_RET_802_11_ASSOCIATE && curcmd != CMD_802_11_ASSOCIATE) {
582 lbs_pr_info("Invalid CMD_RESP %x to command %x!\n", respcmd, curcmd); 582 lbs_pr_info("Invalid CMD_RESP %x to command %x!\n", respcmd, curcmd);
583 spin_unlock_irqrestore(&priv->driver_lock, flags); 583 spin_unlock_irqrestore(&priv->driver_lock, flags);
584 ret = -1; 584 ret = -1;
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
index e808db98f2f5..93ea212fedd5 100644
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2302,9 +2302,9 @@ static void rt61pci_configure_filter(struct ieee80211_hw *hw,
2302 * Apply some rules to the filters: 2302 * Apply some rules to the filters:
2303 * - Some filters imply different filters to be set. 2303 * - Some filters imply different filters to be set.
2304 * - Some things we can't filter out at all. 2304 * - Some things we can't filter out at all.
2305 * - Multicast filter seems to kill broadcast traffic so never use it.
2305 */ 2306 */
2306 if (mc_count) 2307 *total_flags |= FIF_ALLMULTI;
2307 *total_flags |= FIF_ALLMULTI;
2308 if (*total_flags & FIF_OTHER_BSS || 2308 if (*total_flags & FIF_OTHER_BSS ||
2309 *total_flags & FIF_PROMISC_IN_BSS) 2309 *total_flags & FIF_PROMISC_IN_BSS)
2310 *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; 2310 *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS;
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
index 4fac2d414d84..8103d41a1543 100644
--- a/drivers/net/wireless/rt2x00/rt73usb.c
+++ b/drivers/net/wireless/rt2x00/rt73usb.c
@@ -1869,9 +1869,9 @@ static void rt73usb_configure_filter(struct ieee80211_hw *hw,
1869 * Apply some rules to the filters: 1869 * Apply some rules to the filters:
1870 * - Some filters imply different filters to be set. 1870 * - Some filters imply different filters to be set.
1871 * - Some things we can't filter out at all. 1871 * - Some things we can't filter out at all.
1872 * - Multicast filter seems to kill broadcast traffic so never use it.
1872 */ 1873 */
1873 if (mc_count) 1874 *total_flags |= FIF_ALLMULTI;
1874 *total_flags |= FIF_ALLMULTI;
1875 if (*total_flags & FIF_OTHER_BSS || 1875 if (*total_flags & FIF_OTHER_BSS ||
1876 *total_flags & FIF_PROMISC_IN_BSS) 1876 *total_flags & FIF_PROMISC_IN_BSS)
1877 *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; 1877 *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS;
@@ -2098,6 +2098,7 @@ static struct usb_device_id rt73usb_device_table[] = {
2098 /* D-Link */ 2098 /* D-Link */
2099 { USB_DEVICE(0x07d1, 0x3c03), USB_DEVICE_DATA(&rt73usb_ops) }, 2099 { USB_DEVICE(0x07d1, 0x3c03), USB_DEVICE_DATA(&rt73usb_ops) },
2100 { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) }, 2100 { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) },
2101 { USB_DEVICE(0x07d1, 0x3c07), USB_DEVICE_DATA(&rt73usb_ops) },
2101 /* Gemtek */ 2102 /* Gemtek */
2102 { USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) }, 2103 { USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) },
2103 /* Gigabyte */ 2104 /* Gigabyte */
diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
index 6a9403d79e0c..d708358326e5 100644
--- a/drivers/pci/bus.c
+++ b/drivers/pci/bus.c
@@ -143,14 +143,18 @@ void pci_bus_add_devices(struct pci_bus *bus)
143 /* register the bus with sysfs as the parent is now 143 /* register the bus with sysfs as the parent is now
144 * properly registered. */ 144 * properly registered. */
145 child_bus = dev->subordinate; 145 child_bus = dev->subordinate;
146 if (child_bus->is_added)
147 continue;
146 child_bus->dev.parent = child_bus->bridge; 148 child_bus->dev.parent = child_bus->bridge;
147 retval = device_register(&child_bus->dev); 149 retval = device_register(&child_bus->dev);
148 if (retval) 150 if (retval)
149 dev_err(&dev->dev, "Error registering pci_bus," 151 dev_err(&dev->dev, "Error registering pci_bus,"
150 " continuing...\n"); 152 " continuing...\n");
151 else 153 else {
154 child_bus->is_added = 1;
152 retval = device_create_file(&child_bus->dev, 155 retval = device_create_file(&child_bus->dev,
153 &dev_attr_cpuaffinity); 156 &dev_attr_cpuaffinity);
157 }
154 if (retval) 158 if (retval)
155 dev_err(&dev->dev, "Error creating cpuaffinity" 159 dev_err(&dev->dev, "Error creating cpuaffinity"
156 " file, continuing...\n"); 160 " file, continuing...\n");
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c
index 4a23654184fc..72f7476930c8 100644
--- a/drivers/pci/pci-acpi.c
+++ b/drivers/pci/pci-acpi.c
@@ -272,21 +272,29 @@ static int acpi_pci_set_power_state(struct pci_dev *dev, pci_power_t state)
272{ 272{
273 acpi_handle handle = DEVICE_ACPI_HANDLE(&dev->dev); 273 acpi_handle handle = DEVICE_ACPI_HANDLE(&dev->dev);
274 acpi_handle tmp; 274 acpi_handle tmp;
275 static int state_conv[] = { 275 static const u8 state_conv[] = {
276 [0] = 0, 276 [PCI_D0] = ACPI_STATE_D0,
277 [1] = 1, 277 [PCI_D1] = ACPI_STATE_D1,
278 [2] = 2, 278 [PCI_D2] = ACPI_STATE_D2,
279 [3] = 3, 279 [PCI_D3hot] = ACPI_STATE_D3,
280 [4] = 3 280 [PCI_D3cold] = ACPI_STATE_D3
281 }; 281 };
282 int acpi_state = state_conv[(int __force) state];
283 282
284 if (!handle) 283 if (!handle)
285 return -ENODEV; 284 return -ENODEV;
286 /* If the ACPI device has _EJ0, ignore the device */ 285 /* If the ACPI device has _EJ0, ignore the device */
287 if (ACPI_SUCCESS(acpi_get_handle(handle, "_EJ0", &tmp))) 286 if (ACPI_SUCCESS(acpi_get_handle(handle, "_EJ0", &tmp)))
288 return 0; 287 return 0;
289 return acpi_bus_set_power(handle, acpi_state); 288
289 switch (state) {
290 case PCI_D0:
291 case PCI_D1:
292 case PCI_D2:
293 case PCI_D3hot:
294 case PCI_D3cold:
295 return acpi_bus_set_power(handle, state_conv[state]);
296 }
297 return -EINVAL;
290} 298}
291 299
292 300
diff --git a/drivers/pnp/quirks.c b/drivers/pnp/quirks.c
index 4065139753b6..37993206ae5d 100644
--- a/drivers/pnp/quirks.c
+++ b/drivers/pnp/quirks.c
@@ -17,7 +17,6 @@
17#include <linux/slab.h> 17#include <linux/slab.h>
18#include <linux/pnp.h> 18#include <linux/pnp.h>
19#include <linux/io.h> 19#include <linux/io.h>
20#include <linux/dmi.h>
21#include <linux/kallsyms.h> 20#include <linux/kallsyms.h>
22#include "base.h" 21#include "base.h"
23 22
@@ -109,42 +108,73 @@ static void quirk_sb16audio_resources(struct pnp_dev *dev)
109 "pnp: SB audio device quirk - increasing port range\n"); 108 "pnp: SB audio device quirk - increasing port range\n");
110} 109}
111 110
112static void quirk_supermicro_h8dce_system(struct pnp_dev *dev) 111
112#include <linux/pci.h>
113
114static void quirk_system_pci_resources(struct pnp_dev *dev)
113{ 115{
114 int i; 116 struct pci_dev *pdev = NULL;
115 static struct dmi_system_id supermicro_h8dce[] = { 117 resource_size_t pnp_start, pnp_end, pci_start, pci_end;
116 { 118 int i, j;
117 .ident = "Supermicro H8DCE",
118 .matches = {
119 DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"),
120 DMI_MATCH(DMI_PRODUCT_NAME, "H8DCE"),
121 },
122 },
123 { }
124 };
125
126 if (!dmi_check_system(supermicro_h8dce))
127 return;
128 119
129 /* 120 /*
130 * On the Supermicro H8DCE, there's a system device with resources 121 * Some BIOSes have PNP motherboard devices with resources that
131 * that overlap BAR 6 of the built-in SATA PCI adapter. If the PNP 122 * partially overlap PCI BARs. The PNP system driver claims these
132 * system device claims them, the sata_nv driver won't be able to. 123 * motherboard resources, which prevents the normal PCI driver from
133 * More details at: 124 * requesting them later.
134 * https://bugzilla.redhat.com/show_bug.cgi?id=280641 125 *
135 * https://bugzilla.redhat.com/show_bug.cgi?id=313491 126 * This patch disables the PNP resources that conflict with PCI BARs
136 * http://lkml.org/lkml/2008/1/9/449 127 * so they won't be claimed by the PNP system driver.
137 * http://thread.gmane.org/gmane.linux.acpi.devel/27312
138 */ 128 */
139 for (i = 0; i < PNP_MAX_MEM; i++) { 129 for_each_pci_dev(pdev) {
140 if (pnp_mem_valid(dev, i) && pnp_mem_len(dev, i) && 130 for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
141 (pnp_mem_start(dev, i) & 0xdfef0000) == 0xdfef0000) { 131 if (!(pci_resource_flags(pdev, i) & IORESOURCE_MEM) ||
142 dev_warn(&dev->dev, "disabling 0x%llx-0x%llx to prevent" 132 pci_resource_len(pdev, i) == 0)
143 " conflict with sata_nv PCI device\n", 133 continue;
144 (unsigned long long) pnp_mem_start(dev, i), 134
145 (unsigned long long) (pnp_mem_start(dev, i) + 135 pci_start = pci_resource_start(pdev, i);
146 pnp_mem_len(dev, i) - 1)); 136 pci_end = pci_resource_end(pdev, i);
147 pnp_mem_flags(dev, i) = 0; 137 for (j = 0; j < PNP_MAX_MEM; j++) {
138 if (!pnp_mem_valid(dev, j) ||
139 pnp_mem_len(dev, j) == 0)
140 continue;
141
142 pnp_start = pnp_mem_start(dev, j);
143 pnp_end = pnp_mem_end(dev, j);
144
145 /*
146 * If the PNP region doesn't overlap the PCI
147 * region at all, there's no problem.
148 */
149 if (pnp_end < pci_start || pnp_start > pci_end)
150 continue;
151
152 /*
153 * If the PNP region completely encloses (or is
154 * at least as large as) the PCI region, that's
155 * also OK. For example, this happens when the
156 * PNP device describes a bridge with PCI
157 * behind it.
158 */
159 if (pnp_start <= pci_start &&
160 pnp_end >= pci_end)
161 continue;
162
163 /*
164 * Otherwise, the PNP region overlaps *part* of
165 * the PCI region, and that might prevent a PCI
166 * driver from requesting its resources.
167 */
168 dev_warn(&dev->dev, "mem resource "
169 "(0x%llx-0x%llx) overlaps %s BAR %d "
170 "(0x%llx-0x%llx), disabling\n",
171 (unsigned long long) pnp_start,
172 (unsigned long long) pnp_end,
173 pci_name(pdev), i,
174 (unsigned long long) pci_start,
175 (unsigned long long) pci_end);
176 pnp_mem_flags(dev, j) = 0;
177 }
148 } 178 }
149 } 179 }
150} 180}
@@ -169,8 +199,8 @@ static struct pnp_fixup pnp_fixups[] = {
169 {"CTL0043", quirk_sb16audio_resources}, 199 {"CTL0043", quirk_sb16audio_resources},
170 {"CTL0044", quirk_sb16audio_resources}, 200 {"CTL0044", quirk_sb16audio_resources},
171 {"CTL0045", quirk_sb16audio_resources}, 201 {"CTL0045", quirk_sb16audio_resources},
172 {"PNP0c01", quirk_supermicro_h8dce_system}, 202 {"PNP0c01", quirk_system_pci_resources},
173 {"PNP0c02", quirk_supermicro_h8dce_system}, 203 {"PNP0c02", quirk_system_pci_resources},
174 {""} 204 {""}
175}; 205};
176 206
diff --git a/drivers/spi/au1550_spi.c b/drivers/spi/au1550_spi.c
index c47a650183a1..41a3d00c4515 100644
--- a/drivers/spi/au1550_spi.c
+++ b/drivers/spi/au1550_spi.c
@@ -99,7 +99,7 @@ static dbdev_tab_t au1550_spi_mem_dbdev =
99static void au1550_spi_bits_handlers_set(struct au1550_spi *hw, int bpw); 99static void au1550_spi_bits_handlers_set(struct au1550_spi *hw, int bpw);
100 100
101 101
102/** 102/*
103 * compute BRG and DIV bits to setup spi clock based on main input clock rate 103 * compute BRG and DIV bits to setup spi clock based on main input clock rate
104 * that was specified in platform data structure 104 * that was specified in platform data structure
105 * according to au1550 datasheet: 105 * according to au1550 datasheet:
@@ -650,7 +650,7 @@ static int au1550_spi_txrx_bufs(struct spi_device *spi, struct spi_transfer *t)
650 return hw->txrx_bufs(spi, t); 650 return hw->txrx_bufs(spi, t);
651} 651}
652 652
653static irqreturn_t au1550_spi_irq(int irq, void *dev, struct pt_regs *regs) 653static irqreturn_t au1550_spi_irq(int irq, void *dev)
654{ 654{
655 struct au1550_spi *hw = dev; 655 struct au1550_spi *hw = dev;
656 return hw->irq_callback(hw); 656 return hw->irq_callback(hw);
diff --git a/drivers/spi/spi_bitbang.c b/drivers/spi/spi_bitbang.c
index f7f8580edad8..71e881419cdd 100644
--- a/drivers/spi/spi_bitbang.c
+++ b/drivers/spi/spi_bitbang.c
@@ -344,12 +344,14 @@ static void bitbang_work(struct work_struct *work)
344 t->rx_dma = t->tx_dma = 0; 344 t->rx_dma = t->tx_dma = 0;
345 status = bitbang->txrx_bufs(spi, t); 345 status = bitbang->txrx_bufs(spi, t);
346 } 346 }
347 if (status > 0)
348 m->actual_length += status;
347 if (status != t->len) { 349 if (status != t->len) {
348 if (status > 0) 350 /* always report some kind of error */
349 status = -EMSGSIZE; 351 if (status >= 0)
352 status = -EREMOTEIO;
350 break; 353 break;
351 } 354 }
352 m->actual_length += status;
353 status = 0; 355 status = 0;
354 356
355 /* protocol tweaks before next transfer */ 357 /* protocol tweaks before next transfer */
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index 69f19f224875..3ab313ed441c 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -4,6 +4,7 @@
4 4
5menuconfig THERMAL 5menuconfig THERMAL
6 bool "Generic Thermal sysfs driver" 6 bool "Generic Thermal sysfs driver"
7 select HWMON
7 default y 8 default y
8 help 9 help
9 Generic Thermal Sysfs driver offers a generic mechanism for 10 Generic Thermal Sysfs driver offers a generic mechanism for
diff --git a/drivers/thermal/thermal.c b/drivers/thermal/thermal.c
index 8b86e53ccf7a..41bd4c805ace 100644
--- a/drivers/thermal/thermal.c
+++ b/drivers/thermal/thermal.c
@@ -30,8 +30,10 @@
30#include <linux/idr.h> 30#include <linux/idr.h>
31#include <linux/thermal.h> 31#include <linux/thermal.h>
32#include <linux/spinlock.h> 32#include <linux/spinlock.h>
33#include <linux/hwmon.h>
34#include <linux/hwmon-sysfs.h>
33 35
34MODULE_AUTHOR("Zhang Rui") 36MODULE_AUTHOR("Zhang Rui");
35MODULE_DESCRIPTION("Generic thermal management sysfs support"); 37MODULE_DESCRIPTION("Generic thermal management sysfs support");
36MODULE_LICENSE("GPL"); 38MODULE_LICENSE("GPL");
37 39
@@ -56,6 +58,9 @@ static LIST_HEAD(thermal_tz_list);
56static LIST_HEAD(thermal_cdev_list); 58static LIST_HEAD(thermal_cdev_list);
57static DEFINE_MUTEX(thermal_list_lock); 59static DEFINE_MUTEX(thermal_list_lock);
58 60
61static struct device *thermal_hwmon;
62#define MAX_THERMAL_ZONES 10
63
59static int get_idr(struct idr *idr, struct mutex *lock, int *id) 64static int get_idr(struct idr *idr, struct mutex *lock, int *id)
60{ 65{
61 int err; 66 int err;
@@ -87,7 +92,67 @@ static void release_idr(struct idr *idr, struct mutex *lock, int id)
87 mutex_unlock(lock); 92 mutex_unlock(lock);
88} 93}
89 94
90/* sys I/F for thermal zone */ 95/* hwmon sys I/F*/
96static ssize_t
97name_show(struct device *dev, struct device_attribute *attr, char *buf)
98{
99 return sprintf(buf, "thermal_sys_class\n");
100}
101
102static ssize_t
103temp_input_show(struct device *dev, struct device_attribute *attr, char *buf)
104{
105 struct thermal_zone_device *tz;
106 struct sensor_device_attribute *sensor_attr
107 = to_sensor_dev_attr(attr);
108
109 list_for_each_entry(tz, &thermal_tz_list, node)
110 if (tz->id == sensor_attr->index)
111 return tz->ops->get_temp(tz, buf);
112
113 return -ENODEV;
114}
115
116static ssize_t
117temp_crit_show(struct device *dev, struct device_attribute *attr,
118 char *buf)
119{
120 struct thermal_zone_device *tz;
121 struct sensor_device_attribute *sensor_attr
122 = to_sensor_dev_attr(attr);
123
124 list_for_each_entry(tz, &thermal_tz_list, node)
125 if (tz->id == sensor_attr->index)
126 return tz->ops->get_trip_temp(tz, 0, buf);
127
128 return -ENODEV;
129}
130
131static DEVICE_ATTR(name, 0444, name_show, NULL);
132static struct sensor_device_attribute sensor_attrs[] = {
133 SENSOR_ATTR(temp1_input, 0444, temp_input_show, NULL, 0),
134 SENSOR_ATTR(temp1_crit, 0444, temp_crit_show, NULL, 0),
135 SENSOR_ATTR(temp2_input, 0444, temp_input_show, NULL, 1),
136 SENSOR_ATTR(temp2_crit, 0444, temp_crit_show, NULL, 1),
137 SENSOR_ATTR(temp3_input, 0444, temp_input_show, NULL, 2),
138 SENSOR_ATTR(temp3_crit, 0444, temp_crit_show, NULL, 2),
139 SENSOR_ATTR(temp4_input, 0444, temp_input_show, NULL, 3),
140 SENSOR_ATTR(temp4_crit, 0444, temp_crit_show, NULL, 3),
141 SENSOR_ATTR(temp5_input, 0444, temp_input_show, NULL, 4),
142 SENSOR_ATTR(temp5_crit, 0444, temp_crit_show, NULL, 4),
143 SENSOR_ATTR(temp6_input, 0444, temp_input_show, NULL, 5),
144 SENSOR_ATTR(temp6_crit, 0444, temp_crit_show, NULL, 5),
145 SENSOR_ATTR(temp7_input, 0444, temp_input_show, NULL, 6),
146 SENSOR_ATTR(temp7_crit, 0444, temp_crit_show, NULL, 6),
147 SENSOR_ATTR(temp8_input, 0444, temp_input_show, NULL, 7),
148 SENSOR_ATTR(temp8_crit, 0444, temp_crit_show, NULL, 7),
149 SENSOR_ATTR(temp9_input, 0444, temp_input_show, NULL, 8),
150 SENSOR_ATTR(temp9_crit, 0444, temp_crit_show, NULL, 8),
151 SENSOR_ATTR(temp10_input, 0444, temp_input_show, NULL, 9),
152 SENSOR_ATTR(temp10_crit, 0444, temp_crit_show, NULL, 9),
153};
154
155/* thermal zone sys I/F */
91 156
92#define to_thermal_zone(_dev) \ 157#define to_thermal_zone(_dev) \
93 container_of(_dev, struct thermal_zone_device, device) 158 container_of(_dev, struct thermal_zone_device, device)
@@ -214,7 +279,7 @@ do { \
214 device_remove_file(_dev, &trip_point_attrs[_index * 2 + 1]); \ 279 device_remove_file(_dev, &trip_point_attrs[_index * 2 + 1]); \
215} while (0) 280} while (0)
216 281
217/* sys I/F for cooling device */ 282/* cooling device sys I/F */
218#define to_cooling_device(_dev) \ 283#define to_cooling_device(_dev) \
219 container_of(_dev, struct thermal_cooling_device, device) 284 container_of(_dev, struct thermal_cooling_device, device)
220 285
@@ -447,6 +512,9 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *type,
447 struct thermal_zone_device *pos; 512 struct thermal_zone_device *pos;
448 int result; 513 int result;
449 514
515 if (!type)
516 return ERR_PTR(-EINVAL);
517
450 if (strlen(type) >= THERMAL_NAME_LENGTH) 518 if (strlen(type) >= THERMAL_NAME_LENGTH)
451 return ERR_PTR(-EINVAL); 519 return ERR_PTR(-EINVAL);
452 520
@@ -477,11 +545,9 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *type,
477 } 545 }
478 546
479 /* sys I/F */ 547 /* sys I/F */
480 if (type) { 548 result = device_create_file(&cdev->device, &dev_attr_cdev_type);
481 result = device_create_file(&cdev->device, &dev_attr_cdev_type); 549 if (result)
482 if (result) 550 goto unregister;
483 goto unregister;
484 }
485 551
486 result = device_create_file(&cdev->device, &dev_attr_max_state); 552 result = device_create_file(&cdev->device, &dev_attr_max_state);
487 if (result) 553 if (result)
@@ -547,8 +613,8 @@ void thermal_cooling_device_unregister(struct
547 tz->ops->unbind(tz, cdev); 613 tz->ops->unbind(tz, cdev);
548 } 614 }
549 mutex_unlock(&thermal_list_lock); 615 mutex_unlock(&thermal_list_lock);
550 if (cdev->type[0]) 616
551 device_remove_file(&cdev->device, &dev_attr_cdev_type); 617 device_remove_file(&cdev->device, &dev_attr_cdev_type);
552 device_remove_file(&cdev->device, &dev_attr_max_state); 618 device_remove_file(&cdev->device, &dev_attr_max_state);
553 device_remove_file(&cdev->device, &dev_attr_cur_state); 619 device_remove_file(&cdev->device, &dev_attr_cur_state);
554 620
@@ -580,6 +646,9 @@ struct thermal_zone_device *thermal_zone_device_register(char *type,
580 int result; 646 int result;
581 int count; 647 int count;
582 648
649 if (!type)
650 return ERR_PTR(-EINVAL);
651
583 if (strlen(type) >= THERMAL_NAME_LENGTH) 652 if (strlen(type) >= THERMAL_NAME_LENGTH)
584 return ERR_PTR(-EINVAL); 653 return ERR_PTR(-EINVAL);
585 654
@@ -601,6 +670,13 @@ struct thermal_zone_device *thermal_zone_device_register(char *type,
601 kfree(tz); 670 kfree(tz);
602 return ERR_PTR(result); 671 return ERR_PTR(result);
603 } 672 }
673 if (tz->id >= MAX_THERMAL_ZONES) {
674 printk(KERN_ERR PREFIX
675 "Too many thermal zones\n");
676 release_idr(&thermal_tz_idr, &thermal_idr_lock, tz->id);
677 kfree(tz);
678 return ERR_PTR(-EINVAL);
679 }
604 680
605 strcpy(tz->type, type); 681 strcpy(tz->type, type);
606 tz->ops = ops; 682 tz->ops = ops;
@@ -615,13 +691,28 @@ struct thermal_zone_device *thermal_zone_device_register(char *type,
615 return ERR_PTR(result); 691 return ERR_PTR(result);
616 } 692 }
617 693
618 /* sys I/F */ 694 /* hwmon sys I/F */
619 if (type) { 695 result = device_create_file(thermal_hwmon,
620 result = device_create_file(&tz->device, &dev_attr_type); 696 &sensor_attrs[tz->id * 2].dev_attr);
621 if (result) 697 if (result)
622 goto unregister; 698 goto unregister;
699
700 if (trips > 0) {
701 char buf[40];
702 result = tz->ops->get_trip_type(tz, 0, buf);
703 if (result > 0 && !strcmp(buf, "critical\n")) {
704 result = device_create_file(thermal_hwmon,
705 &sensor_attrs[tz->id * 2 + 1].dev_attr);
706 if (result)
707 goto unregister;
708 }
623 } 709 }
624 710
711 /* sys I/F */
712 result = device_create_file(&tz->device, &dev_attr_type);
713 if (result)
714 goto unregister;
715
625 result = device_create_file(&tz->device, &dev_attr_temp); 716 result = device_create_file(&tz->device, &dev_attr_temp);
626 if (result) 717 if (result)
627 goto unregister; 718 goto unregister;
@@ -687,8 +778,17 @@ void thermal_zone_device_unregister(struct thermal_zone_device *tz)
687 tz->ops->unbind(tz, cdev); 778 tz->ops->unbind(tz, cdev);
688 mutex_unlock(&thermal_list_lock); 779 mutex_unlock(&thermal_list_lock);
689 780
690 if (tz->type[0]) 781 device_remove_file(thermal_hwmon,
691 device_remove_file(&tz->device, &dev_attr_type); 782 &sensor_attrs[tz->id * 2].dev_attr);
783 if (tz->trips > 0) {
784 char buf[40];
785 if (tz->ops->get_trip_type(tz, 0, buf) > 0)
786 if (!strcmp(buf, "critical\n"))
787 device_remove_file(thermal_hwmon,
788 &sensor_attrs[tz->id * 2 + 1].dev_attr);
789 }
790
791 device_remove_file(&tz->device, &dev_attr_type);
692 device_remove_file(&tz->device, &dev_attr_temp); 792 device_remove_file(&tz->device, &dev_attr_temp);
693 if (tz->ops->get_mode) 793 if (tz->ops->get_mode)
694 device_remove_file(&tz->device, &dev_attr_mode); 794 device_remove_file(&tz->device, &dev_attr_mode);
@@ -705,6 +805,19 @@ void thermal_zone_device_unregister(struct thermal_zone_device *tz)
705 805
706EXPORT_SYMBOL(thermal_zone_device_unregister); 806EXPORT_SYMBOL(thermal_zone_device_unregister);
707 807
808static void thermal_exit(void)
809{
810 if (thermal_hwmon) {
811 device_remove_file(thermal_hwmon, &dev_attr_name);
812 hwmon_device_unregister(thermal_hwmon);
813 }
814 class_unregister(&thermal_class);
815 idr_destroy(&thermal_tz_idr);
816 idr_destroy(&thermal_cdev_idr);
817 mutex_destroy(&thermal_idr_lock);
818 mutex_destroy(&thermal_list_lock);
819}
820
708static int __init thermal_init(void) 821static int __init thermal_init(void)
709{ 822{
710 int result = 0; 823 int result = 0;
@@ -716,16 +829,20 @@ static int __init thermal_init(void)
716 mutex_destroy(&thermal_idr_lock); 829 mutex_destroy(&thermal_idr_lock);
717 mutex_destroy(&thermal_list_lock); 830 mutex_destroy(&thermal_list_lock);
718 } 831 }
719 return result;
720}
721 832
722static void __exit thermal_exit(void) 833 thermal_hwmon = hwmon_device_register(NULL);
723{ 834 if (IS_ERR(thermal_hwmon)) {
724 class_unregister(&thermal_class); 835 result = PTR_ERR(thermal_hwmon);
725 idr_destroy(&thermal_tz_idr); 836 thermal_hwmon = NULL;
726 idr_destroy(&thermal_cdev_idr); 837 printk(KERN_ERR PREFIX
727 mutex_destroy(&thermal_idr_lock); 838 "unable to register hwmon device\n");
728 mutex_destroy(&thermal_list_lock); 839 thermal_exit();
840 return result;
841 }
842
843 result = device_create_file(thermal_hwmon, &dev_attr_name);
844
845 return result;
729} 846}
730 847
731subsys_initcall(thermal_init); 848subsys_initcall(thermal_init);
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 91a1bd67ac1d..9a4da0aae02e 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -2269,6 +2269,9 @@ static const struct pid_entry tgid_base_stuff[] = {
2269 DIR("task", S_IRUGO|S_IXUGO, task), 2269 DIR("task", S_IRUGO|S_IXUGO, task),
2270 DIR("fd", S_IRUSR|S_IXUSR, fd), 2270 DIR("fd", S_IRUSR|S_IXUSR, fd),
2271 DIR("fdinfo", S_IRUSR|S_IXUSR, fdinfo), 2271 DIR("fdinfo", S_IRUSR|S_IXUSR, fdinfo),
2272#ifdef CONFIG_NET
2273 DIR("net", S_IRUGO|S_IXUSR, net),
2274#endif
2272 REG("environ", S_IRUSR, environ), 2275 REG("environ", S_IRUSR, environ),
2273 INF("auxv", S_IRUSR, pid_auxv), 2276 INF("auxv", S_IRUSR, pid_auxv),
2274 ONE("status", S_IRUGO, pid_status), 2277 ONE("status", S_IRUGO, pid_status),
diff --git a/fs/proc/generic.c b/fs/proc/generic.c
index 68971e66cd41..a36ad3c75cf4 100644
--- a/fs/proc/generic.c
+++ b/fs/proc/generic.c
@@ -377,15 +377,14 @@ static struct dentry_operations proc_dentry_operations =
377 * Don't create negative dentries here, return -ENOENT by hand 377 * Don't create negative dentries here, return -ENOENT by hand
378 * instead. 378 * instead.
379 */ 379 */
380struct dentry *proc_lookup(struct inode * dir, struct dentry *dentry, struct nameidata *nd) 380struct dentry *proc_lookup_de(struct proc_dir_entry *de, struct inode *dir,
381 struct dentry *dentry)
381{ 382{
382 struct inode *inode = NULL; 383 struct inode *inode = NULL;
383 struct proc_dir_entry * de;
384 int error = -ENOENT; 384 int error = -ENOENT;
385 385
386 lock_kernel(); 386 lock_kernel();
387 spin_lock(&proc_subdir_lock); 387 spin_lock(&proc_subdir_lock);
388 de = PDE(dir);
389 if (de) { 388 if (de) {
390 for (de = de->subdir; de ; de = de->next) { 389 for (de = de->subdir; de ; de = de->next) {
391 if (de->namelen != dentry->d_name.len) 390 if (de->namelen != dentry->d_name.len)
@@ -393,8 +392,6 @@ struct dentry *proc_lookup(struct inode * dir, struct dentry *dentry, struct nam
393 if (!memcmp(dentry->d_name.name, de->name, de->namelen)) { 392 if (!memcmp(dentry->d_name.name, de->name, de->namelen)) {
394 unsigned int ino; 393 unsigned int ino;
395 394
396 if (de->shadow_proc)
397 de = de->shadow_proc(current, de);
398 ino = de->low_ino; 395 ino = de->low_ino;
399 de_get(de); 396 de_get(de);
400 spin_unlock(&proc_subdir_lock); 397 spin_unlock(&proc_subdir_lock);
@@ -417,6 +414,12 @@ out_unlock:
417 return ERR_PTR(error); 414 return ERR_PTR(error);
418} 415}
419 416
417struct dentry *proc_lookup(struct inode *dir, struct dentry *dentry,
418 struct nameidata *nd)
419{
420 return proc_lookup_de(PDE(dir), dir, dentry);
421}
422
420/* 423/*
421 * This returns non-zero if at EOF, so that the /proc 424 * This returns non-zero if at EOF, so that the /proc
422 * root directory can use this and check if it should 425 * root directory can use this and check if it should
@@ -426,10 +429,9 @@ out_unlock:
426 * value of the readdir() call, as long as it's non-negative 429 * value of the readdir() call, as long as it's non-negative
427 * for success.. 430 * for success..
428 */ 431 */
429int proc_readdir(struct file * filp, 432int proc_readdir_de(struct proc_dir_entry *de, struct file *filp, void *dirent,
430 void * dirent, filldir_t filldir) 433 filldir_t filldir)
431{ 434{
432 struct proc_dir_entry * de;
433 unsigned int ino; 435 unsigned int ino;
434 int i; 436 int i;
435 struct inode *inode = filp->f_path.dentry->d_inode; 437 struct inode *inode = filp->f_path.dentry->d_inode;
@@ -438,7 +440,6 @@ int proc_readdir(struct file * filp,
438 lock_kernel(); 440 lock_kernel();
439 441
440 ino = inode->i_ino; 442 ino = inode->i_ino;
441 de = PDE(inode);
442 if (!de) { 443 if (!de) {
443 ret = -EINVAL; 444 ret = -EINVAL;
444 goto out; 445 goto out;
@@ -499,6 +500,13 @@ out: unlock_kernel();
499 return ret; 500 return ret;
500} 501}
501 502
503int proc_readdir(struct file *filp, void *dirent, filldir_t filldir)
504{
505 struct inode *inode = filp->f_path.dentry->d_inode;
506
507 return proc_readdir_de(PDE(inode), filp, dirent, filldir);
508}
509
502/* 510/*
503 * These are the generic /proc directory operations. They 511 * These are the generic /proc directory operations. They
504 * use the in-memory "struct proc_dir_entry" tree to parse 512 * use the in-memory "struct proc_dir_entry" tree to parse
diff --git a/fs/proc/internal.h b/fs/proc/internal.h
index 1c81c8f1aeed..bc72f5c8c47d 100644
--- a/fs/proc/internal.h
+++ b/fs/proc/internal.h
@@ -64,6 +64,8 @@ extern const struct file_operations proc_numa_maps_operations;
64extern const struct file_operations proc_smaps_operations; 64extern const struct file_operations proc_smaps_operations;
65extern const struct file_operations proc_clear_refs_operations; 65extern const struct file_operations proc_clear_refs_operations;
66extern const struct file_operations proc_pagemap_operations; 66extern const struct file_operations proc_pagemap_operations;
67extern const struct file_operations proc_net_operations;
68extern const struct inode_operations proc_net_inode_operations;
67 69
68void free_proc_entry(struct proc_dir_entry *de); 70void free_proc_entry(struct proc_dir_entry *de);
69 71
@@ -83,3 +85,8 @@ static inline int proc_fd(struct inode *inode)
83{ 85{
84 return PROC_I(inode)->fd; 86 return PROC_I(inode)->fd;
85} 87}
88
89struct dentry *proc_lookup_de(struct proc_dir_entry *de, struct inode *ino,
90 struct dentry *dentry);
91int proc_readdir_de(struct proc_dir_entry *de, struct file *filp, void *dirent,
92 filldir_t filldir);
diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c
index 14e9b5aaf863..4caa5f774fb7 100644
--- a/fs/proc/proc_net.c
+++ b/fs/proc/proc_net.c
@@ -63,6 +63,82 @@ int seq_release_net(struct inode *ino, struct file *f)
63} 63}
64EXPORT_SYMBOL_GPL(seq_release_net); 64EXPORT_SYMBOL_GPL(seq_release_net);
65 65
66static struct net *get_proc_task_net(struct inode *dir)
67{
68 struct task_struct *task;
69 struct nsproxy *ns;
70 struct net *net = NULL;
71
72 rcu_read_lock();
73 task = pid_task(proc_pid(dir), PIDTYPE_PID);
74 if (task != NULL) {
75 ns = task_nsproxy(task);
76 if (ns != NULL)
77 net = get_net(ns->net_ns);
78 }
79 rcu_read_unlock();
80
81 return net;
82}
83
84static struct dentry *proc_tgid_net_lookup(struct inode *dir,
85 struct dentry *dentry, struct nameidata *nd)
86{
87 struct dentry *de;
88 struct net *net;
89
90 de = ERR_PTR(-ENOENT);
91 net = get_proc_task_net(dir);
92 if (net != NULL) {
93 de = proc_lookup_de(net->proc_net, dir, dentry);
94 put_net(net);
95 }
96 return de;
97}
98
99static int proc_tgid_net_getattr(struct vfsmount *mnt, struct dentry *dentry,
100 struct kstat *stat)
101{
102 struct inode *inode = dentry->d_inode;
103 struct net *net;
104
105 net = get_proc_task_net(inode);
106
107 generic_fillattr(inode, stat);
108
109 if (net != NULL) {
110 stat->nlink = net->proc_net->nlink;
111 put_net(net);
112 }
113
114 return 0;
115}
116
117const struct inode_operations proc_net_inode_operations = {
118 .lookup = proc_tgid_net_lookup,
119 .getattr = proc_tgid_net_getattr,
120};
121
122static int proc_tgid_net_readdir(struct file *filp, void *dirent,
123 filldir_t filldir)
124{
125 int ret;
126 struct net *net;
127
128 ret = -EINVAL;
129 net = get_proc_task_net(filp->f_path.dentry->d_inode);
130 if (net != NULL) {
131 ret = proc_readdir_de(net->proc_net, filp, dirent, filldir);
132 put_net(net);
133 }
134 return ret;
135}
136
137const struct file_operations proc_net_operations = {
138 .read = generic_read_dir,
139 .readdir = proc_tgid_net_readdir,
140};
141
66 142
67struct proc_dir_entry *proc_net_fops_create(struct net *net, 143struct proc_dir_entry *proc_net_fops_create(struct net *net,
68 const char *name, mode_t mode, const struct file_operations *fops) 144 const char *name, mode_t mode, const struct file_operations *fops)
@@ -83,14 +159,6 @@ struct net *get_proc_net(const struct inode *inode)
83} 159}
84EXPORT_SYMBOL_GPL(get_proc_net); 160EXPORT_SYMBOL_GPL(get_proc_net);
85 161
86static struct proc_dir_entry *shadow_pde;
87
88static struct proc_dir_entry *proc_net_shadow(struct task_struct *task,
89 struct proc_dir_entry *de)
90{
91 return task->nsproxy->net_ns->proc_net;
92}
93
94struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, 162struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name,
95 struct proc_dir_entry *parent) 163 struct proc_dir_entry *parent)
96{ 164{
@@ -104,45 +172,39 @@ EXPORT_SYMBOL_GPL(proc_net_mkdir);
104 172
105static __net_init int proc_net_ns_init(struct net *net) 173static __net_init int proc_net_ns_init(struct net *net)
106{ 174{
107 struct proc_dir_entry *root, *netd, *net_statd; 175 struct proc_dir_entry *netd, *net_statd;
108 int err; 176 int err;
109 177
110 err = -ENOMEM; 178 err = -ENOMEM;
111 root = kzalloc(sizeof(*root), GFP_KERNEL); 179 netd = kzalloc(sizeof(*netd), GFP_KERNEL);
112 if (!root) 180 if (!netd)
113 goto out; 181 goto out;
114 182
115 err = -EEXIST; 183 netd->data = net;
116 netd = proc_net_mkdir(net, "net", root); 184 netd->nlink = 2;
117 if (!netd) 185 netd->name = "net";
118 goto free_root; 186 netd->namelen = 3;
187 netd->parent = &proc_root;
119 188
120 err = -EEXIST; 189 err = -EEXIST;
121 net_statd = proc_net_mkdir(net, "stat", netd); 190 net_statd = proc_net_mkdir(net, "stat", netd);
122 if (!net_statd) 191 if (!net_statd)
123 goto free_net; 192 goto free_net;
124 193
125 root->data = net;
126
127 net->proc_net_root = root;
128 net->proc_net = netd; 194 net->proc_net = netd;
129 net->proc_net_stat = net_statd; 195 net->proc_net_stat = net_statd;
130 err = 0; 196 return 0;
131 197
198free_net:
199 kfree(netd);
132out: 200out:
133 return err; 201 return err;
134free_net:
135 remove_proc_entry("net", root);
136free_root:
137 kfree(root);
138 goto out;
139} 202}
140 203
141static __net_exit void proc_net_ns_exit(struct net *net) 204static __net_exit void proc_net_ns_exit(struct net *net)
142{ 205{
143 remove_proc_entry("stat", net->proc_net); 206 remove_proc_entry("stat", net->proc_net);
144 remove_proc_entry("net", net->proc_net_root); 207 kfree(net->proc_net);
145 kfree(net->proc_net_root);
146} 208}
147 209
148static struct pernet_operations __net_initdata proc_net_ns_ops = { 210static struct pernet_operations __net_initdata proc_net_ns_ops = {
@@ -152,8 +214,7 @@ static struct pernet_operations __net_initdata proc_net_ns_ops = {
152 214
153int __init proc_net_init(void) 215int __init proc_net_init(void)
154{ 216{
155 shadow_pde = proc_mkdir("net", NULL); 217 proc_symlink("net", NULL, "self/net");
156 shadow_pde->shadow_proc = proc_net_shadow;
157 218
158 return register_pernet_subsys(&proc_net_ns_ops); 219 return register_pernet_subsys(&proc_net_ns_ops);
159} 220}
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index 6dc0334815f7..4206454734e0 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -640,17 +640,17 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
640 640
641 ret = -EACCES; 641 ret = -EACCES;
642 if (!ptrace_may_attach(task)) 642 if (!ptrace_may_attach(task))
643 goto out; 643 goto out_task;
644 644
645 ret = -EINVAL; 645 ret = -EINVAL;
646 /* file position must be aligned */ 646 /* file position must be aligned */
647 if (*ppos % PM_ENTRY_BYTES) 647 if (*ppos % PM_ENTRY_BYTES)
648 goto out; 648 goto out_task;
649 649
650 ret = 0; 650 ret = 0;
651 mm = get_task_mm(task); 651 mm = get_task_mm(task);
652 if (!mm) 652 if (!mm)
653 goto out; 653 goto out_task;
654 654
655 ret = -ENOMEM; 655 ret = -ENOMEM;
656 uaddr = (unsigned long)buf & PAGE_MASK; 656 uaddr = (unsigned long)buf & PAGE_MASK;
@@ -658,7 +658,7 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
658 pagecount = (PAGE_ALIGN(uend) - uaddr) / PAGE_SIZE; 658 pagecount = (PAGE_ALIGN(uend) - uaddr) / PAGE_SIZE;
659 pages = kmalloc(pagecount * sizeof(struct page *), GFP_KERNEL); 659 pages = kmalloc(pagecount * sizeof(struct page *), GFP_KERNEL);
660 if (!pages) 660 if (!pages)
661 goto out_task; 661 goto out_mm;
662 662
663 down_read(&current->mm->mmap_sem); 663 down_read(&current->mm->mmap_sem);
664 ret = get_user_pages(current, current->mm, uaddr, pagecount, 664 ret = get_user_pages(current, current->mm, uaddr, pagecount,
@@ -668,6 +668,12 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
668 if (ret < 0) 668 if (ret < 0)
669 goto out_free; 669 goto out_free;
670 670
671 if (ret != pagecount) {
672 pagecount = ret;
673 ret = -EFAULT;
674 goto out_pages;
675 }
676
671 pm.out = buf; 677 pm.out = buf;
672 pm.end = buf + count; 678 pm.end = buf + count;
673 679
@@ -699,15 +705,17 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
699 ret = pm.out - buf; 705 ret = pm.out - buf;
700 } 706 }
701 707
708out_pages:
702 for (; pagecount; pagecount--) { 709 for (; pagecount; pagecount--) {
703 page = pages[pagecount-1]; 710 page = pages[pagecount-1];
704 if (!PageReserved(page)) 711 if (!PageReserved(page))
705 SetPageDirty(page); 712 SetPageDirty(page);
706 page_cache_release(page); 713 page_cache_release(page);
707 } 714 }
708 mmput(mm);
709out_free: 715out_free:
710 kfree(pages); 716 kfree(pages);
717out_mm:
718 mmput(mm);
711out_task: 719out_task:
712 put_task_struct(task); 720 put_task_struct(task);
713out: 721out:
diff --git a/include/asm-arm/arch-omap/board-h3.h b/include/asm-arm/arch-omap/board-h3.h
index 1c2b55c61ca0..0f6404435ea8 100644
--- a/include/asm-arm/arch-omap/board-h3.h
+++ b/include/asm-arm/arch-omap/board-h3.h
@@ -36,7 +36,7 @@
36 36
37#define NR_IRQS (MAXIRQNUM + 1) 37#define NR_IRQS (MAXIRQNUM + 1)
38 38
39extern void __init h3_mmc_init(void); 39extern void h3_mmc_init(void);
40extern void h3_mmc_slot_cover_handler(void *arg, int state); 40extern void h3_mmc_slot_cover_handler(void *arg, int state);
41 41
42#endif /* __ASM_ARCH_OMAP_H3_H */ 42#endif /* __ASM_ARCH_OMAP_H3_H */
diff --git a/include/asm-arm/arch-omap/common.h b/include/asm-arm/arch-omap/common.h
index 442aecbb8f44..224e009e5296 100644
--- a/include/asm-arm/arch-omap/common.h
+++ b/include/asm-arm/arch-omap/common.h
@@ -27,9 +27,7 @@
27#ifndef __ARCH_ARM_MACH_OMAP_COMMON_H 27#ifndef __ARCH_ARM_MACH_OMAP_COMMON_H
28#define __ARCH_ARM_MACH_OMAP_COMMON_H 28#define __ARCH_ARM_MACH_OMAP_COMMON_H
29 29
30#ifdef CONFIG_I2C_OMAP
31#include <linux/i2c.h> 30#include <linux/i2c.h>
32#endif
33 31
34struct sys_timer; 32struct sys_timer;
35 33
@@ -41,7 +39,12 @@ extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
41 struct i2c_board_info const *info, 39 struct i2c_board_info const *info,
42 unsigned len); 40 unsigned len);
43#else 41#else
44#define omap_register_i2c_bus(a, b, c, d) 0 42static inline int omap_register_i2c_bus(int bus_id, u32 clkrate,
43 struct i2c_board_info const *info,
44 unsigned len)
45{
46 return 0;
47}
45#endif 48#endif
46 49
47#endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */ 50#endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */
diff --git a/include/asm-arm/arch-omap/gpioexpander.h b/include/asm-arm/arch-omap/gpioexpander.h
index 7a43b0a912e4..4eed1f80e2fb 100644
--- a/include/asm-arm/arch-omap/gpioexpander.h
+++ b/include/asm-arm/arch-omap/gpioexpander.h
@@ -18,7 +18,18 @@
18 18
19/* Function Prototypes for GPIO Expander functions */ 19/* Function Prototypes for GPIO Expander functions */
20 20
21#ifdef CONFIG_GPIOEXPANDER_OMAP
21int read_gpio_expa(u8 *, int); 22int read_gpio_expa(u8 *, int);
22int write_gpio_expa(u8 , int); 23int write_gpio_expa(u8 , int);
24#else
25static inline int read_gpio_expa(u8 *val, int addr)
26{
27 return 0;
28}
29static inline int write_gpio_expa(u8 val, int addr)
30{
31 return 0;
32}
33#endif
23 34
24#endif /* __ASM_ARCH_OMAP_GPIOEXPANDER_H */ 35#endif /* __ASM_ARCH_OMAP_GPIOEXPANDER_H */
diff --git a/include/asm-arm/pgtable-nommu.h b/include/asm-arm/pgtable-nommu.h
index 33c83dd87965..2e5868bbe03b 100644
--- a/include/asm-arm/pgtable-nommu.h
+++ b/include/asm-arm/pgtable-nommu.h
@@ -92,6 +92,8 @@ extern unsigned int kobjsize(const void *objp);
92 92
93#define FIRST_USER_ADDRESS (0) 93#define FIRST_USER_ADDRESS (0)
94 94
95#include <asm-generic/pgtable.h>
96
95#else 97#else
96 98
97/* 99/*
diff --git a/include/asm-arm/plat-s3c/uncompress.h b/include/asm-arm/plat-s3c/uncompress.h
index b5e6208175d1..19b9eda39485 100644
--- a/include/asm-arm/plat-s3c/uncompress.h
+++ b/include/asm-arm/plat-s3c/uncompress.h
@@ -27,8 +27,8 @@ static void arch_detect_cpu(void);
27 27
28/* defines for UART registers */ 28/* defines for UART registers */
29 29
30#include "asm/plat-s3c/regs-serial.h" 30#include <asm/plat-s3c/regs-serial.h>
31#include "asm/plat-s3c/regs-watchdog.h" 31#include <asm/plat-s3c/regs-watchdog.h>
32 32
33/* working in physical space... */ 33/* working in physical space... */
34#undef S3C2410_WDOGREG 34#undef S3C2410_WDOGREG
diff --git a/include/asm-arm/proc-fns.h b/include/asm-arm/proc-fns.h
index a4ce457199d3..75ec760f4c74 100644
--- a/include/asm-arm/proc-fns.h
+++ b/include/asm-arm/proc-fns.h
@@ -214,9 +214,9 @@
214#ifndef __ASSEMBLY__ 214#ifndef __ASSEMBLY__
215 215
216#ifndef MULTI_CPU 216#ifndef MULTI_CPU
217#include "asm/cpu-single.h" 217#include <asm/cpu-single.h>
218#else 218#else
219#include "asm/cpu-multi32.h" 219#include <asm/cpu-multi32.h>
220#endif 220#endif
221 221
222#include <asm/memory.h> 222#include <asm/memory.h>
diff --git a/include/asm-h8300/uaccess.h b/include/asm-h8300/uaccess.h
index a22350ec271a..356068cd0879 100644
--- a/include/asm-h8300/uaccess.h
+++ b/include/asm-h8300/uaccess.h
@@ -91,22 +91,19 @@ extern int __put_user_bad(void);
91#define get_user(x, ptr) \ 91#define get_user(x, ptr) \
92({ \ 92({ \
93 int __gu_err = 0; \ 93 int __gu_err = 0; \
94 uint32_t __gu_val = 0; \ 94 typeof(*(ptr)) __gu_val = *ptr; \
95 switch (sizeof(*(ptr))) { \ 95 switch (sizeof(*(ptr))) { \
96 case 1: \ 96 case 1: \
97 case 2: \ 97 case 2: \
98 case 4: \ 98 case 4: \
99 __gu_val = *(ptr); \ 99 case 8: \
100 break; \
101 case 8: \
102 memcpy(&__gu_val, ptr, sizeof (*(ptr))); \
103 break; \ 100 break; \
104 default: \ 101 default: \
105 __gu_val = 0; \
106 __gu_err = __get_user_bad(); \ 102 __gu_err = __get_user_bad(); \
103 __gu_val = 0; \
107 break; \ 104 break; \
108 } \ 105 } \
109 (x) = (typeof(*(ptr)))__gu_val; \ 106 (x) = __gu_val; \
110 __gu_err; \ 107 __gu_err; \
111}) 108})
112#define __get_user(x, ptr) get_user(x, ptr) 109#define __get_user(x, ptr) get_user(x, ptr)
diff --git a/include/asm-mips/cacheflush.h b/include/asm-mips/cacheflush.h
index 4933b4947ed0..01e7eadc97e2 100644
--- a/include/asm-mips/cacheflush.h
+++ b/include/asm-mips/cacheflush.h
@@ -93,7 +93,7 @@ extern void (*flush_data_cache_page)(unsigned long addr);
93 clear_bit(PG_dcache_dirty, &(page)->flags) 93 clear_bit(PG_dcache_dirty, &(page)->flags)
94 94
95/* Run kernel code uncached, useful for cache probing functions. */ 95/* Run kernel code uncached, useful for cache probing functions. */
96unsigned long __init run_uncached(void *func); 96unsigned long run_uncached(void *func);
97 97
98extern void *kmap_coherent(struct page *page, unsigned long addr); 98extern void *kmap_coherent(struct page *page, unsigned long addr);
99extern void kunmap_coherent(void); 99extern void kunmap_coherent(void);
diff --git a/include/asm-mips/highmem.h b/include/asm-mips/highmem.h
index 4d6bd5c31c7b..4374ab2adc75 100644
--- a/include/asm-mips/highmem.h
+++ b/include/asm-mips/highmem.h
@@ -39,7 +39,6 @@ extern pte_t *pkmap_page_table;
39 * easily, subsequent pte tables have to be allocated in one physical 39 * easily, subsequent pte tables have to be allocated in one physical
40 * chunk of RAM. 40 * chunk of RAM.
41 */ 41 */
42#define PKMAP_BASE (0xfe000000UL)
43#define LAST_PKMAP 1024 42#define LAST_PKMAP 1024
44#define LAST_PKMAP_MASK (LAST_PKMAP-1) 43#define LAST_PKMAP_MASK (LAST_PKMAP-1)
45#define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT) 44#define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT)
diff --git a/include/asm-mips/mach-ip27/cpu-feature-overrides.h b/include/asm-mips/mach-ip27/cpu-feature-overrides.h
index fe076380c189..7d3112b148d9 100644
--- a/include/asm-mips/mach-ip27/cpu-feature-overrides.h
+++ b/include/asm-mips/mach-ip27/cpu-feature-overrides.h
@@ -34,7 +34,11 @@
34#define cpu_has_64bits 1 34#define cpu_has_64bits 1
35 35
36#define cpu_has_4kex 1 36#define cpu_has_4kex 1
37#define cpu_has_3k_cache 0
38#define cpu_has_6k_cache 0
37#define cpu_has_4k_cache 1 39#define cpu_has_4k_cache 1
40#define cpu_has_8k_cache 0
41#define cpu_has_tx39_cache 0
38 42
39#define cpu_has_inclusive_pcaches 1 43#define cpu_has_inclusive_pcaches 1
40 44
diff --git a/include/asm-mips/mach-jmr3927/ioremap.h b/include/asm-mips/mach-jmr3927/ioremap.h
index aa131ad7f717..29989ff10d66 100644
--- a/include/asm-mips/mach-jmr3927/ioremap.h
+++ b/include/asm-mips/mach-jmr3927/ioremap.h
@@ -25,7 +25,7 @@ static inline void __iomem *plat_ioremap(phys_t offset, unsigned long size,
25{ 25{
26#define TXX9_DIRECTMAP_BASE 0xff000000ul 26#define TXX9_DIRECTMAP_BASE 0xff000000ul
27 if (offset >= TXX9_DIRECTMAP_BASE && 27 if (offset >= TXX9_DIRECTMAP_BASE &&
28 offset < TXX9_DIRECTMAP_BASE + 0xf0000) 28 offset < TXX9_DIRECTMAP_BASE + 0xff0000)
29 return (void __iomem *)offset; 29 return (void __iomem *)offset;
30 return NULL; 30 return NULL;
31} 31}
diff --git a/include/asm-mips/mach-lasat/irq.h b/include/asm-mips/mach-lasat/irq.h
index da75f89f3723..3a282419d5f9 100644
--- a/include/asm-mips/mach-lasat/irq.h
+++ b/include/asm-mips/mach-lasat/irq.h
@@ -1,7 +1,7 @@
1#ifndef _ASM_MACH_LASAT_IRQ_H 1#ifndef _ASM_MACH_LASAT_IRQ_H
2#define _ASM_MACH_LASAT_IRQ_H 2#define _ASM_MACH_LASAT_IRQ_H
3 3
4#define LASAT_CASCADE_IRQ (MIPS_CPU_IRQ_BASE + 0) 4#define LASAT_CASCADE_IRQ (MIPS_CPU_IRQ_BASE + 2)
5 5
6#define LASAT_IRQ_BASE 8 6#define LASAT_IRQ_BASE 8
7#define LASAT_IRQ_END 23 7#define LASAT_IRQ_END 23
diff --git a/include/asm-mips/pgtable-32.h b/include/asm-mips/pgtable-32.h
index a0947092d0e0..ceefe027c761 100644
--- a/include/asm-mips/pgtable-32.h
+++ b/include/asm-mips/pgtable-32.h
@@ -65,6 +65,8 @@ extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1,
65 65
66#define VMALLOC_START MAP_BASE 66#define VMALLOC_START MAP_BASE
67 67
68#define PKMAP_BASE (0xfe000000UL)
69
68#ifdef CONFIG_HIGHMEM 70#ifdef CONFIG_HIGHMEM
69# define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE) 71# define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE)
70#else 72#else
diff --git a/include/asm-mips/time.h b/include/asm-mips/time.h
index a8fd16e1981f..d3bd5c5aa2ec 100644
--- a/include/asm-mips/time.h
+++ b/include/asm-mips/time.h
@@ -64,10 +64,11 @@ static inline int mips_clockevent_init(void)
64 * Initialize the count register as a clocksource 64 * Initialize the count register as a clocksource
65 */ 65 */
66#ifdef CONFIG_CEVT_R4K 66#ifdef CONFIG_CEVT_R4K
67extern void init_mips_clocksource(void); 67extern int init_mips_clocksource(void);
68#else 68#else
69static inline void init_mips_clocksource(void) 69static inline int init_mips_clocksource(void)
70{ 70{
71 return 0;
71} 72}
72#endif 73#endif
73 74
diff --git a/include/asm-powerpc/pgtable-ppc32.h b/include/asm-powerpc/pgtable-ppc32.h
index d1332bbcbd9b..2c79f550272b 100644
--- a/include/asm-powerpc/pgtable-ppc32.h
+++ b/include/asm-powerpc/pgtable-ppc32.h
@@ -339,14 +339,6 @@ extern int icache_44x_need_flush;
339#define _PMD_PAGE_MASK 0x000c 339#define _PMD_PAGE_MASK 0x000c
340#define _PMD_PAGE_8M 0x000c 340#define _PMD_PAGE_8M 0x000c
341 341
342/*
343 * The 8xx TLB miss handler allegedly sets _PAGE_ACCESSED in the PTE
344 * for an address even if _PAGE_PRESENT is not set, as a performance
345 * optimization. This is a bug if you ever want to use swap unless
346 * _PAGE_ACCESSED is 2, which it isn't, or unless you have 8xx-specific
347 * definitions for __swp_entry etc. below, which would be gross.
348 * -- paulus
349 */
350#define _PTE_NONE_MASK _PAGE_ACCESSED 342#define _PTE_NONE_MASK _PAGE_ACCESSED
351 343
352#else /* CONFIG_6xx */ 344#else /* CONFIG_6xx */
diff --git a/include/asm-ppc/pgtable.h b/include/asm-ppc/pgtable.h
index 69347bdbb401..70435d32129a 100644
--- a/include/asm-ppc/pgtable.h
+++ b/include/asm-ppc/pgtable.h
@@ -299,14 +299,6 @@ extern unsigned long ioremap_bot, ioremap_base;
299#define _PMD_PAGE_MASK 0x000c 299#define _PMD_PAGE_MASK 0x000c
300#define _PMD_PAGE_8M 0x000c 300#define _PMD_PAGE_8M 0x000c
301 301
302/*
303 * The 8xx TLB miss handler allegedly sets _PAGE_ACCESSED in the PTE
304 * for an address even if _PAGE_PRESENT is not set, as a performance
305 * optimization. This is a bug if you ever want to use swap unless
306 * _PAGE_ACCESSED is 2, which it isn't, or unless you have 8xx-specific
307 * definitions for __swp_entry etc. below, which would be gross.
308 * -- paulus
309 */
310#define _PTE_NONE_MASK _PAGE_ACCESSED 302#define _PTE_NONE_MASK _PAGE_ACCESSED
311 303
312#else /* CONFIG_6xx */ 304#else /* CONFIG_6xx */
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index 994df3780007..0fac822c1157 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -205,7 +205,6 @@ unifdef-y += futex.h
205unifdef-y += fs.h 205unifdef-y += fs.h
206unifdef-y += gameport.h 206unifdef-y += gameport.h
207unifdef-y += generic_serial.h 207unifdef-y += generic_serial.h
208unifdef-y += genhd.h
209unifdef-y += gfs2_ondisk.h 208unifdef-y += gfs2_ondisk.h
210unifdef-y += hayesesp.h 209unifdef-y += hayesesp.h
211unifdef-y += hdlcdrv.h 210unifdef-y += hdlcdrv.h
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
index fcbe8b640ffb..c8d216357865 100644
--- a/include/linux/ethtool.h
+++ b/include/linux/ethtool.h
@@ -12,6 +12,7 @@
12#ifndef _LINUX_ETHTOOL_H 12#ifndef _LINUX_ETHTOOL_H
13#define _LINUX_ETHTOOL_H 13#define _LINUX_ETHTOOL_H
14 14
15#include <linux/types.h>
15 16
16/* This should work for both 32 and 64 bit userland. */ 17/* This should work for both 32 and 64 bit userland. */
17struct ethtool_cmd { 18struct ethtool_cmd {
diff --git a/include/linux/genhd.h b/include/linux/genhd.h
index 32c2ac49a070..ecd2bf63fc84 100644
--- a/include/linux/genhd.h
+++ b/include/linux/genhd.h
@@ -55,24 +55,6 @@ enum {
55 UNIXWARE_PARTITION = 0x63, /* Same as GNU_HURD and SCO Unix */ 55 UNIXWARE_PARTITION = 0x63, /* Same as GNU_HURD and SCO Unix */
56}; 56};
57 57
58#ifndef __KERNEL__
59
60struct partition {
61 unsigned char boot_ind; /* 0x80 - active */
62 unsigned char head; /* starting head */
63 unsigned char sector; /* starting sector */
64 unsigned char cyl; /* starting cylinder */
65 unsigned char sys_ind; /* What partition type */
66 unsigned char end_head; /* end head */
67 unsigned char end_sector; /* end sector */
68 unsigned char end_cyl; /* end cylinder */
69 unsigned int start_sect; /* starting sector counting from 0 */
70 unsigned int nr_sects; /* nr of sectors in partition */
71} __attribute__((packed));
72
73#endif
74
75#ifdef __KERNEL__
76#include <linux/major.h> 58#include <linux/major.h>
77#include <linux/device.h> 59#include <linux/device.h>
78#include <linux/smp.h> 60#include <linux/smp.h>
@@ -228,7 +210,7 @@ static inline void part_stat_set_all(struct hd_struct *part, int value) {
228 sizeof(struct disk_stats)); 210 sizeof(struct disk_stats));
229} 211}
230 212
231#else 213#else /* !CONFIG_SMP */
232#define __disk_stat_add(gendiskp, field, addnd) \ 214#define __disk_stat_add(gendiskp, field, addnd) \
233 (gendiskp->dkstats.field += addnd) 215 (gendiskp->dkstats.field += addnd)
234#define disk_stat_read(gendiskp, field) (gendiskp->dkstats.field) 216#define disk_stat_read(gendiskp, field) (gendiskp->dkstats.field)
@@ -256,7 +238,7 @@ static inline void part_stat_set_all(struct hd_struct *part, int value)
256 memset(&part->dkstats, value, sizeof(struct disk_stats)); 238 memset(&part->dkstats, value, sizeof(struct disk_stats));
257} 239}
258 240
259#endif 241#endif /* CONFIG_SMP */
260 242
261#define disk_stat_add(gendiskp, field, addnd) \ 243#define disk_stat_add(gendiskp, field, addnd) \
262 do { \ 244 do { \
@@ -395,8 +377,6 @@ static inline void set_capacity(struct gendisk *disk, sector_t size)
395 disk->capacity = size; 377 disk->capacity = size;
396} 378}
397 379
398#endif /* __KERNEL__ */
399
400#ifdef CONFIG_SOLARIS_X86_PARTITION 380#ifdef CONFIG_SOLARIS_X86_PARTITION
401 381
402#define SOLARIS_X86_NUMSLICE 16 382#define SOLARIS_X86_NUMSLICE 16
@@ -540,8 +520,6 @@ struct unixware_disklabel {
540# define MINIX_NR_SUBPARTITIONS 4 520# define MINIX_NR_SUBPARTITIONS 4
541#endif /* CONFIG_MINIX_SUBPARTITION */ 521#endif /* CONFIG_MINIX_SUBPARTITION */
542 522
543#ifdef __KERNEL__
544
545#define ADDPART_FLAG_NONE 0 523#define ADDPART_FLAG_NONE 0
546#define ADDPART_FLAG_RAID 1 524#define ADDPART_FLAG_RAID 1
547#define ADDPART_FLAG_WHOLEDISK 2 525#define ADDPART_FLAG_WHOLEDISK 2
@@ -570,8 +548,6 @@ static inline struct block_device *bdget_disk(struct gendisk *disk, int index)
570 return bdget(MKDEV(disk->major, disk->first_minor) + index); 548 return bdget(MKDEV(disk->major, disk->first_minor) + index);
571} 549}
572 550
573#endif
574
575#else /* CONFIG_BLOCK */ 551#else /* CONFIG_BLOCK */
576 552
577static inline void printk_all_partitions(void) { } 553static inline void printk_all_partitions(void) { }
@@ -584,4 +560,4 @@ static inline dev_t blk_lookup_devt(const char *name)
584 560
585#endif /* CONFIG_BLOCK */ 561#endif /* CONFIG_BLOCK */
586 562
587#endif 563#endif /* _LINUX_GENHD_H */
diff --git a/include/linux/mm.h b/include/linux/mm.h
index 3f3ccfe42de0..b695875d63e3 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -235,15 +235,22 @@ static inline int get_page_unless_zero(struct page *page)
235struct page *vmalloc_to_page(const void *addr); 235struct page *vmalloc_to_page(const void *addr);
236unsigned long vmalloc_to_pfn(const void *addr); 236unsigned long vmalloc_to_pfn(const void *addr);
237 237
238#ifdef CONFIG_MMU 238/*
239/* Determine if an address is within the vmalloc range */ 239 * Determine if an address is within the vmalloc range
240 *
241 * On nommu, vmalloc/vfree wrap through kmalloc/kfree directly, so there
242 * is no special casing required.
243 */
240static inline int is_vmalloc_addr(const void *x) 244static inline int is_vmalloc_addr(const void *x)
241{ 245{
246#ifdef CONFIG_MMU
242 unsigned long addr = (unsigned long)x; 247 unsigned long addr = (unsigned long)x;
243 248
244 return addr >= VMALLOC_START && addr < VMALLOC_END; 249 return addr >= VMALLOC_START && addr < VMALLOC_END;
245} 250#else
251 return 0;
246#endif 252#endif
253}
247 254
248static inline struct page *compound_head(struct page *page) 255static inline struct page *compound_head(struct page *page)
249{ 256{
diff --git a/include/linux/netfilter/nfnetlink_compat.h b/include/linux/netfilter/nfnetlink_compat.h
index 02a42d875cf7..e1451760c9cd 100644
--- a/include/linux/netfilter/nfnetlink_compat.h
+++ b/include/linux/netfilter/nfnetlink_compat.h
@@ -1,6 +1,6 @@
1#ifndef _NFNETLINK_COMPAT_H 1#ifndef _NFNETLINK_COMPAT_H
2#define _NFNETLINK_COMPAT_H 2#define _NFNETLINK_COMPAT_H
3#ifndef __KERNEL 3#ifndef __KERNEL__
4/* Old nfnetlink macros for userspace */ 4/* Old nfnetlink macros for userspace */
5 5
6/* nfnetlink groups: Up to 32 maximum */ 6/* nfnetlink groups: Up to 32 maximum */
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 38eff1947750..9010f5458767 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -278,6 +278,7 @@ struct pci_bus {
278 struct device dev; 278 struct device dev;
279 struct bin_attribute *legacy_io; /* legacy I/O for this bus */ 279 struct bin_attribute *legacy_io; /* legacy I/O for this bus */
280 struct bin_attribute *legacy_mem; /* legacy mem */ 280 struct bin_attribute *legacy_mem; /* legacy mem */
281 unsigned int is_added:1;
281}; 282};
282 283
283#define pci_bus_b(n) list_entry(n, struct pci_bus, node) 284#define pci_bus_b(n) list_entry(n, struct pci_bus, node)
diff --git a/include/linux/pmu.h b/include/linux/pmu.h
index 4c5f65392d36..cafe98d96948 100644
--- a/include/linux/pmu.h
+++ b/include/linux/pmu.h
@@ -147,8 +147,15 @@ extern void pmu_wait_complete(struct adb_request *req);
147/* For use before switching interrupts off for a long time; 147/* For use before switching interrupts off for a long time;
148 * warning: not stackable 148 * warning: not stackable
149 */ 149 */
150#if defined(CONFIG_ADB_PMU)
150extern void pmu_suspend(void); 151extern void pmu_suspend(void);
151extern void pmu_resume(void); 152extern void pmu_resume(void);
153#else
154static inline void pmu_suspend(void)
155{}
156static inline void pmu_resume(void)
157{}
158#endif
152 159
153extern void pmu_enable_irled(int on); 160extern void pmu_enable_irled(int on);
154 161
@@ -192,7 +199,7 @@ extern unsigned int pmu_power_flags;
192extern void pmu_backlight_init(void); 199extern void pmu_backlight_init(void);
193 200
194/* some code needs to know if the PMU was suspended for hibernation */ 201/* some code needs to know if the PMU was suspended for hibernation */
195#if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32) 202#if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32)
196extern int pmu_sys_suspended; 203extern int pmu_sys_suspended;
197#else 204#else
198/* if power management is not configured it can't be suspended */ 205/* if power management is not configured it can't be suspended */
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
index d9a9e718ad19..9b6c935f69cf 100644
--- a/include/linux/proc_fs.h
+++ b/include/linux/proc_fs.h
@@ -50,8 +50,6 @@ typedef int (read_proc_t)(char *page, char **start, off_t off,
50typedef int (write_proc_t)(struct file *file, const char __user *buffer, 50typedef int (write_proc_t)(struct file *file, const char __user *buffer,
51 unsigned long count, void *data); 51 unsigned long count, void *data);
52typedef int (get_info_t)(char *, char **, off_t, int); 52typedef int (get_info_t)(char *, char **, off_t, int);
53typedef struct proc_dir_entry *(shadow_proc_t)(struct task_struct *task,
54 struct proc_dir_entry *pde);
55 53
56struct proc_dir_entry { 54struct proc_dir_entry {
57 unsigned int low_ino; 55 unsigned int low_ino;
@@ -82,7 +80,6 @@ struct proc_dir_entry {
82 int pde_users; /* number of callers into module in progress */ 80 int pde_users; /* number of callers into module in progress */
83 spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ 81 spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */
84 struct completion *pde_unload_completion; 82 struct completion *pde_unload_completion;
85 shadow_proc_t *shadow_proc;
86}; 83};
87 84
88struct kcore_list { 85struct kcore_list {
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h
index 771d17783c18..750648df13f4 100644
--- a/include/net/bluetooth/bluetooth.h
+++ b/include/net/bluetooth/bluetooth.h
@@ -170,7 +170,7 @@ static inline int skb_frags_no(struct sk_buff *skb)
170int bt_err(__u16 code); 170int bt_err(__u16 code);
171 171
172extern int hci_sock_init(void); 172extern int hci_sock_init(void);
173extern int hci_sock_cleanup(void); 173extern void hci_sock_cleanup(void);
174 174
175extern int bt_sysfs_init(void); 175extern int bt_sysfs_init(void);
176extern void bt_sysfs_cleanup(void); 176extern void bt_sysfs_cleanup(void);
diff --git a/include/net/irda/irttp.h b/include/net/irda/irttp.h
index 32c385dd9e06..0788c23d2828 100644
--- a/include/net/irda/irttp.h
+++ b/include/net/irda/irttp.h
@@ -169,17 +169,17 @@ int irttp_disconnect_request(struct tsap_cb *self, struct sk_buff *skb,
169void irttp_flow_request(struct tsap_cb *self, LOCAL_FLOW flow); 169void irttp_flow_request(struct tsap_cb *self, LOCAL_FLOW flow);
170struct tsap_cb *irttp_dup(struct tsap_cb *self, void *instance); 170struct tsap_cb *irttp_dup(struct tsap_cb *self, void *instance);
171 171
172static __inline __u32 irttp_get_saddr(struct tsap_cb *self) 172static inline __u32 irttp_get_saddr(struct tsap_cb *self)
173{ 173{
174 return irlmp_get_saddr(self->lsap); 174 return irlmp_get_saddr(self->lsap);
175} 175}
176 176
177static __inline __u32 irttp_get_daddr(struct tsap_cb *self) 177static inline __u32 irttp_get_daddr(struct tsap_cb *self)
178{ 178{
179 return irlmp_get_daddr(self->lsap); 179 return irlmp_get_daddr(self->lsap);
180} 180}
181 181
182static __inline __u32 irttp_get_max_seg_size(struct tsap_cb *self) 182static inline __u32 irttp_get_max_seg_size(struct tsap_cb *self)
183{ 183{
184 return self->max_seg_size; 184 return self->max_seg_size;
185} 185}
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
index 28738b7d53eb..923f2b8b9096 100644
--- a/include/net/net_namespace.h
+++ b/include/net/net_namespace.h
@@ -31,7 +31,6 @@ struct net {
31 31
32 struct proc_dir_entry *proc_net; 32 struct proc_dir_entry *proc_net;
33 struct proc_dir_entry *proc_net_stat; 33 struct proc_dir_entry *proc_net_stat;
34 struct proc_dir_entry *proc_net_root;
35 34
36 struct list_head sysctl_table_headers; 35 struct list_head sysctl_table_headers;
37 36
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h
index 49aac6323fbe..f736e842977f 100644
--- a/include/net/netfilter/nf_conntrack_extend.h
+++ b/include/net/netfilter/nf_conntrack_extend.h
@@ -17,7 +17,6 @@ enum nf_ct_ext_id
17struct nf_ct_ext { 17struct nf_ct_ext {
18 u8 offset[NF_CT_EXT_NUM]; 18 u8 offset[NF_CT_EXT_NUM];
19 u8 len; 19 u8 len;
20 u8 real_len;
21 char data[0]; 20 char data[0];
22}; 21};
23 22
diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig
index 79833170bb9c..6233f3b4ae66 100644
--- a/kernel/power/Kconfig
+++ b/kernel/power/Kconfig
@@ -190,7 +190,7 @@ config APM_EMULATION
190 notification of APM "events" (e.g. battery status change). 190 notification of APM "events" (e.g. battery status change).
191 191
192 In order to use APM, you will need supporting software. For location 192 In order to use APM, you will need supporting software. For location
193 and more information, read <file:Documentation/pm.txt> and the 193 and more information, read <file:Documentation/power/pm.txt> and the
194 Battery Powered Linux mini-HOWTO, available from 194 Battery Powered Linux mini-HOWTO, available from
195 <http://www.tldp.org/docs.html#howto>. 195 <http://www.tldp.org/docs.html#howto>.
196 196
diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c
index 72a020cabb4c..5f91a07c4eac 100644
--- a/kernel/power/snapshot.c
+++ b/kernel/power/snapshot.c
@@ -447,7 +447,7 @@ static void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free)
447 * of @bm->cur_zone_bm are updated. 447 * of @bm->cur_zone_bm are updated.
448 */ 448 */
449 449
450static void memory_bm_find_bit(struct memory_bitmap *bm, unsigned long pfn, 450static int memory_bm_find_bit(struct memory_bitmap *bm, unsigned long pfn,
451 void **addr, unsigned int *bit_nr) 451 void **addr, unsigned int *bit_nr)
452{ 452{
453 struct zone_bitmap *zone_bm; 453 struct zone_bitmap *zone_bm;
@@ -461,7 +461,8 @@ static void memory_bm_find_bit(struct memory_bitmap *bm, unsigned long pfn,
461 while (pfn < zone_bm->start_pfn || pfn >= zone_bm->end_pfn) { 461 while (pfn < zone_bm->start_pfn || pfn >= zone_bm->end_pfn) {
462 zone_bm = zone_bm->next; 462 zone_bm = zone_bm->next;
463 463
464 BUG_ON(!zone_bm); 464 if (!zone_bm)
465 return -EFAULT;
465 } 466 }
466 bm->cur.zone_bm = zone_bm; 467 bm->cur.zone_bm = zone_bm;
467 } 468 }
@@ -479,23 +480,40 @@ static void memory_bm_find_bit(struct memory_bitmap *bm, unsigned long pfn,
479 pfn -= bb->start_pfn; 480 pfn -= bb->start_pfn;
480 *bit_nr = pfn % BM_BITS_PER_CHUNK; 481 *bit_nr = pfn % BM_BITS_PER_CHUNK;
481 *addr = bb->data + pfn / BM_BITS_PER_CHUNK; 482 *addr = bb->data + pfn / BM_BITS_PER_CHUNK;
483 return 0;
482} 484}
483 485
484static void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn) 486static void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn)
485{ 487{
486 void *addr; 488 void *addr;
487 unsigned int bit; 489 unsigned int bit;
490 int error;
488 491
489 memory_bm_find_bit(bm, pfn, &addr, &bit); 492 error = memory_bm_find_bit(bm, pfn, &addr, &bit);
493 BUG_ON(error);
490 set_bit(bit, addr); 494 set_bit(bit, addr);
491} 495}
492 496
497static int mem_bm_set_bit_check(struct memory_bitmap *bm, unsigned long pfn)
498{
499 void *addr;
500 unsigned int bit;
501 int error;
502
503 error = memory_bm_find_bit(bm, pfn, &addr, &bit);
504 if (!error)
505 set_bit(bit, addr);
506 return error;
507}
508
493static void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn) 509static void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn)
494{ 510{
495 void *addr; 511 void *addr;
496 unsigned int bit; 512 unsigned int bit;
513 int error;
497 514
498 memory_bm_find_bit(bm, pfn, &addr, &bit); 515 error = memory_bm_find_bit(bm, pfn, &addr, &bit);
516 BUG_ON(error);
499 clear_bit(bit, addr); 517 clear_bit(bit, addr);
500} 518}
501 519
@@ -503,8 +521,10 @@ static int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn)
503{ 521{
504 void *addr; 522 void *addr;
505 unsigned int bit; 523 unsigned int bit;
524 int error;
506 525
507 memory_bm_find_bit(bm, pfn, &addr, &bit); 526 error = memory_bm_find_bit(bm, pfn, &addr, &bit);
527 BUG_ON(error);
508 return test_bit(bit, addr); 528 return test_bit(bit, addr);
509} 529}
510 530
@@ -709,8 +729,15 @@ static void mark_nosave_pages(struct memory_bitmap *bm)
709 region->end_pfn << PAGE_SHIFT); 729 region->end_pfn << PAGE_SHIFT);
710 730
711 for (pfn = region->start_pfn; pfn < region->end_pfn; pfn++) 731 for (pfn = region->start_pfn; pfn < region->end_pfn; pfn++)
712 if (pfn_valid(pfn)) 732 if (pfn_valid(pfn)) {
713 memory_bm_set_bit(bm, pfn); 733 /*
734 * It is safe to ignore the result of
735 * mem_bm_set_bit_check() here, since we won't
736 * touch the PFNs for which the error is
737 * returned anyway.
738 */
739 mem_bm_set_bit_check(bm, pfn);
740 }
714 } 741 }
715} 742}
716 743
diff --git a/lib/swiotlb.c b/lib/swiotlb.c
index 4bb5a11e18a2..025922807e6e 100644
--- a/lib/swiotlb.c
+++ b/lib/swiotlb.c
@@ -310,7 +310,9 @@ map_single(struct device *hwdev, char *buffer, size_t size, int dir)
310 start_dma_addr = virt_to_bus(io_tlb_start) & mask; 310 start_dma_addr = virt_to_bus(io_tlb_start) & mask;
311 311
312 offset_slots = ALIGN(start_dma_addr, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT; 312 offset_slots = ALIGN(start_dma_addr, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT;
313 max_slots = ALIGN(mask + 1, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT; 313 max_slots = mask + 1
314 ? ALIGN(mask + 1, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT
315 : 1UL << (BITS_PER_LONG - IO_TLB_SHIFT);
314 316
315 /* 317 /*
316 * For mappings greater than a page, we limit the stride (and 318 * For mappings greater than a page, we limit the stride (and
@@ -333,16 +335,18 @@ map_single(struct device *hwdev, char *buffer, size_t size, int dir)
333 index = ALIGN(io_tlb_index, stride); 335 index = ALIGN(io_tlb_index, stride);
334 if (index >= io_tlb_nslabs) 336 if (index >= io_tlb_nslabs)
335 index = 0; 337 index = 0;
336
337 while (is_span_boundary(index, nslots, offset_slots,
338 max_slots)) {
339 index += stride;
340 if (index >= io_tlb_nslabs)
341 index = 0;
342 }
343 wrap = index; 338 wrap = index;
344 339
345 do { 340 do {
341 while (is_span_boundary(index, nslots, offset_slots,
342 max_slots)) {
343 index += stride;
344 if (index >= io_tlb_nslabs)
345 index = 0;
346 if (index == wrap)
347 goto not_found;
348 }
349
346 /* 350 /*
347 * If we find a slot that indicates we have 'nslots' 351 * If we find a slot that indicates we have 'nslots'
348 * number of contiguous buffers, we allocate the 352 * number of contiguous buffers, we allocate the
@@ -367,14 +371,12 @@ map_single(struct device *hwdev, char *buffer, size_t size, int dir)
367 371
368 goto found; 372 goto found;
369 } 373 }
370 do { 374 index += stride;
371 index += stride; 375 if (index >= io_tlb_nslabs)
372 if (index >= io_tlb_nslabs) 376 index = 0;
373 index = 0;
374 } while (is_span_boundary(index, nslots, offset_slots,
375 max_slots));
376 } while (index != wrap); 377 } while (index != wrap);
377 378
379 not_found:
378 spin_unlock_irqrestore(&io_tlb_lock, flags); 380 spin_unlock_irqrestore(&io_tlb_lock, flags);
379 return NULL; 381 return NULL;
380 } 382 }
diff --git a/net/bluetooth/bnep/bnep.h b/net/bluetooth/bnep/bnep.h
index a2992280c3d1..e69244dd8de8 100644
--- a/net/bluetooth/bnep/bnep.h
+++ b/net/bluetooth/bnep/bnep.h
@@ -174,7 +174,7 @@ struct bnep_session {
174 174
175void bnep_net_setup(struct net_device *dev); 175void bnep_net_setup(struct net_device *dev);
176int bnep_sock_init(void); 176int bnep_sock_init(void);
177int bnep_sock_cleanup(void); 177void bnep_sock_cleanup(void);
178 178
179static inline int bnep_mc_hash(__u8 *addr) 179static inline int bnep_mc_hash(__u8 *addr)
180{ 180{
diff --git a/net/bluetooth/bnep/sock.c b/net/bluetooth/bnep/sock.c
index 81065e548a1f..201e5b1ce473 100644
--- a/net/bluetooth/bnep/sock.c
+++ b/net/bluetooth/bnep/sock.c
@@ -257,12 +257,10 @@ error:
257 return err; 257 return err;
258} 258}
259 259
260int __exit bnep_sock_cleanup(void) 260void __exit bnep_sock_cleanup(void)
261{ 261{
262 if (bt_sock_unregister(BTPROTO_BNEP) < 0) 262 if (bt_sock_unregister(BTPROTO_BNEP) < 0)
263 BT_ERR("Can't unregister BNEP socket"); 263 BT_ERR("Can't unregister BNEP socket");
264 264
265 proto_unregister(&bnep_proto); 265 proto_unregister(&bnep_proto);
266
267 return 0;
268} 266}
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 930b58e7149a..aec6929f5c16 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -902,8 +902,6 @@ int hci_unregister_dev(struct hci_dev *hdev)
902 902
903 BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type); 903 BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type);
904 904
905 hci_unregister_sysfs(hdev);
906
907 write_lock_bh(&hci_dev_list_lock); 905 write_lock_bh(&hci_dev_list_lock);
908 list_del(&hdev->list); 906 list_del(&hdev->list);
909 write_unlock_bh(&hci_dev_list_lock); 907 write_unlock_bh(&hci_dev_list_lock);
@@ -915,6 +913,8 @@ int hci_unregister_dev(struct hci_dev *hdev)
915 913
916 hci_notify(hdev, HCI_DEV_UNREG); 914 hci_notify(hdev, HCI_DEV_UNREG);
917 915
916 hci_unregister_sysfs(hdev);
917
918 __hci_dev_put(hdev); 918 __hci_dev_put(hdev);
919 919
920 return 0; 920 return 0;
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c
index 14991323c273..b5d4019d3572 100644
--- a/net/bluetooth/hci_sock.c
+++ b/net/bluetooth/hci_sock.c
@@ -734,7 +734,7 @@ error:
734 return err; 734 return err;
735} 735}
736 736
737int __exit hci_sock_cleanup(void) 737void __exit hci_sock_cleanup(void)
738{ 738{
739 if (bt_sock_unregister(BTPROTO_HCI) < 0) 739 if (bt_sock_unregister(BTPROTO_HCI) < 0)
740 BT_ERR("HCI socket unregistration failed"); 740 BT_ERR("HCI socket unregistration failed");
@@ -742,6 +742,4 @@ int __exit hci_sock_cleanup(void)
742 hci_unregister_notifier(&hci_sock_nblock); 742 hci_unregister_notifier(&hci_sock_nblock);
743 743
744 proto_unregister(&hci_sk_proto); 744 proto_unregister(&hci_sk_proto);
745
746 return 0;
747} 745}
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index ed750f9ceb07..01578f544ad6 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -1035,6 +1035,13 @@ static void tcp_cwnd_validate(struct sock *sk)
1035 * introducing MSS oddities to segment boundaries. In rare cases where 1035 * introducing MSS oddities to segment boundaries. In rare cases where
1036 * mss_now != mss_cache, we will request caller to create a small skb 1036 * mss_now != mss_cache, we will request caller to create a small skb
1037 * per input skb which could be mostly avoided here (if desired). 1037 * per input skb which could be mostly avoided here (if desired).
1038 *
1039 * We explicitly want to create a request for splitting write queue tail
1040 * to a small skb for Nagle purposes while avoiding unnecessary modulos,
1041 * thus all the complexity (cwnd_len is always MSS multiple which we
1042 * return whenever allowed by the other factors). Basically we need the
1043 * modulo only when the receiver window alone is the limiting factor or
1044 * when we would be allowed to send the split-due-to-Nagle skb fully.
1038 */ 1045 */
1039static unsigned int tcp_mss_split_point(struct sock *sk, struct sk_buff *skb, 1046static unsigned int tcp_mss_split_point(struct sock *sk, struct sk_buff *skb,
1040 unsigned int mss_now, unsigned int cwnd) 1047 unsigned int mss_now, unsigned int cwnd)
@@ -1048,10 +1055,11 @@ static unsigned int tcp_mss_split_point(struct sock *sk, struct sk_buff *skb,
1048 if (likely(cwnd_len <= window && skb != tcp_write_queue_tail(sk))) 1055 if (likely(cwnd_len <= window && skb != tcp_write_queue_tail(sk)))
1049 return cwnd_len; 1056 return cwnd_len;
1050 1057
1051 if (skb == tcp_write_queue_tail(sk) && cwnd_len <= skb->len) 1058 needed = min(skb->len, window);
1059
1060 if (skb == tcp_write_queue_tail(sk) && cwnd_len <= needed)
1052 return cwnd_len; 1061 return cwnd_len;
1053 1062
1054 needed = min(skb->len, window);
1055 return needed - needed % mss_now; 1063 return needed - needed % mss_now;
1056} 1064}
1057 1065
diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c
index e06bf0028bb1..684ec9c1ad38 100644
--- a/net/netfilter/nf_conntrack_expect.c
+++ b/net/netfilter/nf_conntrack_expect.c
@@ -381,7 +381,7 @@ int nf_ct_expect_related(struct nf_conntrack_expect *expect)
381 if (nf_ct_expect_count >= nf_ct_expect_max) { 381 if (nf_ct_expect_count >= nf_ct_expect_max) {
382 if (net_ratelimit()) 382 if (net_ratelimit())
383 printk(KERN_WARNING 383 printk(KERN_WARNING
384 "nf_conntrack: expectation table full"); 384 "nf_conntrack: expectation table full\n");
385 ret = -EMFILE; 385 ret = -EMFILE;
386 goto out; 386 goto out;
387 } 387 }
diff --git a/net/netfilter/nf_conntrack_extend.c b/net/netfilter/nf_conntrack_extend.c
index 8b9be1e978cd..2bd9963b5b3e 100644
--- a/net/netfilter/nf_conntrack_extend.c
+++ b/net/netfilter/nf_conntrack_extend.c
@@ -19,14 +19,6 @@
19static struct nf_ct_ext_type *nf_ct_ext_types[NF_CT_EXT_NUM]; 19static struct nf_ct_ext_type *nf_ct_ext_types[NF_CT_EXT_NUM];
20static DEFINE_MUTEX(nf_ct_ext_type_mutex); 20static DEFINE_MUTEX(nf_ct_ext_type_mutex);
21 21
22/* Horrible trick to figure out smallest amount worth kmallocing. */
23#define CACHE(x) (x) + 0 *
24enum {
25 NF_CT_EXT_MIN_SIZE =
26#include <linux/kmalloc_sizes.h>
27 1 };
28#undef CACHE
29
30void __nf_ct_ext_destroy(struct nf_conn *ct) 22void __nf_ct_ext_destroy(struct nf_conn *ct)
31{ 23{
32 unsigned int i; 24 unsigned int i;
@@ -53,7 +45,7 @@ EXPORT_SYMBOL(__nf_ct_ext_destroy);
53static void * 45static void *
54nf_ct_ext_create(struct nf_ct_ext **ext, enum nf_ct_ext_id id, gfp_t gfp) 46nf_ct_ext_create(struct nf_ct_ext **ext, enum nf_ct_ext_id id, gfp_t gfp)
55{ 47{
56 unsigned int off, len, real_len; 48 unsigned int off, len;
57 struct nf_ct_ext_type *t; 49 struct nf_ct_ext_type *t;
58 50
59 rcu_read_lock(); 51 rcu_read_lock();
@@ -61,16 +53,14 @@ nf_ct_ext_create(struct nf_ct_ext **ext, enum nf_ct_ext_id id, gfp_t gfp)
61 BUG_ON(t == NULL); 53 BUG_ON(t == NULL);
62 off = ALIGN(sizeof(struct nf_ct_ext), t->align); 54 off = ALIGN(sizeof(struct nf_ct_ext), t->align);
63 len = off + t->len; 55 len = off + t->len;
64 real_len = t->alloc_size;
65 rcu_read_unlock(); 56 rcu_read_unlock();
66 57
67 *ext = kzalloc(real_len, gfp); 58 *ext = kzalloc(t->alloc_size, gfp);
68 if (!*ext) 59 if (!*ext)
69 return NULL; 60 return NULL;
70 61
71 (*ext)->offset[id] = off; 62 (*ext)->offset[id] = off;
72 (*ext)->len = len; 63 (*ext)->len = len;
73 (*ext)->real_len = real_len;
74 64
75 return (void *)(*ext) + off; 65 return (void *)(*ext) + off;
76} 66}
@@ -95,7 +85,7 @@ void *__nf_ct_ext_add(struct nf_conn *ct, enum nf_ct_ext_id id, gfp_t gfp)
95 newlen = newoff + t->len; 85 newlen = newoff + t->len;
96 rcu_read_unlock(); 86 rcu_read_unlock();
97 87
98 if (newlen >= ct->ext->real_len) { 88 if (newlen >= ksize(ct->ext)) {
99 new = kmalloc(newlen, gfp); 89 new = kmalloc(newlen, gfp);
100 if (!new) 90 if (!new)
101 return NULL; 91 return NULL;
@@ -114,7 +104,6 @@ void *__nf_ct_ext_add(struct nf_conn *ct, enum nf_ct_ext_id id, gfp_t gfp)
114 rcu_read_unlock(); 104 rcu_read_unlock();
115 } 105 }
116 kfree(ct->ext); 106 kfree(ct->ext);
117 new->real_len = newlen;
118 ct->ext = new; 107 ct->ext = new;
119 } 108 }
120 109
@@ -156,8 +145,6 @@ static void update_alloc_size(struct nf_ct_ext_type *type)
156 t1->alloc_size = ALIGN(t1->alloc_size, t2->align) 145 t1->alloc_size = ALIGN(t1->alloc_size, t2->align)
157 + t2->len; 146 + t2->len;
158 } 147 }
159 if (t1->alloc_size < NF_CT_EXT_MIN_SIZE)
160 t1->alloc_size = NF_CT_EXT_MIN_SIZE;
161 } 148 }
162} 149}
163 150
diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c
index bfc2928c1912..ddc80ea114cd 100644
--- a/net/netfilter/nf_queue.c
+++ b/net/netfilter/nf_queue.c
@@ -51,7 +51,7 @@ int nf_unregister_queue_handler(int pf, const struct nf_queue_handler *qh)
51 return -EINVAL; 51 return -EINVAL;
52 52
53 mutex_lock(&queue_handler_mutex); 53 mutex_lock(&queue_handler_mutex);
54 if (queue_handler[pf] != qh) { 54 if (queue_handler[pf] && queue_handler[pf] != qh) {
55 mutex_unlock(&queue_handler_mutex); 55 mutex_unlock(&queue_handler_mutex);
56 return -EINVAL; 56 return -EINVAL;
57 } 57 }
diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c
index 7efa40d47393..bf3f19b21fe4 100644
--- a/net/netfilter/nfnetlink_log.c
+++ b/net/netfilter/nfnetlink_log.c
@@ -556,7 +556,7 @@ nfulnl_log_packet(unsigned int pf,
556 /* FIXME: do we want to make the size calculation conditional based on 556 /* FIXME: do we want to make the size calculation conditional based on
557 * what is actually present? way more branches and checks, but more 557 * what is actually present? way more branches and checks, but more
558 * memory efficient... */ 558 * memory efficient... */
559 size = NLMSG_ALIGN(sizeof(struct nfgenmsg)) 559 size = NLMSG_SPACE(sizeof(struct nfgenmsg))
560 + nla_total_size(sizeof(struct nfulnl_msg_packet_hdr)) 560 + nla_total_size(sizeof(struct nfulnl_msg_packet_hdr))
561 + nla_total_size(sizeof(u_int32_t)) /* ifindex */ 561 + nla_total_size(sizeof(u_int32_t)) /* ifindex */
562 + nla_total_size(sizeof(u_int32_t)) /* ifindex */ 562 + nla_total_size(sizeof(u_int32_t)) /* ifindex */
@@ -702,20 +702,30 @@ nfulnl_recv_config(struct sock *ctnl, struct sk_buff *skb,
702 struct nfgenmsg *nfmsg = NLMSG_DATA(nlh); 702 struct nfgenmsg *nfmsg = NLMSG_DATA(nlh);
703 u_int16_t group_num = ntohs(nfmsg->res_id); 703 u_int16_t group_num = ntohs(nfmsg->res_id);
704 struct nfulnl_instance *inst; 704 struct nfulnl_instance *inst;
705 struct nfulnl_msg_config_cmd *cmd = NULL;
705 int ret = 0; 706 int ret = 0;
706 707
708 if (nfula[NFULA_CFG_CMD]) {
709 u_int8_t pf = nfmsg->nfgen_family;
710 cmd = nla_data(nfula[NFULA_CFG_CMD]);
711
712 /* Commands without queue context */
713 switch (cmd->command) {
714 case NFULNL_CFG_CMD_PF_BIND:
715 return nf_log_register(pf, &nfulnl_logger);
716 case NFULNL_CFG_CMD_PF_UNBIND:
717 nf_log_unregister_pf(pf);
718 return 0;
719 }
720 }
721
707 inst = instance_lookup_get(group_num); 722 inst = instance_lookup_get(group_num);
708 if (inst && inst->peer_pid != NETLINK_CB(skb).pid) { 723 if (inst && inst->peer_pid != NETLINK_CB(skb).pid) {
709 ret = -EPERM; 724 ret = -EPERM;
710 goto out_put; 725 goto out_put;
711 } 726 }
712 727
713 if (nfula[NFULA_CFG_CMD]) { 728 if (cmd != NULL) {
714 u_int8_t pf = nfmsg->nfgen_family;
715 struct nfulnl_msg_config_cmd *cmd;
716
717 cmd = nla_data(nfula[NFULA_CFG_CMD]);
718
719 switch (cmd->command) { 729 switch (cmd->command) {
720 case NFULNL_CFG_CMD_BIND: 730 case NFULNL_CFG_CMD_BIND:
721 if (inst) { 731 if (inst) {
@@ -738,14 +748,6 @@ nfulnl_recv_config(struct sock *ctnl, struct sk_buff *skb,
738 748
739 instance_destroy(inst); 749 instance_destroy(inst);
740 goto out; 750 goto out;
741 case NFULNL_CFG_CMD_PF_BIND:
742 ret = nf_log_register(pf, &nfulnl_logger);
743 break;
744 case NFULNL_CFG_CMD_PF_UNBIND:
745 /* This is a bug and a feature. We cannot unregister
746 * other handlers, like nfnetlink_inst can */
747 nf_log_unregister_pf(pf);
748 break;
749 default: 751 default:
750 ret = -ENOTSUPP; 752 ret = -ENOTSUPP;
751 break; 753 break;
diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c
index 0043d3a9f87e..012cb6910820 100644
--- a/net/netfilter/nfnetlink_queue.c
+++ b/net/netfilter/nfnetlink_queue.c
@@ -224,7 +224,7 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
224 struct net_device *indev; 224 struct net_device *indev;
225 struct net_device *outdev; 225 struct net_device *outdev;
226 226
227 size = NLMSG_ALIGN(sizeof(struct nfgenmsg)) 227 size = NLMSG_SPACE(sizeof(struct nfgenmsg))
228 + nla_total_size(sizeof(struct nfqnl_msg_packet_hdr)) 228 + nla_total_size(sizeof(struct nfqnl_msg_packet_hdr))
229 + nla_total_size(sizeof(u_int32_t)) /* ifindex */ 229 + nla_total_size(sizeof(u_int32_t)) /* ifindex */
230 + nla_total_size(sizeof(u_int32_t)) /* ifindex */ 230 + nla_total_size(sizeof(u_int32_t)) /* ifindex */
@@ -703,19 +703,12 @@ nfqnl_recv_config(struct sock *ctnl, struct sk_buff *skb,
703 /* Commands without queue context - might sleep */ 703 /* Commands without queue context - might sleep */
704 switch (cmd->command) { 704 switch (cmd->command) {
705 case NFQNL_CFG_CMD_PF_BIND: 705 case NFQNL_CFG_CMD_PF_BIND:
706 ret = nf_register_queue_handler(ntohs(cmd->pf), 706 return nf_register_queue_handler(ntohs(cmd->pf),
707 &nfqh); 707 &nfqh);
708 break;
709 case NFQNL_CFG_CMD_PF_UNBIND: 708 case NFQNL_CFG_CMD_PF_UNBIND:
710 ret = nf_unregister_queue_handler(ntohs(cmd->pf), 709 return nf_unregister_queue_handler(ntohs(cmd->pf),
711 &nfqh); 710 &nfqh);
712 break;
713 default:
714 break;
715 } 711 }
716
717 if (ret < 0)
718 return ret;
719 } 712 }
720 713
721 rcu_read_lock(); 714 rcu_read_lock();
diff --git a/net/netfilter/xt_time.c b/net/netfilter/xt_time.c
index e9a8794bc3ab..9fa2e0824708 100644
--- a/net/netfilter/xt_time.c
+++ b/net/netfilter/xt_time.c
@@ -95,8 +95,11 @@ static inline void localtime_2(struct xtm *r, time_t time)
95 */ 95 */
96 r->dse = time / 86400; 96 r->dse = time / 86400;
97 97
98 /* 1970-01-01 (w=0) was a Thursday (4). */ 98 /*
99 r->weekday = (4 + r->dse) % 7; 99 * 1970-01-01 (w=0) was a Thursday (4).
100 * -1 and +1 map Sunday properly onto 7.
101 */
102 r->weekday = (4 + r->dse - 1) % 7 + 1;
100} 103}
101 104
102static void localtime_3(struct xtm *r, time_t time) 105static void localtime_3(struct xtm *r, time_t time)
diff --git a/net/rxrpc/ar-recvmsg.c b/net/rxrpc/ar-recvmsg.c
index f19121d4795b..a39bf97f8830 100644
--- a/net/rxrpc/ar-recvmsg.c
+++ b/net/rxrpc/ar-recvmsg.c
@@ -143,7 +143,8 @@ int rxrpc_recvmsg(struct kiocb *iocb, struct socket *sock,
143 /* copy the peer address and timestamp */ 143 /* copy the peer address and timestamp */
144 if (!continue_call) { 144 if (!continue_call) {
145 if (msg->msg_name && msg->msg_namelen > 0) 145 if (msg->msg_name && msg->msg_namelen > 0)
146 memcpy(&msg->msg_name, &call->conn->trans->peer->srx, 146 memcpy(msg->msg_name,
147 &call->conn->trans->peer->srx,
147 sizeof(call->conn->trans->peer->srx)); 148 sizeof(call->conn->trans->peer->srx));
148 sock_recv_timestamp(msg, &rx->sk, skb); 149 sock_recv_timestamp(msg, &rx->sk, skb);
149 } 150 }
diff --git a/net/sctp/bind_addr.c b/net/sctp/bind_addr.c
index a27511ebc4cb..ceefda025e2d 100644
--- a/net/sctp/bind_addr.c
+++ b/net/sctp/bind_addr.c
@@ -209,6 +209,7 @@ int sctp_add_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *new,
209int sctp_del_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *del_addr) 209int sctp_del_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *del_addr)
210{ 210{
211 struct sctp_sockaddr_entry *addr, *temp; 211 struct sctp_sockaddr_entry *addr, *temp;
212 int found = 0;
212 213
213 /* We hold the socket lock when calling this function, 214 /* We hold the socket lock when calling this function,
214 * and that acts as a writer synchronizing lock. 215 * and that acts as a writer synchronizing lock.
@@ -216,13 +217,14 @@ int sctp_del_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *del_addr)
216 list_for_each_entry_safe(addr, temp, &bp->address_list, list) { 217 list_for_each_entry_safe(addr, temp, &bp->address_list, list) {
217 if (sctp_cmp_addr_exact(&addr->a, del_addr)) { 218 if (sctp_cmp_addr_exact(&addr->a, del_addr)) {
218 /* Found the exact match. */ 219 /* Found the exact match. */
220 found = 1;
219 addr->valid = 0; 221 addr->valid = 0;
220 list_del_rcu(&addr->list); 222 list_del_rcu(&addr->list);
221 break; 223 break;
222 } 224 }
223 } 225 }
224 226
225 if (addr && !addr->valid) { 227 if (found) {
226 call_rcu(&addr->rcu, sctp_local_addr_free); 228 call_rcu(&addr->rcu, sctp_local_addr_free);
227 SCTP_DBG_OBJCNT_DEC(addr); 229 SCTP_DBG_OBJCNT_DEC(addr);
228 return 0; 230 return 0;
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
index 87f940587d5f..9aa0733aee87 100644
--- a/net/sctp/ipv6.c
+++ b/net/sctp/ipv6.c
@@ -89,6 +89,7 @@ static int sctp_inet6addr_event(struct notifier_block *this, unsigned long ev,
89 struct inet6_ifaddr *ifa = (struct inet6_ifaddr *)ptr; 89 struct inet6_ifaddr *ifa = (struct inet6_ifaddr *)ptr;
90 struct sctp_sockaddr_entry *addr = NULL; 90 struct sctp_sockaddr_entry *addr = NULL;
91 struct sctp_sockaddr_entry *temp; 91 struct sctp_sockaddr_entry *temp;
92 int found = 0;
92 93
93 switch (ev) { 94 switch (ev) {
94 case NETDEV_UP: 95 case NETDEV_UP:
@@ -111,13 +112,14 @@ static int sctp_inet6addr_event(struct notifier_block *this, unsigned long ev,
111 &sctp_local_addr_list, list) { 112 &sctp_local_addr_list, list) {
112 if (ipv6_addr_equal(&addr->a.v6.sin6_addr, 113 if (ipv6_addr_equal(&addr->a.v6.sin6_addr,
113 &ifa->addr)) { 114 &ifa->addr)) {
115 found = 1;
114 addr->valid = 0; 116 addr->valid = 0;
115 list_del_rcu(&addr->list); 117 list_del_rcu(&addr->list);
116 break; 118 break;
117 } 119 }
118 } 120 }
119 spin_unlock_bh(&sctp_local_addr_lock); 121 spin_unlock_bh(&sctp_local_addr_lock);
120 if (addr && !addr->valid) 122 if (found)
121 call_rcu(&addr->rcu, sctp_local_addr_free); 123 call_rcu(&addr->rcu, sctp_local_addr_free);
122 break; 124 break;
123 } 125 }
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index 688546dccd82..ad0a4069b95b 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -628,6 +628,7 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev,
628 struct in_ifaddr *ifa = (struct in_ifaddr *)ptr; 628 struct in_ifaddr *ifa = (struct in_ifaddr *)ptr;
629 struct sctp_sockaddr_entry *addr = NULL; 629 struct sctp_sockaddr_entry *addr = NULL;
630 struct sctp_sockaddr_entry *temp; 630 struct sctp_sockaddr_entry *temp;
631 int found = 0;
631 632
632 switch (ev) { 633 switch (ev) {
633 case NETDEV_UP: 634 case NETDEV_UP:
@@ -647,13 +648,14 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev,
647 list_for_each_entry_safe(addr, temp, 648 list_for_each_entry_safe(addr, temp,
648 &sctp_local_addr_list, list) { 649 &sctp_local_addr_list, list) {
649 if (addr->a.v4.sin_addr.s_addr == ifa->ifa_local) { 650 if (addr->a.v4.sin_addr.s_addr == ifa->ifa_local) {
651 found = 1;
650 addr->valid = 0; 652 addr->valid = 0;
651 list_del_rcu(&addr->list); 653 list_del_rcu(&addr->list);
652 break; 654 break;
653 } 655 }
654 } 656 }
655 spin_unlock_bh(&sctp_local_addr_lock); 657 spin_unlock_bh(&sctp_local_addr_lock);
656 if (addr && !addr->valid) 658 if (found)
657 call_rcu(&addr->rcu, sctp_local_addr_free); 659 call_rcu(&addr->rcu, sctp_local_addr_free);
658 break; 660 break;
659 } 661 }
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index e45be4e3f80d..578630e8e00d 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -2375,6 +2375,14 @@ static int sctp_process_param(struct sctp_association *asoc,
2375 asoc->peer.ipv4_address = 0; 2375 asoc->peer.ipv4_address = 0;
2376 asoc->peer.ipv6_address = 0; 2376 asoc->peer.ipv6_address = 0;
2377 2377
2378 /* Assume that peer supports the address family
2379 * by which it sends a packet.
2380 */
2381 if (peer_addr->sa.sa_family == AF_INET6)
2382 asoc->peer.ipv6_address = 1;
2383 else if (peer_addr->sa.sa_family == AF_INET)
2384 asoc->peer.ipv4_address = 1;
2385
2378 /* Cycle through address types; avoid divide by 0. */ 2386 /* Cycle through address types; avoid divide by 0. */
2379 sat = ntohs(param.p->length) - sizeof(sctp_paramhdr_t); 2387 sat = ntohs(param.p->length) - sizeof(sctp_paramhdr_t);
2380 if (sat) 2388 if (sat)
diff --git a/net/sctp/socket.c b/net/sctp/socket.c
index 939892691a26..d994d822900d 100644
--- a/net/sctp/socket.c
+++ b/net/sctp/socket.c
@@ -2933,17 +2933,39 @@ static int sctp_setsockopt_maxburst(struct sock *sk,
2933 char __user *optval, 2933 char __user *optval,
2934 int optlen) 2934 int optlen)
2935{ 2935{
2936 struct sctp_assoc_value params;
2937 struct sctp_sock *sp;
2938 struct sctp_association *asoc;
2936 int val; 2939 int val;
2940 int assoc_id = 0;
2937 2941
2938 if (optlen != sizeof(int)) 2942 if (optlen < sizeof(int))
2939 return -EINVAL; 2943 return -EINVAL;
2940 if (get_user(val, (int __user *)optval))
2941 return -EFAULT;
2942 2944
2943 if (val < 0) 2945 if (optlen == sizeof(int)) {
2946 printk(KERN_WARNING
2947 "SCTP: Use of int in max_burst socket option deprecated\n");
2948 printk(KERN_WARNING
2949 "SCTP: Use struct sctp_assoc_value instead\n");
2950 if (copy_from_user(&val, optval, optlen))
2951 return -EFAULT;
2952 } else if (optlen == sizeof(struct sctp_assoc_value)) {
2953 if (copy_from_user(&params, optval, optlen))
2954 return -EFAULT;
2955 val = params.assoc_value;
2956 assoc_id = params.assoc_id;
2957 } else
2944 return -EINVAL; 2958 return -EINVAL;
2945 2959
2946 sctp_sk(sk)->max_burst = val; 2960 sp = sctp_sk(sk);
2961
2962 if (assoc_id != 0) {
2963 asoc = sctp_id2assoc(sk, assoc_id);
2964 if (!asoc)
2965 return -EINVAL;
2966 asoc->max_burst = val;
2967 } else
2968 sp->max_burst = val;
2947 2969
2948 return 0; 2970 return 0;
2949} 2971}
@@ -5005,20 +5027,45 @@ static int sctp_getsockopt_maxburst(struct sock *sk, int len,
5005 char __user *optval, 5027 char __user *optval,
5006 int __user *optlen) 5028 int __user *optlen)
5007{ 5029{
5008 int val; 5030 struct sctp_assoc_value params;
5031 struct sctp_sock *sp;
5032 struct sctp_association *asoc;
5009 5033
5010 if (len < sizeof(int)) 5034 if (len < sizeof(int))
5011 return -EINVAL; 5035 return -EINVAL;
5012 5036
5013 len = sizeof(int); 5037 if (len == sizeof(int)) {
5038 printk(KERN_WARNING
5039 "SCTP: Use of int in max_burst socket option deprecated\n");
5040 printk(KERN_WARNING
5041 "SCTP: Use struct sctp_assoc_value instead\n");
5042 params.assoc_id = 0;
5043 } else if (len == sizeof (struct sctp_assoc_value)) {
5044 if (copy_from_user(&params, optval, len))
5045 return -EFAULT;
5046 } else
5047 return -EINVAL;
5014 5048
5015 val = sctp_sk(sk)->max_burst; 5049 sp = sctp_sk(sk);
5016 if (put_user(len, optlen)) 5050
5017 return -EFAULT; 5051 if (params.assoc_id != 0) {
5018 if (copy_to_user(optval, &val, len)) 5052 asoc = sctp_id2assoc(sk, params.assoc_id);
5019 return -EFAULT; 5053 if (!asoc)
5054 return -EINVAL;
5055 params.assoc_value = asoc->max_burst;
5056 } else
5057 params.assoc_value = sp->max_burst;
5058
5059 if (len == sizeof(int)) {
5060 if (copy_to_user(optval, &params.assoc_value, len))
5061 return -EFAULT;
5062 } else {
5063 if (copy_to_user(optval, &params, len))
5064 return -EFAULT;
5065 }
5066
5067 return 0;
5020 5068
5021 return -ENOTSUPP;
5022} 5069}
5023 5070
5024static int sctp_getsockopt_hmac_ident(struct sock *sk, int len, 5071static int sctp_getsockopt_hmac_ident(struct sock *sk, int len,
diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
index 0598b229c11d..981f190c1b39 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c
@@ -156,7 +156,7 @@ static int send_write(struct svcxprt_rdma *xprt, struct svc_rqst *rqstp,
156 struct svc_rdma_op_ctxt *ctxt; 156 struct svc_rdma_op_ctxt *ctxt;
157 int ret = 0; 157 int ret = 0;
158 158
159 BUG_ON(sge_count >= 32); 159 BUG_ON(sge_count > RPCSVC_MAXPAGES);
160 dprintk("svcrdma: RDMA_WRITE rmr=%x, to=%llx, xdr_off=%d, " 160 dprintk("svcrdma: RDMA_WRITE rmr=%x, to=%llx, xdr_off=%d, "
161 "write_len=%d, xdr_sge=%p, sge_count=%d\n", 161 "write_len=%d, xdr_sge=%p, sge_count=%d\n",
162 rmr, (unsigned long long)to, xdr_off, 162 rmr, (unsigned long long)to, xdr_off,
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c
index f09444c451bc..16fd3f6718ff 100644
--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c
+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c
@@ -54,7 +54,6 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv,
54 int flags); 54 int flags);
55static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt); 55static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt);
56static void svc_rdma_release_rqst(struct svc_rqst *); 56static void svc_rdma_release_rqst(struct svc_rqst *);
57static void rdma_destroy_xprt(struct svcxprt_rdma *xprt);
58static void dto_tasklet_func(unsigned long data); 57static void dto_tasklet_func(unsigned long data);
59static void svc_rdma_detach(struct svc_xprt *xprt); 58static void svc_rdma_detach(struct svc_xprt *xprt);
60static void svc_rdma_free(struct svc_xprt *xprt); 59static void svc_rdma_free(struct svc_xprt *xprt);
@@ -247,6 +246,7 @@ static void dto_tasklet_func(unsigned long data)
247 sq_cq_reap(xprt); 246 sq_cq_reap(xprt);
248 } 247 }
249 248
249 svc_xprt_put(&xprt->sc_xprt);
250 spin_lock_irqsave(&dto_lock, flags); 250 spin_lock_irqsave(&dto_lock, flags);
251 } 251 }
252 spin_unlock_irqrestore(&dto_lock, flags); 252 spin_unlock_irqrestore(&dto_lock, flags);
@@ -275,8 +275,10 @@ static void rq_comp_handler(struct ib_cq *cq, void *cq_context)
275 * add it 275 * add it
276 */ 276 */
277 spin_lock_irqsave(&dto_lock, flags); 277 spin_lock_irqsave(&dto_lock, flags);
278 if (list_empty(&xprt->sc_dto_q)) 278 if (list_empty(&xprt->sc_dto_q)) {
279 svc_xprt_get(&xprt->sc_xprt);
279 list_add_tail(&xprt->sc_dto_q, &dto_xprt_q); 280 list_add_tail(&xprt->sc_dto_q, &dto_xprt_q);
281 }
280 spin_unlock_irqrestore(&dto_lock, flags); 282 spin_unlock_irqrestore(&dto_lock, flags);
281 283
282 /* Tasklet does all the work to avoid irqsave locks. */ 284 /* Tasklet does all the work to avoid irqsave locks. */
@@ -386,8 +388,10 @@ static void sq_comp_handler(struct ib_cq *cq, void *cq_context)
386 * add it 388 * add it
387 */ 389 */
388 spin_lock_irqsave(&dto_lock, flags); 390 spin_lock_irqsave(&dto_lock, flags);
389 if (list_empty(&xprt->sc_dto_q)) 391 if (list_empty(&xprt->sc_dto_q)) {
392 svc_xprt_get(&xprt->sc_xprt);
390 list_add_tail(&xprt->sc_dto_q, &dto_xprt_q); 393 list_add_tail(&xprt->sc_dto_q, &dto_xprt_q);
394 }
391 spin_unlock_irqrestore(&dto_lock, flags); 395 spin_unlock_irqrestore(&dto_lock, flags);
392 396
393 /* Tasklet does all the work to avoid irqsave locks. */ 397 /* Tasklet does all the work to avoid irqsave locks. */
@@ -611,6 +615,7 @@ static int rdma_cma_handler(struct rdma_cm_id *cma_id,
611 switch (event->event) { 615 switch (event->event) {
612 case RDMA_CM_EVENT_ESTABLISHED: 616 case RDMA_CM_EVENT_ESTABLISHED:
613 /* Accept complete */ 617 /* Accept complete */
618 svc_xprt_get(xprt);
614 dprintk("svcrdma: Connection completed on DTO xprt=%p, " 619 dprintk("svcrdma: Connection completed on DTO xprt=%p, "
615 "cm_id=%p\n", xprt, cma_id); 620 "cm_id=%p\n", xprt, cma_id);
616 clear_bit(RDMAXPRT_CONN_PENDING, &rdma->sc_flags); 621 clear_bit(RDMAXPRT_CONN_PENDING, &rdma->sc_flags);
@@ -661,15 +666,15 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv,
661 666
662 listen_id = rdma_create_id(rdma_listen_handler, cma_xprt, RDMA_PS_TCP); 667 listen_id = rdma_create_id(rdma_listen_handler, cma_xprt, RDMA_PS_TCP);
663 if (IS_ERR(listen_id)) { 668 if (IS_ERR(listen_id)) {
664 rdma_destroy_xprt(cma_xprt); 669 svc_xprt_put(&cma_xprt->sc_xprt);
665 dprintk("svcrdma: rdma_create_id failed = %ld\n", 670 dprintk("svcrdma: rdma_create_id failed = %ld\n",
666 PTR_ERR(listen_id)); 671 PTR_ERR(listen_id));
667 return (void *)listen_id; 672 return (void *)listen_id;
668 } 673 }
669 ret = rdma_bind_addr(listen_id, sa); 674 ret = rdma_bind_addr(listen_id, sa);
670 if (ret) { 675 if (ret) {
671 rdma_destroy_xprt(cma_xprt);
672 rdma_destroy_id(listen_id); 676 rdma_destroy_id(listen_id);
677 svc_xprt_put(&cma_xprt->sc_xprt);
673 dprintk("svcrdma: rdma_bind_addr failed = %d\n", ret); 678 dprintk("svcrdma: rdma_bind_addr failed = %d\n", ret);
674 return ERR_PTR(ret); 679 return ERR_PTR(ret);
675 } 680 }
@@ -678,8 +683,9 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv,
678 ret = rdma_listen(listen_id, RPCRDMA_LISTEN_BACKLOG); 683 ret = rdma_listen(listen_id, RPCRDMA_LISTEN_BACKLOG);
679 if (ret) { 684 if (ret) {
680 rdma_destroy_id(listen_id); 685 rdma_destroy_id(listen_id);
681 rdma_destroy_xprt(cma_xprt); 686 svc_xprt_put(&cma_xprt->sc_xprt);
682 dprintk("svcrdma: rdma_listen failed = %d\n", ret); 687 dprintk("svcrdma: rdma_listen failed = %d\n", ret);
688 return ERR_PTR(ret);
683 } 689 }
684 690
685 /* 691 /*
@@ -820,6 +826,7 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
820 newxprt->sc_sq_depth = qp_attr.cap.max_send_wr; 826 newxprt->sc_sq_depth = qp_attr.cap.max_send_wr;
821 newxprt->sc_max_requests = qp_attr.cap.max_recv_wr; 827 newxprt->sc_max_requests = qp_attr.cap.max_recv_wr;
822 } 828 }
829 svc_xprt_get(&newxprt->sc_xprt);
823 newxprt->sc_qp = newxprt->sc_cm_id->qp; 830 newxprt->sc_qp = newxprt->sc_cm_id->qp;
824 831
825 /* Register all of physical memory */ 832 /* Register all of physical memory */
@@ -891,8 +898,15 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt)
891 898
892 errout: 899 errout:
893 dprintk("svcrdma: failure accepting new connection rc=%d.\n", ret); 900 dprintk("svcrdma: failure accepting new connection rc=%d.\n", ret);
901 /* Take a reference in case the DTO handler runs */
902 svc_xprt_get(&newxprt->sc_xprt);
903 if (newxprt->sc_qp && !IS_ERR(newxprt->sc_qp)) {
904 ib_destroy_qp(newxprt->sc_qp);
905 svc_xprt_put(&newxprt->sc_xprt);
906 }
894 rdma_destroy_id(newxprt->sc_cm_id); 907 rdma_destroy_id(newxprt->sc_cm_id);
895 rdma_destroy_xprt(newxprt); 908 /* This call to put will destroy the transport */
909 svc_xprt_put(&newxprt->sc_xprt);
896 return NULL; 910 return NULL;
897} 911}
898 912
@@ -919,54 +933,60 @@ static void svc_rdma_release_rqst(struct svc_rqst *rqstp)
919 rqstp->rq_xprt_ctxt = NULL; 933 rqstp->rq_xprt_ctxt = NULL;
920} 934}
921 935
922/* Disable data ready events for this connection */ 936/*
937 * When connected, an svc_xprt has at least three references:
938 *
939 * - A reference held by the QP. We still hold that here because this
940 * code deletes the QP and puts the reference.
941 *
942 * - A reference held by the cm_id between the ESTABLISHED and
943 * DISCONNECTED events. If the remote peer disconnected first, this
944 * reference could be gone.
945 *
946 * - A reference held by the svc_recv code that called this function
947 * as part of close processing.
948 *
949 * At a minimum two references should still be held.
950 */
923static void svc_rdma_detach(struct svc_xprt *xprt) 951static void svc_rdma_detach(struct svc_xprt *xprt)
924{ 952{
925 struct svcxprt_rdma *rdma = 953 struct svcxprt_rdma *rdma =
926 container_of(xprt, struct svcxprt_rdma, sc_xprt); 954 container_of(xprt, struct svcxprt_rdma, sc_xprt);
927 unsigned long flags;
928
929 dprintk("svc: svc_rdma_detach(%p)\n", xprt); 955 dprintk("svc: svc_rdma_detach(%p)\n", xprt);
930 /* 956
931 * Shutdown the connection. This will ensure we don't get any 957 /* Disconnect and flush posted WQE */
932 * more events from the provider.
933 */
934 rdma_disconnect(rdma->sc_cm_id); 958 rdma_disconnect(rdma->sc_cm_id);
935 rdma_destroy_id(rdma->sc_cm_id);
936 959
937 /* We may already be on the DTO list */ 960 /* Destroy the QP if present (not a listener) */
938 spin_lock_irqsave(&dto_lock, flags); 961 if (rdma->sc_qp && !IS_ERR(rdma->sc_qp)) {
939 if (!list_empty(&rdma->sc_dto_q)) 962 ib_destroy_qp(rdma->sc_qp);
940 list_del_init(&rdma->sc_dto_q); 963 svc_xprt_put(xprt);
941 spin_unlock_irqrestore(&dto_lock, flags); 964 }
965
966 /* Destroy the CM ID */
967 rdma_destroy_id(rdma->sc_cm_id);
942} 968}
943 969
944static void svc_rdma_free(struct svc_xprt *xprt) 970static void svc_rdma_free(struct svc_xprt *xprt)
945{ 971{
946 struct svcxprt_rdma *rdma = (struct svcxprt_rdma *)xprt; 972 struct svcxprt_rdma *rdma = (struct svcxprt_rdma *)xprt;
947 dprintk("svcrdma: svc_rdma_free(%p)\n", rdma); 973 dprintk("svcrdma: svc_rdma_free(%p)\n", rdma);
948 rdma_destroy_xprt(rdma); 974 /* We should only be called from kref_put */
949 kfree(rdma); 975 BUG_ON(atomic_read(&xprt->xpt_ref.refcount) != 0);
950} 976 if (rdma->sc_sq_cq && !IS_ERR(rdma->sc_sq_cq))
951 977 ib_destroy_cq(rdma->sc_sq_cq);
952static void rdma_destroy_xprt(struct svcxprt_rdma *xprt)
953{
954 if (xprt->sc_qp && !IS_ERR(xprt->sc_qp))
955 ib_destroy_qp(xprt->sc_qp);
956
957 if (xprt->sc_sq_cq && !IS_ERR(xprt->sc_sq_cq))
958 ib_destroy_cq(xprt->sc_sq_cq);
959 978
960 if (xprt->sc_rq_cq && !IS_ERR(xprt->sc_rq_cq)) 979 if (rdma->sc_rq_cq && !IS_ERR(rdma->sc_rq_cq))
961 ib_destroy_cq(xprt->sc_rq_cq); 980 ib_destroy_cq(rdma->sc_rq_cq);
962 981
963 if (xprt->sc_phys_mr && !IS_ERR(xprt->sc_phys_mr)) 982 if (rdma->sc_phys_mr && !IS_ERR(rdma->sc_phys_mr))
964 ib_dereg_mr(xprt->sc_phys_mr); 983 ib_dereg_mr(rdma->sc_phys_mr);
965 984
966 if (xprt->sc_pd && !IS_ERR(xprt->sc_pd)) 985 if (rdma->sc_pd && !IS_ERR(rdma->sc_pd))
967 ib_dealloc_pd(xprt->sc_pd); 986 ib_dealloc_pd(rdma->sc_pd);
968 987
969 destroy_context_cache(xprt->sc_ctxt_head); 988 destroy_context_cache(rdma->sc_ctxt_head);
989 kfree(rdma);
970} 990}
971 991
972static int svc_rdma_has_wspace(struct svc_xprt *xprt) 992static int svc_rdma_has_wspace(struct svc_xprt *xprt)
diff --git a/scripts/kernel-doc b/scripts/kernel-doc
index 74c2f9db2aac..263d04ab2d94 100755
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -247,6 +247,10 @@ my ($function, %function_table,%parametertypes,$declaration_purpose);
247my ($type,$declaration_name,$return_type); 247my ($type,$declaration_name,$return_type);
248my ($newsection,$newcontents,$prototype,$filelist, $brcount, %source_map); 248my ($newsection,$newcontents,$prototype,$filelist, $brcount, %source_map);
249 249
250if (defined($ENV{'KBUILD_VERBOSE'})) {
251 $verbose = "$ENV{'KBUILD_VERBOSE'}";
252}
253
250# Generated docbook code is inserted in a template at a point where 254# Generated docbook code is inserted in a template at a point where
251# docbook v3.1 requires a non-zero sequence of RefEntry's; see: 255# docbook v3.1 requires a non-zero sequence of RefEntry's; see:
252# http://www.oasis-open.org/docbook/documentation/reference/html/refentry.html 256# http://www.oasis-open.org/docbook/documentation/reference/html/refentry.html
diff --git a/security/smack/smack.h b/security/smack/smack.h
index a21a0e907ab3..62c1e982849d 100644
--- a/security/smack/smack.h
+++ b/security/smack/smack.h
@@ -26,14 +26,6 @@
26#define SMK_MAXLEN 23 26#define SMK_MAXLEN 23
27#define SMK_LABELLEN (SMK_MAXLEN+1) 27#define SMK_LABELLEN (SMK_MAXLEN+1)
28 28
29/*
30 * How many kinds of access are there?
31 * Here's your answer.
32 */
33#define SMK_ACCESSDASH '-'
34#define SMK_ACCESSLOW "rwxa"
35#define SMK_ACCESSKINDS (sizeof(SMK_ACCESSLOW) - 1)
36
37struct superblock_smack { 29struct superblock_smack {
38 char *smk_root; 30 char *smk_root;
39 char *smk_floor; 31 char *smk_floor;
diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c
index 358c92c1a153..afe7c9b0732a 100644
--- a/security/smack/smackfs.c
+++ b/security/smack/smackfs.c
@@ -81,10 +81,23 @@ static struct semaphore smack_write_sem;
81/* 81/*
82 * Values for parsing cipso rules 82 * Values for parsing cipso rules
83 * SMK_DIGITLEN: Length of a digit field in a rule. 83 * SMK_DIGITLEN: Length of a digit field in a rule.
84 * SMK_CIPSOMEN: Minimum possible cipso rule length. 84 * SMK_CIPSOMIN: Minimum possible cipso rule length.
85 * SMK_CIPSOMAX: Maximum possible cipso rule length.
85 */ 86 */
86#define SMK_DIGITLEN 4 87#define SMK_DIGITLEN 4
87#define SMK_CIPSOMIN (SMK_MAXLEN + 2 * SMK_DIGITLEN) 88#define SMK_CIPSOMIN (SMK_LABELLEN + 2 * SMK_DIGITLEN)
89#define SMK_CIPSOMAX (SMK_CIPSOMIN + SMACK_CIPSO_MAXCATNUM * SMK_DIGITLEN)
90
91/*
92 * Values for parsing MAC rules
93 * SMK_ACCESS: Maximum possible combination of access permissions
94 * SMK_ACCESSLEN: Maximum length for a rule access field
95 * SMK_LOADLEN: Smack rule length
96 */
97#define SMK_ACCESS "rwxa"
98#define SMK_ACCESSLEN (sizeof(SMK_ACCESS) - 1)
99#define SMK_LOADLEN (SMK_LABELLEN + SMK_LABELLEN + SMK_ACCESSLEN)
100
88 101
89/* 102/*
90 * Seq_file read operations for /smack/load 103 * Seq_file read operations for /smack/load
@@ -229,14 +242,10 @@ static void smk_set_access(struct smack_rule *srp)
229 * The format is exactly: 242 * The format is exactly:
230 * char subject[SMK_LABELLEN] 243 * char subject[SMK_LABELLEN]
231 * char object[SMK_LABELLEN] 244 * char object[SMK_LABELLEN]
232 * char access[SMK_ACCESSKINDS] 245 * char access[SMK_ACCESSLEN]
233 *
234 * Anything following is commentary and ignored.
235 * 246 *
236 * writes must be SMK_LABELLEN+SMK_LABELLEN+4 bytes. 247 * writes must be SMK_LABELLEN+SMK_LABELLEN+SMK_ACCESSLEN bytes.
237 */ 248 */
238#define MINIMUM_LOAD (SMK_LABELLEN + SMK_LABELLEN + SMK_ACCESSKINDS)
239
240static ssize_t smk_write_load(struct file *file, const char __user *buf, 249static ssize_t smk_write_load(struct file *file, const char __user *buf,
241 size_t count, loff_t *ppos) 250 size_t count, loff_t *ppos)
242{ 251{
@@ -253,7 +262,7 @@ static ssize_t smk_write_load(struct file *file, const char __user *buf,
253 return -EPERM; 262 return -EPERM;
254 if (*ppos != 0) 263 if (*ppos != 0)
255 return -EINVAL; 264 return -EINVAL;
256 if (count < MINIMUM_LOAD) 265 if (count != SMK_LOADLEN)
257 return -EINVAL; 266 return -EINVAL;
258 267
259 data = kzalloc(count, GFP_KERNEL); 268 data = kzalloc(count, GFP_KERNEL);
@@ -513,7 +522,7 @@ static ssize_t smk_write_cipso(struct file *file, const char __user *buf,
513 return -EPERM; 522 return -EPERM;
514 if (*ppos != 0) 523 if (*ppos != 0)
515 return -EINVAL; 524 return -EINVAL;
516 if (count <= SMK_CIPSOMIN) 525 if (count < SMK_CIPSOMIN || count > SMK_CIPSOMAX)
517 return -EINVAL; 526 return -EINVAL;
518 527
519 data = kzalloc(count + 1, GFP_KERNEL); 528 data = kzalloc(count + 1, GFP_KERNEL);
@@ -547,7 +556,7 @@ static ssize_t smk_write_cipso(struct file *file, const char __user *buf,
547 if (ret != 1 || catlen > SMACK_CIPSO_MAXCATNUM) 556 if (ret != 1 || catlen > SMACK_CIPSO_MAXCATNUM)
548 goto out; 557 goto out;
549 558
550 if (count <= (SMK_CIPSOMIN + catlen * SMK_DIGITLEN)) 559 if (count != (SMK_CIPSOMIN + catlen * SMK_DIGITLEN))
551 goto out; 560 goto out;
552 561
553 memset(mapcatset, 0, sizeof(mapcatset)); 562 memset(mapcatset, 0, sizeof(mapcatset));