Browse Source

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net

Conflicts:
	net/bridge/br_mdb.c

br_mdb.c conflict was a function call being removed to fix a bug in
'net' but whose signature was changed in 'net-next'.

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 10 years ago
parent
commit
c5e40ee287
100 changed files with 485 additions and 288 deletions
  1. 4 1
      .mailmap
  2. 2 4
      Documentation/ABI/testing/sysfs-bus-iio
  3. 1 1
      Documentation/DocBook/drm.tmpl
  4. 1 1
      Documentation/arm/SPEAr/overview.txt
  5. 6 0
      Documentation/device-mapper/cache.txt
  6. 8 1
      Documentation/device-mapper/thin-provisioning.txt
  7. 24 2
      Documentation/devicetree/bindings/drm/imx/fsl-imx-drm.txt
  8. 8 0
      Documentation/kbuild/makefiles.txt
  9. 55 54
      MAINTAINERS
  10. 6 5
      Makefile
  11. 4 0
      arch/Kconfig
  12. 1 0
      arch/alpha/include/asm/Kbuild
  13. 0 15
      arch/alpha/include/asm/mm-arch-hooks.h
  14. 2 1
      arch/arc/Kconfig
  15. 2 1
      arch/arc/Makefile
  16. 1 1
      arch/arc/boot/dts/axc003.dtsi
  17. 1 1
      arch/arc/boot/dts/axc003_idu.dtsi
  18. 1 0
      arch/arc/include/asm/Kbuild
  19. 9 26
      arch/arc/include/asm/bitops.h
  20. 42 6
      arch/arc/include/asm/futex.h
  21. 0 15
      arch/arc/include/asm/mm-arch-hooks.h
  22. 1 1
      arch/arc/include/asm/ptrace.h
  23. 0 1
      arch/arc/kernel/intc-arcv2.c
  24. 0 1
      arch/arc/kernel/intc-compact.c
  25. 19 4
      arch/arc/kernel/mcip.c
  26. 10 5
      arch/arc/kernel/setup.c
  27. 0 1
      arch/arc/kernel/troubleshoot.c
  28. 10 2
      arch/arc/mm/cache.c
  29. 2 2
      arch/arc/mm/dma.c
  30. 13 3
      arch/arm/boot/dts/am335x-pepper.dts
  31. 4 0
      arch/arm/boot/dts/cros-ec-keyboard.dtsi
  32. 1 0
      arch/arm/boot/dts/imx23.dtsi
  33. 6 6
      arch/arm/boot/dts/imx27.dtsi
  34. 3 2
      arch/arm/boot/dts/imx53-qsb-common.dtsi
  35. 2 1
      arch/arm/boot/dts/k2e.dtsi
  36. 2 1
      arch/arm/boot/dts/keystone.dtsi
  37. 1 1
      arch/arm/boot/dts/omap3-overo-common-lcd35.dtsi
  38. 1 1
      arch/arm/boot/dts/omap3-overo-common-lcd43.dtsi
  39. 2 0
      arch/arm/boot/dts/omap4.dtsi
  40. 2 0
      arch/arm/boot/dts/omap5.dtsi
  41. 13 13
      arch/arm/boot/dts/socfpga_cyclone5_sockit.dts
  42. 1 1
      arch/arm/boot/dts/spear1310-evb.dts
  43. 1 1
      arch/arm/boot/dts/spear1310.dtsi
  44. 1 1
      arch/arm/boot/dts/spear1340-evb.dts
  45. 1 1
      arch/arm/boot/dts/spear1340.dtsi
  46. 1 1
      arch/arm/boot/dts/spear13xx.dtsi
  47. 1 1
      arch/arm/boot/dts/spear300-evb.dts
  48. 1 1
      arch/arm/boot/dts/spear300.dtsi
  49. 1 1
      arch/arm/boot/dts/spear310-evb.dts
  50. 1 1
      arch/arm/boot/dts/spear310.dtsi
  51. 1 1
      arch/arm/boot/dts/spear320-evb.dts
  52. 1 1
      arch/arm/boot/dts/spear320.dtsi
  53. 1 1
      arch/arm/boot/dts/spear3xx.dtsi
  54. 7 0
      arch/arm/boot/dts/ste-ccu8540.dts
  55. 7 0
      arch/arm/boot/dts/ste-ccu9540.dts
  56. 3 3
      arch/arm/boot/dts/ste-dbx5x0.dtsi
  57. 1 1
      arch/arm/boot/dts/ste-href.dtsi
  58. 7 0
      arch/arm/boot/dts/ste-hrefprev60-stuib.dts
  59. 7 0
      arch/arm/boot/dts/ste-hrefprev60-tvk.dts
  60. 5 0
      arch/arm/boot/dts/ste-hrefprev60.dtsi
  61. 7 0
      arch/arm/boot/dts/ste-hrefv60plus-stuib.dts
  62. 7 0
      arch/arm/boot/dts/ste-hrefv60plus-tvk.dts
  63. 23 2
      arch/arm/boot/dts/ste-hrefv60plus.dtsi
  64. 23 2
      arch/arm/boot/dts/ste-snowball.dts
  65. 1 0
      arch/arm/include/asm/Kbuild
  66. 1 1
      arch/arm/include/asm/memory.h
  67. 0 15
      arch/arm/include/asm/mm-arch-hooks.h
  68. 2 1
      arch/arm/kernel/perf_event.c
  69. 1 1
      arch/arm/kernel/reboot.c
  70. 6 21
      arch/arm/mach-imx/gpc.c
  71. 1 0
      arch/arm/mach-omap2/Kconfig
  72. 3 0
      arch/arm/mach-pxa/capc7117.c
  73. 3 0
      arch/arm/mach-pxa/cm-x2xx.c
  74. 2 0
      arch/arm/mach-pxa/cm-x300.c
  75. 3 0
      arch/arm/mach-pxa/colibri-pxa270.c
  76. 2 0
      arch/arm/mach-pxa/em-x270.c
  77. 3 0
      arch/arm/mach-pxa/icontrol.c
  78. 3 0
      arch/arm/mach-pxa/trizeps4.c
  79. 3 0
      arch/arm/mach-pxa/vpac270.c
  80. 2 0
      arch/arm/mach-pxa/zeus.c
  81. 1 1
      arch/arm/mach-spear/generic.h
  82. 1 1
      arch/arm/mach-spear/include/mach/irqs.h
  83. 1 1
      arch/arm/mach-spear/include/mach/misc_regs.h
  84. 1 1
      arch/arm/mach-spear/include/mach/spear.h
  85. 1 1
      arch/arm/mach-spear/include/mach/uncompress.h
  86. 1 1
      arch/arm/mach-spear/pl080.c
  87. 1 1
      arch/arm/mach-spear/pl080.h
  88. 1 1
      arch/arm/mach-spear/restart.c
  89. 1 1
      arch/arm/mach-spear/spear1310.c
  90. 1 1
      arch/arm/mach-spear/spear1340.c
  91. 1 1
      arch/arm/mach-spear/spear13xx.c
  92. 1 1
      arch/arm/mach-spear/spear300.c
  93. 1 1
      arch/arm/mach-spear/spear310.c
  94. 1 1
      arch/arm/mach-spear/spear320.c
  95. 1 1
      arch/arm/mach-spear/spear3xx.c
  96. 1 1
      arch/arm/mm/dma-mapping.c
  97. 9 5
      arch/arm/mm/proc-v7.S
  98. 44 13
      arch/arm/net/bpf_jit_32.c
  99. 1 0
      arch/arm64/include/asm/Kbuild
  100. 0 15
      arch/arm64/include/asm/mm-arch-hooks.h

+ 4 - 1
.mailmap

@@ -116,6 +116,7 @@ Shiraz Hashim <shiraz.linux.kernel@gmail.com> <shiraz.hashim@st.com>
 Simon Kelley <simon@thekelleys.org.uk>
 Simon Kelley <simon@thekelleys.org.uk>
 Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
 Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
 Stephen Hemminger <shemminger@osdl.org>
 Stephen Hemminger <shemminger@osdl.org>
+Sudeep Holla <sudeep.holla@arm.com> Sudeep KarkadaNagesha <sudeep.karkadanagesha@arm.com>
 Sumit Semwal <sumit.semwal@ti.com>
 Sumit Semwal <sumit.semwal@ti.com>
 Tejun Heo <htejun@gmail.com>
 Tejun Heo <htejun@gmail.com>
 Thomas Graf <tgraf@suug.ch>
 Thomas Graf <tgraf@suug.ch>
@@ -125,7 +126,9 @@ Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
 Uwe Kleine-König <ukl@pengutronix.de>
 Uwe Kleine-König <ukl@pengutronix.de>
 Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
 Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
 Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
 Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
-Viresh Kumar <viresh.linux@gmail.com> <viresh.kumar@st.com>
+Viresh Kumar <vireshk@kernel.org> <viresh.kumar@st.com>
+Viresh Kumar <vireshk@kernel.org> <viresh.linux@gmail.com>
+Viresh Kumar <vireshk@kernel.org> <viresh.kumar2@arm.com>
 Takashi YOSHII <takashi.yoshii.zj@renesas.com>
 Takashi YOSHII <takashi.yoshii.zj@renesas.com>
 Yusuke Goda <goda.yusuke@renesas.com>
 Yusuke Goda <goda.yusuke@renesas.com>
 Gustavo Padovan <gustavo@las.ic.unicamp.br>
 Gustavo Padovan <gustavo@las.ic.unicamp.br>

+ 2 - 4
Documentation/ABI/testing/sysfs-bus-iio

@@ -1234,10 +1234,8 @@ Description:
 		object is near the sensor, usually be observing
 		object is near the sensor, usually be observing
 		reflectivity of infrared or ultrasound emitted.
 		reflectivity of infrared or ultrasound emitted.
 		Often these sensors are unit less and as such conversion
 		Often these sensors are unit less and as such conversion
-		to SI units is not possible.  Where it is, the units should
-		be meters.  If such a conversion is not possible, the reported
-		values should behave in the same way as a distance, i.e. lower
-		values indicate something is closer to the sensor.
+		to SI units is not possible. Higher proximity measurements
+		indicate closer objects, and vice versa.
 
 
 What:		/sys/.../iio:deviceX/in_illuminance_input
 What:		/sys/.../iio:deviceX/in_illuminance_input
 What:		/sys/.../iio:deviceX/in_illuminance_raw
 What:		/sys/.../iio:deviceX/in_illuminance_raw

+ 1 - 1
Documentation/DocBook/drm.tmpl

@@ -3383,7 +3383,7 @@ void intel_crt_init(struct drm_device *dev)
 	<td valign="top" >TBD</td>
 	<td valign="top" >TBD</td>
 	</tr>
 	</tr>
 	<tr>
 	<tr>
-	<td rowspan="2" valign="top" >omap</td>
+	<td valign="top" >omap</td>
 	<td valign="top" >Generic</td>
 	<td valign="top" >Generic</td>
 	<td valign="top" >“zorder”</td>
 	<td valign="top" >“zorder”</td>
 	<td valign="top" >RANGE</td>
 	<td valign="top" >RANGE</td>

+ 1 - 1
Documentation/arm/SPEAr/overview.txt

@@ -60,4 +60,4 @@ Introduction
   Document Author
   Document Author
   ---------------
   ---------------
 
 
-  Viresh Kumar <viresh.linux@gmail.com>, (c) 2010-2012 ST Microelectronics
+  Viresh Kumar <vireshk@kernel.org>, (c) 2010-2012 ST Microelectronics

+ 6 - 0
Documentation/device-mapper/cache.txt

@@ -258,6 +258,12 @@ cache metadata mode      : ro if read-only, rw if read-write
 	no further I/O will be permitted and the status will just
 	no further I/O will be permitted and the status will just
 	contain the string 'Fail'.  The userspace recovery tools
 	contain the string 'Fail'.  The userspace recovery tools
 	should then be used.
 	should then be used.
+needs_check		 : 'needs_check' if set, '-' if not set
+	A metadata operation has failed, resulting in the needs_check
+	flag being set in the metadata's superblock.  The metadata
+	device must be deactivated and checked/repaired before the
+	cache can be made fully operational again.  '-' indicates
+	needs_check is not set.
 
 
 Messages
 Messages
 --------
 --------

+ 8 - 1
Documentation/device-mapper/thin-provisioning.txt

@@ -296,7 +296,7 @@ ii) Status
 	underlying device.  When this is enabled when loading the table,
 	underlying device.  When this is enabled when loading the table,
 	it can get disabled if the underlying device doesn't support it.
 	it can get disabled if the underlying device doesn't support it.
 
 
-    ro|rw
+    ro|rw|out_of_data_space
 	If the pool encounters certain types of device failures it will
 	If the pool encounters certain types of device failures it will
 	drop into a read-only metadata mode in which no changes to
 	drop into a read-only metadata mode in which no changes to
 	the pool metadata (like allocating new blocks) are permitted.
 	the pool metadata (like allocating new blocks) are permitted.
@@ -314,6 +314,13 @@ ii) Status
 	module parameter can be used to change this timeout -- it
 	module parameter can be used to change this timeout -- it
 	defaults to 60 seconds but may be disabled using a value of 0.
 	defaults to 60 seconds but may be disabled using a value of 0.
 
 
+    needs_check
+	A metadata operation has failed, resulting in the needs_check
+	flag being set in the metadata's superblock.  The metadata
+	device must be deactivated and checked/repaired before the
+	thin-pool can be made fully operational again.  '-' indicates
+	needs_check is not set.
+
 iii) Messages
 iii) Messages
 
 
     create_thin <dev id>
     create_thin <dev id>

+ 24 - 2
Documentation/devicetree/bindings/drm/imx/fsl-imx-drm.txt

@@ -65,8 +65,10 @@ Optional properties:
 - edid: verbatim EDID data block describing attached display.
 - edid: verbatim EDID data block describing attached display.
 - ddc: phandle describing the i2c bus handling the display data
 - ddc: phandle describing the i2c bus handling the display data
   channel
   channel
-- port: A port node with endpoint definitions as defined in
+- port@[0-1]: Port nodes with endpoint definitions as defined in
   Documentation/devicetree/bindings/media/video-interfaces.txt.
   Documentation/devicetree/bindings/media/video-interfaces.txt.
+  Port 0 is the input port connected to the IPU display interface,
+  port 1 is the output port connected to a panel.
 
 
 example:
 example:
 
 
@@ -75,9 +77,29 @@ display@di0 {
 	edid = [edid-data];
 	edid = [edid-data];
 	interface-pix-fmt = "rgb24";
 	interface-pix-fmt = "rgb24";
 
 
-	port {
+	port@0 {
+		reg = <0>;
+
 		display_in: endpoint {
 		display_in: endpoint {
 			remote-endpoint = <&ipu_di0_disp0>;
 			remote-endpoint = <&ipu_di0_disp0>;
 		};
 		};
 	};
 	};
+
+	port@1 {
+		reg = <1>;
+
+		display_out: endpoint {
+			remote-endpoint = <&panel_in>;
+		};
+	};
+};
+
+panel {
+	...
+
+	port {
+		panel_in: endpoint {
+			remote-endpoint = <&display_out>;
+		};
+	};
 };
 };

+ 8 - 0
Documentation/kbuild/makefiles.txt

@@ -952,6 +952,14 @@ When kbuild executes, the following steps are followed (roughly):
 	$(KBUILD_ARFLAGS) set by the top level Makefile to "D" (deterministic
 	$(KBUILD_ARFLAGS) set by the top level Makefile to "D" (deterministic
 	mode) if this option is supported by $(AR).
 	mode) if this option is supported by $(AR).
 
 
+    ARCH_CPPFLAGS, ARCH_AFLAGS, ARCH_CFLAGS   Overrides the kbuild defaults
+
+	These variables are appended to the KBUILD_CPPFLAGS,
+	KBUILD_AFLAGS, and KBUILD_CFLAGS, respectively, after the
+	top-level Makefile has set any other flags. This provides a
+	means for an architecture to override the defaults.
+
+
 --- 6.2 Add prerequisites to archheaders:
 --- 6.2 Add prerequisites to archheaders:
 
 
 	The archheaders: rule is used to generate header files that
 	The archheaders: rule is used to generate header files that

+ 55 - 54
MAINTAINERS

@@ -361,11 +361,11 @@ S:	Supported
 F:	drivers/input/touchscreen/ad7879.c
 F:	drivers/input/touchscreen/ad7879.c
 
 
 ADDRESS SPACE LAYOUT RANDOMIZATION (ASLR)
 ADDRESS SPACE LAYOUT RANDOMIZATION (ASLR)
