Эх сурвалжийг харах

Merge branch 'sh/stable-updates'

Paul Mundt 15 жил өмнө
parent
commit
0c54de146e
100 өөрчлөгдсөн 569 нэмэгдсэн , 618 устгасан
  1. 8 4
      Documentation/networking/3c509.txt
  2. 5 15
      MAINTAINERS
  3. 2 3
      Makefile
  4. 3 0
      arch/alpha/include/asm/topology.h
  5. 71 10
      arch/arm/configs/u300_defconfig
  6. 1 0
      arch/arm/include/asm/cpu.h
  7. 2 2
      arch/arm/include/asm/dma.h
  8. 6 0
      arch/arm/include/asm/ptrace.h
  9. 1 0
      arch/arm/include/asm/unistd.h
  10. 1 3
      arch/arm/kernel/entry-armv.S
  11. 2 1
      arch/arm/kernel/process.c
  12. 1 0
      arch/arm/mach-davinci/include/mach/keyscan.h
  13. 2 0
      arch/arm/mach-lh7a40x/clocks.c
  14. 3 6
      arch/arm/mach-pxa/include/mach/hardware.h
  15. 1 1
      arch/arm/mach-pxa/magician.c
  16. 1 1
      arch/arm/mach-pxa/palmld.c
  17. 1 1
      arch/arm/mach-pxa/palmt5.c
  18. 1 1
      arch/arm/mach-pxa/palmtc.c
  19. 1 1
      arch/arm/mach-pxa/palmte2.c
  20. 1 1
      arch/arm/mach-pxa/palmtreo.c
  21. 1 1
      arch/arm/mach-pxa/palmtx.c
  22. 1 1
      arch/arm/mach-pxa/palmz72.c
  23. 2 2
      arch/arm/mach-pxa/spitz.c
  24. 1 1
      arch/arm/mach-pxa/viper.c
  25. 2 2
      arch/arm/mach-realview/include/mach/board-pb1176.h
  26. 1 1
      arch/arm/mach-realview/include/mach/platform.h
  27. 15 0
      arch/arm/mach-realview/realview_eb.c
  28. 4 6
      arch/arm/mach-realview/realview_pb1176.c
  29. 5 6
      arch/arm/mach-realview/realview_pb11mp.c
  30. 15 0
      arch/arm/mach-realview/realview_pba8.c
  31. 15 0
      arch/arm/mach-realview/realview_pbx.c
  32. 18 18
      arch/arm/mach-s3c2440/mach-mini2440.c
  33. 1 0
      arch/arm/mach-s3c6410/mach-smdk6410.c
  34. 12 0
      arch/arm/mm/Makefile
  35. 5 6
      arch/arm/mm/cache-xsc3l2.c
  36. 7 0
      arch/arm/mm/proc-xsc3.S
  37. 2 2
      arch/arm/plat-s3c/dev-nand.c
  38. 1 13
      arch/m68k/include/asm/io_no.h
  39. 2 2
      arch/m68k/include/asm/page_no.h
  40. 4 0
      arch/m68k/include/asm/virtconvert.h
  41. 0 1
      arch/m68knommu/platform/coldfire/pit.c
  42. 2 2
      arch/mips/alchemy/common/dbdma.c
  43. 0 15
      arch/mips/ar7/prom.c
  44. 16 17
      arch/mips/bcm63xx/boards/board_bcm963xx.c
  45. 0 3
      arch/mips/bcm63xx/prom.c
  46. 1 0
      arch/mips/boot/.gitignore
  47. 1 1
      arch/mips/boot/Makefile
  48. 3 6
      arch/mips/boot/compressed/Makefile
  49. 0 10
      arch/mips/boot/compressed/decompress.c
  50. 56 139
      arch/mips/boot/compressed/ld.script
  51. 32 0
      arch/mips/cavium-octeon/csrc-octeon.c
  52. 8 16
      arch/mips/cobalt/setup.c
  53. 3 1
      arch/mips/include/asm/mach-ip27/topology.h
  54. 0 4
      arch/mips/mipssim/sim_setup.c
  55. 0 8
      arch/mips/mm/tlbex.c
  56. 0 1
      arch/mips/mti-malta/malta-init.c
  57. 1 1
      arch/mips/powertv/Makefile
  58. 0 52
      arch/mips/powertv/cmdline.c
  59. 8 7
      arch/mips/powertv/init.c
  60. 0 2
      arch/mips/powertv/init.h
  61. 0 5
      arch/mips/powertv/memory.c
  62. 0 21
      arch/mips/powertv/powertv_setup.c
  63. 0 18
      arch/mips/powertv/reset.c
  64. 0 1
      arch/mips/powertv/time.c
  65. 0 21
      arch/mips/txx9/generic/setup.c
  66. 3 3
      arch/mips/vr41xx/common/init.c
  67. 1 3
      arch/powerpc/boot/Makefile
  68. 4 0
      arch/s390/include/asm/bug.h
  69. 14 6
      arch/s390/include/asm/sigp.h
  70. 5 7
      arch/s390/include/asm/thread_info.h
  71. 4 2
      arch/s390/include/asm/unistd.h
  72. 16 25
      arch/s390/kernel/compat_linux.c
  73. 0 9
      arch/s390/kernel/compat_wrapper.S
  74. 1 2
      arch/s390/kernel/process.c
  75. 8 0
      arch/s390/kernel/ptrace.c
  76. 0 8
      arch/s390/kernel/setup.c
  77. 1 9
      arch/s390/kernel/signal.c
  78. 9 0
      arch/s390/kernel/smp.c
  79. 0 1
      arch/s390/kernel/syscalls.S
  80. 1 1
      arch/s390/kernel/topology.c
  81. 1 1
      arch/s390/lib/spinlock.c
  82. 2 2
      arch/s390/mm/mmap.c
  83. 8 0
      arch/sh/boards/mach-ecovec24/setup.c
  84. 1 1
      arch/sh/tools/Makefile
  85. 18 31
      arch/um/drivers/mconsole_kern.c
  86. 2 1
      arch/x86/include/asm/mce.h
  87. 12 0
      arch/x86/include/asm/uv/uv_hub.h
  88. 1 0
      arch/x86/kernel/aperture_64.c
  89. 18 8
      arch/x86/kernel/apic/x2apic_uv_x.c
  90. 8 6
      arch/x86/kernel/dumpstack.c
  91. 2 0
      arch/x86/kernel/process.c
  92. 4 0
      arch/x86/xen/enlighten.c
  93. 1 1
      drivers/ata/ata_piix.c
  94. 31 7
      drivers/ata/libata-core.c
  95. 1 1
      drivers/ata/sata_promise.c
  96. 21 13
      drivers/base/memory.c
  97. 3 2
      drivers/char/agp/amd64-agp.c
  98. 5 1
      drivers/char/agp/intel-agp.c
  99. 3 3
      drivers/char/hw_random/virtio-rng.c
  100. 1 1
      drivers/edac/amd64_edac.c

+ 8 - 4
Documentation/networking/3c509.txt

@@ -48,11 +48,11 @@ for LILO parameters for doing this:
 This configures the first found 3c509 card for IRQ 10, base I/O 0x310, and
 This configures the first found 3c509 card for IRQ 10, base I/O 0x310, and
 transceiver type 3 (10base2). The flag "0x3c509" must be set to avoid conflicts
 transceiver type 3 (10base2). The flag "0x3c509" must be set to avoid conflicts
 with other card types when overriding the I/O address. When the driver is
 with other card types when overriding the I/O address. When the driver is
-loaded as a module, only the IRQ and transceiver setting may be overridden.
-For example, setting two cards to 10base2/IRQ10 and AUI/IRQ11 is done by using
-the xcvr and irq module options:
+loaded as a module, only the IRQ may be overridden. For example,
+setting two cards to IRQ10 and IRQ11 is done by using the irq module
+option:
 
 
-   options 3c509 xcvr=3,1 irq=10,11
+   options 3c509 irq=10,11
 
 
 
 
 (2) Full-duplex mode
 (2) Full-duplex mode
@@ -77,6 +77,8 @@ operation.
 itself full-duplex capable. This is almost certainly one of two things: a full-
 itself full-duplex capable. This is almost certainly one of two things: a full-
 duplex-capable  Ethernet switch (*not* a hub), or a full-duplex-capable NIC on
 duplex-capable  Ethernet switch (*not* a hub), or a full-duplex-capable NIC on
 another system that's connected directly to the 3c509B via a crossover cable.
 another system that's connected directly to the 3c509B via a crossover cable.
+
+Full-duplex mode can be enabled using 'ethtool'.
  
  
 /////Extremely important caution concerning full-duplex mode/////
 /////Extremely important caution concerning full-duplex mode/////
 Understand that the 3c509B's hardware's full-duplex support is much more
 Understand that the 3c509B's hardware's full-duplex support is much more
@@ -113,6 +115,8 @@ This insured that merely upgrading the driver from an earlier version would
 never automatically enable full-duplex mode in an existing installation;
 never automatically enable full-duplex mode in an existing installation;
 it must always be explicitly enabled via one of these code in order to be
 it must always be explicitly enabled via one of these code in order to be
 activated.
 activated.
+
+The transceiver type can be changed using 'ethtool'.
   
   
 
 
 (4a) Interpretation of error messages and common problems
 (4a) Interpretation of error messages and common problems

+ 5 - 15
MAINTAINERS

@@ -410,9 +410,8 @@ F:	drivers/i2c/busses/i2c-ali1563.c
 
 
 ALPHA PORT
 ALPHA PORT
 M:	Richard Henderson <rth@twiddle.net>
 M:	Richard Henderson <rth@twiddle.net>
-S:	Odd Fixes for 2.4; Maintained for 2.6.
 M:	Ivan Kokshaysky <ink@jurassic.park.msu.ru>
 M:	Ivan Kokshaysky <ink@jurassic.park.msu.ru>
-S:	Maintained for 2.4; PCI support for 2.6.
+M:	Matt Turner <mattst88@gmail.com>
 L:	linux-alpha@vger.kernel.org
 L:	linux-alpha@vger.kernel.org
 F:	arch/alpha/
 F:	arch/alpha/
 
 
@@ -3940,29 +3939,20 @@ S:	Maintained
 F:	sound/soc/omap/
 F:	sound/soc/omap/
 
 
 OMAP FRAMEBUFFER SUPPORT
 OMAP FRAMEBUFFER SUPPORT
-M:	Imre Deak <imre.deak@nokia.com>
+M:	Tomi Valkeinen <tomi.valkeinen@nokia.com>
 L:	linux-fbdev@vger.kernel.org
 L:	linux-fbdev@vger.kernel.org
 L:	linux-omap@vger.kernel.org
 L:	linux-omap@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	drivers/video/omap/
 F:	drivers/video/omap/
 
 
-OMAP DISPLAY SUBSYSTEM SUPPORT (DSS2)
+OMAP DISPLAY SUBSYSTEM and FRAMEBUFFER SUPPORT (DSS2)
 M:	Tomi Valkeinen <tomi.valkeinen@nokia.com>
 M:	Tomi Valkeinen <tomi.valkeinen@nokia.com>
 L:	linux-omap@vger.kernel.org
 L:	linux-omap@vger.kernel.org
-L:	linux-fbdev@vger.kernel.org (moderated for non-subscribers)
+L:	linux-fbdev@vger.kernel.org
 S:	Maintained
 S:	Maintained
-F:	drivers/video/omap2/dss/
-F:	drivers/video/omap2/vrfb.c
-F:	drivers/video/omap2/vram.c
+F:	drivers/video/omap2/
 F:	Documentation/arm/OMAP/DSS
 F:	Documentation/arm/OMAP/DSS
 
 
-OMAP FRAMEBUFFER SUPPORT (FOR DSS2)
-M:	Tomi Valkeinen <tomi.valkeinen@nokia.com>
-L:	linux-omap@vger.kernel.org
-L:	linux-fbdev@vger.kernel.org (moderated for non-subscribers)
-S:	Maintained
-F:	drivers/video/omap2/omapfb/
-
 OMAP MMC SUPPORT
 OMAP MMC SUPPORT
 M:	Jarkko Lavinen <jarkko.lavinen@nokia.com>
 M:	Jarkko Lavinen <jarkko.lavinen@nokia.com>
 L:	linux-omap@vger.kernel.org
 L:	linux-omap@vger.kernel.org

+ 2 - 3
Makefile

@@ -1,7 +1,7 @@
 VERSION = 2
 VERSION = 2
 PATCHLEVEL = 6
 PATCHLEVEL = 6
 SUBLEVEL = 33
 SUBLEVEL = 33
-EXTRAVERSION = -rc3
+EXTRAVERSION = -rc4
 NAME = Man-Eating Seals of Antiquity
 NAME = Man-Eating Seals of Antiquity
 
 
 # *DOCUMENTATION*
 # *DOCUMENTATION*
@@ -18,10 +18,9 @@ MAKEFLAGS += -rR --no-print-directory
 
 
 # Avoid funny character set dependencies
 # Avoid funny character set dependencies
 unexport LC_ALL
 unexport LC_ALL
-LC_CTYPE=C
 LC_COLLATE=C
 LC_COLLATE=C
 LC_NUMERIC=C
 LC_NUMERIC=C
-export LC_CTYPE LC_COLLATE LC_NUMERIC
+export LC_COLLATE LC_NUMERIC
 
 
 # We are using a recursive build, so we need to do a little thinking
 # We are using a recursive build, so we need to do a little thinking
 # to get the ordering right.
 # to get the ordering right.

+ 3 - 0
arch/alpha/include/asm/topology.h

