浏览代码

Merge branches 'x86/urgent' and 'core/urgent' into x86/boot, to pick up fixes and avoid conflicts

Signed-off-by: Ingo Molnar <mingo@kernel.org>
Ingo Molnar 7 年之前
父节点
当前提交
177bfd725b
共有 100 个文件被更改,包括 632 次插入314 次删除
  1. 1 1
      Documentation/admin-guide/pm/intel_pstate.rst
  2. 1 1
      Documentation/admin-guide/pm/sleep-states.rst
  3. 9 1
      Documentation/bpf/bpf_devel_QA.txt
  4. 13 0
      Documentation/core-api/kernel-api.rst
  5. 4 1
      Documentation/device-mapper/thin-provisioning.txt
  6. 0 1
      Documentation/devicetree/bindings/ata/ahci-platform.txt
  7. 1 1
      Documentation/devicetree/bindings/display/panel/panel-common.txt
  8. 1 0
      Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt
  9. 7 0
      Documentation/devicetree/bindings/input/atmel,maxtouch.txt
  10. 3 1
      Documentation/devicetree/bindings/net/can/rcar_canfd.txt
  11. 1 0
      Documentation/devicetree/bindings/net/renesas,ravb.txt
  12. 3 3
      Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt
  13. 1 1
      Documentation/devicetree/bindings/serial/amlogic,meson-uart.txt
  14. 1 1
      Documentation/devicetree/bindings/serial/mvebu-uart.txt
  15. 4 0
      Documentation/devicetree/bindings/serial/renesas,sci-serial.txt
  16. 5 18
      Documentation/devicetree/bindings/thermal/exynos-thermal.txt
  17. 1 15
      Documentation/devicetree/bindings/thermal/thermal.txt
  18. 4 1
      Documentation/devicetree/bindings/usb/usb-xhci.txt
  19. 1 0
      Documentation/devicetree/bindings/vendor-prefixes.txt
  20. 8 0
      Documentation/devicetree/overlay-notes.txt
  21. 2 2
      Documentation/doc-guide/parse-headers.rst
  22. 8 8
      Documentation/driver-api/firmware/request_firmware.rst
  23. 1 1
      Documentation/driver-api/infrastructure.rst
  24. 1 1
      Documentation/driver-api/usb/typec.rst
  25. 14 18
      Documentation/i2c/dev-interface
  26. 0 2
      Documentation/ioctl/ioctl-number.txt
  27. 29 12
      Documentation/livepatch/shadow-vars.txt
  28. 1 1
      Documentation/media/uapi/rc/keytable.c.rst
  29. 1 1
      Documentation/media/uapi/v4l/v4l2grab.c.rst
  30. 3 3
      Documentation/networking/filter.txt
  31. 4 19
      Documentation/networking/ip-sysctl.txt
  32. 1 1
      Documentation/power/suspend-and-cpuhotplug.txt
  33. 0 3
      Documentation/process/magic-number.rst
  34. 2 2
      Documentation/sphinx/parse-headers.pl
  35. 11 3
      Documentation/trace/ftrace.rst
  36. 2 2
      Documentation/translations/zh_CN/video4linux/v4l2-framework.txt
  37. 8 1
      Documentation/virtual/kvm/api.txt
  38. 30 0
      Documentation/virtual/kvm/arm/psci.txt
  39. 52 49
      MAINTAINERS
  40. 2 2
      Makefile
  41. 4 0
      arch/Kconfig
  42. 14 14
      arch/arm/boot/dts/gemini-nas4220b.dts
  43. 2 2
      arch/arm/boot/dts/imx35.dtsi
  44. 2 2
      arch/arm/boot/dts/imx53.dtsi
  45. 4 4
      arch/arm/boot/dts/omap4.dtsi
  46. 25 2
      arch/arm/configs/gemini_defconfig
  47. 1 0
      arch/arm/configs/socfpga_defconfig
  48. 3 0
      arch/arm/include/asm/kvm_host.h
  49. 6 0
      arch/arm/include/uapi/asm/kvm.h
  50. 13 0
      arch/arm/kvm/guest.c
  51. 1 5
      arch/arm/mach-omap2/Makefile
  52. 3 0
      arch/arm/mach-omap2/pm-asm-offsets.c
  53. 0 1
      arch/arm/mach-omap2/sleep33xx.S
  54. 0 1
      arch/arm/mach-omap2/sleep43xx.S
  55. 2 2
      arch/arm/mach-s3c24xx/mach-jive.c
  56. 4 0
      arch/arm64/Makefile
  57. 4 0
      arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi
  58. 12 0
      arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
  59. 4 0
      arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts
  60. 4 0
      arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi
  61. 61 0
      arch/arm64/boot/dts/amlogic/meson-gxl.dtsi
  62. 4 0
      arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts
  63. 17 0
      arch/arm64/boot/dts/amlogic/meson-gxm.dtsi
  64. 0 2
      arch/arm64/boot/dts/arm/juno-motherboard.dtsi
  65. 40 40
      arch/arm64/boot/dts/broadcom/stingray/stingray-sata.dtsi
  66. 6 0
      arch/arm64/include/asm/cputype.h
  67. 1 1
      arch/arm64/include/asm/kvm_emulate.h
  68. 3 0
      arch/arm64/include/asm/kvm_host.h
  69. 1 1
      arch/arm64/include/asm/module.h
  70. 2 2
      arch/arm64/include/asm/pgtable.h
  71. 6 0
      arch/arm64/include/uapi/asm/kvm.h
  72. 1 0
      arch/arm64/kernel/cpu_errata.c
  73. 1 0
      arch/arm64/kernel/cpufeature.c
  74. 1 1
      arch/arm64/kernel/module-plts.c
  75. 1 1
      arch/arm64/kernel/module.c
  76. 10 10
      arch/arm64/kernel/ptrace.c
  77. 3 2
      arch/arm64/kernel/traps.c
  78. 13 1
      arch/arm64/kvm/guest.c
  79. 19 5
      arch/arm64/kvm/hyp/vgic-v2-cpuif-proxy.c
  80. 2 4
      arch/arm64/kvm/sys_regs.c
  81. 4 0
      arch/arm64/lib/Makefile
  82. 1 1
      arch/arm64/mm/flush.c
  83. 3 1
      arch/arm64/mm/init.c
  84. 2 2
      arch/arm64/mm/kasan_init.c
  85. 6 0
      arch/hexagon/include/asm/io.h
  86. 1 0
      arch/hexagon/lib/checksum.c
  87. 6 0
      arch/mips/boot/dts/img/boston.dts
  88. 3 1
      arch/mips/include/asm/io.h
  89. 9 2
      arch/mips/include/asm/uaccess.h
  90. 8 3
      arch/mips/lib/memset.S
  91. 3 0
      arch/parisc/Makefile
  92. 4 3
      arch/parisc/kernel/drivers.c
  93. 1 1
      arch/parisc/kernel/pci.c
  94. 1 1
      arch/parisc/kernel/time.c
  95. 11 0
      arch/parisc/kernel/traps.c
  96. 1 1
      arch/parisc/mm/init.c
  97. 21 8
      arch/powerpc/include/asm/ftrace.h
  98. 0 1
      arch/powerpc/include/asm/paca.h
  99. 1 1
      arch/powerpc/include/asm/powernv.h
  100. 5 8
      arch/powerpc/include/asm/topology.h

+ 1 - 1
Documentation/admin-guide/pm/intel_pstate.rst

@@ -145,7 +145,7 @@ feature enabled.]
 
 
 In this mode ``intel_pstate`` registers utilization update callbacks with the
 In this mode ``intel_pstate`` registers utilization update callbacks with the
 CPU scheduler in order to run a P-state selection algorithm, either
 CPU scheduler in order to run a P-state selection algorithm, either
-``powersave`` or ``performance``, depending on the ``scaling_cur_freq`` policy
+``powersave`` or ``performance``, depending on the ``scaling_governor`` policy
 setting in ``sysfs``.  The current CPU frequency information to be made
 setting in ``sysfs``.  The current CPU frequency information to be made
 available from the ``scaling_cur_freq`` policy attribute in ``sysfs`` is
 available from the ``scaling_cur_freq`` policy attribute in ``sysfs`` is
 periodically updated by those utilization update callbacks too.
 periodically updated by those utilization update callbacks too.

+ 1 - 1
Documentation/admin-guide/pm/sleep-states.rst

@@ -15,7 +15,7 @@ Sleep States That Can Be Supported
 ==================================
 ==================================
 
 
 Depending on its configuration and the capabilities of the platform it runs on,
 Depending on its configuration and the capabilities of the platform it runs on,
-the Linux kernel can support up to four system sleep states, includig
+the Linux kernel can support up to four system sleep states, including
 hibernation and up to three variants of system suspend.  The sleep states that
 hibernation and up to three variants of system suspend.  The sleep states that
 can be supported by the kernel are listed below.
 can be supported by the kernel are listed below.
 
 

+ 9 - 1
Documentation/bpf/bpf_devel_QA.txt

@@ -557,6 +557,14 @@ A: Although LLVM IR generation and optimization try to stay architecture
        pulls in some header files containing file scope host assembly codes.
        pulls in some header files containing file scope host assembly codes.
      - You can add "-fno-jump-tables" to work around the switch table issue.
      - You can add "-fno-jump-tables" to work around the switch table issue.
 
 
-   Otherwise, you can use bpf target.
+   Otherwise, you can use bpf target. Additionally, you _must_ use bpf target
+   when:
+
+     - Your program uses data structures with pointer or long / unsigned long
+       types that interface with BPF helpers or context data structures. Access
+       into these structures is verified by the BPF verifier and may result
+       in verification failures if the native architecture is not aligned with
+       the BPF architecture, e.g. 64-bit. An example of this is
+       BPF_PROG_TYPE_SK_MSG require '-target bpf'
 
 
 Happy BPF hacking!
 Happy BPF hacking!

+ 13 - 0
Documentation/core-api/kernel-api.rst

@@ -136,6 +136,19 @@ Sorting
 .. kernel-doc:: lib/list_sort.c
 .. kernel-doc:: lib/list_sort.c
    :export:
    :export:
 
 
+Text Searching
+--------------
+
+.. kernel-doc:: lib/textsearch.c
+   :doc: ts_intro
+
+.. kernel-doc:: lib/textsearch.c
+   :export:
+
+.. kernel-doc:: include/linux/textsearch.h
+   :functions: textsearch_find textsearch_next \
+               textsearch_get_pattern textsearch_get_pattern_len
+
 UUID/GUID
 UUID/GUID
 ---------
 ---------
 
 

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

@@ -264,7 +264,10 @@ i) Constructor
 			   data device, but just remove the mapping.
 			   data device, but just remove the mapping.
 
 
       read_only: Don't allow any changes to be made to the pool
       read_only: Don't allow any changes to be made to the pool
-		 metadata.
+		 metadata.  This mode is only available after the
+		 thin-pool has been created and first used in full
+		 read/write mode.  It cannot be specified on initial
+		 thin-pool creation.
 
 
       error_if_no_space: Error IOs, instead of queueing, if no space.
       error_if_no_space: Error IOs, instead of queueing, if no space.
 
 

+ 0 - 1
Documentation/devicetree/bindings/ata/ahci-platform.txt

@@ -30,7 +30,6 @@ compatible:
 Optional properties:
 Optional properties:
 - dma-coherent      : Present if dma operations are coherent
 - dma-coherent      : Present if dma operations are coherent
 - clocks            : a list of phandle + clock specifier pairs
 - clocks            : a list of phandle + clock specifier pairs
-- resets            : a list of phandle + reset specifier pairs
 - target-supply     : regulator for SATA target power
 - target-supply     : regulator for SATA target power
 - phys              : reference to the SATA PHY node
 - phys              : reference to the SATA PHY node
 - phy-names         : must be "sata-phy"
 - phy-names         : must be "sata-phy"

+ 1 - 1
Documentation/devicetree/bindings/display/panel/panel-common.txt

@@ -38,7 +38,7 @@ Display Timings
   require specific display timings. The panel-timing subnode expresses those
   require specific display timings. The panel-timing subnode expresses those
   timings as specified in the timing subnode section of the display timing
   timings as specified in the timing subnode section of the display timing
   bindings defined in
   bindings defined in
-  Documentation/devicetree/bindings/display/display-timing.txt.
+  Documentation/devicetree/bindings/display/panel/display-timing.txt.
 
 
 
 
 Connectivity
 Connectivity

+ 1 - 0
Documentation/devicetree/bindings/dma/renesas,rcar-dmac.txt

@@ -26,6 +26,7 @@ Required Properties:
 		- "renesas,dmac-r8a7794" (R-Car E2)
 		- "renesas,dmac-r8a7794" (R-Car E2)
 		- "renesas,dmac-r8a7795" (R-Car H3)
 		- "renesas,dmac-r8a7795" (R-Car H3)
 		- "renesas,dmac-r8a7796" (R-Car M3-W)
 		- "renesas,dmac-r8a7796" (R-Car M3-W)
+		- "renesas,dmac-r8a77965" (R-Car M3-N)
 		- "renesas,dmac-r8a77970" (R-Car V3M)
 		- "renesas,dmac-r8a77970" (R-Car V3M)
 		- "renesas,dmac-r8a77980" (R-Car V3H)
 		- "renesas,dmac-r8a77980" (R-Car V3H)
 
 

+ 7 - 0
Documentation/devicetree/bindings/input/atmel,maxtouch.txt

@@ -4,6 +4,13 @@ Required properties:
 - compatible:
 - compatible:
     atmel,maxtouch
     atmel,maxtouch
 
 
+    The following compatibles have been used in various products but are
+    deprecated:
+	atmel,qt602240_ts
+	atmel,atmel_mxt_ts
+	atmel,atmel_mxt_tp
+	atmel,mXT224
+
 - reg: The I2C address of the device
 - reg: The I2C address of the device
 
 
 - interrupts: The sink for the touchpad's IRQ output
 - interrupts: The sink for the touchpad's IRQ output

+ 3 - 1
Documentation/devicetree/bindings/net/can/rcar_canfd.txt

@@ -5,7 +5,9 @@ Required properties:
 - compatible: Must contain one or more of the following:
 - compatible: Must contain one or more of the following:
   - "renesas,rcar-gen3-canfd" for R-Car Gen3 compatible controller.
   - "renesas,rcar-gen3-canfd" for R-Car Gen3 compatible controller.
   - "renesas,r8a7795-canfd" for R8A7795 (R-Car H3) compatible controller.
   - "renesas,r8a7795-canfd" for R8A7795 (R-Car H3) compatible controller.
-  - "renesas,r8a7796-canfd" for R8A7796 (R-Car M3) compatible controller.
+  - "renesas,r8a7796-canfd" for R8A7796 (R-Car M3-W) compatible controller.
+  - "renesas,r8a77970-canfd" for R8A77970 (R-Car V3M) compatible controller.
+  - "renesas,r8a77980-canfd" for R8A77980 (R-Car V3H) compatible controller.
 
 
   When compatible with the generic version, nodes must list the
   When compatible with the generic version, nodes must list the
   SoC-specific version corresponding to the platform first, followed by the
   SoC-specific version corresponding to the platform first, followed by the

+ 1 - 0
Documentation/devicetree/bindings/net/renesas,ravb.txt

@@ -18,6 +18,7 @@ Required properties:
 
 
       - "renesas,etheravb-r8a7795" for the R8A7795 SoC.
       - "renesas,etheravb-r8a7795" for the R8A7795 SoC.
       - "renesas,etheravb-r8a7796" for the R8A7796 SoC.
       - "renesas,etheravb-r8a7796" for the R8A7796 SoC.
+      - "renesas,etheravb-r8a77965" for the R8A77965 SoC.
       - "renesas,etheravb-r8a77970" for the R8A77970 SoC.
       - "renesas,etheravb-r8a77970" for the R8A77970 SoC.
       - "renesas,etheravb-r8a77980" for the R8A77980 SoC.
       - "renesas,etheravb-r8a77980" for the R8A77980 SoC.
       - "renesas,etheravb-r8a77995" for the R8A77995 SoC.
       - "renesas,etheravb-r8a77995" for the R8A77995 SoC.

+ 3 - 3
Documentation/devicetree/bindings/pinctrl/allwinner,sunxi-pinctrl.txt

@@ -56,9 +56,9 @@ pins it needs, and how they should be configured, with regard to muxer
 configuration, drive strength and pullups. If one of these options is
 configuration, drive strength and pullups. If one of these options is
 not set, its actual value will be unspecified.
 not set, its actual value will be unspecified.
 
 
-This driver supports the generic pin multiplexing and configuration
-bindings. For details on each properties, you can refer to
-./pinctrl-bindings.txt.
+Allwinner A1X Pin Controller supports the generic pin multiplexing and
+configuration bindings. For details on each properties, you can refer to
+ ./pinctrl-bindings.txt.
 
 
 Required sub-node properties:
 Required sub-node properties:
   - pins
   - pins

+ 1 - 1
Documentation/devicetree/bindings/serial/amlogic,meson-uart.txt

@@ -21,7 +21,7 @@ Required properties:
 - interrupts : identifier to the device interrupt
 - interrupts : identifier to the device interrupt
 - clocks : a list of phandle + clock-specifier pairs, one for each
 - clocks : a list of phandle + clock-specifier pairs, one for each
 	   entry in clock names.
 	   entry in clock names.
-- clocks-names :
+- clock-names :
    * "xtal" for external xtal clock identifier
    * "xtal" for external xtal clock identifier
    * "pclk" for the bus core clock, either the clk81 clock or the gate clock
    * "pclk" for the bus core clock, either the clk81 clock or the gate clock
    * "baud" for the source of the baudrate generator, can be either the xtal
    * "baud" for the source of the baudrate generator, can be either the xtal

+ 1 - 1
Documentation/devicetree/bindings/serial/mvebu-uart.txt

@@ -24,7 +24,7 @@ Required properties:
     - Must contain two elements for the extended variant of the IP
     - Must contain two elements for the extended variant of the IP
       (marvell,armada-3700-uart-ext): "uart-tx" and "uart-rx",
       (marvell,armada-3700-uart-ext): "uart-tx" and "uart-rx",
       respectively the UART TX interrupt and the UART RX interrupt. A
       respectively the UART TX interrupt and the UART RX interrupt. A
-      corresponding interrupts-names property must be defined.
+      corresponding interrupt-names property must be defined.
     - For backward compatibility reasons, a single element interrupts
     - For backward compatibility reasons, a single element interrupts
       property is also supported for the standard variant of the IP,
       property is also supported for the standard variant of the IP,
       containing only the UART sum interrupt. This form is deprecated
       containing only the UART sum interrupt. This form is deprecated

+ 4 - 0
Documentation/devicetree/bindings/serial/renesas,sci-serial.txt

@@ -17,6 +17,8 @@ Required properties:
     - "renesas,scifa-r8a7745" for R8A7745 (RZ/G1E) SCIFA compatible UART.
     - "renesas,scifa-r8a7745" for R8A7745 (RZ/G1E) SCIFA compatible UART.
     - "renesas,scifb-r8a7745" for R8A7745 (RZ/G1E) SCIFB compatible UART.
     - "renesas,scifb-r8a7745" for R8A7745 (RZ/G1E) SCIFB compatible UART.
     - "renesas,hscif-r8a7745" for R8A7745 (RZ/G1E) HSCIF compatible UART.
     - "renesas,hscif-r8a7745" for R8A7745 (RZ/G1E) HSCIF compatible UART.
+    - "renesas,scif-r8a77470" for R8A77470 (RZ/G1C) SCIF compatible UART.
+    - "renesas,hscif-r8a77470" for R8A77470 (RZ/G1C) HSCIF compatible UART.
     - "renesas,scif-r8a7778" for R8A7778 (R-Car M1) SCIF compatible UART.
     - "renesas,scif-r8a7778" for R8A7778 (R-Car M1) SCIF compatible UART.
     - "renesas,scif-r8a7779" for R8A7779 (R-Car H1) SCIF compatible UART.
     - "renesas,scif-r8a7779" for R8A7779 (R-Car H1) SCIF compatible UART.
     - "renesas,scif-r8a7790" for R8A7790 (R-Car H2) SCIF compatible UART.
     - "renesas,scif-r8a7790" for R8A7790 (R-Car H2) SCIF compatible UART.
@@ -41,6 +43,8 @@ Required properties:
     - "renesas,hscif-r8a7795" for R8A7795 (R-Car H3) HSCIF compatible UART.
     - "renesas,hscif-r8a7795" for R8A7795 (R-Car H3) HSCIF compatible UART.
     - "renesas,scif-r8a7796" for R8A7796 (R-Car M3-W) SCIF compatible UART.
     - "renesas,scif-r8a7796" for R8A7796 (R-Car M3-W) SCIF compatible UART.
     - "renesas,hscif-r8a7796" for R8A7796 (R-Car M3-W) HSCIF compatible UART.
     - "renesas,hscif-r8a7796" for R8A7796 (R-Car M3-W) HSCIF compatible UART.
+    - "renesas,scif-r8a77965" for R8A77965 (R-Car M3-N) SCIF compatible UART.
+    - "renesas,hscif-r8a77965" for R8A77965 (R-Car M3-N) HSCIF compatible UART.
     - "renesas,scif-r8a77970" for R8A77970 (R-Car V3M) SCIF compatible UART.
     - "renesas,scif-r8a77970" for R8A77970 (R-Car V3M) SCIF compatible UART.
     - "renesas,hscif-r8a77970" for R8A77970 (R-Car V3M) HSCIF compatible UART.
     - "renesas,hscif-r8a77970" for R8A77970 (R-Car V3M) HSCIF compatible UART.
     - "renesas,scif-r8a77980" for R8A77980 (R-Car V3H) SCIF compatible UART.
     - "renesas,scif-r8a77980" for R8A77980 (R-Car V3H) SCIF compatible UART.

+ 5 - 18
Documentation/devicetree/bindings/thermal/exynos-thermal.txt

@@ -49,19 +49,6 @@ on the SoC (only first trip points defined in DT will be configured):
  - samsung,exynos5433-tmu: 8
  - samsung,exynos5433-tmu: 8
  - samsung,exynos7-tmu: 8
  - samsung,exynos7-tmu: 8
 
 
-Following properties are mandatory (depending on SoC):
-- samsung,tmu_gain: Gain value for internal TMU operation.
-- samsung,tmu_reference_voltage: Value of TMU IP block's reference voltage
-- samsung,tmu_noise_cancel_mode: Mode for noise cancellation
-- samsung,tmu_efuse_value: Default level of temperature - it is needed when
-			   in factory fusing produced wrong value
-- samsung,tmu_min_efuse_value: Minimum temperature fused value
-- samsung,tmu_max_efuse_value: Maximum temperature fused value
-- samsung,tmu_first_point_trim: First point trimming value
-- samsung,tmu_second_point_trim: Second point trimming value
-- samsung,tmu_default_temp_offset: Default temperature offset
-- samsung,tmu_cal_type: Callibration type
-
 ** Optional properties:
 ** Optional properties:
 
 
 - vtmu-supply: This entry is optional and provides the regulator node supplying
 - vtmu-supply: This entry is optional and provides the regulator node supplying
@@ -78,7 +65,7 @@ Example 1):
 		clocks = <&clock 383>;
 		clocks = <&clock 383>;
 		clock-names = "tmu_apbif";
 		clock-names = "tmu_apbif";
 		vtmu-supply = <&tmu_regulator_node>;
 		vtmu-supply = <&tmu_regulator_node>;
-		#include "exynos4412-tmu-sensor-conf.dtsi"
+		#thermal-sensor-cells = <0>;
 	};
 	};
 
 
 Example 2):
 Example 2):
@@ -89,7 +76,7 @@ Example 2):
 		interrupts = <0 58 0>;
 		interrupts = <0 58 0>;
 		clocks = <&clock 21>;
 		clocks = <&clock 21>;
 		clock-names = "tmu_apbif";
 		clock-names = "tmu_apbif";
-		#include "exynos5440-tmu-sensor-conf.dtsi"
+		#thermal-sensor-cells = <0>;
 	};
 	};
 
 
 Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register")
 Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register")
@@ -99,7 +86,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register")
 		interrupts = <0 184 0>;
 		interrupts = <0 184 0>;
 		clocks = <&clock 318>, <&clock 318>;
 		clocks = <&clock 318>, <&clock 318>;
 		clock-names = "tmu_apbif", "tmu_triminfo_apbif";
 		clock-names = "tmu_apbif", "tmu_triminfo_apbif";
-		#include "exynos4412-tmu-sensor-conf.dtsi"
+		#thermal-sensor-cells = <0>;
 	};
 	};
 
 
 	tmu_cpu3: tmu@1006c000 {
 	tmu_cpu3: tmu@1006c000 {
@@ -108,7 +95,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register")
 		interrupts = <0 185 0>;
 		interrupts = <0 185 0>;
 		clocks = <&clock 318>, <&clock 319>;
 		clocks = <&clock 318>, <&clock 319>;
 		clock-names = "tmu_apbif", "tmu_triminfo_apbif";
 		clock-names = "tmu_apbif", "tmu_triminfo_apbif";
-		#include "exynos4412-tmu-sensor-conf.dtsi"
+		#thermal-sensor-cells = <0>;
 	};
 	};
 
 
 	tmu_gpu: tmu@100a0000 {
 	tmu_gpu: tmu@100a0000 {
@@ -117,7 +104,7 @@ Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register")
 		interrupts = <0 215 0>;
 		interrupts = <0 215 0>;
 		clocks = <&clock 319>, <&clock 318>;
 		clocks = <&clock 319>, <&clock 318>;
 		clock-names = "tmu_apbif", "tmu_triminfo_apbif";
 		clock-names = "tmu_apbif", "tmu_triminfo_apbif";
-		#include "exynos4412-tmu-sensor-conf.dtsi"
+		#thermal-sensor-cells = <0>;
 	};
 	};
 
 
 Note: For multi-instance tmu each instance should have an alias correctly
 Note: For multi-instance tmu each instance should have an alias correctly

+ 1 - 15
Documentation/devicetree/bindings/thermal/thermal.txt

@@ -55,8 +55,7 @@ of heat dissipation). For example a fan's cooling states correspond to
 the different fan speeds possible. Cooling states are referred to by
 the different fan speeds possible. Cooling states are referred to by
 single unsigned integers, where larger numbers mean greater heat
 single unsigned integers, where larger numbers mean greater heat
 dissipation. The precise set of cooling states associated with a device
 dissipation. The precise set of cooling states associated with a device
-(as referred to by the cooling-min-level and cooling-max-level
-properties) should be defined in a particular device's binding.
+should be defined in a particular device's binding.
 For more examples of cooling devices, refer to the example sections below.
 For more examples of cooling devices, refer to the example sections below.
 
 
 Required properties:
 Required properties:
@@ -69,15 +68,6 @@ Required properties:
 			See Cooling device maps section below for more details
 			See Cooling device maps section below for more details
 			on how consumers refer to cooling devices.
 			on how consumers refer to cooling devices.
 
 
-Optional properties:
-- cooling-min-level:	An integer indicating the smallest
-  Type: unsigned	cooling state accepted. Typically 0.
-  Size: one cell
-
-- cooling-max-level:	An integer indicating the largest
-  Type: unsigned	cooling state accepted.
-  Size: one cell
-
 * Trip points
 * Trip points
 
 
 The trip node is a node to describe a point in the temperature domain
 The trip node is a node to describe a point in the temperature domain
@@ -226,8 +216,6 @@ cpus {
 			396000  950000
 			396000  950000
 			198000  850000
 			198000  850000
 		>;
 		>;
-		cooling-min-level = <0>;
-		cooling-max-level = <3>;
 		#cooling-cells = <2>; /* min followed by max */
 		#cooling-cells = <2>; /* min followed by max */
 	};
 	};
 	...
 	...
@@ -241,8 +229,6 @@ cpus {
 	 */
 	 */
 	fan0: fan@48 {
 	fan0: fan@48 {
 		...
 		...
-		cooling-min-level = <0>;
-		cooling-max-level = <9>;
 		#cooling-cells = <2>; /* min followed by max */
 		#cooling-cells = <2>; /* min followed by max */
 	};
 	};
 };
 };

+ 4 - 1
Documentation/devicetree/bindings/usb/usb-xhci.txt

@@ -28,7 +28,10 @@ Required properties:
   - interrupts: one XHCI interrupt should be described here.
   - interrupts: one XHCI interrupt should be described here.
 
 
 Optional properties:
 Optional properties:
-  - clocks: reference to a clock
+  - clocks: reference to the clocks
+  - clock-names: mandatory if there is a second clock, in this case
+    the name must be "core" for the first clock and "reg" for the
+    second one
   - usb2-lpm-disable: indicate if we don't want to enable USB2 HW LPM
   - usb2-lpm-disable: indicate if we don't want to enable USB2 HW LPM
   - usb3-lpm-capable: determines if platform is USB3 LPM capable
   - usb3-lpm-capable: determines if platform is USB3 LPM capable
   - quirk-broken-port-ped: set if the controller has broken port disable mechanism
   - quirk-broken-port-ped: set if the controller has broken port disable mechanism

+ 1 - 0
Documentation/devicetree/bindings/vendor-prefixes.txt

@@ -182,6 +182,7 @@ karo	Ka-Ro electronics GmbH
 keithkoep	Keith & Koep GmbH
 keithkoep	Keith & Koep GmbH
 keymile	Keymile GmbH
 keymile	Keymile GmbH
 khadas	Khadas
 khadas	Khadas
+kiebackpeter    Kieback & Peter GmbH
 kinetic Kinetic Technologies
 kinetic Kinetic Technologies
 kingnovel	Kingnovel Technology Co., Ltd.
 kingnovel	Kingnovel Technology Co., Ltd.
 kosagi	Sutajio Ko-Usagi PTE Ltd.
 kosagi	Sutajio Ko-Usagi PTE Ltd.

+ 8 - 0
Documentation/devicetree/overlay-notes.txt

@@ -98,6 +98,14 @@ Finally, if you need to remove all overlays in one-go, just call
 of_overlay_remove_all() which will remove every single one in the correct
 of_overlay_remove_all() which will remove every single one in the correct
 order.
 order.
 
 
+In addition, there is the option to register notifiers that get called on
+overlay operations. See of_overlay_notifier_register/unregister and
+enum of_overlay_notify_action for details.
+
+Note that a notifier callback is not supposed to store pointers to a device
+tree node or its content beyond OF_OVERLAY_POST_REMOVE corresponding to the
+respective node it received.
+
 Overlay DTS Format
 Overlay DTS Format
 ------------------
 ------------------
 
 

+ 2 - 2
Documentation/doc-guide/parse-headers.rst

@@ -177,14 +177,14 @@ BUGS
 ****
 ****
 
 
 
 
-Report bugs to Mauro Carvalho Chehab <mchehab@s-opensource.com>
+Report bugs to Mauro Carvalho Chehab <mchehab@kernel.org>
 
 
 
 
 COPYRIGHT
 COPYRIGHT
 *********
 *********
 
 
 
 
-Copyright (c) 2016 by Mauro Carvalho Chehab <mchehab@s-opensource.com>.
+Copyright (c) 2016 by Mauro Carvalho Chehab <mchehab+samsung@kernel.org>.
 
 
 License GPLv2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>.
 License GPLv2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>.
 
 

+ 8 - 8
Documentation/driver-api/firmware/request_firmware.rst

@@ -17,17 +17,17 @@ an error is returned.
 
 
 request_firmware
 request_firmware
 ----------------
 ----------------
-.. kernel-doc:: drivers/base/firmware_class.c
+.. kernel-doc:: drivers/base/firmware_loader/main.c
    :functions: request_firmware
    :functions: request_firmware
 
 
 request_firmware_direct
 request_firmware_direct
 -----------------------
 -----------------------
-.. kernel-doc:: drivers/base/firmware_class.c
+.. kernel-doc:: drivers/base/firmware_loader/main.c
    :functions: request_firmware_direct
    :functions: request_firmware_direct
 
 
 request_firmware_into_buf
 request_firmware_into_buf
 -------------------------
 -------------------------
-.. kernel-doc:: drivers/base/firmware_class.c
+.. kernel-doc:: drivers/base/firmware_loader/main.c
    :functions: request_firmware_into_buf
    :functions: request_firmware_into_buf
 
 
 Asynchronous firmware requests
 Asynchronous firmware requests
@@ -41,7 +41,7 @@ in atomic contexts.
 
 
 request_firmware_nowait
 request_firmware_nowait
 -----------------------
 -----------------------
-.. kernel-doc:: drivers/base/firmware_class.c
+.. kernel-doc:: drivers/base/firmware_loader/main.c
    :functions: request_firmware_nowait
    :functions: request_firmware_nowait
 
 
 Special optimizations on reboot
 Special optimizations on reboot
@@ -50,12 +50,12 @@ Special optimizations on reboot
 Some devices have an optimization in place to enable the firmware to be
 Some devices have an optimization in place to enable the firmware to be
 retained during system reboot. When such optimizations are used the driver
 retained during system reboot. When such optimizations are used the driver
 author must ensure the firmware is still available on resume from suspend,
 author must ensure the firmware is still available on resume from suspend,
-this can be done with firmware_request_cache() insted of requesting for the
-firmare to be loaded.
+this can be done with firmware_request_cache() instead of requesting for the
+firmware to be loaded.
 
 
 firmware_request_cache()
 firmware_request_cache()
------------------------
-.. kernel-doc:: drivers/base/firmware_class.c
+------------------------
+.. kernel-doc:: drivers/base/firmware_loader/main.c
    :functions: firmware_request_cache
    :functions: firmware_request_cache
 
 
 request firmware API expected driver use
 request firmware API expected driver use

+ 1 - 1
Documentation/driver-api/infrastructure.rst

@@ -28,7 +28,7 @@ Device Drivers Base
 .. kernel-doc:: drivers/base/node.c
 .. kernel-doc:: drivers/base/node.c
    :internal:
    :internal:
 
 
-.. kernel-doc:: drivers/base/firmware_class.c
+.. kernel-doc:: drivers/base/firmware_loader/main.c
    :export:
    :export:
 
 
 .. kernel-doc:: drivers/base/transport_class.c
 .. kernel-doc:: drivers/base/transport_class.c

+ 1 - 1
Documentation/driver-api/usb/typec.rst

@@ -210,7 +210,7 @@ If the connector is dual-role capable, there may also be a switch for the data
 role. USB Type-C Connector Class does not supply separate API for them. The
 role. USB Type-C Connector Class does not supply separate API for them. The
 port drivers can use USB Role Class API with those.
 port drivers can use USB Role Class API with those.
 
 
-Illustration of the muxes behind a connector that supports an alternate mode:
+Illustration of the muxes behind a connector that supports an alternate mode::
 
 
                      ------------------------
                      ------------------------
                      |       Connector      |
                      |       Connector      |

+ 14 - 18
Documentation/i2c/dev-interface

@@ -9,8 +9,8 @@ i2c adapters present on your system at a given time. i2cdetect is part of
 the i2c-tools package.
 the i2c-tools package.
 
 
 I2C device files are character device files with major device number 89
 I2C device files are character device files with major device number 89
-and a minor device number corresponding to the number assigned as 
-explained above. They should be called "i2c-%d" (i2c-0, i2c-1, ..., 
+and a minor device number corresponding to the number assigned as
+explained above. They should be called "i2c-%d" (i2c-0, i2c-1, ...,
 i2c-10, ...). All 256 minor device numbers are reserved for i2c.
 i2c-10, ...). All 256 minor device numbers are reserved for i2c.
 
 
 
 
@@ -23,11 +23,6 @@ First, you need to include these two headers:
   #include <linux/i2c-dev.h>
   #include <linux/i2c-dev.h>
   #include <i2c/smbus.h>
   #include <i2c/smbus.h>
 
 
-(Please note that there are two files named "i2c-dev.h" out there. One is
-distributed with the Linux kernel and the other one is included in the
-source tree of i2c-tools. They used to be different in content but since 2012
-they're identical. You should use "linux/i2c-dev.h").
-
 Now, you have to decide which adapter you want to access. You should
 Now, you have to decide which adapter you want to access. You should
 inspect /sys/class/i2c-dev/ or run "i2cdetect -l" to decide this.
 inspect /sys/class/i2c-dev/ or run "i2cdetect -l" to decide this.
 Adapter numbers are assigned somewhat dynamically, so you can not
 Adapter numbers are assigned somewhat dynamically, so you can not
@@ -38,7 +33,7 @@ Next thing, open the device file, as follows:
   int file;
   int file;
   int adapter_nr = 2; /* probably dynamically determined */
   int adapter_nr = 2; /* probably dynamically determined */
   char filename[20];
   char filename[20];
-  
+
   snprintf(filename, 19, "/dev/i2c-%d", adapter_nr);
   snprintf(filename, 19, "/dev/i2c-%d", adapter_nr);
   file = open(filename, O_RDWR);
   file = open(filename, O_RDWR);
   if (file < 0) {
   if (file < 0) {
@@ -72,8 +67,10 @@ the device supports them. Both are illustrated below.
     /* res contains the read word */
     /* res contains the read word */
   }
   }
 
 
-  /* Using I2C Write, equivalent of 
-     i2c_smbus_write_word_data(file, reg, 0x6543) */
+  /*
+   * Using I2C Write, equivalent of
+   * i2c_smbus_write_word_data(file, reg, 0x6543)
+   */
   buf[0] = reg;
   buf[0] = reg;
   buf[1] = 0x43;
   buf[1] = 0x43;
   buf[2] = 0x65;
   buf[2] = 0x65;
@@ -140,14 +137,14 @@ ioctl(file, I2C_RDWR, struct i2c_rdwr_ioctl_data *msgset)
   set in each message, overriding the values set with the above ioctl's.
   set in each message, overriding the values set with the above ioctl's.
 
 
 ioctl(file, I2C_SMBUS, struct i2c_smbus_ioctl_data *args)
 ioctl(file, I2C_SMBUS, struct i2c_smbus_ioctl_data *args)
-  Not meant to be called  directly; instead, use the access functions
-  below.
+  If possible, use the provided i2c_smbus_* methods described below instead
+  of issuing direct ioctls.
 
 
 You can do plain i2c transactions by using read(2) and write(2) calls.
 You can do plain i2c transactions by using read(2) and write(2) calls.
 You do not need to pass the address byte; instead, set it through
 You do not need to pass the address byte; instead, set it through
 ioctl I2C_SLAVE before you try to access the device.
 ioctl I2C_SLAVE before you try to access the device.
 
 
-You can do SMBus level transactions (see documentation file smbus-protocol 
+You can do SMBus level transactions (see documentation file smbus-protocol
 for details) through the following functions:
 for details) through the following functions:
   __s32 i2c_smbus_write_quick(int file, __u8 value);
   __s32 i2c_smbus_write_quick(int file, __u8 value);
   __s32 i2c_smbus_read_byte(int file);
   __s32 i2c_smbus_read_byte(int file);
@@ -158,7 +155,7 @@ for details) through the following functions:
   __s32 i2c_smbus_write_word_data(int file, __u8 command, __u16 value);
   __s32 i2c_smbus_write_word_data(int file, __u8 command, __u16 value);
   __s32 i2c_smbus_process_call(int file, __u8 command, __u16 value);
   __s32 i2c_smbus_process_call(int file, __u8 command, __u16 value);
   __s32 i2c_smbus_read_block_data(int file, __u8 command, __u8 *values);
   __s32 i2c_smbus_read_block_data(int file, __u8 command, __u8 *values);
-  __s32 i2c_smbus_write_block_data(int file, __u8 command, __u8 length, 
+  __s32 i2c_smbus_write_block_data(int file, __u8 command, __u8 length,
                                    __u8 *values);
                                    __u8 *values);
 All these transactions return -1 on failure; you can read errno to see
 All these transactions return -1 on failure; you can read errno to see
 what happened. The 'write' transactions return 0 on success; the
 what happened. The 'write' transactions return 0 on success; the
@@ -166,10 +163,9 @@ what happened. The 'write' transactions return 0 on success; the
 returns the number of values read. The block buffers need not be longer
 returns the number of values read. The block buffers need not be longer
 than 32 bytes.
 than 32 bytes.
 
 
-The above functions are all inline functions, that resolve to calls to
-the i2c_smbus_access function, that on its turn calls a specific ioctl
-with the data in a specific format. Read the source code if you
-want to know what happens behind the screens.
+The above functions are made available by linking against the libi2c library,
+which is provided by the i2c-tools project.  See:
+https://git.kernel.org/pub/scm/utils/i2c-tools/i2c-tools.git/.
 
 
 
 
 Implementation details
 Implementation details

+ 0 - 2
Documentation/ioctl/ioctl-number.txt

@@ -217,7 +217,6 @@ Code  Seq#(hex)	Include File		Comments
 'd'	02-40	pcmcia/ds.h		conflict!
 'd'	02-40	pcmcia/ds.h		conflict!
 'd'	F0-FF	linux/digi1.h
 'd'	F0-FF	linux/digi1.h
 'e'	all	linux/digi1.h		conflict!
 'e'	all	linux/digi1.h		conflict!
-'e'	00-1F	drivers/net/irda/irtty-sir.h	conflict!
 'f'	00-1F	linux/ext2_fs.h		conflict!
 'f'	00-1F	linux/ext2_fs.h		conflict!
 'f'	00-1F	linux/ext3_fs.h		conflict!
 'f'	00-1F	linux/ext3_fs.h		conflict!
 'f'	00-0F	fs/jfs/jfs_dinode.h	conflict!
 'f'	00-0F	fs/jfs/jfs_dinode.h	conflict!
@@ -247,7 +246,6 @@ Code  Seq#(hex)	Include File		Comments
 'm'	all	linux/synclink.h	conflict!
 'm'	all	linux/synclink.h	conflict!
 'm'	00-19	drivers/message/fusion/mptctl.h	conflict!
 'm'	00-19	drivers/message/fusion/mptctl.h	conflict!
 'm'	00	drivers/scsi/megaraid/megaraid_ioctl.h	conflict!
 'm'	00	drivers/scsi/megaraid/megaraid_ioctl.h	conflict!
-'m'	00-1F	net/irda/irmod.h	conflict!
 'n'	00-7F	linux/ncp_fs.h and fs/ncpfs/ioctl.c
 'n'	00-7F	linux/ncp_fs.h and fs/ncpfs/ioctl.c
 'n'	80-8F	uapi/linux/nilfs2_api.h	NILFS2
 'n'	80-8F	uapi/linux/nilfs2_api.h	NILFS2
 'n'	E0-FF	linux/matroxfb.h	matroxfb
 'n'	E0-FF	linux/matroxfb.h	matroxfb

+ 29 - 12
Documentation/livepatch/shadow-vars.txt

@@ -34,9 +34,13 @@ meta-data and shadow-data:
   - data[] - storage for shadow data
   - data[] - storage for shadow data
 
 
 It is important to note that the klp_shadow_alloc() and
 It is important to note that the klp_shadow_alloc() and
-klp_shadow_get_or_alloc() calls, described below, store a *copy* of the
-data that the functions are provided.  Callers should provide whatever
-mutual exclusion is required of the shadow data.
+klp_shadow_get_or_alloc() are zeroing the variable by default.
+They also allow to call a custom constructor function when a non-zero
+value is needed. Callers should provide whatever mutual exclusion
+is required.
+
+Note that the constructor is called under klp_shadow_lock spinlock. It allows
+to do actions that can be done only once when a new variable is allocated.
 
 
 * klp_shadow_get() - retrieve a shadow variable data pointer
 * klp_shadow_get() - retrieve a shadow variable data pointer
   - search hashtable for <obj, id> pair
   - search hashtable for <obj, id> pair
@@ -47,7 +51,7 @@ mutual exclusion is required of the shadow data.
     - WARN and return NULL
     - WARN and return NULL
   - if <obj, id> doesn't already exist
   - if <obj, id> doesn't already exist
     - allocate a new shadow variable
     - allocate a new shadow variable
-    - copy data into the new shadow variable
+    - initialize the variable using a custom constructor and data when provided
     - add <obj, id> to the global hashtable
     - add <obj, id> to the global hashtable
 
 
 * klp_shadow_get_or_alloc() - get existing or alloc a new shadow variable
 * klp_shadow_get_or_alloc() - get existing or alloc a new shadow variable
@@ -56,16 +60,20 @@ mutual exclusion is required of the shadow data.
     - return existing shadow variable
     - return existing shadow variable
   - if <obj, id> doesn't already exist
   - if <obj, id> doesn't already exist
     - allocate a new shadow variable
     - allocate a new shadow variable
-    - copy data into the new shadow variable
+    - initialize the variable using a custom constructor and data when provided
     - add <obj, id> pair to the global hashtable
     - add <obj, id> pair to the global hashtable
 
 
 * klp_shadow_free() - detach and free a <obj, id> shadow variable
 * klp_shadow_free() - detach and free a <obj, id> shadow variable
   - find and remove a <obj, id> reference from global hashtable
   - find and remove a <obj, id> reference from global hashtable
-    - if found, free shadow variable
+    - if found
+      - call destructor function if defined
+      - free shadow variable
 
 
 * klp_shadow_free_all() - detach and free all <*, id> shadow variables
 * klp_shadow_free_all() - detach and free all <*, id> shadow variables
   - find and remove any <*, id> references from global hashtable
   - find and remove any <*, id> references from global hashtable
-    - if found, free shadow variable
+    - if found
+      - call destructor function if defined
+      - free shadow variable
 
 
 
 
 2. Use cases
 2. Use cases
@@ -107,7 +115,8 @@ struct sta_info *sta_info_alloc(struct ieee80211_sub_if_data *sdata,
 	sta = kzalloc(sizeof(*sta) + hw->sta_data_size, gfp);
 	sta = kzalloc(sizeof(*sta) + hw->sta_data_size, gfp);
 
 
 	/* Attach a corresponding shadow variable, then initialize it */
 	/* Attach a corresponding shadow variable, then initialize it */
-	ps_lock = klp_shadow_alloc(sta, PS_LOCK, NULL, sizeof(*ps_lock), gfp);
+	ps_lock = klp_shadow_alloc(sta, PS_LOCK, sizeof(*ps_lock), gfp,
+				   NULL, NULL);
 	if (!ps_lock)
 	if (!ps_lock)
 		goto shadow_fail;
 		goto shadow_fail;
 	spin_lock_init(ps_lock);
 	spin_lock_init(ps_lock);
@@ -131,7 +140,7 @@ variable:
 
 
 void sta_info_free(struct ieee80211_local *local, struct sta_info *sta)
 void sta_info_free(struct ieee80211_local *local, struct sta_info *sta)
 {
 {
-	klp_shadow_free(sta, PS_LOCK);
+	klp_shadow_free(sta, PS_LOCK, NULL);
 	kfree(sta);
 	kfree(sta);
 	...
 	...
 
 
@@ -148,16 +157,24 @@ shadow variables to parents already in-flight.
 For commit 1d147bfa6429, a good spot to allocate a shadow spinlock is
 For commit 1d147bfa6429, a good spot to allocate a shadow spinlock is
 inside ieee80211_sta_ps_deliver_wakeup():
 inside ieee80211_sta_ps_deliver_wakeup():
 
 
+int ps_lock_shadow_ctor(void *obj, void *shadow_data, void *ctor_data)
+{
+	spinlock_t *lock = shadow_data;
+
+	spin_lock_init(lock);
+	return 0;
+}
+
 #define PS_LOCK 1
 #define PS_LOCK 1
 void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta)
 void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta)
 {
 {
-	DEFINE_SPINLOCK(ps_lock_fallback);
 	spinlock_t *ps_lock;
 	spinlock_t *ps_lock;
 
 
 	/* sync with ieee80211_tx_h_unicast_ps_buf */
 	/* sync with ieee80211_tx_h_unicast_ps_buf */
 	ps_lock = klp_shadow_get_or_alloc(sta, PS_LOCK,
 	ps_lock = klp_shadow_get_or_alloc(sta, PS_LOCK,
-			&ps_lock_fallback, sizeof(ps_lock_fallback),
-			GFP_ATOMIC);
+			sizeof(*ps_lock), GFP_ATOMIC,
+			ps_lock_shadow_ctor, NULL);
+
 	if (ps_lock)
 	if (ps_lock)
 		spin_lock(ps_lock);
 		spin_lock(ps_lock);
 	...
 	...

+ 1 - 1
Documentation/media/uapi/rc/keytable.c.rst

@@ -7,7 +7,7 @@ file: uapi/v4l/keytable.c
 
 
     /* keytable.c - This program allows checking/replacing keys at IR
     /* keytable.c - This program allows checking/replacing keys at IR
 
 
-       Copyright (C) 2006-2009 Mauro Carvalho Chehab <mchehab@infradead.org>
+       Copyright (C) 2006-2009 Mauro Carvalho Chehab <mchehab@kernel.org>
 
 
        This program is free software; you can redistribute it and/or modify
        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        it under the terms of the GNU General Public License as published by

+ 1 - 1
Documentation/media/uapi/v4l/v4l2grab.c.rst

@@ -6,7 +6,7 @@ file: media/v4l/v4l2grab.c
 .. code-block:: c
 .. code-block:: c
 
 
     /* V4L2 video picture grabber
     /* V4L2 video picture grabber
-       Copyright (C) 2009 Mauro Carvalho Chehab <mchehab@infradead.org>
+       Copyright (C) 2009 Mauro Carvalho Chehab <mchehab@kernel.org>
 
 
        This program is free software; you can redistribute it and/or modify
        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        it under the terms of the GNU General Public License as published by

+ 3 - 3
Documentation/networking/filter.txt

@@ -169,7 +169,7 @@ access to BPF code as well.
 BPF engine and instruction set
 BPF engine and instruction set
 ------------------------------
 ------------------------------
 
 
-Under tools/net/ there's a small helper tool called bpf_asm which can
+Under tools/bpf/ there's a small helper tool called bpf_asm which can
 be used to write low-level filters for example scenarios mentioned in the
 be used to write low-level filters for example scenarios mentioned in the
 previous section. Asm-like syntax mentioned here has been implemented in
 previous section. Asm-like syntax mentioned here has been implemented in
 bpf_asm and will be used for further explanations (instead of dealing with
 bpf_asm and will be used for further explanations (instead of dealing with
@@ -359,7 +359,7 @@ $ ./bpf_asm -c foo
 In particular, as usage with xt_bpf or cls_bpf can result in more complex BPF
 In particular, as usage with xt_bpf or cls_bpf can result in more complex BPF
 filters that might not be obvious at first, it's good to test filters before
 filters that might not be obvious at first, it's good to test filters before
 attaching to a live system. For that purpose, there's a small tool called
 attaching to a live system. For that purpose, there's a small tool called
-bpf_dbg under tools/net/ in the kernel source directory. This debugger allows
+bpf_dbg under tools/bpf/ in the kernel source directory. This debugger allows
 for testing BPF filters against given pcap files, single stepping through the
 for testing BPF filters against given pcap files, single stepping through the
 BPF code on the pcap's packets and to do BPF machine register dumps.
 BPF code on the pcap's packets and to do BPF machine register dumps.
 
 
@@ -483,7 +483,7 @@ Example output from dmesg:
 [ 3389.935851] JIT code: 00000030: 00 e8 28 94 ff e0 83 f8 01 75 07 b8 ff ff 00 00
 [ 3389.935851] JIT code: 00000030: 00 e8 28 94 ff e0 83 f8 01 75 07 b8 ff ff 00 00
 [ 3389.935852] JIT code: 00000040: eb 02 31 c0 c9 c3
 [ 3389.935852] JIT code: 00000040: eb 02 31 c0 c9 c3
 
 
-In the kernel source tree under tools/net/, there's bpf_jit_disasm for
+In the kernel source tree under tools/bpf/, there's bpf_jit_disasm for
 generating disassembly out of the kernel log's hexdump:
 generating disassembly out of the kernel log's hexdump:
 
 
 # ./bpf_jit_disasm
 # ./bpf_jit_disasm

+ 4 - 19
Documentation/networking/ip-sysctl.txt

@@ -1390,26 +1390,26 @@ mld_qrv - INTEGER
 	Default: 2 (as specified by RFC3810 9.1)
 	Default: 2 (as specified by RFC3810 9.1)
 	Minimum: 1 (as specified by RFC6636 4.5)
 	Minimum: 1 (as specified by RFC6636 4.5)
 
 
-max_dst_opts_cnt - INTEGER
+max_dst_opts_number - INTEGER
 	Maximum number of non-padding TLVs allowed in a Destination
 	Maximum number of non-padding TLVs allowed in a Destination
 	options extension header. If this value is less than zero
 	options extension header. If this value is less than zero
 	then unknown options are disallowed and the number of known
 	then unknown options are disallowed and the number of known
 	TLVs allowed is the absolute value of this number.
 	TLVs allowed is the absolute value of this number.
 	Default: 8
 	Default: 8
 
 
-max_hbh_opts_cnt - INTEGER
+max_hbh_opts_number - INTEGER
 	Maximum number of non-padding TLVs allowed in a Hop-by-Hop
 	Maximum number of non-padding TLVs allowed in a Hop-by-Hop
 	options extension header. If this value is less than zero
 	options extension header. If this value is less than zero
 	then unknown options are disallowed and the number of known
 	then unknown options are disallowed and the number of known
 	TLVs allowed is the absolute value of this number.
 	TLVs allowed is the absolute value of this number.
 	Default: 8
 	Default: 8
 
 
-max dst_opts_len - INTEGER
+max_dst_opts_length - INTEGER
 	Maximum length allowed for a Destination options extension
 	Maximum length allowed for a Destination options extension
 	header.
 	header.
 	Default: INT_MAX (unlimited)
 	Default: INT_MAX (unlimited)
 
 
-max hbh_opts_len - INTEGER
+max_hbh_length - INTEGER
 	Maximum length allowed for a Hop-by-Hop options extension
 	Maximum length allowed for a Hop-by-Hop options extension
 	header.
 	header.
 	Default: INT_MAX (unlimited)
 	Default: INT_MAX (unlimited)
@@ -2126,18 +2126,3 @@ max_dgram_qlen - INTEGER
 
 
 	Default: 10
 	Default: 10
 
 
-
-UNDOCUMENTED:
-
-/proc/sys/net/irda/*
-	fast_poll_increase FIXME
-	warn_noreply_time FIXME
-	discovery_slots FIXME
-	slot_timeout FIXME
-	max_baud_rate FIXME
-	discovery_timeout FIXME
-	lap_keepalive_time FIXME
-	max_noreply_time FIXME
-	max_tx_data_size FIXME
-	max_tx_window FIXME
-	min_tx_turn_time FIXME

+ 1 - 1
Documentation/power/suspend-and-cpuhotplug.txt

@@ -168,7 +168,7 @@ update on the CPUs, as discussed below:
 
 
 [Please bear in mind that the kernel requests the microcode images from
 [Please bear in mind that the kernel requests the microcode images from
 userspace, using the request_firmware() function defined in
 userspace, using the request_firmware() function defined in
-drivers/base/firmware_class.c]
+drivers/base/firmware_loader/main.c]
 
 
 
 
 a. When all the CPUs are identical:
 a. When all the CPUs are identical:

+ 0 - 3
Documentation/process/magic-number.rst

@@ -157,8 +157,5 @@ memory management. See ``include/sound/sndmagic.h`` for complete list of them. M
 OSS sound drivers have their magic numbers constructed from the soundcard PCI
 OSS sound drivers have their magic numbers constructed from the soundcard PCI
 ID - these are not listed here as well.
 ID - these are not listed here as well.
 
 
-IrDA subsystem also uses large number of own magic numbers, see
-``include/net/irda/irda.h`` for a complete list of them.
-
 HFS is another larger user of magic numbers - you can find them in
 HFS is another larger user of magic numbers - you can find them in
 ``fs/hfs/hfs.h``.
 ``fs/hfs/hfs.h``.

+ 2 - 2
Documentation/sphinx/parse-headers.pl

@@ -387,11 +387,11 @@ tree for more details.
 
 
 =head1 BUGS
 =head1 BUGS
 
 
-Report bugs to Mauro Carvalho Chehab <mchehab@s-opensource.com>
+Report bugs to Mauro Carvalho Chehab <mchehab@kernel.org>
 
 
 =head1 COPYRIGHT
 =head1 COPYRIGHT
 
 
-Copyright (c) 2016 by Mauro Carvalho Chehab <mchehab@s-opensource.com>.
+Copyright (c) 2016 by Mauro Carvalho Chehab <mchehab+samsung@kernel.org>.
 
 
 License GPLv2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>.
 License GPLv2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>.
 
 

+ 11 - 3
Documentation/trace/ftrace.rst

@@ -461,9 +461,17 @@ of ftrace. Here is a list of some of the key files:
 		and ticks at the same rate as the hardware clocksource.
 		and ticks at the same rate as the hardware clocksource.
 
 
 	boot:
 	boot:
-		Same as mono. Used to be a separate clock which accounted
-		for the time spent in suspend while CLOCK_MONOTONIC did
-		not.
+		This is the boot clock (CLOCK_BOOTTIME) and is based on the
+		fast monotonic clock, but also accounts for time spent in
+		suspend. Since the clock access is designed for use in
+		tracing in the suspend path, some side effects are possible
+		if clock is accessed after the suspend time is accounted before
+		the fast mono clock is updated. In this case, the clock update
+		appears to happen slightly sooner than it normally would have.
+		Also on 32-bit systems, it's possible that the 64-bit boot offset
+		sees a partial update. These effects are rare and post
+		processing should be able to handle them. See comments in the
+		ktime_get_boot_fast_ns() function for more information.
 
 
 	To set a clock, simply echo the clock name into this file::
 	To set a clock, simply echo the clock name into this file::
 
 

+ 2 - 2
Documentation/translations/zh_CN/video4linux/v4l2-framework.txt

@@ -6,7 +6,7 @@ communicating in English you can also ask the Chinese maintainer for
 help.  Contact the Chinese maintainer if this translation is outdated
 help.  Contact the Chinese maintainer if this translation is outdated
 or if there is a problem with the translation.
 or if there is a problem with the translation.
 
 
-Maintainer: Mauro Carvalho Chehab <mchehab@infradead.org>
+Maintainer: Mauro Carvalho Chehab <mchehab@kernel.org>
 Chinese maintainer: Fu Wei <tekkamanninja@gmail.com>
 Chinese maintainer: Fu Wei <tekkamanninja@gmail.com>
 ---------------------------------------------------------------------
 ---------------------------------------------------------------------
 Documentation/video4linux/v4l2-framework.txt 的中文翻译
 Documentation/video4linux/v4l2-framework.txt 的中文翻译
@@ -14,7 +14,7 @@ Documentation/video4linux/v4l2-framework.txt 的中文翻译
 如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文
 如果想评论或更新本文的内容,请直接联系原文档的维护者。如果你使用英文
 交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
 交流有困难的话,也可以向中文版维护者求助。如果本翻译更新不及时或者翻
 译存在问题,请联系中文版维护者。
 译存在问题,请联系中文版维护者。
-英文版维护者: Mauro Carvalho Chehab <mchehab@infradead.org>
+英文版维护者: Mauro Carvalho Chehab <mchehab@kernel.org>
 中文版维护者: 傅炜 Fu Wei <tekkamanninja@gmail.com>
 中文版维护者: 傅炜 Fu Wei <tekkamanninja@gmail.com>
 中文版翻译者: 傅炜 Fu Wei <tekkamanninja@gmail.com>
 中文版翻译者: 傅炜 Fu Wei <tekkamanninja@gmail.com>
 中文版校译者: 傅炜 Fu Wei <tekkamanninja@gmail.com>
 中文版校译者: 傅炜 Fu Wei <tekkamanninja@gmail.com>

+ 8 - 1
Documentation/virtual/kvm/api.txt

@@ -1960,6 +1960,9 @@ ARM 32-bit VFP control registers have the following id bit patterns:
 ARM 64-bit FP registers have the following id bit patterns:
 ARM 64-bit FP registers have the following id bit patterns:
   0x4030 0000 0012 0 <regno:12>
   0x4030 0000 0012 0 <regno:12>
 
 
+ARM firmware pseudo-registers have the following bit pattern:
+  0x4030 0000 0014 <regno:16>
+
 
 
 arm64 registers are mapped using the lower 32 bits. The upper 16 of
 arm64 registers are mapped using the lower 32 bits. The upper 16 of
 that is the register group type, or coprocessor number:
 that is the register group type, or coprocessor number:
@@ -1976,6 +1979,9 @@ arm64 CCSIDR registers are demultiplexed by CSSELR value:
 arm64 system registers have the following id bit patterns:
 arm64 system registers have the following id bit patterns:
   0x6030 0000 0013 <op0:2> <op1:3> <crn:4> <crm:4> <op2:3>
   0x6030 0000 0013 <op0:2> <op1:3> <crn:4> <crm:4> <op2:3>
 
 
+arm64 firmware pseudo-registers have the following bit pattern:
+  0x6030 0000 0014 <regno:16>
+
 
 
 MIPS registers are mapped using the lower 32 bits.  The upper 16 of that is
 MIPS registers are mapped using the lower 32 bits.  The upper 16 of that is
 the register group type:
 the register group type:
@@ -2510,7 +2516,8 @@ Possible features:
 	  and execute guest code when KVM_RUN is called.
 	  and execute guest code when KVM_RUN is called.
 	- KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
 	- KVM_ARM_VCPU_EL1_32BIT: Starts the CPU in a 32bit mode.
 	  Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
 	  Depends on KVM_CAP_ARM_EL1_32BIT (arm64 only).
-	- KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 for the CPU.
+	- KVM_ARM_VCPU_PSCI_0_2: Emulate PSCI v0.2 (or a future revision
+          backward compatible with v0.2) for the CPU.
 	  Depends on KVM_CAP_ARM_PSCI_0_2.
 	  Depends on KVM_CAP_ARM_PSCI_0_2.
 	- KVM_ARM_VCPU_PMU_V3: Emulate PMUv3 for the CPU.
 	- KVM_ARM_VCPU_PMU_V3: Emulate PMUv3 for the CPU.
 	  Depends on KVM_CAP_ARM_PMU_V3.
 	  Depends on KVM_CAP_ARM_PMU_V3.

+ 30 - 0
Documentation/virtual/kvm/arm/psci.txt

@@ -0,0 +1,30 @@
+KVM implements the PSCI (Power State Coordination Interface)
+specification in order to provide services such as CPU on/off, reset
+and power-off to the guest.
+
+The PSCI specification is regularly updated to provide new features,
+and KVM implements these updates if they make sense from a virtualization
+point of view.
+
+This means that a guest booted on two different versions of KVM can
+observe two different "firmware" revisions. This could cause issues if
+a given guest is tied to a particular PSCI revision (unlikely), or if
+a migration causes a different PSCI version to be exposed out of the
+blue to an unsuspecting guest.
+
+In order to remedy this situation, KVM exposes a set of "firmware
+pseudo-registers" that can be manipulated using the GET/SET_ONE_REG
+interface. These registers can be saved/restored by userspace, and set
+to a convenient value if required.
+
+The following register is defined:
+
+* KVM_REG_ARM_PSCI_VERSION:
+
+  - Only valid if the vcpu has the KVM_ARM_VCPU_PSCI_0_2 feature set
+    (and thus has already been initialized)
+  - Returns the current PSCI version on GET_ONE_REG (defaulting to the
+    highest PSCI version implemented by KVM and compatible with v0.2)
+  - Allows any PSCI version implemented by KVM and compatible with
+    v0.2 to be set with SET_ONE_REG
+  - Affects the whole VM (even if the register view is per-vcpu)

+ 52 - 49
MAINTAINERS

@@ -137,9 +137,9 @@ Maintainers List (try to look for most precise areas first)
 		-----------------------------------
 		-----------------------------------
 
 
 3C59X NETWORK DRIVER
 3C59X NETWORK DRIVER
-M:	Steffen Klassert <klassert@mathematik.tu-chemnitz.de>
+M:	Steffen Klassert <klassert@kernel.org>
 L:	netdev@vger.kernel.org
 L:	netdev@vger.kernel.org
-S:	Maintained
+S:	Odd Fixes
 F:	Documentation/networking/vortex.txt
 F:	Documentation/networking/vortex.txt
 F:	drivers/net/ethernet/3com/3c59x.c
 F:	drivers/net/ethernet/3com/3c59x.c
 
 
@@ -564,8 +564,9 @@ S:	Maintained
 F:	drivers/media/dvb-frontends/af9033*
 F:	drivers/media/dvb-frontends/af9033*
 
 
 AFFS FILE SYSTEM
 AFFS FILE SYSTEM
+M:	David Sterba <dsterba@suse.com>
 L:	linux-fsdevel@vger.kernel.org
 L:	linux-fsdevel@vger.kernel.org
-S:	Orphan
+S:	Odd Fixes
 F:	Documentation/filesystems/affs.txt
 F:	Documentation/filesystems/affs.txt
 F:	fs/affs/
 F:	fs/affs/
 
 
@@ -905,6 +906,8 @@ ANDROID ION DRIVER
 M:	Laura Abbott <labbott@redhat.com>
 M:	Laura Abbott <labbott@redhat.com>
 M:	Sumit Semwal <sumit.semwal@linaro.org>
 M:	Sumit Semwal <sumit.semwal@linaro.org>
 L:	devel@driverdev.osuosl.org
 L:	devel@driverdev.osuosl.org
+L:	dri-devel@lists.freedesktop.org
+L:	linaro-mm-sig@lists.linaro.org (moderated for non-subscribers)
 S:	Supported
 S:	Supported
 F:	drivers/staging/android/ion
 F:	drivers/staging/android/ion
 F:	drivers/staging/android/uapi/ion.h
 F:	drivers/staging/android/uapi/ion.h
@@ -1208,7 +1211,6 @@ F:	drivers/*/*alpine*
 ARM/ARTPEC MACHINE SUPPORT
 ARM/ARTPEC MACHINE SUPPORT
 M:	Jesper Nilsson <jesper.nilsson@axis.com>
 M:	Jesper Nilsson <jesper.nilsson@axis.com>
 M:	Lars Persson <lars.persson@axis.com>
 M:	Lars Persson <lars.persson@axis.com>
-M:	Niklas Cassel <niklas.cassel@axis.com>
 S:	Maintained
 S:	Maintained
 L:	linux-arm-kernel@axis.com
 L:	linux-arm-kernel@axis.com
 F:	arch/arm/mach-artpec
 F:	arch/arm/mach-artpec
@@ -1373,7 +1375,8 @@ F:	arch/arm/mach-ebsa110/
 F:	drivers/net/ethernet/amd/am79c961a.*
 F:	drivers/net/ethernet/amd/am79c961a.*
 
 
 ARM/ENERGY MICRO (SILICON LABS) EFM32 SUPPORT
 ARM/ENERGY MICRO (SILICON LABS) EFM32 SUPPORT
-M:	Uwe Kleine-König <kernel@pengutronix.de>
+M:	Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
+R:	Pengutronix Kernel Team <kernel@pengutronix.de>
 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
 N:	efm32
 N:	efm32
@@ -1401,7 +1404,8 @@ F:	arch/arm/mach-footbridge/
 
 
 ARM/FREESCALE IMX / MXC ARM ARCHITECTURE
 ARM/FREESCALE IMX / MXC ARM ARCHITECTURE
 M:	Shawn Guo <shawnguo@kernel.org>
 M:	Shawn Guo <shawnguo@kernel.org>
-M:	Sascha Hauer <kernel@pengutronix.de>
+M:	Sascha Hauer <s.hauer@pengutronix.de>
+R:	Pengutronix Kernel Team <kernel@pengutronix.de>
 R:	Fabio Estevam <fabio.estevam@nxp.com>
 R:	Fabio Estevam <fabio.estevam@nxp.com>
 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
@@ -1416,7 +1420,8 @@ F:	include/soc/imx/
 
 
 ARM/FREESCALE VYBRID ARM ARCHITECTURE
 ARM/FREESCALE VYBRID ARM ARCHITECTURE
 M:	Shawn Guo <shawnguo@kernel.org>
 M:	Shawn Guo <shawnguo@kernel.org>
-M:	Sascha Hauer <kernel@pengutronix.de>
+M:	Sascha Hauer <s.hauer@pengutronix.de>
+R:	Pengutronix Kernel Team <kernel@pengutronix.de>
 R:	Stefan Agner <stefan@agner.ch>
 R:	Stefan Agner <stefan@agner.ch>
 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
@@ -2549,7 +2554,6 @@ F:	Documentation/devicetree/bindings/sound/axentia,*
 F:	sound/soc/atmel/tse850-pcm5142.c
 F:	sound/soc/atmel/tse850-pcm5142.c
 
 
 AZ6007 DVB DRIVER
 AZ6007 DVB DRIVER
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
 W:	https://linuxtv.org
 W:	https://linuxtv.org
@@ -2614,7 +2618,7 @@ S:	Maintained
 F:	drivers/net/hamradio/baycom*
 F:	drivers/net/hamradio/baycom*
 
 
 BCACHE (BLOCK LAYER CACHE)
 BCACHE (BLOCK LAYER CACHE)
-M:	Michael Lyle <mlyle@lyle.org>
+M:	Coly Li <colyli@suse.de>
 M:	Kent Overstreet <kent.overstreet@gmail.com>
 M:	Kent Overstreet <kent.overstreet@gmail.com>
 L:	linux-bcache@vger.kernel.org
 L:	linux-bcache@vger.kernel.org
 W:	http://bcache.evilpiepirate.org
 W:	http://bcache.evilpiepirate.org
@@ -3078,7 +3082,6 @@ F:	include/linux/btrfs*
 F:	include/uapi/linux/btrfs*
 F:	include/uapi/linux/btrfs*
 
 
 BTTV VIDEO4LINUX DRIVER
 BTTV VIDEO4LINUX DRIVER
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
 W:	https://linuxtv.org
 W:	https://linuxtv.org
@@ -3688,7 +3691,6 @@ F:	drivers/cpufreq/arm_big_little_dt.c
 
 
 CPU POWER MONITORING SUBSYSTEM
 CPU POWER MONITORING SUBSYSTEM
 M:	Thomas Renninger <trenn@suse.com>
 M:	Thomas Renninger <trenn@suse.com>
-M:	Shuah Khan <shuahkh@osg.samsung.com>
 M:	Shuah Khan <shuah@kernel.org>
 M:	Shuah Khan <shuah@kernel.org>
 L:	linux-pm@vger.kernel.org
 L:	linux-pm@vger.kernel.org
 S:	Maintained
 S:	Maintained
@@ -3807,7 +3809,6 @@ S:	Maintained
 F:	drivers/media/dvb-frontends/cx24120*
 F:	drivers/media/dvb-frontends/cx24120*
 
 
 CX88 VIDEO4LINUX DRIVER
 CX88 VIDEO4LINUX DRIVER
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
 W:	https://linuxtv.org
 W:	https://linuxtv.org
@@ -4245,6 +4246,9 @@ F:	include/trace/events/fs_dax.h
 
 
 DEVICE DIRECT ACCESS (DAX)
 DEVICE DIRECT ACCESS (DAX)
 M:	Dan Williams <dan.j.williams@intel.com>
 M:	Dan Williams <dan.j.williams@intel.com>
+M:	Dave Jiang <dave.jiang@intel.com>
+M:	Ross Zwisler <ross.zwisler@linux.intel.com>
+M:	Vishal Verma <vishal.l.verma@intel.com>
 L:	linux-nvdimm@lists.01.org
 L:	linux-nvdimm@lists.01.org
 S:	Supported
 S:	Supported
 F:	drivers/dax/
 F:	drivers/dax/
@@ -5045,7 +5049,6 @@ F:	drivers/edac/thunderx_edac*
 
 
 EDAC-CORE
 EDAC-CORE
 M:	Borislav Petkov <bp@alien8.de>
 M:	Borislav Petkov <bp@alien8.de>
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-edac@vger.kernel.org
 L:	linux-edac@vger.kernel.org
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
@@ -5074,7 +5077,6 @@ S:	Maintained
 F:	drivers/edac/fsl_ddr_edac.*
 F:	drivers/edac/fsl_ddr_edac.*
 
 
 EDAC-GHES
 EDAC-GHES
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-edac@vger.kernel.org
 L:	linux-edac@vger.kernel.org
 S:	Maintained
 S:	Maintained
@@ -5091,21 +5093,18 @@ S:	Maintained
 F:	drivers/edac/i5000_edac.c
 F:	drivers/edac/i5000_edac.c
 
 
 EDAC-I5400
 EDAC-I5400
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-edac@vger.kernel.org
 L:	linux-edac@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	drivers/edac/i5400_edac.c
 F:	drivers/edac/i5400_edac.c
 
 
 EDAC-I7300
 EDAC-I7300
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-edac@vger.kernel.org
 L:	linux-edac@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	drivers/edac/i7300_edac.c
 F:	drivers/edac/i7300_edac.c
 
 
 EDAC-I7CORE
 EDAC-I7CORE
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-edac@vger.kernel.org
 L:	linux-edac@vger.kernel.org
 S:	Maintained
 S:	Maintained
@@ -5155,7 +5154,6 @@ S:	Maintained
 F:	drivers/edac/r82600_edac.c
 F:	drivers/edac/r82600_edac.c
 
 
 EDAC-SBRIDGE
 EDAC-SBRIDGE
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-edac@vger.kernel.org
 L:	linux-edac@vger.kernel.org
 S:	Maintained
 S:	Maintained
@@ -5214,7 +5212,6 @@ S:	Maintained
 F:	drivers/net/ethernet/ibm/ehea/
 F:	drivers/net/ethernet/ibm/ehea/
 
 
 EM28XX VIDEO4LINUX DRIVER
 EM28XX VIDEO4LINUX DRIVER
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
 W:	https://linuxtv.org
 W:	https://linuxtv.org
@@ -5652,7 +5649,8 @@ F:	drivers/net/ethernet/freescale/fec.h
 F:	Documentation/devicetree/bindings/net/fsl-fec.txt
 F:	Documentation/devicetree/bindings/net/fsl-fec.txt
 
 
 FREESCALE IMX / MXC FRAMEBUFFER DRIVER
 FREESCALE IMX / MXC FRAMEBUFFER DRIVER
-M:	Sascha Hauer <kernel@pengutronix.de>
+M:	Sascha Hauer <s.hauer@pengutronix.de>
+R:	Pengutronix Kernel Team <kernel@pengutronix.de>
 L:	linux-fbdev@vger.kernel.org
 L:	linux-fbdev@vger.kernel.org
 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
@@ -5784,6 +5782,14 @@ F:	fs/crypto/
 F:	include/linux/fscrypt*.h
 F:	include/linux/fscrypt*.h
 F:	Documentation/filesystems/fscrypt.rst
 F:	Documentation/filesystems/fscrypt.rst
 
 
+FSNOTIFY: FILESYSTEM NOTIFICATION INFRASTRUCTURE
+M:	Jan Kara <jack@suse.cz>
+R:	Amir Goldstein <amir73il@gmail.com>
+L:	linux-fsdevel@vger.kernel.org
+S:	Maintained
+F:	fs/notify/
+F:	include/linux/fsnotify*.h
+
 FUJITSU LAPTOP EXTRAS
 FUJITSU LAPTOP EXTRAS
 M:	Jonathan Woithe <jwoithe@just42.net>
 M:	Jonathan Woithe <jwoithe@just42.net>
 L:	platform-driver-x86@vger.kernel.org
 L:	platform-driver-x86@vger.kernel.org
@@ -6256,7 +6262,7 @@ S:	Odd Fixes
 F:	drivers/media/usb/hdpvr/
 F:	drivers/media/usb/hdpvr/
 
 
 HEWLETT PACKARD ENTERPRISE ILO NMI WATCHDOG DRIVER
 HEWLETT PACKARD ENTERPRISE ILO NMI WATCHDOG DRIVER
-M:	Jimmy Vance <jimmy.vance@hpe.com>
+M:	Jerry Hoemann <jerry.hoemann@hpe.com>
 S:	Supported
 S:	Supported
 F:	Documentation/watchdog/hpwdt.txt
 F:	Documentation/watchdog/hpwdt.txt
 F:	drivers/watchdog/hpwdt.c
 F:	drivers/watchdog/hpwdt.c
@@ -7396,16 +7402,6 @@ S:	Obsolete
 F:	include/uapi/linux/ipx.h
 F:	include/uapi/linux/ipx.h
 F:	drivers/staging/ipx/
 F:	drivers/staging/ipx/
 
 
-IRDA SUBSYSTEM
-M:	Samuel Ortiz <samuel@sortiz.org>
-L:	irda-users@lists.sourceforge.net (subscribers-only)
-L:	netdev@vger.kernel.org
-W:	http://irda.sourceforge.net/
-S:	Obsolete
-T:	git git://git.kernel.org/pub/scm/linux/kernel/git/sameo/irda-2.6.git
-F:	Documentation/networking/irda.txt
-F:	drivers/staging/irda/
-
 IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
 IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
 M:	Marc Zyngier <marc.zyngier@arm.com>
 M:	Marc Zyngier <marc.zyngier@arm.com>
 S:	Maintained
 S:	Maintained
@@ -7670,9 +7666,11 @@ L:	linux-kbuild@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	Documentation/kbuild/
 F:	Documentation/kbuild/
 F:	Makefile
 F:	Makefile
-F:	scripts/Makefile.*
+F:	scripts/Kbuild*
+F:	scripts/Makefile*
 F:	scripts/basic/
 F:	scripts/basic/
 F:	scripts/mk*
 F:	scripts/mk*
+F:	scripts/mod/
 F:	scripts/package/
 F:	scripts/package/
 
 
 KERNEL JANITORS
 KERNEL JANITORS
@@ -7697,7 +7695,6 @@ F:	include/linux/sunrpc/
 F:	include/uapi/linux/sunrpc/
 F:	include/uapi/linux/sunrpc/
 
 
 KERNEL SELFTEST FRAMEWORK
 KERNEL SELFTEST FRAMEWORK
-M:	Shuah Khan <shuahkh@osg.samsung.com>
 M:	Shuah Khan <shuah@kernel.org>
 M:	Shuah Khan <shuah@kernel.org>
 L:	linux-kselftest@vger.kernel.org
 L:	linux-kselftest@vger.kernel.org
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git
@@ -7738,7 +7735,7 @@ F:	arch/x86/include/asm/svm.h
 F:	arch/x86/kvm/svm.c
 F:	arch/x86/kvm/svm.c
 
 
 KERNEL VIRTUAL MACHINE FOR ARM (KVM/arm)
 KERNEL VIRTUAL MACHINE FOR ARM (KVM/arm)
-M:	Christoffer Dall <christoffer.dall@linaro.org>
+M:	Christoffer Dall <christoffer.dall@arm.com>
 M:	Marc Zyngier <marc.zyngier@arm.com>
 M:	Marc Zyngier <marc.zyngier@arm.com>
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 L:	kvmarm@lists.cs.columbia.edu
 L:	kvmarm@lists.cs.columbia.edu
@@ -7752,7 +7749,7 @@ F:	virt/kvm/arm/
 F:	include/kvm/arm_*
 F:	include/kvm/arm_*
 
 
 KERNEL VIRTUAL MACHINE FOR ARM64 (KVM/arm64)
 KERNEL VIRTUAL MACHINE FOR ARM64 (KVM/arm64)
-M:	Christoffer Dall <christoffer.dall@linaro.org>
+M:	Christoffer Dall <christoffer.dall@arm.com>
 M:	Marc Zyngier <marc.zyngier@arm.com>
 M:	Marc Zyngier <marc.zyngier@arm.com>
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 L:	linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 L:	kvmarm@lists.cs.columbia.edu
 L:	kvmarm@lists.cs.columbia.edu
@@ -8048,6 +8045,9 @@ F:	tools/lib/lockdep/
 
 
 LIBNVDIMM BLK: MMIO-APERTURE DRIVER
 LIBNVDIMM BLK: MMIO-APERTURE DRIVER
 M:	Ross Zwisler <ross.zwisler@linux.intel.com>
 M:	Ross Zwisler <ross.zwisler@linux.intel.com>
+M:	Dan Williams <dan.j.williams@intel.com>
+M:	Vishal Verma <vishal.l.verma@intel.com>
+M:	Dave Jiang <dave.jiang@intel.com>
 L:	linux-nvdimm@lists.01.org
 L:	linux-nvdimm@lists.01.org
 Q:	https://patchwork.kernel.org/project/linux-nvdimm/list/
 Q:	https://patchwork.kernel.org/project/linux-nvdimm/list/
 S:	Supported
 S:	Supported
@@ -8056,6 +8056,9 @@ F:	drivers/nvdimm/region_devs.c
 
 
 LIBNVDIMM BTT: BLOCK TRANSLATION TABLE
 LIBNVDIMM BTT: BLOCK TRANSLATION TABLE
 M:	Vishal Verma <vishal.l.verma@intel.com>
 M:	Vishal Verma <vishal.l.verma@intel.com>
+M:	Dan Williams <dan.j.williams@intel.com>
+M:	Ross Zwisler <ross.zwisler@linux.intel.com>
+M:	Dave Jiang <dave.jiang@intel.com>
 L:	linux-nvdimm@lists.01.org
 L:	linux-nvdimm@lists.01.org
 Q:	https://patchwork.kernel.org/project/linux-nvdimm/list/
 Q:	https://patchwork.kernel.org/project/linux-nvdimm/list/
 S:	Supported
 S:	Supported
@@ -8063,6 +8066,9 @@ F:	drivers/nvdimm/btt*
 
 
 LIBNVDIMM PMEM: PERSISTENT MEMORY DRIVER
 LIBNVDIMM PMEM: PERSISTENT MEMORY DRIVER
 M:	Ross Zwisler <ross.zwisler@linux.intel.com>
 M:	Ross Zwisler <ross.zwisler@linux.intel.com>
+M:	Dan Williams <dan.j.williams@intel.com>
+M:	Vishal Verma <vishal.l.verma@intel.com>
+M:	Dave Jiang <dave.jiang@intel.com>
 L:	linux-nvdimm@lists.01.org
 L:	linux-nvdimm@lists.01.org
 Q:	https://patchwork.kernel.org/project/linux-nvdimm/list/
 Q:	https://patchwork.kernel.org/project/linux-nvdimm/list/
 S:	Supported
 S:	Supported
@@ -8078,6 +8084,9 @@ F:	Documentation/devicetree/bindings/pmem/pmem-region.txt
 
 
 LIBNVDIMM: NON-VOLATILE MEMORY DEVICE SUBSYSTEM
 LIBNVDIMM: NON-VOLATILE MEMORY DEVICE SUBSYSTEM
 M:	Dan Williams <dan.j.williams@intel.com>
 M:	Dan Williams <dan.j.williams@intel.com>
+M:	Ross Zwisler <ross.zwisler@linux.intel.com>
+M:	Vishal Verma <vishal.l.verma@intel.com>
+M:	Dave Jiang <dave.jiang@intel.com>
 L:	linux-nvdimm@lists.01.org
 L:	linux-nvdimm@lists.01.org
 Q:	https://patchwork.kernel.org/project/linux-nvdimm/list/
 Q:	https://patchwork.kernel.org/project/linux-nvdimm/list/
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git
@@ -8852,7 +8861,6 @@ F:	Documentation/devicetree/bindings/media/nvidia,tegra-vde.txt
 F:	drivers/staging/media/tegra-vde/
 F:	drivers/staging/media/tegra-vde/
 
 
 MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
 MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 P:	LinuxTV.org Project
 P:	LinuxTV.org Project
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
@@ -9706,6 +9714,7 @@ W:	https://fedorahosted.org/dropwatch/
 F:	net/core/drop_monitor.c
 F:	net/core/drop_monitor.c
 
 
 NETWORKING DRIVERS
 NETWORKING DRIVERS
+M:	"David S. Miller" <davem@davemloft.net>
 L:	netdev@vger.kernel.org
 L:	netdev@vger.kernel.org
 W:	http://www.linuxfoundation.org/en/Net
 W:	http://www.linuxfoundation.org/en/Net
 Q:	http://patchwork.ozlabs.org/project/netdev/list/
 Q:	http://patchwork.ozlabs.org/project/netdev/list/
@@ -9765,6 +9774,7 @@ F:	include/uapi/linux/net_namespace.h
 F:	tools/testing/selftests/net/
 F:	tools/testing/selftests/net/
 F:	lib/net_utils.c
 F:	lib/net_utils.c
 F:	lib/random32.c
 F:	lib/random32.c
+F:	Documentation/networking/
 
 
 NETWORKING [IPSEC]
 NETWORKING [IPSEC]
 M:	Steffen Klassert <steffen.klassert@secunet.com>
 M:	Steffen Klassert <steffen.klassert@secunet.com>
@@ -9861,7 +9871,7 @@ F:	include/linux/platform_data/nxp-nci.h
 F:	Documentation/devicetree/bindings/net/nfc/
 F:	Documentation/devicetree/bindings/net/nfc/
 
 
 NFS, SUNRPC, AND LOCKD CLIENTS
 NFS, SUNRPC, AND LOCKD CLIENTS
-M:	Trond Myklebust <trond.myklebust@primarydata.com>
+M:	Trond Myklebust <trond.myklebust@hammerspace.com>
 M:	Anna Schumaker <anna.schumaker@netapp.com>
 M:	Anna Schumaker <anna.schumaker@netapp.com>
 L:	linux-nfs@vger.kernel.org
 L:	linux-nfs@vger.kernel.org
 W:	http://client.linux-nfs.org
 W:	http://client.linux-nfs.org
@@ -10881,7 +10891,6 @@ F:	drivers/pci/host/
 F:	drivers/pci/dwc/
 F:	drivers/pci/dwc/
 
 
 PCIE DRIVER FOR AXIS ARTPEC
 PCIE DRIVER FOR AXIS ARTPEC
-M:	Niklas Cassel <niklas.cassel@axis.com>
 M:	Jesper Nilsson <jesper.nilsson@axis.com>
 M:	Jesper Nilsson <jesper.nilsson@axis.com>
 L:	linux-arm-kernel@axis.com
 L:	linux-arm-kernel@axis.com
 L:	linux-pci@vger.kernel.org
 L:	linux-pci@vger.kernel.org
@@ -12240,7 +12249,6 @@ S:	Odd Fixes
 F:	drivers/media/i2c/saa6588*
 F:	drivers/media/i2c/saa6588*
 
 
 SAA7134 VIDEO4LINUX DRIVER
 SAA7134 VIDEO4LINUX DRIVER
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
 W:	https://linuxtv.org
 W:	https://linuxtv.org
@@ -12479,6 +12487,7 @@ F:	drivers/scsi/st_*.h
 SCTP PROTOCOL
 SCTP PROTOCOL
 M:	Vlad Yasevich <vyasevich@gmail.com>
 M:	Vlad Yasevich <vyasevich@gmail.com>
 M:	Neil Horman <nhorman@tuxdriver.com>
 M:	Neil Horman <nhorman@tuxdriver.com>
+M:	Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
 L:	linux-sctp@vger.kernel.org
 L:	linux-sctp@vger.kernel.org
 W:	http://lksctp.sourceforge.net
 W:	http://lksctp.sourceforge.net
 S:	Maintained
 S:	Maintained
@@ -12744,7 +12753,6 @@ S:	Maintained
 F:	drivers/media/radio/si4713/radio-usb-si4713.c
 F:	drivers/media/radio/si4713/radio-usb-si4713.c
 
 
 SIANO DVB DRIVER
 SIANO DVB DRIVER
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
 W:	https://linuxtv.org
 W:	https://linuxtv.org
@@ -12816,7 +12824,8 @@ F:	include/linux/siphash.h
 
 
 SIOX
 SIOX
 M:	Gavin Schenk <g.schenk@eckelmann.de>
 M:	Gavin Schenk <g.schenk@eckelmann.de>
-M:	Uwe Kleine-König <kernel@pengutronix.de>
+M:	Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
+R:	Pengutronix Kernel Team <kernel@pengutronix.de>
 S:	Supported
 S:	Supported
 F:	drivers/siox/*
 F:	drivers/siox/*
 F:	include/trace/events/siox.h
 F:	include/trace/events/siox.h
@@ -13734,7 +13743,6 @@ S:	Maintained
 F:	drivers/media/i2c/tda9840*
 F:	drivers/media/i2c/tda9840*
 
 
 TEA5761 TUNER DRIVER
 TEA5761 TUNER DRIVER
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
 W:	https://linuxtv.org
 W:	https://linuxtv.org
@@ -13743,7 +13751,6 @@ S:	Odd fixes
 F:	drivers/media/tuners/tea5761.*
 F:	drivers/media/tuners/tea5761.*
 
 
 TEA5767 TUNER DRIVER
 TEA5767 TUNER DRIVER
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
 W:	https://linuxtv.org
 W:	https://linuxtv.org
@@ -13833,7 +13840,6 @@ S:	Supported
 F:	drivers/iommu/tegra*
 F:	drivers/iommu/tegra*
 
 
 TEGRA KBC DRIVER
 TEGRA KBC DRIVER
-M:	Rakesh Iyer <riyer@nvidia.com>
 M:	Laxman Dewangan <ldewangan@nvidia.com>
 M:	Laxman Dewangan <ldewangan@nvidia.com>
 S:	Supported
 S:	Supported
 F:	drivers/input/keyboard/tegra-kbc.c
 F:	drivers/input/keyboard/tegra-kbc.c
@@ -13936,7 +13942,7 @@ THUNDERBOLT DRIVER
 M:	Andreas Noever <andreas.noever@gmail.com>
 M:	Andreas Noever <andreas.noever@gmail.com>
 M:	Michael Jamet <michael.jamet@intel.com>
 M:	Michael Jamet <michael.jamet@intel.com>
 M:	Mika Westerberg <mika.westerberg@linux.intel.com>
 M:	Mika Westerberg <mika.westerberg@linux.intel.com>
-M:	Yehezkel Bernat <yehezkel.bernat@intel.com>
+M:	Yehezkel Bernat <YehezkelShB@gmail.com>
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/westeri/thunderbolt.git
 T:	git git://git.kernel.org/pub/scm/linux/kernel/git/westeri/thunderbolt.git
 S:	Maintained
 S:	Maintained
 F:	Documentation/admin-guide/thunderbolt.rst
 F:	Documentation/admin-guide/thunderbolt.rst
@@ -13946,7 +13952,7 @@ F:	include/linux/thunderbolt.h
 THUNDERBOLT NETWORK DRIVER
 THUNDERBOLT NETWORK DRIVER
 M:	Michael Jamet <michael.jamet@intel.com>
 M:	Michael Jamet <michael.jamet@intel.com>
 M:	Mika Westerberg <mika.westerberg@linux.intel.com>
 M:	Mika Westerberg <mika.westerberg@linux.intel.com>
-M:	Yehezkel Bernat <yehezkel.bernat@intel.com>
+M:	Yehezkel Bernat <YehezkelShB@gmail.com>
 L:	netdev@vger.kernel.org
 L:	netdev@vger.kernel.org
 S:	Maintained
 S:	Maintained
 F:	drivers/net/thunderbolt.c
 F:	drivers/net/thunderbolt.c
@@ -14160,7 +14166,6 @@ F:	Documentation/networking/tlan.txt
 F:	drivers/net/ethernet/ti/tlan.*
 F:	drivers/net/ethernet/ti/tlan.*
 
 
 TM6000 VIDEO4LINUX DRIVER
 TM6000 VIDEO4LINUX DRIVER
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
 W:	https://linuxtv.org
 W:	https://linuxtv.org
@@ -14643,7 +14648,6 @@ F:	drivers/usb/common/usb-otg-fsm.c
 
 
 USB OVER IP DRIVER
 USB OVER IP DRIVER
 M:	Valentina Manea <valentina.manea.m@gmail.com>
 M:	Valentina Manea <valentina.manea.m@gmail.com>
-M:	Shuah Khan <shuahkh@osg.samsung.com>
 M:	Shuah Khan <shuah@kernel.org>
 M:	Shuah Khan <shuah@kernel.org>
 L:	linux-usb@vger.kernel.org
 L:	linux-usb@vger.kernel.org
 S:	Maintained
 S:	Maintained
@@ -15387,7 +15391,6 @@ S:	Maintained
 F:	arch/x86/entry/vdso/
 F:	arch/x86/entry/vdso/
 
 
 XC2028/3028 TUNER DRIVER
 XC2028/3028 TUNER DRIVER
-M:	Mauro Carvalho Chehab <mchehab@s-opensource.com>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 M:	Mauro Carvalho Chehab <mchehab@kernel.org>
 L:	linux-media@vger.kernel.org
 L:	linux-media@vger.kernel.org
 W:	https://linuxtv.org
 W:	https://linuxtv.org

+ 2 - 2
Makefile

@@ -2,8 +2,8 @@
 VERSION = 4
 VERSION = 4
 PATCHLEVEL = 17
 PATCHLEVEL = 17
 SUBLEVEL = 0
 SUBLEVEL = 0
-EXTRAVERSION = -rc1
-NAME = Fearless Coyote
+EXTRAVERSION = -rc4
+NAME = Merciless Moray
 
 
 # *DOCUMENTATION*
 # *DOCUMENTATION*
 # To see a list of typical targets execute "make help"
 # To see a list of typical targets execute "make help"

+ 4 - 0
arch/Kconfig

@@ -464,6 +464,10 @@ config GCC_PLUGIN_LATENT_ENTROPY
 config GCC_PLUGIN_STRUCTLEAK
 config GCC_PLUGIN_STRUCTLEAK
 	bool "Force initialization of variables containing userspace addresses"
 	bool "Force initialization of variables containing userspace addresses"
 	depends on GCC_PLUGINS
 	depends on GCC_PLUGINS
+	# Currently STRUCTLEAK inserts initialization out of live scope of
+	# variables from KASAN point of view. This leads to KASAN false
+	# positive reports. Prohibit this combination for now.
+	depends on !KASAN_EXTRA
 	help
 	help
 	  This plugin zero-initializes any structures containing a
 	  This plugin zero-initializes any structures containing a
 	  __user attribute. This can prevent some classes of information
 	  __user attribute. This can prevent some classes of information

+ 14 - 14
arch/arm/boot/dts/gemini-nas4220b.dts

@@ -134,37 +134,37 @@
 						function = "gmii";
 						function = "gmii";
 						groups = "gmii_gmac0_grp";
 						groups = "gmii_gmac0_grp";
 					};
 					};
-					/* Settings come from OpenWRT */
+					/* Settings come from OpenWRT, pins on SL3516 */
 					conf0 {
 					conf0 {
-						pins = "R8 GMAC0 RXDV", "U11 GMAC1 RXDV";
+						pins = "V8 GMAC0 RXDV", "T10 GMAC1 RXDV";
 						skew-delay = <0>;
 						skew-delay = <0>;
 					};
 					};
 					conf1 {
 					conf1 {
-						pins = "T8 GMAC0 RXC", "T11 GMAC1 RXC";
+						pins = "Y7 GMAC0 RXC", "Y11 GMAC1 RXC";
 						skew-delay = <15>;
 						skew-delay = <15>;
 					};
 					};
 					conf2 {
 					conf2 {
-						pins = "P8 GMAC0 TXEN", "V11 GMAC1 TXEN";
+						pins = "T8 GMAC0 TXEN", "W11 GMAC1 TXEN";
 						skew-delay = <7>;
 						skew-delay = <7>;
 					};
 					};
 					conf3 {
 					conf3 {
-						pins = "V7 GMAC0 TXC";
+						pins = "U8 GMAC0 TXC";
 						skew-delay = <11>;
 						skew-delay = <11>;
 					};
 					};
 					conf4 {
 					conf4 {
-						pins = "P10 GMAC1 TXC";
+						pins = "V11 GMAC1 TXC";
 						skew-delay = <10>;
 						skew-delay = <10>;
 					};
 					};
 					conf5 {
 					conf5 {
 						/* The data lines all have default skew */
 						/* The data lines all have default skew */
-						pins = "U8 GMAC0 RXD0", "V8 GMAC0 RXD1",
-						       "P9 GMAC0 RXD2", "R9 GMAC0 RXD3",
-						       "U7 GMAC0 TXD0", "T7 GMAC0 TXD1",
-						       "R7 GMAC0 TXD2", "P7 GMAC0 TXD3",
-						       "R11 GMAC1 RXD0", "P11 GMAC1 RXD1",
-						       "V12 GMAC1 RXD2", "U12 GMAC1 RXD3",
-						       "R10 GMAC1 TXD0", "T10 GMAC1 TXD1",
-						       "U10 GMAC1 TXD2", "V10 GMAC1 TXD3";
+						pins = "W8 GMAC0 RXD0", "V9 GMAC0 RXD1",
+						       "Y8 GMAC0 RXD2", "U9 GMAC0 RXD3",
+						       "T7 GMAC0 TXD0", "U6 GMAC0 TXD1",
+						       "V7 GMAC0 TXD2", "U7 GMAC0 TXD3",
+						       "Y12 GMAC1 RXD0", "V12 GMAC1 RXD1",
+						       "T11 GMAC1 RXD2", "W12 GMAC1 RXD3",
+						       "U10 GMAC1 TXD0", "Y10 GMAC1 TXD1",
+						       "W10 GMAC1 TXD2", "T9 GMAC1 TXD3";
 						skew-delay = <7>;
 						skew-delay = <7>;
 					};
 					};
 					/* Set up drive strength on GMAC0 to 16 mA */
 					/* Set up drive strength on GMAC0 to 16 mA */

+ 2 - 2
arch/arm/boot/dts/imx35.dtsi

@@ -303,7 +303,7 @@
 			};
 			};
 
 
 			can1: can@53fe4000 {
 			can1: can@53fe4000 {
-				compatible = "fsl,imx35-flexcan";
+				compatible = "fsl,imx35-flexcan", "fsl,imx25-flexcan";
 				reg = <0x53fe4000 0x1000>;
 				reg = <0x53fe4000 0x1000>;
 				clocks = <&clks 33>, <&clks 33>;
 				clocks = <&clks 33>, <&clks 33>;
 				clock-names = "ipg", "per";
 				clock-names = "ipg", "per";
@@ -312,7 +312,7 @@
 			};
 			};
 
 
 			can2: can@53fe8000 {
 			can2: can@53fe8000 {
-				compatible = "fsl,imx35-flexcan";
+				compatible = "fsl,imx35-flexcan", "fsl,imx25-flexcan";
 				reg = <0x53fe8000 0x1000>;
 				reg = <0x53fe8000 0x1000>;
 				clocks = <&clks 34>, <&clks 34>;
 				clocks = <&clks 34>, <&clks 34>;
 				clock-names = "ipg", "per";
 				clock-names = "ipg", "per";

+ 2 - 2
arch/arm/boot/dts/imx53.dtsi

@@ -551,7 +551,7 @@
 			};
 			};
 
 
 			can1: can@53fc8000 {
 			can1: can@53fc8000 {
-				compatible = "fsl,imx53-flexcan";
+				compatible = "fsl,imx53-flexcan", "fsl,imx25-flexcan";
 				reg = <0x53fc8000 0x4000>;
 				reg = <0x53fc8000 0x4000>;
 				interrupts = <82>;
 				interrupts = <82>;
 				clocks = <&clks IMX5_CLK_CAN1_IPG_GATE>,
 				clocks = <&clks IMX5_CLK_CAN1_IPG_GATE>,
@@ -561,7 +561,7 @@
 			};
 			};
 
 
 			can2: can@53fcc000 {
 			can2: can@53fcc000 {
-				compatible = "fsl,imx53-flexcan";
+				compatible = "fsl,imx53-flexcan", "fsl,imx25-flexcan";
 				reg = <0x53fcc000 0x4000>;
 				reg = <0x53fcc000 0x4000>;
 				interrupts = <83>;
 				interrupts = <83>;
 				clocks = <&clks IMX5_CLK_CAN2_IPG_GATE>,
 				clocks = <&clks IMX5_CLK_CAN2_IPG_GATE>,

+ 4 - 4
arch/arm/boot/dts/omap4.dtsi

@@ -163,10 +163,10 @@
 
 
 			cm2: cm2@8000 {
 			cm2: cm2@8000 {
 				compatible = "ti,omap4-cm2", "simple-bus";
 				compatible = "ti,omap4-cm2", "simple-bus";
-				reg = <0x8000 0x3000>;
+				reg = <0x8000 0x2000>;
 				#address-cells = <1>;
 				#address-cells = <1>;
 				#size-cells = <1>;
 				#size-cells = <1>;
-				ranges = <0 0x8000 0x3000>;
+				ranges = <0 0x8000 0x2000>;
 
 
 				cm2_clocks: clocks {
 				cm2_clocks: clocks {
 					#address-cells = <1>;
 					#address-cells = <1>;
@@ -250,11 +250,11 @@
 
 
 				prm: prm@6000 {
 				prm: prm@6000 {
 					compatible = "ti,omap4-prm";
 					compatible = "ti,omap4-prm";
-					reg = <0x6000 0x3000>;
+					reg = <0x6000 0x2000>;
 					interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
 					interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
 					#address-cells = <1>;
 					#address-cells = <1>;
 					#size-cells = <1>;
 					#size-cells = <1>;
-					ranges = <0 0x6000 0x3000>;
+					ranges = <0 0x6000 0x2000>;
 
 
 					prm_clocks: clocks {
 					prm_clocks: clocks {
 						#address-cells = <1>;
 						#address-cells = <1>;

+ 25 - 2
arch/arm/configs/gemini_defconfig

@@ -1,6 +1,7 @@
 # CONFIG_LOCALVERSION_AUTO is not set
 # CONFIG_LOCALVERSION_AUTO is not set
 CONFIG_SYSVIPC=y
 CONFIG_SYSVIPC=y
 CONFIG_NO_HZ_IDLE=y
 CONFIG_NO_HZ_IDLE=y
+CONFIG_HIGH_RES_TIMERS=y
 CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_USER_NS=y
 CONFIG_USER_NS=y
 CONFIG_RELAY=y
 CONFIG_RELAY=y
@@ -12,15 +13,21 @@ CONFIG_ARCH_GEMINI=y
 CONFIG_PCI=y
 CONFIG_PCI=y
 CONFIG_PREEMPT=y
 CONFIG_PREEMPT=y
 CONFIG_AEABI=y
 CONFIG_AEABI=y
+CONFIG_HIGHMEM=y
+CONFIG_CMA=y
 CONFIG_CMDLINE="console=ttyS0,115200n8"
 CONFIG_CMDLINE="console=ttyS0,115200n8"
 CONFIG_KEXEC=y
 CONFIG_KEXEC=y
 CONFIG_BINFMT_MISC=y
 CONFIG_BINFMT_MISC=y
 CONFIG_PM=y
 CONFIG_PM=y
+CONFIG_NET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS=y
 CONFIG_MTD=y
 CONFIG_MTD=y
 CONFIG_MTD_BLOCK=y
 CONFIG_MTD_BLOCK=y
 CONFIG_MTD_CFI=y
 CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
 CONFIG_MTD_CFI_INTELEXT=y
 CONFIG_MTD_CFI_INTELEXT=y
 CONFIG_MTD_CFI_AMDSTD=y
 CONFIG_MTD_CFI_AMDSTD=y
 CONFIG_MTD_CFI_STAA=y
 CONFIG_MTD_CFI_STAA=y
@@ -33,6 +40,11 @@ CONFIG_BLK_DEV_SD=y
 # CONFIG_SCSI_LOWLEVEL is not set
 # CONFIG_SCSI_LOWLEVEL is not set
 CONFIG_ATA=y
 CONFIG_ATA=y
 CONFIG_PATA_FTIDE010=y
 CONFIG_PATA_FTIDE010=y
+CONFIG_NETDEVICES=y
+CONFIG_GEMINI_ETHERNET=y
+CONFIG_MDIO_BITBANG=y
+CONFIG_MDIO_GPIO=y
+CONFIG_REALTEK_PHY=y
 CONFIG_INPUT_EVDEV=y
 CONFIG_INPUT_EVDEV=y
 CONFIG_KEYBOARD_GPIO=y
 CONFIG_KEYBOARD_GPIO=y
 # CONFIG_INPUT_MOUSE is not set
 # CONFIG_INPUT_MOUSE is not set
@@ -43,9 +55,19 @@ CONFIG_SERIAL_8250_NR_UARTS=1
 CONFIG_SERIAL_8250_RUNTIME_UARTS=1
 CONFIG_SERIAL_8250_RUNTIME_UARTS=1
 CONFIG_SERIAL_OF_PLATFORM=y
 CONFIG_SERIAL_OF_PLATFORM=y
 # CONFIG_HW_RANDOM is not set
 # CONFIG_HW_RANDOM is not set
-# CONFIG_HWMON is not set
+CONFIG_I2C_GPIO=y
+CONFIG_SPI=y
+CONFIG_SPI_GPIO=y
+CONFIG_SENSORS_GPIO_FAN=y
+CONFIG_SENSORS_LM75=y
+CONFIG_THERMAL=y
 CONFIG_WATCHDOG=y
 CONFIG_WATCHDOG=y
-CONFIG_GEMINI_WATCHDOG=y
+CONFIG_REGULATOR=y
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+CONFIG_DRM=y
+CONFIG_DRM_PANEL_ILITEK_IL9322=y
+CONFIG_DRM_TVE200=y
+CONFIG_LOGO=y
 CONFIG_USB=y
 CONFIG_USB=y
 CONFIG_USB_MON=y
 CONFIG_USB_MON=y
 CONFIG_USB_FOTG210_HCD=y
 CONFIG_USB_FOTG210_HCD=y
@@ -54,6 +76,7 @@ CONFIG_NEW_LEDS=y
 CONFIG_LEDS_CLASS=y
 CONFIG_LEDS_CLASS=y
 CONFIG_LEDS_GPIO=y
 CONFIG_LEDS_GPIO=y
 CONFIG_LEDS_TRIGGERS=y
 CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_DISK=y
 CONFIG_LEDS_TRIGGER_HEARTBEAT=y
 CONFIG_LEDS_TRIGGER_HEARTBEAT=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_CLASS=y
 CONFIG_DMADEVICES=y
 CONFIG_DMADEVICES=y

+ 1 - 0
arch/arm/configs/socfpga_defconfig

@@ -57,6 +57,7 @@ CONFIG_MTD_M25P80=y
 CONFIG_MTD_NAND=y
 CONFIG_MTD_NAND=y
 CONFIG_MTD_NAND_DENALI_DT=y
 CONFIG_MTD_NAND_DENALI_DT=y
 CONFIG_MTD_SPI_NOR=y
 CONFIG_MTD_SPI_NOR=y
+# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
 CONFIG_SPI_CADENCE_QUADSPI=y
 CONFIG_SPI_CADENCE_QUADSPI=y
 CONFIG_OF_OVERLAY=y
 CONFIG_OF_OVERLAY=y
 CONFIG_OF_CONFIGFS=y
 CONFIG_OF_CONFIGFS=y

+ 3 - 0
arch/arm/include/asm/kvm_host.h

@@ -77,6 +77,9 @@ struct kvm_arch {
 	/* Interrupt controller */
 	/* Interrupt controller */
 	struct vgic_dist	vgic;
 	struct vgic_dist	vgic;
 	int max_vcpus;
 	int max_vcpus;
+
+	/* Mandated version of PSCI */
+	u32 psci_version;
 };
 };
 
 
 #define KVM_NR_MEM_OBJS     40
 #define KVM_NR_MEM_OBJS     40

+ 6 - 0
arch/arm/include/uapi/asm/kvm.h

@@ -195,6 +195,12 @@ struct kvm_arch_memory_slot {
 #define KVM_REG_ARM_VFP_FPINST		0x1009
 #define KVM_REG_ARM_VFP_FPINST		0x1009
 #define KVM_REG_ARM_VFP_FPINST2		0x100A
 #define KVM_REG_ARM_VFP_FPINST2		0x100A
 
 
+/* KVM-as-firmware specific pseudo-registers */
+#define KVM_REG_ARM_FW			(0x0014 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_FW_REG(r)		(KVM_REG_ARM | KVM_REG_SIZE_U64 | \
+					 KVM_REG_ARM_FW | ((r) & 0xffff))
+#define KVM_REG_ARM_PSCI_VERSION	KVM_REG_ARM_FW_REG(0)
+
 /* Device Control API: ARM VGIC */
 /* Device Control API: ARM VGIC */
 #define KVM_DEV_ARM_VGIC_GRP_ADDR	0
 #define KVM_DEV_ARM_VGIC_GRP_ADDR	0
 #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS	1
 #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS	1

+ 13 - 0
arch/arm/kvm/guest.c

@@ -22,6 +22,7 @@
 #include <linux/module.h>
 #include <linux/module.h>
 #include <linux/vmalloc.h>
 #include <linux/vmalloc.h>
 #include <linux/fs.h>
 #include <linux/fs.h>
+#include <kvm/arm_psci.h>
 #include <asm/cputype.h>
 #include <asm/cputype.h>
 #include <linux/uaccess.h>
 #include <linux/uaccess.h>
 #include <asm/kvm.h>
 #include <asm/kvm.h>
@@ -176,6 +177,7 @@ static unsigned long num_core_regs(void)
 unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu)
 unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu)
 {
 {
 	return num_core_regs() + kvm_arm_num_coproc_regs(vcpu)
 	return num_core_regs() + kvm_arm_num_coproc_regs(vcpu)
+		+ kvm_arm_get_fw_num_regs(vcpu)
 		+ NUM_TIMER_REGS;
 		+ NUM_TIMER_REGS;
 }
 }
 
 
@@ -196,6 +198,11 @@ int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *uindices)
 		uindices++;
 		uindices++;
 	}
 	}
 
 
+	ret = kvm_arm_copy_fw_reg_indices(vcpu, uindices);
+	if (ret)
+		return ret;
+	uindices += kvm_arm_get_fw_num_regs(vcpu);
+
 	ret = copy_timer_indices(vcpu, uindices);
 	ret = copy_timer_indices(vcpu, uindices);
 	if (ret)
 	if (ret)
 		return ret;
 		return ret;
@@ -214,6 +221,9 @@ int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
 	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
 	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
 		return get_core_reg(vcpu, reg);
 		return get_core_reg(vcpu, reg);
 
 
+	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_FW)
+		return kvm_arm_get_fw_reg(vcpu, reg);
+
 	if (is_timer_reg(reg->id))
 	if (is_timer_reg(reg->id))
 		return get_timer_reg(vcpu, reg);
 		return get_timer_reg(vcpu, reg);
 
 
@@ -230,6 +240,9 @@ int kvm_arm_set_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
 	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
 	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
 		return set_core_reg(vcpu, reg);
 		return set_core_reg(vcpu, reg);
 
 
+	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_FW)
+		return kvm_arm_set_fw_reg(vcpu, reg);
+
 	if (is_timer_reg(reg->id))
 	if (is_timer_reg(reg->id))
 		return set_timer_reg(vcpu, reg);
 		return set_timer_reg(vcpu, reg);
 
 

+ 1 - 5
arch/arm/mach-omap2/Makefile

@@ -243,8 +243,4 @@ arch/arm/mach-omap2/pm-asm-offsets.s: arch/arm/mach-omap2/pm-asm-offsets.c
 include/generated/ti-pm-asm-offsets.h: arch/arm/mach-omap2/pm-asm-offsets.s FORCE
 include/generated/ti-pm-asm-offsets.h: arch/arm/mach-omap2/pm-asm-offsets.s FORCE
 	$(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)
 	$(call filechk,offsets,__TI_PM_ASM_OFFSETS_H__)
 
 
-# For rule to generate ti-emif-asm-offsets.h dependency
-include drivers/memory/Makefile.asm-offsets
-
-arch/arm/mach-omap2/sleep33xx.o: include/generated/ti-pm-asm-offsets.h include/generated/ti-emif-asm-offsets.h
-arch/arm/mach-omap2/sleep43xx.o: include/generated/ti-pm-asm-offsets.h include/generated/ti-emif-asm-offsets.h
+$(obj)/sleep33xx.o $(obj)/sleep43xx.o: include/generated/ti-pm-asm-offsets.h

+ 3 - 0
arch/arm/mach-omap2/pm-asm-offsets.c

@@ -7,9 +7,12 @@
 
 
 #include <linux/kbuild.h>
 #include <linux/kbuild.h>
 #include <linux/platform_data/pm33xx.h>
 #include <linux/platform_data/pm33xx.h>
+#include <linux/ti-emif-sram.h>
 
 
 int main(void)
 int main(void)
 {
 {
+	ti_emif_asm_offsets();
+
 	DEFINE(AMX3_PM_WFI_FLAGS_OFFSET,
 	DEFINE(AMX3_PM_WFI_FLAGS_OFFSET,
 	       offsetof(struct am33xx_pm_sram_data, wfi_flags));
 	       offsetof(struct am33xx_pm_sram_data, wfi_flags));
 	DEFINE(AMX3_PM_L2_AUX_CTRL_VAL_OFFSET,
 	DEFINE(AMX3_PM_L2_AUX_CTRL_VAL_OFFSET,

+ 0 - 1
arch/arm/mach-omap2/sleep33xx.S

@@ -6,7 +6,6 @@
  *	Dave Gerlach, Vaibhav Bedia
  *	Dave Gerlach, Vaibhav Bedia
  */
  */
 
 
-#include <generated/ti-emif-asm-offsets.h>
 #include <generated/ti-pm-asm-offsets.h>
 #include <generated/ti-pm-asm-offsets.h>
 #include <linux/linkage.h>
 #include <linux/linkage.h>
 #include <linux/ti-emif-sram.h>
 #include <linux/ti-emif-sram.h>

+ 0 - 1
arch/arm/mach-omap2/sleep43xx.S

@@ -6,7 +6,6 @@
  *	Dave Gerlach, Vaibhav Bedia
  *	Dave Gerlach, Vaibhav Bedia
  */
  */
 
 
-#include <generated/ti-emif-asm-offsets.h>
 #include <generated/ti-pm-asm-offsets.h>
 #include <generated/ti-pm-asm-offsets.h>
 #include <linux/linkage.h>
 #include <linux/linkage.h>
 #include <linux/ti-emif-sram.h>
 #include <linux/ti-emif-sram.h>

+ 2 - 2
arch/arm/mach-s3c24xx/mach-jive.c

@@ -427,9 +427,9 @@ static struct gpiod_lookup_table jive_wm8750_gpiod_table = {
 	.dev_id         = "spi_gpio",
 	.dev_id         = "spi_gpio",
 	.table          = {
 	.table          = {
 		GPIO_LOOKUP("GPIOB", 4,
 		GPIO_LOOKUP("GPIOB", 4,
-			    "gpio-sck", GPIO_ACTIVE_HIGH),
+			    "sck", GPIO_ACTIVE_HIGH),
 		GPIO_LOOKUP("GPIOB", 9,
 		GPIO_LOOKUP("GPIOB", 9,
-			    "gpio-mosi", GPIO_ACTIVE_HIGH),
+			    "mosi", GPIO_ACTIVE_HIGH),
 		GPIO_LOOKUP("GPIOH", 10,
 		GPIO_LOOKUP("GPIOH", 10,
 			    "cs", GPIO_ACTIVE_HIGH),
 			    "cs", GPIO_ACTIVE_HIGH),
 		{ },
 		{ },

+ 4 - 0
arch/arm64/Makefile

@@ -56,7 +56,11 @@ KBUILD_AFLAGS	+= $(lseinstr) $(brokengasinst)
 KBUILD_CFLAGS	+= $(call cc-option,-mabi=lp64)
 KBUILD_CFLAGS	+= $(call cc-option,-mabi=lp64)
 KBUILD_AFLAGS	+= $(call cc-option,-mabi=lp64)
 KBUILD_AFLAGS	+= $(call cc-option,-mabi=lp64)
 
 
+ifeq ($(cc-name),clang)
+KBUILD_CFLAGS	+= -DCONFIG_ARCH_SUPPORTS_INT128
+else
 KBUILD_CFLAGS	+= $(call cc-ifversion, -ge, 0500, -DCONFIG_ARCH_SUPPORTS_INT128)
 KBUILD_CFLAGS	+= $(call cc-ifversion, -ge, 0500, -DCONFIG_ARCH_SUPPORTS_INT128)
+endif
 
 
 ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
 ifeq ($(CONFIG_CPU_BIG_ENDIAN), y)
 KBUILD_CPPFLAGS	+= -mbig-endian
 KBUILD_CPPFLAGS	+= -mbig-endian

+ 4 - 0
arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi

@@ -212,3 +212,7 @@
 	pinctrl-0 = <&uart_ao_a_pins>;
 	pinctrl-0 = <&uart_ao_a_pins>;
 	pinctrl-names = "default";
 	pinctrl-names = "default";
 };
 };
+
+&usb0 {
+	status = "okay";
+};

+ 12 - 0
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts

@@ -271,3 +271,15 @@
 	pinctrl-0 = <&uart_ao_a_pins>;
 	pinctrl-0 = <&uart_ao_a_pins>;
 	pinctrl-names = "default";
 	pinctrl-names = "default";
 };
 };
+
+&usb0 {
+	status = "okay";
+};
+
+&usb2_phy0 {
+	/*
+	 * even though the schematics don't show it:
+	 * HDMI_5V is also used as supply for the USB VBUS.
+	 */
+	phy-supply = <&hdmi_5v>;
+};

+ 4 - 0
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-nexbox-a95x.dts

@@ -215,3 +215,7 @@
 	pinctrl-0 = <&uart_ao_a_pins>;
 	pinctrl-0 = <&uart_ao_a_pins>;
 	pinctrl-names = "default";
 	pinctrl-names = "default";
 };
 };
+
+&usb0 {
+	status = "okay";
+};

+ 4 - 0
arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi

@@ -185,3 +185,7 @@
 	pinctrl-0 = <&uart_ao_a_pins>;
 	pinctrl-0 = <&uart_ao_a_pins>;
 	pinctrl-names = "default";
 	pinctrl-names = "default";
 };
 };
+
+&usb0 {
+	status = "okay";
+};

+ 61 - 0
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi

@@ -20,6 +20,67 @@
 			no-map;
 			no-map;
 		};
 		};
 	};
 	};
+
+	soc {
+		usb0: usb@c9000000 {
+			status = "disabled";
+			compatible = "amlogic,meson-gxl-dwc3";
+			#address-cells = <2>;
+			#size-cells = <2>;
+			ranges;
+
+			clocks = <&clkc CLKID_USB>;
+			clock-names = "usb_general";
+			resets = <&reset RESET_USB_OTG>;
+			reset-names = "usb_otg";
+
+			dwc3: dwc3@c9000000 {
+				compatible = "snps,dwc3";
+				reg = <0x0 0xc9000000 0x0 0x100000>;
+				interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+				dr_mode = "host";
+				maximum-speed = "high-speed";
+				snps,dis_u2_susphy_quirk;
+				phys = <&usb3_phy>, <&usb2_phy0>, <&usb2_phy1>;
+			};
+		};
+	};
+};
+
+&apb {
+	usb2_phy0: phy@78000 {
+		compatible = "amlogic,meson-gxl-usb2-phy";
+		#phy-cells = <0>;
+		reg = <0x0 0x78000 0x0 0x20>;
+		clocks = <&clkc CLKID_USB>;
+		clock-names = "phy";
+		resets = <&reset RESET_USB_OTG>;
+		reset-names = "phy";
+		status = "okay";
+	};
+
+	usb2_phy1: phy@78020 {
+		compatible = "amlogic,meson-gxl-usb2-phy";
+		#phy-cells = <0>;
+		reg = <0x0 0x78020 0x0 0x20>;
+		clocks = <&clkc CLKID_USB>;
+		clock-names = "phy";
+		resets = <&reset RESET_USB_OTG>;
+		reset-names = "phy";
+		status = "okay";
+	};
+
+	usb3_phy: phy@78080 {
+		compatible = "amlogic,meson-gxl-usb3-phy";
+		#phy-cells = <0>;
+		reg = <0x0 0x78080 0x0 0x20>;
+		interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+		clocks = <&clkc CLKID_USB>, <&clkc_AO CLKID_AO_CEC_32K>;
+		clock-names = "phy", "peripheral";
+		resets = <&reset RESET_USB_OTG>, <&reset RESET_USB_OTG>;
+		reset-names = "phy", "peripheral";
+		status = "okay";
+	};
 };
 };
 
 
 &ethmac {
 &ethmac {

+ 4 - 0
arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts

@@ -406,3 +406,7 @@
 	status = "okay";
 	status = "okay";
 	vref-supply = <&vddio_ao18>;
 	vref-supply = <&vddio_ao18>;
 };
 };
+
+&usb0 {
+	status = "okay";
+};

+ 17 - 0
arch/arm64/boot/dts/amlogic/meson-gxm.dtsi

@@ -80,6 +80,19 @@
 	};
 	};
 };
 };
 
 
+&apb {
+	usb2_phy2: phy@78040 {
+		compatible = "amlogic,meson-gxl-usb2-phy";
+		#phy-cells = <0>;
+		reg = <0x0 0x78040 0x0 0x20>;
+		clocks = <&clkc CLKID_USB>;
+		clock-names = "phy";
+		resets = <&reset RESET_USB_OTG>;
+		reset-names = "phy";
+		status = "okay";
+	};
+};
+
 &clkc_AO {
 &clkc_AO {
 	compatible = "amlogic,meson-gxm-aoclkc", "amlogic,meson-gx-aoclkc";
 	compatible = "amlogic,meson-gxm-aoclkc", "amlogic,meson-gx-aoclkc";
 };
 };
@@ -100,3 +113,7 @@
 &hdmi_tx {
 &hdmi_tx {
 	compatible = "amlogic,meson-gxm-dw-hdmi", "amlogic,meson-gx-dw-hdmi";
 	compatible = "amlogic,meson-gxm-dw-hdmi", "amlogic,meson-gx-dw-hdmi";
 };
 };
+
+&dwc3 {
+	phys = <&usb3_phy>, <&usb2_phy0>, <&usb2_phy1>, <&usb2_phy2>;
+};

+ 0 - 2
arch/arm64/boot/dts/arm/juno-motherboard.dtsi

@@ -56,8 +56,6 @@
 
 
 			gpio_keys {
 			gpio_keys {
 				compatible = "gpio-keys";
 				compatible = "gpio-keys";
-				#address-cells = <1>;
-				#size-cells = <0>;
 
 
 				power-button {
 				power-button {
 					debounce_interval = <50>;
 					debounce_interval = <50>;

+ 40 - 40
arch/arm64/boot/dts/broadcom/stingray/stingray-sata.dtsi

@@ -36,11 +36,11 @@
 		#size-cells = <1>;
 		#size-cells = <1>;
 		ranges = <0x0 0x0 0x67d00000 0x00800000>;
 		ranges = <0x0 0x0 0x67d00000 0x00800000>;
 
 
-		sata0: ahci@210000 {
+		sata0: ahci@0 {
 			compatible = "brcm,iproc-ahci", "generic-ahci";
 			compatible = "brcm,iproc-ahci", "generic-ahci";
-			reg = <0x00210000 0x1000>;
+			reg = <0x00000000 0x1000>;
 			reg-names = "ahci";
 			reg-names = "ahci";
-			interrupts = <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH>;
+			interrupts = <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
 			status = "disabled";
 			status = "disabled";
@@ -52,9 +52,9 @@
 			};
 			};
 		};
 		};
 
 
-		sata_phy0: sata_phy@212100 {
+		sata_phy0: sata_phy@2100 {
 			compatible = "brcm,iproc-sr-sata-phy";
 			compatible = "brcm,iproc-sr-sata-phy";
-			reg = <0x00212100 0x1000>;
+			reg = <0x00002100 0x1000>;
 			reg-names = "phy";
 			reg-names = "phy";
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
@@ -66,11 +66,11 @@
 			};
 			};
 		};
 		};
 
 
-		sata1: ahci@310000 {
+		sata1: ahci@10000 {
 			compatible = "brcm,iproc-ahci", "generic-ahci";
 			compatible = "brcm,iproc-ahci", "generic-ahci";
-			reg = <0x00310000 0x1000>;
+			reg = <0x00010000 0x1000>;
 			reg-names = "ahci";
 			reg-names = "ahci";
-			interrupts = <GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH>;
+			interrupts = <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
 			status = "disabled";
 			status = "disabled";
@@ -82,9 +82,9 @@
 			};
 			};
 		};
 		};
 
 
-		sata_phy1: sata_phy@312100 {
+		sata_phy1: sata_phy@12100 {
 			compatible = "brcm,iproc-sr-sata-phy";
 			compatible = "brcm,iproc-sr-sata-phy";
-			reg = <0x00312100 0x1000>;
+			reg = <0x00012100 0x1000>;
 			reg-names = "phy";
 			reg-names = "phy";
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
@@ -96,11 +96,11 @@
 			};
 			};
 		};
 		};
 
 
-		sata2: ahci@120000 {
+		sata2: ahci@20000 {
 			compatible = "brcm,iproc-ahci", "generic-ahci";
 			compatible = "brcm,iproc-ahci", "generic-ahci";
-			reg = <0x00120000 0x1000>;
+			reg = <0x00020000 0x1000>;
 			reg-names = "ahci";
 			reg-names = "ahci";
-			interrupts = <GIC_SPI 333 IRQ_TYPE_LEVEL_HIGH>;
+			interrupts = <GIC_SPI 325 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
 			status = "disabled";
 			status = "disabled";
@@ -112,9 +112,9 @@
 			};
 			};
 		};
 		};
 
 
-		sata_phy2: sata_phy@122100 {
+		sata_phy2: sata_phy@22100 {
 			compatible = "brcm,iproc-sr-sata-phy";
 			compatible = "brcm,iproc-sr-sata-phy";
-			reg = <0x00122100 0x1000>;
+			reg = <0x00022100 0x1000>;
 			reg-names = "phy";
 			reg-names = "phy";
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
@@ -126,11 +126,11 @@
 			};
 			};
 		};
 		};
 
 
-		sata3: ahci@130000 {
+		sata3: ahci@30000 {
 			compatible = "brcm,iproc-ahci", "generic-ahci";
 			compatible = "brcm,iproc-ahci", "generic-ahci";
-			reg = <0x00130000 0x1000>;
+			reg = <0x00030000 0x1000>;
 			reg-names = "ahci";
 			reg-names = "ahci";
-			interrupts = <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>;
+			interrupts = <GIC_SPI 327 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
 			status = "disabled";
 			status = "disabled";
@@ -142,9 +142,9 @@
 			};
 			};
 		};
 		};
 
 
-		sata_phy3: sata_phy@132100 {
+		sata_phy3: sata_phy@32100 {
 			compatible = "brcm,iproc-sr-sata-phy";
 			compatible = "brcm,iproc-sr-sata-phy";
-			reg = <0x00132100 0x1000>;
+			reg = <0x00032100 0x1000>;
 			reg-names = "phy";
 			reg-names = "phy";
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
@@ -156,11 +156,11 @@
 			};
 			};
 		};
 		};
 
 
-		sata4: ahci@330000 {
+		sata4: ahci@100000 {
 			compatible = "brcm,iproc-ahci", "generic-ahci";
 			compatible = "brcm,iproc-ahci", "generic-ahci";
-			reg = <0x00330000 0x1000>;
+			reg = <0x00100000 0x1000>;
 			reg-names = "ahci";
 			reg-names = "ahci";
-			interrupts = <GIC_SPI 351 IRQ_TYPE_LEVEL_HIGH>;
+			interrupts = <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
 			status = "disabled";
 			status = "disabled";
@@ -172,9 +172,9 @@
 			};
 			};
 		};
 		};
 
 
-		sata_phy4: sata_phy@332100 {
+		sata_phy4: sata_phy@102100 {
 			compatible = "brcm,iproc-sr-sata-phy";
 			compatible = "brcm,iproc-sr-sata-phy";
-			reg = <0x00332100 0x1000>;
+			reg = <0x00102100 0x1000>;
 			reg-names = "phy";
 			reg-names = "phy";
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
@@ -186,11 +186,11 @@
 			};
 			};
 		};
 		};
 
 
-		sata5: ahci@400000 {
+		sata5: ahci@110000 {
 			compatible = "brcm,iproc-ahci", "generic-ahci";
 			compatible = "brcm,iproc-ahci", "generic-ahci";
-			reg = <0x00400000 0x1000>;
+			reg = <0x00110000 0x1000>;
 			reg-names = "ahci";
 			reg-names = "ahci";
-			interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>;
+			interrupts = <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
 			status = "disabled";
 			status = "disabled";
@@ -202,9 +202,9 @@
 			};
 			};
 		};
 		};
 
 
-		sata_phy5: sata_phy@402100 {
+		sata_phy5: sata_phy@112100 {
 			compatible = "brcm,iproc-sr-sata-phy";
 			compatible = "brcm,iproc-sr-sata-phy";
-			reg = <0x00402100 0x1000>;
+			reg = <0x00112100 0x1000>;
 			reg-names = "phy";
 			reg-names = "phy";
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
@@ -216,11 +216,11 @@
 			};
 			};
 		};
 		};
 
 
-		sata6: ahci@410000 {
+		sata6: ahci@120000 {
 			compatible = "brcm,iproc-ahci", "generic-ahci";
 			compatible = "brcm,iproc-ahci", "generic-ahci";
-			reg = <0x00410000 0x1000>;
+			reg = <0x00120000 0x1000>;
 			reg-names = "ahci";
 			reg-names = "ahci";
-			interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
+			interrupts = <GIC_SPI 333 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
 			status = "disabled";
 			status = "disabled";
@@ -232,9 +232,9 @@
 			};
 			};
 		};
 		};
 
 
-		sata_phy6: sata_phy@412100 {
+		sata_phy6: sata_phy@122100 {
 			compatible = "brcm,iproc-sr-sata-phy";
 			compatible = "brcm,iproc-sr-sata-phy";
-			reg = <0x00412100 0x1000>;
+			reg = <0x00122100 0x1000>;
 			reg-names = "phy";
 			reg-names = "phy";
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
@@ -246,11 +246,11 @@
 			};
 			};
 		};
 		};
 
 
-		sata7: ahci@420000 {
+		sata7: ahci@130000 {
 			compatible = "brcm,iproc-ahci", "generic-ahci";
 			compatible = "brcm,iproc-ahci", "generic-ahci";
-			reg = <0x00420000 0x1000>;
+			reg = <0x00130000 0x1000>;
 			reg-names = "ahci";
 			reg-names = "ahci";
-			interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
+			interrupts = <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH>;
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;
 			status = "disabled";
 			status = "disabled";
@@ -262,9 +262,9 @@
 			};
 			};
 		};
 		};
 
 
-		sata_phy7: sata_phy@422100 {
+		sata_phy7: sata_phy@132100 {
 			compatible = "brcm,iproc-sr-sata-phy";
 			compatible = "brcm,iproc-sr-sata-phy";
-			reg = <0x00422100 0x1000>;
+			reg = <0x00132100 0x1000>;
 			reg-names = "phy";
 			reg-names = "phy";
 			#address-cells = <1>;
 			#address-cells = <1>;
 			#size-cells = <0>;
 			#size-cells = <0>;

+ 6 - 0
arch/arm64/include/asm/cputype.h

@@ -75,6 +75,7 @@
 #define ARM_CPU_IMP_CAVIUM		0x43
 #define ARM_CPU_IMP_CAVIUM		0x43
 #define ARM_CPU_IMP_BRCM		0x42
 #define ARM_CPU_IMP_BRCM		0x42
 #define ARM_CPU_IMP_QCOM		0x51
 #define ARM_CPU_IMP_QCOM		0x51
+#define ARM_CPU_IMP_NVIDIA		0x4E
 
 
 #define ARM_CPU_PART_AEM_V8		0xD0F
 #define ARM_CPU_PART_AEM_V8		0xD0F
 #define ARM_CPU_PART_FOUNDATION		0xD00
 #define ARM_CPU_PART_FOUNDATION		0xD00
@@ -99,6 +100,9 @@
 #define QCOM_CPU_PART_FALKOR		0xC00
 #define QCOM_CPU_PART_FALKOR		0xC00
 #define QCOM_CPU_PART_KRYO		0x200
 #define QCOM_CPU_PART_KRYO		0x200
 
 
+#define NVIDIA_CPU_PART_DENVER		0x003
+#define NVIDIA_CPU_PART_CARMEL		0x004
+
 #define MIDR_CORTEX_A53 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A53)
 #define MIDR_CORTEX_A53 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A53)
 #define MIDR_CORTEX_A57 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A57)
 #define MIDR_CORTEX_A57 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A57)
 #define MIDR_CORTEX_A72 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A72)
 #define MIDR_CORTEX_A72 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A72)
@@ -114,6 +118,8 @@
 #define MIDR_QCOM_FALKOR_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR_V1)
 #define MIDR_QCOM_FALKOR_V1 MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR_V1)
 #define MIDR_QCOM_FALKOR MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR)
 #define MIDR_QCOM_FALKOR MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_FALKOR)
 #define MIDR_QCOM_KRYO MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO)
 #define MIDR_QCOM_KRYO MIDR_CPU_MODEL(ARM_CPU_IMP_QCOM, QCOM_CPU_PART_KRYO)
+#define MIDR_NVIDIA_DENVER MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_DENVER)
+#define MIDR_NVIDIA_CARMEL MIDR_CPU_MODEL(ARM_CPU_IMP_NVIDIA, NVIDIA_CPU_PART_CARMEL)
 
 
 #ifndef __ASSEMBLY__
 #ifndef __ASSEMBLY__
 
 

+ 1 - 1
arch/arm64/include/asm/kvm_emulate.h

@@ -333,7 +333,7 @@ static inline void kvm_vcpu_set_be(struct kvm_vcpu *vcpu)
 	} else {
 	} else {
 		u64 sctlr = vcpu_read_sys_reg(vcpu, SCTLR_EL1);
 		u64 sctlr = vcpu_read_sys_reg(vcpu, SCTLR_EL1);
 		sctlr |= (1 << 25);
 		sctlr |= (1 << 25);
-		vcpu_write_sys_reg(vcpu, SCTLR_EL1, sctlr);
+		vcpu_write_sys_reg(vcpu, sctlr, SCTLR_EL1);
 	}
 	}
 }
 }
 
 

+ 3 - 0
arch/arm64/include/asm/kvm_host.h

@@ -75,6 +75,9 @@ struct kvm_arch {
 
 
 	/* Interrupt controller */
 	/* Interrupt controller */
 	struct vgic_dist	vgic;
 	struct vgic_dist	vgic;
+
+	/* Mandated version of PSCI */
+	u32 psci_version;
 };
 };
 
 
 #define KVM_NR_MEM_OBJS     40
 #define KVM_NR_MEM_OBJS     40

+ 1 - 1
arch/arm64/include/asm/module.h

@@ -39,7 +39,7 @@ struct mod_arch_specific {
 u64 module_emit_plt_entry(struct module *mod, void *loc, const Elf64_Rela *rela,
 u64 module_emit_plt_entry(struct module *mod, void *loc, const Elf64_Rela *rela,
 			  Elf64_Sym *sym);
 			  Elf64_Sym *sym);
 
 
-u64 module_emit_adrp_veneer(struct module *mod, void *loc, u64 val);
+u64 module_emit_veneer_for_adrp(struct module *mod, void *loc, u64 val);
 
 
 #ifdef CONFIG_RANDOMIZE_BASE
 #ifdef CONFIG_RANDOMIZE_BASE
 extern u64 module_alloc_base;
 extern u64 module_alloc_base;

+ 2 - 2
arch/arm64/include/asm/pgtable.h

@@ -230,7 +230,7 @@ static inline void set_pte(pte_t *ptep, pte_t pte)
 	}
 	}
 }
 }
 
 
-extern void __sync_icache_dcache(pte_t pteval, unsigned long addr);
+extern void __sync_icache_dcache(pte_t pteval);
 
 
 /*
 /*
  * PTE bits configuration in the presence of hardware Dirty Bit Management
  * PTE bits configuration in the presence of hardware Dirty Bit Management
@@ -253,7 +253,7 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr,
 	pte_t old_pte;
 	pte_t old_pte;
 
 
 	if (pte_present(pte) && pte_user_exec(pte) && !pte_special(pte))
 	if (pte_present(pte) && pte_user_exec(pte) && !pte_special(pte))
-		__sync_icache_dcache(pte, addr);
+		__sync_icache_dcache(pte);
 
 
 	/*
 	/*
 	 * If the existing pte is valid, check for potential race with
 	 * If the existing pte is valid, check for potential race with

+ 6 - 0
arch/arm64/include/uapi/asm/kvm.h

@@ -206,6 +206,12 @@ struct kvm_arch_memory_slot {
 #define KVM_REG_ARM_TIMER_CNT		ARM64_SYS_REG(3, 3, 14, 3, 2)
 #define KVM_REG_ARM_TIMER_CNT		ARM64_SYS_REG(3, 3, 14, 3, 2)
 #define KVM_REG_ARM_TIMER_CVAL		ARM64_SYS_REG(3, 3, 14, 0, 2)
 #define KVM_REG_ARM_TIMER_CVAL		ARM64_SYS_REG(3, 3, 14, 0, 2)
 
 
+/* KVM-as-firmware specific pseudo-registers */
+#define KVM_REG_ARM_FW			(0x0014 << KVM_REG_ARM_COPROC_SHIFT)
+#define KVM_REG_ARM_FW_REG(r)		(KVM_REG_ARM64 | KVM_REG_SIZE_U64 | \
+					 KVM_REG_ARM_FW | ((r) & 0xffff))
+#define KVM_REG_ARM_PSCI_VERSION	KVM_REG_ARM_FW_REG(0)
+
 /* Device Control API: ARM VGIC */
 /* Device Control API: ARM VGIC */
 #define KVM_DEV_ARM_VGIC_GRP_ADDR	0
 #define KVM_DEV_ARM_VGIC_GRP_ADDR	0
 #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS	1
 #define KVM_DEV_ARM_VGIC_GRP_DIST_REGS	1

+ 1 - 0
arch/arm64/kernel/cpu_errata.c

@@ -316,6 +316,7 @@ static const struct midr_range arm64_bp_harden_smccc_cpus[] = {
 	MIDR_ALL_VERSIONS(MIDR_CAVIUM_THUNDERX2),
 	MIDR_ALL_VERSIONS(MIDR_CAVIUM_THUNDERX2),
 	MIDR_ALL_VERSIONS(MIDR_QCOM_FALKOR_V1),
 	MIDR_ALL_VERSIONS(MIDR_QCOM_FALKOR_V1),
 	MIDR_ALL_VERSIONS(MIDR_QCOM_FALKOR),
 	MIDR_ALL_VERSIONS(MIDR_QCOM_FALKOR),
+	MIDR_ALL_VERSIONS(MIDR_NVIDIA_DENVER),
 	{},
 	{},
 };
 };
 
 

+ 1 - 0
arch/arm64/kernel/cpufeature.c

@@ -868,6 +868,7 @@ static bool unmap_kernel_at_el0(const struct arm64_cpu_capabilities *entry,
 	static const struct midr_range kpti_safe_list[] = {
 	static const struct midr_range kpti_safe_list[] = {
 		MIDR_ALL_VERSIONS(MIDR_CAVIUM_THUNDERX2),
 		MIDR_ALL_VERSIONS(MIDR_CAVIUM_THUNDERX2),
 		MIDR_ALL_VERSIONS(MIDR_BRCM_VULCAN),
 		MIDR_ALL_VERSIONS(MIDR_BRCM_VULCAN),
+		{ /* sentinel */ }
 	};
 	};
 	char const *str = "command line option";
 	char const *str = "command line option";
 
 

+ 1 - 1
arch/arm64/kernel/module-plts.c

@@ -43,7 +43,7 @@ u64 module_emit_plt_entry(struct module *mod, void *loc, const Elf64_Rela *rela,
 }
 }
 
 
 #ifdef CONFIG_ARM64_ERRATUM_843419
 #ifdef CONFIG_ARM64_ERRATUM_843419
-u64 module_emit_adrp_veneer(struct module *mod, void *loc, u64 val)
+u64 module_emit_veneer_for_adrp(struct module *mod, void *loc, u64 val)
 {
 {
 	struct mod_plt_sec *pltsec = !in_init(mod, loc) ? &mod->arch.core :
 	struct mod_plt_sec *pltsec = !in_init(mod, loc) ? &mod->arch.core :
 							  &mod->arch.init;
 							  &mod->arch.init;

+ 1 - 1
arch/arm64/kernel/module.c

@@ -215,7 +215,7 @@ static int reloc_insn_adrp(struct module *mod, __le32 *place, u64 val)
 		insn &= ~BIT(31);
 		insn &= ~BIT(31);
 	} else {
 	} else {
 		/* out of range for ADR -> emit a veneer */
 		/* out of range for ADR -> emit a veneer */
-		val = module_emit_adrp_veneer(mod, place, val & ~0xfff);
+		val = module_emit_veneer_for_adrp(mod, place, val & ~0xfff);
 		if (!val)
 		if (!val)
 			return -ENOEXEC;
 			return -ENOEXEC;
 		insn = aarch64_insn_gen_branch_imm((u64)place, val,
 		insn = aarch64_insn_gen_branch_imm((u64)place, val,

+ 10 - 10
arch/arm64/kernel/ptrace.c

@@ -25,6 +25,7 @@
 #include <linux/sched/signal.h>
 #include <linux/sched/signal.h>
 #include <linux/sched/task_stack.h>
 #include <linux/sched/task_stack.h>
 #include <linux/mm.h>
 #include <linux/mm.h>
+#include <linux/nospec.h>
 #include <linux/smp.h>
 #include <linux/smp.h>
 #include <linux/ptrace.h>
 #include <linux/ptrace.h>
 #include <linux/user.h>
 #include <linux/user.h>
@@ -249,15 +250,20 @@ static struct perf_event *ptrace_hbp_get_event(unsigned int note_type,
 
 
 	switch (note_type) {
 	switch (note_type) {
 	case NT_ARM_HW_BREAK:
 	case NT_ARM_HW_BREAK:
-		if (idx < ARM_MAX_BRP)
-			bp = tsk->thread.debug.hbp_break[idx];
+		if (idx >= ARM_MAX_BRP)
+			goto out;
+		idx = array_index_nospec(idx, ARM_MAX_BRP);
+		bp = tsk->thread.debug.hbp_break[idx];
 		break;
 		break;
 	case NT_ARM_HW_WATCH:
 	case NT_ARM_HW_WATCH:
-		if (idx < ARM_MAX_WRP)
-			bp = tsk->thread.debug.hbp_watch[idx];
+		if (idx >= ARM_MAX_WRP)
+			goto out;
+		idx = array_index_nospec(idx, ARM_MAX_WRP);
+		bp = tsk->thread.debug.hbp_watch[idx];
 		break;
 		break;
 	}
 	}
 
 
+out:
 	return bp;
 	return bp;
 }
 }
 
 
@@ -1458,9 +1464,7 @@ static int compat_ptrace_gethbpregs(struct task_struct *tsk, compat_long_t num,
 {
 {
 	int ret;
 	int ret;
 	u32 kdata;
 	u32 kdata;
-	mm_segment_t old_fs = get_fs();
 
 
-	set_fs(KERNEL_DS);
 	/* Watchpoint */
 	/* Watchpoint */
 	if (num < 0) {
 	if (num < 0) {
 		ret = compat_ptrace_hbp_get(NT_ARM_HW_WATCH, tsk, num, &kdata);
 		ret = compat_ptrace_hbp_get(NT_ARM_HW_WATCH, tsk, num, &kdata);
@@ -1471,7 +1475,6 @@ static int compat_ptrace_gethbpregs(struct task_struct *tsk, compat_long_t num,
 	} else {
 	} else {
 		ret = compat_ptrace_hbp_get(NT_ARM_HW_BREAK, tsk, num, &kdata);
 		ret = compat_ptrace_hbp_get(NT_ARM_HW_BREAK, tsk, num, &kdata);
 	}
 	}
-	set_fs(old_fs);
 
 
 	if (!ret)
 	if (!ret)
 		ret = put_user(kdata, data);
 		ret = put_user(kdata, data);
@@ -1484,7 +1487,6 @@ static int compat_ptrace_sethbpregs(struct task_struct *tsk, compat_long_t num,
 {
 {
 	int ret;
 	int ret;
 	u32 kdata = 0;
 	u32 kdata = 0;
-	mm_segment_t old_fs = get_fs();
 
 
 	if (num == 0)
 	if (num == 0)
 		return 0;
 		return 0;
@@ -1493,12 +1495,10 @@ static int compat_ptrace_sethbpregs(struct task_struct *tsk, compat_long_t num,
 	if (ret)
 	if (ret)
 		return ret;
 		return ret;
 
 
-	set_fs(KERNEL_DS);
 	if (num < 0)
 	if (num < 0)
 		ret = compat_ptrace_hbp_set(NT_ARM_HW_WATCH, tsk, num, &kdata);
 		ret = compat_ptrace_hbp_set(NT_ARM_HW_WATCH, tsk, num, &kdata);
 	else
 	else
 		ret = compat_ptrace_hbp_set(NT_ARM_HW_BREAK, tsk, num, &kdata);
 		ret = compat_ptrace_hbp_set(NT_ARM_HW_BREAK, tsk, num, &kdata);
-	set_fs(old_fs);
 
 
 	return ret;
 	return ret;
 }
 }

+ 3 - 2
arch/arm64/kernel/traps.c

@@ -277,7 +277,8 @@ void arm64_skip_faulting_instruction(struct pt_regs *regs, unsigned long size)
 	 * If we were single stepping, we want to get the step exception after
 	 * If we were single stepping, we want to get the step exception after
 	 * we return from the trap.
 	 * we return from the trap.
 	 */
 	 */
-	user_fastforward_single_step(current);
+	if (user_mode(regs))
+		user_fastforward_single_step(current);
 }
 }
 
 
 static LIST_HEAD(undef_hook);
 static LIST_HEAD(undef_hook);
@@ -366,7 +367,7 @@ void force_signal_inject(int signal, int code, unsigned long address)
 	}
 	}
 
 
 	/* Force signals we don't understand to SIGKILL */
 	/* Force signals we don't understand to SIGKILL */
-	if (WARN_ON(signal != SIGKILL ||
+	if (WARN_ON(signal != SIGKILL &&
 		    siginfo_layout(signal, code) != SIL_FAULT)) {
 		    siginfo_layout(signal, code) != SIL_FAULT)) {
 		signal = SIGKILL;
 		signal = SIGKILL;
 	}
 	}

+ 13 - 1
arch/arm64/kvm/guest.c

@@ -25,6 +25,7 @@
 #include <linux/module.h>
 #include <linux/module.h>
 #include <linux/vmalloc.h>
 #include <linux/vmalloc.h>
 #include <linux/fs.h>
 #include <linux/fs.h>
+#include <kvm/arm_psci.h>
 #include <asm/cputype.h>
 #include <asm/cputype.h>
 #include <linux/uaccess.h>
 #include <linux/uaccess.h>
 #include <asm/kvm.h>
 #include <asm/kvm.h>
@@ -205,7 +206,7 @@ static int get_timer_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
 unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu)
 unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu)
 {
 {
 	return num_core_regs() + kvm_arm_num_sys_reg_descs(vcpu)
 	return num_core_regs() + kvm_arm_num_sys_reg_descs(vcpu)
-                + NUM_TIMER_REGS;
+		+ kvm_arm_get_fw_num_regs(vcpu)	+ NUM_TIMER_REGS;
 }
 }
 
 
 /**
 /**
@@ -225,6 +226,11 @@ int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *uindices)
 		uindices++;
 		uindices++;
 	}
 	}
 
 
+	ret = kvm_arm_copy_fw_reg_indices(vcpu, uindices);
+	if (ret)
+		return ret;
+	uindices += kvm_arm_get_fw_num_regs(vcpu);
+
 	ret = copy_timer_indices(vcpu, uindices);
 	ret = copy_timer_indices(vcpu, uindices);
 	if (ret)
 	if (ret)
 		return ret;
 		return ret;
@@ -243,6 +249,9 @@ int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
 	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
 	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
 		return get_core_reg(vcpu, reg);
 		return get_core_reg(vcpu, reg);
 
 
+	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_FW)
+		return kvm_arm_get_fw_reg(vcpu, reg);
+
 	if (is_timer_reg(reg->id))
 	if (is_timer_reg(reg->id))
 		return get_timer_reg(vcpu, reg);
 		return get_timer_reg(vcpu, reg);
 
 
@@ -259,6 +268,9 @@ int kvm_arm_set_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg)
 	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
 	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_CORE)
 		return set_core_reg(vcpu, reg);
 		return set_core_reg(vcpu, reg);
 
 
+	if ((reg->id & KVM_REG_ARM_COPROC_MASK) == KVM_REG_ARM_FW)
+		return kvm_arm_set_fw_reg(vcpu, reg);
+
 	if (is_timer_reg(reg->id))
 	if (is_timer_reg(reg->id))
 		return set_timer_reg(vcpu, reg);
 		return set_timer_reg(vcpu, reg);
 
 

+ 19 - 5
arch/arm64/kvm/hyp/vgic-v2-cpuif-proxy.c

@@ -18,11 +18,20 @@
 #include <linux/compiler.h>
 #include <linux/compiler.h>
 #include <linux/irqchip/arm-gic.h>
 #include <linux/irqchip/arm-gic.h>
 #include <linux/kvm_host.h>
 #include <linux/kvm_host.h>
+#include <linux/swab.h>
 
 
 #include <asm/kvm_emulate.h>
 #include <asm/kvm_emulate.h>
 #include <asm/kvm_hyp.h>
 #include <asm/kvm_hyp.h>
 #include <asm/kvm_mmu.h>
 #include <asm/kvm_mmu.h>
 
 
+static bool __hyp_text __is_be(struct kvm_vcpu *vcpu)
+{
+	if (vcpu_mode_is_32bit(vcpu))
+		return !!(read_sysreg_el2(spsr) & COMPAT_PSR_E_BIT);
+
+	return !!(read_sysreg(SCTLR_EL1) & SCTLR_ELx_EE);
+}
+
 /*
 /*
  * __vgic_v2_perform_cpuif_access -- perform a GICV access on behalf of the
  * __vgic_v2_perform_cpuif_access -- perform a GICV access on behalf of the
  *				     guest.
  *				     guest.
@@ -64,14 +73,19 @@ int __hyp_text __vgic_v2_perform_cpuif_access(struct kvm_vcpu *vcpu)
 	addr += fault_ipa - vgic->vgic_cpu_base;
 	addr += fault_ipa - vgic->vgic_cpu_base;
 
 
 	if (kvm_vcpu_dabt_iswrite(vcpu)) {
 	if (kvm_vcpu_dabt_iswrite(vcpu)) {
-		u32 data = vcpu_data_guest_to_host(vcpu,
-						   vcpu_get_reg(vcpu, rd),
-						   sizeof(u32));
+		u32 data = vcpu_get_reg(vcpu, rd);
+		if (__is_be(vcpu)) {
+			/* guest pre-swabbed data, undo this for writel() */
+			data = swab32(data);
+		}
 		writel_relaxed(data, addr);
 		writel_relaxed(data, addr);
 	} else {
 	} else {
 		u32 data = readl_relaxed(addr);
 		u32 data = readl_relaxed(addr);
-		vcpu_set_reg(vcpu, rd, vcpu_data_host_to_guest(vcpu, data,
-							       sizeof(u32)));
+		if (__is_be(vcpu)) {
+			/* guest expects swabbed data */
+			data = swab32(data);
+		}
+		vcpu_set_reg(vcpu, rd, data);
 	}
 	}
 
 
 	return 1;
 	return 1;

+ 2 - 4
arch/arm64/kvm/sys_regs.c

@@ -996,14 +996,12 @@ static u64 read_id_reg(struct sys_reg_desc const *r, bool raz)
 
 
 	if (id == SYS_ID_AA64PFR0_EL1) {
 	if (id == SYS_ID_AA64PFR0_EL1) {
 		if (val & (0xfUL << ID_AA64PFR0_SVE_SHIFT))
 		if (val & (0xfUL << ID_AA64PFR0_SVE_SHIFT))
-			pr_err_once("kvm [%i]: SVE unsupported for guests, suppressing\n",
-				    task_pid_nr(current));
+			kvm_debug("SVE unsupported for guests, suppressing\n");
 
 
 		val &= ~(0xfUL << ID_AA64PFR0_SVE_SHIFT);
 		val &= ~(0xfUL << ID_AA64PFR0_SVE_SHIFT);
 	} else if (id == SYS_ID_AA64MMFR1_EL1) {
 	} else if (id == SYS_ID_AA64MMFR1_EL1) {
 		if (val & (0xfUL << ID_AA64MMFR1_LOR_SHIFT))
 		if (val & (0xfUL << ID_AA64MMFR1_LOR_SHIFT))
-			pr_err_once("kvm [%i]: LORegions unsupported for guests, suppressing\n",
-				    task_pid_nr(current));
+			kvm_debug("LORegions unsupported for guests, suppressing\n");
 
 
 		val &= ~(0xfUL << ID_AA64MMFR1_LOR_SHIFT);
 		val &= ~(0xfUL << ID_AA64MMFR1_LOR_SHIFT);
 	}
 	}

+ 4 - 0
arch/arm64/lib/Makefile

@@ -19,5 +19,9 @@ CFLAGS_atomic_ll_sc.o	:= -fcall-used-x0 -ffixed-x1 -ffixed-x2		\
 		   -fcall-saved-x13 -fcall-saved-x14 -fcall-saved-x15	\
 		   -fcall-saved-x13 -fcall-saved-x14 -fcall-saved-x15	\
 		   -fcall-saved-x18 -fomit-frame-pointer
 		   -fcall-saved-x18 -fomit-frame-pointer
 CFLAGS_REMOVE_atomic_ll_sc.o := -pg
 CFLAGS_REMOVE_atomic_ll_sc.o := -pg
+GCOV_PROFILE_atomic_ll_sc.o	:= n
+KASAN_SANITIZE_atomic_ll_sc.o	:= n
+KCOV_INSTRUMENT_atomic_ll_sc.o	:= n
+UBSAN_SANITIZE_atomic_ll_sc.o	:= n
 
 
 lib-$(CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE) += uaccess_flushcache.o
 lib-$(CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE) += uaccess_flushcache.o

+ 1 - 1
arch/arm64/mm/flush.c

@@ -58,7 +58,7 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
 	flush_ptrace_access(vma, page, uaddr, dst, len);
 	flush_ptrace_access(vma, page, uaddr, dst, len);
 }
 }
 
 
-void __sync_icache_dcache(pte_t pte, unsigned long addr)
+void __sync_icache_dcache(pte_t pte)
 {
 {
 	struct page *page = pte_page(pte);
 	struct page *page = pte_page(pte);
 
 

+ 3 - 1
arch/arm64/mm/init.c

@@ -646,8 +646,10 @@ static int keep_initrd __initdata;
 
 
 void __init free_initrd_mem(unsigned long start, unsigned long end)
 void __init free_initrd_mem(unsigned long start, unsigned long end)
 {
 {
-	if (!keep_initrd)
+	if (!keep_initrd) {
 		free_reserved_area((void *)start, (void *)end, 0, "initrd");
 		free_reserved_area((void *)start, (void *)end, 0, "initrd");
+		memblock_free(__virt_to_phys(start), end - start);
+	}
 }
 }
 
 
 static int __init keepinitrd_setup(char *__unused)
 static int __init keepinitrd_setup(char *__unused)

+ 2 - 2
arch/arm64/mm/kasan_init.c

@@ -204,7 +204,7 @@ void __init kasan_init(void)
 	clear_pgds(KASAN_SHADOW_START, KASAN_SHADOW_END);
 	clear_pgds(KASAN_SHADOW_START, KASAN_SHADOW_END);
 
 
 	kasan_map_populate(kimg_shadow_start, kimg_shadow_end,
 	kasan_map_populate(kimg_shadow_start, kimg_shadow_end,
-			   pfn_to_nid(virt_to_pfn(lm_alias(_text))));
+			   early_pfn_to_nid(virt_to_pfn(lm_alias(_text))));
 
 
 	kasan_populate_zero_shadow((void *)KASAN_SHADOW_START,
 	kasan_populate_zero_shadow((void *)KASAN_SHADOW_START,
 				   (void *)mod_shadow_start);
 				   (void *)mod_shadow_start);
@@ -224,7 +224,7 @@ void __init kasan_init(void)
 
 
 		kasan_map_populate((unsigned long)kasan_mem_to_shadow(start),
 		kasan_map_populate((unsigned long)kasan_mem_to_shadow(start),
 				   (unsigned long)kasan_mem_to_shadow(end),
 				   (unsigned long)kasan_mem_to_shadow(end),
-				   pfn_to_nid(virt_to_pfn(start)));
+				   early_pfn_to_nid(virt_to_pfn(start)));
 	}
 	}
 
 
 	/*
 	/*

+ 6 - 0
arch/hexagon/include/asm/io.h

@@ -216,6 +216,12 @@ static inline void memcpy_toio(volatile void __iomem *dst, const void *src,
 	memcpy((void *) dst, src, count);
 	memcpy((void *) dst, src, count);
 }
 }
 
 
+static inline void memset_io(volatile void __iomem *addr, int value,
+			     size_t size)
+{
+	memset((void __force *)addr, value, size);
+}
+
 #define PCI_IO_ADDR	(volatile void __iomem *)
 #define PCI_IO_ADDR	(volatile void __iomem *)
 
 
 /*
 /*

+ 1 - 0
arch/hexagon/lib/checksum.c

@@ -199,3 +199,4 @@ csum_partial_copy_nocheck(const void *src, void *dst, int len, __wsum sum)
 	memcpy(dst, src, len);
 	memcpy(dst, src, len);
 	return csum_partial(dst, len, sum);
 	return csum_partial(dst, len, sum);
 }
 }
+EXPORT_SYMBOL(csum_partial_copy_nocheck);

+ 6 - 0
arch/mips/boot/dts/img/boston.dts

@@ -51,6 +51,8 @@
 		ranges = <0x02000000 0 0x40000000
 		ranges = <0x02000000 0 0x40000000
 			  0x40000000 0 0x40000000>;
 			  0x40000000 0 0x40000000>;
 
 
+		bus-range = <0x00 0xff>;
+
 		interrupt-map-mask = <0 0 0 7>;
 		interrupt-map-mask = <0 0 0 7>;
 		interrupt-map = <0 0 0 1 &pci0_intc 1>,
 		interrupt-map = <0 0 0 1 &pci0_intc 1>,
 				<0 0 0 2 &pci0_intc 2>,
 				<0 0 0 2 &pci0_intc 2>,
@@ -79,6 +81,8 @@
 		ranges = <0x02000000 0 0x20000000
 		ranges = <0x02000000 0 0x20000000
 			  0x20000000 0 0x20000000>;
 			  0x20000000 0 0x20000000>;
 
 
+		bus-range = <0x00 0xff>;
+
 		interrupt-map-mask = <0 0 0 7>;
 		interrupt-map-mask = <0 0 0 7>;
 		interrupt-map = <0 0 0 1 &pci1_intc 1>,
 		interrupt-map = <0 0 0 1 &pci1_intc 1>,
 				<0 0 0 2 &pci1_intc 2>,
 				<0 0 0 2 &pci1_intc 2>,
@@ -107,6 +111,8 @@
 		ranges = <0x02000000 0 0x16000000
 		ranges = <0x02000000 0 0x16000000
 			  0x16000000 0 0x100000>;
 			  0x16000000 0 0x100000>;
 
 
+		bus-range = <0x00 0xff>;
+
 		interrupt-map-mask = <0 0 0 7>;
 		interrupt-map-mask = <0 0 0 7>;
 		interrupt-map = <0 0 0 1 &pci2_intc 1>,
 		interrupt-map = <0 0 0 1 &pci2_intc 1>,
 				<0 0 0 2 &pci2_intc 2>,
 				<0 0 0 2 &pci2_intc 2>,

+ 3 - 1
arch/mips/include/asm/io.h

@@ -307,7 +307,7 @@ static inline void iounmap(const volatile void __iomem *addr)
 #if defined(CONFIG_CPU_CAVIUM_OCTEON) || defined(CONFIG_LOONGSON3_ENHANCEMENT)
 #if defined(CONFIG_CPU_CAVIUM_OCTEON) || defined(CONFIG_LOONGSON3_ENHANCEMENT)
 #define war_io_reorder_wmb()		wmb()
 #define war_io_reorder_wmb()		wmb()
 #else
 #else
-#define war_io_reorder_wmb()		do { } while (0)
+#define war_io_reorder_wmb()		barrier()
 #endif
 #endif
 
 
 #define __BUILD_MEMORY_SINGLE(pfx, bwlq, type, irq)			\
 #define __BUILD_MEMORY_SINGLE(pfx, bwlq, type, irq)			\
@@ -377,6 +377,8 @@ static inline type pfx##read##bwlq(const volatile void __iomem *mem)	\
 		BUG();							\
 		BUG();							\
 	}								\
 	}								\
 									\
 									\
+	/* prevent prefetching of coherent DMA data prematurely */	\
+	rmb();								\
 	return pfx##ioswab##bwlq(__mem, __val);				\
 	return pfx##ioswab##bwlq(__mem, __val);				\
 }
 }
 
 

+ 9 - 2
arch/mips/include/asm/uaccess.h

@@ -654,6 +654,13 @@ __clear_user(void __user *addr, __kernel_size_t size)
 {
 {
 	__kernel_size_t res;
 	__kernel_size_t res;
 
 
+#ifdef CONFIG_CPU_MICROMIPS
+/* micromips memset / bzero also clobbers t7 & t8 */
+#define bzero_clobbers "$4", "$5", "$6", __UA_t0, __UA_t1, "$15", "$24", "$31"
+#else
+#define bzero_clobbers "$4", "$5", "$6", __UA_t0, __UA_t1, "$31"
+#endif /* CONFIG_CPU_MICROMIPS */
+
 	if (eva_kernel_access()) {
 	if (eva_kernel_access()) {
 		__asm__ __volatile__(
 		__asm__ __volatile__(
 			"move\t$4, %1\n\t"
 			"move\t$4, %1\n\t"
@@ -663,7 +670,7 @@ __clear_user(void __user *addr, __kernel_size_t size)
 			"move\t%0, $6"
 			"move\t%0, $6"
 			: "=r" (res)
 			: "=r" (res)
 			: "r" (addr), "r" (size)
 			: "r" (addr), "r" (size)
-			: "$4", "$5", "$6", __UA_t0, __UA_t1, "$31");
+			: bzero_clobbers);
 	} else {
 	} else {
 		might_fault();
 		might_fault();
 		__asm__ __volatile__(
 		__asm__ __volatile__(
@@ -674,7 +681,7 @@ __clear_user(void __user *addr, __kernel_size_t size)
 			"move\t%0, $6"
 			"move\t%0, $6"
 			: "=r" (res)
 			: "=r" (res)
 			: "r" (addr), "r" (size)
 			: "r" (addr), "r" (size)
-			: "$4", "$5", "$6", __UA_t0, __UA_t1, "$31");
+			: bzero_clobbers);
 	}
 	}
 
 
 	return res;
 	return res;

+ 8 - 3
arch/mips/lib/memset.S

@@ -219,7 +219,7 @@
 1:	PTR_ADDIU	a0, 1			/* fill bytewise */
 1:	PTR_ADDIU	a0, 1			/* fill bytewise */
 	R10KCBARRIER(0(ra))
 	R10KCBARRIER(0(ra))
 	bne		t1, a0, 1b
 	bne		t1, a0, 1b
-	sb		a1, -1(a0)
+	 EX(sb, a1, -1(a0), .Lsmall_fixup\@)
 
 
 2:	jr		ra			/* done */
 2:	jr		ra			/* done */
 	move		a2, zero
 	move		a2, zero
@@ -252,13 +252,18 @@
 	PTR_L		t0, TI_TASK($28)
 	PTR_L		t0, TI_TASK($28)
 	andi		a2, STORMASK
 	andi		a2, STORMASK
 	LONG_L		t0, THREAD_BUADDR(t0)
 	LONG_L		t0, THREAD_BUADDR(t0)
-	LONG_ADDU	a2, t1
+	LONG_ADDU	a2, a0
 	jr		ra
 	jr		ra
 	LONG_SUBU	a2, t0
 	LONG_SUBU	a2, t0
 
 
 .Llast_fixup\@:
 .Llast_fixup\@:
 	jr		ra
 	jr		ra
-	andi		v1, a2, STORMASK
+	 nop
+
+.Lsmall_fixup\@:
+	PTR_SUBU	a2, t1, a0
+	jr		ra
+	 PTR_ADDIU	a2, 1
 
 
 	.endm
 	.endm
 
 

+ 3 - 0
arch/parisc/Makefile

@@ -123,6 +123,9 @@ INSTALL_TARGETS = zinstall install
 
 
 PHONY += bzImage $(BOOT_TARGETS) $(INSTALL_TARGETS)
 PHONY += bzImage $(BOOT_TARGETS) $(INSTALL_TARGETS)
 
 
+# Default kernel to build
+all: bzImage
+
 zImage: vmlinuz
 zImage: vmlinuz
 Image: vmlinux
 Image: vmlinux
 
 

+ 4 - 3
arch/parisc/kernel/drivers.c

@@ -448,7 +448,8 @@ static int match_by_id(struct device * dev, void * data)
  * Checks all the children of @parent for a matching @id.  If none
  * Checks all the children of @parent for a matching @id.  If none
  * found, it allocates a new device and returns it.
  * found, it allocates a new device and returns it.
  */
  */
-static struct parisc_device * alloc_tree_node(struct device *parent, char id)
+static struct parisc_device * __init alloc_tree_node(
+			struct device *parent, char id)
 {
 {
 	struct match_id_data d = {
 	struct match_id_data d = {
 		.id = id,
 		.id = id,
@@ -825,8 +826,8 @@ static void walk_lower_bus(struct parisc_device *dev)
  * devices which are not physically connected (such as extra serial &
  * devices which are not physically connected (such as extra serial &
  * keyboard ports).  This problem is not yet solved.
  * keyboard ports).  This problem is not yet solved.
  */
  */
-static void walk_native_bus(unsigned long io_io_low, unsigned long io_io_high,
-                            struct device *parent)
+static void __init walk_native_bus(unsigned long io_io_low,
+	unsigned long io_io_high, struct device *parent)
 {
 {
 	int i, devices_found = 0;
 	int i, devices_found = 0;
 	unsigned long hpa = io_io_low;
 	unsigned long hpa = io_io_low;

+ 1 - 1
arch/parisc/kernel/pci.c

@@ -174,7 +174,7 @@ void pcibios_set_master(struct pci_dev *dev)
  * pcibios_init_bridge() initializes cache line and default latency
  * pcibios_init_bridge() initializes cache line and default latency
  * for pci controllers and pci-pci bridges
  * for pci controllers and pci-pci bridges
  */
  */
-void __init pcibios_init_bridge(struct pci_dev *dev)
+void __ref pcibios_init_bridge(struct pci_dev *dev)
 {
 {
 	unsigned short bridge_ctl, bridge_ctl_new;
 	unsigned short bridge_ctl, bridge_ctl_new;
 
 

+ 1 - 1
arch/parisc/kernel/time.c

@@ -205,7 +205,7 @@ static int __init rtc_init(void)
 device_initcall(rtc_init);
 device_initcall(rtc_init);
 #endif
 #endif
 
 
-void read_persistent_clock(struct timespec *ts)
+void read_persistent_clock64(struct timespec64 *ts)
 {
 {
 	static struct pdc_tod tod_data;
 	static struct pdc_tod tod_data;
 	if (pdc_tod_read(&tod_data) == 0) {
 	if (pdc_tod_read(&tod_data) == 0) {

+ 11 - 0
arch/parisc/kernel/traps.c

@@ -837,6 +837,17 @@ void __init initialize_ivt(const void *iva)
 	if (pdc_instr(&instr) == PDC_OK)
 	if (pdc_instr(&instr) == PDC_OK)
 		ivap[0] = instr;
 		ivap[0] = instr;
 
 
+	/*
+	 * Rules for the checksum of the HPMC handler:
+	 * 1. The IVA does not point to PDC/PDH space (ie: the OS has installed
+	 *    its own IVA).
+	 * 2. The word at IVA + 32 is nonzero.
+	 * 3. If Length (IVA + 60) is not zero, then Length (IVA + 60) and
+	 *    Address (IVA + 56) are word-aligned.
+	 * 4. The checksum of the 8 words starting at IVA + 32 plus the sum of
+	 *    the Length/4 words starting at Address is zero.
+	 */
+
 	/* Compute Checksum for HPMC handler */
 	/* Compute Checksum for HPMC handler */
 	length = os_hpmc_size;
 	length = os_hpmc_size;
 	ivap[7] = length;
 	ivap[7] = length;

+ 1 - 1
arch/parisc/mm/init.c

@@ -516,7 +516,7 @@ static void __init map_pages(unsigned long start_vaddr,
 	}
 	}
 }
 }
 
 
-void free_initmem(void)
+void __ref free_initmem(void)
 {
 {
 	unsigned long init_begin = (unsigned long)__init_begin;
 	unsigned long init_begin = (unsigned long)__init_begin;
 	unsigned long init_end = (unsigned long)__init_end;
 	unsigned long init_end = (unsigned long)__init_end;

+ 21 - 8
arch/powerpc/include/asm/ftrace.h

@@ -69,17 +69,30 @@ struct dyn_arch_ftrace {
 #endif
 #endif
 
 
 #if defined(CONFIG_FTRACE_SYSCALLS) && !defined(__ASSEMBLY__)
 #if defined(CONFIG_FTRACE_SYSCALLS) && !defined(__ASSEMBLY__)
-#ifdef PPC64_ELF_ABI_v1
+/*
+ * Some syscall entry functions on powerpc start with "ppc_" (fork and clone,
+ * for instance) or ppc32_/ppc64_. We should also match the sys_ variant with
+ * those.
+ */
 #define ARCH_HAS_SYSCALL_MATCH_SYM_NAME
 #define ARCH_HAS_SYSCALL_MATCH_SYM_NAME
+#ifdef PPC64_ELF_ABI_v1
+static inline bool arch_syscall_match_sym_name(const char *sym, const char *name)
+{
+	/* We need to skip past the initial dot, and the __se_sys alias */
+	return !strcmp(sym + 1, name) ||
+		(!strncmp(sym, ".__se_sys", 9) && !strcmp(sym + 6, name)) ||
+		(!strncmp(sym, ".ppc_", 5) && !strcmp(sym + 5, name + 4)) ||
+		(!strncmp(sym, ".ppc32_", 7) && !strcmp(sym + 7, name + 4)) ||
+		(!strncmp(sym, ".ppc64_", 7) && !strcmp(sym + 7, name + 4));
+}
+#else
 static inline bool arch_syscall_match_sym_name(const char *sym, const char *name)
 static inline bool arch_syscall_match_sym_name(const char *sym, const char *name)
 {
 {
-	/*
-	 * Compare the symbol name with the system call name. Skip the .sys or .SyS
-	 * prefix from the symbol name and the sys prefix from the system call name and
-	 * just match the rest. This is only needed on ppc64 since symbol names on
-	 * 32bit do not start with a period so the generic function will work.
-	 */
-	return !strcmp(sym + 4, name + 3);
+	return !strcmp(sym, name) ||
+		(!strncmp(sym, "__se_sys", 8) && !strcmp(sym + 5, name)) ||
+		(!strncmp(sym, "ppc_", 4) && !strcmp(sym + 4, name + 4)) ||
+		(!strncmp(sym, "ppc32_", 6) && !strcmp(sym + 6, name + 4)) ||
+		(!strncmp(sym, "ppc64_", 6) && !strcmp(sym + 6, name + 4));
 }
 }
 #endif
 #endif
 #endif /* CONFIG_FTRACE_SYSCALLS && !__ASSEMBLY__ */
 #endif /* CONFIG_FTRACE_SYSCALLS && !__ASSEMBLY__ */

+ 0 - 1
arch/powerpc/include/asm/paca.h

@@ -165,7 +165,6 @@ struct paca_struct {
 	u64 saved_msr;			/* MSR saved here by enter_rtas */
 	u64 saved_msr;			/* MSR saved here by enter_rtas */
 	u16 trap_save;			/* Used when bad stack is encountered */
 	u16 trap_save;			/* Used when bad stack is encountered */
 	u8 irq_soft_mask;		/* mask for irq soft masking */
 	u8 irq_soft_mask;		/* mask for irq soft masking */
-	u8 soft_enabled;		/* irq soft-enable flag */
 	u8 irq_happened;		/* irq happened while soft-disabled */
 	u8 irq_happened;		/* irq happened while soft-disabled */
 	u8 io_sync;			/* writel() needs spin_unlock sync */
 	u8 io_sync;			/* writel() needs spin_unlock sync */
 	u8 irq_work_pending;		/* IRQ_WORK interrupt while soft-disable */
 	u8 irq_work_pending;		/* IRQ_WORK interrupt while soft-disable */

+ 1 - 1
arch/powerpc/include/asm/powernv.h

@@ -15,7 +15,7 @@
 extern void powernv_set_nmmu_ptcr(unsigned long ptcr);
 extern void powernv_set_nmmu_ptcr(unsigned long ptcr);
 extern struct npu_context *pnv_npu2_init_context(struct pci_dev *gpdev,
 extern struct npu_context *pnv_npu2_init_context(struct pci_dev *gpdev,
 			unsigned long flags,
 			unsigned long flags,
-			struct npu_context *(*cb)(struct npu_context *, void *),
+			void (*cb)(struct npu_context *, void *),
 			void *priv);
 			void *priv);
 extern void pnv_npu2_destroy_context(struct npu_context *context,
 extern void pnv_npu2_destroy_context(struct npu_context *context,
 				struct pci_dev *gpdev);
 				struct pci_dev *gpdev);

+ 5 - 8
arch/powerpc/include/asm/topology.h

@@ -91,6 +91,7 @@ extern int start_topology_update(void);
 extern int stop_topology_update(void);
 extern int stop_topology_update(void);
 extern int prrn_is_enabled(void);
 extern int prrn_is_enabled(void);
 extern int find_and_online_cpu_nid(int cpu);
 extern int find_and_online_cpu_nid(int cpu);
+extern int timed_topology_update(int nsecs);
 #else
 #else
 static inline int start_topology_update(void)
 static inline int start_topology_update(void)
 {
 {
@@ -108,16 +109,12 @@ static inline int find_and_online_cpu_nid(int cpu)
 {
 {
 	return 0;
 	return 0;
 }
 }
+static inline int timed_topology_update(int nsecs)
+{
+	return 0;
+}
 #endif /* CONFIG_NUMA && CONFIG_PPC_SPLPAR */
 #endif /* CONFIG_NUMA && CONFIG_PPC_SPLPAR */
 
 
-#if defined(CONFIG_HOTPLUG_CPU) || defined(CONFIG_NEED_MULTIPLE_NODES)
-#if defined(CONFIG_PPC_SPLPAR)
-extern int timed_topology_update(int nsecs);
-#else
-#define	timed_topology_update(nsecs)
-#endif /* CONFIG_PPC_SPLPAR */
-#endif /* CONFIG_HOTPLUG_CPU || CONFIG_NEED_MULTIPLE_NODES */
-
 #include <asm-generic/topology.h>
 #include <asm-generic/topology.h>
 
 
 #ifdef CONFIG_SMP
 #ifdef CONFIG_SMP

部分文件因为文件数量过多而无法显示