-M:	Jiri Kosina <jkosina@suse.cz>
+M:	Jiri Kosina <jkosina@suse.com>
 S:	Maintained
 S:	Maintained
 
 
 ADM1025 HARDWARE MONITOR DRIVER
 ADM1025 HARDWARE MONITOR DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	lm-sensors@lm-sensors.org
 L:	lm-sensors@lm-sensors.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/hwmon/adm1025
 F:	Documentation/hwmon/adm1025
@@ -430,7 +430,7 @@ S:	Maintained
 F:	drivers/macintosh/therm_adt746x.c
 F:	drivers/macintosh/therm_adt746x.c
 
 
 ADT7475 HARDWARE MONITOR DRIVER
 ADT7475 HARDWARE MONITOR DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	lm-sensors@lm-sensors.org
 L:	lm-sensors@lm-sensors.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/hwmon/adt7475
 F:	Documentation/hwmon/adt7475
@@ -445,7 +445,7 @@ F:	drivers/input/misc/adxl34x.c
 
 
 ADVANSYS SCSI DRIVER
 ADVANSYS SCSI DRIVER
 M:	Matthew Wilcox <matthew@wil.cx>
 M:	Matthew Wilcox <matthew@wil.cx>
-M:	Hannes Reinecke <hare@suse.de>
+M:	Hannes Reinecke <hare@suse.com>
 L:	linux-scsi@vger.kernel.org
 L:	linux-scsi@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/scsi/advansys.txt
 F:	Documentation/scsi/advansys.txt
@@ -506,7 +506,7 @@ F:	drivers/scsi/aha152x*
 F:	drivers/scsi/pcmcia/aha152x*
 F:	drivers/scsi/pcmcia/aha152x*
 
 
 AIC7XXX / AIC79XX SCSI DRIVER
 AIC7XXX / AIC79XX SCSI DRIVER
-M:	Hannes Reinecke <hare@suse.de>
+M:	Hannes Reinecke <hare@suse.com>
 L:	linux-scsi@vger.kernel.org
 L:	linux-scsi@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	drivers/scsi/aic7xxx/
 F:	drivers/scsi/aic7xxx/
@@ -746,7 +746,7 @@ S:	Maintained
 F:	sound/aoa/
 F:	sound/aoa/
 
 
 APM DRIVER
 APM DRIVER
-M:	Jiri Kosina <jkosina@suse.cz>
+M:	Jiri Kosina <jkosina@suse.com>
 S:	Odd fixes
 S:	Odd fixes
 F:	arch/x86/kernel/apm_32.c
 F:	arch/x86/kernel/apm_32.c
 F:	include/linux/apm_bios.h
 F:	include/linux/apm_bios.h
@@ -1001,6 +1001,7 @@ ARM/CONEXANT DIGICOLOR MACHINE SUPPORT
 M:	Baruch Siach <baruch@tkos.co.il>
 M:	Baruch Siach <baruch@tkos.co.il>
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:	Maintained
 S:	Maintained
+F:	arch/arm/boot/dts/cx92755*
 N:	digicolor
 N:	digicolor
 
 
 ARM/EBSA110 MACHINE SUPPORT
 ARM/EBSA110 MACHINE SUPPORT
@@ -1324,7 +1325,7 @@ F:	arch/arm/mach-pxa/include/mach/palmtc.h
 F:	arch/arm/mach-pxa/palmtc.c
 F:	arch/arm/mach-pxa/palmtc.c
 
 
 ARM/PALM TREO SUPPORT
 ARM/PALM TREO SUPPORT
-M:	Tomas Cech <sleep_walker@suse.cz>
+M:	Tomas Cech <sleep_walker@suse.com>
 L:	linux-arm-kernel@lists.infradead.org
 L:	linux-arm-kernel@lists.infradead.org
 W:	http://hackndev.com
 W:	http://hackndev.com
 S:	Maintained
 S:	Maintained
@@ -2405,7 +2406,7 @@ F:	drivers/gpio/gpio-bt8xx.c
 BTRFS FILE SYSTEM
 BTRFS FILE SYSTEM
 M:	Chris Mason <clm@fb.com>
 M:	Chris Mason <clm@fb.com>
 M:	Josef Bacik <jbacik@fb.com>
 M:	Josef Bacik <jbacik@fb.com>
-M:	David Sterba <dsterba@suse.cz>
+M:	David Sterba <dsterba@suse.com>
 L:	linux-btrfs@vger.kernel.org
 L:	linux-btrfs@vger.kernel.org
 W:	http://btrfs.wiki.kernel.org/
 W:	http://btrfs.wiki.kernel.org/
 Q:	http://patchwork.kernel.org/project/linux-btrfs/list/
 Q:	http://patchwork.kernel.org/project/linux-btrfs/list/
@@ -2748,7 +2749,7 @@ COCCINELLE/Semantic Patches (SmPL)
 M:	Julia Lawall <Julia.Lawall@lip6.fr>
 M:	Julia Lawall <Julia.Lawall@lip6.fr>
 M:	Gilles Muller <Gilles.Muller@lip6.fr>
 M:	Gilles Muller <Gilles.Muller@lip6.fr>
 M:	Nicolas Palix <nicolas.palix@imag.fr>
 M:	Nicolas Palix <nicolas.palix@imag.fr>
-M:	Michal Marek <mmarek@suse.cz>
+M:	Michal Marek <mmarek@suse.com>
 L:	cocci@systeme.lip6.fr (moderated for non-subscribers)
 L:	cocci@systeme.lip6.fr (moderated for non-subscribers)
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git misc
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git misc
 W:	http://coccinelle.lip6.fr/
 W:	http://coccinelle.lip6.fr/
@@ -2864,7 +2865,7 @@ F:	kernel/cpuset.c
 
 
 CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
 CONTROL GROUP - MEMORY RESOURCE CONTROLLER (MEMCG)
 M:	Johannes Weiner <hannes@cmpxchg.org>
 M:	Johannes Weiner <hannes@cmpxchg.org>
-M:	Michal Hocko <mhocko@suse.cz>
+M:	Michal Hocko <mhocko@kernel.org>
 L:	cgroups@vger.kernel.org
 L:	cgroups@vger.kernel.org
 L:	linux-mm@kvack.org
 L:	linux-mm@kvack.org
 S:	Maintained
 S:	Maintained
@@ -2945,7 +2946,7 @@ F:	arch/x86/kernel/cpuid.c
 F:	arch/x86/kernel/msr.c
 F:	arch/x86/kernel/msr.c
 
 
 CPU POWER MONITORING SUBSYSTEM
 CPU POWER MONITORING SUBSYSTEM
-M:	Thomas Renninger <trenn@suse.de>
+M:	Thomas Renninger <trenn@suse.com>
 L:	linux-pm@vger.kernel.org
 L:	linux-pm@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	tools/power/cpupower/
 F:	tools/power/cpupower/
@@ -3175,7 +3176,7 @@ F:	Documentation/networking/dmfe.txt
 F:	drivers/net/ethernet/dec/tulip/dmfe.c
 F:	drivers/net/ethernet/dec/tulip/dmfe.c
 
 
 DC390/AM53C974 SCSI driver
 DC390/AM53C974 SCSI driver
-M:	Hannes Reinecke <hare@suse.de>
+M:	Hannes Reinecke <hare@suse.com>
 L:	linux-scsi@vger.kernel.org
 L:	linux-scsi@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	drivers/scsi/am53c974.c
 F:	drivers/scsi/am53c974.c
@@ -3379,7 +3380,7 @@ W:	http://www.win.tue.nl/~aeb/partitions/partition_types-1.html
 S:	Maintained
 S:	Maintained
 
 
 DISKQUOTA
 DISKQUOTA
-M:	Jan Kara <jack@suse.cz>
+M:	Jan Kara <jack@suse.com>
 S:	Maintained
 S:	Maintained
 F:	Documentation/filesystems/quota.txt
 F:	Documentation/filesystems/quota.txt
 F:	fs/quota/
 F:	fs/quota/
@@ -3435,7 +3436,7 @@ F:	Documentation/hwmon/dme1737
 F:	drivers/hwmon/dme1737.c
 F:	drivers/hwmon/dme1737.c
 
 
 DMI/SMBIOS SUPPORT
 DMI/SMBIOS SUPPORT
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 S:	Maintained
 S:	Maintained
 T:	quilt http://jdelvare.nerim.net/devel/linux/jdelvare-dmi/
 T:	quilt http://jdelvare.nerim.net/devel/linux/jdelvare-dmi/
 F:	Documentation/ABI/testing/sysfs-firmware-dmi-tables
 F:	Documentation/ABI/testing/sysfs-firmware-dmi-tables
@@ -4051,7 +4052,7 @@ F:	drivers/of/of_mdio.c
 F:	drivers/of/of_net.c
 F:	drivers/of/of_net.c
 
 
 EXT2 FILE SYSTEM
 EXT2 FILE SYSTEM
-M:	Jan Kara <jack@suse.cz>
+M:	Jan Kara <jack@suse.com>
 L:	linux-ext4@vger.kernel.org
 L:	linux-ext4@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/filesystems/ext2.txt
 F:	Documentation/filesystems/ext2.txt
@@ -4059,7 +4060,7 @@ F:	fs/ext2/
 F:	include/linux/ext2*
 F:	include/linux/ext2*
 
 
 EXT3 FILE SYSTEM
 EXT3 FILE SYSTEM
-M:	Jan Kara <jack@suse.cz>
+M:	Jan Kara <jack@suse.com>
 M:	Andrew Morton <akpm@linux-foundation.org>
 M:	Andrew Morton <akpm@linux-foundation.org>
 M:	Andreas Dilger <adilger.kernel@dilger.ca>
 M:	Andreas Dilger <adilger.kernel@dilger.ca>
 L:	linux-ext4@vger.kernel.org
 L:	linux-ext4@vger.kernel.org
@@ -4109,7 +4110,7 @@ F:	drivers/video/fbdev/exynos/exynos_mipi*
 F:	include/video/exynos_mipi*
 F:	include/video/exynos_mipi*
 
 
 F71805F HARDWARE MONITORING DRIVER
 F71805F HARDWARE MONITORING DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	lm-sensors@lm-sensors.org
 L:	lm-sensors@lm-sensors.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/hwmon/f71805f
 F:	Documentation/hwmon/f71805f
@@ -4244,7 +4245,7 @@ S:	Maintained
 F:	drivers/block/rsxx/
 F:	drivers/block/rsxx/
 
 
 FLOPPY DRIVER
 FLOPPY DRIVER
-M:	Jiri Kosina <jkosina@suse.cz>
+M:	Jiri Kosina <jkosina@suse.com>
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/floppy.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/floppy.git
 S:	Odd fixes
 S:	Odd fixes
 F:	drivers/block/floppy.c
 F:	drivers/block/floppy.c
@@ -4665,7 +4666,7 @@ F:	drivers/media/usb/stk1160/
 
 
 H8/300 ARCHITECTURE
 H8/300 ARCHITECTURE
 M:	Yoshinori Sato <ysato@users.sourceforge.jp>
 M:	Yoshinori Sato <ysato@users.sourceforge.jp>
-L:	uclinux-h8-devel@lists.sourceforge.jp
+L:	uclinux-h8-devel@lists.sourceforge.jp (moderated for non-subscribers)
 W:	http://uclinux-h8.sourceforge.jp
 W:	http://uclinux-h8.sourceforge.jp
 T:	git git://git.sourceforge.jp/gitroot/uclinux-h8/linux.git
 T:	git git://git.sourceforge.jp/gitroot/uclinux-h8/linux.git
 S:	Maintained
 S:	Maintained
@@ -4712,7 +4713,7 @@ S:	Maintained
 F:	drivers/media/usb/hackrf/
 F:	drivers/media/usb/hackrf/
 
 
 HARDWARE MONITORING
 HARDWARE MONITORING
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 M:	Guenter Roeck <linux@roeck-us.net>
 M:	Guenter Roeck <linux@roeck-us.net>
 L:	lm-sensors@lm-sensors.org
 L:	lm-sensors@lm-sensors.org
 W:	http://www.lm-sensors.org/
 W:	http://www.lm-sensors.org/
@@ -4815,7 +4816,7 @@ F:	include/linux/pm.h
 F:	arch/*/include/asm/suspend*.h
 F:	arch/*/include/asm/suspend*.h
 
 
 HID CORE LAYER
 HID CORE LAYER
-M:	Jiri Kosina <jkosina@suse.cz>
+M:	Jiri Kosina <jkosina@suse.com>
 L:	linux-input@vger.kernel.org
 L:	linux-input@vger.kernel.org
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
 S:	Maintained
 S:	Maintained
@@ -4824,7 +4825,7 @@ F:	include/linux/hid*
 F:	include/uapi/linux/hid*
 F:	include/uapi/linux/hid*
 
 
 HID SENSOR HUB DRIVERS
 HID SENSOR HUB DRIVERS
-M:	Jiri Kosina <jkosina@suse.cz>
+M:	Jiri Kosina <jkosina@suse.com>
 M:	Jonathan Cameron <jic23@kernel.org>
 M:	Jonathan Cameron <jic23@kernel.org>
 M:	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
 M:	Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
 L:	linux-input@vger.kernel.org
 L:	linux-input@vger.kernel.org
@@ -4958,7 +4959,7 @@ F:	include/linux/hyperv.h
 F:	tools/hv/
 F:	tools/hv/
 
 
 I2C OVER PARALLEL PORT
 I2C OVER PARALLEL PORT
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	linux-i2c@vger.kernel.org
 L:	linux-i2c@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/i2c/busses/i2c-parport
 F:	Documentation/i2c/busses/i2c-parport
@@ -4967,7 +4968,7 @@ F:	drivers/i2c/busses/i2c-parport.c
 F:	drivers/i2c/busses/i2c-parport-light.c
 F:	drivers/i2c/busses/i2c-parport-light.c
 
 
 I2C/SMBUS CONTROLLER DRIVERS FOR PC
 I2C/SMBUS CONTROLLER DRIVERS FOR PC
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	linux-i2c@vger.kernel.org
 L:	linux-i2c@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/i2c/busses/i2c-ali1535
 F:	Documentation/i2c/busses/i2c-ali1535
@@ -5008,7 +5009,7 @@ F:	drivers/i2c/busses/i2c-ismt.c
 F:	Documentation/i2c/busses/i2c-ismt
 F:	Documentation/i2c/busses/i2c-ismt
 
 
 I2C/SMBUS STUB DRIVER
 I2C/SMBUS STUB DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	linux-i2c@vger.kernel.org
 L:	linux-i2c@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	drivers/i2c/i2c-stub.c
 F:	drivers/i2c/i2c-stub.c
@@ -5035,7 +5036,7 @@ L:	linux-acpi@vger.kernel.org
 S:	Maintained
 S:	Maintained
 
 
 I2C-TAOS-EVM DRIVER
 I2C-TAOS-EVM DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	linux-i2c@vger.kernel.org
 L:	linux-i2c@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/i2c/busses/i2c-taos-evm
 F:	Documentation/i2c/busses/i2c-taos-evm
@@ -5564,8 +5565,8 @@ F:	include/uapi/linux/ip_vs.h
 F:	net/netfilter/ipvs/
 F:	net/netfilter/ipvs/
 
 
 IPWIRELESS DRIVER
 IPWIRELESS DRIVER
-M:	Jiri Kosina <jkosina@suse.cz>
-M:	David Sterba <dsterba@suse.cz>
+M:	Jiri Kosina <jkosina@suse.com>
+M:	David Sterba <dsterba@suse.com>
 S:	Odd Fixes
 S:	Odd Fixes
 F:	drivers/tty/ipwireless/
 F:	drivers/tty/ipwireless/
 
 
@@ -5685,7 +5686,7 @@ S:	Maintained
 F:	drivers/isdn/hardware/eicon/
 F:	drivers/isdn/hardware/eicon/
 
 
 IT87 HARDWARE MONITORING DRIVER
 IT87 HARDWARE MONITORING DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	lm-sensors@lm-sensors.org
 L:	lm-sensors@lm-sensors.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/hwmon/it87
 F:	Documentation/hwmon/it87
@@ -5752,7 +5753,7 @@ F:	include/uapi/linux/jffs2.h
 
 
 JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
 JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
 M:	Andrew Morton <akpm@linux-foundation.org>
 M:	Andrew Morton <akpm@linux-foundation.org>
-M:	Jan Kara <jack@suse.cz>
+M:	Jan Kara <jack@suse.com>
 L:	linux-ext4@vger.kernel.org
 L:	linux-ext4@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	fs/jbd/
 F:	fs/jbd/
@@ -5816,7 +5817,7 @@ S:	Maintained
 F:	fs/autofs4/
 F:	fs/autofs4/
 
 
 KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
 KERNEL BUILD + files below scripts/ (unless maintained elsewhere)
-M:	Michal Marek <mmarek@suse.cz>
+M:	Michal Marek <mmarek@suse.com>
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git for-next
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git rc-fixes
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild.git rc-fixes
 L:	linux-kbuild@vger.kernel.org
 L:	linux-kbuild@vger.kernel.org
@@ -5880,7 +5881,7 @@ F:	arch/x86/include/asm/svm.h
 F:	arch/x86/kvm/svm.c
 F:	arch/x86/kvm/svm.c
 
 
 KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
 KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
-M:	Alexander Graf <agraf@suse.de>
+M:	Alexander Graf <agraf@suse.com>
 L:	kvm-ppc@vger.kernel.org
 L:	kvm-ppc@vger.kernel.org
 W:	http://kvm.qumranet.com
 W:	http://kvm.qumranet.com
 T:	git git://github.com/agraf/linux-2.6.git
 T:	git git://github.com/agraf/linux-2.6.git
@@ -6037,7 +6038,7 @@ F:	drivers/leds/
 F:	include/linux/leds.h
 F:	include/linux/leds.h
 
 
 LEGACY EEPROM DRIVER
 LEGACY EEPROM DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 S:	Maintained
 S:	Maintained
 F:	Documentation/misc-devices/eeprom
 F:	Documentation/misc-devices/eeprom
 F:	drivers/misc/eeprom/eeprom.c
 F:	drivers/misc/eeprom/eeprom.c
@@ -6090,7 +6091,7 @@ F:	include/linux/ata.h
 F:	include/linux/libata.h
 F:	include/linux/libata.h
 
 
 LIBATA PATA ARASAN COMPACT FLASH CONTROLLER
 LIBATA PATA ARASAN COMPACT FLASH CONTROLLER
-M:	Viresh Kumar <viresh.linux@gmail.com>
+M:	Viresh Kumar <vireshk@kernel.org>
 L:	linux-ide@vger.kernel.org
 L:	linux-ide@vger.kernel.org
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
 S:	Maintained
 S:	Maintained
@@ -6251,8 +6252,8 @@ F:	drivers/platform/x86/hp_accel.c
 LIVE PATCHING
 LIVE PATCHING
 M:	Josh Poimboeuf <jpoimboe@redhat.com>
 M:	Josh Poimboeuf <jpoimboe@redhat.com>
 M:	Seth Jennings <sjenning@redhat.com>
 M:	Seth Jennings <sjenning@redhat.com>
-M:	Jiri Kosina <jkosina@suse.cz>
-M:	Vojtech Pavlik <vojtech@suse.cz>
+M:	Jiri Kosina <jkosina@suse.com>
+M:	Vojtech Pavlik <vojtech@suse.com>
 S:	Maintained
 S:	Maintained
 F:	kernel/livepatch/
 F:	kernel/livepatch/
 F:	include/linux/livepatch.h
 F:	include/linux/livepatch.h
@@ -6278,21 +6279,21 @@ S:	Maintained
 F:	drivers/hwmon/lm73.c
 F:	drivers/hwmon/lm73.c
 
 
 LM78 HARDWARE MONITOR DRIVER
 LM78 HARDWARE MONITOR DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	lm-sensors@lm-sensors.org
 L:	lm-sensors@lm-sensors.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/hwmon/lm78
 F:	Documentation/hwmon/lm78
 F:	drivers/hwmon/lm78.c
 F:	drivers/hwmon/lm78.c
 
 
 LM83 HARDWARE MONITOR DRIVER
 LM83 HARDWARE MONITOR DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	lm-sensors@lm-sensors.org
 L:	lm-sensors@lm-sensors.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/hwmon/lm83
 F:	Documentation/hwmon/lm83
 F:	drivers/hwmon/lm83.c
 F:	drivers/hwmon/lm83.c
 
 
 LM90 HARDWARE MONITOR DRIVER
 LM90 HARDWARE MONITOR DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	lm-sensors@lm-sensors.org
 L:	lm-sensors@lm-sensors.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/hwmon/lm90
 F:	Documentation/hwmon/lm90
@@ -7719,7 +7720,7 @@ S:	Maintained
 F:	drivers/char/pc8736x_gpio.c
 F:	drivers/char/pc8736x_gpio.c
 
 
 PC87427 HARDWARE MONITORING DRIVER
 PC87427 HARDWARE MONITORING DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	lm-sensors@lm-sensors.org
 L:	lm-sensors@lm-sensors.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/hwmon/pc87427
 F:	Documentation/hwmon/pc87427
@@ -7996,7 +7997,7 @@ S:	Maintained
 F:	drivers/pinctrl/samsung/
 F:	drivers/pinctrl/samsung/
 
 
 PIN CONTROLLER - ST SPEAR
 PIN CONTROLLER - ST SPEAR
-M:	Viresh Kumar <viresh.linux@gmail.com>
+M:	Viresh Kumar <vireshk@kernel.org>
 L:	spear-devel@list.st.com
 L:	spear-devel@list.st.com
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 W:	http://www.st.com/spear
 W:	http://www.st.com/spear
@@ -8004,7 +8005,7 @@ S:	Maintained
 F:	drivers/pinctrl/spear/
 F:	drivers/pinctrl/spear/
 
 
 PKTCDVD DRIVER
 PKTCDVD DRIVER
-M:	Jiri Kosina <jkosina@suse.cz>
+M:	Jiri Kosina <jkosina@suse.com>
 S:	Maintained
 S:	Maintained
 F:	drivers/block/pktcdvd.c
 F:	drivers/block/pktcdvd.c
 F:	include/linux/pktcdvd.h
 F:	include/linux/pktcdvd.h
@@ -8895,7 +8896,7 @@ S:	Maintained
 F:	drivers/tty/serial/
 F:	drivers/tty/serial/
 
 
 SYNOPSYS DESIGNWARE DMAC DRIVER
 SYNOPSYS DESIGNWARE DMAC DRIVER
-M:	Viresh Kumar <viresh.linux@gmail.com>
+M:	Viresh Kumar <vireshk@kernel.org>
 M:	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 M:	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 S:	Maintained
 S:	Maintained
 F:	include/linux/dma/dw.h
 F:	include/linux/dma/dw.h
@@ -9062,7 +9063,7 @@ S:	Maintained
 F:	drivers/mmc/host/sdhci-s3c*
 F:	drivers/mmc/host/sdhci-s3c*
 
 
 SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
 SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) ST SPEAR DRIVER
-M:	Viresh Kumar <viresh.linux@gmail.com>
+M:	Viresh Kumar <vireshk@kernel.org>
 L:	spear-devel@list.st.com
 L:	spear-devel@list.st.com
 L:	linux-mmc@vger.kernel.org
 L:	linux-mmc@vger.kernel.org
 S:	Maintained
 S:	Maintained
@@ -9424,7 +9425,7 @@ F:	Documentation/hwmon/sch5627
 F:	drivers/hwmon/sch5627.c
 F:	drivers/hwmon/sch5627.c
 
 
 SMSC47B397 HARDWARE MONITOR DRIVER
 SMSC47B397 HARDWARE MONITOR DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	lm-sensors@lm-sensors.org
 L:	lm-sensors@lm-sensors.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/hwmon/smsc47b397
 F:	Documentation/hwmon/smsc47b397
@@ -9473,7 +9474,7 @@ S:	Supported
 F:	drivers/media/pci/solo6x10/
 F:	drivers/media/pci/solo6x10/
 
 
 SOFTWARE RAID (Multiple Disks) SUPPORT
 SOFTWARE RAID (Multiple Disks) SUPPORT
-M:	Neil Brown <neilb@suse.de>
+M:	Neil Brown <neilb@suse.com>
 L:	linux-raid@vger.kernel.org
 L:	linux-raid@vger.kernel.org
 S:	Supported
 S:	Supported
 F:	drivers/md/
 F:	drivers/md/
@@ -9516,7 +9517,7 @@ F:	drivers/memstick/core/ms_block.*
 
 
 SOUND
 SOUND
 M:	Jaroslav Kysela <perex@perex.cz>
 M:	Jaroslav Kysela <perex@perex.cz>
-M:	Takashi Iwai <tiwai@suse.de>
+M:	Takashi Iwai <tiwai@suse.com>
 L:	alsa-devel@alsa-project.org (moderated for non-subscribers)
 L:	alsa-devel@alsa-project.org (moderated for non-subscribers)
 W:	http://www.alsa-project.org/
 W:	http://www.alsa-project.org/
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
@@ -9600,7 +9601,7 @@ S:	Maintained
 F:	include/linux/compiler.h
 F:	include/linux/compiler.h
 
 
 SPEAR PLATFORM SUPPORT
 SPEAR PLATFORM SUPPORT
-M:	Viresh Kumar <viresh.linux@gmail.com>
+M:	Viresh Kumar <vireshk@kernel.org>
 M:	Shiraz Hashim <shiraz.linux.kernel@gmail.com>
 M:	Shiraz Hashim <shiraz.linux.kernel@gmail.com>
 L:	spear-devel@list.st.com
 L:	spear-devel@list.st.com
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -9609,7 +9610,7 @@ S:	Maintained
 F:	arch/arm/mach-spear/
 F:	arch/arm/mach-spear/
 
 
 SPEAR CLOCK FRAMEWORK SUPPORT
 SPEAR CLOCK FRAMEWORK SUPPORT
-M:	Viresh Kumar <viresh.linux@gmail.com>
+M:	Viresh Kumar <vireshk@kernel.org>
 L:	spear-devel@list.st.com
 L:	spear-devel@list.st.com
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 W:	http://www.st.com/spear
 W:	http://www.st.com/spear
@@ -10399,7 +10400,7 @@ K:	^Subject:.*(?i)trivial
 
 
 TTY LAYER
 TTY LAYER
 M:	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 M:	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-M:	Jiri Slaby <jslaby@suse.cz>
+M:	Jiri Slaby <jslaby@suse.com>
 S:	Supported
 S:	Supported
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
 F:	Documentation/serial/
 F:	Documentation/serial/
@@ -10473,7 +10474,7 @@ F:	arch/m68k/*/*_no.*
 F:	arch/m68k/include/asm/*_no.*
 F:	arch/m68k/include/asm/*_no.*
 
 
 UDF FILESYSTEM
 UDF FILESYSTEM
-M:	Jan Kara <jack@suse.cz>
+M:	Jan Kara <jack@suse.com>
 S:	Maintained
 S:	Maintained
 F:	Documentation/filesystems/udf.txt
 F:	Documentation/filesystems/udf.txt
 F:	fs/udf/
 F:	fs/udf/
@@ -10616,7 +10617,7 @@ F:	drivers/usb/gadget/
 F:	include/linux/usb/gadget*
 F:	include/linux/usb/gadget*
 
 
 USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
 USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
-M:	Jiri Kosina <jkosina@suse.cz>
+M:	Jiri Kosina <jkosina@suse.com>
 L:	linux-usb@vger.kernel.org
 L:	linux-usb@vger.kernel.org
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid.git
 S:	Maintained
 S:	Maintained
@@ -10741,7 +10742,7 @@ S:	Maintained
 F:	drivers/usb/host/uhci*
 F:	drivers/usb/host/uhci*
 
 
 USB "USBNET" DRIVER FRAMEWORK
 USB "USBNET" DRIVER FRAMEWORK
-M:	Oliver Neukum <oneukum@suse.de>
+M:	Oliver Neukum <oneukum@suse.com>
 L:	netdev@vger.kernel.org
 L:	netdev@vger.kernel.org
 W:	http://www.linux-usb.org/usbnet
 W:	http://www.linux-usb.org/usbnet
 S:	Maintained
 S:	Maintained
@@ -11068,7 +11069,7 @@ F:	Documentation/hwmon/w83793
 F:	drivers/hwmon/w83793.c
 F:	drivers/hwmon/w83793.c
 
 
 W83795 HARDWARE MONITORING DRIVER
 W83795 HARDWARE MONITORING DRIVER
-M:	Jean Delvare <jdelvare@suse.de>
+M:	Jean Delvare <jdelvare@suse.com>
 L:	lm-sensors@lm-sensors.org
 L:	lm-sensors@lm-sensors.org
 S:	Maintained
 S:	Maintained
 F:	drivers/hwmon/w83795.c
 F:	drivers/hwmon/w83795.c

+ 6 - 5
Makefile

@@ -1,7 +1,7 @@
 VERSION = 4
 VERSION = 4
 PATCHLEVEL = 2
 PATCHLEVEL = 2
 SUBLEVEL = 0
 SUBLEVEL = 0
-EXTRAVERSION = -rc2
+EXTRAVERSION = -rc3
 NAME = Hurr durr I'ma sheep
 NAME = Hurr durr I'ma sheep
 
 
 # *DOCUMENTATION*
 # *DOCUMENTATION*
@@ -780,10 +780,11 @@ endif
 include scripts/Makefile.kasan
 include scripts/Makefile.kasan
 include scripts/Makefile.extrawarn
 include scripts/Makefile.extrawarn
 
 
-# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
-KBUILD_CPPFLAGS += $(KCPPFLAGS)
-KBUILD_AFLAGS += $(KAFLAGS)
-KBUILD_CFLAGS += $(KCFLAGS)
+# Add any arch overrides and user supplied CPPFLAGS, AFLAGS and CFLAGS as the
+# last assignments
+KBUILD_CPPFLAGS += $(ARCH_CPPFLAGS) $(KCPPFLAGS)
+KBUILD_AFLAGS   += $(ARCH_AFLAGS)   $(KAFLAGS)
+KBUILD_CFLAGS   += $(ARCH_CFLAGS)   $(KCFLAGS)
 
 
 # Use --build-id when available.
 # Use --build-id when available.
 LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\
 LDFLAGS_BUILD_ID = $(patsubst -Wl$(comma)%,%,\

+ 4 - 0
arch/Kconfig

@@ -221,6 +221,10 @@ config ARCH_TASK_STRUCT_ALLOCATOR
 config ARCH_THREAD_INFO_ALLOCATOR
 config ARCH_THREAD_INFO_ALLOCATOR
 	bool
 	bool
 
 
+# Select if arch wants to size task_struct dynamically via arch_task_struct_size:
+config ARCH_WANTS_DYNAMIC_TASK_STRUCT
+	bool
+
 config HAVE_REGS_AND_STACK_ACCESS_API
 config HAVE_REGS_AND_STACK_ACCESS_API
 	bool
 	bool
 	help
 	help

+ 1 - 0
arch/alpha/include/asm/Kbuild

@@ -5,6 +5,7 @@ generic-y += cputime.h
 generic-y += exec.h
 generic-y += exec.h
 generic-y += irq_work.h
 generic-y += irq_work.h
 generic-y += mcs_spinlock.h
 generic-y += mcs_spinlock.h
+generic-y += mm-arch-hooks.h
 generic-y += preempt.h
 generic-y += preempt.h
 generic-y += sections.h
 generic-y += sections.h
 generic-y += trace_clock.h
 generic-y += trace_clock.h

+ 0 - 15
arch/alpha/include/asm/mm-arch-hooks.h

@@ -1,15 +0,0 @@
-/*
- * Architecture specific mm hooks
- *
- * Copyright (C) 2015, IBM Corporation
- * Author: Laurent Dufour <ldufour@linux.vnet.ibm.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef _ASM_ALPHA_MM_ARCH_HOOKS_H
-#define _ASM_ALPHA_MM_ARCH_HOOKS_H
-
-#endif /* _ASM_ALPHA_MM_ARCH_HOOKS_H */

+ 2 - 1
arch/arc/Kconfig

@@ -115,6 +115,7 @@ if ISA_ARCOMPACT
 
 
 config ARC_CPU_750D
 config ARC_CPU_750D
 	bool "ARC750D"
 	bool "ARC750D"
+	select ARC_CANT_LLSC
 	help
 	help
 	  Support for ARC750 core
 	  Support for ARC750 core
 
 
@@ -362,7 +363,7 @@ config ARC_CANT_LLSC
 config ARC_HAS_LLSC
 config ARC_HAS_LLSC
 	bool "Insn: LLOCK/SCOND (efficient atomic ops)"
 	bool "Insn: LLOCK/SCOND (efficient atomic ops)"
 	default y
 	default y
-	depends on !ARC_CPU_750D && !ARC_CANT_LLSC
+	depends on !ARC_CANT_LLSC
 
 
 config ARC_HAS_SWAPE
 config ARC_HAS_SWAPE
 	bool "Insn: SWAPE (endian-swap)"
 	bool "Insn: SWAPE (endian-swap)"

+ 2 - 1
arch/arc/Makefile

@@ -49,7 +49,8 @@ endif
 
 
 ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
 ifndef CONFIG_CC_OPTIMIZE_FOR_SIZE
 # Generic build system uses -O2, we want -O3
 # Generic build system uses -O2, we want -O3
-cflags-y  += -O3
+# Note: No need to add to cflags-y as that happens anyways
+ARCH_CFLAGS += -O3
 endif
 endif
 
 
 # small data is default for elf32 tool-chain. If not usable, disable it
 # small data is default for elf32 tool-chain. If not usable, disable it

+ 1 - 1
arch/arc/boot/dts/axc003.dtsi

@@ -12,7 +12,7 @@
 
 
 / {
 / {
 	compatible = "snps,arc";
 	compatible = "snps,arc";
-	clock-frequency = <75000000>;
+	clock-frequency = <90000000>;
 	#address-cells = <1>;
 	#address-cells = <1>;
 	#size-cells = <1>;
 	#size-cells = <1>;
 
 

+ 1 - 1
arch/arc/boot/dts/axc003_idu.dtsi

@@ -12,7 +12,7 @@
 
 
 / {
 / {
 	compatible = "snps,arc";
 	compatible = "snps,arc";
-	clock-frequency = <75000000>;
+	clock-frequency = <90000000>;
 	#address-cells = <1>;
 	#address-cells = <1>;
 	#size-cells = <1>;
 	#size-cells = <1>;
 
 

+ 1 - 0
arch/arc/include/asm/Kbuild

@@ -22,6 +22,7 @@ generic-y += kvm_para.h
 generic-y += local.h
 generic-y += local.h
 generic-y += local64.h
 generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += mcs_spinlock.h
+generic-y += mm-arch-hooks.h
 generic-y += mman.h
 generic-y += mman.h
 generic-y += msgbuf.h
 generic-y += msgbuf.h
 generic-y += param.h
 generic-y += param.h

+ 9 - 26
arch/arc/include/asm/bitops.h

@@ -50,8 +50,7 @@ static inline void op##_bit(unsigned long nr, volatile unsigned long *m)\
 	 * done for const @nr, but no code is generated due to gcc	\
 	 * done for const @nr, but no code is generated due to gcc	\
 	 * const prop.							\
 	 * const prop.							\
 	 */								\
 	 */								\
-	if (__builtin_constant_p(nr))					\
-		nr &= 0x1f;						\
+	nr &= 0x1f;							\
 									\
 									\
 	__asm__ __volatile__(						\
 	__asm__ __volatile__(						\
 	"1:	llock       %0, [%1]		\n"			\
 	"1:	llock       %0, [%1]		\n"			\
@@ -82,8 +81,7 @@ static inline int test_and_##op##_bit(unsigned long nr, volatile unsigned long *
 									\
 									\
 	m += nr >> 5;							\
 	m += nr >> 5;							\
 									\
 									\
-	if (__builtin_constant_p(nr))					\
-		nr &= 0x1f;						\
+	nr &= 0x1f;							\
 									\
 									\
 	/*								\
 	/*								\
 	 * Explicit full memory barrier needed before/after as		\
 	 * Explicit full memory barrier needed before/after as		\
@@ -129,16 +127,13 @@ static inline void op##_bit(unsigned long nr, volatile unsigned long *m)\
 	unsigned long temp, flags;					\
 	unsigned long temp, flags;					\
 	m += nr >> 5;							\
 	m += nr >> 5;							\
 									\
 									\
-	if (__builtin_constant_p(nr))					\
-		nr &= 0x1f;						\
-									\
 	/*								\
 	/*								\
 	 * spin lock/unlock provide the needed smp_mb() before/after	\
 	 * spin lock/unlock provide the needed smp_mb() before/after	\
 	 */								\
 	 */								\
 	bitops_lock(flags);						\
 	bitops_lock(flags);						\
 									\
 									\
 	temp = *m;							\
 	temp = *m;							\
-	*m = temp c_op (1UL << nr);					\
+	*m = temp c_op (1UL << (nr & 0x1f));					\
 									\
 									\
 	bitops_unlock(flags);						\
 	bitops_unlock(flags);						\
 }
 }
@@ -149,17 +144,14 @@ static inline int test_and_##op##_bit(unsigned long nr, volatile unsigned long *
 	unsigned long old, flags;					\
 	unsigned long old, flags;					\
 	m += nr >> 5;							\
 	m += nr >> 5;							\
 									\
 									\
-	if (__builtin_constant_p(nr))					\
-		nr &= 0x1f;						\
-									\
 	bitops_lock(flags);						\
 	bitops_lock(flags);						\
 									\
 									\
 	old = *m;							\
 	old = *m;							\
-	*m = old c_op (1 << nr);					\
+	*m = old c_op (1UL << (nr & 0x1f));				\
 									\
 									\
 	bitops_unlock(flags);						\
 	bitops_unlock(flags);						\
 									\
 									\
-	return (old & (1 << nr)) != 0;					\
+	return (old & (1UL << (nr & 0x1f))) != 0;			\
 }
 }
 
 
 #endif /* CONFIG_ARC_HAS_LLSC */
 #endif /* CONFIG_ARC_HAS_LLSC */
@@ -174,11 +166,8 @@ static inline void __##op##_bit(unsigned long nr, volatile unsigned long *m)	\
 	unsigned long temp;						\
 	unsigned long temp;						\
 	m += nr >> 5;							\
 	m += nr >> 5;							\
 									\
 									\
-	if (__builtin_constant_p(nr))					\
-		nr &= 0x1f;						\
-									\
 	temp = *m;							\
 	temp = *m;							\
-	*m = temp c_op (1UL << nr);					\
+	*m = temp c_op (1UL << (nr & 0x1f));				\
 }
 }
 
 
 #define __TEST_N_BIT_OP(op, c_op, asm_op)				\
 #define __TEST_N_BIT_OP(op, c_op, asm_op)				\
@@ -187,13 +176,10 @@ static inline int __test_and_##op##_bit(unsigned long nr, volatile unsigned long
 	unsigned long old;						\
 	unsigned long old;						\
 	m += nr >> 5;							\
 	m += nr >> 5;							\
 									\
 									\
-	if (__builtin_constant_p(nr))					\
-		nr &= 0x1f;						\
-									\
 	old = *m;							\
 	old = *m;							\
-	*m = old c_op (1 << nr);					\
+	*m = old c_op (1UL << (nr & 0x1f));				\
 									\
 									\
-	return (old & (1 << nr)) != 0;					\
+	return (old & (1UL << (nr & 0x1f))) != 0;			\
 }
 }
 
 
 #define BIT_OPS(op, c_op, asm_op)					\
 #define BIT_OPS(op, c_op, asm_op)					\
@@ -224,10 +210,7 @@ test_bit(unsigned int nr, const volatile unsigned long *addr)
 
 
 	addr += nr >> 5;
 	addr += nr >> 5;
 
 
-	if (__builtin_constant_p(nr))
-		nr &= 0x1f;
-
-	mask = 1 << nr;
+	mask = 1UL << (nr & 0x1f);
 
 
 	return ((mask & *addr) != 0);
 	return ((mask & *addr) != 0);
 }
 }

+ 42 - 6
arch/arc/include/asm/futex.h

@@ -16,12 +16,40 @@
 #include <linux/uaccess.h>
 #include <linux/uaccess.h>
 #include <asm/errno.h>
 #include <asm/errno.h>
 
 
+#ifdef CONFIG_ARC_HAS_LLSC
+
+#define __futex_atomic_op(insn, ret, oldval, uaddr, oparg)\
+							\
+	__asm__ __volatile__(				\
+	"1:	llock	%1, [%2]		\n"	\
+		insn				"\n"	\
+	"2:	scond	%0, [%2]		\n"	\
+	"	bnz	1b			\n"	\
+	"	mov %0, 0			\n"	\
+	"3:					\n"	\
+	"	.section .fixup,\"ax\"		\n"	\
+	"	.align  4			\n"	\
+	"4:	mov %0, %4			\n"	\
+	"	b   3b				\n"	\
+	"	.previous			\n"	\
+	"	.section __ex_table,\"a\"	\n"	\
+	"	.align  4			\n"	\
+	"	.word   1b, 4b			\n"	\
+	"	.word   2b, 4b			\n"	\
+	"	.previous			\n"	\
+							\
+	: "=&r" (ret), "=&r" (oldval)			\
+	: "r" (uaddr), "r" (oparg), "ir" (-EFAULT)	\
+	: "cc", "memory")
+
+#else	/* !CONFIG_ARC_HAS_LLSC */
+
 #define __futex_atomic_op(insn, ret, oldval, uaddr, oparg)\
 #define __futex_atomic_op(insn, ret, oldval, uaddr, oparg)\
 							\
 							\
 	__asm__ __volatile__(				\
 	__asm__ __volatile__(				\
-	"1:	ld  %1, [%2]			\n"	\
+	"1:	ld	%1, [%2]		\n"	\
 		insn				"\n"	\
 		insn				"\n"	\
-	"2:	st  %0, [%2]			\n"	\
+	"2:	st	%0, [%2]		\n"	\
 	"	mov %0, 0			\n"	\
 	"	mov %0, 0			\n"	\
 	"3:					\n"	\
 	"3:					\n"	\
 	"	.section .fixup,\"ax\"		\n"	\
 	"	.section .fixup,\"ax\"		\n"	\
@@ -39,6 +67,8 @@
 	: "r" (uaddr), "r" (oparg), "ir" (-EFAULT)	\
 	: "r" (uaddr), "r" (oparg), "ir" (-EFAULT)	\
 	: "cc", "memory")
 	: "cc", "memory")
 
 
+#endif
+
 static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
 static inline int futex_atomic_op_inuser(int encoded_op, u32 __user *uaddr)
 {
 {
 	int op = (encoded_op >> 28) & 7;
 	int op = (encoded_op >> 28) & 7;
@@ -123,11 +153,17 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, u32 oldval,
 
 
 	pagefault_disable();
 	pagefault_disable();
 
 
-	/* TBD : can use llock/scond */
 	__asm__ __volatile__(
 	__asm__ __volatile__(
-	"1:	ld    %0, [%3]	\n"
-	"	brne  %0, %1, 3f	\n"
-	"2:	st    %2, [%3]	\n"
+#ifdef CONFIG_ARC_HAS_LLSC
+	"1:	llock	%0, [%3]		\n"
+	"	brne	%0, %1, 3f		\n"
+	"2:	scond	%2, [%3]		\n"
+	"	bnz	1b			\n"
+#else
+	"1:	ld	%0, [%3]		\n"
+	"	brne	%0, %1, 3f		\n"
+	"2:	st	%2, [%3]		\n"
+#endif
 	"3:	\n"
 	"3:	\n"
 	"	.section .fixup,\"ax\"	\n"
 	"	.section .fixup,\"ax\"	\n"
 	"4:	mov %0, %4	\n"
 	"4:	mov %0, %4	\n"

+ 0 - 15
arch/arc/include/asm/mm-arch-hooks.h

@@ -1,15 +0,0 @@
-/*
- * Architecture specific mm hooks
- *
- * Copyright (C) 2015, IBM Corporation
- * Author: Laurent Dufour <ldufour@linux.vnet.ibm.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef _ASM_ARC_MM_ARCH_HOOKS_H
-#define _ASM_ARC_MM_ARCH_HOOKS_H
-
-#endif /* _ASM_ARC_MM_ARCH_HOOKS_H */

+ 1 - 1
arch/arc/include/asm/ptrace.h

@@ -106,7 +106,7 @@ struct callee_regs {
 	long r25, r24, r23, r22, r21, r20, r19, r18, r17, r16, r15, r14, r13;
 	long r25, r24, r23, r22, r21, r20, r19, r18, r17, r16, r15, r14, r13;
 };
 };
 
 
-#define instruction_pointer(regs)	((regs)->ret)
+#define instruction_pointer(regs)	(unsigned long)((regs)->ret)
 #define profile_pc(regs)		instruction_pointer(regs)
 #define profile_pc(regs)		instruction_pointer(regs)
 
 
 /* return 1 if user mode or 0 if kernel mode */
 /* return 1 if user mode or 0 if kernel mode */

+ 0 - 1
arch/arc/kernel/intc-arcv2.c

@@ -12,7 +12,6 @@
 #include <linux/of.h>
 #include <linux/of.h>
 #include <linux/irqdomain.h>
 #include <linux/irqdomain.h>
 #include <linux/irqchip.h>
 #include <linux/irqchip.h>
-#include "../../drivers/irqchip/irqchip.h"
 #include <asm/irq.h>
 #include <asm/irq.h>
 
 
 /*
 /*

+ 0 - 1
arch/arc/kernel/intc-compact.c

@@ -12,7 +12,6 @@
 #include <linux/of.h>
 #include <linux/of.h>
 #include <linux/irqdomain.h>
 #include <linux/irqdomain.h>
 #include <linux/irqchip.h>
 #include <linux/irqchip.h>
-#include "../../drivers/irqchip/irqchip.h"
 #include <asm/irq.h>
 #include <asm/irq.h>
 
 
 /*
 /*

+ 19 - 4
arch/arc/kernel/mcip.c

@@ -175,7 +175,6 @@ void mcip_init_early_smp(void)
 #include <linux/irqchip.h>
 #include <linux/irqchip.h>
 #include <linux/of.h>
 #include <linux/of.h>
 #include <linux/of_irq.h>
 #include <linux/of_irq.h>
-#include "../../drivers/irqchip/irqchip.h"
 
 
 /*
 /*
  * Set the DEST for @cmn_irq to @cpu_mask (1 bit per core)
  * Set the DEST for @cmn_irq to @cpu_mask (1 bit per core)
@@ -218,11 +217,28 @@ static void idu_irq_unmask(struct irq_data *data)
 	raw_spin_unlock_irqrestore(&mcip_lock, flags);
 	raw_spin_unlock_irqrestore(&mcip_lock, flags);
 }
 }
 
 
+#ifdef CONFIG_SMP
 static int
 static int
-idu_irq_set_affinity(struct irq_data *d, const struct cpumask *cpumask, bool f)
+idu_irq_set_affinity(struct irq_data *data, const struct cpumask *cpumask,
+		     bool force)
 {
 {
+	unsigned long flags;
+	cpumask_t online;
+
+	/* errout if no online cpu per @cpumask */
+	if (!cpumask_and(&online, cpumask, cpu_online_mask))
+		return -EINVAL;
+
+	raw_spin_lock_irqsave(&mcip_lock, flags);
+
+	idu_set_dest(data->hwirq, cpumask_bits(&online)[0]);
+	idu_set_mode(data->hwirq, IDU_M_TRIG_LEVEL, IDU_M_DISTRI_RR);
+
+	raw_spin_unlock_irqrestore(&mcip_lock, flags);
+
 	return IRQ_SET_MASK_OK;
 	return IRQ_SET_MASK_OK;
 }
 }
+#endif
 
 
 static struct irq_chip idu_irq_chip = {
 static struct irq_chip idu_irq_chip = {
 	.name			= "MCIP IDU Intc",
 	.name			= "MCIP IDU Intc",
@@ -330,8 +346,7 @@ idu_of_init(struct device_node *intc, struct device_node *parent)
 		if (!i)
 		if (!i)
 			idu_first_irq = irq;
 			idu_first_irq = irq;
 
 
-		irq_set_handler_data(irq, domain);
-		irq_set_chained_handler(irq, idu_cascade_isr);
+		irq_set_chained_handler_and_data(irq, idu_cascade_isr, domain);
 	}
 	}
 
 
 	__mcip_cmd(CMD_IDU_ENABLE, 0);
 	__mcip_cmd(CMD_IDU_ENABLE, 0);

+ 10 - 5
arch/arc/kernel/setup.c

@@ -142,17 +142,22 @@ static void read_arc_build_cfg_regs(void)
 }
 }
 
 
 static const struct cpuinfo_data arc_cpu_tbl[] = {
 static const struct cpuinfo_data arc_cpu_tbl[] = {
+#ifdef CONFIG_ISA_ARCOMPACT
 	{ {0x20, "ARC 600"      }, 0x2F},
 	{ {0x20, "ARC 600"      }, 0x2F},
 	{ {0x30, "ARC 700"      }, 0x33},
 	{ {0x30, "ARC 700"      }, 0x33},
 	{ {0x34, "ARC 700 R4.10"}, 0x34},
 	{ {0x34, "ARC 700 R4.10"}, 0x34},
 	{ {0x35, "ARC 700 R4.11"}, 0x35},
 	{ {0x35, "ARC 700 R4.11"}, 0x35},
-	{ {0x50, "ARC HS38"	}, 0x51},
+#else
+	{ {0x50, "ARC HS38 R2.0"}, 0x51},
+	{ {0x52, "ARC HS38 R2.1"}, 0x52},
+#endif
 	{ {0x00, NULL		} }
 	{ {0x00, NULL		} }
 };
 };
 
 
-#define IS_AVAIL1(v, str)	((v) ? str : "")
-#define IS_USED(cfg)		(IS_ENABLED(cfg) ? "" : "(not used) ")
-#define IS_AVAIL2(v, str, cfg)  IS_AVAIL1(v, str), IS_AVAIL1(v, IS_USED(cfg))
+#define IS_AVAIL1(v, s)		((v) ? s : "")
+#define IS_USED_RUN(v)		((v) ? "" : "(not used) ")
+#define IS_USED_CFG(cfg)	IS_USED_RUN(IS_ENABLED(cfg))
+#define IS_AVAIL2(v, s, cfg)	IS_AVAIL1(v, s), IS_AVAIL1(v, IS_USED_CFG(cfg))
 
 
 static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
 static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
 {
 {
@@ -226,7 +231,7 @@ static char *arc_cpu_mumbojumbo(int cpu_id, char *buf, int len)
 			n += scnprintf(buf + n, len - n, "mpy[opt %d] ", opt);
 			n += scnprintf(buf + n, len - n, "mpy[opt %d] ", opt);
 		}
 		}
 		n += scnprintf(buf + n, len - n, "%s",
 		n += scnprintf(buf + n, len - n, "%s",
-			       IS_USED(CONFIG_ARC_HAS_HW_MPY));
+			       IS_USED_CFG(CONFIG_ARC_HAS_HW_MPY));
 	}
 	}
 
 
 	n += scnprintf(buf + n, len - n, "%s%s%s%s%s%s%s%s\n",
 	n += scnprintf(buf + n, len - n, "%s%s%s%s%s%s%s%s\n",

+ 0 - 1
arch/arc/kernel/troubleshoot.c

@@ -58,7 +58,6 @@ static void show_callee_regs(struct callee_regs *cregs)
 
 
 static void print_task_path_n_nm(struct task_struct *tsk, char *buf)
 static void print_task_path_n_nm(struct task_struct *tsk, char *buf)
 {
 {
-	struct path path;
 	char *path_nm = NULL;
 	char *path_nm = NULL;
 	struct mm_struct *mm;
 	struct mm_struct *mm;
 	struct file *exe_file;
 	struct file *exe_file;

+ 10 - 2
arch/arc/mm/cache.c

@@ -468,10 +468,18 @@ static void __ic_line_inv_vaddr(unsigned long paddr, unsigned long vaddr,
 noinline void slc_op(unsigned long paddr, unsigned long sz, const int op)
 noinline void slc_op(unsigned long paddr, unsigned long sz, const int op)
 {
 {
 #ifdef CONFIG_ISA_ARCV2
 #ifdef CONFIG_ISA_ARCV2
+	/*
+	 * SLC is shared between all cores and concurrent aux operations from
+	 * multiple cores need to be serialized using a spinlock
+	 * A concurrent operation can be silently ignored and/or the old/new
+	 * operation can remain incomplete forever (lockup in SLC_CTRL_BUSY loop
+	 * below)
+	 */
+	static DEFINE_SPINLOCK(lock);
 	unsigned long flags;
 	unsigned long flags;
 	unsigned int ctrl;
 	unsigned int ctrl;
 
 
-	local_irq_save(flags);
+	spin_lock_irqsave(&lock, flags);
 
 
 	/*
 	/*
 	 * The Region Flush operation is specified by CTRL.RGN_OP[11..9]
 	 * The Region Flush operation is specified by CTRL.RGN_OP[11..9]
@@ -504,7 +512,7 @@ noinline void slc_op(unsigned long paddr, unsigned long sz, const int op)
 
 
 	while (read_aux_reg(ARC_REG_SLC_CTRL) & SLC_CTRL_BUSY);
 	while (read_aux_reg(ARC_REG_SLC_CTRL) & SLC_CTRL_BUSY);
 
 
-	local_irq_restore(flags);
+	spin_unlock_irqrestore(&lock, flags);
 #endif
 #endif
 }
 }
 
 

+ 2 - 2
arch/arc/mm/dma.c

@@ -60,8 +60,8 @@ void *dma_alloc_coherent(struct device *dev, size_t size,
 
 
 	/* This is kernel Virtual address (0x7000_0000 based) */
 	/* This is kernel Virtual address (0x7000_0000 based) */
 	kvaddr = ioremap_nocache((unsigned long)paddr, size);
 	kvaddr = ioremap_nocache((unsigned long)paddr, size);
-	if (kvaddr != NULL)
-		memset(kvaddr, 0, size);
+	if (kvaddr == NULL)
+		return NULL;
 
 
 	/* This is bus address, platform dependent */
 	/* This is bus address, platform dependent */
 	*dma_handle = (dma_addr_t)paddr;
 	*dma_handle = (dma_addr_t)paddr;

+ 13 - 3
arch/arm/boot/dts/am335x-pepper.dts

@@ -74,6 +74,7 @@
 	audio_codec: tlv320aic3106@1b {
 	audio_codec: tlv320aic3106@1b {
 		compatible = "ti,tlv320aic3106";
 		compatible = "ti,tlv320aic3106";
 		reg = <0x1b>;
 		reg = <0x1b>;
+		ai3x-micbias-vg = <0x2>;
 	};
 	};
 
 
 	accel: lis331dlh@1d {
 	accel: lis331dlh@1d {
@@ -153,7 +154,7 @@
 	ti,audio-routing =
 	ti,audio-routing =
 		"Headphone Jack",	"HPLOUT",
 		"Headphone Jack",	"HPLOUT",
 		"Headphone Jack",	"HPROUT",
 		"Headphone Jack",	"HPROUT",
-		"LINE1L",		"Line In";
+		"MIC3L",		"Mic3L Switch";
 };
 };
 
 
 &mcasp0 {
 &mcasp0 {
@@ -438,41 +439,50 @@
 	regulators {
 	regulators {
 		dcdc1_reg: regulator@0 {
 		dcdc1_reg: regulator@0 {
 			/* VDD_1V8 system supply */
 			/* VDD_1V8 system supply */
+			regulator-always-on;
 		};
 		};
 
 
 		dcdc2_reg: regulator@1 {
 		dcdc2_reg: regulator@1 {
 			/* VDD_CORE voltage limits 0.95V - 1.26V with +/-4% tolerance */
 			/* VDD_CORE voltage limits 0.95V - 1.26V with +/-4% tolerance */
 			regulator-name = "vdd_core";
 			regulator-name = "vdd_core";
 			regulator-min-microvolt = <925000>;
 			regulator-min-microvolt = <925000>;
-			regulator-max-microvolt = <1325000>;
+			regulator-max-microvolt = <1150000>;
 			regulator-boot-on;
 			regulator-boot-on;
+			regulator-always-on;
 		};
 		};
 
 
 		dcdc3_reg: regulator@2 {
 		dcdc3_reg: regulator@2 {
 			/* VDD_MPU voltage limits 0.95V - 1.1V with +/-4% tolerance */
 			/* VDD_MPU voltage limits 0.95V - 1.1V with +/-4% tolerance */
 			regulator-name = "vdd_mpu";
 			regulator-name = "vdd_mpu";
 			regulator-min-microvolt = <925000>;
 			regulator-min-microvolt = <925000>;
-			regulator-max-microvolt = <1150000>;
+			regulator-max-microvolt = <1325000>;
 			regulator-boot-on;
 			regulator-boot-on;
+			regulator-always-on;
 		};
 		};
 
 
 		ldo1_reg: regulator@3 {
 		ldo1_reg: regulator@3 {
 			/* VRTC 1.8V always-on supply */
 			/* VRTC 1.8V always-on supply */
+			regulator-name = "vrtc,vdds";
 			regulator-always-on;
 			regulator-always-on;
 		};
 		};
 
 
 		ldo2_reg: regulator@4 {
 		ldo2_reg: regulator@4 {
 			/* 3.3V rail */
 			/* 3.3V rail */
+			regulator-name = "vdd_3v3aux";
+			regulator-always-on;
 		};
 		};
 
 
 		ldo3_reg: regulator@5 {
 		ldo3_reg: regulator@5 {
 			/* VDD_3V3A 3.3V rail */
 			/* VDD_3V3A 3.3V rail */
+			regulator-name = "vdd_3v3a";
 			regulator-min-microvolt = <3300000>;
 			regulator-min-microvolt = <3300000>;
 			regulator-max-microvolt = <3300000>;
 			regulator-max-microvolt = <3300000>;
 		};
 		};
 
 
 		ldo4_reg: regulator@6 {
 		ldo4_reg: regulator@6 {
 			/* VDD_3V3B 3.3V rail */
 			/* VDD_3V3B 3.3V rail */
+			regulator-name = "vdd_3v3b";
+			regulator-always-on;
 		};
 		};
 	};
 	};
 };
 };

+ 4 - 0
arch/arm/boot/dts/cros-ec-keyboard.dtsi

@@ -22,6 +22,7 @@
 			MATRIX_KEY(0x00, 0x02, KEY_F1)
 			MATRIX_KEY(0x00, 0x02, KEY_F1)
 			MATRIX_KEY(0x00, 0x03, KEY_B)
 			MATRIX_KEY(0x00, 0x03, KEY_B)
 			MATRIX_KEY(0x00, 0x04, KEY_F10)
 			MATRIX_KEY(0x00, 0x04, KEY_F10)
+			MATRIX_KEY(0x00, 0x05, KEY_RO)
 			MATRIX_KEY(0x00, 0x06, KEY_N)
 			MATRIX_KEY(0x00, 0x06, KEY_N)
 			MATRIX_KEY(0x00, 0x08, KEY_EQUAL)
 			MATRIX_KEY(0x00, 0x08, KEY_EQUAL)
 			MATRIX_KEY(0x00, 0x0a, KEY_RIGHTALT)
 			MATRIX_KEY(0x00, 0x0a, KEY_RIGHTALT)
@@ -34,6 +35,7 @@
 			MATRIX_KEY(0x01, 0x08, KEY_APOSTROPHE)
 			MATRIX_KEY(0x01, 0x08, KEY_APOSTROPHE)
 			MATRIX_KEY(0x01, 0x09, KEY_F9)
 			MATRIX_KEY(0x01, 0x09, KEY_F9)
 			MATRIX_KEY(0x01, 0x0b, KEY_BACKSPACE)
 			MATRIX_KEY(0x01, 0x0b, KEY_BACKSPACE)
+			MATRIX_KEY(0x01, 0x0c, KEY_HENKAN)
 
 
 			MATRIX_KEY(0x02, 0x00, KEY_LEFTCTRL)
 			MATRIX_KEY(0x02, 0x00, KEY_LEFTCTRL)
 			MATRIX_KEY(0x02, 0x01, KEY_TAB)
 			MATRIX_KEY(0x02, 0x01, KEY_TAB)
@@ -45,6 +47,7 @@
 			MATRIX_KEY(0x02, 0x07, KEY_102ND)
 			MATRIX_KEY(0x02, 0x07, KEY_102ND)
 			MATRIX_KEY(0x02, 0x08, KEY_LEFTBRACE)
 			MATRIX_KEY(0x02, 0x08, KEY_LEFTBRACE)
 			MATRIX_KEY(0x02, 0x09, KEY_F8)
 			MATRIX_KEY(0x02, 0x09, KEY_F8)
+			MATRIX_KEY(0x02, 0x0a, KEY_YEN)
 
 
 			MATRIX_KEY(0x03, 0x01, KEY_GRAVE)
 			MATRIX_KEY(0x03, 0x01, KEY_GRAVE)
 			MATRIX_KEY(0x03, 0x02, KEY_F2)
 			MATRIX_KEY(0x03, 0x02, KEY_F2)
@@ -53,6 +56,7 @@
 			MATRIX_KEY(0x03, 0x06, KEY_6)
 			MATRIX_KEY(0x03, 0x06, KEY_6)
 			MATRIX_KEY(0x03, 0x08, KEY_MINUS)
 			MATRIX_KEY(0x03, 0x08, KEY_MINUS)
 			MATRIX_KEY(0x03, 0x0b, KEY_BACKSLASH)
 			MATRIX_KEY(0x03, 0x0b, KEY_BACKSLASH)
+			MATRIX_KEY(0x03, 0x0c, KEY_MUHENKAN)
 
 
 			MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL)
 			MATRIX_KEY(0x04, 0x00, KEY_RIGHTCTRL)
 			MATRIX_KEY(0x04, 0x01, KEY_A)
 			MATRIX_KEY(0x04, 0x01, KEY_A)

+ 1 - 0
arch/arm/boot/dts/imx23.dtsi

@@ -468,6 +468,7 @@
 				interrupts = <36 37 38 39 40 41 42 43 44>;
 				interrupts = <36 37 38 39 40 41 42 43 44>;
 				status = "disabled";
 				status = "disabled";
 				clocks = <&clks 26>;
 				clocks = <&clks 26>;
+				#io-channel-cells = <1>;
 			};
 			};
 
 
 			spdif@80054000 {
 			spdif@80054000 {

+ 6 - 6
arch/arm/boot/dts/imx27.dtsi

@@ -108,7 +108,7 @@
 			};
 			};
 
 
 			gpt1: timer@10003000 {
 			gpt1: timer@10003000 {
-				compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
+				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
 				reg = <0x10003000 0x1000>;
 				reg = <0x10003000 0x1000>;
 				interrupts = <26>;
 				interrupts = <26>;
 				clocks = <&clks IMX27_CLK_GPT1_IPG_GATE>,
 				clocks = <&clks IMX27_CLK_GPT1_IPG_GATE>,
@@ -117,7 +117,7 @@
 			};
 			};
 
 
 			gpt2: timer@10004000 {
 			gpt2: timer@10004000 {
-				compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
+				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
 				reg = <0x10004000 0x1000>;
 				reg = <0x10004000 0x1000>;
 				interrupts = <25>;
 				interrupts = <25>;
 				clocks = <&clks IMX27_CLK_GPT2_IPG_GATE>,
 				clocks = <&clks IMX27_CLK_GPT2_IPG_GATE>,
@@ -126,7 +126,7 @@
 			};
 			};
 
 
 			gpt3: timer@10005000 {
 			gpt3: timer@10005000 {
-				compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
+				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
 				reg = <0x10005000 0x1000>;
 				reg = <0x10005000 0x1000>;
 				interrupts = <24>;
 				interrupts = <24>;
 				clocks = <&clks IMX27_CLK_GPT3_IPG_GATE>,
 				clocks = <&clks IMX27_CLK_GPT3_IPG_GATE>,
@@ -376,7 +376,7 @@
 			};
 			};
 
 
 			gpt4: timer@10019000 {
 			gpt4: timer@10019000 {
-				compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
+				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
 				reg = <0x10019000 0x1000>;
 				reg = <0x10019000 0x1000>;
 				interrupts = <4>;
 				interrupts = <4>;
 				clocks = <&clks IMX27_CLK_GPT4_IPG_GATE>,
 				clocks = <&clks IMX27_CLK_GPT4_IPG_GATE>,
@@ -385,7 +385,7 @@
 			};
 			};
 
 
 			gpt5: timer@1001a000 {
 			gpt5: timer@1001a000 {
-				compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
+				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
 				reg = <0x1001a000 0x1000>;
 				reg = <0x1001a000 0x1000>;
 				interrupts = <3>;
 				interrupts = <3>;
 				clocks = <&clks IMX27_CLK_GPT5_IPG_GATE>,
 				clocks = <&clks IMX27_CLK_GPT5_IPG_GATE>,
@@ -436,7 +436,7 @@
 			};
 			};
 
 
 			gpt6: timer@1001f000 {
 			gpt6: timer@1001f000 {
-				compatible = "fsl,imx27-gpt", "fsl,imx1-gpt";
+				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
 				reg = <0x1001f000 0x1000>;
 				reg = <0x1001f000 0x1000>;
 				interrupts = <2>;
 				interrupts = <2>;
 				clocks = <&clks IMX27_CLK_GPT6_IPG_GATE>,
 				clocks = <&clks IMX27_CLK_GPT6_IPG_GATE>,

+ 3 - 2
arch/arm/boot/dts/imx53-qsb-common.dtsi

@@ -295,9 +295,10 @@
 &tve {
 &tve {
 	pinctrl-names = "default";
 	pinctrl-names = "default";
 	pinctrl-0 = <&pinctrl_vga_sync>;
 	pinctrl-0 = <&pinctrl_vga_sync>;
+	ddc-i2c-bus = <&i2c2>;
 	fsl,tve-mode = "vga";
 	fsl,tve-mode = "vga";
-	fsl,hsync-pin = <4>;
-	fsl,vsync-pin = <6>;
+	fsl,hsync-pin = <7>;	/* IPU DI1 PIN7 via EIM_OE */
+	fsl,vsync-pin = <8>;	/* IPU DI1 PIN8 via EIM_RW */
 	status = "okay";
 	status = "okay";
 };
 };
 
 

+ 2 - 1
arch/arm/boot/dts/k2e.dtsi

@@ -86,7 +86,7 @@
 			gpio,syscon-dev = <&devctrl 0x240>;
 			gpio,syscon-dev = <&devctrl 0x240>;
 		};
 		};
 
 
-		pcie@21020000 {
+		pcie1: pcie@21020000 {
 			compatible = "ti,keystone-pcie","snps,dw-pcie";
 			compatible = "ti,keystone-pcie","snps,dw-pcie";
 			clocks = <&clkpcie1>;
 			clocks = <&clkpcie1>;
 			clock-names = "pcie";
 			clock-names = "pcie";
@@ -96,6 +96,7 @@
 			ranges = <0x81000000 0 0 0x23260000 0x4000 0x4000
 			ranges = <0x81000000 0 0 0x23260000 0x4000 0x4000
 				0x82000000 0 0x60000000 0x60000000 0 0x10000000>;
 				0x82000000 0 0x60000000 0x60000000 0 0x10000000>;
 
 
+			status = "disabled";
 			device_type = "pci";
 			device_type = "pci";
 			num-lanes = <2>;
 			num-lanes = <2>;
 
 

+ 2 - 1
arch/arm/boot/dts/keystone.dtsi

@@ -286,7 +286,7 @@
 			ti,syscon-dev = <&devctrl 0x2a0>;
 			ti,syscon-dev = <&devctrl 0x2a0>;
 		};
 		};
 
 
-		pcie@21800000 {
+		pcie0: pcie@21800000 {
 			compatible = "ti,keystone-pcie", "snps,dw-pcie";
 			compatible = "ti,keystone-pcie", "snps,dw-pcie";
 			clocks = <&clkpcie>;
 			clocks = <&clkpcie>;
 			clock-names = "pcie";
 			clock-names = "pcie";
@@ -296,6 +296,7 @@
 			ranges = <0x81000000 0 0 0x23250000 0 0x4000
 			ranges = <0x81000000 0 0 0x23250000 0 0x4000
 				0x82000000 0 0x50000000 0x50000000 0 0x10000000>;
 				0x82000000 0 0x50000000 0x50000000 0 0x10000000>;
 
 
+			status = "disabled";
 			device_type = "pci";
 			device_type = "pci";
 			num-lanes = <2>;
 			num-lanes = <2>;
 
 

+ 1 - 1
arch/arm/boot/dts/omap3-overo-common-lcd35.dtsi

@@ -120,7 +120,7 @@
 
 
 	lcd0: display@0 {
 	lcd0: display@0 {
 		compatible = "lgphilips,lb035q02";
 		compatible = "lgphilips,lb035q02";
-		label = "lcd";
+		label = "lcd35";
 
 
 		reg = <1>;					/* CS1 */
 		reg = <1>;					/* CS1 */
 		spi-max-frequency = <10000000>;
 		spi-max-frequency = <10000000>;

+ 1 - 1
arch/arm/boot/dts/omap3-overo-common-lcd43.dtsi

@@ -98,7 +98,7 @@
 
 
 	lcd0: display@0 {
 	lcd0: display@0 {
 		compatible = "samsung,lte430wq-f0c", "panel-dpi";
 		compatible = "samsung,lte430wq-f0c", "panel-dpi";
-		label = "lcd";
+		label = "lcd43";
 
 
 		pinctrl-names = "default";
 		pinctrl-names = "default";
 		pinctrl-0 = <&lte430_pins>;
 		pinctrl-0 = <&lte430_pins>;

+ 2 - 0
arch/arm/boot/dts/omap4.dtsi

@@ -551,6 +551,7 @@
 			reg = <0x4a066000 0x100>;
 			reg = <0x4a066000 0x100>;
 			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
 			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
 			ti,hwmods = "mmu_dsp";
 			ti,hwmods = "mmu_dsp";
+			#iommu-cells = <0>;
 		};
 		};
 
 
 		mmu_ipu: mmu@55082000 {
 		mmu_ipu: mmu@55082000 {
@@ -558,6 +559,7 @@
 			reg = <0x55082000 0x100>;
 			reg = <0x55082000 0x100>;
 			interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
 			interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
 			ti,hwmods = "mmu_ipu";
 			ti,hwmods = "mmu_ipu";
+			#iommu-cells = <0>;
 			ti,iommu-bus-err-back;
 			ti,iommu-bus-err-back;
 		};
 		};
 
 

+ 2 - 0
arch/arm/boot/dts/omap5.dtsi

@@ -612,6 +612,7 @@
 			reg = <0x4a066000 0x100>;
 			reg = <0x4a066000 0x100>;
 			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
 			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
 			ti,hwmods = "mmu_dsp";
 			ti,hwmods = "mmu_dsp";
+			#iommu-cells = <0>;
 		};
 		};
 
 
 		mmu_ipu: mmu@55082000 {
 		mmu_ipu: mmu@55082000 {
@@ -619,6 +620,7 @@
 			reg = <0x55082000 0x100>;
 			reg = <0x55082000 0x100>;
 			interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
 			interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
 			ti,hwmods = "mmu_ipu";
 			ti,hwmods = "mmu_ipu";
+			#iommu-cells = <0>;
 			ti,iommu-bus-err-back;
 			ti,iommu-bus-err-back;
 		};
 		};
 
 

+ 13 - 13
arch/arm/boot/dts/socfpga_cyclone5_sockit.dts

@@ -60,27 +60,27 @@
 	rxc-skew-ps = <2000>;
 	rxc-skew-ps = <2000>;
 };
 };
 
 
-&mmc0 {
-	vmmc-supply = <&regulator_3_3v>;
-	vqmmc-supply = <&regulator_3_3v>;
-};
-
-&usb1 {
-	status = "okay";
-};
-
 &gpio2 {
 &gpio2 {
 	status = "okay";
 	status = "okay";
 };
 };
 
 
-&i2c1{
+&i2c1 {
 	status = "okay";
 	status = "okay";
 
 
-	accel1: accel1@53{
-		compatible = "adxl34x";
+	accel1: accelerometer@53 {
+		compatible = "adi,adxl345";
 		reg = <0x53>;
 		reg = <0x53>;
 
 
-		interrupt-parent = < &portc >;
+		interrupt-parent = <&portc>;
 		interrupts = <3 2>;
 		interrupts = <3 2>;
 	};
 	};
 };
 };
+
+&mmc0 {
+	vmmc-supply = <&regulator_3_3v>;
+	vqmmc-supply = <&regulator_3_3v>;
+};
+
+&usb1 {
+	status = "okay";
+};

+ 1 - 1
arch/arm/boot/dts/spear1310-evb.dts

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for SPEAr1310 Evaluation Baord
  * DTS file for SPEAr1310 Evaluation Baord
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 1 - 1
arch/arm/boot/dts/spear1310.dtsi

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for all SPEAr1310 SoCs
  * DTS file for all SPEAr1310 SoCs
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 1 - 1
arch/arm/boot/dts/spear1340-evb.dts

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for SPEAr1340 Evaluation Baord
  * DTS file for SPEAr1340 Evaluation Baord
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 1 - 1
arch/arm/boot/dts/spear1340.dtsi

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for all SPEAr1340 SoCs
  * DTS file for all SPEAr1340 SoCs
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 1 - 1
arch/arm/boot/dts/spear13xx.dtsi

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for all SPEAr13xx SoCs
  * DTS file for all SPEAr13xx SoCs
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 1 - 1
arch/arm/boot/dts/spear300-evb.dts

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for SPEAr300 Evaluation Baord
  * DTS file for SPEAr300 Evaluation Baord
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 1 - 1
arch/arm/boot/dts/spear300.dtsi

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for SPEAr300 SoC
  * DTS file for SPEAr300 SoC
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 1 - 1
arch/arm/boot/dts/spear310-evb.dts

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for SPEAr310 Evaluation Baord
  * DTS file for SPEAr310 Evaluation Baord
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 1 - 1
arch/arm/boot/dts/spear310.dtsi

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for SPEAr310 SoC
  * DTS file for SPEAr310 SoC
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 1 - 1
arch/arm/boot/dts/spear320-evb.dts

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for SPEAr320 Evaluation Baord
  * DTS file for SPEAr320 Evaluation Baord
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 1 - 1
arch/arm/boot/dts/spear320.dtsi

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for SPEAr320 SoC
  * DTS file for SPEAr320 SoC
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 1 - 1
arch/arm/boot/dts/spear3xx.dtsi

@@ -1,7 +1,7 @@
 /*
 /*
  * DTS file for all SPEAr3xx SoCs
  * DTS file for all SPEAr3xx SoCs
  *
  *
- * Copyright 2012 Viresh Kumar <viresh.linux@gmail.com>
+ * Copyright 2012 Viresh Kumar <vireshk@kernel.org>
  *
  *
  * The code contained herein is licensed under the GNU General Public
  * The code contained herein is licensed under the GNU General Public
  * License. You may obtain a copy of the GNU General Public License
  * License. You may obtain a copy of the GNU General Public License

+ 7 - 0
arch/arm/boot/dts/ste-ccu8540.dts

@@ -17,6 +17,13 @@
 	model = "ST-Ericsson U8540 platform with Device Tree";
 	model = "ST-Ericsson U8540 platform with Device Tree";
 	compatible = "st-ericsson,ccu8540", "st-ericsson,u8540";
 	compatible = "st-ericsson,ccu8540", "st-ericsson,u8540";
 
 
+	/* This stablilizes the serial port enumeration */
+	aliases {
+		serial0 = &ux500_serial0;
+		serial1 = &ux500_serial1;
+		serial2 = &ux500_serial2;
+	};
+
 	memory@0 {
 	memory@0 {
 		device_type = "memory";
 		device_type = "memory";
 		reg = <0x20000000 0x1f000000>, <0xc0000000 0x3f000000>;
 		reg = <0x20000000 0x1f000000>, <0xc0000000 0x3f000000>;

+ 7 - 0
arch/arm/boot/dts/ste-ccu9540.dts

@@ -16,6 +16,13 @@
 	model = "ST-Ericsson CCU9540 platform with Device Tree";
 	model = "ST-Ericsson CCU9540 platform with Device Tree";
 	compatible = "st-ericsson,ccu9540", "st-ericsson,u9540";
 	compatible = "st-ericsson,ccu9540", "st-ericsson,u9540";
 
 
+	/* This stablilizes the serial port enumeration */
+	aliases {
+		serial0 = &ux500_serial0;
+		serial1 = &ux500_serial1;
+		serial2 = &ux500_serial2;
+	};
+
 	memory {
 	memory {
 		reg = <0x00000000 0x20000000>;
 		reg = <0x00000000 0x20000000>;
 	};
 	};

+ 3 - 3
arch/arm/boot/dts/ste-dbx5x0.dtsi

@@ -971,7 +971,7 @@
 			power-domains = <&pm_domains DOMAIN_VAPE>;
 			power-domains = <&pm_domains DOMAIN_VAPE>;
 		};
 		};
 
 
-		uart@80120000 {
+		ux500_serial0: uart@80120000 {
 			compatible = "arm,pl011", "arm,primecell";
 			compatible = "arm,pl011", "arm,primecell";
 			reg = <0x80120000 0x1000>;
 			reg = <0x80120000 0x1000>;
 			interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
 			interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
@@ -986,7 +986,7 @@
 			status = "disabled";
 			status = "disabled";
 		};
 		};
 
 
-		uart@80121000 {
+		ux500_serial1: uart@80121000 {
 			compatible = "arm,pl011", "arm,primecell";
 			compatible = "arm,pl011", "arm,primecell";
 			reg = <0x80121000 0x1000>;
 			reg = <0x80121000 0x1000>;
 			interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>;
 			interrupts = <0 19 IRQ_TYPE_LEVEL_HIGH>;
@@ -1001,7 +1001,7 @@
 			status = "disabled";
 			status = "disabled";
 		};
 		};
 
 
-		uart@80007000 {
+		ux500_serial2: uart@80007000 {
 			compatible = "arm,pl011", "arm,primecell";
 			compatible = "arm,pl011", "arm,primecell";
 			reg = <0x80007000 0x1000>;
 			reg = <0x80007000 0x1000>;
 			interrupts = <0 26 IRQ_TYPE_LEVEL_HIGH>;
 			interrupts = <0 26 IRQ_TYPE_LEVEL_HIGH>;

+ 1 - 1
arch/arm/boot/dts/ste-href.dtsi

@@ -32,11 +32,11 @@
 			status = "okay";
 			status = "okay";
 		};
 		};
 
 
+		/* This UART is unused and thus left disabled */
 		uart@80121000 {
 		uart@80121000 {
 			pinctrl-names = "default", "sleep";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&uart1_default_mode>;
 			pinctrl-0 = <&uart1_default_mode>;
 			pinctrl-1 = <&uart1_sleep_mode>;
 			pinctrl-1 = <&uart1_sleep_mode>;
-			status = "okay";
 		};
 		};
 
 
 		uart@80007000 {
 		uart@80007000 {

+ 7 - 0
arch/arm/boot/dts/ste-hrefprev60-stuib.dts

@@ -17,6 +17,13 @@
 	model = "ST-Ericsson HREF (pre-v60) and ST UIB";
 	model = "ST-Ericsson HREF (pre-v60) and ST UIB";
 	compatible = "st-ericsson,mop500", "st-ericsson,u8500";
 	compatible = "st-ericsson,mop500", "st-ericsson,u8500";
 
 
+	/* This stablilizes the serial port enumeration */
+	aliases {
+		serial0 = &ux500_serial0;
+		serial1 = &ux500_serial1;
+		serial2 = &ux500_serial2;
+	};
+
 	soc {
 	soc {
 		/* Reset line for the BU21013 touchscreen */
 		/* Reset line for the BU21013 touchscreen */
 		i2c@80110000 {
 		i2c@80110000 {

+ 7 - 0
arch/arm/boot/dts/ste-hrefprev60-tvk.dts

@@ -16,4 +16,11 @@
 / {
 / {
 	model = "ST-Ericsson HREF (pre-v60) and TVK1281618 UIB";
 	model = "ST-Ericsson HREF (pre-v60) and TVK1281618 UIB";
 	compatible = "st-ericsson,mop500", "st-ericsson,u8500";
 	compatible = "st-ericsson,mop500", "st-ericsson,u8500";
+
+	/* This stablilizes the serial port enumeration */
+	aliases {
+		serial0 = &ux500_serial0;
+		serial1 = &ux500_serial1;
+		serial2 = &ux500_serial2;
+	};
 };
 };

+ 5 - 0
arch/arm/boot/dts/ste-hrefprev60.dtsi

@@ -23,6 +23,11 @@
 	};
 	};
 
 
 	soc {
 	soc {
+		/* Enable UART1 on this board */
+		uart@80121000 {
+			status = "okay";
+		};
+
 		i2c@80004000 {
 		i2c@80004000 {
 			tps61052@33 {
 			tps61052@33 {
 				compatible = "tps61052";
 				compatible = "tps61052";

+ 7 - 0
arch/arm/boot/dts/ste-hrefv60plus-stuib.dts

@@ -19,6 +19,13 @@
 	model = "ST-Ericsson HREF (v60+) and ST UIB";
 	model = "ST-Ericsson HREF (v60+) and ST UIB";
 	compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
 	compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
 
 
+	/* This stablilizes the serial port enumeration */
+	aliases {
+		serial0 = &ux500_serial0;
+		serial1 = &ux500_serial1;
+		serial2 = &ux500_serial2;
+	};
+
 	soc {
 	soc {
 		/* Reset line for the BU21013 touchscreen */
 		/* Reset line for the BU21013 touchscreen */
 		i2c@80110000 {
 		i2c@80110000 {

+ 7 - 0
arch/arm/boot/dts/ste-hrefv60plus-tvk.dts

@@ -18,4 +18,11 @@
 / {
 / {
 	model = "ST-Ericsson HREF (v60+) and TVK1281618 UIB";
 	model = "ST-Ericsson HREF (v60+) and TVK1281618 UIB";
 	compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
 	compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
+
+	/* This stablilizes the serial port enumeration */
+	aliases {
+		serial0 = &ux500_serial0;
+		serial1 = &ux500_serial1;
+		serial2 = &ux500_serial2;
+	};
 };
 };

+ 23 - 2
arch/arm/boot/dts/ste-hrefv60plus.dtsi

@@ -43,15 +43,26 @@
 				  <&vaudio_hf_hrefv60_mode>,
 				  <&vaudio_hf_hrefv60_mode>,
 				  <&gbf_hrefv60_mode>,
 				  <&gbf_hrefv60_mode>,
 				  <&hdtv_hrefv60_mode>,
 				  <&hdtv_hrefv60_mode>,
-				  <&touch_hrefv60_mode>;
+				  <&touch_hrefv60_mode>,
+				  <&gpios_hrefv60_mode>;
 
 
 			sdi0 {
 			sdi0 {
-				/* SD card detect GPIO pin, extend default state */
 				sdi0_default_mode: sdi0_default {
 				sdi0_default_mode: sdi0_default {
+					/* SD card detect GPIO pin, extend default state */
 					default_hrefv60_cfg1 {
 					default_hrefv60_cfg1 {
 						pins = "GPIO95_E8";
 						pins = "GPIO95_E8";
 						ste,config = <&gpio_in_pu>;
 						ste,config = <&gpio_in_pu>;
 					};
 					};
+					/* VMMCI level-shifter enable */
+					default_hrefv60_cfg2 {
+						pins = "GPIO169_D22";
+						ste,config = <&gpio_out_lo>;
+					};
+					/* VMMCI level-shifter voltage select */
+					default_hrefv60_cfg3 {
+						pins = "GPIO5_AG6";
+						ste,config = <&gpio_out_hi>;
+					};
 				};
 				};
 			};
 			};
 			ipgpio {
 			ipgpio {
@@ -213,6 +224,16 @@
 					};
 					};
 				};
 				};
 			};
 			};
+			gpios {
+				/* Dangling GPIO pins */
+				gpios_hrefv60_mode: gpios_hrefv60 {
+					default_cfg1 {
+						/* Normally UART1 RXD, now dangling */
+						pins = "GPIO4_AH6";
+						ste,config = <&in_pu>;
+					};
+				};
+			};
 		};
 		};
 	};
 	};
 };
 };

+ 23 - 2
arch/arm/boot/dts/ste-snowball.dts

@@ -18,6 +18,13 @@
 	model = "Calao Systems Snowball platform with device tree";
 	model = "Calao Systems Snowball platform with device tree";
 	compatible = "calaosystems,snowball-a9500", "st-ericsson,u9500";
 	compatible = "calaosystems,snowball-a9500", "st-ericsson,u9500";
 
 
+	/* This stablilizes the serial port enumeration */
+	aliases {
+		serial0 = &ux500_serial0;
+		serial1 = &ux500_serial1;
+		serial2 = &ux500_serial2;
+	};
+
 	memory {
 	memory {
 		reg = <0x00000000 0x20000000>;
 		reg = <0x00000000 0x20000000>;
 	};
 	};
@@ -223,11 +230,11 @@
 			status = "okay";
 			status = "okay";
 		};
 		};
 
 
+		/* This UART is unused and thus left disabled */
 		uart@80121000 {
 		uart@80121000 {
 			pinctrl-names = "default", "sleep";
 			pinctrl-names = "default", "sleep";
 			pinctrl-0 = <&uart1_default_mode>;
 			pinctrl-0 = <&uart1_default_mode>;
 			pinctrl-1 = <&uart1_sleep_mode>;
 			pinctrl-1 = <&uart1_sleep_mode>;
-			status = "okay";
 		};
 		};
 
 
 		uart@80007000 {
 		uart@80007000 {
@@ -452,7 +459,21 @@
 						pins = "GPIO21_AB3"; /* DAT31DIR */
 						pins = "GPIO21_AB3"; /* DAT31DIR */
 						ste,config = <&out_hi>;
 						ste,config = <&out_hi>;
 					};
 					};
-
+					/* SD card detect GPIO pin, extend default state */
+					snowball_cfg2 {
+						pins = "GPIO218_AH11";
+						ste,config = <&gpio_in_pu>;
+					};
+					/* VMMCI level-shifter enable */
+					snowball_cfg3 {
+						pins = "GPIO217_AH12";
+						ste,config = <&gpio_out_lo>;
+					};
+					/* VMMCI level-shifter voltage select */
+					snowball_cfg4 {
+						pins = "GPIO228_AJ6";
+						ste,config = <&gpio_out_hi>;
+					};
 				};
 				};
 			};
 			};
 			ssp0 {
 			ssp0 {

+ 1 - 0
arch/arm/include/asm/Kbuild

@@ -13,6 +13,7 @@ generic-y += kdebug.h
 generic-y += local.h
 generic-y += local.h
 generic-y += local64.h
 generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += mcs_spinlock.h
+generic-y += mm-arch-hooks.h
 generic-y += msgbuf.h
 generic-y += msgbuf.h
 generic-y += param.h
 generic-y += param.h
 generic-y += parport.h
 generic-y += parport.h

+ 1 - 1
arch/arm/include/asm/memory.h

@@ -286,7 +286,7 @@ extern phys_addr_t (*arch_virt_to_idmap)(unsigned long x);
  */
  */
 static inline phys_addr_t __virt_to_idmap(unsigned long x)
 static inline phys_addr_t __virt_to_idmap(unsigned long x)
 {
 {
-	if (arch_virt_to_idmap)
+	if (IS_ENABLED(CONFIG_MMU) && arch_virt_to_idmap)
 		return arch_virt_to_idmap(x);
 		return arch_virt_to_idmap(x);
 	else
 	else
 		return __virt_to_phys(x);
 		return __virt_to_phys(x);

+ 0 - 15
arch/arm/include/asm/mm-arch-hooks.h

@@ -1,15 +0,0 @@
-/*
- * Architecture specific mm hooks
- *
- * Copyright (C) 2015, IBM Corporation
- * Author: Laurent Dufour <ldufour@linux.vnet.ibm.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef _ASM_ARM_MM_ARCH_HOOKS_H
-#define _ASM_ARM_MM_ARCH_HOOKS_H
-
-#endif /* _ASM_ARM_MM_ARCH_HOOKS_H */

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

@@ -818,12 +818,13 @@ static int of_pmu_irq_cfg(struct arm_pmu *pmu)
 			if (arch_find_n_match_cpu_physical_id(dn, cpu, NULL))
 			if (arch_find_n_match_cpu_physical_id(dn, cpu, NULL))
 				break;
 				break;
 
 
-		of_node_put(dn);
 		if (cpu >= nr_cpu_ids) {
 		if (cpu >= nr_cpu_ids) {
 			pr_warn("Failed to find logical CPU for %s\n",
 			pr_warn("Failed to find logical CPU for %s\n",
 				dn->name);
 				dn->name);
+			of_node_put(dn);
 			break;
 			break;
 		}
 		}
+		of_node_put(dn);
 
 
 		irqs[i] = cpu;
 		irqs[i] = cpu;
 		cpumask_set_cpu(cpu, &pmu->supported_cpus);
 		cpumask_set_cpu(cpu, &pmu->supported_cpus);

+ 1 - 1
arch/arm/kernel/reboot.c

@@ -50,7 +50,7 @@ static void __soft_restart(void *addr)
 	flush_cache_all();
 	flush_cache_all();
 
 
 	/* Switch to the identity mapping. */
 	/* Switch to the identity mapping. */
-	phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset);
+	phys_reset = (phys_reset_t)(unsigned long)virt_to_idmap(cpu_reset);
 	phys_reset((unsigned long)addr);
 	phys_reset((unsigned long)addr);
 
 
 	/* Should never get here. */
 	/* Should never get here. */

+ 6 - 21
arch/arm/mach-imx/gpc.c

@@ -291,8 +291,6 @@ void __init imx_gpc_check_dt(void)
 	}
 	}
 }
 }
 
 
-#ifdef CONFIG_PM_GENERIC_DOMAINS
-
 static void _imx6q_pm_pu_power_off(struct generic_pm_domain *genpd)
 static void _imx6q_pm_pu_power_off(struct generic_pm_domain *genpd)
 {
 {
 	int iso, iso2sw;
 	int iso, iso2sw;
@@ -399,7 +397,6 @@ static struct genpd_onecell_data imx_gpc_onecell_data = {
 static int imx_gpc_genpd_init(struct device *dev, struct regulator *pu_reg)
 static int imx_gpc_genpd_init(struct device *dev, struct regulator *pu_reg)
 {
 {
 	struct clk *clk;
 	struct clk *clk;
-	bool is_off;
 	int i;
 	int i;
 
 
 	imx6q_pu_domain.reg = pu_reg;
 	imx6q_pu_domain.reg = pu_reg;
@@ -416,18 +413,13 @@ static int imx_gpc_genpd_init(struct device *dev, struct regulator *pu_reg)
 	}
 	}
 	imx6q_pu_domain.num_clks = i;
 	imx6q_pu_domain.num_clks = i;
 
 
-	is_off = IS_ENABLED(CONFIG_PM);
-	if (is_off) {
-		_imx6q_pm_pu_power_off(&imx6q_pu_domain.base);
-	} else {
-		/*
-		 * Enable power if compiled without CONFIG_PM in case the
-		 * bootloader disabled it.
-		 */
-		imx6q_pm_pu_power_on(&imx6q_pu_domain.base);
-	}
+	/* Enable power always in case bootloader disabled it. */
+	imx6q_pm_pu_power_on(&imx6q_pu_domain.base);
+
+	if (!IS_ENABLED(CONFIG_PM_GENERIC_DOMAINS))
+		return 0;
 
 
-	pm_genpd_init(&imx6q_pu_domain.base, NULL, is_off);
+	pm_genpd_init(&imx6q_pu_domain.base, NULL, false);
 	return of_genpd_add_provider_onecell(dev->of_node,
 	return of_genpd_add_provider_onecell(dev->of_node,
 					     &imx_gpc_onecell_data);
 					     &imx_gpc_onecell_data);
 
 
@@ -437,13 +429,6 @@ clk_err:
 	return -EINVAL;
 	return -EINVAL;
 }
 }
 
 
-#else
-static inline int imx_gpc_genpd_init(struct device *dev, struct regulator *reg)
-{
-	return 0;
-}
-#endif /* CONFIG_PM_GENERIC_DOMAINS */
-
 static int imx_gpc_probe(struct platform_device *pdev)
 static int imx_gpc_probe(struct platform_device *pdev)
 {
 {
 	struct regulator *pu_reg;
 	struct regulator *pu_reg;

+ 1 - 0
arch/arm/mach-omap2/Kconfig

@@ -60,6 +60,7 @@ config SOC_AM43XX
 	select ARM_GIC
 	select ARM_GIC
 	select MACH_OMAP_GENERIC
 	select MACH_OMAP_GENERIC
 	select MIGHT_HAVE_CACHE_L2X0
 	select MIGHT_HAVE_CACHE_L2X0
+	select HAVE_ARM_SCU
 
 
 config SOC_DRA7XX
 config SOC_DRA7XX
 	bool "TI DRA7XX"
 	bool "TI DRA7XX"

+ 3 - 0
arch/arm/mach-pxa/capc7117.c

@@ -24,6 +24,7 @@
 #include <linux/ata_platform.h>
 #include <linux/ata_platform.h>
 #include <linux/serial_8250.h>
 #include <linux/serial_8250.h>
 #include <linux/gpio.h>
 #include <linux/gpio.h>
+#include <linux/regulator/machine.h>
 
 
 #include <asm/mach-types.h>
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 #include <asm/mach/arch.h>
@@ -144,6 +145,8 @@ static void __init capc7117_init(void)
 
 
 	capc7117_uarts_init();
 	capc7117_uarts_init();
 	capc7117_ide_init();
 	capc7117_ide_init();
+
+	regulator_has_full_constraints();
 }
 }
 
 
 MACHINE_START(CAPC7117,
 MACHINE_START(CAPC7117,

+ 3 - 0
arch/arm/mach-pxa/cm-x2xx.c

@@ -13,6 +13,7 @@
 #include <linux/syscore_ops.h>
 #include <linux/syscore_ops.h>
 #include <linux/irq.h>
 #include <linux/irq.h>
 #include <linux/gpio.h>
 #include <linux/gpio.h>
+#include <linux/regulator/machine.h>
 
 
 #include <linux/dm9000.h>
 #include <linux/dm9000.h>
 #include <linux/leds.h>
 #include <linux/leds.h>
@@ -466,6 +467,8 @@ static void __init cmx2xx_init(void)
 	cmx2xx_init_ac97();
 	cmx2xx_init_ac97();
 	cmx2xx_init_touchscreen();
 	cmx2xx_init_touchscreen();
 	cmx2xx_init_leds();
 	cmx2xx_init_leds();
+
+	regulator_has_full_constraints();
 }
 }
 
 
 static void __init cmx2xx_init_irq(void)
 static void __init cmx2xx_init_irq(void)

+ 2 - 0
arch/arm/mach-pxa/cm-x300.c

@@ -835,6 +835,8 @@ static void __init cm_x300_init(void)
 	cm_x300_init_ac97();
 	cm_x300_init_ac97();
 	cm_x300_init_wi2wi();
 	cm_x300_init_wi2wi();
 	cm_x300_init_bl();
 	cm_x300_init_bl();
+
+	regulator_has_full_constraints();
 }
 }
 
 
 static void __init cm_x300_fixup(struct tag *tags, char **cmdline)
 static void __init cm_x300_fixup(struct tag *tags, char **cmdline)

+ 3 - 0
arch/arm/mach-pxa/colibri-pxa270.c

@@ -18,6 +18,7 @@
 #include <linux/mtd/partitions.h>
 #include <linux/mtd/partitions.h>
 #include <linux/mtd/physmap.h>
 #include <linux/mtd/physmap.h>
 #include <linux/platform_device.h>
 #include <linux/platform_device.h>
+#include <linux/regulator/machine.h>
 #include <linux/ucb1400.h>
 #include <linux/ucb1400.h>
 
 
 #include <asm/mach/arch.h>
 #include <asm/mach/arch.h>
@@ -294,6 +295,8 @@ static void __init colibri_pxa270_init(void)
 		printk(KERN_ERR "Illegal colibri_pxa270_baseboard type %d\n",
 		printk(KERN_ERR "Illegal colibri_pxa270_baseboard type %d\n",
 				colibri_pxa270_baseboard);
 				colibri_pxa270_baseboard);
 	}
 	}
+
+	regulator_has_full_constraints();
 }
 }
 
 
 /* The "Income s.r.o. SH-Dmaster PXA270 SBC" board can be booted either
 /* The "Income s.r.o. SH-Dmaster PXA270 SBC" board can be booted either

+ 2 - 0
arch/arm/mach-pxa/em-x270.c

@@ -1306,6 +1306,8 @@ static void __init em_x270_init(void)
 	em_x270_init_i2c();
 	em_x270_init_i2c();
 	em_x270_init_camera();
 	em_x270_init_camera();
 	em_x270_userspace_consumers_init();
 	em_x270_userspace_consumers_init();
+
+	regulator_has_full_constraints();
 }
 }
 
 
 MACHINE_START(EM_X270, "Compulab EM-X270")
 MACHINE_START(EM_X270, "Compulab EM-X270")

+ 3 - 0
arch/arm/mach-pxa/icontrol.c

@@ -26,6 +26,7 @@
 #include <linux/spi/spi.h>
 #include <linux/spi/spi.h>
 #include <linux/spi/pxa2xx_spi.h>
 #include <linux/spi/pxa2xx_spi.h>
 #include <linux/can/platform/mcp251x.h>
 #include <linux/can/platform/mcp251x.h>
+#include <linux/regulator/machine.h>
 
 
 #include "generic.h"
 #include "generic.h"
 
 
@@ -185,6 +186,8 @@ static void __init icontrol_init(void)
 	mxm_8x10_mmc_init();
 	mxm_8x10_mmc_init();
 
 
 	icontrol_can_init();
 	icontrol_can_init();
+
+	regulator_has_full_constraints();
 }
 }
 
 
 MACHINE_START(ICONTROL, "iControl/SafeTcam boards using Embedian MXM-8x10 CoM")
 MACHINE_START(ICONTROL, "iControl/SafeTcam boards using Embedian MXM-8x10 CoM")

+ 3 - 0
arch/arm/mach-pxa/trizeps4.c

@@ -26,6 +26,7 @@
 #include <linux/dm9000.h>
 #include <linux/dm9000.h>
 #include <linux/mtd/physmap.h>
 #include <linux/mtd/physmap.h>
 #include <linux/mtd/partitions.h>
 #include <linux/mtd/partitions.h>
+#include <linux/regulator/machine.h>
 #include <linux/i2c/pxa-i2c.h>
 #include <linux/i2c/pxa-i2c.h>
 
 
 #include <asm/types.h>
 #include <asm/types.h>
@@ -534,6 +535,8 @@ static void __init trizeps4_init(void)
 
 
 	BCR_writew(trizeps_conxs_bcr);
 	BCR_writew(trizeps_conxs_bcr);
 	board_backlight_power(1);
 	board_backlight_power(1);
+
+	regulator_has_full_constraints();
 }
 }
 
 
 static void __init trizeps4_map_io(void)
 static void __init trizeps4_map_io(void)

+ 3 - 0
arch/arm/mach-pxa/vpac270.c

@@ -24,6 +24,7 @@
 #include <linux/dm9000.h>
 #include <linux/dm9000.h>
 #include <linux/ucb1400.h>
 #include <linux/ucb1400.h>
 #include <linux/ata_platform.h>
 #include <linux/ata_platform.h>
+#include <linux/regulator/machine.h>
 #include <linux/regulator/max1586.h>
 #include <linux/regulator/max1586.h>
 #include <linux/i2c/pxa-i2c.h>
 #include <linux/i2c/pxa-i2c.h>
 
 
@@ -711,6 +712,8 @@ static void __init vpac270_init(void)
 	vpac270_ts_init();
 	vpac270_ts_init();
 	vpac270_rtc_init();
 	vpac270_rtc_init();
 	vpac270_ide_init();
 	vpac270_ide_init();
+
+	regulator_has_full_constraints();
 }
 }
 
 
 MACHINE_START(VPAC270, "Voipac PXA270")
 MACHINE_START(VPAC270, "Voipac PXA270")

+ 2 - 0
arch/arm/mach-pxa/zeus.c

@@ -868,6 +868,8 @@ static void __init zeus_init(void)
 	i2c_register_board_info(0, ARRAY_AND_SIZE(zeus_i2c_devices));
 	i2c_register_board_info(0, ARRAY_AND_SIZE(zeus_i2c_devices));
 	pxa2xx_set_spi_info(3, &pxa2xx_spi_ssp3_master_info);
 	pxa2xx_set_spi_info(3, &pxa2xx_spi_ssp3_master_info);
 	spi_register_board_info(zeus_spi_board_info, ARRAY_SIZE(zeus_spi_board_info));
 	spi_register_board_info(zeus_spi_board_info, ARRAY_SIZE(zeus_spi_board_info));
+
+	regulator_has_full_constraints();
 }
 }
 
 
 static struct map_desc zeus_io_desc[] __initdata = {
 static struct map_desc zeus_io_desc[] __initdata = {

+ 1 - 1
arch/arm/mach-spear/generic.h

@@ -3,7 +3,7 @@
  *
  *
  * Copyright (C) 2009-2012 ST Microelectronics
  * Copyright (C) 2009-2012 ST Microelectronics
  * Rajeev Kumar <rajeev-dlh.kumar@st.com>
  * Rajeev Kumar <rajeev-dlh.kumar@st.com>
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/include/mach/irqs.h

@@ -3,7 +3,7 @@
  *
  *
  * Copyright (C) 2009-2012 ST Microelectronics
  * Copyright (C) 2009-2012 ST Microelectronics
  * Rajeev Kumar <rajeev-dlh.kumar@st.com>
  * Rajeev Kumar <rajeev-dlh.kumar@st.com>
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/include/mach/misc_regs.h

@@ -4,7 +4,7 @@
  * Miscellaneous registers definitions for SPEAr3xx machine family
  * Miscellaneous registers definitions for SPEAr3xx machine family
  *
  *
  * Copyright (C) 2009 ST Microelectronics
  * Copyright (C) 2009 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/include/mach/spear.h

@@ -3,7 +3,7 @@
  *
  *
  * Copyright (C) 2009,2012 ST Microelectronics
  * Copyright (C) 2009,2012 ST Microelectronics
  * Rajeev Kumar<rajeev-dlh.kumar@st.com>
  * Rajeev Kumar<rajeev-dlh.kumar@st.com>
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/include/mach/uncompress.h

@@ -4,7 +4,7 @@
  * Serial port stubs for kernel decompress status messages
  * Serial port stubs for kernel decompress status messages
  *
  *
  * Copyright (C) 2009 ST Microelectronics
  * Copyright (C) 2009 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/pl080.c

@@ -4,7 +4,7 @@
  * DMAC pl080 definitions for SPEAr platform
  * DMAC pl080 definitions for SPEAr platform
  *
  *
  * Copyright (C) 2012 ST Microelectronics
  * Copyright (C) 2012 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/pl080.h

@@ -4,7 +4,7 @@
  * DMAC pl080 definitions for SPEAr platform
  * DMAC pl080 definitions for SPEAr platform
  *
  *
  * Copyright (C) 2012 ST Microelectronics
  * Copyright (C) 2012 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/restart.c

@@ -4,7 +4,7 @@
  * SPEAr platform specific restart functions
  * SPEAr platform specific restart functions
  *
  *
  * Copyright (C) 2009 ST Microelectronics
  * Copyright (C) 2009 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/spear1310.c

@@ -4,7 +4,7 @@
  * SPEAr1310 machine source file
  * SPEAr1310 machine source file
  *
  *
  * Copyright (C) 2012 ST Microelectronics
  * Copyright (C) 2012 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/spear1340.c

@@ -4,7 +4,7 @@
  * SPEAr1340 machine source file
  * SPEAr1340 machine source file
  *
  *
  * Copyright (C) 2012 ST Microelectronics
  * Copyright (C) 2012 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/spear13xx.c

@@ -4,7 +4,7 @@
  * SPEAr13XX machines common source file
  * SPEAr13XX machines common source file
  *
  *
  * Copyright (C) 2012 ST Microelectronics
  * Copyright (C) 2012 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/spear300.c

@@ -4,7 +4,7 @@
  * SPEAr300 machine source file
  * SPEAr300 machine source file
  *
  *
  * Copyright (C) 2009-2012 ST Microelectronics
  * Copyright (C) 2009-2012 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/spear310.c

@@ -4,7 +4,7 @@
  * SPEAr310 machine source file
  * SPEAr310 machine source file
  *
  *
  * Copyright (C) 2009-2012 ST Microelectronics
  * Copyright (C) 2009-2012 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/spear320.c

@@ -4,7 +4,7 @@
  * SPEAr320 machine source file
  * SPEAr320 machine source file
  *
  *
  * Copyright (C) 2009-2012 ST Microelectronics
  * Copyright (C) 2009-2012 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mach-spear/spear3xx.c

@@ -4,7 +4,7 @@
  * SPEAr3XX machines common source file
  * SPEAr3XX machines common source file
  *
  *
  * Copyright (C) 2009-2012 ST Microelectronics
  * Copyright (C) 2009-2012 ST Microelectronics
- * Viresh Kumar <viresh.linux@gmail.com>
+ * Viresh Kumar <vireshk@kernel.org>
  *
  *
  * This file is licensed under the terms of the GNU General Public
  * This file is licensed under the terms of the GNU General Public
  * License version 2. This program is licensed "as is" without any
  * License version 2. This program is licensed "as is" without any

+ 1 - 1
arch/arm/mm/dma-mapping.c

@@ -1971,7 +1971,7 @@ static int extend_iommu_mapping(struct dma_iommu_mapping *mapping)
 {
 {
 	int next_bitmap;
 	int next_bitmap;
 
 
-	if (mapping->nr_bitmaps > mapping->extensions)
+	if (mapping->nr_bitmaps >= mapping->extensions)
 		return -EINVAL;
 		return -EINVAL;
 
 
 	next_bitmap = mapping->nr_bitmaps;
 	next_bitmap = mapping->nr_bitmaps;

+ 9 - 5
arch/arm/mm/proc-v7.S

@@ -274,7 +274,10 @@ __v7_ca15mp_setup:
 __v7_b15mp_setup:
 __v7_b15mp_setup:
 __v7_ca17mp_setup:
 __v7_ca17mp_setup:
 	mov	r10, #0
 	mov	r10, #0
-1:
+1:	adr	r12, __v7_setup_stack		@ the local stack
+	stmia	r12, {r0-r5, lr}		@ v7_invalidate_l1 touches r0-r6
+	bl      v7_invalidate_l1
+	ldmia	r12, {r0-r5, lr}
 #ifdef CONFIG_SMP
 #ifdef CONFIG_SMP
 	ALT_SMP(mrc	p15, 0, r0, c1, c0, 1)
 	ALT_SMP(mrc	p15, 0, r0, c1, c0, 1)
 	ALT_UP(mov	r0, #(1 << 6))		@ fake it for UP
 	ALT_UP(mov	r0, #(1 << 6))		@ fake it for UP
@@ -283,7 +286,7 @@ __v7_ca17mp_setup:
 	orreq	r0, r0, r10			@ Enable CPU-specific SMP bits
 	orreq	r0, r0, r10			@ Enable CPU-specific SMP bits
 	mcreq	p15, 0, r0, c1, c0, 1
 	mcreq	p15, 0, r0, c1, c0, 1
 #endif
 #endif
-	b	__v7_setup
+	b	__v7_setup_cont
 
 
 /*
 /*
  * Errata:
  * Errata:
@@ -413,10 +416,11 @@ __v7_pj4b_setup:
 
 
 __v7_setup:
 __v7_setup:
 	adr	r12, __v7_setup_stack		@ the local stack
 	adr	r12, __v7_setup_stack		@ the local stack
-	stmia	r12, {r0-r5, r7, r9, r11, lr}
+	stmia	r12, {r0-r5, lr}		@ v7_invalidate_l1 touches r0-r6
 	bl      v7_invalidate_l1
 	bl      v7_invalidate_l1
-	ldmia	r12, {r0-r5, r7, r9, r11, lr}
+	ldmia	r12, {r0-r5, lr}
 
 
+__v7_setup_cont:
 	and	r0, r9, #0xff000000		@ ARM?
 	and	r0, r9, #0xff000000		@ ARM?
 	teq	r0, #0x41000000
 	teq	r0, #0x41000000
 	bne	__errata_finish
 	bne	__errata_finish
@@ -480,7 +484,7 @@ ENDPROC(__v7_setup)
 
 
 	.align	2
 	.align	2
 __v7_setup_stack:
 __v7_setup_stack:
-	.space	4 * 11				@ 11 registers
+	.space	4 * 7				@ 12 registers
 
 
 	__INITDATA
 	__INITDATA
 
 

+ 44 - 13
arch/arm/net/bpf_jit_32.c

@@ -74,32 +74,52 @@ struct jit_ctx {
 
 
 int bpf_jit_enable __read_mostly;
 int bpf_jit_enable __read_mostly;
 
 
-static u64 jit_get_skb_b(struct sk_buff *skb, unsigned offset)
+static inline int call_neg_helper(struct sk_buff *skb, int offset, void *ret,
+		      unsigned int size)
+{
+	void *ptr = bpf_internal_load_pointer_neg_helper(skb, offset, size);
+
+	if (!ptr)
+		return -EFAULT;
+	memcpy(ret, ptr, size);
+	return 0;
+}
+
+static u64 jit_get_skb_b(struct sk_buff *skb, int offset)
 {
 {
 	u8 ret;
 	u8 ret;
 	int err;
 	int err;
 
 
-	err = skb_copy_bits(skb, offset, &ret, 1);
+	if (offset < 0)
+		err = call_neg_helper(skb, offset, &ret, 1);
+	else
+		err = skb_copy_bits(skb, offset, &ret, 1);
 
 
 	return (u64)err << 32 | ret;
 	return (u64)err << 32 | ret;
 }
 }
 
 
-static u64 jit_get_skb_h(struct sk_buff *skb, unsigned offset)
+static u64 jit_get_skb_h(struct sk_buff *skb, int offset)
 {
 {
 	u16 ret;
 	u16 ret;
 	int err;
 	int err;
 
 
-	err = skb_copy_bits(skb, offset, &ret, 2);
+	if (offset < 0)
+		err = call_neg_helper(skb, offset, &ret, 2);
+	else
+		err = skb_copy_bits(skb, offset, &ret, 2);
 
 
 	return (u64)err << 32 | ntohs(ret);
 	return (u64)err << 32 | ntohs(ret);
 }
 }
 
 
-static u64 jit_get_skb_w(struct sk_buff *skb, unsigned offset)
+static u64 jit_get_skb_w(struct sk_buff *skb, int offset)
 {
 {
 	u32 ret;
 	u32 ret;
 	int err;
 	int err;
 
 
-	err = skb_copy_bits(skb, offset, &ret, 4);
+	if (offset < 0)
+		err = call_neg_helper(skb, offset, &ret, 4);
+	else
+		err = skb_copy_bits(skb, offset, &ret, 4);
 
 
 	return (u64)err << 32 | ntohl(ret);
 	return (u64)err << 32 | ntohl(ret);
 }
 }
@@ -536,9 +556,6 @@ static int build_body(struct jit_ctx *ctx)
 		case BPF_LD | BPF_B | BPF_ABS:
 		case BPF_LD | BPF_B | BPF_ABS:
 			load_order = 0;
 			load_order = 0;
 load:
 load:
-			/* the interpreter will deal with the negative K */
-			if ((int)k < 0)
-				return -ENOTSUPP;
 			emit_mov_i(r_off, k, ctx);
 			emit_mov_i(r_off, k, ctx);
 load_common:
 load_common:
 			ctx->seen |= SEEN_DATA | SEEN_CALL;
 			ctx->seen |= SEEN_DATA | SEEN_CALL;
@@ -547,12 +564,24 @@ load_common:
 				emit(ARM_SUB_I(r_scratch, r_skb_hl,
 				emit(ARM_SUB_I(r_scratch, r_skb_hl,
 					       1 << load_order), ctx);
 					       1 << load_order), ctx);
 				emit(ARM_CMP_R(r_scratch, r_off), ctx);
 				emit(ARM_CMP_R(r_scratch, r_off), ctx);
-				condt = ARM_COND_HS;
+				condt = ARM_COND_GE;
 			} else {
 			} else {
 				emit(ARM_CMP_R(r_skb_hl, r_off), ctx);
 				emit(ARM_CMP_R(r_skb_hl, r_off), ctx);
 				condt = ARM_COND_HI;
 				condt = ARM_COND_HI;
 			}
 			}
 
 
+			/*
+			 * test for negative offset, only if we are
+			 * currently scheduled to take the fast
+			 * path. this will update the flags so that
+			 * the slowpath instruction are ignored if the
+			 * offset is negative.
+			 *
+			 * for loard_order == 0 the HI condition will
+			 * make loads at offset 0 take the slow path too.
+			 */
+			_emit(condt, ARM_CMP_I(r_off, 0), ctx);
+
 			_emit(condt, ARM_ADD_R(r_scratch, r_off, r_skb_data),
 			_emit(condt, ARM_ADD_R(r_scratch, r_off, r_skb_data),
 			      ctx);
 			      ctx);
 
 
@@ -860,9 +889,11 @@ b_epilogue:
 			off = offsetof(struct sk_buff, vlan_tci);
 			off = offsetof(struct sk_buff, vlan_tci);
 			emit(ARM_LDRH_I(r_A, r_skb, off), ctx);
 			emit(ARM_LDRH_I(r_A, r_skb, off), ctx);
 			if (code == (BPF_ANC | SKF_AD_VLAN_TAG))
 			if (code == (BPF_ANC | SKF_AD_VLAN_TAG))
-				OP_IMM3(ARM_AND, r_A, r_A, VLAN_VID_MASK, ctx);
-			else
-				OP_IMM3(ARM_AND, r_A, r_A, VLAN_TAG_PRESENT, ctx);
+				OP_IMM3(ARM_AND, r_A, r_A, ~VLAN_TAG_PRESENT, ctx);
+			else {
+				OP_IMM3(ARM_LSR, r_A, r_A, 12, ctx);
+				OP_IMM3(ARM_AND, r_A, r_A, 0x1, ctx);
+			}
 			break;
 			break;
 		case BPF_ANC | SKF_AD_QUEUE:
 		case BPF_ANC | SKF_AD_QUEUE:
 			ctx->seen |= SEEN_SKB;
 			ctx->seen |= SEEN_SKB;

+ 1 - 0
arch/arm64/include/asm/Kbuild

@@ -25,6 +25,7 @@ generic-y += kvm_para.h
 generic-y += local.h
 generic-y += local.h
 generic-y += local64.h
 generic-y += local64.h
 generic-y += mcs_spinlock.h
 generic-y += mcs_spinlock.h
+generic-y += mm-arch-hooks.h
 generic-y += mman.h
 generic-y += mman.h
 generic-y += msgbuf.h
 generic-y += msgbuf.h
 generic-y += msi.h
 generic-y += msi.h

+ 0 - 15
arch/arm64/include/asm/mm-arch-hooks.h

@@ -1,15 +0,0 @@
-/*
- * Architecture specific mm hooks
- *
- * Copyright (C) 2015, IBM Corporation
- * Author: Laurent Dufour <ldufour@linux.vnet.ibm.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef _ASM_ARM64_MM_ARCH_HOOKS_H
-#define _ASM_ARM64_MM_ARCH_HOOKS_H
-
-#endif /* _ASM_ARM64_MM_ARCH_HOOKS_H */

Some files were not shown because too many files changed in this diff