@@ -28,6 +28,9 @@ static const struct cpumask *cpumask_of_node(int node)
 {
 {
 	int cpu;
 	int cpu;
 
 
+	if (node == -1)
+		return cpu_all_mask;
+
 	cpumask_clear(&node_to_cpumask_map[node]);
 	cpumask_clear(&node_to_cpumask_map[node]);
 
 
 	for_each_online_cpu(cpu) {
 	for_each_online_cpu(cpu) {

+ 71 - 10
arch/arm/configs/u300_defconfig

@@ -1,7 +1,7 @@
 #
 #
 # Automatically generated make config: don't edit
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.32-rc5
-# Sat Oct 17 23:32:24 2009
+# Linux kernel version: 2.6.33-rc2
+# Wed Jan  6 00:01:36 2010
 #
 #
 CONFIG_ARM=y
 CONFIG_ARM=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -46,6 +46,7 @@ CONFIG_SYSVIPC_SYSCTL=y
 #
 #
 CONFIG_TREE_RCU=y
 CONFIG_TREE_RCU=y
 # CONFIG_TREE_PREEMPT_RCU is not set
 # CONFIG_TREE_PREEMPT_RCU is not set
+# CONFIG_TINY_RCU is not set
 # CONFIG_RCU_TRACE is not set
 # CONFIG_RCU_TRACE is not set
 CONFIG_RCU_FANOUT=32
 CONFIG_RCU_FANOUT=32
 # CONFIG_RCU_FANOUT_EXACT is not set
 # CONFIG_RCU_FANOUT_EXACT is not set
@@ -119,14 +120,41 @@ CONFIG_BLOCK=y
 # IO Schedulers
 # IO Schedulers
 #
 #
 CONFIG_IOSCHED_NOOP=y
 CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
 CONFIG_IOSCHED_DEADLINE=y
 CONFIG_IOSCHED_DEADLINE=y
 # CONFIG_IOSCHED_CFQ is not set
 # CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
 CONFIG_DEFAULT_DEADLINE=y
 CONFIG_DEFAULT_DEADLINE=y
 # CONFIG_DEFAULT_CFQ is not set
 # CONFIG_DEFAULT_CFQ is not set
 # CONFIG_DEFAULT_NOOP is not set
 # CONFIG_DEFAULT_NOOP is not set
 CONFIG_DEFAULT_IOSCHED="deadline"
 CONFIG_DEFAULT_IOSCHED="deadline"
+# CONFIG_INLINE_SPIN_TRYLOCK is not set
+# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK is not set
+# CONFIG_INLINE_SPIN_LOCK_BH is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_SPIN_UNLOCK is not set
+# CONFIG_INLINE_SPIN_UNLOCK_BH is not set
+# CONFIG_INLINE_SPIN_UNLOCK_IRQ is not set
+# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_READ_TRYLOCK is not set
+# CONFIG_INLINE_READ_LOCK is not set
+# CONFIG_INLINE_READ_LOCK_BH is not set
+# CONFIG_INLINE_READ_LOCK_IRQ is not set
+# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_READ_UNLOCK is not set
+# CONFIG_INLINE_READ_UNLOCK_BH is not set
+# CONFIG_INLINE_READ_UNLOCK_IRQ is not set
+# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set
+# CONFIG_INLINE_WRITE_TRYLOCK is not set
+# CONFIG_INLINE_WRITE_LOCK is not set
+# CONFIG_INLINE_WRITE_LOCK_BH is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set
+# CONFIG_INLINE_WRITE_UNLOCK is not set
+# CONFIG_INLINE_WRITE_UNLOCK_BH is not set
+# CONFIG_INLINE_WRITE_UNLOCK_IRQ is not set
+# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set
+# CONFIG_MUTEX_SPIN_ON_OWNER is not set
 # CONFIG_FREEZER is not set
 # CONFIG_FREEZER is not set
 
 
 #
 #
@@ -155,6 +183,7 @@ CONFIG_MMU=y
 # CONFIG_ARCH_IXP2000 is not set
 # CONFIG_ARCH_IXP2000 is not set
 # CONFIG_ARCH_IXP4XX is not set
 # CONFIG_ARCH_IXP4XX is not set
 # CONFIG_ARCH_L7200 is not set
 # CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_DOVE is not set
 # CONFIG_ARCH_KIRKWOOD is not set
 # CONFIG_ARCH_KIRKWOOD is not set
 # CONFIG_ARCH_LOKI is not set
 # CONFIG_ARCH_LOKI is not set
 # CONFIG_ARCH_MV78XX0 is not set
 # CONFIG_ARCH_MV78XX0 is not set
@@ -177,6 +206,7 @@ CONFIG_ARCH_U300=y
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_DAVINCI is not set
 # CONFIG_ARCH_OMAP is not set
 # CONFIG_ARCH_OMAP is not set
 # CONFIG_ARCH_BCMRING is not set
 # CONFIG_ARCH_BCMRING is not set
+# CONFIG_ARCH_U8500 is not set
 
 
 #
 #
 # ST-Ericsson AB U300/U330/U335/U365 Platform
 # ST-Ericsson AB U300/U330/U335/U365 Platform
@@ -265,12 +295,10 @@ CONFIG_FLATMEM_MANUAL=y
 CONFIG_FLATMEM=y
 CONFIG_FLATMEM=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_FLAT_NODE_MEM_MAP=y
 CONFIG_PAGEFLAGS_EXTENDED=y
 CONFIG_PAGEFLAGS_EXTENDED=y
-CONFIG_SPLIT_PTLOCK_CPUS=4096
+CONFIG_SPLIT_PTLOCK_CPUS=999999
 # CONFIG_PHYS_ADDR_T_64BIT is not set
 # CONFIG_PHYS_ADDR_T_64BIT is not set
 CONFIG_ZONE_DMA_FLAG=0
 CONFIG_ZONE_DMA_FLAG=0
 CONFIG_VIRT_TO_BUS=y
 CONFIG_VIRT_TO_BUS=y
-CONFIG_HAVE_MLOCK=y
-CONFIG_HAVE_MLOCKED_PAGE_BIT=y
 # CONFIG_KSM is not set
 # CONFIG_KSM is not set
 CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
 CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
 CONFIG_ALIGNMENT_TRAP=y
 CONFIG_ALIGNMENT_TRAP=y
@@ -499,14 +527,21 @@ CONFIG_MTD_NAND_IDS=y
 CONFIG_BLK_DEV=y
 CONFIG_BLK_DEV=y
 # CONFIG_BLK_DEV_COW_COMMON is not set
 # CONFIG_BLK_DEV_COW_COMMON is not set
 # CONFIG_BLK_DEV_LOOP is not set
 # CONFIG_BLK_DEV_LOOP is not set
+
+#
+# DRBD disabled because PROC_FS, INET or CONNECTOR not selected
+#
 # CONFIG_BLK_DEV_NBD is not set
 # CONFIG_BLK_DEV_NBD is not set
 # CONFIG_BLK_DEV_RAM is not set
 # CONFIG_BLK_DEV_RAM is not set
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_CDROM_PKTCDVD is not set
 # CONFIG_ATA_OVER_ETH is not set
 # CONFIG_ATA_OVER_ETH is not set
 CONFIG_MISC_DEVICES=y
 CONFIG_MISC_DEVICES=y
+# CONFIG_AD525X_DPOT is not set
 # CONFIG_ICS932S401 is not set
 # CONFIG_ICS932S401 is not set
 # CONFIG_ENCLOSURE_SERVICES is not set
 # CONFIG_ENCLOSURE_SERVICES is not set
 # CONFIG_ISL29003 is not set
 # CONFIG_ISL29003 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_TI_DAC7512 is not set
 # CONFIG_C2PORT is not set
 # CONFIG_C2PORT is not set
 
 
 #
 #
@@ -517,6 +552,7 @@ CONFIG_MISC_DEVICES=y
 # CONFIG_EEPROM_LEGACY is not set
 # CONFIG_EEPROM_LEGACY is not set
 # CONFIG_EEPROM_MAX6875 is not set
 # CONFIG_EEPROM_MAX6875 is not set
 # CONFIG_EEPROM_93CX6 is not set
 # CONFIG_EEPROM_93CX6 is not set
+# CONFIG_IWMC3200TOP is not set
 CONFIG_HAVE_IDE=y
 CONFIG_HAVE_IDE=y
 # CONFIG_IDE is not set
 # CONFIG_IDE is not set
 
 
@@ -539,6 +575,7 @@ CONFIG_HAVE_IDE=y
 CONFIG_INPUT=y
 CONFIG_INPUT=y
 # CONFIG_INPUT_FF_MEMLESS is not set
 # CONFIG_INPUT_FF_MEMLESS is not set
 # CONFIG_INPUT_POLLDEV is not set
 # CONFIG_INPUT_POLLDEV is not set
+# CONFIG_INPUT_SPARSEKMAP is not set
 
 
 #
 #
 # Userland interfaces
 # Userland interfaces
@@ -645,7 +682,6 @@ CONFIG_I2C_STU300=y
 #
 #
 # Miscellaneous I2C Chip support
 # Miscellaneous I2C Chip support
 #
 #
-# CONFIG_DS1682 is not set
 # CONFIG_SENSORS_TSL2550 is not set
 # CONFIG_SENSORS_TSL2550 is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_CORE is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
 # CONFIG_I2C_DEBUG_ALGO is not set
@@ -661,6 +697,8 @@ CONFIG_SPI_MASTER=y
 # CONFIG_SPI_BITBANG is not set
 # CONFIG_SPI_BITBANG is not set
 # CONFIG_SPI_GPIO is not set
 # CONFIG_SPI_GPIO is not set
 CONFIG_SPI_PL022=y
 CONFIG_SPI_PL022=y
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_DESIGNWARE is not set
 
 
 #
 #
 # SPI Protocol Masters
 # SPI Protocol Masters
@@ -708,6 +746,7 @@ CONFIG_SSB_POSSIBLE=y
 # CONFIG_MFD_T7L66XB is not set
 # CONFIG_MFD_T7L66XB is not set
 # CONFIG_MFD_TC6387XB is not set
 # CONFIG_MFD_TC6387XB is not set
 # CONFIG_PMIC_DA903X is not set
 # CONFIG_PMIC_DA903X is not set
+# CONFIG_PMIC_ADP5520 is not set
 # CONFIG_MFD_WM8400 is not set
 # CONFIG_MFD_WM8400 is not set
 # CONFIG_MFD_WM831X is not set
 # CONFIG_MFD_WM831X is not set
 # CONFIG_MFD_WM8350_I2C is not set
 # CONFIG_MFD_WM8350_I2C is not set
@@ -716,6 +755,8 @@ CONFIG_SSB_POSSIBLE=y
 CONFIG_AB3100_CORE=y
 CONFIG_AB3100_CORE=y
 CONFIG_AB3100_OTP=y
 CONFIG_AB3100_OTP=y
 # CONFIG_EZX_PCAP is not set
 # CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_88PM8607 is not set
+# CONFIG_AB4500_CORE is not set
 CONFIG_REGULATOR=y
 CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_DEBUG is not set
 # CONFIG_REGULATOR_DEBUG is not set
 # CONFIG_REGULATOR_FIXED_VOLTAGE is not set
 # CONFIG_REGULATOR_FIXED_VOLTAGE is not set
@@ -723,6 +764,7 @@ CONFIG_REGULATOR=y
 # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
 # CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
 # CONFIG_REGULATOR_BQ24022 is not set
 # CONFIG_REGULATOR_BQ24022 is not set
 # CONFIG_REGULATOR_MAX1586 is not set
 # CONFIG_REGULATOR_MAX1586 is not set
+# CONFIG_REGULATOR_MAX8660 is not set
 # CONFIG_REGULATOR_LP3971 is not set
 # CONFIG_REGULATOR_LP3971 is not set
 CONFIG_REGULATOR_AB3100=y
 CONFIG_REGULATOR_AB3100=y
 # CONFIG_REGULATOR_TPS65023 is not set
 # CONFIG_REGULATOR_TPS65023 is not set
@@ -840,7 +882,9 @@ CONFIG_LEDS_CLASS=y
 # CONFIG_LEDS_LP3944 is not set
 # CONFIG_LEDS_LP3944 is not set
 # CONFIG_LEDS_PCA955X is not set
 # CONFIG_LEDS_PCA955X is not set
 # CONFIG_LEDS_DAC124S085 is not set
 # CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_REGULATOR is not set
 # CONFIG_LEDS_BD2802 is not set
 # CONFIG_LEDS_BD2802 is not set
+# CONFIG_LEDS_LT3593 is not set
 
 
 #
 #
 # LED Triggers
 # LED Triggers
@@ -882,6 +926,7 @@ CONFIG_RTC_INTF_DEV=y
 # CONFIG_RTC_DRV_PCF8563 is not set
 # CONFIG_RTC_DRV_PCF8563 is not set
 # CONFIG_RTC_DRV_PCF8583 is not set
 # CONFIG_RTC_DRV_PCF8583 is not set
 # CONFIG_RTC_DRV_M41T80 is not set
 # CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_BQ32K is not set
 # CONFIG_RTC_DRV_S35390A is not set
 # CONFIG_RTC_DRV_S35390A is not set
 # CONFIG_RTC_DRV_FM3130 is not set
 # CONFIG_RTC_DRV_FM3130 is not set
 # CONFIG_RTC_DRV_RX8581 is not set
 # CONFIG_RTC_DRV_RX8581 is not set
@@ -911,7 +956,9 @@ CONFIG_RTC_INTF_DEV=y
 # CONFIG_RTC_DRV_M48T86 is not set
 # CONFIG_RTC_DRV_M48T86 is not set
 # CONFIG_RTC_DRV_M48T35 is not set
 # CONFIG_RTC_DRV_M48T35 is not set
 # CONFIG_RTC_DRV_M48T59 is not set
 # CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_MSM6242 is not set
 # CONFIG_RTC_DRV_BQ4802 is not set
 # CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_RP5C01 is not set
 # CONFIG_RTC_DRV_V3020 is not set
 # CONFIG_RTC_DRV_V3020 is not set
 CONFIG_RTC_DRV_AB3100=y
 CONFIG_RTC_DRV_AB3100=y
 
 
@@ -926,6 +973,15 @@ CONFIG_DMADEVICES=y
 #
 #
 # DMA Devices
 # DMA Devices
 #
 #
+CONFIG_COH901318=y
+CONFIG_DMA_ENGINE=y
+
+#
+# DMA Clients
+#
+# CONFIG_NET_DMA is not set
+# CONFIG_ASYNC_TX_DMA is not set
+# CONFIG_DMATEST is not set
 # CONFIG_AUXDISPLAY is not set
 # CONFIG_AUXDISPLAY is not set
 # CONFIG_UIO is not set
 # CONFIG_UIO is not set
 
 
@@ -1018,7 +1074,7 @@ CONFIG_MISC_FILESYSTEMS=y
 CONFIG_MSDOS_PARTITION=y
 CONFIG_MSDOS_PARTITION=y
 CONFIG_NLS=y
 CONFIG_NLS=y
 CONFIG_NLS_DEFAULT="iso8859-1"
 CONFIG_NLS_DEFAULT="iso8859-1"
-# CONFIG_NLS_CODEPAGE_437 is not set
+CONFIG_NLS_CODEPAGE_437=y
 # CONFIG_NLS_CODEPAGE_737 is not set
 # CONFIG_NLS_CODEPAGE_737 is not set
 # CONFIG_NLS_CODEPAGE_775 is not set
 # CONFIG_NLS_CODEPAGE_775 is not set
 # CONFIG_NLS_CODEPAGE_850 is not set
 # CONFIG_NLS_CODEPAGE_850 is not set
@@ -1135,6 +1191,7 @@ CONFIG_ARM_UNWIND=y
 # CONFIG_DEBUG_ERRORS is not set
 # CONFIG_DEBUG_ERRORS is not set
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_STACK_USAGE is not set
 # CONFIG_DEBUG_LL is not set
 # CONFIG_DEBUG_LL is not set
+# CONFIG_OC_ETM is not set
 
 
 #
 #
 # Security options
 # Security options
@@ -1142,7 +1199,11 @@ CONFIG_ARM_UNWIND=y
 # CONFIG_KEYS is not set
 # CONFIG_KEYS is not set
 # CONFIG_SECURITY is not set
 # CONFIG_SECURITY is not set
 # CONFIG_SECURITYFS is not set
 # CONFIG_SECURITYFS is not set
-# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+# CONFIG_DEFAULT_SECURITY_SELINUX is not set
+# CONFIG_DEFAULT_SECURITY_SMACK is not set
+# CONFIG_DEFAULT_SECURITY_TOMOYO is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
 # CONFIG_CRYPTO is not set
 # CONFIG_CRYPTO is not set
 # CONFIG_BINARY_PRINTF is not set
 # CONFIG_BINARY_PRINTF is not set
 
 

+ 1 - 0
arch/arm/include/asm/cpu.h

@@ -11,6 +11,7 @@
 #define __ASM_ARM_CPU_H
 #define __ASM_ARM_CPU_H
 
 
 #include <linux/percpu.h>
 #include <linux/percpu.h>
+#include <linux/cpu.h>
 
 
 struct cpuinfo_arm {
 struct cpuinfo_arm {
 	struct cpu	cpu;
 	struct cpu	cpu;

+ 2 - 2
arch/arm/include/asm/dma.h

@@ -138,12 +138,12 @@ extern int  get_dma_residue(unsigned int chan);
 #define NO_DMA	255
 #define NO_DMA	255
 #endif
 #endif
 
 
+#endif /* CONFIG_ISA_DMA_API */
+
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
 extern int isa_dma_bridge_buggy;
 extern int isa_dma_bridge_buggy;
 #else
 #else
 #define isa_dma_bridge_buggy    (0)
 #define isa_dma_bridge_buggy    (0)
 #endif
 #endif
 
 
-#endif /* CONFIG_ISA_DMA_API */
-
 #endif /* __ASM_ARM_DMA_H */
 #endif /* __ASM_ARM_DMA_H */

+ 6 - 0
arch/arm/include/asm/ptrace.h

@@ -97,9 +97,15 @@
  * stack during a system call.  Note that sizeof(struct pt_regs)
  * stack during a system call.  Note that sizeof(struct pt_regs)
  * has to be a multiple of 8.
  * has to be a multiple of 8.
  */
  */
+#ifndef __KERNEL__
 struct pt_regs {
 struct pt_regs {
 	long uregs[18];
 	long uregs[18];
 };
 };
+#else /* __KERNEL__ */
+struct pt_regs {
+	unsigned long uregs[18];
+};
+#endif /* __KERNEL__ */
 
 
 #define ARM_cpsr	uregs[16]
 #define ARM_cpsr	uregs[16]
 #define ARM_pc		uregs[15]
 #define ARM_pc		uregs[15]

+ 1 - 0
arch/arm/include/asm/unistd.h

@@ -391,6 +391,7 @@
 #define __NR_pwritev			(__NR_SYSCALL_BASE+362)
 #define __NR_pwritev			(__NR_SYSCALL_BASE+362)
 #define __NR_rt_tgsigqueueinfo		(__NR_SYSCALL_BASE+363)
 #define __NR_rt_tgsigqueueinfo		(__NR_SYSCALL_BASE+363)
 #define __NR_perf_event_open		(__NR_SYSCALL_BASE+364)
 #define __NR_perf_event_open		(__NR_SYSCALL_BASE+364)
+#define __NR_recvmmsg			(__NR_SYSCALL_BASE+365)
 
 
 /*
 /*
  * The following SWIs are ARM private.
  * The following SWIs are ARM private.

+ 1 - 3
arch/arm/kernel/entry-armv.S

@@ -957,9 +957,7 @@ kuser_cmpxchg_fixup:
 
 
 #else
 #else
 
 
-#ifdef CONFIG_SMP
-	mcr	p15, 0, r0, c7, c10, 5	@ dmb
-#endif
+	smp_dmb
 1:	ldrex	r3, [r2]
 1:	ldrex	r3, [r2]
 	subs	r3, r3, r0
 	subs	r3, r3, r0
 	strexeq	r3, r1, [r2]
 	strexeq	r3, r1, [r2]

+ 2 - 1
arch/arm/kernel/process.c

@@ -212,7 +212,8 @@ void __show_regs(struct pt_regs *regs)
 	char buf[64];
 	char buf[64];
 
 
 	printk("CPU: %d    %s  (%s %.*s)\n",
 	printk("CPU: %d    %s  (%s %.*s)\n",
-		smp_processor_id(), print_tainted(), init_utsname()->release,
+		raw_smp_processor_id(), print_tainted(),
+		init_utsname()->release,
 		(int)strcspn(init_utsname()->version, " "),
 		(int)strcspn(init_utsname()->version, " "),
 		init_utsname()->version);
 		init_utsname()->version);
 	print_symbol("PC is at %s\n", instruction_pointer(regs));
 	print_symbol("PC is at %s\n", instruction_pointer(regs));

+ 1 - 0
arch/arm/mach-davinci/include/mach/keyscan.h

@@ -29,6 +29,7 @@ enum davinci_matrix_types {
 };
 };
 
 
 struct davinci_ks_platform_data {
 struct davinci_ks_platform_data {
+	int		(*device_enable)(struct device *dev);
 	unsigned short	*keymap;
 	unsigned short	*keymap;
 	u32		keymapsize;
 	u32		keymapsize;
 	u8		rep:1;
 	u8		rep:1;

+ 2 - 0
arch/arm/mach-lh7a40x/clocks.c

@@ -10,6 +10,8 @@
 #include <mach/hardware.h>
 #include <mach/hardware.h>
 #include <mach/clocks.h>
 #include <mach/clocks.h>
 #include <linux/err.h>
 #include <linux/err.h>
+#include <linux/device.h>
+#include <linux/string.h>
 
 
 struct module;
 struct module;
 
 

+ 3 - 6
arch/arm/mach-pxa/include/mach/hardware.h

@@ -250,20 +250,17 @@
 
 
 #define cpu_is_pxa930()					\
 #define cpu_is_pxa930()					\
 	({						\
 	({						\
-		unsigned int id = read_cpuid(CPUID_ID);	\
-		__cpu_is_pxa930(id);			\
+		__cpu_is_pxa930(read_cpuid_id());	\
 	 })
 	 })
 
 
 #define cpu_is_pxa935()					\
 #define cpu_is_pxa935()					\
 	({						\
 	({						\
-		unsigned int id = read_cpuid(CPUID_ID);	\
-		__cpu_is_pxa935(id);			\
+		__cpu_is_pxa935(read_cpuid_id());	\
 	 })
 	 })
 
 
 #define cpu_is_pxa950()					\
 #define cpu_is_pxa950()					\
 	({						\
 	({						\
-		unsigned int id = read_cpuid(CPUID_ID);	\
-		__cpu_is_pxa950(id);			\
+		__cpu_is_pxa950(read_cpuid_id());	\
 	 })
 	 })
 
 
 
 

+ 1 - 1
arch/arm/mach-pxa/magician.c

@@ -381,7 +381,7 @@ err:
 	return ret;
 	return ret;
 }
 }
 
 
-static int magician_backlight_notify(int brightness)
+static int magician_backlight_notify(struct device *dev, int brightness)
 {
 {
 	gpio_set_value(EGPIO_MAGICIAN_BL_POWER, brightness);
 	gpio_set_value(EGPIO_MAGICIAN_BL_POWER, brightness);
 	if (brightness >= 200) {
 	if (brightness >= 200) {

+ 1 - 1
arch/arm/mach-pxa/palmld.c

@@ -270,7 +270,7 @@ err:
 	return ret;
 	return ret;
 }
 }
 
 
-static int palmld_backlight_notify(int brightness)
+static int palmld_backlight_notify(struct device *dev, int brightness)
 {
 {
 	gpio_set_value(GPIO_NR_PALMLD_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMLD_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMLD_LCD_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMLD_LCD_POWER, brightness);

+ 1 - 1
arch/arm/mach-pxa/palmt5.c

@@ -209,7 +209,7 @@ err:
 	return ret;
 	return ret;
 }
 }
 
 
-static int palmt5_backlight_notify(int brightness)
+static int palmt5_backlight_notify(struct device *dev, int brightness)
 {
 {
 	gpio_set_value(GPIO_NR_PALMT5_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMT5_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMT5_LCD_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMT5_LCD_POWER, brightness);

+ 1 - 1
arch/arm/mach-pxa/palmtc.c

@@ -185,7 +185,7 @@ err:
 	return ret;
 	return ret;
 }
 }
 
 
-static int palmtc_backlight_notify(int brightness)
+static int palmtc_backlight_notify(struct device *dev, int brightness)
 {
 {
 	/* backlight is on when GPIO16 AF0 is high */
 	/* backlight is on when GPIO16 AF0 is high */
 	gpio_set_value(GPIO_NR_PALMTC_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMTC_BL_POWER, brightness);

+ 1 - 1
arch/arm/mach-pxa/palmte2.c

@@ -181,7 +181,7 @@ err:
 	return ret;
 	return ret;
 }
 }
 
 
-static int palmte2_backlight_notify(int brightness)
+static int palmte2_backlight_notify(struct device *dev, int brightness)
 {
 {
 	gpio_set_value(GPIO_NR_PALMTE2_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMTE2_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMTE2_LCD_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMTE2_LCD_POWER, brightness);

+ 1 - 1
arch/arm/mach-pxa/palmtreo.c

@@ -375,7 +375,7 @@ err:
 	return ret;
 	return ret;
 }
 }
 
 
-static int treo_backlight_notify(int brightness)
+static int treo_backlight_notify(struct device *dev, int brightness)
 {
 {
 	gpio_set_value(GPIO_NR_TREO_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_TREO_BL_POWER, brightness);
 	return TREO_MAX_INTENSITY - brightness;
 	return TREO_MAX_INTENSITY - brightness;

+ 1 - 1
arch/arm/mach-pxa/palmtx.c

@@ -269,7 +269,7 @@ err:
 	return ret;
 	return ret;
 }
 }
 
 
-static int palmtx_backlight_notify(int brightness)
+static int palmtx_backlight_notify(struct device *dev, int brightness)
 {
 {
 	gpio_set_value(GPIO_NR_PALMTX_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMTX_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMTX_LCD_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMTX_LCD_POWER, brightness);

+ 1 - 1
arch/arm/mach-pxa/palmz72.c

@@ -196,7 +196,7 @@ err:
 	return ret;
 	return ret;
 }
 }
 
 
-static int palmz72_backlight_notify(int brightness)
+static int palmz72_backlight_notify(struct device *dev, int brightness)
 {
 {
 	gpio_set_value(GPIO_NR_PALMZ72_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMZ72_BL_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMZ72_LCD_POWER, brightness);
 	gpio_set_value(GPIO_NR_PALMZ72_LCD_POWER, brightness);

+ 2 - 2
arch/arm/mach-pxa/spitz.c

@@ -389,13 +389,13 @@ static struct gpio_keys_button spitz_gpio_keys[] = {
 		.type	= EV_SW,
 		.type	= EV_SW,
 		.code	= 0,
 		.code	= 0,
 		.gpio	= SPITZ_GPIO_SWA,
 		.gpio	= SPITZ_GPIO_SWA,
-		.desc	= "Display Down",
+		.desc	= "Display Down",
 	},
 	},
 	{
 	{
 		.type	= EV_SW,
 		.type	= EV_SW,
 		.code	= 1,
 		.code	= 1,
 		.gpio	= SPITZ_GPIO_SWB,
 		.gpio	= SPITZ_GPIO_SWB,
-		.desc	= "Lid Closed",
+		.desc	= "Lid Closed",
 	},
 	},
 };
 };
 
 

+ 1 - 1
arch/arm/mach-pxa/viper.c

@@ -379,7 +379,7 @@ err_request_bckl:
 	return ret;
 	return ret;
 }
 }
 
 
-static int viper_backlight_notify(int brightness)
+static int viper_backlight_notify(struct device *dev, int brightness)
 {
 {
 	gpio_set_value(VIPER_LCD_EN_GPIO, !!brightness);
 	gpio_set_value(VIPER_LCD_EN_GPIO, !!brightness);
 	gpio_set_value(VIPER_BCKLIGHT_EN_GPIO, !!brightness);
 	gpio_set_value(VIPER_BCKLIGHT_EN_GPIO, !!brightness);

+ 2 - 2
arch/arm/mach-realview/include/mach/board-pb1176.h

@@ -74,8 +74,8 @@
 #define REALVIEW_PB1176_L220_BASE		0x10110000 /* L220 registers */
 #define REALVIEW_PB1176_L220_BASE		0x10110000 /* L220 registers */
 
 
 /*
 /*
- * Control register SYS_RESETCTL is set to 1 to force a soft reset
+ * Control register SYS_RESETCTL Bit 8 is set to 1 to force a soft reset
  */
  */
-#define REALVIEW_PB1176_SYS_LOCKVAL_RSTCTL    0x0100
+#define REALVIEW_PB1176_SYS_SOFT_RESET    0x0100
 
 
 #endif	/* __ASM_ARCH_BOARD_PB1176_H */
 #endif	/* __ASM_ARCH_BOARD_PB1176_H */

+ 1 - 1
arch/arm/mach-realview/include/mach/platform.h

@@ -140,7 +140,7 @@
  *     SYS_CLD, SYS_BOOTCS
  *     SYS_CLD, SYS_BOOTCS
  */
  */
 #define REALVIEW_SYS_LOCK_LOCKED    (1 << 16)
 #define REALVIEW_SYS_LOCK_LOCKED    (1 << 16)
-#define REALVIEW_SYS_LOCKVAL_MASK	0xA05F	       /* Enable write access */
+#define REALVIEW_SYS_LOCK_VAL	0xA05F	       /* Enable write access */
 
 
 /*
 /*
  * REALVIEW_SYS_FLASH
  * REALVIEW_SYS_FLASH

+ 15 - 0
arch/arm/mach-realview/realview_eb.c

@@ -381,6 +381,20 @@ static struct sys_timer realview_eb_timer = {
 	.init		= realview_eb_timer_init,
 	.init		= realview_eb_timer_init,
 };
 };
 
 
+static void realview_eb_reset(char mode)
+{
+	void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
+	void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
+
+	/*
+	 * To reset, we hit the on-board reset register
+	 * in the system FPGA
+	 */
+	__raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
+	if (core_tile_eb11mp())
+		__raw_writel(0x0008, reset_ctrl);
+}
+
 static void __init realview_eb_init(void)
 static void __init realview_eb_init(void)
 {
 {
 	int i;
 	int i;
@@ -408,6 +422,7 @@ static void __init realview_eb_init(void)
 #ifdef CONFIG_LEDS
 #ifdef CONFIG_LEDS
 	leds_event = realview_leds_event;
 	leds_event = realview_leds_event;
 #endif
 #endif
+	realview_reset = realview_eb_reset;
 }
 }
 
 
 MACHINE_START(REALVIEW_EB, "ARM-RealView EB")
 MACHINE_START(REALVIEW_EB, "ARM-RealView EB")

+ 4 - 6
arch/arm/mach-realview/realview_pb1176.c

@@ -292,12 +292,10 @@ static struct sys_timer realview_pb1176_timer = {
 
 
 static void realview_pb1176_reset(char mode)
 static void realview_pb1176_reset(char mode)
 {
 {
-	void __iomem *hdr_ctrl = __io_address(REALVIEW_SYS_BASE) +
-		REALVIEW_SYS_RESETCTL_OFFSET;
-	void __iomem *rst_hdr_ctrl = __io_address(REALVIEW_SYS_BASE) +
-		REALVIEW_SYS_LOCK_OFFSET;
-	__raw_writel(REALVIEW_SYS_LOCKVAL_MASK, rst_hdr_ctrl);
-	__raw_writel(REALVIEW_PB1176_SYS_LOCKVAL_RSTCTL, hdr_ctrl);
+	void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
+	void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
+	__raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
+	__raw_writel(REALVIEW_PB1176_SYS_SOFT_RESET, reset_ctrl);
 }
 }
 
 
 static void realview_pb1176_fixup(struct machine_desc *mdesc,
 static void realview_pb1176_fixup(struct machine_desc *mdesc,

+ 5 - 6
arch/arm/mach-realview/realview_pb11mp.c

@@ -301,17 +301,16 @@ static struct sys_timer realview_pb11mp_timer = {
 
 
 static void realview_pb11mp_reset(char mode)
 static void realview_pb11mp_reset(char mode)
 {
 {
-	void __iomem *hdr_ctrl = __io_address(REALVIEW_SYS_BASE) +
-		REALVIEW_SYS_RESETCTL_OFFSET;
-	unsigned int val;
+	void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
+	void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
 
 
 	/*
 	/*
 	 * To reset, we hit the on-board reset register
 	 * To reset, we hit the on-board reset register
 	 * in the system FPGA
 	 * in the system FPGA
 	 */
 	 */
-	val = __raw_readl(hdr_ctrl);
-	val |= REALVIEW_PB11MP_SYS_CTRL_RESET_CONFIGCLR;
-	__raw_writel(val, hdr_ctrl);
+	__raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
+	__raw_writel(0x0000, reset_ctrl);
+	__raw_writel(0x0004, reset_ctrl);
 }
 }
 
 
 static void __init realview_pb11mp_init(void)
 static void __init realview_pb11mp_init(void)

+ 15 - 0
arch/arm/mach-realview/realview_pba8.c

@@ -272,6 +272,20 @@ static struct sys_timer realview_pba8_timer = {
 	.init		= realview_pba8_timer_init,
 	.init		= realview_pba8_timer_init,
 };
 };
 
 
+static void realview_pba8_reset(char mode)
+{
+	void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
+	void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
+
+	/*
+	 * To reset, we hit the on-board reset register
+	 * in the system FPGA
+	 */
+	__raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
+	__raw_writel(0x0000, reset_ctrl);
+	__raw_writel(0x0004, reset_ctrl);
+}
+
 static void __init realview_pba8_init(void)
 static void __init realview_pba8_init(void)
 {
 {
 	int i;
 	int i;
@@ -291,6 +305,7 @@ static void __init realview_pba8_init(void)
 #ifdef CONFIG_LEDS
 #ifdef CONFIG_LEDS
 	leds_event = realview_leds_event;
 	leds_event = realview_leds_event;
 #endif
 #endif
+	realview_reset = realview_pba8_reset;
 }
 }
 
 
 MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8")
 MACHINE_START(REALVIEW_PBA8, "ARM-RealView PB-A8")

+ 15 - 0
arch/arm/mach-realview/realview_pbx.c

@@ -324,6 +324,20 @@ static void realview_pbx_fixup(struct machine_desc *mdesc, struct tag *tags,
 #endif
 #endif
 }
 }
 
 
+static void realview_pbx_reset(char mode)
+{
+	void __iomem *reset_ctrl = __io_address(REALVIEW_SYS_RESETCTL);
+	void __iomem *lock_ctrl = __io_address(REALVIEW_SYS_LOCK);
+
+	/*
+	 * To reset, we hit the on-board reset register
+	 * in the system FPGA
+	 */
+	__raw_writel(REALVIEW_SYS_LOCK_VAL, lock_ctrl);
+	__raw_writel(0x0000, reset_ctrl);
+	__raw_writel(0x0004, reset_ctrl);
+}
+
 static void __init realview_pbx_init(void)
 static void __init realview_pbx_init(void)
 {
 {
 	int i;
 	int i;
@@ -358,6 +372,7 @@ static void __init realview_pbx_init(void)
 #ifdef CONFIG_LEDS
 #ifdef CONFIG_LEDS
 	leds_event = realview_leds_event;
 	leds_event = realview_leds_event;
 #endif
 #endif
+	realview_reset = realview_pbx_reset;
 }
 }
 
 
 MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX")
 MACHINE_START(REALVIEW_PBX, "ARM-RealView PBX")

+ 18 - 18
arch/arm/mach-s3c2440/mach-mini2440.c

@@ -288,7 +288,7 @@ static struct s3c2410_platform_nand mini2440_nand_info __initdata = {
 
 
 /* DM9000AEP 10/100 ethernet controller */
 /* DM9000AEP 10/100 ethernet controller */
 
 
-static struct resource mini2440_dm9k_resource[] __initdata = {
+static struct resource mini2440_dm9k_resource[] = {
 	[0] = {
 	[0] = {
 		.start = MACH_MINI2440_DM9K_BASE,
 		.start = MACH_MINI2440_DM9K_BASE,
 		.end   = MACH_MINI2440_DM9K_BASE + 3,
 		.end   = MACH_MINI2440_DM9K_BASE + 3,
@@ -310,11 +310,11 @@ static struct resource mini2440_dm9k_resource[] __initdata = {
  * The DM9000 has no eeprom, and it's MAC address is set by
  * The DM9000 has no eeprom, and it's MAC address is set by
  * the bootloader before starting the kernel.
  * the bootloader before starting the kernel.
  */
  */
-static struct dm9000_plat_data mini2440_dm9k_pdata __initdata = {
+static struct dm9000_plat_data mini2440_dm9k_pdata = {
 	.flags		= (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
 	.flags		= (DM9000_PLATF_16BITONLY | DM9000_PLATF_NO_EEPROM),
 };
 };
 
 
-static struct platform_device mini2440_device_eth __initdata = {
+static struct platform_device mini2440_device_eth = {
 	.name		= "dm9000",
 	.name		= "dm9000",
 	.id		= -1,
 	.id		= -1,
 	.num_resources	= ARRAY_SIZE(mini2440_dm9k_resource),
 	.num_resources	= ARRAY_SIZE(mini2440_dm9k_resource),
@@ -341,7 +341,7 @@ static struct platform_device mini2440_device_eth __initdata = {
  *	|  |  +----+  +----+
  *	|  |  +----+  +----+
  *	  .....
  *	  .....
  */
  */
-static struct gpio_keys_button mini2440_buttons[] __initdata = {
+static struct gpio_keys_button mini2440_buttons[] = {
 	{
 	{
 		.gpio		= S3C2410_GPG(0),		/* K1 */
 		.gpio		= S3C2410_GPG(0),		/* K1 */
 		.code		= KEY_F1,
 		.code		= KEY_F1,
@@ -384,12 +384,12 @@ static struct gpio_keys_button mini2440_buttons[] __initdata = {
 #endif
 #endif
 };
 };
 
 
-static struct gpio_keys_platform_data mini2440_button_data __initdata = {
+static struct gpio_keys_platform_data mini2440_button_data = {
 	.buttons	= mini2440_buttons,
 	.buttons	= mini2440_buttons,
 	.nbuttons	= ARRAY_SIZE(mini2440_buttons),
 	.nbuttons	= ARRAY_SIZE(mini2440_buttons),
 };
 };
 
 
-static struct platform_device mini2440_button_device __initdata = {
+static struct platform_device mini2440_button_device = {
 	.name		= "gpio-keys",
 	.name		= "gpio-keys",
 	.id		= -1,
 	.id		= -1,
 	.dev		= {
 	.dev		= {
@@ -399,41 +399,41 @@ static struct platform_device mini2440_button_device __initdata = {
 
 
 /* LEDS */
 /* LEDS */
 
 
-static struct s3c24xx_led_platdata mini2440_led1_pdata __initdata = {
+static struct s3c24xx_led_platdata mini2440_led1_pdata = {
 	.name		= "led1",
 	.name		= "led1",
 	.gpio		= S3C2410_GPB(5),
 	.gpio		= S3C2410_GPB(5),
 	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 	.def_trigger	= "heartbeat",
 	.def_trigger	= "heartbeat",
 };
 };
 
 
-static struct s3c24xx_led_platdata mini2440_led2_pdata __initdata = {
+static struct s3c24xx_led_platdata mini2440_led2_pdata = {
 	.name		= "led2",
 	.name		= "led2",
 	.gpio		= S3C2410_GPB(6),
 	.gpio		= S3C2410_GPB(6),
 	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 	.def_trigger	= "nand-disk",
 	.def_trigger	= "nand-disk",
 };
 };
 
 
-static struct s3c24xx_led_platdata mini2440_led3_pdata __initdata = {
+static struct s3c24xx_led_platdata mini2440_led3_pdata = {
 	.name		= "led3",
 	.name		= "led3",
 	.gpio		= S3C2410_GPB(7),
 	.gpio		= S3C2410_GPB(7),
 	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 	.def_trigger	= "mmc0",
 	.def_trigger	= "mmc0",
 };
 };
 
 
-static struct s3c24xx_led_platdata mini2440_led4_pdata __initdata = {
+static struct s3c24xx_led_platdata mini2440_led4_pdata = {
 	.name		= "led4",
 	.name		= "led4",
 	.gpio		= S3C2410_GPB(8),
 	.gpio		= S3C2410_GPB(8),
 	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 	.flags		= S3C24XX_LEDF_ACTLOW | S3C24XX_LEDF_TRISTATE,
 	.def_trigger	= "",
 	.def_trigger	= "",
 };
 };
 
 
-static struct s3c24xx_led_platdata mini2440_led_backlight_pdata __initdata = {
+static struct s3c24xx_led_platdata mini2440_led_backlight_pdata = {
 	.name		= "backlight",
 	.name		= "backlight",
 	.gpio		= S3C2410_GPG(4),
 	.gpio		= S3C2410_GPG(4),
 	.def_trigger	= "backlight",
 	.def_trigger	= "backlight",
 };
 };
 
 
-static struct platform_device mini2440_led1 __initdata = {
+static struct platform_device mini2440_led1 = {
 	.name		= "s3c24xx_led",
 	.name		= "s3c24xx_led",
 	.id		= 1,
 	.id		= 1,
 	.dev		= {
 	.dev		= {
@@ -441,7 +441,7 @@ static struct platform_device mini2440_led1 __initdata = {
 	},
 	},
 };
 };
 
 
-static struct platform_device mini2440_led2 __initdata = {
+static struct platform_device mini2440_led2 = {
 	.name		= "s3c24xx_led",
 	.name		= "s3c24xx_led",
 	.id		= 2,
 	.id		= 2,
 	.dev		= {
 	.dev		= {
@@ -449,7 +449,7 @@ static struct platform_device mini2440_led2 __initdata = {
 	},
 	},
 };
 };
 
 
-static struct platform_device mini2440_led3 __initdata = {
+static struct platform_device mini2440_led3 = {
 	.name		= "s3c24xx_led",
 	.name		= "s3c24xx_led",
 	.id		= 3,
 	.id		= 3,
 	.dev		= {
 	.dev		= {
@@ -457,7 +457,7 @@ static struct platform_device mini2440_led3 __initdata = {
 	},
 	},
 };
 };
 
 
-static struct platform_device mini2440_led4 __initdata = {
+static struct platform_device mini2440_led4 = {
 	.name		= "s3c24xx_led",
 	.name		= "s3c24xx_led",
 	.id		= 4,
 	.id		= 4,
 	.dev		= {
 	.dev		= {
@@ -465,7 +465,7 @@ static struct platform_device mini2440_led4 __initdata = {
 	},
 	},
 };
 };
 
 
-static struct platform_device mini2440_led_backlight __initdata = {
+static struct platform_device mini2440_led_backlight = {
 	.name		= "s3c24xx_led",
 	.name		= "s3c24xx_led",
 	.id		= 5,
 	.id		= 5,
 	.dev		= {
 	.dev		= {
@@ -475,14 +475,14 @@ static struct platform_device mini2440_led_backlight __initdata = {
 
 
 /* AUDIO */
 /* AUDIO */
 
 
-static struct s3c24xx_uda134x_platform_data mini2440_audio_pins __initdata = {
+static struct s3c24xx_uda134x_platform_data mini2440_audio_pins = {
 	.l3_clk = S3C2410_GPB(4),
 	.l3_clk = S3C2410_GPB(4),
 	.l3_mode = S3C2410_GPB(2),
 	.l3_mode = S3C2410_GPB(2),
 	.l3_data = S3C2410_GPB(3),
 	.l3_data = S3C2410_GPB(3),
 	.model = UDA134X_UDA1341
 	.model = UDA134X_UDA1341
 };
 };
 
 
-static struct platform_device mini2440_audio __initdata = {
+static struct platform_device mini2440_audio = {
 	.name		= "s3c24xx_uda134x",
 	.name		= "s3c24xx_uda134x",
 	.id		= 0,
 	.id		= 0,
 	.dev		= {
 	.dev		= {

+ 1 - 0
arch/arm/mach-s3c6410/mach-smdk6410.c

@@ -211,6 +211,7 @@ static struct fixed_voltage_config smdk6410_b_pwr_5v_pdata = {
 	.supply_name = "B_PWR_5V",
 	.supply_name = "B_PWR_5V",
 	.microvolts = 5000000,
 	.microvolts = 5000000,
 	.init_data = &smdk6410_b_pwr_5v_data,
 	.init_data = &smdk6410_b_pwr_5v_data,
+	.gpio = -EINVAL,
 };
 };
 
 
 static struct platform_device smdk6410_b_pwr_5v = {
 static struct platform_device smdk6410_b_pwr_5v = {

+ 12 - 0
arch/arm/mm/Makefile

@@ -27,6 +27,9 @@ obj-$(CONFIG_CPU_ABRT_EV5TJ)	+= abort-ev5tj.o
 obj-$(CONFIG_CPU_ABRT_EV6)	+= abort-ev6.o
 obj-$(CONFIG_CPU_ABRT_EV6)	+= abort-ev6.o
 obj-$(CONFIG_CPU_ABRT_EV7)	+= abort-ev7.o
 obj-$(CONFIG_CPU_ABRT_EV7)	+= abort-ev7.o
 
 
+AFLAGS_abort-ev6.o	:=-Wa,-march=armv6k
+AFLAGS_abort-ev7.o	:=-Wa,-march=armv7-a
+
 obj-$(CONFIG_CPU_PABRT_LEGACY)	+= pabort-legacy.o
 obj-$(CONFIG_CPU_PABRT_LEGACY)	+= pabort-legacy.o
 obj-$(CONFIG_CPU_PABRT_V6)	+= pabort-v6.o
 obj-$(CONFIG_CPU_PABRT_V6)	+= pabort-v6.o
 obj-$(CONFIG_CPU_PABRT_V7)	+= pabort-v7.o
 obj-$(CONFIG_CPU_PABRT_V7)	+= pabort-v7.o
@@ -39,6 +42,9 @@ obj-$(CONFIG_CPU_CACHE_V6)	+= cache-v6.o
 obj-$(CONFIG_CPU_CACHE_V7)	+= cache-v7.o
 obj-$(CONFIG_CPU_CACHE_V7)	+= cache-v7.o
 obj-$(CONFIG_CPU_CACHE_FA)	+= cache-fa.o
 obj-$(CONFIG_CPU_CACHE_FA)	+= cache-fa.o
 
 
+AFLAGS_cache-v6.o	:=-Wa,-march=armv6
+AFLAGS_cache-v7.o	:=-Wa,-march=armv7-a
+
 obj-$(CONFIG_CPU_COPY_V3)	+= copypage-v3.o
 obj-$(CONFIG_CPU_COPY_V3)	+= copypage-v3.o
 obj-$(CONFIG_CPU_COPY_V4WT)	+= copypage-v4wt.o
 obj-$(CONFIG_CPU_COPY_V4WT)	+= copypage-v4wt.o
 obj-$(CONFIG_CPU_COPY_V4WB)	+= copypage-v4wb.o
 obj-$(CONFIG_CPU_COPY_V4WB)	+= copypage-v4wb.o
@@ -58,6 +64,9 @@ obj-$(CONFIG_CPU_TLB_V6)	+= tlb-v6.o
 obj-$(CONFIG_CPU_TLB_V7)	+= tlb-v7.o
 obj-$(CONFIG_CPU_TLB_V7)	+= tlb-v7.o
 obj-$(CONFIG_CPU_TLB_FA)	+= tlb-fa.o
 obj-$(CONFIG_CPU_TLB_FA)	+= tlb-fa.o
 
 
+AFLAGS_tlb-v6.o		:=-Wa,-march=armv6
+AFLAGS_tlb-v7.o		:=-Wa,-march=armv7-a
+
 obj-$(CONFIG_CPU_ARM610)	+= proc-arm6_7.o
 obj-$(CONFIG_CPU_ARM610)	+= proc-arm6_7.o
 obj-$(CONFIG_CPU_ARM710)	+= proc-arm6_7.o
 obj-$(CONFIG_CPU_ARM710)	+= proc-arm6_7.o
 obj-$(CONFIG_CPU_ARM7TDMI)	+= proc-arm7tdmi.o
 obj-$(CONFIG_CPU_ARM7TDMI)	+= proc-arm7tdmi.o
@@ -84,6 +93,9 @@ obj-$(CONFIG_CPU_FEROCEON)	+= proc-feroceon.o
 obj-$(CONFIG_CPU_V6)		+= proc-v6.o
 obj-$(CONFIG_CPU_V6)		+= proc-v6.o
 obj-$(CONFIG_CPU_V7)		+= proc-v7.o
 obj-$(CONFIG_CPU_V7)		+= proc-v7.o
 
 
+AFLAGS_proc-v6.o	:=-Wa,-march=armv6
+AFLAGS_proc-v7.o	:=-Wa,-march=armv7-a
+
 obj-$(CONFIG_CACHE_FEROCEON_L2)	+= cache-feroceon-l2.o
 obj-$(CONFIG_CACHE_FEROCEON_L2)	+= cache-feroceon-l2.o
 obj-$(CONFIG_CACHE_L2X0)	+= cache-l2x0.o
 obj-$(CONFIG_CACHE_L2X0)	+= cache-l2x0.o
 obj-$(CONFIG_CACHE_XSC3L2)	+= cache-xsc3l2.o
 obj-$(CONFIG_CACHE_XSC3L2)	+= cache-xsc3l2.o

+ 5 - 6
arch/arm/mm/cache-xsc3l2.c

@@ -221,15 +221,14 @@ static int __init xsc3_l2_init(void)
 	if (!cpu_is_xsc3() || !xsc3_l2_present())
 	if (!cpu_is_xsc3() || !xsc3_l2_present())
 		return 0;
 		return 0;
 
 
-	if (!(get_cr() & CR_L2)) {
+	if (get_cr() & CR_L2) {
 		pr_info("XScale3 L2 cache enabled.\n");
 		pr_info("XScale3 L2 cache enabled.\n");
-		adjust_cr(CR_L2, CR_L2);
 		xsc3_l2_inv_all();
 		xsc3_l2_inv_all();
-	}
 
 
-	outer_cache.inv_range = xsc3_l2_inv_range;
-	outer_cache.clean_range = xsc3_l2_clean_range;
-	outer_cache.flush_range = xsc3_l2_flush_range;
+		outer_cache.inv_range = xsc3_l2_inv_range;
+		outer_cache.clean_range = xsc3_l2_clean_range;
+		outer_cache.flush_range = xsc3_l2_flush_range;
+	}
 
 
 	return 0;
 	return 0;
 }
 }

+ 7 - 0
arch/arm/mm/proc-xsc3.S

@@ -407,6 +407,13 @@ __xsc3_setup:
 
 
 	adr	r5, xsc3_crval
 	adr	r5, xsc3_crval
 	ldmia	r5, {r5, r6}
 	ldmia	r5, {r5, r6}
+
+#ifdef CONFIG_CACHE_XSC3L2
+	mrc	p15, 1, r0, c0, c0, 1		@ get L2 present information
+	ands	r0, r0, #0xf8
+	orrne	r6, r6, #(1 << 26)		@ enable L2 if present
+#endif
+
 	mrc	p15, 0, r0, c1, c0, 0		@ get control register
 	mrc	p15, 0, r0, c1, c0, 0		@ get control register
 	bic	r0, r0, r5			@ ..V. ..R. .... ..A.
 	bic	r0, r0, r5			@ ..V. ..R. .... ..A.
 	orr	r0, r0, r6			@ ..VI Z..S .... .C.M (mmu)
 	orr	r0, r0, r6			@ ..VI Z..S .... .C.M (mmu)

+ 2 - 2
arch/arm/plat-s3c/dev-nand.c

@@ -58,8 +58,8 @@ static int __init s3c_nand_copy_set(struct s3c2410_nand_set *set)
 			return -ENOMEM;
 			return -ENOMEM;
 	}
 	}
 	
 	
-	size = sizeof(int) * set->nr_chips;
-	if (size) {
+	if (set->nr_map && set->nr_chips) {
+		size = sizeof(int) * set->nr_chips;
 		ptr = kmemdup(set->nr_map, size, GFP_KERNEL);
 		ptr = kmemdup(set->nr_map, size, GFP_KERNEL);
 		set->nr_map = ptr;
 		set->nr_map = ptr;
 
 

+ 1 - 13
arch/m68k/include/asm/io_no.h

@@ -3,6 +3,7 @@
 
 
 #ifdef __KERNEL__
 #ifdef __KERNEL__
 
 
+#include <asm/virtconvert.h>
 
 
 /*
 /*
  * These are for ISA/PCI shared memory _only_ and should never be used
  * These are for ISA/PCI shared memory _only_ and should never be used
@@ -165,19 +166,6 @@ static inline void *ioremap_fullcache(unsigned long physaddr, unsigned long size
 
 
 extern void iounmap(void *addr);
 extern void iounmap(void *addr);
 
 
-/* Pages to physical address... */
-#define page_to_phys(page)      ((page - mem_map) << PAGE_SHIFT)
-#define page_to_bus(page)       ((page - mem_map) << PAGE_SHIFT)
-
-/*
- * Macros used for converting between virtual and physical mappings.
- */
-#define phys_to_virt(vaddr)	((void *) (vaddr))
-#define virt_to_phys(vaddr)	((unsigned long) (vaddr))
-
-#define virt_to_bus virt_to_phys
-#define bus_to_virt phys_to_virt
-
 /*
 /*
  * Convert a physical pointer to a virtual kernel pointer for /dev/mem
  * Convert a physical pointer to a virtual kernel pointer for /dev/mem
  * access
  * access

+ 2 - 2
arch/m68k/include/asm/page_no.h

@@ -56,8 +56,8 @@ extern unsigned long memory_end;
 
 
 #ifndef __ASSEMBLY__
 #ifndef __ASSEMBLY__
 
 
-#define __pa(vaddr)		virt_to_phys((void *)(vaddr))
-#define __va(paddr)		phys_to_virt((unsigned long)(paddr))
+#define __pa(vaddr)		((unsigned long)(vaddr))
+#define __va(paddr)		((void *)(paddr))
 
 
 #define virt_to_pfn(kaddr)	(__pa(kaddr) >> PAGE_SHIFT)
 #define virt_to_pfn(kaddr)	(__pa(kaddr) >> PAGE_SHIFT)
 #define pfn_to_virt(pfn)	__va((pfn) << PAGE_SHIFT)
 #define pfn_to_virt(pfn)	__va((pfn) << PAGE_SHIFT)

+ 4 - 0
arch/m68k/include/asm/virtconvert.h

@@ -26,6 +26,7 @@ static inline void *phys_to_virt(unsigned long address)
 }
 }
 
 
 /* Permanent address of a page. */
 /* Permanent address of a page. */
+#ifdef CONFIG_MMU
 #ifdef CONFIG_SINGLE_MEMORY_CHUNK
 #ifdef CONFIG_SINGLE_MEMORY_CHUNK
 #define page_to_phys(page) \
 #define page_to_phys(page) \
 	__pa(PAGE_OFFSET + (((page) - pg_data_map[0].node_mem_map) << PAGE_SHIFT))
 	__pa(PAGE_OFFSET + (((page) - pg_data_map[0].node_mem_map) << PAGE_SHIFT))
@@ -37,6 +38,9 @@ static inline void *phys_to_virt(unsigned long address)
 	page_to_pfn(__page) << PAGE_SHIFT;				\
 	page_to_pfn(__page) << PAGE_SHIFT;				\
 })
 })
 #endif
 #endif
+#else
+#define page_to_phys(page)	(((page) - mem_map) << PAGE_SHIFT)
+#endif
 
 
 /*
 /*
  * IO bus memory addresses are 1:1 with the physical address,
  * IO bus memory addresses are 1:1 with the physical address,

+ 0 - 1
arch/m68knommu/platform/coldfire/pit.c

@@ -146,7 +146,6 @@ static struct clocksource pit_clk = {
 	.read	= pit_read_clk,
 	.read	= pit_read_clk,
 	.shift	= 20,
 	.shift	= 20,
 	.mask	= CLOCKSOURCE_MASK(32),
 	.mask	= CLOCKSOURCE_MASK(32),
-	.flags	= CLOCK_SOURCE_IS_CONTINUOUS,
 };
 };
 
 
 /***************************************************************************/
 /***************************************************************************/

+ 2 - 2
arch/mips/alchemy/common/dbdma.c

@@ -613,7 +613,7 @@ u32 _au1xxx_dbdma_put_source(u32 chanid, void *buf, int nbytes, u32 flags)
 	dma_cache_wback_inv((unsigned long)buf, nbytes);
 	dma_cache_wback_inv((unsigned long)buf, nbytes);
 	dp->dscr_cmd0 |= DSCR_CMD0_V;	/* Let it rip */
 	dp->dscr_cmd0 |= DSCR_CMD0_V;	/* Let it rip */
 	au_sync();
 	au_sync();
-	dma_cache_wback_inv((unsigned long)dp, sizeof(dp));
+	dma_cache_wback_inv((unsigned long)dp, sizeof(*dp));
 	ctp->chan_ptr->ddma_dbell = 0;
 	ctp->chan_ptr->ddma_dbell = 0;
 
 
 	/* Get next descriptor pointer.	*/
 	/* Get next descriptor pointer.	*/
@@ -676,7 +676,7 @@ _au1xxx_dbdma_put_dest(u32 chanid, void *buf, int nbytes, u32 flags)
 	dma_cache_inv((unsigned long)buf, nbytes);
 	dma_cache_inv((unsigned long)buf, nbytes);
 	dp->dscr_cmd0 |= DSCR_CMD0_V;	/* Let it rip */
 	dp->dscr_cmd0 |= DSCR_CMD0_V;	/* Let it rip */
 	au_sync();
 	au_sync();
-	dma_cache_wback_inv((unsigned long)dp, sizeof(dp));
+	dma_cache_wback_inv((unsigned long)dp, sizeof(*dp));
 	ctp->chan_ptr->ddma_dbell = 0;
 	ctp->chan_ptr->ddma_dbell = 0;
 
 
 	/* Get next descriptor pointer.	*/
 	/* Get next descriptor pointer.	*/

+ 0 - 15
arch/mips/ar7/prom.c

@@ -219,14 +219,6 @@ static void __init console_config(void)
 	if (strstr(prom_getcmdline(), "console="))
 	if (strstr(prom_getcmdline(), "console="))
 		return;
 		return;
 
 
-#ifdef CONFIG_KGDB
-	if (!strstr(prom_getcmdline(), "nokgdb")) {
-		strcat(prom_getcmdline(), " console=kgdb");
-		kgdb_enabled = 1;
-		return;
-	}
-#endif
-
 	s = prom_getenv("modetty0");
 	s = prom_getenv("modetty0");
 	if (s) {
 	if (s) {
 		baud = simple_strtoul(s, &p, 10);
 		baud = simple_strtoul(s, &p, 10);
@@ -280,13 +272,6 @@ static inline void serial_out(int offset, int value)
 	writel(value, (void *)PORT(offset));
 	writel(value, (void *)PORT(offset));
 }
 }
 
 
-char prom_getchar(void)
-{
-	while (!(serial_in(UART_LSR) & UART_LSR_DR))
-		;
-	return serial_in(UART_RX);
-}
-
 int prom_putchar(char c)
 int prom_putchar(char c)
 {
 {
 	while ((serial_in(UART_LSR) & UART_LSR_TEMT) == 0)
 	while ((serial_in(UART_LSR) & UART_LSR_TEMT) == 0)

+ 16 - 17
arch/mips/bcm63xx/boards/board_bcm963xx.c

@@ -346,27 +346,26 @@ static struct board_info __initdata board_96348gw = {
 };
 };
 
 
 static struct board_info __initdata board_FAST2404 = {
 static struct board_info __initdata board_FAST2404 = {
-        .name                           = "F@ST2404",
-        .expected_cpu_id                = 0x6348,
-
-        .has_enet0                      = 1,
-        .has_enet1                      = 1,
-        .has_pci                        = 1,
+	.name				= "F@ST2404",
+	.expected_cpu_id		= 0x6348,
 
 
-        .enet0 = {
-                .has_phy                = 1,
-                .use_internal_phy       = 1,
-        },
+	.has_enet0			= 1,
+	.has_enet1			= 1,
+	.has_pci			= 1,
 
 
-        .enet1 = {
-                .force_speed_100        = 1,
-                .force_duplex_full      = 1,
-        },
+	.enet0 = {
+		.has_phy		= 1,
+		.use_internal_phy	= 1,
+	},
 
 
+	.enet1 = {
+		.force_speed_100	= 1,
+		.force_duplex_full	= 1,
+	},
 
 
-        .has_ohci0 = 1,
-        .has_pccard = 1,
-        .has_ehci0 = 1,
+	.has_ohci0			= 1,
+	.has_pccard			= 1,
+	.has_ehci0			= 1,
 };
 };
 
 
 static struct board_info __initdata board_DV201AMR = {
 static struct board_info __initdata board_DV201AMR = {

+ 0 - 3
arch/mips/bcm63xx/prom.c

@@ -40,9 +40,6 @@ void __init prom_init(void)
 	reg &= ~mask;
 	reg &= ~mask;
 	bcm_perf_writel(reg, PERF_CKCTL_REG);
 	bcm_perf_writel(reg, PERF_CKCTL_REG);
 
 
-	/* assign command line from kernel config */
-	strcpy(arcs_cmdline, CONFIG_CMDLINE);
-
 	/* register gpiochip */
 	/* register gpiochip */
 	bcm63xx_gpio_init();
 	bcm63xx_gpio_init();
 
 

+ 1 - 0
arch/mips/boot/.gitignore

@@ -1,4 +1,5 @@
 mkboot
 mkboot
 elf2ecoff
 elf2ecoff
+vmlinux.*
 zImage
 zImage
 zImage.tmp
 zImage.tmp

+ 1 - 1
arch/mips/boot/Makefile

@@ -28,7 +28,7 @@ VMLINUX = vmlinux
 all: vmlinux.ecoff vmlinux.srec
 all: vmlinux.ecoff vmlinux.srec
 
 
 vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX)
 vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX)
-	$(obj)/elf2ecoff $(VMLINUX) vmlinux.ecoff $(E2EFLAGS)
+	$(obj)/elf2ecoff $(VMLINUX) $(obj)/vmlinux.ecoff $(E2EFLAGS)
 
 
 $(obj)/elf2ecoff: $(obj)/elf2ecoff.c
 $(obj)/elf2ecoff: $(obj)/elf2ecoff.c
 	$(HOSTCC) -o $@ $^
 	$(HOSTCC) -o $@ $^

+ 3 - 6
arch/mips/boot/compressed/Makefile

@@ -56,7 +56,7 @@ $(obj)/piggy.o: $(obj)/vmlinux.$(suffix_y) $(obj)/dummy.o
 LDFLAGS_vmlinuz := $(LDFLAGS) -Ttext $(VMLINUZ_LOAD_ADDRESS) -T
 LDFLAGS_vmlinuz := $(LDFLAGS) -Ttext $(VMLINUZ_LOAD_ADDRESS) -T
 vmlinuz: $(src)/ld.script $(obj-y) $(obj)/piggy.o
 vmlinuz: $(src)/ld.script $(obj-y) $(obj)/piggy.o
 	$(call if_changed,ld)
 	$(call if_changed,ld)
-	$(Q)$(OBJCOPY) $(OBJCOPYFLAGS) -R .comment -R .stab -R .stabstr -R .initrd -R .sysmap $@
+	$(Q)$(OBJCOPY) $(OBJCOPYFLAGS) $@
 
 
 #
 #
 # Some DECstations need all possible sections of an ECOFF executable
 # Some DECstations need all possible sections of an ECOFF executable
@@ -84,14 +84,11 @@ vmlinuz.ecoff: $(obj)/../elf2ecoff $(VMLINUZ)
 $(obj)/../elf2ecoff: $(src)/../elf2ecoff.c
 $(obj)/../elf2ecoff: $(src)/../elf2ecoff.c
 	$(Q)$(HOSTCC) -o $@ $^
 	$(Q)$(HOSTCC) -o $@ $^
 
 
-drop-sections	= .reginfo .mdebug .comment .note .pdr .options .MIPS.options
-strip-flags	= $(addprefix --remove-section=,$(drop-sections))
-
-OBJCOPYFLAGS_vmlinuz.bin := $(OBJCOPYFLAGS) -O binary $(strip-flags)
+OBJCOPYFLAGS_vmlinuz.bin := $(OBJCOPYFLAGS) -O binary
 vmlinuz.bin: vmlinuz
 vmlinuz.bin: vmlinuz
 	$(call if_changed,objcopy)
 	$(call if_changed,objcopy)
 
 
-OBJCOPYFLAGS_vmlinuz.srec := $(OBJCOPYFLAGS) -S -O srec $(strip-flags)
+OBJCOPYFLAGS_vmlinuz.srec := $(OBJCOPYFLAGS) -S -O srec
 vmlinuz.srec: vmlinuz
 vmlinuz.srec: vmlinuz
 	$(call if_changed,objcopy)
 	$(call if_changed,objcopy)
 
 

+ 0 - 10
arch/mips/boot/compressed/decompress.c

@@ -28,8 +28,6 @@ char *zimage_start;
 
 
 /* The linker tells us where the image is. */
 /* The linker tells us where the image is. */
 extern unsigned char __image_begin, __image_end;
 extern unsigned char __image_begin, __image_end;
-extern unsigned char __ramdisk_begin, __ramdisk_end;
-unsigned long initrd_size;
 
 
 /* debug interfaces  */
 /* debug interfaces  */
 extern void puts(const char *s);
 extern void puts(const char *s);
@@ -102,14 +100,6 @@ void decompress_kernel(unsigned long boot_heap_start)
 	puthex((unsigned long)(zimage_size + zimage_start));
 	puthex((unsigned long)(zimage_size + zimage_start));
 	puts("\n");
 	puts("\n");
 
 
-	if (initrd_size) {
-		puts("initrd at:     ");
-		puthex((unsigned long)(&__ramdisk_begin));
-		puts(" ");
-		puthex((unsigned long)(&__ramdisk_end));
-		puts("\n");
-	}
-
 	/* this area are prepared for mallocing when decompressing */
 	/* this area are prepared for mallocing when decompressing */
 	free_mem_ptr = boot_heap_start;
 	free_mem_ptr = boot_heap_start;
 	free_mem_end_ptr = boot_heap_start + BOOT_HEAP_SIZE;
 	free_mem_end_ptr = boot_heap_start + BOOT_HEAP_SIZE;

+ 56 - 139
arch/mips/boot/compressed/ld.script

@@ -1,150 +1,67 @@
+/*
+ * ld.script for compressed kernel support of MIPS
+ *
+ * Copyright (C) 2009 Lemote Inc.
+ * Author: Wu Zhangjin <wuzj@lemote.com>
+ */
+
 OUTPUT_ARCH(mips)
 OUTPUT_ARCH(mips)
 ENTRY(start)
 ENTRY(start)
 SECTIONS
 SECTIONS
 {
 {
-  /* Read-only sections, merged into text segment: */
-  .init          : { *(.init)		} =0
-  .text      :
-  {
-    _ftext = . ;
-    *(.text)
-    *(.rodata)
-    *(.rodata1)
-    /* .gnu.warning sections are handled specially by elf32.em.  */
-    *(.gnu.warning)
-  } =0
-  .kstrtab : { *(.kstrtab) }
-
-  . = ALIGN(16);		/* Exception table */
-  __start___ex_table = .;
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  __start___dbe_table = .;	/* Exception table for data bus errors */
-  __dbe_table : { *(__dbe_table) }
-  __stop___dbe_table = .;
-
-  __start___ksymtab = .;	/* Kernel symbol table */
-  __ksymtab : { *(__ksymtab) }
-  __stop___ksymtab = .;
-
-  _etext = .;
-
-  . = ALIGN(8192);
-  .data.init_task : { *(.data.init_task) }
-
-  /* Startup code */
-  . = ALIGN(4096);
-  __init_begin = .;
-  .text.init : { *(.text.init) }
-  .data.init : { *(.data.init) }
-  . = ALIGN(16);
-  __setup_start = .;
-  .setup.init : { *(.setup.init) }
-  __setup_end = .;
-  __initcall_start = .;
-  .initcall.init : { *(.initcall.init) }
-  __initcall_end = .;
-  . = ALIGN(4096);	/* Align double page for init_task_union */
-  __init_end = .;
-
-  . = ALIGN(4096);
-  .data.page_aligned : { *(.data.idt) }
-
-  . = ALIGN(32);
-  .data.cacheline_aligned : { *(.data.cacheline_aligned) }
+	/* . = VMLINUZ_LOAD_ADDRESS */
+	/* read-only */
+	_text = .;	/* Text and read-only data */
+	.text	: {
+		_ftext = . ;
+		*(.text)
+		*(.rodata)
+	} = 0
+	_etext = .;	/* End of text section */
 
 
-  .fini      : { *(.fini)    } =0
-  .reginfo : { *(.reginfo) }
-  /* Adjust the address for the data segment.  We want to adjust up to
-     the same address within the page on the next page up.  It would
-     be more correct to do this:
-       . = .;
-     The current expression does not correctly handle the case of a
-     text segment ending precisely at the end of a page; it causes the
-     data segment to skip a page.  The above expression does not have
-     this problem, but it will currently (2/95) cause BFD to allocate
-     a single segment, combining both text and data, for this case.
-     This will prevent the text segment from being shared among
-     multiple executions of the program; I think that is more
-     important than losing a page of the virtual address space (note
-     that no actual memory is lost; the page which is skipped can not
-     be referenced).  */
-  . = .;
-  .data    :
-  {
-    _fdata = . ;
-    *(.data)
+	/* writable */
+	.data	: {	/* Data */
+		_fdata = . ;
+		*(.data)
+		/* Put the compressed image here, so bss is on the end. */
+		__image_begin = .;
+		*(.image)
+		__image_end = .;
+		CONSTRUCTORS
+	}
+	.sdata	: { *(.sdata) }
+	. = ALIGN(4);
+	_edata  =  .;	/* End of data section */
 
 
-   /* Put the compressed image here, so bss is on the end. */
-   __image_begin = .;
-   *(.image)
-   __image_end = .;
-   /* Align the initial ramdisk image (INITRD) on page boundaries. */
-   . = ALIGN(4096);
-   __ramdisk_begin = .;
-   *(.initrd)
-   __ramdisk_end = .;
-   . = ALIGN(4096);
+	/* BSS */
+	__bss_start = .;
+	_fbss = .;
+	.sbss	: { *(.sbss) *(.scommon) }
+	.bss	: {
+		*(.dynbss)
+		*(.bss)
+		*(COMMON)
+	}
+	.  = ALIGN(4);
+	_end = . ;
 
 
-    CONSTRUCTORS
-  }
-  .data1   : { *(.data1) }
-  _gp = . + 0x8000;
-  .lit8 : { *(.lit8) }
-  .lit4 : { *(.lit4) }
-  .ctors         : { *(.ctors)   }
-  .dtors         : { *(.dtors)   }
-  .got           : { *(.got.plt) *(.got) }
-  .dynamic       : { *(.dynamic) }
-  /* We want the small data sections together, so single-instruction offsets
-     can access them all, and initialized data all before uninitialized, so
-     we can shorten the on-disk segment size.  */
-  .sdata     : { *(.sdata) }
-  . = ALIGN(4);
-  _edata  =  .;
-  PROVIDE (edata = .);
+	/* These are needed for ELF backends which have not yet been converted
+	 * to the new style linker.  */
 
 
-  __bss_start = .;
-  _fbss = .;
-  .sbss      : { *(.sbss) *(.scommon) }
-  .bss       :
-  {
-   *(.dynbss)
-   *(.bss)
-   *(COMMON)
-   .  = ALIGN(4);
-  _end = . ;
-  PROVIDE (end = .);
-  }
+	.stab 0 : { *(.stab) }
+	.stabstr 0 : { *(.stabstr) }
 
 
-  /* Sections to be discarded */
-  /DISCARD/ :
-  {
-        *(.text.exit)
-        *(.data.exit)
-        *(.exitcall.exit)
-  }
+	/* These must appear regardless of  .  */
+	.gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
+	.gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
 
 
-  /* This is the MIPS specific mdebug section.  */
-  .mdebug : { *(.mdebug) }
-  /* These are needed for ELF backends which have not yet been
-     converted to the new style linker.  */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-  /* DWARF debug sections.
-     Symbols in the .debug DWARF section are relative to the beginning of the
-     section so we begin .debug at 0.  It's not clear yet what needs to happen
-     for the others.   */
-  .debug          0 : { *(.debug) }
-  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-  .debug_aranges  0 : { *(.debug_aranges) }
-  .debug_pubnames 0 : { *(.debug_pubnames) }
-  .debug_sfnames  0 : { *(.debug_sfnames) }
-  .line           0 : { *(.line) }
-  /* These must appear regardless of  .  */
-  .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) }
-  .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) }
-  .comment : { *(.comment) }
-  .note : { *(.note) }
+	/* Sections to be discarded */
+	/DISCARD/	: {
+		*(.MIPS.options)
+		*(.options)
+		*(.pdr)
+		*(.reginfo)
+		*(.comment)
+		*(.note)
+	}
 }
 }

+ 32 - 0
arch/mips/cavium-octeon/csrc-octeon.c

@@ -50,6 +50,38 @@ static struct clocksource clocksource_mips = {
 	.flags		= CLOCK_SOURCE_IS_CONTINUOUS,
 	.flags		= CLOCK_SOURCE_IS_CONTINUOUS,
 };
 };
 
 
+unsigned long long notrace sched_clock(void)
+{
+	/* 64-bit arithmatic can overflow, so use 128-bit.  */
+#if (__GNUC__ < 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ <= 3))
+	u64 t1, t2, t3;
+	unsigned long long rv;
+	u64 mult = clocksource_mips.mult;
+	u64 shift = clocksource_mips.shift;
+	u64 cnt = read_c0_cvmcount();
+
+	asm (
+		"dmultu\t%[cnt],%[mult]\n\t"
+		"nor\t%[t1],$0,%[shift]\n\t"
+		"mfhi\t%[t2]\n\t"
+		"mflo\t%[t3]\n\t"
+		"dsll\t%[t2],%[t2],1\n\t"
+		"dsrlv\t%[rv],%[t3],%[shift]\n\t"
+		"dsllv\t%[t1],%[t2],%[t1]\n\t"
+		"or\t%[rv],%[t1],%[rv]\n\t"
+		: [rv] "=&r" (rv), [t1] "=&r" (t1), [t2] "=&r" (t2), [t3] "=&r" (t3)
+		: [cnt] "r" (cnt), [mult] "r" (mult), [shift] "r" (shift)
+		: "hi", "lo");
+	return rv;
+#else
+	/* GCC > 4.3 do it the easy way.  */
+	unsigned int __attribute__((mode(TI))) t;
+	t = read_c0_cvmcount();
+	t = t * clocksource_mips.mult;
+	return (unsigned long long)(t >> clocksource_mips.shift);
+#endif
+}
+
 void __init plat_time_init(void)
 void __init plat_time_init(void)
 {
 {
 	clocksource_mips.rating = 300;
 	clocksource_mips.rating = 300;

+ 8 - 16
arch/mips/cobalt/setup.c

@@ -97,26 +97,18 @@ void __init plat_mem_setup(void)
 
 
 void __init prom_init(void)
 void __init prom_init(void)
 {
 {
-	int narg, indx, posn, nchr;
 	unsigned long memsz;
 	unsigned long memsz;
+	int argc, i;
 	char **argv;
 	char **argv;
 
 
 	memsz = fw_arg0 & 0x7fff0000;
 	memsz = fw_arg0 & 0x7fff0000;
-	narg = fw_arg0 & 0x0000ffff;
-
-	if (narg) {
-		arcs_cmdline[0] = '\0';
-		argv = (char **) fw_arg1;
-		posn = 0;
-		for (indx = 1; indx < narg; ++indx) {
-			nchr = strlen(argv[indx]);
-			if (posn + 1 + nchr + 1 > sizeof(arcs_cmdline))
-				break;
-			if (posn)
-				arcs_cmdline[posn++] = ' ';
-			strcpy(arcs_cmdline + posn, argv[indx]);
-			posn += nchr;
-		}
+	argc = fw_arg0 & 0x0000ffff;
+	argv = (char **)fw_arg1;
+
+	for (i = 1; i < argc; i++) {
+		strlcat(arcs_cmdline, argv[i], COMMAND_LINE_SIZE);
+		if (i < (argc - 1))
+			strlcat(arcs_cmdline, " ", COMMAND_LINE_SIZE);
 	}
 	}
 
 
 	add_memory_region(0x0, memsz, BOOT_MEM_RAM);
 	add_memory_region(0x0, memsz, BOOT_MEM_RAM);

+ 3 - 1
arch/mips/include/asm/mach-ip27/topology.h

@@ -24,7 +24,9 @@ extern struct cpuinfo_ip27 sn_cpu_info[NR_CPUS];
 
 
 #define cpu_to_node(cpu)	(sn_cpu_info[(cpu)].p_nodeid)
 #define cpu_to_node(cpu)	(sn_cpu_info[(cpu)].p_nodeid)
 #define parent_node(node)	(node)
 #define parent_node(node)	(node)
-#define cpumask_of_node(node)	(&hub_data(node)->h_cpus)
+#define cpumask_of_node(node)	((node) == -1 ?				\
+				 cpu_all_mask :				\
+				 &hub_data(node)->h_cpus)
 struct pci_bus;
 struct pci_bus;
 extern int pcibus_to_node(struct pci_bus *);
 extern int pcibus_to_node(struct pci_bus *);
 
 

+ 0 - 4
arch/mips/mipssim/sim_setup.c

@@ -49,9 +49,6 @@ void __init plat_mem_setup(void)
 	set_io_port_base(0xbfd00000);
 	set_io_port_base(0xbfd00000);
 
 
 	serial_init();
 	serial_init();
-
-	pr_info("Linux started...\n");
-
 }
 }
 
 
 extern struct plat_smp_ops ssmtc_smp_ops;
 extern struct plat_smp_ops ssmtc_smp_ops;
@@ -60,7 +57,6 @@ void __init prom_init(void)
 {
 {
 	set_io_port_base(0xbfd00000);
 	set_io_port_base(0xbfd00000);
 
 
-	pr_info("\nLINUX started...\n");
 	prom_meminit();
 	prom_meminit();
 
 
 #ifdef CONFIG_MIPS_MT_SMP
 #ifdef CONFIG_MIPS_MT_SMP

+ 0 - 8
arch/mips/mm/tlbex.c

@@ -73,9 +73,6 @@ static int __cpuinit m4kc_tlbp_war(void)
 enum label_id {
 enum label_id {
 	label_second_part = 1,
 	label_second_part = 1,
 	label_leave,
 	label_leave,
-#ifdef MODULE_START
-	label_module_alloc,
-#endif
 	label_vmalloc,
 	label_vmalloc,
 	label_vmalloc_done,
 	label_vmalloc_done,
 	label_tlbw_hazard,
 	label_tlbw_hazard,
@@ -92,9 +89,6 @@ enum label_id {
 
 
 UASM_L_LA(_second_part)
 UASM_L_LA(_second_part)
 UASM_L_LA(_leave)
 UASM_L_LA(_leave)
-#ifdef MODULE_START
-UASM_L_LA(_module_alloc)
-#endif
 UASM_L_LA(_vmalloc)
 UASM_L_LA(_vmalloc)
 UASM_L_LA(_vmalloc_done)
 UASM_L_LA(_vmalloc_done)
 UASM_L_LA(_tlbw_hazard)
 UASM_L_LA(_tlbw_hazard)
@@ -818,8 +812,6 @@ static void __cpuinit build_r4000_tlb_refill_handler(void)
 	} else {
 	} else {
 #if defined(CONFIG_HUGETLB_PAGE)
 #if defined(CONFIG_HUGETLB_PAGE)
 		const enum label_id ls = label_tlb_huge_update;
 		const enum label_id ls = label_tlb_huge_update;
-#elif defined(MODULE_START)
-		const enum label_id ls = label_module_alloc;
 #else
 #else
 		const enum label_id ls = label_vmalloc;
 		const enum label_id ls = label_vmalloc;
 #endif
 #endif

+ 0 - 1
arch/mips/mti-malta/malta-init.c

@@ -355,7 +355,6 @@ void __init prom_init(void)
 	board_nmi_handler_setup = mips_nmi_setup;
 	board_nmi_handler_setup = mips_nmi_setup;
 	board_ejtag_handler_setup = mips_ejtag_setup;
 	board_ejtag_handler_setup = mips_ejtag_setup;
 
 
-	pr_info("\nLINUX started...\n");
 	prom_init_cmdline();
 	prom_init_cmdline();
 	prom_meminit();
 	prom_meminit();
 #ifdef CONFIG_SERIAL_8250_CONSOLE
 #ifdef CONFIG_SERIAL_8250_CONSOLE

+ 1 - 1
arch/mips/powertv/Makefile

@@ -23,6 +23,6 @@
 # under Linux.
 # under Linux.
 #
 #
 
 
-obj-y += cmdline.o init.o memory.o reset.o time.o powertv_setup.o asic/ pci/
+obj-y += init.o memory.o reset.o time.o powertv_setup.o asic/ pci/
 
 
 EXTRA_CFLAGS += -Wall -Werror
 EXTRA_CFLAGS += -Wall -Werror

+ 0 - 52
arch/mips/powertv/cmdline.c

@@ -1,52 +0,0 @@
-/*
- * Carsten Langgaard, carstenl@mips.com
- * Copyright (C) 1999,2000 MIPS Technologies, Inc.  All rights reserved.
- * Portions copyright (C) 2009 Cisco Systems, Inc.
- *
- * This program is free software; you can distribute it and/or modify it
- * under the terms of the GNU General Public License (Version 2) as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
- *
- * Kernel command line creation using the prom monitor (YAMON) argc/argv.
- */
-#include <linux/init.h>
-#include <linux/string.h>
-
-#include <asm/bootinfo.h>
-
-#include "init.h"
-
-/*
- * YAMON (32-bit PROM) pass arguments and environment as 32-bit pointer.
- * This macro take care of sign extension.
- */
-#define prom_argv(index) ((char *)(long)_prom_argv[(index)])
-
-char * __init prom_getcmdline(void)
-{
-	return &(arcs_cmdline[0]);
-}
-
-void  __init prom_init_cmdline(void)
-{
-	int len;
-
-	if (prom_argc != 1)
-		return;
-
-	len = strlen(arcs_cmdline);
-
-	arcs_cmdline[len] = ' ';
-
-	strlcpy(arcs_cmdline + len + 1, (char *)_prom_argv,
-		COMMAND_LINE_SIZE - len - 1);
-}

+ 8 - 7
arch/mips/powertv/init.c

@@ -34,10 +34,7 @@
 #include <asm/mips-boards/generic.h>
 #include <asm/mips-boards/generic.h>
 #include <asm/mach-powertv/asic.h>
 #include <asm/mach-powertv/asic.h>
 
 
-#include "init.h"
-
-int prom_argc;
-int *_prom_argv, *_prom_envp;
+static int *_prom_envp;
 unsigned long _prom_memsize;
 unsigned long _prom_memsize;
 
 
 /*
 /*
@@ -109,16 +106,20 @@ static void __init mips_ejtag_setup(void)
 
 
 void __init prom_init(void)
 void __init prom_init(void)
 {
 {
+	int prom_argc;
+	char *prom_argv;
+
 	prom_argc = fw_arg0;
 	prom_argc = fw_arg0;
-	_prom_argv = (int *) fw_arg1;
+	prom_argv = (char *) fw_arg1;
 	_prom_envp = (int *) fw_arg2;
 	_prom_envp = (int *) fw_arg2;
 	_prom_memsize = (unsigned long) fw_arg3;
 	_prom_memsize = (unsigned long) fw_arg3;
 
 
 	board_nmi_handler_setup = mips_nmi_setup;
 	board_nmi_handler_setup = mips_nmi_setup;
 	board_ejtag_handler_setup = mips_ejtag_setup;
 	board_ejtag_handler_setup = mips_ejtag_setup;
 
 
-	pr_info("\nLINUX started...\n");
-	prom_init_cmdline();
+	if (prom_argc == 1)
+		strlcat(arcs_cmdline, prom_argv, COMMAND_LINE_SIZE);
+
 	configure_platform();
 	configure_platform();
 	prom_meminit();
 	prom_meminit();
 
 

+ 0 - 2
arch/mips/powertv/init.h

@@ -22,7 +22,5 @@
 
 
 #ifndef _POWERTV_INIT_H
 #ifndef _POWERTV_INIT_H
 #define _POWERTV_INIT_H
 #define _POWERTV_INIT_H
-extern int prom_argc;
-extern int *_prom_argv;
 extern unsigned long _prom_memsize;
 extern unsigned long _prom_memsize;
 #endif
 #endif

+ 0 - 5
arch/mips/powertv/memory.c

@@ -42,8 +42,6 @@
 #define BOOT_MEM_SIZE		KIBIBYTE(256)	/* Memory reserved for bldr */
 #define BOOT_MEM_SIZE		KIBIBYTE(256)	/* Memory reserved for bldr */
 #define PHYS_MEM_START		0x10000000	/* Start of physical memory */
 #define PHYS_MEM_START		0x10000000	/* Start of physical memory */
 
 
-unsigned long ptv_memsize;
-
 char __initdata cmdline[COMMAND_LINE_SIZE];
 char __initdata cmdline[COMMAND_LINE_SIZE];
 
 
 void __init prom_meminit(void)
 void __init prom_meminit(void)
@@ -87,9 +85,6 @@ void __init prom_meminit(void)
 		}
 		}
 	}
 	}
 
 
-	/* Store memsize for diagnostic purposes */
-	ptv_memsize = memsize;
-
 	physend = PFN_ALIGN(&_end) - 0x80000000;
 	physend = PFN_ALIGN(&_end) - 0x80000000;
 	if (memsize > LOW_MEM_MAX) {
 	if (memsize > LOW_MEM_MAX) {
 		low_mem = LOW_MEM_MAX;
 		low_mem = LOW_MEM_MAX;

+ 0 - 21
arch/mips/powertv/powertv_setup.c

@@ -64,9 +64,6 @@
 #define REG_SIZE	"4"		/* In bytes */
 #define REG_SIZE	"4"		/* In bytes */
 #endif
 #endif
 
 
-static struct pt_regs die_regs;
-static bool have_die_regs;
-
 static void register_panic_notifier(void);
 static void register_panic_notifier(void);
 static int panic_handler(struct notifier_block *notifier_block,
 static int panic_handler(struct notifier_block *notifier_block,
 	unsigned long event, void *cause_string);
 	unsigned long event, void *cause_string);
@@ -218,24 +215,6 @@ static int panic_handler(struct notifier_block *notifier_block,
 	return NOTIFY_DONE;
 	return NOTIFY_DONE;
 }
 }
 
 
-/**
- * Platform-specific handling of oops
- * @str:	Pointer to the oops string
- * @regs:	Pointer to the oops registers
- * All we do here is to save the registers for subsequent printing through
- * the panic notifier.
- */
-void platform_die(const char *str, const struct pt_regs *regs)
-{
-	/* If we already have saved registers, don't overwrite them as they
-	 * they apply to the initial fault */
-
-	if (!have_die_regs) {
-		have_die_regs = true;
-		die_regs = *regs;
-	}
-}
-
 /* Information about the RF MAC address, if one was supplied on the
 /* Information about the RF MAC address, if one was supplied on the
  * command line. */
  * command line. */
 static bool have_rfmac;
 static bool have_rfmac;

+ 0 - 18
arch/mips/powertv/reset.c

@@ -28,9 +28,6 @@
 #include <asm/mach-powertv/asic_regs.h>
 #include <asm/mach-powertv/asic_regs.h>
 #include "reset.h"
 #include "reset.h"
 
 
-static void mips_machine_restart(char *command);
-static void mips_machine_halt(void);
-
 static void mips_machine_restart(char *command)
 static void mips_machine_restart(char *command)
 {
 {
 #ifdef CONFIG_BOOTLOADER_DRIVER
 #ifdef CONFIG_BOOTLOADER_DRIVER
@@ -44,22 +41,7 @@ static void mips_machine_restart(char *command)
 #endif
 #endif
 }
 }
 
 
-static void mips_machine_halt(void)
-{
-#ifdef CONFIG_BOOTLOADER_DRIVER
-	/*
-	 * Call the bootloader's reset function to ensure
-	 * that persistent data is flushed before hard reset
-	 */
-	kbldr_SetCauseAndReset();
-#else
-	writel(0x1, asic_reg_addr(watchdog));
-#endif
-}
-
 void mips_reboot_setup(void)
 void mips_reboot_setup(void)
 {
 {
 	_machine_restart = mips_machine_restart;
 	_machine_restart = mips_machine_restart;
-	_machine_halt = mips_machine_halt;
-	pm_power_off = mips_machine_halt;
 }
 }

+ 0 - 1
arch/mips/powertv/time.c

@@ -33,5 +33,4 @@ unsigned int __cpuinit get_c0_compare_int(void)
 void __init plat_time_init(void)
 void __init plat_time_init(void)
 {
 {
 	powertv_clocksource_init();
 	powertv_clocksource_init();
-	r4k_clockevent_init();
 }
 }

+ 0 - 21
arch/mips/txx9/generic/setup.c

@@ -160,7 +160,6 @@ static void __init prom_init_cmdline(void)
 	int argc;
 	int argc;
 	int *argv32;
 	int *argv32;
 	int i;			/* Always ignore the "-c" at argv[0] */
 	int i;			/* Always ignore the "-c" at argv[0] */
-	static char builtin[COMMAND_LINE_SIZE] __initdata;
 
 
 	if (fw_arg0 >= CKSEG0 || fw_arg1 < CKSEG0) {
 	if (fw_arg0 >= CKSEG0 || fw_arg1 < CKSEG0) {
 		/*
 		/*
@@ -174,20 +173,6 @@ static void __init prom_init_cmdline(void)
 		argv32 = (int *)fw_arg1;
 		argv32 = (int *)fw_arg1;
 	}
 	}
 
 
-	/* ignore all built-in args if any f/w args given */
-	/*
-	 * But if built-in strings was started with '+', append them
-	 * to command line args.  If built-in was started with '-',
-	 * ignore all f/w args.
-	 */
-	builtin[0] = '\0';
-	if (arcs_cmdline[0] == '+')
-		strcpy(builtin, arcs_cmdline + 1);
-	else if (arcs_cmdline[0] == '-') {
-		strcpy(builtin, arcs_cmdline + 1);
-		argc = 0;
-	} else if (argc <= 1)
-		strcpy(builtin, arcs_cmdline);
 	arcs_cmdline[0] = '\0';
 	arcs_cmdline[0] = '\0';
 
 
 	for (i = 1; i < argc; i++) {
 	for (i = 1; i < argc; i++) {
@@ -201,12 +186,6 @@ static void __init prom_init_cmdline(void)
 		} else
 		} else
 			strcat(arcs_cmdline, str);
 			strcat(arcs_cmdline, str);
 	}
 	}
-	/* append saved builtin args */
-	if (builtin[0]) {
-		if (arcs_cmdline[0])
-			strcat(arcs_cmdline, " ");
-		strcat(arcs_cmdline, builtin);
-	}
 }
 }
 
 
 static int txx9_ic_disable __initdata;
 static int txx9_ic_disable __initdata;

+ 3 - 3
arch/mips/vr41xx/common/init.c

@@ -1,7 +1,7 @@
 /*
 /*
  *  init.c, Common initialization routines for NEC VR4100 series.
  *  init.c, Common initialization routines for NEC VR4100 series.
  *
  *
- *  Copyright (C) 2003-2008  Yoichi Yuasa <yuasa@linux-mips.org>
+ *  Copyright (C) 2003-2009  Yoichi Yuasa <yuasa@linux-mips.org>
  *
  *
  *  This program is free software; you can redistribute it and/or modify
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
  *  it under the terms of the GNU General Public License as published by
@@ -66,9 +66,9 @@ void __init prom_init(void)
 	argv = (char **)fw_arg1;
 	argv = (char **)fw_arg1;
 
 
 	for (i = 1; i < argc; i++) {
 	for (i = 1; i < argc; i++) {
-		strcat(arcs_cmdline, argv[i]);
+		strlcat(arcs_cmdline, argv[i], COMMAND_LINE_SIZE);
 		if (i < (argc - 1))
 		if (i < (argc - 1))
-			strcat(arcs_cmdline, " ");
+			strlcat(arcs_cmdline, " ", COMMAND_LINE_SIZE);
 	}
 	}
 }
 }
 
 

+ 1 - 3
arch/powerpc/boot/Makefile

@@ -20,7 +20,7 @@
 all: $(obj)/zImage
 all: $(obj)/zImage
 
 
 BOOTCFLAGS    := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
 BOOTCFLAGS    := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-		 -fno-strict-aliasing -Os -msoft-float -pipe -D__KERNEL__\
+		 -fno-strict-aliasing -Os -msoft-float -pipe \
 		 -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \
 		 -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \
 		 -isystem $(shell $(CROSS32CC) -print-file-name=include)
 		 -isystem $(shell $(CROSS32CC) -print-file-name=include)
 BOOTAFLAGS	:= -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
 BOOTAFLAGS	:= -D__ASSEMBLY__ $(BOOTCFLAGS) -traditional -nostdinc
@@ -34,8 +34,6 @@ BOOTCFLAGS	+= -fno-stack-protector
 endif
 endif
 
 
 BOOTCFLAGS	+= -I$(obj) -I$(srctree)/$(obj)
 BOOTCFLAGS	+= -I$(obj) -I$(srctree)/$(obj)
-BOOTCFLAGS	+= -include include/linux/autoconf.h -Iarch/powerpc/include
-BOOTCFLAGS	+= -Iinclude
 
 
 DTS_FLAGS	?= -p 1024
 DTS_FLAGS	?= -p 1024
 
 

+ 4 - 0
arch/s390/include/asm/bug.h

@@ -52,6 +52,10 @@
 	unreachable();					\
 	unreachable();					\
 } while (0)
 } while (0)
 
 
+#define __WARN() do {					\
+	__EMIT_BUG(BUGFLAG_WARNING);			\
+} while (0)
+
 #define WARN_ON(x) ({					\
 #define WARN_ON(x) ({					\
 	int __ret_warn_on = !!(x);			\
 	int __ret_warn_on = !!(x);			\
 	if (__builtin_constant_p(__ret_warn_on)) {	\
 	if (__builtin_constant_p(__ret_warn_on)) {	\

+ 14 - 6
arch/s390/include/asm/sigp.h

@@ -15,11 +15,19 @@
 #ifndef __SIGP__
 #ifndef __SIGP__
 #define __SIGP__
 #define __SIGP__
 
 
-#include <asm/ptrace.h>
-#include <asm/atomic.h>
+#include <asm/system.h>
 
 
 /* get real cpu address from logical cpu number */
 /* get real cpu address from logical cpu number */
-extern volatile int __cpu_logical_map[];
+extern int __cpu_logical_map[];
+
+static inline int cpu_logical_map(int cpu)
+{
+#ifdef CONFIG_SMP
+	return __cpu_logical_map[cpu];
+#else
+	return stap();
+#endif
+}
 
 
 typedef enum
 typedef enum
 {
 {
@@ -79,7 +87,7 @@ signal_processor(__u16 cpu_addr, sigp_order_code order_code)
 		"	ipm	%0\n"
 		"	ipm	%0\n"
 		"	srl	%0,28\n"
 		"	srl	%0,28\n"
 		:	"=d"	(ccode)
 		:	"=d"	(ccode)
-		: "d" (reg1), "d" (__cpu_logical_map[cpu_addr]),
+		: "d" (reg1), "d" (cpu_logical_map(cpu_addr)),
 		  "a" (order_code) : "cc" , "memory");
 		  "a" (order_code) : "cc" , "memory");
 	return ccode;
 	return ccode;
 }
 }
@@ -98,7 +106,7 @@ signal_processor_p(__u32 parameter, __u16 cpu_addr, sigp_order_code order_code)
 		"	ipm	%0\n"
 		"	ipm	%0\n"
 		"	srl	%0,28\n"
 		"	srl	%0,28\n"
 		: "=d" (ccode)
 		: "=d" (ccode)
-		: "d" (reg1), "d" (__cpu_logical_map[cpu_addr]),
+		: "d" (reg1), "d" (cpu_logical_map(cpu_addr)),
 		  "a" (order_code) : "cc" , "memory");
 		  "a" (order_code) : "cc" , "memory");
 	return ccode;
 	return ccode;
 }
 }
@@ -118,7 +126,7 @@ signal_processor_ps(__u32 *statusptr, __u32 parameter, __u16 cpu_addr,
 		"	ipm	%0\n"
 		"	ipm	%0\n"
 		"	srl	%0,28\n"
 		"	srl	%0,28\n"
 		: "=d" (ccode), "+d" (reg1)
 		: "=d" (ccode), "+d" (reg1)
-		: "d" (__cpu_logical_map[cpu_addr]), "a" (order_code)
+		: "d" (cpu_logical_map(cpu_addr)), "a" (order_code)
 		: "cc" , "memory");
 		: "cc" , "memory");
 	*statusptr = reg1;
 	*statusptr = reg1;
 	return ccode;
 	return ccode;

+ 5 - 7
arch/s390/include/asm/thread_info.h

@@ -93,13 +93,12 @@ static inline struct thread_info *current_thread_info(void)
 #define TIF_SYSCALL_AUDIT	9	/* syscall auditing active */
 #define TIF_SYSCALL_AUDIT	9	/* syscall auditing active */
 #define TIF_SECCOMP		10	/* secure computing */
 #define TIF_SECCOMP		10	/* secure computing */
 #define TIF_SYSCALL_TRACEPOINT	11	/* syscall tracepoint instrumentation */
 #define TIF_SYSCALL_TRACEPOINT	11	/* syscall tracepoint instrumentation */
-#define TIF_USEDFPU		16	/* FPU was used by this task this quantum (SMP) */
-#define TIF_POLLING_NRFLAG	17	/* true if poll_idle() is polling 
+#define TIF_POLLING_NRFLAG	16	/* true if poll_idle() is polling
 					   TIF_NEED_RESCHED */
 					   TIF_NEED_RESCHED */
-#define TIF_31BIT		18	/* 32bit process */ 
-#define TIF_MEMDIE		19
-#define TIF_RESTORE_SIGMASK	20	/* restore signal mask in do_signal() */
-#define TIF_FREEZE		21	/* thread is freezing for suspend */
+#define TIF_31BIT		17	/* 32bit process */
+#define TIF_MEMDIE		18
+#define TIF_RESTORE_SIGMASK	19	/* restore signal mask in do_signal() */
+#define TIF_FREEZE		20	/* thread is freezing for suspend */
 
 
 #define _TIF_NOTIFY_RESUME	(1<<TIF_NOTIFY_RESUME)
 #define _TIF_NOTIFY_RESUME	(1<<TIF_NOTIFY_RESUME)
 #define _TIF_RESTORE_SIGMASK	(1<<TIF_RESTORE_SIGMASK)
 #define _TIF_RESTORE_SIGMASK	(1<<TIF_RESTORE_SIGMASK)
@@ -112,7 +111,6 @@ static inline struct thread_info *current_thread_info(void)
 #define _TIF_SYSCALL_AUDIT	(1<<TIF_SYSCALL_AUDIT)
 #define _TIF_SYSCALL_AUDIT	(1<<TIF_SYSCALL_AUDIT)
 #define _TIF_SECCOMP		(1<<TIF_SECCOMP)
 #define _TIF_SECCOMP		(1<<TIF_SECCOMP)
 #define _TIF_SYSCALL_TRACEPOINT	(1<<TIF_SYSCALL_TRACEPOINT)
 #define _TIF_SYSCALL_TRACEPOINT	(1<<TIF_SYSCALL_TRACEPOINT)
-#define _TIF_USEDFPU		(1<<TIF_USEDFPU)
 #define _TIF_POLLING_NRFLAG	(1<<TIF_POLLING_NRFLAG)
 #define _TIF_POLLING_NRFLAG	(1<<TIF_POLLING_NRFLAG)
 #define _TIF_31BIT		(1<<TIF_31BIT)
 #define _TIF_31BIT		(1<<TIF_31BIT)
 #define _TIF_FREEZE		(1<<TIF_FREEZE)
 #define _TIF_FREEZE		(1<<TIF_FREEZE)

+ 4 - 2
arch/s390/include/asm/unistd.h

@@ -269,8 +269,7 @@
 #define	__NR_pwritev		329
 #define	__NR_pwritev		329
 #define __NR_rt_tgsigqueueinfo	330
 #define __NR_rt_tgsigqueueinfo	330
 #define __NR_perf_event_open	331
 #define __NR_perf_event_open	331
-#define __NR_recvmmsg		332
-#define NR_syscalls 333
+#define NR_syscalls 332
 
 
 /* 
 /* 
  * There are some system calls that are not present on 64 bit, some
  * There are some system calls that are not present on 64 bit, some
@@ -377,6 +376,9 @@
 #define __IGNORE_migrate_pages
 #define __IGNORE_migrate_pages
 #define __IGNORE_move_pages
 #define __IGNORE_move_pages
 
 
+/* Ignore system calls that are also reachable via sys_socket */
+#define __IGNORE_recvmmsg
+
 #define __ARCH_WANT_IPC_PARSE_VERSION
 #define __ARCH_WANT_IPC_PARSE_VERSION
 #define __ARCH_WANT_OLD_READDIR
 #define __ARCH_WANT_OLD_READDIR
 #define __ARCH_WANT_SYS_ALARM
 #define __ARCH_WANT_SYS_ALARM

+ 16 - 25
arch/s390/kernel/compat_linux.c

@@ -616,44 +616,35 @@ asmlinkage long sys32_fstatat64(unsigned int dfd, char __user *filename,
  */
  */
 
 
 struct mmap_arg_struct_emu31 {
 struct mmap_arg_struct_emu31 {
-	u32	addr;
-	u32	len;
-	u32	prot;
-	u32	flags;
-	u32	fd;
-	u32	offset;
+	compat_ulong_t addr;
+	compat_ulong_t len;
+	compat_ulong_t prot;
+	compat_ulong_t flags;
+	compat_ulong_t fd;
+	compat_ulong_t offset;
 };
 };
 
 
-asmlinkage unsigned long
-old32_mmap(struct mmap_arg_struct_emu31 __user *arg)
+asmlinkage unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg)
 {
 {
 	struct mmap_arg_struct_emu31 a;
 	struct mmap_arg_struct_emu31 a;
-	int error = -EFAULT;
 
 
 	if (copy_from_user(&a, arg, sizeof(a)))
 	if (copy_from_user(&a, arg, sizeof(a)))
-		goto out;
-
-	error = -EINVAL;
+		return -EFAULT;
 	if (a.offset & ~PAGE_MASK)
 	if (a.offset & ~PAGE_MASK)
-		goto out;
-
-	error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd,
-			       a.offset >> PAGE_SHIFT);
-out:
-	return error;
+		return -EINVAL;
+	a.addr = (unsigned long) compat_ptr(a.addr);
+	return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd,
+			      a.offset >> PAGE_SHIFT);
 }
 }
 
 
-asmlinkage long 
-sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg)
+asmlinkage long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg)
 {
 {
 	struct mmap_arg_struct_emu31 a;
 	struct mmap_arg_struct_emu31 a;
-	int error = -EFAULT;
 
 
 	if (copy_from_user(&a, arg, sizeof(a)))
 	if (copy_from_user(&a, arg, sizeof(a)))
-		goto out;
-	error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset);
-out:
-	return error;
+		return -EFAULT;
+	a.addr = (unsigned long) compat_ptr(a.addr);
+	return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset);
 }
 }
 
 
 asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count)
 asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count)

+ 0 - 9
arch/s390/kernel/compat_wrapper.S

@@ -1853,12 +1853,3 @@ sys32_execve_wrapper:
 	llgtr	%r3,%r3			# compat_uptr_t *
 	llgtr	%r3,%r3			# compat_uptr_t *
 	llgtr	%r4,%r4			# compat_uptr_t *
 	llgtr	%r4,%r4			# compat_uptr_t *
 	jg	sys32_execve		# branch to system call
 	jg	sys32_execve		# branch to system call
-
-	.globl	compat_sys_recvmmsg_wrapper
-compat_sys_recvmmsg_wrapper:
-	lgfr	%r2,%r2			# int
-	llgtr	%r3,%r3			# struct compat_mmsghdr *
-	llgfr	%r4,%r4			# unsigned int
-	llgfr	%r5,%r5			# unsigned int
-	llgtr	%r6,%r6			# struct compat_timespec *
-	jg	compat_sys_recvmmsg

+ 1 - 2
arch/s390/kernel/process.c

@@ -153,8 +153,6 @@ void exit_thread(void)
 
 
 void flush_thread(void)
 void flush_thread(void)
 {
 {
-	clear_used_math();
-	clear_tsk_thread_flag(current, TIF_USEDFPU);
 }
 }
 
 
 void release_thread(struct task_struct *dead_task)
 void release_thread(struct task_struct *dead_task)
@@ -217,6 +215,7 @@ int copy_thread(unsigned long clone_flags, unsigned long new_stackp,
 	p->thread.mm_segment = get_fs();
 	p->thread.mm_segment = get_fs();
 	/* Don't copy debug registers */
 	/* Don't copy debug registers */
 	memset(&p->thread.per_info, 0, sizeof(p->thread.per_info));
 	memset(&p->thread.per_info, 0, sizeof(p->thread.per_info));
+	clear_tsk_thread_flag(p, TIF_SINGLE_STEP);
 	/* Initialize per thread user and system timer values */
 	/* Initialize per thread user and system timer values */
 	ti = task_thread_info(p);
 	ti = task_thread_info(p);
 	ti->user_timer = 0;
 	ti->user_timer = 0;

+ 8 - 0
arch/s390/kernel/ptrace.c

@@ -65,6 +65,7 @@ FixPerRegisters(struct task_struct *task)
 {
 {
 	struct pt_regs *regs;
 	struct pt_regs *regs;
 	per_struct *per_info;
 	per_struct *per_info;
+	per_cr_words cr_words;
 
 
 	regs = task_pt_regs(task);
 	regs = task_pt_regs(task);
 	per_info = (per_struct *) &task->thread.per_info;
 	per_info = (per_struct *) &task->thread.per_info;
@@ -98,6 +99,13 @@ FixPerRegisters(struct task_struct *task)
 		per_info->control_regs.bits.storage_alt_space_ctl = 1;
 		per_info->control_regs.bits.storage_alt_space_ctl = 1;
 	else
 	else
 		per_info->control_regs.bits.storage_alt_space_ctl = 0;
 		per_info->control_regs.bits.storage_alt_space_ctl = 0;
+
+	if (task == current) {
+		__ctl_store(cr_words, 9, 11);
+		if (memcmp(&cr_words, &per_info->control_regs.words,
+			   sizeof(cr_words)) != 0)
+			__ctl_load(per_info->control_regs.words, 9, 11);
+	}
 }
 }
 
 
 void user_enable_single_step(struct task_struct *task)
 void user_enable_single_step(struct task_struct *task)

+ 0 - 8
arch/s390/kernel/setup.c

@@ -87,7 +87,6 @@ unsigned long elf_hwcap = 0;
 char elf_platform[ELF_PLATFORM_SIZE];
 char elf_platform[ELF_PLATFORM_SIZE];
 
 
 struct mem_chunk __initdata memory_chunk[MEMORY_CHUNKS];
 struct mem_chunk __initdata memory_chunk[MEMORY_CHUNKS];
-volatile int __cpu_logical_map[NR_CPUS]; /* logical cpu to cpu address */
 
 
 int __initdata memory_end_set;
 int __initdata memory_end_set;
 unsigned long __initdata memory_end;
 unsigned long __initdata memory_end;
@@ -124,12 +123,6 @@ void __cpuinit cpu_init(void)
          */
          */
 	get_cpu_id(&S390_lowcore.cpu_id);
 	get_cpu_id(&S390_lowcore.cpu_id);
 
 
-        /*
-         * Force FPU initialization:
-         */
-        clear_thread_flag(TIF_USEDFPU);
-        clear_used_math();
-
 	atomic_inc(&init_mm.mm_count);
 	atomic_inc(&init_mm.mm_count);
 	current->active_mm = &init_mm;
 	current->active_mm = &init_mm;
 	BUG_ON(current->mm);
 	BUG_ON(current->mm);
@@ -855,7 +848,6 @@ setup_arch(char **cmdline_p)
 	setup_lowcore();
 	setup_lowcore();
 
 
         cpu_init();
         cpu_init();
-	__cpu_logical_map[0] = stap();
 	s390_init_cpu_topology();
 	s390_init_cpu_topology();
 
 
 	/*
 	/*

+ 1 - 9
arch/s390/kernel/signal.c

@@ -499,19 +499,11 @@ void do_signal(struct pt_regs *regs)
 			if (test_thread_flag(TIF_RESTORE_SIGMASK))
 			if (test_thread_flag(TIF_RESTORE_SIGMASK))
 				clear_thread_flag(TIF_RESTORE_SIGMASK);
 				clear_thread_flag(TIF_RESTORE_SIGMASK);
 
 
-			/*
-			 * If we would have taken a single-step trap
-			 * for a normal instruction, act like we took
-			 * one for the handler setup.
-			 */
-			if (current->thread.per_info.single_step)
-				set_thread_flag(TIF_SINGLE_STEP);
-
 			/*
 			/*
 			 * Let tracing know that we've done the handler setup.
 			 * Let tracing know that we've done the handler setup.
 			 */
 			 */
 			tracehook_signal_handler(signr, &info, &ka, regs,
 			tracehook_signal_handler(signr, &info, &ka, regs,
-					 test_thread_flag(TIF_SINGLE_STEP));
+					current->thread.per_info.single_step);
 		}
 		}
 		return;
 		return;
 	}
 	}

+ 9 - 0
arch/s390/kernel/smp.c

@@ -52,6 +52,9 @@
 #include <asm/cpu.h>
 #include <asm/cpu.h>
 #include "entry.h"
 #include "entry.h"
 
 
+/* logical cpu to cpu address */
+int __cpu_logical_map[NR_CPUS];
+
 static struct task_struct *current_set[NR_CPUS];
 static struct task_struct *current_set[NR_CPUS];
 
 
 static u8 smp_cpu_type;
 static u8 smp_cpu_type;
@@ -717,6 +720,12 @@ void __init smp_cpus_done(unsigned int max_cpus)
 {
 {
 }
 }
 
 
+void __init smp_setup_processor_id(void)
+{
+	S390_lowcore.cpu_nr = 0;
+	__cpu_logical_map[0] = stap();
+}
+
 /*
 /*
  * the frequency of the profiling timer can be changed
  * the frequency of the profiling timer can be changed
  * by writing a multiplier value into /proc/profile.
  * by writing a multiplier value into /proc/profile.

+ 0 - 1
arch/s390/kernel/syscalls.S

@@ -340,4 +340,3 @@ SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv_wrapper)
 SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper)
 SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper)
 SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo_wrapper) /* 330 */
 SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo_wrapper) /* 330 */
 SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper)
 SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper)
-SYSCALL(sys_recvmmsg,sys_recvmmsg,compat_sys_recvmmsg_wrapper)

+ 1 - 1
arch/s390/kernel/topology.c

@@ -114,7 +114,7 @@ static void add_cpus_to_core(struct tl_cpu *tl_cpu, struct core_info *core)
 
 
 		rcpu = CPU_BITS - 1 - cpu + tl_cpu->origin;
 		rcpu = CPU_BITS - 1 - cpu + tl_cpu->origin;
 		for_each_present_cpu(lcpu) {
 		for_each_present_cpu(lcpu) {
-			if (__cpu_logical_map[lcpu] == rcpu) {
+			if (cpu_logical_map(lcpu) == rcpu) {
 				cpu_set(lcpu, core->mask);
 				cpu_set(lcpu, core->mask);
 				smp_cpu_polarization[lcpu] = tl_cpu->pp;
 				smp_cpu_polarization[lcpu] = tl_cpu->pp;
 			}
 			}

+ 1 - 1
arch/s390/lib/spinlock.c

@@ -34,7 +34,7 @@ static inline void _raw_yield_cpu(int cpu)
 {
 {
 	if (MACHINE_HAS_DIAG9C)
 	if (MACHINE_HAS_DIAG9C)
 		asm volatile("diag %0,0,0x9c"
 		asm volatile("diag %0,0,0x9c"
-			     : : "d" (__cpu_logical_map[cpu]));
+			     : : "d" (cpu_logical_map(cpu)));
 	else
 	else
 		_raw_yield();
 		_raw_yield();
 }
 }

+ 2 - 2
arch/s390/mm/mmap.c

@@ -40,7 +40,7 @@
 
 
 static inline unsigned long mmap_base(void)
 static inline unsigned long mmap_base(void)
 {
 {
-	unsigned long gap = current->signal->rlim[RLIMIT_STACK].rlim_cur;
+	unsigned long gap = rlimit(RLIMIT_STACK);
 
 
 	if (gap < MIN_GAP)
 	if (gap < MIN_GAP)
 		gap = MIN_GAP;
 		gap = MIN_GAP;
@@ -61,7 +61,7 @@ static inline int mmap_is_legacy(void)
 #endif
 #endif
 	return sysctl_legacy_va_layout ||
 	return sysctl_legacy_va_layout ||
 	    (current->personality & ADDR_COMPAT_LAYOUT) ||
 	    (current->personality & ADDR_COMPAT_LAYOUT) ||
-	    current->signal->rlim[RLIMIT_STACK].rlim_cur == RLIM_INFINITY;
+	    rlimit(RLIMIT_STACK) == RLIM_INFINITY;
 }
 }
 
 
 #ifndef CONFIG_64BIT
 #ifndef CONFIG_64BIT

+ 8 - 0
arch/sh/boards/mach-ecovec24/setup.c

@@ -351,6 +351,10 @@ static struct i2c_board_info i2c1_devices[] = {
 	{
 	{
 		I2C_BOARD_INFO("r2025sd", 0x32),
 		I2C_BOARD_INFO("r2025sd", 0x32),
 	},
 	},
+	{
+		I2C_BOARD_INFO("lis3lv02d", 0x1c),
+		.irq = 33,
+	}
 };
 };
 
 
 /* KEYSC */
 /* KEYSC */
@@ -1113,6 +1117,10 @@ static int __init arch_setup(void)
 	gpio_direction_output(GPIO_PTU0, 0);
 	gpio_direction_output(GPIO_PTU0, 0);
 	mdelay(20);
 	mdelay(20);
 
 
+	/* enable motion sensor */
+	gpio_request(GPIO_FN_INTC_IRQ1, NULL);
+	gpio_direction_input(GPIO_FN_INTC_IRQ1);
+
 	/* enable I2C device */
 	/* enable I2C device */
 	i2c_register_board_info(0, i2c0_devices,
 	i2c_register_board_info(0, i2c0_devices,
 				ARRAY_SIZE(i2c0_devices));
 				ARRAY_SIZE(i2c0_devices));

+ 1 - 1
arch/sh/tools/Makefile

@@ -13,4 +13,4 @@
 include/generated/machtypes.h: $(src)/gen-mach-types $(src)/mach-types
 include/generated/machtypes.h: $(src)/gen-mach-types $(src)/mach-types
 	@echo '  Generating $@'
 	@echo '  Generating $@'
 	$(Q)mkdir -p $(dir $@)
 	$(Q)mkdir -p $(dir $@)
-	$(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
+	$(Q)LC_ALL=C $(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }

+ 18 - 31
arch/um/drivers/mconsole_kern.c

@@ -125,50 +125,36 @@ void mconsole_log(struct mc_request *req)
 void mconsole_proc(struct mc_request *req)
 void mconsole_proc(struct mc_request *req)
 {
 {
 	struct nameidata nd;
 	struct nameidata nd;
-	struct file_system_type *proc;
-	struct super_block *super;
+	struct vfsmount *mnt = current->nsproxy->pid_ns->proc_mnt;
 	struct file *file;
 	struct file *file;
 	int n, err;
 	int n, err;
 	char *ptr = req->request.data, *buf;
 	char *ptr = req->request.data, *buf;
+	mm_segment_t old_fs = get_fs();
 
 
 	ptr += strlen("proc");
 	ptr += strlen("proc");
 	ptr = skip_spaces(ptr);
 	ptr = skip_spaces(ptr);
 
 
-	proc = get_fs_type("proc");
-	if (proc == NULL) {
-		mconsole_reply(req, "procfs not registered", 1, 0);
+	err = vfs_path_lookup(mnt->mnt_root, mnt, ptr, LOOKUP_FOLLOW, &nd);
+	if (err) {
+		mconsole_reply(req, "Failed to look up file", 1, 0);
 		goto out;
 		goto out;
 	}
 	}
 
 
-	super = (*proc->get_sb)(proc, 0, NULL, NULL);
-	put_filesystem(proc);
-	if (super == NULL) {
-		mconsole_reply(req, "Failed to get procfs superblock", 1, 0);
+	err = may_open(&nd.path, MAY_READ, FMODE_READ);
+	if (result) {
+		mconsole_reply(req, "Failed to open file", 1, 0);
+		path_put(&nd.path);
 		goto out;
 		goto out;
 	}
 	}
-	up_write(&super->s_umount);
-
-	nd.path.dentry = super->s_root;
-	nd.path.mnt = NULL;
-	nd.flags = O_RDONLY + 1;
-	nd.last_type = LAST_ROOT;
-
-	/* START: it was experienced that the stability problems are closed
-	 * if commenting out these two calls + the below read cycle. To
-	 * make UML crash again, it was enough to readd either one.*/
-	err = link_path_walk(ptr, &nd);
-	if (err) {
-		mconsole_reply(req, "Failed to look up file", 1, 0);
-		goto out_kill;
-	}
 
 
 	file = dentry_open(nd.path.dentry, nd.path.mnt, O_RDONLY,
 	file = dentry_open(nd.path.dentry, nd.path.mnt, O_RDONLY,
 			   current_cred());
 			   current_cred());
+	err = PTR_ERR(file);
 	if (IS_ERR(file)) {
 	if (IS_ERR(file)) {
 		mconsole_reply(req, "Failed to open file", 1, 0);
 		mconsole_reply(req, "Failed to open file", 1, 0);
-		goto out_kill;
+		path_put(&nd.path);
+		goto out;
 	}
 	}
-	/*END*/
 
 
 	buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
 	buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
 	if (buf == NULL) {
 	if (buf == NULL) {
@@ -176,10 +162,13 @@ void mconsole_proc(struct mc_request *req)
 		goto out_fput;
 		goto out_fput;
 	}
 	}
 
 
-	if ((file->f_op != NULL) && (file->f_op->read != NULL)) {
+	if (file->f_op->read) {
 		do {
 		do {
-			n = (*file->f_op->read)(file, buf, PAGE_SIZE - 1,
-						&file->f_pos);
+			loff_t pos;
+			set_fs(KERNEL_DS);
+			n = vfs_read(file, buf, PAGE_SIZE - 1, &pos);
+			file_pos_write(file, pos);
+			set_fs(old_fs);
 			if (n >= 0) {
 			if (n >= 0) {
 				buf[n] = '\0';
 				buf[n] = '\0';
 				mconsole_reply(req, buf, 0, (n > 0));
 				mconsole_reply(req, buf, 0, (n > 0));
@@ -197,8 +186,6 @@ void mconsole_proc(struct mc_request *req)
 	kfree(buf);
 	kfree(buf);
  out_fput:
  out_fput:
 	fput(file);
 	fput(file);
- out_kill:
-	deactivate_super(super);
  out: ;
  out: ;
 }
 }
 #endif
 #endif

+ 2 - 1
arch/x86/include/asm/mce.h

@@ -108,10 +108,11 @@ struct mce_log {
 #define K8_MCE_THRESHOLD_BANK_5    (MCE_THRESHOLD_BASE + 5 * 9)
 #define K8_MCE_THRESHOLD_BANK_5    (MCE_THRESHOLD_BASE + 5 * 9)
 #define K8_MCE_THRESHOLD_DRAM_ECC  (MCE_THRESHOLD_BANK_4 + 0)
 #define K8_MCE_THRESHOLD_DRAM_ECC  (MCE_THRESHOLD_BANK_4 + 0)
 
 
-extern struct atomic_notifier_head x86_mce_decoder_chain;
 
 
 #ifdef __KERNEL__
 #ifdef __KERNEL__
 
 
+extern struct atomic_notifier_head x86_mce_decoder_chain;
+
 #include <linux/percpu.h>
 #include <linux/percpu.h>
 #include <linux/init.h>
 #include <linux/init.h>
 #include <asm/atomic.h>
 #include <asm/atomic.h>

+ 12 - 0
arch/x86/include/asm/uv/uv_hub.h

@@ -495,5 +495,17 @@ static inline void uv_hub_send_ipi(int pnode, int apicid, int vector)
 	uv_write_global_mmr64(pnode, UVH_IPI_INT, val);
 	uv_write_global_mmr64(pnode, UVH_IPI_INT, val);
 }
 }
 
 
+/*
+ * Get the minimum revision number of the hub chips within the partition.
+ *     1 - initial rev 1.0 silicon
+ *     2 - rev 2.0 production silicon
+ */
+static inline int uv_get_min_hub_revision_id(void)
+{
+	extern int uv_min_hub_revision_id;
+
+	return uv_min_hub_revision_id;
+}
+
 #endif /* CONFIG_X86_64 */
 #endif /* CONFIG_X86_64 */
 #endif /* _ASM_X86_UV_UV_HUB_H */
 #endif /* _ASM_X86_UV_UV_HUB_H */

+ 1 - 0
arch/x86/kernel/aperture_64.c

@@ -31,6 +31,7 @@
 #include <asm/x86_init.h>
 #include <asm/x86_init.h>
 
 
 int gart_iommu_aperture;
 int gart_iommu_aperture;
+EXPORT_SYMBOL_GPL(gart_iommu_aperture);
 int gart_iommu_aperture_disabled __initdata;
 int gart_iommu_aperture_disabled __initdata;
 int gart_iommu_aperture_allowed __initdata;
 int gart_iommu_aperture_allowed __initdata;
 
 

+ 18 - 8
arch/x86/kernel/apic/x2apic_uv_x.c

@@ -36,6 +36,8 @@ DEFINE_PER_CPU(int, x2apic_extra_bits);
 
 
 static enum uv_system_type uv_system_type;
 static enum uv_system_type uv_system_type;
 static u64 gru_start_paddr, gru_end_paddr;
 static u64 gru_start_paddr, gru_end_paddr;
+int uv_min_hub_revision_id;
+EXPORT_SYMBOL_GPL(uv_min_hub_revision_id);
 
 
 static inline bool is_GRU_range(u64 start, u64 end)
 static inline bool is_GRU_range(u64 start, u64 end)
 {
 {
@@ -55,12 +57,19 @@ static int early_get_nodeid(void)
 	mmr = early_ioremap(UV_LOCAL_MMR_BASE | UVH_NODE_ID, sizeof(*mmr));
 	mmr = early_ioremap(UV_LOCAL_MMR_BASE | UVH_NODE_ID, sizeof(*mmr));
 	node_id.v = *mmr;
 	node_id.v = *mmr;
 	early_iounmap(mmr, sizeof(*mmr));
 	early_iounmap(mmr, sizeof(*mmr));
+
+	/* Currently, all blades have same revision number */
+	uv_min_hub_revision_id = node_id.s.revision;
+
 	return node_id.s.node_id;
 	return node_id.s.node_id;
 }
 }
 
 
 static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 {
 {
+	int nodeid;
+
 	if (!strcmp(oem_id, "SGI")) {
 	if (!strcmp(oem_id, "SGI")) {
+		nodeid = early_get_nodeid();
 		x86_platform.is_untracked_pat_range =  uv_is_untracked_pat_range;
 		x86_platform.is_untracked_pat_range =  uv_is_untracked_pat_range;
 		if (!strcmp(oem_table_id, "UVL"))
 		if (!strcmp(oem_table_id, "UVL"))
 			uv_system_type = UV_LEGACY_APIC;
 			uv_system_type = UV_LEGACY_APIC;
@@ -68,7 +77,7 @@ static int __init uv_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 			uv_system_type = UV_X2APIC;
 			uv_system_type = UV_X2APIC;
 		else if (!strcmp(oem_table_id, "UVH")) {
 		else if (!strcmp(oem_table_id, "UVH")) {
 			__get_cpu_var(x2apic_extra_bits) =
 			__get_cpu_var(x2apic_extra_bits) =
-				early_get_nodeid() << (UV_APIC_PNODE_SHIFT - 1);
+				nodeid << (UV_APIC_PNODE_SHIFT - 1);
 			uv_system_type = UV_NON_UNIQUE_APIC;
 			uv_system_type = UV_NON_UNIQUE_APIC;
 			return 1;
 			return 1;
 		}
 		}
@@ -374,13 +383,13 @@ static __init void get_lowmem_redirect(unsigned long *base, unsigned long *size)
 
 
 enum map_type {map_wb, map_uc};
 enum map_type {map_wb, map_uc};
 
 
-static __init void map_high(char *id, unsigned long base, int shift,
-			    int max_pnode, enum map_type map_type)
+static __init void map_high(char *id, unsigned long base, int pshift,
+			int bshift, int max_pnode, enum map_type map_type)
 {
 {
 	unsigned long bytes, paddr;
 	unsigned long bytes, paddr;
 
 
-	paddr = base << shift;
-	bytes = (1UL << shift) * (max_pnode + 1);
+	paddr = base << pshift;
+	bytes = (1UL << bshift) * (max_pnode + 1);
 	printk(KERN_INFO "UV: Map %s_HI 0x%lx - 0x%lx\n", id, paddr,
 	printk(KERN_INFO "UV: Map %s_HI 0x%lx - 0x%lx\n", id, paddr,
 						paddr + bytes);
 						paddr + bytes);
 	if (map_type == map_uc)
 	if (map_type == map_uc)
@@ -396,7 +405,7 @@ static __init void map_gru_high(int max_pnode)
 
 
 	gru.v = uv_read_local_mmr(UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR);
 	gru.v = uv_read_local_mmr(UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR);
 	if (gru.s.enable) {
 	if (gru.s.enable) {
-		map_high("GRU", gru.s.base, shift, max_pnode, map_wb);
+		map_high("GRU", gru.s.base, shift, shift, max_pnode, map_wb);
 		gru_start_paddr = ((u64)gru.s.base << shift);
 		gru_start_paddr = ((u64)gru.s.base << shift);
 		gru_end_paddr = gru_start_paddr + (1UL << shift) * (max_pnode + 1);
 		gru_end_paddr = gru_start_paddr + (1UL << shift) * (max_pnode + 1);
 
 
@@ -410,7 +419,7 @@ static __init void map_mmr_high(int max_pnode)
 
 
 	mmr.v = uv_read_local_mmr(UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR);
 	mmr.v = uv_read_local_mmr(UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR);
 	if (mmr.s.enable)
 	if (mmr.s.enable)
-		map_high("MMR", mmr.s.base, shift, max_pnode, map_uc);
+		map_high("MMR", mmr.s.base, shift, shift, max_pnode, map_uc);
 }
 }
 
 
 static __init void map_mmioh_high(int max_pnode)
 static __init void map_mmioh_high(int max_pnode)
@@ -420,7 +429,8 @@ static __init void map_mmioh_high(int max_pnode)
 
 
 	mmioh.v = uv_read_local_mmr(UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR);
 	mmioh.v = uv_read_local_mmr(UVH_RH_GAM_MMIOH_OVERLAY_CONFIG_MMR);
 	if (mmioh.s.enable)
 	if (mmioh.s.enable)
-		map_high("MMIOH", mmioh.s.base, shift, max_pnode, map_uc);
+		map_high("MMIOH", mmioh.s.base, shift, mmioh.s.m_io,
+			max_pnode, map_uc);
 }
 }
 
 
 static __init void map_low_mmrs(void)
 static __init void map_low_mmrs(void)

+ 8 - 6
arch/x86/kernel/dumpstack.c

@@ -123,13 +123,15 @@ print_context_stack_bp(struct thread_info *tinfo,
 	while (valid_stack_ptr(tinfo, ret_addr, sizeof(*ret_addr), end)) {
 	while (valid_stack_ptr(tinfo, ret_addr, sizeof(*ret_addr), end)) {
 		unsigned long addr = *ret_addr;
 		unsigned long addr = *ret_addr;
 
 
-		if (__kernel_text_address(addr)) {
-			ops->address(data, addr, 1);
-			frame = frame->next_frame;
-			ret_addr = &frame->return_address;
-			print_ftrace_graph_addr(addr, data, ops, tinfo, graph);
-		}
+		if (!__kernel_text_address(addr))
+			break;
+
+		ops->address(data, addr, 1);
+		frame = frame->next_frame;
+		ret_addr = &frame->return_address;
+		print_ftrace_graph_addr(addr, data, ops, tinfo, graph);
 	}
 	}
+
 	return (unsigned long)frame;
 	return (unsigned long)frame;
 }
 }
 EXPORT_SYMBOL_GPL(print_context_stack_bp);
 EXPORT_SYMBOL_GPL(print_context_stack_bp);

+ 2 - 0
arch/x86/kernel/process.c

@@ -288,6 +288,8 @@ int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
 	regs.es = __USER_DS;
 	regs.es = __USER_DS;
 	regs.fs = __KERNEL_PERCPU;
 	regs.fs = __KERNEL_PERCPU;
 	regs.gs = __KERNEL_STACK_CANARY;
 	regs.gs = __KERNEL_STACK_CANARY;
+#else
+	regs.ss = __KERNEL_DS;
 #endif
 #endif
 
 
 	regs.orig_ax = -1;
 	regs.orig_ax = -1;

+ 4 - 0
arch/x86/xen/enlighten.c

@@ -1151,9 +1151,13 @@ asmlinkage void __init xen_start_kernel(void)
 
 
 	/* keep using Xen gdt for now; no urgent need to change it */
 	/* keep using Xen gdt for now; no urgent need to change it */
 
 
+#ifdef CONFIG_X86_32
 	pv_info.kernel_rpl = 1;
 	pv_info.kernel_rpl = 1;
 	if (xen_feature(XENFEAT_supervisor_mode_kernel))
 	if (xen_feature(XENFEAT_supervisor_mode_kernel))
 		pv_info.kernel_rpl = 0;
 		pv_info.kernel_rpl = 0;
+#else
+	pv_info.kernel_rpl = 0;
+#endif
 
 
 	/* set the limit of our address space */
 	/* set the limit of our address space */
 	xen_reserve_top();
 	xen_reserve_top();

+ 1 - 1
drivers/ata/ata_piix.c

@@ -329,7 +329,7 @@ static struct ata_port_operations ich_pata_ops = {
 };
 };
 
 
 static struct ata_port_operations piix_sata_ops = {
 static struct ata_port_operations piix_sata_ops = {
-	.inherits		= &ata_bmdma_port_ops,
+	.inherits		= &ata_bmdma32_port_ops,
 };
 };
 
 
 static struct ata_port_operations piix_sidpr_sata_ops = {
 static struct ata_port_operations piix_sidpr_sata_ops = {

+ 31 - 7
drivers/ata/libata-core.c

@@ -3790,21 +3790,45 @@ int sata_link_debounce(struct ata_link *link, const unsigned long *params,
 int sata_link_resume(struct ata_link *link, const unsigned long *params,
 int sata_link_resume(struct ata_link *link, const unsigned long *params,
 		     unsigned long deadline)
 		     unsigned long deadline)
 {
 {
+	int tries = ATA_LINK_RESUME_TRIES;
 	u32 scontrol, serror;
 	u32 scontrol, serror;
 	int rc;
 	int rc;
 
 
 	if ((rc = sata_scr_read(link, SCR_CONTROL, &scontrol)))
 	if ((rc = sata_scr_read(link, SCR_CONTROL, &scontrol)))
 		return rc;
 		return rc;
 
 
-	scontrol = (scontrol & 0x0f0) | 0x300;
+	/*
+	 * Writes to SControl sometimes get ignored under certain
+	 * controllers (ata_piix SIDPR).  Make sure DET actually is
+	 * cleared.
+	 */
+	do {
+		scontrol = (scontrol & 0x0f0) | 0x300;
+		if ((rc = sata_scr_write(link, SCR_CONTROL, scontrol)))
+			return rc;
+		/*
+		 * Some PHYs react badly if SStatus is pounded
+		 * immediately after resuming.  Delay 200ms before
+		 * debouncing.
+		 */
+		msleep(200);
 
 
-	if ((rc = sata_scr_write(link, SCR_CONTROL, scontrol)))
-		return rc;
+		/* is SControl restored correctly? */
+		if ((rc = sata_scr_read(link, SCR_CONTROL, &scontrol)))
+			return rc;
+	} while ((scontrol & 0xf0f) != 0x300 && --tries);
 
 
-	/* Some PHYs react badly if SStatus is pounded immediately
-	 * after resuming.  Delay 200ms before debouncing.
-	 */
-	msleep(200);
+	if ((scontrol & 0xf0f) != 0x300) {
+		ata_link_printk(link, KERN_ERR,
+				"failed to resume link (SControl %X)\n",
+				scontrol);
+		return 0;
+	}
+
+	if (tries < ATA_LINK_RESUME_TRIES)
+		ata_link_printk(link, KERN_WARNING,
+				"link resume succeeded after %d retries\n",
+				ATA_LINK_RESUME_TRIES - tries);
 
 
 	if ((rc = sata_link_debounce(link, params, deadline)))
 	if ((rc = sata_link_debounce(link, params, deadline)))
 		return rc;
 		return rc;

+ 1 - 1
drivers/ata/sata_promise.c

@@ -862,7 +862,7 @@ static void pdc_error_intr(struct ata_port *ap, struct ata_queued_cmd *qc,
 	if (port_status & PDC_DRIVE_ERR)
 	if (port_status & PDC_DRIVE_ERR)
 		ac_err_mask |= AC_ERR_DEV;
 		ac_err_mask |= AC_ERR_DEV;
 	if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR))
 	if (port_status & (PDC_OVERRUN_ERR | PDC_UNDERRUN_ERR))
-		ac_err_mask |= AC_ERR_HSM;
+		ac_err_mask |= AC_ERR_OTHER;
 	if (port_status & (PDC2_ATA_HBA_ERR | PDC2_ATA_DMA_CNT_ERR))
 	if (port_status & (PDC2_ATA_HBA_ERR | PDC2_ATA_DMA_CNT_ERR))
 		ac_err_mask |= AC_ERR_ATA_BUS;
 		ac_err_mask |= AC_ERR_ATA_BUS;
 	if (port_status & (PDC_PH_ERR | PDC_SH_ERR | PDC_DH_ERR | PDC2_HTO_ERR
 	if (port_status & (PDC_PH_ERR | PDC_SH_ERR | PDC_DH_ERR | PDC2_HTO_ERR

+ 21 - 13
drivers/base/memory.c

@@ -309,17 +309,19 @@ static SYSDEV_ATTR(removable, 0444, show_mem_removable, NULL);
  * Block size attribute stuff
  * Block size attribute stuff
  */
  */
 static ssize_t
 static ssize_t
-print_block_size(struct class *class, char *buf)
+print_block_size(struct sysdev_class *class,
+		 struct sysdev_class_attribute *class_attr,
+		 char *buf)
 {
 {
-	return sprintf(buf, "%lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
+	return sprintf(buf, "%#lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
 }
 }
 
 
-static CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL);
+static SYSDEV_CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL);
 
 
 static int block_size_init(void)
 static int block_size_init(void)
 {
 {
 	return sysfs_create_file(&memory_sysdev_class.kset.kobj,
 	return sysfs_create_file(&memory_sysdev_class.kset.kobj,
-				&class_attr_block_size_bytes.attr);
+				&attr_block_size_bytes.attr);
 }
 }
 
 
 /*
 /*
@@ -330,7 +332,9 @@ static int block_size_init(void)
  */
  */
 #ifdef CONFIG_ARCH_MEMORY_PROBE
 #ifdef CONFIG_ARCH_MEMORY_PROBE
 static ssize_t
 static ssize_t
-memory_probe_store(struct class *class, const char *buf, size_t count)
+memory_probe_store(struct sysdev_class *class,
+		   struct sysdev_class_attribute *class_attr,
+		   const char *buf, size_t count)
 {
 {
 	u64 phys_addr;
 	u64 phys_addr;
 	int nid;
 	int nid;
@@ -346,12 +350,12 @@ memory_probe_store(struct class *class, const char *buf, size_t count)
 
 
 	return count;
 	return count;
 }
 }
-static CLASS_ATTR(probe, S_IWUSR, NULL, memory_probe_store);
+static SYSDEV_CLASS_ATTR(probe, S_IWUSR, NULL, memory_probe_store);
 
 
 static int memory_probe_init(void)
 static int memory_probe_init(void)
 {
 {
 	return sysfs_create_file(&memory_sysdev_class.kset.kobj,
 	return sysfs_create_file(&memory_sysdev_class.kset.kobj,
-				&class_attr_probe.attr);
+				&attr_probe.attr);
 }
 }
 #else
 #else
 static inline int memory_probe_init(void)
 static inline int memory_probe_init(void)
@@ -367,7 +371,9 @@ static inline int memory_probe_init(void)
 
 
 /* Soft offline a page */
 /* Soft offline a page */
 static ssize_t
 static ssize_t
-store_soft_offline_page(struct class *class, const char *buf, size_t count)
+store_soft_offline_page(struct sysdev_class *class,
+			struct sysdev_class_attribute *class_attr,
+			const char *buf, size_t count)
 {
 {
 	int ret;
 	int ret;
 	u64 pfn;
 	u64 pfn;
@@ -384,7 +390,9 @@ store_soft_offline_page(struct class *class, const char *buf, size_t count)
 
 
 /* Forcibly offline a page, including killing processes. */
 /* Forcibly offline a page, including killing processes. */
 static ssize_t
 static ssize_t
-store_hard_offline_page(struct class *class, const char *buf, size_t count)
+store_hard_offline_page(struct sysdev_class *class,
+			struct sysdev_class_attribute *class_attr,
+			const char *buf, size_t count)
 {
 {
 	int ret;
 	int ret;
 	u64 pfn;
 	u64 pfn;
@@ -397,18 +405,18 @@ store_hard_offline_page(struct class *class, const char *buf, size_t count)
 	return ret ? ret : count;
 	return ret ? ret : count;
 }
 }
 
 
-static CLASS_ATTR(soft_offline_page, 0644, NULL, store_soft_offline_page);
-static CLASS_ATTR(hard_offline_page, 0644, NULL, store_hard_offline_page);
+static SYSDEV_CLASS_ATTR(soft_offline_page, 0644, NULL, store_soft_offline_page);
+static SYSDEV_CLASS_ATTR(hard_offline_page, 0644, NULL, store_hard_offline_page);
 
 
 static __init int memory_fail_init(void)
 static __init int memory_fail_init(void)
 {
 {
 	int err;
 	int err;
 
 
 	err = sysfs_create_file(&memory_sysdev_class.kset.kobj,
 	err = sysfs_create_file(&memory_sysdev_class.kset.kobj,
-				&class_attr_soft_offline_page.attr);
+				&attr_soft_offline_page.attr);
 	if (!err)
 	if (!err)
 		err = sysfs_create_file(&memory_sysdev_class.kset.kobj,
 		err = sysfs_create_file(&memory_sysdev_class.kset.kobj,
-				&class_attr_hard_offline_page.attr);
+				&attr_hard_offline_page.attr);
 	return err;
 	return err;
 }
 }
 #else
 #else

+ 3 - 2
drivers/char/agp/amd64-agp.c

@@ -725,12 +725,11 @@ static struct pci_driver agp_amd64_pci_driver = {
 int __init agp_amd64_init(void)
 int __init agp_amd64_init(void)
 {
 {
 	int err = 0;
 	int err = 0;
-	static int done = 0;
 
 
 	if (agp_off)
 	if (agp_off)
 		return -EINVAL;
 		return -EINVAL;
 
 
-	if (done++)
+	if (gart_iommu_aperture)
 		return agp_bridges_found ? 0 : -ENODEV;
 		return agp_bridges_found ? 0 : -ENODEV;
 
 
 	err = pci_register_driver(&agp_amd64_pci_driver);
 	err = pci_register_driver(&agp_amd64_pci_driver);
@@ -771,6 +770,8 @@ int __init agp_amd64_init(void)
 
 
 static void __exit agp_amd64_cleanup(void)
 static void __exit agp_amd64_cleanup(void)
 {
 {
+	if (gart_iommu_aperture)
+		return;
 	if (aperture_resource)
 	if (aperture_resource)
 		release_resource(aperture_resource);
 		release_resource(aperture_resource);
 	pci_unregister_driver(&agp_amd64_pci_driver);
 	pci_unregister_driver(&agp_amd64_pci_driver);

+ 5 - 1
drivers/char/agp/intel-agp.c

@@ -2460,10 +2460,14 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev,
 				&bridge->mode);
 				&bridge->mode);
 	}
 	}
 
 
-	if (bridge->driver->mask_memory == intel_i965_mask_memory)
+	if (bridge->driver->mask_memory == intel_i965_mask_memory) {
 		if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(36)))
 		if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(36)))
 			dev_err(&intel_private.pcidev->dev,
 			dev_err(&intel_private.pcidev->dev,
 				"set gfx device dma mask 36bit failed!\n");
 				"set gfx device dma mask 36bit failed!\n");
+		else
+			pci_set_consistent_dma_mask(intel_private.pcidev,
+						    DMA_BIT_MASK(36));
+	}
 
 
 	pci_set_drvdata(pdev, bridge);
 	pci_set_drvdata(pdev, bridge);
 	return agp_add_bridge(bridge);
 	return agp_add_bridge(bridge);

+ 3 - 3
drivers/char/hw_random/virtio-rng.c

@@ -114,7 +114,7 @@ static struct virtio_device_id id_table[] = {
 	{ 0 },
 	{ 0 },
 };
 };
 
 
-static struct virtio_driver virtio_rng = {
+static struct virtio_driver virtio_rng_driver = {
 	.driver.name =	KBUILD_MODNAME,
 	.driver.name =	KBUILD_MODNAME,
 	.driver.owner =	THIS_MODULE,
 	.driver.owner =	THIS_MODULE,
 	.id_table =	id_table,
 	.id_table =	id_table,
@@ -124,12 +124,12 @@ static struct virtio_driver virtio_rng = {
 
 
 static int __init init(void)
 static int __init init(void)
 {
 {
-	return register_virtio_driver(&virtio_rng);
+	return register_virtio_driver(&virtio_rng_driver);
 }
 }
 
 
 static void __exit fini(void)
 static void __exit fini(void)
 {
 {
-	unregister_virtio_driver(&virtio_rng);
+	unregister_virtio_driver(&virtio_rng_driver);
 }
 }
 module_init(init);
 module_init(init);
 module_exit(fini);
 module_exit(fini);

+ 1 - 1
drivers/edac/amd64_edac.c

@@ -197,7 +197,7 @@ static int amd64_get_scrub_rate(struct mem_ctl_info *mci, u32 *bw)
 	edac_printk(KERN_DEBUG, EDAC_MC,
 	edac_printk(KERN_DEBUG, EDAC_MC,
 		    "pci-read, sdram scrub control value: %d \n", scrubval);
 		    "pci-read, sdram scrub control value: %d \n", scrubval);
 
 
-	for (i = 0; ARRAY_SIZE(scrubrates); i++) {
+	for (i = 0; i < ARRAY_SIZE(scrubrates); i++) {
 		if (scrubrates[i].scrubval == scrubval) {
 		if (scrubrates[i].scrubval == scrubval) {
 			*bw = scrubrates[i].bandwidth;
 			*bw = scrubrates[i].bandwidth;
 			status = 0;
 			status = 0;

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно