aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-05-09 15:59:24 -0400
committerDavid S. Miller <davem@davemloft.net>2016-05-09 15:59:24 -0400
commite800072c18f0d7b89a80fa46dceb3d080c80e09c (patch)
tree8da6cb7944762a60ec37594720c1ad2757631c2f
parente8ed77dfa90dd79c5343415a4bbbfdab9787b35a (diff)
parentb507146bb6b9ac0c0197100ba3e299825a21fed3 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
In netdevice.h we removed the structure in net-next that is being changes in 'net'. In macsec.c and rtnetlink.c we have overlaps between fixes in 'net' and the u64 attribute changes in 'net-next'. The mlx5 conflicts have to do with vxlan support dependencies. Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--.mailmap1
-rw-r--r--Documentation/devicetree/bindings/ata/ahci-platform.txt4
-rw-r--r--Documentation/networking/checksum-offloads.txt14
-rw-r--r--MAINTAINERS54
-rw-r--r--Makefile2
-rw-r--r--arch/arc/Kconfig13
-rw-r--r--arch/arc/include/asm/io.h27
-rw-r--r--arch/arc/include/asm/mmzone.h43
-rw-r--r--arch/arc/include/asm/page.h15
-rw-r--r--arch/arc/include/asm/pgtable.h13
-rw-r--r--arch/arc/mm/init.c54
-rw-r--r--arch/arm/boot/dts/omap3-n900.dts9
-rw-r--r--arch/arm/boot/dts/omap34xx.dtsi2
-rw-r--r--arch/arm/boot/dts/omap5-board-common.dtsi4
-rw-r--r--arch/arm/boot/dts/omap5-cm-t54.dts4
-rw-r--r--arch/arm/boot/dts/omap5.dtsi2
-rw-r--r--arch/arm/boot/dts/qcom-apq8064.dtsi3
-rw-r--r--arch/arm/boot/dts/sun8i-q8-common.dtsi2
-rw-r--r--arch/arm/include/asm/domain.h11
-rw-r--r--arch/arm/kernel/head-nommu.S2
-rw-r--r--arch/arm/kvm/mmu.c2
-rw-r--r--arch/arm/mach-davinci/board-mityomapl138.c5
-rw-r--r--arch/arm/mach-davinci/common.c5
-rw-r--r--arch/arm/mach-exynos/pm_domains.c2
-rw-r--r--arch/arm/mach-socfpga/headsmp.S1
-rw-r--r--arch/arm/mm/nommu.c15
-rw-r--r--arch/arm64/boot/dts/renesas/r8a7795.dtsi1
-rw-r--r--arch/parisc/kernel/syscall.S2
-rw-r--r--arch/powerpc/include/asm/word-at-a-time.h2
-rw-r--r--arch/x86/events/amd/iommu.c1
-rw-r--r--arch/x86/events/intel/core.c2
-rw-r--r--arch/x86/kernel/apic/x2apic_uv_x.c4
-rw-r--r--arch/x86/kernel/sysfb_efi.c14
-rw-r--r--arch/x86/kernel/tsc_msr.c2
-rw-r--r--arch/x86/kvm/mmu.c4
-rw-r--r--arch/x86/platform/efi/efi-bgrt.c18
-rw-r--r--crypto/Kconfig1
-rw-r--r--crypto/ahash.c3
-rw-r--r--drivers/acpi/acpica/dsmethod.c3
-rw-r--r--drivers/acpi/nfit.c5
-rw-r--r--drivers/ata/Kconfig8
-rw-r--r--drivers/ata/Makefile1
-rw-r--r--drivers/ata/ahci_platform.c3
-rw-r--r--drivers/ata/ahci_seattle.c210
-rw-r--r--drivers/ata/libahci.c1
-rw-r--r--drivers/base/power/opp/core.c3
-rw-r--r--drivers/base/property.c2
-rw-r--r--drivers/cpufreq/cpufreq.c26
-rw-r--r--drivers/cpufreq/intel_pstate.c26
-rw-r--r--drivers/cpufreq/sti-cpufreq.c4
-rw-r--r--drivers/cpuidle/cpuidle-arm.c2
-rw-r--r--drivers/crypto/qat/qat_common/adf_common_drv.h11
-rw-r--r--drivers/crypto/qat/qat_common/adf_ctl_drv.c6
-rw-r--r--drivers/crypto/qat/qat_common/adf_sriov.c26
-rw-r--r--drivers/firmware/qemu_fw_cfg.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_object.c1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/atombios_encoders.c4
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c32
-rw-r--r--drivers/gpu/drm/i915/i915_reg.h9
-rw-r--r--drivers/gpu/drm/i915/intel_ddi.c22
-rw-r--r--drivers/gpu/drm/i915/intel_display.c3
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c4
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h2
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c12
-rw-r--r--drivers/gpu/drm/radeon/atombios_encoders.c4
-rw-r--r--drivers/gpu/ipu-v3/ipu-common.c7
-rw-r--r--drivers/hv/ring_buffer.c26
-rw-r--r--drivers/iio/adc/at91-sama5d2_adc.c2
-rw-r--r--drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c30
-rw-r--r--drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c3
-rw-r--r--drivers/iio/magnetometer/ak8975.c6
-rw-r--r--drivers/infiniband/ulp/iser/iscsi_iser.c14
-rw-r--r--drivers/input/misc/twl6040-vibra.c16
-rw-r--r--drivers/input/touchscreen/atmel_mxt_ts.c28
-rw-r--r--drivers/input/touchscreen/zforce_ts.c4
-rw-r--r--drivers/media/media-device.c8
-rw-r--r--drivers/media/platform/exynos4-is/media-dev.c13
-rw-r--r--drivers/media/platform/s3c-camif/camif-core.c12
-rw-r--r--drivers/misc/mic/vop/vop_vringh.c5
-rw-r--r--drivers/net/ethernet/apm/xgene/xgene_enet_main.c7
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.c23
-rw-r--r--drivers/net/ethernet/freescale/fec_main.c10
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_rx.c2
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/Kconfig8
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/Makefile3
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en.h5
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_main.c3
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/vxlan.h11
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum.c4
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c8
-rw-r--r--drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c14
-rw-r--r--drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c3
-rw-r--r--drivers/net/ethernet/qlogic/qede/qede_main.c8
-rw-r--r--drivers/net/geneve.c5
-rw-r--r--drivers/net/macsec.c23
-rw-r--r--drivers/net/macvtap.c2
-rw-r--r--drivers/net/vxlan.c5
-rw-r--r--drivers/nvdimm/pmem.c13
-rw-r--r--drivers/nvmem/mxs-ocotp.c4
-rw-r--r--drivers/rapidio/devices/rio_mport_cdev.c115
-rw-r--r--drivers/usb/core/port.c6
-rw-r--r--drivers/usb/core/usb.c8
-rw-r--r--drivers/usb/musb/jz4740.c4
-rw-r--r--drivers/usb/musb/musb_gadget.c6
-rw-r--r--drivers/usb/musb/musb_host.c2
-rw-r--r--drivers/usb/serial/cp210x.c4
-rw-r--r--drivers/virtio/virtio_ring.c2
-rw-r--r--drivers/xen/balloon.c16
-rw-r--r--drivers/xen/evtchn.c20
-rw-r--r--fs/pnode.c25
-rw-r--r--fs/proc/base.c3
-rw-r--r--include/acpi/acpi_bus.h4
-rw-r--r--include/linux/compiler-gcc.h2
-rw-r--r--include/linux/of.h2
-rw-r--r--include/linux/page-flags.h22
-rw-r--r--include/linux/swap.h4
-rw-r--r--include/net/netns/xfrm.h1
-rw-r--r--include/net/udp_tunnel.h9
-rw-r--r--include/uapi/asm-generic/unistd.h4
-rw-r--r--include/uapi/linux/if_macsec.h4
-rw-r--r--include/uapi/linux/rio_mport_cdev.h (renamed from include/linux/rio_mport_cdev.h)144
-rw-r--r--include/uapi/linux/swab.h24
-rw-r--r--include/xen/page.h4
-rw-r--r--kernel/sched/core.c29
-rw-r--r--kernel/trace/trace_events.c9
-rw-r--r--lib/stackdepot.c6
-rw-r--r--mm/compaction.c14
-rw-r--r--mm/huge_memory.c4
-rw-r--r--mm/memory.c11
-rw-r--r--mm/page-writeback.c6
-rw-r--r--mm/page_alloc.c2
-rw-r--r--mm/zswap.c8
-rw-r--r--net/bridge/br_ioctl.c5
-rw-r--r--net/bridge/br_multicast.c12
-rw-r--r--net/core/flow.c14
-rw-r--r--net/core/rtnetlink.c18
-rw-r--r--net/ipv4/fou.c6
-rw-r--r--net/ipv4/ip_vti.c18
-rw-r--r--net/ipv4/udp_offload.c8
-rw-r--r--net/ipv6/icmp.c5
-rw-r--r--net/ipv6/tcp_ipv6.c7
-rw-r--r--net/llc/af_llc.c1
-rw-r--r--net/vmw_vsock/af_vsock.c21
-rw-r--r--net/xfrm/xfrm_output.c3
-rw-r--r--scripts/mod/file2alias.c69
-rw-r--r--security/integrity/ima/ima_policy.c4
-rw-r--r--tools/net/bpf_jit_disasm.c3
147 files changed, 1271 insertions, 577 deletions
diff --git a/.mailmap b/.mailmap
index c156a8b4d845..08b80428f583 100644
--- a/.mailmap
+++ b/.mailmap
@@ -69,6 +69,7 @@ Jean Tourrilhes <jt@hpl.hp.com>
69Jeff Garzik <jgarzik@pretzel.yyz.us> 69Jeff Garzik <jgarzik@pretzel.yyz.us>
70Jens Axboe <axboe@suse.de> 70Jens Axboe <axboe@suse.de>
71Jens Osterkamp <Jens.Osterkamp@de.ibm.com> 71Jens Osterkamp <Jens.Osterkamp@de.ibm.com>
72John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
72John Stultz <johnstul@us.ibm.com> 73John Stultz <johnstul@us.ibm.com>
73<josh@joshtriplett.org> <josh@freedesktop.org> 74<josh@joshtriplett.org> <josh@freedesktop.org>
74<josh@joshtriplett.org> <josh@kernel.org> 75<josh@joshtriplett.org> <josh@kernel.org>
diff --git a/Documentation/devicetree/bindings/ata/ahci-platform.txt b/Documentation/devicetree/bindings/ata/ahci-platform.txt
index 30df832a6f2f..87adfb227ca9 100644
--- a/Documentation/devicetree/bindings/ata/ahci-platform.txt
+++ b/Documentation/devicetree/bindings/ata/ahci-platform.txt
@@ -32,6 +32,10 @@ Optional properties:
32- target-supply : regulator for SATA target power 32- target-supply : regulator for SATA target power
33- phys : reference to the SATA PHY node 33- phys : reference to the SATA PHY node
34- phy-names : must be "sata-phy" 34- phy-names : must be "sata-phy"
35- ports-implemented : Mask that indicates which ports that the HBA supports
36 are available for software to use. Useful if PORTS_IMPL
37 is not programmed by the BIOS, which is true with
38 some embedded SOC's.
35 39
36Required properties when using sub-nodes: 40Required properties when using sub-nodes:
37- #address-cells : number of cells to encode an address 41- #address-cells : number of cells to encode an address
diff --git a/Documentation/networking/checksum-offloads.txt b/Documentation/networking/checksum-offloads.txt
index de2a327766a7..56e36861245f 100644
--- a/Documentation/networking/checksum-offloads.txt
+++ b/Documentation/networking/checksum-offloads.txt
@@ -69,18 +69,18 @@ LCO: Local Checksum Offload
69LCO is a technique for efficiently computing the outer checksum of an 69LCO is a technique for efficiently computing the outer checksum of an
70 encapsulated datagram when the inner checksum is due to be offloaded. 70 encapsulated datagram when the inner checksum is due to be offloaded.
71The ones-complement sum of a correctly checksummed TCP or UDP packet is 71The ones-complement sum of a correctly checksummed TCP or UDP packet is
72 equal to the sum of the pseudo header, because everything else gets 72 equal to the complement of the sum of the pseudo header, because everything
73 'cancelled out' by the checksum field. This is because the sum was 73 else gets 'cancelled out' by the checksum field. This is because the sum was
74 complemented before being written to the checksum field. 74 complemented before being written to the checksum field.
75More generally, this holds in any case where the 'IP-style' ones complement 75More generally, this holds in any case where the 'IP-style' ones complement
76 checksum is used, and thus any checksum that TX Checksum Offload supports. 76 checksum is used, and thus any checksum that TX Checksum Offload supports.
77That is, if we have set up TX Checksum Offload with a start/offset pair, we 77That is, if we have set up TX Checksum Offload with a start/offset pair, we
78 know that _after the device has filled in that checksum_, the ones 78 know that after the device has filled in that checksum, the ones
79 complement sum from csum_start to the end of the packet will be equal to 79 complement sum from csum_start to the end of the packet will be equal to
80 _whatever value we put in the checksum field beforehand_. This allows us 80 the complement of whatever value we put in the checksum field beforehand.
81 to compute the outer checksum without looking at the payload: we simply 81 This allows us to compute the outer checksum without looking at the payload:
82 stop summing when we get to csum_start, then add the 16-bit word at 82 we simply stop summing when we get to csum_start, then add the complement of
83 (csum_start + csum_offset). 83 the 16-bit word at (csum_start + csum_offset).
84Then, when the true inner checksum is filled in (either by hardware or by 84Then, when the true inner checksum is filled in (either by hardware or by
85 skb_checksum_help()), the outer checksum will become correct by virtue of 85 skb_checksum_help()), the outer checksum will become correct by virtue of
86 the arithmetic. 86 the arithmetic.
diff --git a/MAINTAINERS b/MAINTAINERS
index e425912ff933..b57df66532d2 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -872,9 +872,9 @@ F: drivers/perf/arm_pmu.c
872F: include/linux/perf/arm_pmu.h 872F: include/linux/perf/arm_pmu.h
873 873
874ARM PORT 874ARM PORT
875M: Russell King <linux@arm.linux.org.uk> 875M: Russell King <linux@armlinux.org.uk>
876L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 876L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
877W: http://www.arm.linux.org.uk/ 877W: http://www.armlinux.org.uk/
878S: Maintained 878S: Maintained
879F: arch/arm/ 879F: arch/arm/
880 880
@@ -886,35 +886,35 @@ F: arch/arm/plat-*/
886T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git 886T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git
887 887
888ARM PRIMECELL AACI PL041 DRIVER 888ARM PRIMECELL AACI PL041 DRIVER
889M: Russell King <linux@arm.linux.org.uk> 889M: Russell King <linux@armlinux.org.uk>
890S: Maintained 890S: Maintained
891F: sound/arm/aaci.* 891F: sound/arm/aaci.*
892 892
893ARM PRIMECELL CLCD PL110 DRIVER 893ARM PRIMECELL CLCD PL110 DRIVER
894M: Russell King <linux@arm.linux.org.uk> 894M: Russell King <linux@armlinux.org.uk>
895S: Maintained 895S: Maintained
896F: drivers/video/fbdev/amba-clcd.* 896F: drivers/video/fbdev/amba-clcd.*
897 897
898ARM PRIMECELL KMI PL050 DRIVER 898ARM PRIMECELL KMI PL050 DRIVER
899M: Russell King <linux@arm.linux.org.uk> 899M: Russell King <linux@armlinux.org.uk>
900S: Maintained 900S: Maintained
901F: drivers/input/serio/ambakmi.* 901F: drivers/input/serio/ambakmi.*
902F: include/linux/amba/kmi.h 902F: include/linux/amba/kmi.h
903 903
904ARM PRIMECELL MMCI PL180/1 DRIVER 904ARM PRIMECELL MMCI PL180/1 DRIVER
905M: Russell King <linux@arm.linux.org.uk> 905M: Russell King <linux@armlinux.org.uk>
906S: Maintained 906S: Maintained
907F: drivers/mmc/host/mmci.* 907F: drivers/mmc/host/mmci.*
908F: include/linux/amba/mmci.h 908F: include/linux/amba/mmci.h
909 909
910ARM PRIMECELL UART PL010 AND PL011 DRIVERS 910ARM PRIMECELL UART PL010 AND PL011 DRIVERS
911M: Russell King <linux@arm.linux.org.uk> 911M: Russell King <linux@armlinux.org.uk>
912S: Maintained 912S: Maintained
913F: drivers/tty/serial/amba-pl01*.c 913F: drivers/tty/serial/amba-pl01*.c
914F: include/linux/amba/serial.h 914F: include/linux/amba/serial.h
915 915
916ARM PRIMECELL BUS SUPPORT 916ARM PRIMECELL BUS SUPPORT
917M: Russell King <linux@arm.linux.org.uk> 917M: Russell King <linux@armlinux.org.uk>
918S: Maintained 918S: Maintained
919F: drivers/amba/ 919F: drivers/amba/
920F: include/linux/amba/bus.h 920F: include/linux/amba/bus.h
@@ -1036,7 +1036,7 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1036S: Maintained 1036S: Maintained
1037 1037
1038ARM/CLKDEV SUPPORT 1038ARM/CLKDEV SUPPORT
1039M: Russell King <linux@arm.linux.org.uk> 1039M: Russell King <linux@armlinux.org.uk>
1040L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1040L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1041S: Maintained 1041S: Maintained
1042F: arch/arm/include/asm/clkdev.h 1042F: arch/arm/include/asm/clkdev.h
@@ -1093,9 +1093,9 @@ F: arch/arm/boot/dts/cx92755*
1093N: digicolor 1093N: digicolor
1094 1094
1095ARM/EBSA110 MACHINE SUPPORT 1095ARM/EBSA110 MACHINE SUPPORT
1096M: Russell King <linux@arm.linux.org.uk> 1096M: Russell King <linux@armlinux.org.uk>
1097L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1097L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1098W: http://www.arm.linux.org.uk/ 1098W: http://www.armlinux.org.uk/
1099S: Maintained 1099S: Maintained
1100F: arch/arm/mach-ebsa110/ 1100F: arch/arm/mach-ebsa110/
1101F: drivers/net/ethernet/amd/am79c961a.* 1101F: drivers/net/ethernet/amd/am79c961a.*
@@ -1124,9 +1124,9 @@ T: git git://git.berlios.de/gemini-board
1124F: arch/arm/mm/*-fa* 1124F: arch/arm/mm/*-fa*
1125 1125
1126ARM/FOOTBRIDGE ARCHITECTURE 1126ARM/FOOTBRIDGE ARCHITECTURE
1127M: Russell King <linux@arm.linux.org.uk> 1127M: Russell King <linux@armlinux.org.uk>
1128L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1128L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1129W: http://www.arm.linux.org.uk/ 1129W: http://www.armlinux.org.uk/
1130S: Maintained 1130S: Maintained
1131F: arch/arm/include/asm/hardware/dec21285.h 1131F: arch/arm/include/asm/hardware/dec21285.h
1132F: arch/arm/mach-footbridge/ 1132F: arch/arm/mach-footbridge/
@@ -1457,7 +1457,7 @@ S: Maintained
1457ARM/PT DIGITAL BOARD PORT 1457ARM/PT DIGITAL BOARD PORT
1458M: Stefan Eletzhofer <stefan.eletzhofer@eletztrick.de> 1458M: Stefan Eletzhofer <stefan.eletzhofer@eletztrick.de>
1459L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1459L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1460W: http://www.arm.linux.org.uk/ 1460W: http://www.armlinux.org.uk/
1461S: Maintained 1461S: Maintained
1462 1462
1463ARM/QUALCOMM SUPPORT 1463ARM/QUALCOMM SUPPORT
@@ -1493,9 +1493,9 @@ S: Supported
1493F: arch/arm64/boot/dts/renesas/ 1493F: arch/arm64/boot/dts/renesas/
1494 1494
1495ARM/RISCPC ARCHITECTURE 1495ARM/RISCPC ARCHITECTURE
1496M: Russell King <linux@arm.linux.org.uk> 1496M: Russell King <linux@armlinux.org.uk>
1497L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1497L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1498W: http://www.arm.linux.org.uk/ 1498W: http://www.armlinux.org.uk/
1499S: Maintained 1499S: Maintained
1500F: arch/arm/include/asm/hardware/entry-macro-iomd.S 1500F: arch/arm/include/asm/hardware/entry-macro-iomd.S
1501F: arch/arm/include/asm/hardware/ioc.h 1501F: arch/arm/include/asm/hardware/ioc.h
@@ -1773,9 +1773,9 @@ F: drivers/clk/versatile/clk-vexpress-osc.c
1773F: drivers/clocksource/versatile.c 1773F: drivers/clocksource/versatile.c
1774 1774
1775ARM/VFP SUPPORT 1775ARM/VFP SUPPORT
1776M: Russell King <linux@arm.linux.org.uk> 1776M: Russell King <linux@armlinux.org.uk>
1777L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1777L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1778W: http://www.arm.linux.org.uk/ 1778W: http://www.armlinux.org.uk/
1779S: Maintained 1779S: Maintained
1780F: arch/arm/vfp/ 1780F: arch/arm/vfp/
1781 1781
@@ -2924,7 +2924,7 @@ F: mm/cleancache.c
2924F: include/linux/cleancache.h 2924F: include/linux/cleancache.h
2925 2925
2926CLK API 2926CLK API
2927M: Russell King <linux@arm.linux.org.uk> 2927M: Russell King <linux@armlinux.org.uk>
2928L: linux-clk@vger.kernel.org 2928L: linux-clk@vger.kernel.org
2929S: Maintained 2929S: Maintained
2930F: include/linux/clk.h 2930F: include/linux/clk.h
@@ -3358,9 +3358,9 @@ S: Supported
3358F: drivers/net/ethernet/stmicro/stmmac/ 3358F: drivers/net/ethernet/stmicro/stmmac/
3359 3359
3360CYBERPRO FB DRIVER 3360CYBERPRO FB DRIVER
3361M: Russell King <linux@arm.linux.org.uk> 3361M: Russell King <linux@armlinux.org.uk>
3362L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 3362L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
3363W: http://www.arm.linux.org.uk/ 3363W: http://www.armlinux.org.uk/
3364S: Maintained 3364S: Maintained
3365F: drivers/video/fbdev/cyber2000fb.* 3365F: drivers/video/fbdev/cyber2000fb.*
3366 3366
@@ -3885,7 +3885,7 @@ F: Documentation/devicetree/bindings/display/st,stih4xx.txt
3885 3885
3886DRM DRIVERS FOR VIVANTE GPU IP 3886DRM DRIVERS FOR VIVANTE GPU IP
3887M: Lucas Stach <l.stach@pengutronix.de> 3887M: Lucas Stach <l.stach@pengutronix.de>
3888R: Russell King <linux+etnaviv@arm.linux.org.uk> 3888R: Russell King <linux+etnaviv@armlinux.org.uk>
3889R: Christian Gmeiner <christian.gmeiner@gmail.com> 3889R: Christian Gmeiner <christian.gmeiner@gmail.com>
3890L: dri-devel@lists.freedesktop.org 3890L: dri-devel@lists.freedesktop.org
3891S: Maintained 3891S: Maintained
@@ -4227,8 +4227,8 @@ F: Documentation/efi-stub.txt
4227F: arch/ia64/kernel/efi.c 4227F: arch/ia64/kernel/efi.c
4228F: arch/x86/boot/compressed/eboot.[ch] 4228F: arch/x86/boot/compressed/eboot.[ch]
4229F: arch/x86/include/asm/efi.h 4229F: arch/x86/include/asm/efi.h
4230F: arch/x86/platform/efi/* 4230F: arch/x86/platform/efi/
4231F: drivers/firmware/efi/* 4231F: drivers/firmware/efi/
4232F: include/linux/efi*.h 4232F: include/linux/efi*.h
4233 4233
4234EFI VARIABLE FILESYSTEM 4234EFI VARIABLE FILESYSTEM
@@ -6902,7 +6902,7 @@ L: linux-man@vger.kernel.org
6902S: Maintained 6902S: Maintained
6903 6903
6904MARVELL ARMADA DRM SUPPORT 6904MARVELL ARMADA DRM SUPPORT
6905M: Russell King <rmk+kernel@arm.linux.org.uk> 6905M: Russell King <rmk+kernel@armlinux.org.uk>
6906S: Maintained 6906S: Maintained
6907F: drivers/gpu/drm/armada/ 6907F: drivers/gpu/drm/armada/
6908 6908
@@ -7902,7 +7902,7 @@ S: Supported
7902F: drivers/nfc/nxp-nci 7902F: drivers/nfc/nxp-nci
7903 7903
7904NXP TDA998X DRM DRIVER 7904NXP TDA998X DRM DRIVER
7905M: Russell King <rmk+kernel@arm.linux.org.uk> 7905M: Russell King <rmk+kernel@armlinux.org.uk>
7906S: Supported 7906S: Supported
7907F: drivers/gpu/drm/i2c/tda998x_drv.c 7907F: drivers/gpu/drm/i2c/tda998x_drv.c
7908F: include/drm/i2c/tda998x.h 7908F: include/drm/i2c/tda998x.h
@@ -7975,7 +7975,7 @@ F: arch/arm/*omap*/*pm*
7975F: drivers/cpufreq/omap-cpufreq.c 7975F: drivers/cpufreq/omap-cpufreq.c
7976 7976
7977OMAP POWERDOMAIN SOC ADAPTATION LAYER SUPPORT 7977OMAP POWERDOMAIN SOC ADAPTATION LAYER SUPPORT
7978M: Rajendra Nayak <rnayak@ti.com> 7978M: Rajendra Nayak <rnayak@codeaurora.org>
7979M: Paul Walmsley <paul@pwsan.com> 7979M: Paul Walmsley <paul@pwsan.com>
7980L: linux-omap@vger.kernel.org 7980L: linux-omap@vger.kernel.org
7981S: Maintained 7981S: Maintained
diff --git a/Makefile b/Makefile
index 7466de60ddc7..acf6155421cc 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 4 1VERSION = 4
2PATCHLEVEL = 6 2PATCHLEVEL = 6
3SUBLEVEL = 0 3SUBLEVEL = 0
4EXTRAVERSION = -rc6 4EXTRAVERSION = -rc7
5NAME = Charred Weasel 5NAME = Charred Weasel
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index ec4791ea6911..a8767430df7d 100644
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -58,6 +58,9 @@ config GENERIC_CSUM
58config RWSEM_GENERIC_SPINLOCK 58config RWSEM_GENERIC_SPINLOCK
59 def_bool y 59 def_bool y
60 60
61config ARCH_DISCONTIGMEM_ENABLE
62 def_bool y
63
61config ARCH_FLATMEM_ENABLE 64config ARCH_FLATMEM_ENABLE
62 def_bool y 65 def_bool y
63 66
@@ -347,6 +350,15 @@ config ARC_HUGEPAGE_16M
347 350
348endchoice 351endchoice
349 352
353config NODES_SHIFT
354 int "Maximum NUMA Nodes (as a power of 2)"
355 default "1" if !DISCONTIGMEM
356 default "2" if DISCONTIGMEM
357 depends on NEED_MULTIPLE_NODES
358 ---help---
359 Accessing memory beyond 1GB (with or w/o PAE) requires 2 memory
360 zones.
361
350if ISA_ARCOMPACT 362if ISA_ARCOMPACT
351 363
352config ARC_COMPACT_IRQ_LEVELS 364config ARC_COMPACT_IRQ_LEVELS
@@ -455,6 +467,7 @@ config LINUX_LINK_BASE
455 467
456config HIGHMEM 468config HIGHMEM
457 bool "High Memory Support" 469 bool "High Memory Support"
470 select DISCONTIGMEM
458 help 471 help
459 With ARC 2G:2G address split, only upper 2G is directly addressable by 472 With ARC 2G:2G address split, only upper 2G is directly addressable by
460 kernel. Enable this to potentially allow access to rest of 2G and PAE 473 kernel. Enable this to potentially allow access to rest of 2G and PAE
diff --git a/arch/arc/include/asm/io.h b/arch/arc/include/asm/io.h
index 17f85c9c73cf..c22b181e8206 100644
--- a/arch/arc/include/asm/io.h
+++ b/arch/arc/include/asm/io.h
@@ -13,6 +13,15 @@
13#include <asm/byteorder.h> 13#include <asm/byteorder.h>
14#include <asm/page.h> 14#include <asm/page.h>
15 15
16#ifdef CONFIG_ISA_ARCV2
17#include <asm/barrier.h>
18#define __iormb() rmb()
19#define __iowmb() wmb()
20#else
21#define __iormb() do { } while (0)
22#define __iowmb() do { } while (0)
23#endif
24
16extern void __iomem *ioremap(phys_addr_t paddr, unsigned long size); 25extern void __iomem *ioremap(phys_addr_t paddr, unsigned long size);
17extern void __iomem *ioremap_prot(phys_addr_t paddr, unsigned long size, 26extern void __iomem *ioremap_prot(phys_addr_t paddr, unsigned long size,
18 unsigned long flags); 27 unsigned long flags);
@@ -31,6 +40,15 @@ extern void iounmap(const void __iomem *addr);
31#define ioremap_wc(phy, sz) ioremap(phy, sz) 40#define ioremap_wc(phy, sz) ioremap(phy, sz)
32#define ioremap_wt(phy, sz) ioremap(phy, sz) 41#define ioremap_wt(phy, sz) ioremap(phy, sz)
33 42
43/*
44 * io{read,write}{16,32}be() macros
45 */
46#define ioread16be(p) ({ u16 __v = be16_to_cpu((__force __be16)__raw_readw(p)); __iormb(); __v; })
47#define ioread32be(p) ({ u32 __v = be32_to_cpu((__force __be32)__raw_readl(p)); __iormb(); __v; })
48
49#define iowrite16be(v,p) ({ __iowmb(); __raw_writew((__force u16)cpu_to_be16(v), p); })
50#define iowrite32be(v,p) ({ __iowmb(); __raw_writel((__force u32)cpu_to_be32(v), p); })
51
34/* Change struct page to physical address */ 52/* Change struct page to physical address */
35#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) 53#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
36 54
@@ -108,15 +126,6 @@ static inline void __raw_writel(u32 w, volatile void __iomem *addr)
108 126
109} 127}
110 128
111#ifdef CONFIG_ISA_ARCV2
112#include <asm/barrier.h>
113#define __iormb() rmb()
114#define __iowmb() wmb()
115#else
116#define __iormb() do { } while (0)
117#define __iowmb() do { } while (0)
118#endif
119
120/* 129/*
121 * MMIO can also get buffered/optimized in micro-arch, so barriers needed 130 * MMIO can also get buffered/optimized in micro-arch, so barriers needed
122 * Based on ARM model for the typical use case 131 * Based on ARM model for the typical use case
diff --git a/arch/arc/include/asm/mmzone.h b/arch/arc/include/asm/mmzone.h
new file mode 100644
index 000000000000..8e97136413d9
--- /dev/null
+++ b/arch/arc/include/asm/mmzone.h
@@ -0,0 +1,43 @@
1/*
2 * Copyright (C) 2016 Synopsys, Inc. (www.synopsys.com)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2 as
6 * published by the Free Software Foundation.
7 */
8
9#ifndef _ASM_ARC_MMZONE_H
10#define _ASM_ARC_MMZONE_H
11
12#ifdef CONFIG_DISCONTIGMEM
13
14extern struct pglist_data node_data[];
15#define NODE_DATA(nid) (&node_data[nid])
16
17static inline int pfn_to_nid(unsigned long pfn)
18{
19 int is_end_low = 1;
20
21 if (IS_ENABLED(CONFIG_ARC_HAS_PAE40))
22 is_end_low = pfn <= virt_to_pfn(0xFFFFFFFFUL);
23
24 /*
25 * node 0: lowmem: 0x8000_0000 to 0xFFFF_FFFF
26 * node 1: HIGHMEM w/o PAE40: 0x0 to 0x7FFF_FFFF
27 * HIGHMEM with PAE40: 0x1_0000_0000 to ...
28 */
29 if (pfn >= ARCH_PFN_OFFSET && is_end_low)
30 return 0;
31
32 return 1;
33}
34
35static inline int pfn_valid(unsigned long pfn)
36{
37 int nid = pfn_to_nid(pfn);
38
39 return (pfn <= node_end_pfn(nid));
40}
41#endif /* CONFIG_DISCONTIGMEM */
42
43#endif
diff --git a/arch/arc/include/asm/page.h b/arch/arc/include/asm/page.h
index 36da89e2c853..0d53854884d0 100644
--- a/arch/arc/include/asm/page.h
+++ b/arch/arc/include/asm/page.h
@@ -72,11 +72,20 @@ typedef unsigned long pgprot_t;
72 72
73typedef pte_t * pgtable_t; 73typedef pte_t * pgtable_t;
74 74
75/*
76 * Use virt_to_pfn with caution:
77 * If used in pte or paddr related macros, it could cause truncation
78 * in PAE40 builds
79 * As a rule of thumb, only use it in helpers starting with virt_
80 * You have been warned !
81 */
75#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT) 82#define virt_to_pfn(kaddr) (__pa(kaddr) >> PAGE_SHIFT)
76 83
77#define ARCH_PFN_OFFSET virt_to_pfn(CONFIG_LINUX_LINK_BASE) 84#define ARCH_PFN_OFFSET virt_to_pfn(CONFIG_LINUX_LINK_BASE)
78 85
86#ifdef CONFIG_FLATMEM
79#define pfn_valid(pfn) (((pfn) - ARCH_PFN_OFFSET) < max_mapnr) 87#define pfn_valid(pfn) (((pfn) - ARCH_PFN_OFFSET) < max_mapnr)
88#endif
80 89
81/* 90/*
82 * __pa, __va, virt_to_page (ALERT: deprecated, don't use them) 91 * __pa, __va, virt_to_page (ALERT: deprecated, don't use them)
@@ -85,12 +94,10 @@ typedef pte_t * pgtable_t;
85 * virt here means link-address/program-address as embedded in object code. 94 * virt here means link-address/program-address as embedded in object code.
86 * And for ARC, link-addr = physical address 95 * And for ARC, link-addr = physical address
87 */ 96 */
88#define __pa(vaddr) ((unsigned long)vaddr) 97#define __pa(vaddr) ((unsigned long)(vaddr))
89#define __va(paddr) ((void *)((unsigned long)(paddr))) 98#define __va(paddr) ((void *)((unsigned long)(paddr)))
90 99
91#define virt_to_page(kaddr) \ 100#define virt_to_page(kaddr) pfn_to_page(virt_to_pfn(kaddr))
92 (mem_map + virt_to_pfn((kaddr) - CONFIG_LINUX_LINK_BASE))
93
94#define virt_addr_valid(kaddr) pfn_valid(virt_to_pfn(kaddr)) 101#define virt_addr_valid(kaddr) pfn_valid(virt_to_pfn(kaddr))
95 102
96/* Default Permissions for stack/heaps pages (Non Executable) */ 103/* Default Permissions for stack/heaps pages (Non Executable) */
diff --git a/arch/arc/include/asm/pgtable.h b/arch/arc/include/asm/pgtable.h
index 7d6c93e63adf..10d4b8b8e545 100644
--- a/arch/arc/include/asm/pgtable.h
+++ b/arch/arc/include/asm/pgtable.h
@@ -278,14 +278,13 @@ static inline void pmd_set(pmd_t *pmdp, pte_t *ptep)
278#define pmd_present(x) (pmd_val(x)) 278#define pmd_present(x) (pmd_val(x))
279#define pmd_clear(xp) do { pmd_val(*(xp)) = 0; } while (0) 279#define pmd_clear(xp) do { pmd_val(*(xp)) = 0; } while (0)
280 280
281#define pte_page(pte) \ 281#define pte_page(pte) pfn_to_page(pte_pfn(pte))
282 (mem_map + virt_to_pfn(pte_val(pte) - CONFIG_LINUX_LINK_BASE))
283
284#define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot) 282#define mk_pte(page, prot) pfn_pte(page_to_pfn(page), prot)
285#define pte_pfn(pte) virt_to_pfn(pte_val(pte)) 283#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | pgprot_val(prot)))
286#define pfn_pte(pfn, prot) (__pte(((pte_t)(pfn) << PAGE_SHIFT) | \ 284
287 pgprot_val(prot))) 285/* Don't use virt_to_pfn for macros below: could cause truncations for PAE40*/
288#define __pte_index(addr) (virt_to_pfn(addr) & (PTRS_PER_PTE - 1)) 286#define pte_pfn(pte) (pte_val(pte) >> PAGE_SHIFT)
287#define __pte_index(addr) (((addr) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
289 288
290/* 289/*
291 * pte_offset gets a @ptr to PMD entry (PGD in our 2-tier paging system) 290 * pte_offset gets a @ptr to PMD entry (PGD in our 2-tier paging system)
diff --git a/arch/arc/mm/init.c b/arch/arc/mm/init.c
index 5487d0b97400..8be930394750 100644
--- a/arch/arc/mm/init.c
+++ b/arch/arc/mm/init.c
@@ -30,11 +30,16 @@ static const unsigned long low_mem_start = CONFIG_LINUX_LINK_BASE;
30static unsigned long low_mem_sz; 30static unsigned long low_mem_sz;
31 31
32#ifdef CONFIG_HIGHMEM 32#ifdef CONFIG_HIGHMEM
33static unsigned long min_high_pfn; 33static unsigned long min_high_pfn, max_high_pfn;
34static u64 high_mem_start; 34static u64 high_mem_start;
35static u64 high_mem_sz; 35static u64 high_mem_sz;
36#endif 36#endif
37 37
38#ifdef CONFIG_DISCONTIGMEM
39struct pglist_data node_data[MAX_NUMNODES] __read_mostly;
40EXPORT_SYMBOL(node_data);
41#endif
42
38/* User can over-ride above with "mem=nnn[KkMm]" in cmdline */ 43/* User can over-ride above with "mem=nnn[KkMm]" in cmdline */
39static int __init setup_mem_sz(char *str) 44static int __init setup_mem_sz(char *str)
40{ 45{
@@ -109,13 +114,11 @@ void __init setup_arch_memory(void)
109 /* Last usable page of low mem */ 114 /* Last usable page of low mem */
110 max_low_pfn = max_pfn = PFN_DOWN(low_mem_start + low_mem_sz); 115 max_low_pfn = max_pfn = PFN_DOWN(low_mem_start + low_mem_sz);
111 116
112#ifdef CONFIG_HIGHMEM 117#ifdef CONFIG_FLATMEM
113 min_high_pfn = PFN_DOWN(high_mem_start); 118 /* pfn_valid() uses this */
114 max_pfn = PFN_DOWN(high_mem_start + high_mem_sz); 119 max_mapnr = max_low_pfn - min_low_pfn;
115#endif 120#endif
116 121
117 max_mapnr = max_pfn - min_low_pfn;
118
119 /*------------- bootmem allocator setup -----------------------*/ 122 /*------------- bootmem allocator setup -----------------------*/
120 123
121 /* 124 /*
@@ -129,7 +132,7 @@ void __init setup_arch_memory(void)
129 * the crash 132 * the crash
130 */ 133 */
131 134
132 memblock_add(low_mem_start, low_mem_sz); 135 memblock_add_node(low_mem_start, low_mem_sz, 0);
133 memblock_reserve(low_mem_start, __pa(_end) - low_mem_start); 136 memblock_reserve(low_mem_start, __pa(_end) - low_mem_start);
134 137
135#ifdef CONFIG_BLK_DEV_INITRD 138#ifdef CONFIG_BLK_DEV_INITRD
@@ -149,13 +152,6 @@ void __init setup_arch_memory(void)
149 zones_size[ZONE_NORMAL] = max_low_pfn - min_low_pfn; 152 zones_size[ZONE_NORMAL] = max_low_pfn - min_low_pfn;
150 zones_holes[ZONE_NORMAL] = 0; 153 zones_holes[ZONE_NORMAL] = 0;
151 154
152#ifdef CONFIG_HIGHMEM
153 zones_size[ZONE_HIGHMEM] = max_pfn - max_low_pfn;
154
155 /* This handles the peripheral address space hole */
156 zones_holes[ZONE_HIGHMEM] = min_high_pfn - max_low_pfn;
157#endif
158
159 /* 155 /*
160 * We can't use the helper free_area_init(zones[]) because it uses 156 * We can't use the helper free_area_init(zones[]) because it uses
161 * PAGE_OFFSET to compute the @min_low_pfn which would be wrong 157 * PAGE_OFFSET to compute the @min_low_pfn which would be wrong
@@ -168,6 +164,34 @@ void __init setup_arch_memory(void)
168 zones_holes); /* holes */ 164 zones_holes); /* holes */
169 165
170#ifdef CONFIG_HIGHMEM 166#ifdef CONFIG_HIGHMEM
167 /*
168 * Populate a new node with highmem
169 *
170 * On ARC (w/o PAE) HIGHMEM addresses are actually smaller (0 based)
171 * than addresses in normal ala low memory (0x8000_0000 based).
172 * Even with PAE, the huge peripheral space hole would waste a lot of
173 * mem with single mem_map[]. This warrants a mem_map per region design.
174 * Thus HIGHMEM on ARC is imlemented with DISCONTIGMEM.
175 *
176 * DISCONTIGMEM in turns requires multiple nodes. node 0 above is
177 * populated with normal memory zone while node 1 only has highmem
178 */
179 node_set_online(1);
180
181 min_high_pfn = PFN_DOWN(high_mem_start);
182 max_high_pfn = PFN_DOWN(high_mem_start + high_mem_sz);
183
184 zones_size[ZONE_NORMAL] = 0;
185 zones_holes[ZONE_NORMAL] = 0;
186
187 zones_size[ZONE_HIGHMEM] = max_high_pfn - min_high_pfn;
188 zones_holes[ZONE_HIGHMEM] = 0;
189
190 free_area_init_node(1, /* node-id */
191 zones_size, /* num pages per zone */
192 min_high_pfn, /* first pfn of node */
193 zones_holes); /* holes */
194
171 high_memory = (void *)(min_high_pfn << PAGE_SHIFT); 195 high_memory = (void *)(min_high_pfn << PAGE_SHIFT);
172 kmap_init(); 196 kmap_init();
173#endif 197#endif
@@ -185,7 +209,7 @@ void __init mem_init(void)
185 unsigned long tmp; 209 unsigned long tmp;
186 210
187 reset_all_zones_managed_pages(); 211 reset_all_zones_managed_pages();
188 for (tmp = min_high_pfn; tmp < max_pfn; tmp++) 212 for (tmp = min_high_pfn; tmp < max_high_pfn; tmp++)
189 free_highmem_page(pfn_to_page(tmp)); 213 free_highmem_page(pfn_to_page(tmp));
190#endif 214#endif
191 215
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
index b3c26a96a726..d9e2d9c6e999 100644
--- a/arch/arm/boot/dts/omap3-n900.dts
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -329,6 +329,7 @@
329 regulator-name = "V28"; 329 regulator-name = "V28";
330 regulator-min-microvolt = <2800000>; 330 regulator-min-microvolt = <2800000>;
331 regulator-max-microvolt = <2800000>; 331 regulator-max-microvolt = <2800000>;
332 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
332 regulator-always-on; /* due to battery cover sensor */ 333 regulator-always-on; /* due to battery cover sensor */
333}; 334};
334 335
@@ -336,30 +337,35 @@
336 regulator-name = "VCSI"; 337 regulator-name = "VCSI";
337 regulator-min-microvolt = <1800000>; 338 regulator-min-microvolt = <1800000>;
338 regulator-max-microvolt = <1800000>; 339 regulator-max-microvolt = <1800000>;
340 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
339}; 341};
340 342
341&vaux3 { 343&vaux3 {
342 regulator-name = "VMMC2_30"; 344 regulator-name = "VMMC2_30";
343 regulator-min-microvolt = <2800000>; 345 regulator-min-microvolt = <2800000>;
344 regulator-max-microvolt = <3000000>; 346 regulator-max-microvolt = <3000000>;
347 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
345}; 348};
346 349
347&vaux4 { 350&vaux4 {
348 regulator-name = "VCAM_ANA_28"; 351 regulator-name = "VCAM_ANA_28";
349 regulator-min-microvolt = <2800000>; 352 regulator-min-microvolt = <2800000>;
350 regulator-max-microvolt = <2800000>; 353 regulator-max-microvolt = <2800000>;
354 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
351}; 355};
352 356
353&vmmc1 { 357&vmmc1 {
354 regulator-name = "VMMC1"; 358 regulator-name = "VMMC1";
355 regulator-min-microvolt = <1850000>; 359 regulator-min-microvolt = <1850000>;
356 regulator-max-microvolt = <3150000>; 360 regulator-max-microvolt = <3150000>;
361 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
357}; 362};
358 363
359&vmmc2 { 364&vmmc2 {
360 regulator-name = "V28_A"; 365 regulator-name = "V28_A";
361 regulator-min-microvolt = <2800000>; 366 regulator-min-microvolt = <2800000>;
362 regulator-max-microvolt = <3000000>; 367 regulator-max-microvolt = <3000000>;
368 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
363 regulator-always-on; /* due VIO leak to AIC34 VDDs */ 369 regulator-always-on; /* due VIO leak to AIC34 VDDs */
364}; 370};
365 371
@@ -367,6 +373,7 @@
367 regulator-name = "VPLL"; 373 regulator-name = "VPLL";
368 regulator-min-microvolt = <1800000>; 374 regulator-min-microvolt = <1800000>;
369 regulator-max-microvolt = <1800000>; 375 regulator-max-microvolt = <1800000>;
376 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
370 regulator-always-on; 377 regulator-always-on;
371}; 378};
372 379
@@ -374,6 +381,7 @@
374 regulator-name = "VSDI_CSI"; 381 regulator-name = "VSDI_CSI";
375 regulator-min-microvolt = <1800000>; 382 regulator-min-microvolt = <1800000>;
376 regulator-max-microvolt = <1800000>; 383 regulator-max-microvolt = <1800000>;
384 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
377 regulator-always-on; 385 regulator-always-on;
378}; 386};
379 387
@@ -381,6 +389,7 @@
381 regulator-name = "VMMC2_IO_18"; 389 regulator-name = "VMMC2_IO_18";
382 regulator-min-microvolt = <1800000>; 390 regulator-min-microvolt = <1800000>;
383 regulator-max-microvolt = <1800000>; 391 regulator-max-microvolt = <1800000>;
392 regulator-initial-mode = <0x0e>; /* RES_STATE_ACTIVE */
384}; 393};
385 394
386&vio { 395&vio {
diff --git a/arch/arm/boot/dts/omap34xx.dtsi b/arch/arm/boot/dts/omap34xx.dtsi
index 387dc31822fe..96f8ce7bd2af 100644
--- a/arch/arm/boot/dts/omap34xx.dtsi
+++ b/arch/arm/boot/dts/omap34xx.dtsi
@@ -46,7 +46,7 @@
46 0x480bd800 0x017c>; 46 0x480bd800 0x017c>;
47 interrupts = <24>; 47 interrupts = <24>;
48 iommus = <&mmu_isp>; 48 iommus = <&mmu_isp>;
49 syscon = <&scm_conf 0xdc>; 49 syscon = <&scm_conf 0x6c>;
50 ti,phy-type = <OMAP3ISP_PHY_TYPE_COMPLEX_IO>; 50 ti,phy-type = <OMAP3ISP_PHY_TYPE_COMPLEX_IO>;
51 #clock-cells = <1>; 51 #clock-cells = <1>;
52 ports { 52 ports {
diff --git a/arch/arm/boot/dts/omap5-board-common.dtsi b/arch/arm/boot/dts/omap5-board-common.dtsi
index 902657d6713b..914bf4c47404 100644
--- a/arch/arm/boot/dts/omap5-board-common.dtsi
+++ b/arch/arm/boot/dts/omap5-board-common.dtsi
@@ -472,7 +472,7 @@
472 ldo1_reg: ldo1 { 472 ldo1_reg: ldo1 {
473 /* VDDAPHY_CAM: vdda_csiport */ 473 /* VDDAPHY_CAM: vdda_csiport */
474 regulator-name = "ldo1"; 474 regulator-name = "ldo1";
475 regulator-min-microvolt = <1500000>; 475 regulator-min-microvolt = <1800000>;
476 regulator-max-microvolt = <1800000>; 476 regulator-max-microvolt = <1800000>;
477 }; 477 };
478 478
@@ -498,7 +498,7 @@
498 ldo4_reg: ldo4 { 498 ldo4_reg: ldo4 {
499 /* VDDAPHY_DISP: vdda_dsiport/hdmi */ 499 /* VDDAPHY_DISP: vdda_dsiport/hdmi */
500 regulator-name = "ldo4"; 500 regulator-name = "ldo4";
501 regulator-min-microvolt = <1500000>; 501 regulator-min-microvolt = <1800000>;
502 regulator-max-microvolt = <1800000>; 502 regulator-max-microvolt = <1800000>;
503 }; 503 };
504 504
diff --git a/arch/arm/boot/dts/omap5-cm-t54.dts b/arch/arm/boot/dts/omap5-cm-t54.dts
index ecc591dc0778..4d87d9c6c86d 100644
--- a/arch/arm/boot/dts/omap5-cm-t54.dts
+++ b/arch/arm/boot/dts/omap5-cm-t54.dts
@@ -513,7 +513,7 @@
513 ldo1_reg: ldo1 { 513 ldo1_reg: ldo1 {
514 /* VDDAPHY_CAM: vdda_csiport */ 514 /* VDDAPHY_CAM: vdda_csiport */
515 regulator-name = "ldo1"; 515 regulator-name = "ldo1";
516 regulator-min-microvolt = <1500000>; 516 regulator-min-microvolt = <1800000>;
517 regulator-max-microvolt = <1800000>; 517 regulator-max-microvolt = <1800000>;
518 }; 518 };
519 519
@@ -537,7 +537,7 @@
537 ldo4_reg: ldo4 { 537 ldo4_reg: ldo4 {
538 /* VDDAPHY_DISP: vdda_dsiport/hdmi */ 538 /* VDDAPHY_DISP: vdda_dsiport/hdmi */
539 regulator-name = "ldo4"; 539 regulator-name = "ldo4";
540 regulator-min-microvolt = <1500000>; 540 regulator-min-microvolt = <1800000>;
541 regulator-max-microvolt = <1800000>; 541 regulator-max-microvolt = <1800000>;
542 }; 542 };
543 543
diff --git a/arch/arm/boot/dts/omap5.dtsi b/arch/arm/boot/dts/omap5.dtsi
index 38805ebbe2ba..120b6b80cd39 100644
--- a/arch/arm/boot/dts/omap5.dtsi
+++ b/arch/arm/boot/dts/omap5.dtsi
@@ -269,7 +269,7 @@
269 omap5_pmx_wkup: pinmux@c840 { 269 omap5_pmx_wkup: pinmux@c840 {
270 compatible = "ti,omap5-padconf", 270 compatible = "ti,omap5-padconf",
271 "pinctrl-single"; 271 "pinctrl-single";
272 reg = <0xc840 0x0038>; 272 reg = <0xc840 0x003c>;
273 #address-cells = <1>; 273 #address-cells = <1>;
274 #size-cells = <0>; 274 #size-cells = <0>;
275 #interrupt-cells = <1>; 275 #interrupt-cells = <1>;
diff --git a/arch/arm/boot/dts/qcom-apq8064.dtsi b/arch/arm/boot/dts/qcom-apq8064.dtsi
index 65d0e8d98259..04f541bffbdd 100644
--- a/arch/arm/boot/dts/qcom-apq8064.dtsi
+++ b/arch/arm/boot/dts/qcom-apq8064.dtsi
@@ -666,7 +666,7 @@
666 }; 666 };
667 667
668 sata0: sata@29000000 { 668 sata0: sata@29000000 {
669 compatible = "generic-ahci"; 669 compatible = "qcom,apq8064-ahci", "generic-ahci";
670 status = "disabled"; 670 status = "disabled";
671 reg = <0x29000000 0x180>; 671 reg = <0x29000000 0x180>;
672 interrupts = <GIC_SPI 209 IRQ_TYPE_NONE>; 672 interrupts = <GIC_SPI 209 IRQ_TYPE_NONE>;
@@ -688,6 +688,7 @@
688 688
689 phys = <&sata_phy0>; 689 phys = <&sata_phy0>;
690 phy-names = "sata-phy"; 690 phy-names = "sata-phy";
691 ports-implemented = <0x1>;
691 }; 692 };
692 693
693 /* Temporary fixed regulator */ 694 /* Temporary fixed regulator */
diff --git a/arch/arm/boot/dts/sun8i-q8-common.dtsi b/arch/arm/boot/dts/sun8i-q8-common.dtsi
index 9d2b7e2f5975..346a49d805a7 100644
--- a/arch/arm/boot/dts/sun8i-q8-common.dtsi
+++ b/arch/arm/boot/dts/sun8i-q8-common.dtsi
@@ -125,8 +125,6 @@
125}; 125};
126 126
127&reg_dc1sw { 127&reg_dc1sw {
128 regulator-min-microvolt = <3000000>;
129 regulator-max-microvolt = <3000000>;
130 regulator-name = "vcc-lcd"; 128 regulator-name = "vcc-lcd";
131}; 129};
132 130
diff --git a/arch/arm/include/asm/domain.h b/arch/arm/include/asm/domain.h
index fc8ba1663601..99d9f630d6b6 100644
--- a/arch/arm/include/asm/domain.h
+++ b/arch/arm/include/asm/domain.h
@@ -84,6 +84,7 @@
84 84
85#ifndef __ASSEMBLY__ 85#ifndef __ASSEMBLY__
86 86
87#ifdef CONFIG_CPU_CP15_MMU
87static inline unsigned int get_domain(void) 88static inline unsigned int get_domain(void)
88{ 89{
89 unsigned int domain; 90 unsigned int domain;
@@ -103,6 +104,16 @@ static inline void set_domain(unsigned val)
103 : : "r" (val) : "memory"); 104 : : "r" (val) : "memory");
104 isb(); 105 isb();
105} 106}
107#else
108static inline unsigned int get_domain(void)
109{
110 return 0;
111}
112
113static inline void set_domain(unsigned val)
114{
115}
116#endif
106 117
107#ifdef CONFIG_CPU_USE_DOMAINS 118#ifdef CONFIG_CPU_USE_DOMAINS
108#define modify_domain(dom,type) \ 119#define modify_domain(dom,type) \
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index 9b8c5a113434..fb1a69eb49c1 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -236,7 +236,7 @@ ENTRY(__setup_mpu)
236 mov r0, #CONFIG_VECTORS_BASE @ Cover from VECTORS_BASE 236 mov r0, #CONFIG_VECTORS_BASE @ Cover from VECTORS_BASE
237 ldr r5,=(MPU_AP_PL1RW_PL0NA | MPU_RGN_NORMAL) 237 ldr r5,=(MPU_AP_PL1RW_PL0NA | MPU_RGN_NORMAL)
238 /* Writing N to bits 5:1 (RSR_SZ) --> region size 2^N+1 */ 238 /* Writing N to bits 5:1 (RSR_SZ) --> region size 2^N+1 */
239 mov r6, #(((PAGE_SHIFT - 1) << MPU_RSR_SZ) | 1 << MPU_RSR_EN) 239 mov r6, #(((2 * PAGE_SHIFT - 1) << MPU_RSR_SZ) | 1 << MPU_RSR_EN)
240 240
241 setup_region r0, r5, r6, MPU_DATA_SIDE @ VECTORS_BASE, PL0 NA, enabled 241 setup_region r0, r5, r6, MPU_DATA_SIDE @ VECTORS_BASE, PL0 NA, enabled
242 beq 3f @ Memory-map not unified 242 beq 3f @ Memory-map not unified
diff --git a/arch/arm/kvm/mmu.c b/arch/arm/kvm/mmu.c
index 58dbd5c439df..d6d4191e68f2 100644
--- a/arch/arm/kvm/mmu.c
+++ b/arch/arm/kvm/mmu.c
@@ -1004,7 +1004,7 @@ static bool transparent_hugepage_adjust(kvm_pfn_t *pfnp, phys_addr_t *ipap)
1004 kvm_pfn_t pfn = *pfnp; 1004 kvm_pfn_t pfn = *pfnp;
1005 gfn_t gfn = *ipap >> PAGE_SHIFT; 1005 gfn_t gfn = *ipap >> PAGE_SHIFT;
1006 1006
1007 if (PageTransCompound(pfn_to_page(pfn))) { 1007 if (PageTransCompoundMap(pfn_to_page(pfn))) {
1008 unsigned long mask; 1008 unsigned long mask;
1009 /* 1009 /*
1010 * The address we faulted on is backed by a transparent huge 1010 * The address we faulted on is backed by a transparent huge
diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c
index d97c588550ad..bc4e63fa9808 100644
--- a/arch/arm/mach-davinci/board-mityomapl138.c
+++ b/arch/arm/mach-davinci/board-mityomapl138.c
@@ -121,6 +121,11 @@ static void read_factory_config(struct nvmem_device *nvmem, void *context)
121 const char *partnum = NULL; 121 const char *partnum = NULL;
122 struct davinci_soc_info *soc_info = &davinci_soc_info; 122 struct davinci_soc_info *soc_info = &davinci_soc_info;
123 123
124 if (!IS_BUILTIN(CONFIG_NVMEM)) {
125 pr_warn("Factory Config not available without CONFIG_NVMEM\n");
126 goto bad_config;
127 }
128
124 ret = nvmem_device_read(nvmem, 0, sizeof(factory_config), 129 ret = nvmem_device_read(nvmem, 0, sizeof(factory_config),
125 &factory_config); 130 &factory_config);
126 if (ret != sizeof(struct factory_config)) { 131 if (ret != sizeof(struct factory_config)) {
diff --git a/arch/arm/mach-davinci/common.c b/arch/arm/mach-davinci/common.c
index f55ef2ef2f92..742133b7266a 100644
--- a/arch/arm/mach-davinci/common.c
+++ b/arch/arm/mach-davinci/common.c
@@ -33,6 +33,11 @@ void davinci_get_mac_addr(struct nvmem_device *nvmem, void *context)
33 char *mac_addr = davinci_soc_info.emac_pdata->mac_addr; 33 char *mac_addr = davinci_soc_info.emac_pdata->mac_addr;
34 off_t offset = (off_t)context; 34 off_t offset = (off_t)context;
35 35
36 if (!IS_BUILTIN(CONFIG_NVMEM)) {
37 pr_warn("Cannot read MAC addr from EEPROM without CONFIG_NVMEM\n");
38 return;
39 }
40
36 /* Read MAC addr from EEPROM */ 41 /* Read MAC addr from EEPROM */
37 if (nvmem_device_read(nvmem, offset, ETH_ALEN, mac_addr) == ETH_ALEN) 42 if (nvmem_device_read(nvmem, offset, ETH_ALEN, mac_addr) == ETH_ALEN)
38 pr_info("Read MAC addr from EEPROM: %pM\n", mac_addr); 43 pr_info("Read MAC addr from EEPROM: %pM\n", mac_addr);
diff --git a/arch/arm/mach-exynos/pm_domains.c b/arch/arm/mach-exynos/pm_domains.c
index 7c21760f590f..875a2bab64f6 100644
--- a/arch/arm/mach-exynos/pm_domains.c
+++ b/arch/arm/mach-exynos/pm_domains.c
@@ -92,7 +92,7 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
92 if (IS_ERR(pd->clk[i])) 92 if (IS_ERR(pd->clk[i]))
93 break; 93 break;
94 94
95 if (IS_ERR(pd->clk[i])) 95 if (IS_ERR(pd->pclk[i]))
96 continue; /* Skip on first power up */ 96 continue; /* Skip on first power up */
97 if (clk_set_parent(pd->clk[i], pd->pclk[i])) 97 if (clk_set_parent(pd->clk[i], pd->pclk[i]))
98 pr_err("%s: error setting parent to clock%d\n", 98 pr_err("%s: error setting parent to clock%d\n",
diff --git a/arch/arm/mach-socfpga/headsmp.S b/arch/arm/mach-socfpga/headsmp.S
index 5d94b7a2fb10..c160fa3007e9 100644
--- a/arch/arm/mach-socfpga/headsmp.S
+++ b/arch/arm/mach-socfpga/headsmp.S
@@ -13,6 +13,7 @@
13#include <asm/assembler.h> 13#include <asm/assembler.h>
14 14
15 .arch armv7-a 15 .arch armv7-a
16 .arm
16 17
17ENTRY(secondary_trampoline) 18ENTRY(secondary_trampoline)
18 /* CPU1 will always fetch from 0x0 when it is brought out of reset. 19 /* CPU1 will always fetch from 0x0 when it is brought out of reset.
diff --git a/arch/arm/mm/nommu.c b/arch/arm/mm/nommu.c
index 1dd10936d68d..d5805e4bf2fc 100644
--- a/arch/arm/mm/nommu.c
+++ b/arch/arm/mm/nommu.c
@@ -87,7 +87,6 @@ static unsigned long irbar_read(void)
87/* MPU initialisation functions */ 87/* MPU initialisation functions */
88void __init sanity_check_meminfo_mpu(void) 88void __init sanity_check_meminfo_mpu(void)
89{ 89{
90 int i;
91 phys_addr_t phys_offset = PHYS_OFFSET; 90 phys_addr_t phys_offset = PHYS_OFFSET;
92 phys_addr_t aligned_region_size, specified_mem_size, rounded_mem_size; 91 phys_addr_t aligned_region_size, specified_mem_size, rounded_mem_size;
93 struct memblock_region *reg; 92 struct memblock_region *reg;
@@ -110,11 +109,13 @@ void __init sanity_check_meminfo_mpu(void)
110 } else { 109 } else {
111 /* 110 /*
112 * memblock auto merges contiguous blocks, remove 111 * memblock auto merges contiguous blocks, remove
113 * all blocks afterwards 112 * all blocks afterwards in one go (we can't remove
113 * blocks separately while iterating)
114 */ 114 */
115 pr_notice("Ignoring RAM after %pa, memory at %pa ignored\n", 115 pr_notice("Ignoring RAM after %pa, memory at %pa ignored\n",
116 &mem_start, &reg->base); 116 &mem_end, &reg->base);
117 memblock_remove(reg->base, reg->size); 117 memblock_remove(reg->base, 0 - reg->base);
118 break;
118 } 119 }
119 } 120 }
120 121
@@ -144,7 +145,7 @@ void __init sanity_check_meminfo_mpu(void)
144 pr_warn("Truncating memory from %pa to %pa (MPU region constraints)", 145 pr_warn("Truncating memory from %pa to %pa (MPU region constraints)",
145 &specified_mem_size, &aligned_region_size); 146 &specified_mem_size, &aligned_region_size);
146 memblock_remove(mem_start + aligned_region_size, 147 memblock_remove(mem_start + aligned_region_size,
147 specified_mem_size - aligned_round_size); 148 specified_mem_size - aligned_region_size);
148 149
149 mem_end = mem_start + aligned_region_size; 150 mem_end = mem_start + aligned_region_size;
150 } 151 }
@@ -261,7 +262,7 @@ void __init mpu_setup(void)
261 return; 262 return;
262 263
263 region_err = mpu_setup_region(MPU_RAM_REGION, PHYS_OFFSET, 264 region_err = mpu_setup_region(MPU_RAM_REGION, PHYS_OFFSET,
264 ilog2(meminfo.bank[0].size), 265 ilog2(memblock.memory.regions[0].size),
265 MPU_AP_PL1RW_PL0RW | MPU_RGN_NORMAL); 266 MPU_AP_PL1RW_PL0RW | MPU_RGN_NORMAL);
266 if (region_err) { 267 if (region_err) {
267 panic("MPU region initialization failure! %d", region_err); 268 panic("MPU region initialization failure! %d", region_err);
@@ -285,7 +286,7 @@ void __init arm_mm_memblock_reserve(void)
285 * some architectures which the DRAM is the exception vector to trap, 286 * some architectures which the DRAM is the exception vector to trap,
286 * alloc_page breaks with error, although it is not NULL, but "0." 287 * alloc_page breaks with error, although it is not NULL, but "0."
287 */ 288 */
288 memblock_reserve(CONFIG_VECTORS_BASE, PAGE_SIZE); 289 memblock_reserve(CONFIG_VECTORS_BASE, 2 * PAGE_SIZE);
289#else /* ifndef CONFIG_CPU_V7M */ 290#else /* ifndef CONFIG_CPU_V7M */
290 /* 291 /*
291 * There is no dedicated vector page on V7-M. So nothing needs to be 292 * There is no dedicated vector page on V7-M. So nothing needs to be
diff --git a/arch/arm64/boot/dts/renesas/r8a7795.dtsi b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
index a7315ebe3883..706d2426024f 100644
--- a/arch/arm64/boot/dts/renesas/r8a7795.dtsi
+++ b/arch/arm64/boot/dts/renesas/r8a7795.dtsi
@@ -120,7 +120,6 @@
120 compatible = "fixed-clock"; 120 compatible = "fixed-clock";
121 #clock-cells = <0>; 121 #clock-cells = <0>;
122 clock-frequency = <0>; 122 clock-frequency = <0>;
123 status = "disabled";
124 }; 123 };
125 124
126 soc { 125 soc {
diff --git a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S
index c976ebfe2269..57b4836b7ecd 100644
--- a/arch/parisc/kernel/syscall.S
+++ b/arch/parisc/kernel/syscall.S
@@ -344,7 +344,7 @@ tracesys_next:
344#endif 344#endif
345 345
346 cmpib,COND(=),n -1,%r20,tracesys_exit /* seccomp may have returned -1 */ 346 cmpib,COND(=),n -1,%r20,tracesys_exit /* seccomp may have returned -1 */
347 comiclr,>>= __NR_Linux_syscalls, %r20, %r0 347 comiclr,>> __NR_Linux_syscalls, %r20, %r0
348 b,n .Ltracesys_nosys 348 b,n .Ltracesys_nosys
349 349
350 LDREGX %r20(%r19), %r19 350 LDREGX %r20(%r19), %r19
diff --git a/arch/powerpc/include/asm/word-at-a-time.h b/arch/powerpc/include/asm/word-at-a-time.h
index e4396a7d0f7c..4afe66aa1400 100644
--- a/arch/powerpc/include/asm/word-at-a-time.h
+++ b/arch/powerpc/include/asm/word-at-a-time.h
@@ -82,7 +82,7 @@ static inline unsigned long create_zero_mask(unsigned long bits)
82 "andc %1,%1,%2\n\t" 82 "andc %1,%1,%2\n\t"
83 "popcntd %0,%1" 83 "popcntd %0,%1"
84 : "=r" (leading_zero_bits), "=&r" (trailing_zero_bit_mask) 84 : "=r" (leading_zero_bits), "=&r" (trailing_zero_bit_mask)
85 : "r" (bits)); 85 : "b" (bits));
86 86
87 return leading_zero_bits; 87 return leading_zero_bits;
88} 88}
diff --git a/arch/x86/events/amd/iommu.c b/arch/x86/events/amd/iommu.c
index 40625ca7a190..6011a573dd64 100644
--- a/arch/x86/events/amd/iommu.c
+++ b/arch/x86/events/amd/iommu.c
@@ -474,6 +474,7 @@ static __init int _init_perf_amd_iommu(
474 474
475static struct perf_amd_iommu __perf_iommu = { 475static struct perf_amd_iommu __perf_iommu = {
476 .pmu = { 476 .pmu = {
477 .task_ctx_nr = perf_invalid_context,
477 .event_init = perf_iommu_event_init, 478 .event_init = perf_iommu_event_init,
478 .add = perf_iommu_add, 479 .add = perf_iommu_add,
479 .del = perf_iommu_del, 480 .del = perf_iommu_del,
diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
index aff79884e17d..a6fd4dbcf820 100644
--- a/arch/x86/events/intel/core.c
+++ b/arch/x86/events/intel/core.c
@@ -3637,6 +3637,8 @@ __init int intel_pmu_init(void)
3637 pr_cont("Knights Landing events, "); 3637 pr_cont("Knights Landing events, ");
3638 break; 3638 break;
3639 3639
3640 case 142: /* 14nm Kabylake Mobile */
3641 case 158: /* 14nm Kabylake Desktop */
3640 case 78: /* 14nm Skylake Mobile */ 3642 case 78: /* 14nm Skylake Mobile */
3641 case 94: /* 14nm Skylake Desktop */ 3643 case 94: /* 14nm Skylake Desktop */
3642 case 85: /* 14nm Skylake Server */ 3644 case 85: /* 14nm Skylake Server */
diff --git a/arch/x86/kernel/apic/x2apic_uv_x.c b/arch/x86/kernel/apic/x2apic_uv_x.c
index 8f4942e2bcbb..d7ce96a7daca 100644
--- a/arch/x86/kernel/apic/x2apic_uv_x.c
+++ b/arch/x86/kernel/apic/x2apic_uv_x.c
@@ -891,9 +891,7 @@ void __init uv_system_init(void)
891 } 891 }
892 pr_info("UV: Found %s hub\n", hub); 892 pr_info("UV: Found %s hub\n", hub);
893 893
894 /* We now only need to map the MMRs on UV1 */ 894 map_low_mmrs();
895 if (is_uv1_hub())
896 map_low_mmrs();
897 895
898 m_n_config.v = uv_read_local_mmr(UVH_RH_GAM_CONFIG_MMR ); 896 m_n_config.v = uv_read_local_mmr(UVH_RH_GAM_CONFIG_MMR );
899 m_val = m_n_config.s.m_skt; 897 m_val = m_n_config.s.m_skt;
diff --git a/arch/x86/kernel/sysfb_efi.c b/arch/x86/kernel/sysfb_efi.c
index b285d4e8c68e..5da924bbf0a0 100644
--- a/arch/x86/kernel/sysfb_efi.c
+++ b/arch/x86/kernel/sysfb_efi.c
@@ -106,14 +106,24 @@ static int __init efifb_set_system(const struct dmi_system_id *id)
106 continue; 106 continue;
107 for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { 107 for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) {
108 resource_size_t start, end; 108 resource_size_t start, end;
109 unsigned long flags;
110
111 flags = pci_resource_flags(dev, i);
112 if (!(flags & IORESOURCE_MEM))
113 continue;
114
115 if (flags & IORESOURCE_UNSET)
116 continue;
117
118 if (pci_resource_len(dev, i) == 0)
119 continue;
109 120
110 start = pci_resource_start(dev, i); 121 start = pci_resource_start(dev, i);
111 if (start == 0)
112 break;
113 end = pci_resource_end(dev, i); 122 end = pci_resource_end(dev, i);
114 if (screen_info.lfb_base >= start && 123 if (screen_info.lfb_base >= start &&
115 screen_info.lfb_base < end) { 124 screen_info.lfb_base < end) {
116 found_bar = 1; 125 found_bar = 1;
126 break;
117 } 127 }
118 } 128 }
119 } 129 }
diff --git a/arch/x86/kernel/tsc_msr.c b/arch/x86/kernel/tsc_msr.c
index 92ae6acac8a7..6aa0f4d9eea6 100644
--- a/arch/x86/kernel/tsc_msr.c
+++ b/arch/x86/kernel/tsc_msr.c
@@ -92,7 +92,7 @@ unsigned long try_msr_calibrate_tsc(void)
92 92
93 if (freq_desc_tables[cpu_index].msr_plat) { 93 if (freq_desc_tables[cpu_index].msr_plat) {
94 rdmsr(MSR_PLATFORM_INFO, lo, hi); 94 rdmsr(MSR_PLATFORM_INFO, lo, hi);
95 ratio = (lo >> 8) & 0x1f; 95 ratio = (lo >> 8) & 0xff;
96 } else { 96 } else {
97 rdmsr(MSR_IA32_PERF_STATUS, lo, hi); 97 rdmsr(MSR_IA32_PERF_STATUS, lo, hi);
98 ratio = (hi >> 8) & 0x1f; 98 ratio = (hi >> 8) & 0x1f;
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 1ff4dbb73fb7..b6f50e8b0a39 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -2823,7 +2823,7 @@ static void transparent_hugepage_adjust(struct kvm_vcpu *vcpu,
2823 */ 2823 */
2824 if (!is_error_noslot_pfn(pfn) && !kvm_is_reserved_pfn(pfn) && 2824 if (!is_error_noslot_pfn(pfn) && !kvm_is_reserved_pfn(pfn) &&
2825 level == PT_PAGE_TABLE_LEVEL && 2825 level == PT_PAGE_TABLE_LEVEL &&
2826 PageTransCompound(pfn_to_page(pfn)) && 2826 PageTransCompoundMap(pfn_to_page(pfn)) &&
2827 !mmu_gfn_lpage_is_disallowed(vcpu, gfn, PT_DIRECTORY_LEVEL)) { 2827 !mmu_gfn_lpage_is_disallowed(vcpu, gfn, PT_DIRECTORY_LEVEL)) {
2828 unsigned long mask; 2828 unsigned long mask;
2829 /* 2829 /*
@@ -4785,7 +4785,7 @@ restart:
4785 */ 4785 */
4786 if (sp->role.direct && 4786 if (sp->role.direct &&
4787 !kvm_is_reserved_pfn(pfn) && 4787 !kvm_is_reserved_pfn(pfn) &&
4788 PageTransCompound(pfn_to_page(pfn))) { 4788 PageTransCompoundMap(pfn_to_page(pfn))) {
4789 drop_spte(kvm, sptep); 4789 drop_spte(kvm, sptep);
4790 need_tlb_flush = 1; 4790 need_tlb_flush = 1;
4791 goto restart; 4791 goto restart;
diff --git a/arch/x86/platform/efi/efi-bgrt.c b/arch/x86/platform/efi/efi-bgrt.c
index a2433817c987..6a2f5691b1ab 100644
--- a/arch/x86/platform/efi/efi-bgrt.c
+++ b/arch/x86/platform/efi/efi-bgrt.c
@@ -43,40 +43,40 @@ void __init efi_bgrt_init(void)
43 return; 43 return;
44 44
45 if (bgrt_tab->header.length < sizeof(*bgrt_tab)) { 45 if (bgrt_tab->header.length < sizeof(*bgrt_tab)) {
46 pr_err("Ignoring BGRT: invalid length %u (expected %zu)\n", 46 pr_notice("Ignoring BGRT: invalid length %u (expected %zu)\n",
47 bgrt_tab->header.length, sizeof(*bgrt_tab)); 47 bgrt_tab->header.length, sizeof(*bgrt_tab));
48 return; 48 return;
49 } 49 }
50 if (bgrt_tab->version != 1) { 50 if (bgrt_tab->version != 1) {
51 pr_err("Ignoring BGRT: invalid version %u (expected 1)\n", 51 pr_notice("Ignoring BGRT: invalid version %u (expected 1)\n",
52 bgrt_tab->version); 52 bgrt_tab->version);
53 return; 53 return;
54 } 54 }
55 if (bgrt_tab->status & 0xfe) { 55 if (bgrt_tab->status & 0xfe) {
56 pr_err("Ignoring BGRT: reserved status bits are non-zero %u\n", 56 pr_notice("Ignoring BGRT: reserved status bits are non-zero %u\n",
57 bgrt_tab->status); 57 bgrt_tab->status);
58 return; 58 return;
59 } 59 }
60 if (bgrt_tab->image_type != 0) { 60 if (bgrt_tab->image_type != 0) {
61 pr_err("Ignoring BGRT: invalid image type %u (expected 0)\n", 61 pr_notice("Ignoring BGRT: invalid image type %u (expected 0)\n",
62 bgrt_tab->image_type); 62 bgrt_tab->image_type);
63 return; 63 return;
64 } 64 }
65 if (!bgrt_tab->image_address) { 65 if (!bgrt_tab->image_address) {
66 pr_err("Ignoring BGRT: null image address\n"); 66 pr_notice("Ignoring BGRT: null image address\n");
67 return; 67 return;
68 } 68 }
69 69
70 image = memremap(bgrt_tab->image_address, sizeof(bmp_header), MEMREMAP_WB); 70 image = memremap(bgrt_tab->image_address, sizeof(bmp_header), MEMREMAP_WB);
71 if (!image) { 71 if (!image) {
72 pr_err("Ignoring BGRT: failed to map image header memory\n"); 72 pr_notice("Ignoring BGRT: failed to map image header memory\n");
73 return; 73 return;
74 } 74 }
75 75
76 memcpy(&bmp_header, image, sizeof(bmp_header)); 76 memcpy(&bmp_header, image, sizeof(bmp_header));
77 memunmap(image); 77 memunmap(image);
78 if (bmp_header.id != 0x4d42) { 78 if (bmp_header.id != 0x4d42) {
79 pr_err("Ignoring BGRT: Incorrect BMP magic number 0x%x (expected 0x4d42)\n", 79 pr_notice("Ignoring BGRT: Incorrect BMP magic number 0x%x (expected 0x4d42)\n",
80 bmp_header.id); 80 bmp_header.id);
81 return; 81 return;
82 } 82 }
@@ -84,14 +84,14 @@ void __init efi_bgrt_init(void)
84 84
85 bgrt_image = kmalloc(bgrt_image_size, GFP_KERNEL | __GFP_NOWARN); 85 bgrt_image = kmalloc(bgrt_image_size, GFP_KERNEL | __GFP_NOWARN);
86 if (!bgrt_image) { 86 if (!bgrt_image) {
87 pr_err("Ignoring BGRT: failed to allocate memory for image (wanted %zu bytes)\n", 87 pr_notice("Ignoring BGRT: failed to allocate memory for image (wanted %zu bytes)\n",
88 bgrt_image_size); 88 bgrt_image_size);
89 return; 89 return;
90 } 90 }
91 91
92 image = memremap(bgrt_tab->image_address, bmp_header.size, MEMREMAP_WB); 92 image = memremap(bgrt_tab->image_address, bmp_header.size, MEMREMAP_WB);
93 if (!image) { 93 if (!image) {
94 pr_err("Ignoring BGRT: failed to map image memory\n"); 94 pr_notice("Ignoring BGRT: failed to map image memory\n");
95 kfree(bgrt_image); 95 kfree(bgrt_image);
96 bgrt_image = NULL; 96 bgrt_image = NULL;
97 return; 97 return;
diff --git a/crypto/Kconfig b/crypto/Kconfig
index 93a1fdc1feee..1d33beb6a1ae 100644
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -96,6 +96,7 @@ config CRYPTO_AKCIPHER
96config CRYPTO_RSA 96config CRYPTO_RSA
97 tristate "RSA algorithm" 97 tristate "RSA algorithm"
98 select CRYPTO_AKCIPHER 98 select CRYPTO_AKCIPHER
99 select CRYPTO_MANAGER
99 select MPILIB 100 select MPILIB
100 select ASN1 101 select ASN1
101 help 102 help
diff --git a/crypto/ahash.c b/crypto/ahash.c
index 5fc1f172963d..3887a98abcc3 100644
--- a/crypto/ahash.c
+++ b/crypto/ahash.c
@@ -69,8 +69,9 @@ static int hash_walk_new_entry(struct crypto_hash_walk *walk)
69 struct scatterlist *sg; 69 struct scatterlist *sg;
70 70
71 sg = walk->sg; 71 sg = walk->sg;
72 walk->pg = sg_page(sg);
73 walk->offset = sg->offset; 72 walk->offset = sg->offset;
73 walk->pg = sg_page(walk->sg) + (walk->offset >> PAGE_SHIFT);
74 walk->offset = offset_in_page(walk->offset);
74 walk->entrylen = sg->length; 75 walk->entrylen = sg->length;
75 76
76 if (walk->entrylen > walk->total) 77 if (walk->entrylen > walk->total)
diff --git a/drivers/acpi/acpica/dsmethod.c b/drivers/acpi/acpica/dsmethod.c
index 1982310e6d83..da198b864107 100644
--- a/drivers/acpi/acpica/dsmethod.c
+++ b/drivers/acpi/acpica/dsmethod.c
@@ -428,6 +428,9 @@ acpi_ds_begin_method_execution(struct acpi_namespace_node *method_node,
428 obj_desc->method.mutex->mutex. 428 obj_desc->method.mutex->mutex.
429 original_sync_level = 429 original_sync_level =
430 obj_desc->method.mutex->mutex.sync_level; 430 obj_desc->method.mutex->mutex.sync_level;
431
432 obj_desc->method.mutex->mutex.thread_id =
433 acpi_os_get_thread_id();
431 } 434 }
432 } 435 }
433 436
diff --git a/drivers/acpi/nfit.c b/drivers/acpi/nfit.c
index d0f35e63640b..63cc9dbe4f3b 100644
--- a/drivers/acpi/nfit.c
+++ b/drivers/acpi/nfit.c
@@ -287,8 +287,11 @@ static int acpi_nfit_ctl(struct nvdimm_bus_descriptor *nd_desc,
287 offset); 287 offset);
288 rc = -ENXIO; 288 rc = -ENXIO;
289 } 289 }
290 } else 290 } else {
291 rc = 0; 291 rc = 0;
292 if (cmd_rc)
293 *cmd_rc = xlat_status(buf, cmd);
294 }
292 295
293 out: 296 out:
294 ACPI_FREE(out_obj); 297 ACPI_FREE(out_obj);
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 5083f85efea7..cfa936a32513 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -202,6 +202,14 @@ config SATA_FSL
202 202
203 If unsure, say N. 203 If unsure, say N.
204 204
205config SATA_AHCI_SEATTLE
206 tristate "AMD Seattle 6.0Gbps AHCI SATA host controller support"
207 depends on ARCH_SEATTLE
208 help
209 This option enables support for AMD Seattle SATA host controller.
210
211 If unsure, say N
212
205config SATA_INIC162X 213config SATA_INIC162X
206 tristate "Initio 162x SATA support (Very Experimental)" 214 tristate "Initio 162x SATA support (Very Experimental)"
207 depends on PCI 215 depends on PCI
diff --git a/drivers/ata/Makefile b/drivers/ata/Makefile
index 18579521464e..0b2afb7e5f35 100644
--- a/drivers/ata/Makefile
+++ b/drivers/ata/Makefile
@@ -4,6 +4,7 @@ obj-$(CONFIG_ATA) += libata.o
4# non-SFF interface 4# non-SFF interface
5obj-$(CONFIG_SATA_AHCI) += ahci.o libahci.o 5obj-$(CONFIG_SATA_AHCI) += ahci.o libahci.o
6obj-$(CONFIG_SATA_ACARD_AHCI) += acard-ahci.o libahci.o 6obj-$(CONFIG_SATA_ACARD_AHCI) += acard-ahci.o libahci.o
7obj-$(CONFIG_SATA_AHCI_SEATTLE) += ahci_seattle.o libahci.o libahci_platform.o
7obj-$(CONFIG_SATA_AHCI_PLATFORM) += ahci_platform.o libahci.o libahci_platform.o 8obj-$(CONFIG_SATA_AHCI_PLATFORM) += ahci_platform.o libahci.o libahci_platform.o
8obj-$(CONFIG_SATA_FSL) += sata_fsl.o 9obj-$(CONFIG_SATA_FSL) += sata_fsl.o
9obj-$(CONFIG_SATA_INIC162X) += sata_inic162x.o 10obj-$(CONFIG_SATA_INIC162X) += sata_inic162x.o
diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
index 40442332bfa7..62a04c8fb5c9 100644
--- a/drivers/ata/ahci_platform.c
+++ b/drivers/ata/ahci_platform.c
@@ -51,6 +51,9 @@ static int ahci_probe(struct platform_device *pdev)
51 if (rc) 51 if (rc)
52 return rc; 52 return rc;
53 53
54 of_property_read_u32(dev->of_node,
55 "ports-implemented", &hpriv->force_port_map);
56
54 if (of_device_is_compatible(dev->of_node, "hisilicon,hisi-ahci")) 57 if (of_device_is_compatible(dev->of_node, "hisilicon,hisi-ahci"))
55 hpriv->flags |= AHCI_HFLAG_NO_FBS | AHCI_HFLAG_NO_NCQ; 58 hpriv->flags |= AHCI_HFLAG_NO_FBS | AHCI_HFLAG_NO_NCQ;
56 59
diff --git a/drivers/ata/ahci_seattle.c b/drivers/ata/ahci_seattle.c
new file mode 100644
index 000000000000..6e702ab57220
--- /dev/null
+++ b/drivers/ata/ahci_seattle.c
@@ -0,0 +1,210 @@
1/*
2 * AMD Seattle AHCI SATA driver
3 *
4 * Copyright (c) 2015, Advanced Micro Devices
5 * Author: Brijesh Singh <brijesh.singh@amd.com>
6 *
7 * based on the AHCI SATA platform driver by Jeff Garzik and Anton Vorontsov
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 */
18
19#include <linux/kernel.h>
20#include <linux/module.h>
21#include <linux/pm.h>
22#include <linux/device.h>
23#include <linux/of_device.h>
24#include <linux/platform_device.h>
25#include <linux/libata.h>
26#include <linux/ahci_platform.h>
27#include <linux/acpi.h>
28#include <linux/pci_ids.h>
29#include "ahci.h"
30
31/* SGPIO Control Register definition
32 *
33 * Bit Type Description
34 * 31 RW OD7.2 (activity)
35 * 30 RW OD7.1 (locate)
36 * 29 RW OD7.0 (fault)
37 * 28...8 RW OD6.2...OD0.0 (3bits per port, 1 bit per LED)
38 * 7 RO SGPIO feature flag
39 * 6:4 RO Reserved
40 * 3:0 RO Number of ports (0 means no port supported)
41 */
42#define ACTIVITY_BIT_POS(x) (8 + (3 * x))
43#define LOCATE_BIT_POS(x) (ACTIVITY_BIT_POS(x) + 1)
44#define FAULT_BIT_POS(x) (LOCATE_BIT_POS(x) + 1)
45
46#define ACTIVITY_MASK 0x00010000
47#define LOCATE_MASK 0x00080000
48#define FAULT_MASK 0x00400000
49
50#define DRV_NAME "ahci-seattle"
51
52static ssize_t seattle_transmit_led_message(struct ata_port *ap, u32 state,
53 ssize_t size);
54
55struct seattle_plat_data {
56 void __iomem *sgpio_ctrl;
57};
58
59static struct ata_port_operations ahci_port_ops = {
60 .inherits = &ahci_ops,
61};
62
63static const struct ata_port_info ahci_port_info = {
64 .flags = AHCI_FLAG_COMMON,
65 .pio_mask = ATA_PIO4,
66 .udma_mask = ATA_UDMA6,
67 .port_ops = &ahci_port_ops,
68};
69
70static struct ata_port_operations ahci_seattle_ops = {
71 .inherits = &ahci_ops,
72 .transmit_led_message = seattle_transmit_led_message,
73};
74
75static const struct ata_port_info ahci_port_seattle_info = {
76 .flags = AHCI_FLAG_COMMON | ATA_FLAG_EM | ATA_FLAG_SW_ACTIVITY,
77 .link_flags = ATA_LFLAG_SW_ACTIVITY,
78 .pio_mask = ATA_PIO4,
79 .udma_mask = ATA_UDMA6,
80 .port_ops = &ahci_seattle_ops,
81};
82
83static struct scsi_host_template ahci_platform_sht = {
84 AHCI_SHT(DRV_NAME),
85};
86
87static ssize_t seattle_transmit_led_message(struct ata_port *ap, u32 state,
88 ssize_t size)
89{
90 struct ahci_host_priv *hpriv = ap->host->private_data;
91 struct ahci_port_priv *pp = ap->private_data;
92 struct seattle_plat_data *plat_data = hpriv->plat_data;
93 unsigned long flags;
94 int pmp;
95 struct ahci_em_priv *emp;
96 u32 val;
97
98 /* get the slot number from the message */
99 pmp = (state & EM_MSG_LED_PMP_SLOT) >> 8;
100 if (pmp >= EM_MAX_SLOTS)
101 return -EINVAL;
102 emp = &pp->em_priv[pmp];
103
104 val = ioread32(plat_data->sgpio_ctrl);
105 if (state & ACTIVITY_MASK)
106 val |= 1 << ACTIVITY_BIT_POS((ap->port_no));
107 else
108 val &= ~(1 << ACTIVITY_BIT_POS((ap->port_no)));
109
110 if (state & LOCATE_MASK)
111 val |= 1 << LOCATE_BIT_POS((ap->port_no));
112 else
113 val &= ~(1 << LOCATE_BIT_POS((ap->port_no)));
114
115 if (state & FAULT_MASK)
116 val |= 1 << FAULT_BIT_POS((ap->port_no));
117 else
118 val &= ~(1 << FAULT_BIT_POS((ap->port_no)));
119
120 iowrite32(val, plat_data->sgpio_ctrl);
121
122 spin_lock_irqsave(ap->lock, flags);
123
124 /* save off new led state for port/slot */
125 emp->led_state = state;
126
127 spin_unlock_irqrestore(ap->lock, flags);
128
129 return size;
130}
131
132static const struct ata_port_info *ahci_seattle_get_port_info(
133 struct platform_device *pdev, struct ahci_host_priv *hpriv)
134{
135 struct device *dev = &pdev->dev;
136 struct seattle_plat_data *plat_data;
137 u32 val;
138
139 plat_data = devm_kzalloc(dev, sizeof(*plat_data), GFP_KERNEL);
140 if (IS_ERR(plat_data))
141 return &ahci_port_info;
142
143 plat_data->sgpio_ctrl = devm_ioremap_resource(dev,
144 platform_get_resource(pdev, IORESOURCE_MEM, 1));
145 if (IS_ERR(plat_data->sgpio_ctrl))
146 return &ahci_port_info;
147
148 val = ioread32(plat_data->sgpio_ctrl);
149
150 if (!(val & 0xf))
151 return &ahci_port_info;
152
153 hpriv->em_loc = 0;
154 hpriv->em_buf_sz = 4;
155 hpriv->em_msg_type = EM_MSG_TYPE_LED;
156 hpriv->plat_data = plat_data;
157
158 dev_info(dev, "SGPIO LED control is enabled.\n");
159 return &ahci_port_seattle_info;
160}
161
162static int ahci_seattle_probe(struct platform_device *pdev)
163{
164 int rc;
165 struct ahci_host_priv *hpriv;
166
167 hpriv = ahci_platform_get_resources(pdev);
168 if (IS_ERR(hpriv))
169 return PTR_ERR(hpriv);
170
171 rc = ahci_platform_enable_resources(hpriv);
172 if (rc)
173 return rc;
174
175 rc = ahci_platform_init_host(pdev, hpriv,
176 ahci_seattle_get_port_info(pdev, hpriv),
177 &ahci_platform_sht);
178 if (rc)
179 goto disable_resources;
180
181 return 0;
182disable_resources:
183 ahci_platform_disable_resources(hpriv);
184 return rc;
185}
186
187static SIMPLE_DEV_PM_OPS(ahci_pm_ops, ahci_platform_suspend,
188 ahci_platform_resume);
189
190static const struct acpi_device_id ahci_acpi_match[] = {
191 { "AMDI0600", 0 },
192 {}
193};
194MODULE_DEVICE_TABLE(acpi, ahci_acpi_match);
195
196static struct platform_driver ahci_seattle_driver = {
197 .probe = ahci_seattle_probe,
198 .remove = ata_platform_remove_one,
199 .driver = {
200 .name = DRV_NAME,
201 .acpi_match_table = ahci_acpi_match,
202 .pm = &ahci_pm_ops,
203 },
204};
205module_platform_driver(ahci_seattle_driver);
206
207MODULE_DESCRIPTION("Seattle AHCI SATA platform driver");
208MODULE_AUTHOR("Brijesh Singh <brijesh.singh@amd.com>");
209MODULE_LICENSE("GPL");
210MODULE_ALIAS("platform:" DRV_NAME);
diff --git a/drivers/ata/libahci.c b/drivers/ata/libahci.c
index 3982054060b8..a5d7c1c2a05e 100644
--- a/drivers/ata/libahci.c
+++ b/drivers/ata/libahci.c
@@ -507,6 +507,7 @@ void ahci_save_initial_config(struct device *dev, struct ahci_host_priv *hpriv)
507 dev_info(dev, "forcing port_map 0x%x -> 0x%x\n", 507 dev_info(dev, "forcing port_map 0x%x -> 0x%x\n",
508 port_map, hpriv->force_port_map); 508 port_map, hpriv->force_port_map);
509 port_map = hpriv->force_port_map; 509 port_map = hpriv->force_port_map;
510 hpriv->saved_port_map = port_map;
510 } 511 }
511 512
512 if (hpriv->mask_port_map) { 513 if (hpriv->mask_port_map) {
diff --git a/drivers/base/power/opp/core.c b/drivers/base/power/opp/core.c
index 433b60092972..d8f4cc22856c 100644
--- a/drivers/base/power/opp/core.c
+++ b/drivers/base/power/opp/core.c
@@ -259,9 +259,6 @@ unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev)
259 reg = opp_table->regulator; 259 reg = opp_table->regulator;
260 if (IS_ERR(reg)) { 260 if (IS_ERR(reg)) {
261 /* Regulator may not be required for device */ 261 /* Regulator may not be required for device */
262 if (reg)
263 dev_err(dev, "%s: Invalid regulator (%ld)\n", __func__,
264 PTR_ERR(reg));
265 rcu_read_unlock(); 262 rcu_read_unlock();
266 return 0; 263 return 0;
267 } 264 }
diff --git a/drivers/base/property.c b/drivers/base/property.c
index 9b1a65debd49..7f692accdc90 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -21,7 +21,7 @@
21 21
22static inline bool is_pset_node(struct fwnode_handle *fwnode) 22static inline bool is_pset_node(struct fwnode_handle *fwnode)
23{ 23{
24 return fwnode && fwnode->type == FWNODE_PDATA; 24 return !IS_ERR_OR_NULL(fwnode) && fwnode->type == FWNODE_PDATA;
25} 25}
26 26
27static inline struct property_set *to_pset_node(struct fwnode_handle *fwnode) 27static inline struct property_set *to_pset_node(struct fwnode_handle *fwnode)
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index e93405f0eac4..c4acfc5273b3 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1557,21 +1557,25 @@ void cpufreq_suspend(void)
1557 if (!cpufreq_driver) 1557 if (!cpufreq_driver)
1558 return; 1558 return;
1559 1559
1560 if (!has_target()) 1560 if (!has_target() && !cpufreq_driver->suspend)
1561 goto suspend; 1561 goto suspend;
1562 1562
1563 pr_debug("%s: Suspending Governors\n", __func__); 1563 pr_debug("%s: Suspending Governors\n", __func__);
1564 1564
1565 for_each_active_policy(policy) { 1565 for_each_active_policy(policy) {
1566 down_write(&policy->rwsem); 1566 if (has_target()) {
1567 ret = cpufreq_governor(policy, CPUFREQ_GOV_STOP); 1567 down_write(&policy->rwsem);
1568 up_write(&policy->rwsem); 1568 ret = cpufreq_governor(policy, CPUFREQ_GOV_STOP);
1569 up_write(&policy->rwsem);
1569 1570
1570 if (ret) 1571 if (ret) {
1571 pr_err("%s: Failed to stop governor for policy: %p\n", 1572 pr_err("%s: Failed to stop governor for policy: %p\n",
1572 __func__, policy); 1573 __func__, policy);
1573 else if (cpufreq_driver->suspend 1574 continue;
1574 && cpufreq_driver->suspend(policy)) 1575 }
1576 }
1577
1578 if (cpufreq_driver->suspend && cpufreq_driver->suspend(policy))
1575 pr_err("%s: Failed to suspend driver: %p\n", __func__, 1579 pr_err("%s: Failed to suspend driver: %p\n", __func__,
1576 policy); 1580 policy);
1577 } 1581 }
@@ -1596,7 +1600,7 @@ void cpufreq_resume(void)
1596 1600
1597 cpufreq_suspended = false; 1601 cpufreq_suspended = false;
1598 1602
1599 if (!has_target()) 1603 if (!has_target() && !cpufreq_driver->resume)
1600 return; 1604 return;
1601 1605
1602 pr_debug("%s: Resuming Governors\n", __func__); 1606 pr_debug("%s: Resuming Governors\n", __func__);
@@ -1605,7 +1609,7 @@ void cpufreq_resume(void)
1605 if (cpufreq_driver->resume && cpufreq_driver->resume(policy)) { 1609 if (cpufreq_driver->resume && cpufreq_driver->resume(policy)) {
1606 pr_err("%s: Failed to resume driver: %p\n", __func__, 1610 pr_err("%s: Failed to resume driver: %p\n", __func__,
1607 policy); 1611 policy);
1608 } else { 1612 } else if (has_target()) {
1609 down_write(&policy->rwsem); 1613 down_write(&policy->rwsem);
1610 ret = cpufreq_start_governor(policy); 1614 ret = cpufreq_start_governor(policy);
1611 up_write(&policy->rwsem); 1615 up_write(&policy->rwsem);
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index f502d5b90c25..b230ebaae66c 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -453,6 +453,14 @@ static void intel_pstate_hwp_set(const struct cpumask *cpumask)
453 } 453 }
454} 454}
455 455
456static int intel_pstate_hwp_set_policy(struct cpufreq_policy *policy)
457{
458 if (hwp_active)
459 intel_pstate_hwp_set(policy->cpus);
460
461 return 0;
462}
463
456static void intel_pstate_hwp_set_online_cpus(void) 464static void intel_pstate_hwp_set_online_cpus(void)
457{ 465{
458 get_online_cpus(); 466 get_online_cpus();
@@ -1062,8 +1070,9 @@ static inline bool intel_pstate_sample(struct cpudata *cpu, u64 time)
1062 1070
1063static inline int32_t get_avg_frequency(struct cpudata *cpu) 1071static inline int32_t get_avg_frequency(struct cpudata *cpu)
1064{ 1072{
1065 return div64_u64(cpu->pstate.max_pstate_physical * cpu->sample.aperf * 1073 return fp_toint(mul_fp(cpu->sample.core_pct_busy,
1066 cpu->pstate.scaling, cpu->sample.mperf); 1074 int_tofp(cpu->pstate.max_pstate_physical *
1075 cpu->pstate.scaling / 100)));
1067} 1076}
1068 1077
1069static inline int32_t get_target_pstate_use_cpu_load(struct cpudata *cpu) 1078static inline int32_t get_target_pstate_use_cpu_load(struct cpudata *cpu)
@@ -1106,8 +1115,6 @@ static inline int32_t get_target_pstate_use_performance(struct cpudata *cpu)
1106 int32_t core_busy, max_pstate, current_pstate, sample_ratio; 1115 int32_t core_busy, max_pstate, current_pstate, sample_ratio;
1107 u64 duration_ns; 1116 u64 duration_ns;
1108 1117
1109 intel_pstate_calc_busy(cpu);
1110
1111 /* 1118 /*
1112 * core_busy is the ratio of actual performance to max 1119 * core_busy is the ratio of actual performance to max
1113 * max_pstate is the max non turbo pstate available 1120 * max_pstate is the max non turbo pstate available
@@ -1191,8 +1198,11 @@ static void intel_pstate_update_util(struct update_util_data *data, u64 time,
1191 if ((s64)delta_ns >= pid_params.sample_rate_ns) { 1198 if ((s64)delta_ns >= pid_params.sample_rate_ns) {
1192 bool sample_taken = intel_pstate_sample(cpu, time); 1199 bool sample_taken = intel_pstate_sample(cpu, time);
1193 1200
1194 if (sample_taken && !hwp_active) 1201 if (sample_taken) {
1195 intel_pstate_adjust_busy_pstate(cpu); 1202 intel_pstate_calc_busy(cpu);
1203 if (!hwp_active)
1204 intel_pstate_adjust_busy_pstate(cpu);
1205 }
1196 } 1206 }
1197} 1207}
1198 1208
@@ -1346,8 +1356,7 @@ static int intel_pstate_set_policy(struct cpufreq_policy *policy)
1346 out: 1356 out:
1347 intel_pstate_set_update_util_hook(policy->cpu); 1357 intel_pstate_set_update_util_hook(policy->cpu);
1348 1358
1349 if (hwp_active) 1359 intel_pstate_hwp_set_policy(policy);
1350 intel_pstate_hwp_set(policy->cpus);
1351 1360
1352 return 0; 1361 return 0;
1353} 1362}
@@ -1411,6 +1420,7 @@ static struct cpufreq_driver intel_pstate_driver = {
1411 .flags = CPUFREQ_CONST_LOOPS, 1420 .flags = CPUFREQ_CONST_LOOPS,
1412 .verify = intel_pstate_verify_policy, 1421 .verify = intel_pstate_verify_policy,
1413 .setpolicy = intel_pstate_set_policy, 1422 .setpolicy = intel_pstate_set_policy,
1423 .resume = intel_pstate_hwp_set_policy,
1414 .get = intel_pstate_get, 1424 .get = intel_pstate_get,
1415 .init = intel_pstate_cpu_init, 1425 .init = intel_pstate_cpu_init,
1416 .stop_cpu = intel_pstate_stop_cpu, 1426 .stop_cpu = intel_pstate_stop_cpu,
diff --git a/drivers/cpufreq/sti-cpufreq.c b/drivers/cpufreq/sti-cpufreq.c
index a9c659f58974..04042038ec4b 100644
--- a/drivers/cpufreq/sti-cpufreq.c
+++ b/drivers/cpufreq/sti-cpufreq.c
@@ -259,6 +259,10 @@ static int sti_cpufreq_init(void)
259{ 259{
260 int ret; 260 int ret;
261 261
262 if ((!of_machine_is_compatible("st,stih407")) &&
263 (!of_machine_is_compatible("st,stih410")))
264 return -ENODEV;
265
262 ddata.cpu = get_cpu_device(0); 266 ddata.cpu = get_cpu_device(0);
263 if (!ddata.cpu) { 267 if (!ddata.cpu) {
264 dev_err(ddata.cpu, "Failed to get device for CPU0\n"); 268 dev_err(ddata.cpu, "Failed to get device for CPU0\n");
diff --git a/drivers/cpuidle/cpuidle-arm.c b/drivers/cpuidle/cpuidle-arm.c
index 545069d5fdfb..e342565e8715 100644
--- a/drivers/cpuidle/cpuidle-arm.c
+++ b/drivers/cpuidle/cpuidle-arm.c
@@ -50,7 +50,7 @@ static int arm_enter_idle_state(struct cpuidle_device *dev,
50 * call the CPU ops suspend protocol with idle index as a 50 * call the CPU ops suspend protocol with idle index as a
51 * parameter. 51 * parameter.
52 */ 52 */
53 arm_cpuidle_suspend(idx); 53 ret = arm_cpuidle_suspend(idx);
54 54
55 cpu_pm_exit(); 55 cpu_pm_exit();
56 } 56 }
diff --git a/drivers/crypto/qat/qat_common/adf_common_drv.h b/drivers/crypto/qat/qat_common/adf_common_drv.h
index 0e82ce3c383e..976b01e58afb 100644
--- a/drivers/crypto/qat/qat_common/adf_common_drv.h
+++ b/drivers/crypto/qat/qat_common/adf_common_drv.h
@@ -236,6 +236,8 @@ void adf_enable_vf2pf_interrupts(struct adf_accel_dev *accel_dev,
236 uint32_t vf_mask); 236 uint32_t vf_mask);
237void adf_enable_pf2vf_interrupts(struct adf_accel_dev *accel_dev); 237void adf_enable_pf2vf_interrupts(struct adf_accel_dev *accel_dev);
238void adf_disable_pf2vf_interrupts(struct adf_accel_dev *accel_dev); 238void adf_disable_pf2vf_interrupts(struct adf_accel_dev *accel_dev);
239int adf_init_pf_wq(void);
240void adf_exit_pf_wq(void);
239#else 241#else
240static inline int adf_sriov_configure(struct pci_dev *pdev, int numvfs) 242static inline int adf_sriov_configure(struct pci_dev *pdev, int numvfs)
241{ 243{
@@ -253,5 +255,14 @@ static inline void adf_enable_pf2vf_interrupts(struct adf_accel_dev *accel_dev)
253static inline void adf_disable_pf2vf_interrupts(struct adf_accel_dev *accel_dev) 255static inline void adf_disable_pf2vf_interrupts(struct adf_accel_dev *accel_dev)
254{ 256{
255} 257}
258
259static inline int adf_init_pf_wq(void)
260{
261 return 0;
262}
263
264static inline void adf_exit_pf_wq(void)
265{
266}
256#endif 267#endif
257#endif 268#endif
diff --git a/drivers/crypto/qat/qat_common/adf_ctl_drv.c b/drivers/crypto/qat/qat_common/adf_ctl_drv.c
index 5c897e6e7994..3c3f948290ca 100644
--- a/drivers/crypto/qat/qat_common/adf_ctl_drv.c
+++ b/drivers/crypto/qat/qat_common/adf_ctl_drv.c
@@ -462,12 +462,17 @@ static int __init adf_register_ctl_device_driver(void)
462 if (adf_init_aer()) 462 if (adf_init_aer())
463 goto err_aer; 463 goto err_aer;
464 464
465 if (adf_init_pf_wq())
466 goto err_pf_wq;
467
465 if (qat_crypto_register()) 468 if (qat_crypto_register())
466 goto err_crypto_register; 469 goto err_crypto_register;
467 470
468 return 0; 471 return 0;
469 472
470err_crypto_register: 473err_crypto_register:
474 adf_exit_pf_wq();
475err_pf_wq:
471 adf_exit_aer(); 476 adf_exit_aer();
472err_aer: 477err_aer:
473 adf_chr_drv_destroy(); 478 adf_chr_drv_destroy();
@@ -480,6 +485,7 @@ static void __exit adf_unregister_ctl_device_driver(void)
480{ 485{
481 adf_chr_drv_destroy(); 486 adf_chr_drv_destroy();
482 adf_exit_aer(); 487 adf_exit_aer();
488 adf_exit_pf_wq();
483 qat_crypto_unregister(); 489 qat_crypto_unregister();
484 adf_clean_vf_map(false); 490 adf_clean_vf_map(false);
485 mutex_destroy(&adf_ctl_lock); 491 mutex_destroy(&adf_ctl_lock);
diff --git a/drivers/crypto/qat/qat_common/adf_sriov.c b/drivers/crypto/qat/qat_common/adf_sriov.c
index 1117a8b58280..38a0415e767d 100644
--- a/drivers/crypto/qat/qat_common/adf_sriov.c
+++ b/drivers/crypto/qat/qat_common/adf_sriov.c
@@ -119,11 +119,6 @@ static int adf_enable_sriov(struct adf_accel_dev *accel_dev)
119 int i; 119 int i;
120 u32 reg; 120 u32 reg;
121 121
122 /* Workqueue for PF2VF responses */
123 pf2vf_resp_wq = create_workqueue("qat_pf2vf_resp_wq");
124 if (!pf2vf_resp_wq)
125 return -ENOMEM;
126
127 for (i = 0, vf_info = accel_dev->pf.vf_info; i < totalvfs; 122 for (i = 0, vf_info = accel_dev->pf.vf_info; i < totalvfs;
128 i++, vf_info++) { 123 i++, vf_info++) {
129 /* This ptr will be populated when VFs will be created */ 124 /* This ptr will be populated when VFs will be created */
@@ -216,11 +211,6 @@ void adf_disable_sriov(struct adf_accel_dev *accel_dev)
216 211
217 kfree(accel_dev->pf.vf_info); 212 kfree(accel_dev->pf.vf_info);
218 accel_dev->pf.vf_info = NULL; 213 accel_dev->pf.vf_info = NULL;
219
220 if (pf2vf_resp_wq) {
221 destroy_workqueue(pf2vf_resp_wq);
222 pf2vf_resp_wq = NULL;
223 }
224} 214}
225EXPORT_SYMBOL_GPL(adf_disable_sriov); 215EXPORT_SYMBOL_GPL(adf_disable_sriov);
226 216
@@ -304,3 +294,19 @@ int adf_sriov_configure(struct pci_dev *pdev, int numvfs)
304 return numvfs; 294 return numvfs;
305} 295}
306EXPORT_SYMBOL_GPL(adf_sriov_configure); 296EXPORT_SYMBOL_GPL(adf_sriov_configure);
297
298int __init adf_init_pf_wq(void)
299{
300 /* Workqueue for PF2VF responses */
301 pf2vf_resp_wq = create_workqueue("qat_pf2vf_resp_wq");
302
303 return !pf2vf_resp_wq ? -ENOMEM : 0;
304}
305
306void adf_exit_pf_wq(void)
307{
308 if (pf2vf_resp_wq) {
309 destroy_workqueue(pf2vf_resp_wq);
310 pf2vf_resp_wq = NULL;
311 }
312}
diff --git a/drivers/firmware/qemu_fw_cfg.c b/drivers/firmware/qemu_fw_cfg.c
index 815c4a5cae54..1b95475b6aef 100644
--- a/drivers/firmware/qemu_fw_cfg.c
+++ b/drivers/firmware/qemu_fw_cfg.c
@@ -77,7 +77,7 @@ static inline u16 fw_cfg_sel_endianness(u16 key)
77static inline void fw_cfg_read_blob(u16 key, 77static inline void fw_cfg_read_blob(u16 key,
78 void *buf, loff_t pos, size_t count) 78 void *buf, loff_t pos, size_t count)
79{ 79{
80 u32 glk; 80 u32 glk = -1U;
81 acpi_status status; 81 acpi_status status;
82 82
83 /* If we have ACPI, ensure mutual exclusion against any potential 83 /* If we have ACPI, ensure mutual exclusion against any potential
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index e557fc1f17c8..7ecea83ce453 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -541,6 +541,7 @@ int amdgpu_bo_set_metadata (struct amdgpu_bo *bo, void *metadata,
541 if (!metadata_size) { 541 if (!metadata_size) {
542 if (bo->metadata_size) { 542 if (bo->metadata_size) {
543 kfree(bo->metadata); 543 kfree(bo->metadata);
544 bo->metadata = NULL;
544 bo->metadata_size = 0; 545 bo->metadata_size = 0;
545 } 546 }
546 return 0; 547 return 0;
diff --git a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c
index 1e0bba29e167..1cd6de575305 100644
--- a/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c
+++ b/drivers/gpu/drm/amd/amdgpu/atombios_encoders.c
@@ -298,6 +298,10 @@ bool amdgpu_atombios_encoder_mode_fixup(struct drm_encoder *encoder,
298 && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2))) 298 && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
299 adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2; 299 adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
300 300
301 /* vertical FP must be at least 1 */
302 if (mode->crtc_vsync_start == mode->crtc_vdisplay)
303 adjusted_mode->crtc_vsync_start++;
304
301 /* get the native mode for scaling */ 305 /* get the native mode for scaling */
302 if (amdgpu_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT)) 306 if (amdgpu_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT))
303 amdgpu_panel_mode_fixup(encoder, adjusted_mode); 307 amdgpu_panel_mode_fixup(encoder, adjusted_mode);
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 30798cbc6fc0..6d2fb3f4ac62 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -792,7 +792,7 @@ static int i915_drm_resume(struct drm_device *dev)
792static int i915_drm_resume_early(struct drm_device *dev) 792static int i915_drm_resume_early(struct drm_device *dev)
793{ 793{
794 struct drm_i915_private *dev_priv = dev->dev_private; 794 struct drm_i915_private *dev_priv = dev->dev_private;
795 int ret = 0; 795 int ret;
796 796
797 /* 797 /*
798 * We have a resume ordering issue with the snd-hda driver also 798 * We have a resume ordering issue with the snd-hda driver also
@@ -803,6 +803,36 @@ static int i915_drm_resume_early(struct drm_device *dev)
803 * FIXME: This should be solved with a special hdmi sink device or 803 * FIXME: This should be solved with a special hdmi sink device or
804 * similar so that power domains can be employed. 804 * similar so that power domains can be employed.
805 */ 805 */
806
807 /*
808 * Note that we need to set the power state explicitly, since we
809 * powered off the device during freeze and the PCI core won't power
810 * it back up for us during thaw. Powering off the device during
811 * freeze is not a hard requirement though, and during the
812 * suspend/resume phases the PCI core makes sure we get here with the
813 * device powered on. So in case we change our freeze logic and keep
814 * the device powered we can also remove the following set power state
815 * call.
816 */
817 ret = pci_set_power_state(dev->pdev, PCI_D0);
818 if (ret) {
819 DRM_ERROR("failed to set PCI D0 power state (%d)\n", ret);
820 goto out;
821 }
822
823 /*
824 * Note that pci_enable_device() first enables any parent bridge
825 * device and only then sets the power state for this device. The
826 * bridge enabling is a nop though, since bridge devices are resumed
827 * first. The order of enabling power and enabling the device is
828 * imposed by the PCI core as described above, so here we preserve the
829 * same order for the freeze/thaw phases.
830 *
831 * TODO: eventually we should remove pci_disable_device() /
832 * pci_enable_enable_device() from suspend/resume. Due to how they
833 * depend on the device enable refcount we can't anyway depend on them
834 * disabling/enabling the device.
835 */
806 if (pci_enable_device(dev->pdev)) { 836 if (pci_enable_device(dev->pdev)) {
807 ret = -EIO; 837 ret = -EIO;
808 goto out; 838 goto out;
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index f76cbf3e5d1e..fffdac801d3b 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -2907,7 +2907,14 @@ enum skl_disp_power_wells {
2907#define GEN6_RP_STATE_CAP _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5998) 2907#define GEN6_RP_STATE_CAP _MMIO(MCHBAR_MIRROR_BASE_SNB + 0x5998)
2908#define BXT_RP_STATE_CAP _MMIO(0x138170) 2908#define BXT_RP_STATE_CAP _MMIO(0x138170)
2909 2909
2910#define INTERVAL_1_28_US(us) (((us) * 100) >> 7) 2910/*
2911 * Make these a multiple of magic 25 to avoid SNB (eg. Dell XPS
2912 * 8300) freezing up around GPU hangs. Looks as if even
2913 * scheduling/timer interrupts start misbehaving if the RPS
2914 * EI/thresholds are "bad", leading to a very sluggish or even
2915 * frozen machine.
2916 */
2917#define INTERVAL_1_28_US(us) roundup(((us) * 100) >> 7, 25)
2911#define INTERVAL_1_33_US(us) (((us) * 3) >> 2) 2918#define INTERVAL_1_33_US(us) (((us) * 3) >> 2)
2912#define INTERVAL_0_833_US(us) (((us) * 6) / 5) 2919#define INTERVAL_0_833_US(us) (((us) * 6) / 5)
2913#define GT_INTERVAL_FROM_US(dev_priv, us) (IS_GEN9(dev_priv) ? \ 2920#define GT_INTERVAL_FROM_US(dev_priv, us) (IS_GEN9(dev_priv) ? \
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 62de9f4bce09..3b57bf06abe8 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -443,9 +443,17 @@ void intel_prepare_ddi_buffer(struct intel_encoder *encoder)
443 } else if (IS_BROADWELL(dev_priv)) { 443 } else if (IS_BROADWELL(dev_priv)) {
444 ddi_translations_fdi = bdw_ddi_translations_fdi; 444 ddi_translations_fdi = bdw_ddi_translations_fdi;
445 ddi_translations_dp = bdw_ddi_translations_dp; 445 ddi_translations_dp = bdw_ddi_translations_dp;
446 ddi_translations_edp = bdw_ddi_translations_edp; 446
447 if (dev_priv->edp_low_vswing) {
448 ddi_translations_edp = bdw_ddi_translations_edp;
449 n_edp_entries = ARRAY_SIZE(bdw_ddi_translations_edp);
450 } else {
451 ddi_translations_edp = bdw_ddi_translations_dp;
452 n_edp_entries = ARRAY_SIZE(bdw_ddi_translations_dp);
453 }
454
447 ddi_translations_hdmi = bdw_ddi_translations_hdmi; 455 ddi_translations_hdmi = bdw_ddi_translations_hdmi;
448 n_edp_entries = ARRAY_SIZE(bdw_ddi_translations_edp); 456
449 n_dp_entries = ARRAY_SIZE(bdw_ddi_translations_dp); 457 n_dp_entries = ARRAY_SIZE(bdw_ddi_translations_dp);
450 n_hdmi_entries = ARRAY_SIZE(bdw_ddi_translations_hdmi); 458 n_hdmi_entries = ARRAY_SIZE(bdw_ddi_translations_hdmi);
451 hdmi_default_entry = 7; 459 hdmi_default_entry = 7;
@@ -3201,12 +3209,6 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
3201 intel_ddi_clock_get(encoder, pipe_config); 3209 intel_ddi_clock_get(encoder, pipe_config);
3202} 3210}
3203 3211
3204static void intel_ddi_destroy(struct drm_encoder *encoder)
3205{
3206 /* HDMI has nothing special to destroy, so we can go with this. */
3207 intel_dp_encoder_destroy(encoder);
3208}
3209
3210static bool intel_ddi_compute_config(struct intel_encoder *encoder, 3212static bool intel_ddi_compute_config(struct intel_encoder *encoder,
3211 struct intel_crtc_state *pipe_config) 3213 struct intel_crtc_state *pipe_config)
3212{ 3214{
@@ -3225,7 +3227,8 @@ static bool intel_ddi_compute_config(struct intel_encoder *encoder,
3225} 3227}
3226 3228
3227static const struct drm_encoder_funcs intel_ddi_funcs = { 3229static const struct drm_encoder_funcs intel_ddi_funcs = {
3228 .destroy = intel_ddi_destroy, 3230 .reset = intel_dp_encoder_reset,
3231 .destroy = intel_dp_encoder_destroy,
3229}; 3232};
3230 3233
3231static struct intel_connector * 3234static struct intel_connector *
@@ -3324,6 +3327,7 @@ void intel_ddi_init(struct drm_device *dev, enum port port)
3324 intel_encoder->post_disable = intel_ddi_post_disable; 3327 intel_encoder->post_disable = intel_ddi_post_disable;
3325 intel_encoder->get_hw_state = intel_ddi_get_hw_state; 3328 intel_encoder->get_hw_state = intel_ddi_get_hw_state;
3326 intel_encoder->get_config = intel_ddi_get_config; 3329 intel_encoder->get_config = intel_ddi_get_config;
3330 intel_encoder->suspend = intel_dp_encoder_suspend;
3327 3331
3328 intel_dig_port->port = port; 3332 intel_dig_port->port = port;
3329 intel_dig_port->saved_port_bits = I915_READ(DDI_BUF_CTL(port)) & 3333 intel_dig_port->saved_port_bits = I915_READ(DDI_BUF_CTL(port)) &
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 6e0d8283daa6..182f84937345 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -13351,6 +13351,9 @@ static int intel_atomic_prepare_commit(struct drm_device *dev,
13351 } 13351 }
13352 13352
13353 for_each_crtc_in_state(state, crtc, crtc_state, i) { 13353 for_each_crtc_in_state(state, crtc, crtc_state, i) {
13354 if (state->legacy_cursor_update)
13355 continue;
13356
13354 ret = intel_crtc_wait_for_pending_flips(crtc); 13357 ret = intel_crtc_wait_for_pending_flips(crtc);
13355 if (ret) 13358 if (ret)
13356 return ret; 13359 return ret;
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index f069a82deb57..412a34c39522 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -4898,7 +4898,7 @@ void intel_dp_encoder_destroy(struct drm_encoder *encoder)
4898 kfree(intel_dig_port); 4898 kfree(intel_dig_port);
4899} 4899}
4900 4900
4901static void intel_dp_encoder_suspend(struct intel_encoder *intel_encoder) 4901void intel_dp_encoder_suspend(struct intel_encoder *intel_encoder)
4902{ 4902{
4903 struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base); 4903 struct intel_dp *intel_dp = enc_to_intel_dp(&intel_encoder->base);
4904 4904
@@ -4940,7 +4940,7 @@ static void intel_edp_panel_vdd_sanitize(struct intel_dp *intel_dp)
4940 edp_panel_vdd_schedule_off(intel_dp); 4940 edp_panel_vdd_schedule_off(intel_dp);
4941} 4941}
4942 4942
4943static void intel_dp_encoder_reset(struct drm_encoder *encoder) 4943void intel_dp_encoder_reset(struct drm_encoder *encoder)
4944{ 4944{
4945 struct intel_dp *intel_dp; 4945 struct intel_dp *intel_dp;
4946 4946
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 4c027d69fac9..7d3af3a72abe 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1238,6 +1238,8 @@ void intel_dp_set_link_params(struct intel_dp *intel_dp,
1238void intel_dp_start_link_train(struct intel_dp *intel_dp); 1238void intel_dp_start_link_train(struct intel_dp *intel_dp);
1239void intel_dp_stop_link_train(struct intel_dp *intel_dp); 1239void intel_dp_stop_link_train(struct intel_dp *intel_dp);
1240void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode); 1240void intel_dp_sink_dpms(struct intel_dp *intel_dp, int mode);
1241void intel_dp_encoder_reset(struct drm_encoder *encoder);
1242void intel_dp_encoder_suspend(struct intel_encoder *intel_encoder);
1241void intel_dp_encoder_destroy(struct drm_encoder *encoder); 1243void intel_dp_encoder_destroy(struct drm_encoder *encoder);
1242int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc); 1244int intel_dp_sink_crc(struct intel_dp *intel_dp, u8 *crc);
1243bool intel_dp_compute_config(struct intel_encoder *encoder, 1245bool intel_dp_compute_config(struct intel_encoder *encoder,
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index a0d8daed2470..1ab6f687f640 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1415,8 +1415,16 @@ intel_hdmi_detect(struct drm_connector *connector, bool force)
1415 hdmi_to_dig_port(intel_hdmi)); 1415 hdmi_to_dig_port(intel_hdmi));
1416 } 1416 }
1417 1417
1418 if (!live_status) 1418 if (!live_status) {
1419 DRM_DEBUG_KMS("Live status not up!"); 1419 DRM_DEBUG_KMS("HDMI live status down\n");
1420 /*
1421 * Live status register is not reliable on all intel platforms.
1422 * So consider live_status only for certain platforms, for
1423 * others, read EDID to determine presence of sink.
1424 */
1425 if (INTEL_INFO(dev_priv)->gen < 7 || IS_IVYBRIDGE(dev_priv))
1426 live_status = true;
1427 }
1420 1428
1421 intel_hdmi_unset_edid(connector); 1429 intel_hdmi_unset_edid(connector);
1422 1430
diff --git a/drivers/gpu/drm/radeon/atombios_encoders.c b/drivers/gpu/drm/radeon/atombios_encoders.c
index edd05cdb0cd8..587cae4e73c9 100644
--- a/drivers/gpu/drm/radeon/atombios_encoders.c
+++ b/drivers/gpu/drm/radeon/atombios_encoders.c
@@ -310,6 +310,10 @@ static bool radeon_atom_mode_fixup(struct drm_encoder *encoder,
310 && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2))) 310 && (mode->crtc_vsync_start < (mode->crtc_vdisplay + 2)))
311 adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2; 311 adjusted_mode->crtc_vsync_start = adjusted_mode->crtc_vdisplay + 2;
312 312
313 /* vertical FP must be at least 1 */
314 if (mode->crtc_vsync_start == mode->crtc_vdisplay)
315 adjusted_mode->crtc_vsync_start++;
316
313 /* get the native mode for scaling */ 317 /* get the native mode for scaling */
314 if (radeon_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT)) { 318 if (radeon_encoder->active_device & (ATOM_DEVICE_LCD_SUPPORT)) {
315 radeon_panel_mode_fixup(encoder, adjusted_mode); 319 radeon_panel_mode_fixup(encoder, adjusted_mode);
diff --git a/drivers/gpu/ipu-v3/ipu-common.c b/drivers/gpu/ipu-v3/ipu-common.c
index e00db3f510dd..abb98c77bad2 100644
--- a/drivers/gpu/ipu-v3/ipu-common.c
+++ b/drivers/gpu/ipu-v3/ipu-common.c
@@ -1068,7 +1068,6 @@ static int ipu_add_client_devices(struct ipu_soc *ipu, unsigned long ipu_base)
1068 goto err_register; 1068 goto err_register;
1069 } 1069 }
1070 1070
1071 pdev->dev.of_node = of_node;
1072 pdev->dev.parent = dev; 1071 pdev->dev.parent = dev;
1073 1072
1074 ret = platform_device_add_data(pdev, &reg->pdata, 1073 ret = platform_device_add_data(pdev, &reg->pdata,
@@ -1079,6 +1078,12 @@ static int ipu_add_client_devices(struct ipu_soc *ipu, unsigned long ipu_base)
1079 platform_device_put(pdev); 1078 platform_device_put(pdev);
1080 goto err_register; 1079 goto err_register;
1081 } 1080 }
1081
1082 /*
1083 * Set of_node only after calling platform_device_add. Otherwise
1084 * the platform:imx-ipuv3-crtc modalias won't be used.
1085 */
1086 pdev->dev.of_node = of_node;
1082 } 1087 }
1083 1088
1084 return 0; 1089 return 0;
diff --git a/drivers/hv/ring_buffer.c b/drivers/hv/ring_buffer.c
index 5613e2b5cff7..a40a73a7b71d 100644
--- a/drivers/hv/ring_buffer.c
+++ b/drivers/hv/ring_buffer.c
@@ -103,15 +103,29 @@ static bool hv_need_to_signal(u32 old_write, struct hv_ring_buffer_info *rbi)
103 * there is room for the producer to send the pending packet. 103 * there is room for the producer to send the pending packet.
104 */ 104 */
105 105
106static bool hv_need_to_signal_on_read(u32 prev_write_sz, 106static bool hv_need_to_signal_on_read(struct hv_ring_buffer_info *rbi)
107 struct hv_ring_buffer_info *rbi)
108{ 107{
109 u32 cur_write_sz; 108 u32 cur_write_sz;
110 u32 r_size; 109 u32 r_size;
111 u32 write_loc = rbi->ring_buffer->write_index; 110 u32 write_loc;
112 u32 read_loc = rbi->ring_buffer->read_index; 111 u32 read_loc = rbi->ring_buffer->read_index;
113 u32 pending_sz = rbi->ring_buffer->pending_send_sz; 112 u32 pending_sz;
114 113
114 /*
115 * Issue a full memory barrier before making the signaling decision.
116 * Here is the reason for having this barrier:
117 * If the reading of the pend_sz (in this function)
118 * were to be reordered and read before we commit the new read
119 * index (in the calling function) we could
120 * have a problem. If the host were to set the pending_sz after we
121 * have sampled pending_sz and go to sleep before we commit the
122 * read index, we could miss sending the interrupt. Issue a full
123 * memory barrier to address this.
124 */
125 mb();
126
127 pending_sz = rbi->ring_buffer->pending_send_sz;
128 write_loc = rbi->ring_buffer->write_index;
115 /* If the other end is not blocked on write don't bother. */ 129 /* If the other end is not blocked on write don't bother. */
116 if (pending_sz == 0) 130 if (pending_sz == 0)
117 return false; 131 return false;
@@ -120,7 +134,7 @@ static bool hv_need_to_signal_on_read(u32 prev_write_sz,
120 cur_write_sz = write_loc >= read_loc ? r_size - (write_loc - read_loc) : 134 cur_write_sz = write_loc >= read_loc ? r_size - (write_loc - read_loc) :
121 read_loc - write_loc; 135 read_loc - write_loc;
122 136
123 if ((prev_write_sz < pending_sz) && (cur_write_sz >= pending_sz)) 137 if (cur_write_sz >= pending_sz)
124 return true; 138 return true;
125 139
126 return false; 140 return false;
@@ -455,7 +469,7 @@ int hv_ringbuffer_read(struct hv_ring_buffer_info *inring_info,
455 /* Update the read index */ 469 /* Update the read index */
456 hv_set_next_read_location(inring_info, next_read_location); 470 hv_set_next_read_location(inring_info, next_read_location);
457 471
458 *signal = hv_need_to_signal_on_read(bytes_avail_towrite, inring_info); 472 *signal = hv_need_to_signal_on_read(inring_info);
459 473
460 return ret; 474 return ret;
461} 475}
diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c
index dbee13ad33a3..2e154cb51685 100644
--- a/drivers/iio/adc/at91-sama5d2_adc.c
+++ b/drivers/iio/adc/at91-sama5d2_adc.c
@@ -451,6 +451,8 @@ static int at91_adc_probe(struct platform_device *pdev)
451 if (ret) 451 if (ret)
452 goto vref_disable; 452 goto vref_disable;
453 453
454 platform_set_drvdata(pdev, indio_dev);
455
454 ret = iio_device_register(indio_dev); 456 ret = iio_device_register(indio_dev);
455 if (ret < 0) 457 if (ret < 0)
456 goto per_clk_disable_unprepare; 458 goto per_clk_disable_unprepare;
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
index f581256d9d4c..5ee4e0dc093e 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_i2c.c
@@ -104,6 +104,19 @@ static int inv_mpu6050_deselect_bypass(struct i2c_adapter *adap,
104 return 0; 104 return 0;
105} 105}
106 106
107static const char *inv_mpu_match_acpi_device(struct device *dev, int *chip_id)
108{
109 const struct acpi_device_id *id;
110
111 id = acpi_match_device(dev->driver->acpi_match_table, dev);
112 if (!id)
113 return NULL;
114
115 *chip_id = (int)id->driver_data;
116
117 return dev_name(dev);
118}
119
107/** 120/**
108 * inv_mpu_probe() - probe function. 121 * inv_mpu_probe() - probe function.
109 * @client: i2c client. 122 * @client: i2c client.
@@ -115,14 +128,25 @@ static int inv_mpu_probe(struct i2c_client *client,
115 const struct i2c_device_id *id) 128 const struct i2c_device_id *id)
116{ 129{
117 struct inv_mpu6050_state *st; 130 struct inv_mpu6050_state *st;
118 int result; 131 int result, chip_type;
119 const char *name = id ? id->name : NULL;
120 struct regmap *regmap; 132 struct regmap *regmap;
133 const char *name;
121 134
122 if (!i2c_check_functionality(client->adapter, 135 if (!i2c_check_functionality(client->adapter,
123 I2C_FUNC_SMBUS_I2C_BLOCK)) 136 I2C_FUNC_SMBUS_I2C_BLOCK))
124 return -EOPNOTSUPP; 137 return -EOPNOTSUPP;
125 138
139 if (id) {
140 chip_type = (int)id->driver_data;
141 name = id->name;
142 } else if (ACPI_HANDLE(&client->dev)) {
143 name = inv_mpu_match_acpi_device(&client->dev, &chip_type);
144 if (!name)
145 return -ENODEV;
146 } else {
147 return -ENOSYS;
148 }
149
126 regmap = devm_regmap_init_i2c(client, &inv_mpu_regmap_config); 150 regmap = devm_regmap_init_i2c(client, &inv_mpu_regmap_config);
127 if (IS_ERR(regmap)) { 151 if (IS_ERR(regmap)) {
128 dev_err(&client->dev, "Failed to register i2c regmap %d\n", 152 dev_err(&client->dev, "Failed to register i2c regmap %d\n",
@@ -131,7 +155,7 @@ static int inv_mpu_probe(struct i2c_client *client,
131 } 155 }
132 156
133 result = inv_mpu_core_probe(regmap, client->irq, name, 157 result = inv_mpu_core_probe(regmap, client->irq, name,
134 NULL, id->driver_data); 158 NULL, chip_type);
135 if (result < 0) 159 if (result < 0)
136 return result; 160 return result;
137 161
diff --git a/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c b/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
index dea6c4361de0..7bcb8d839f05 100644
--- a/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
+++ b/drivers/iio/imu/inv_mpu6050/inv_mpu_spi.c
@@ -46,6 +46,7 @@ static int inv_mpu_probe(struct spi_device *spi)
46 struct regmap *regmap; 46 struct regmap *regmap;
47 const struct spi_device_id *id = spi_get_device_id(spi); 47 const struct spi_device_id *id = spi_get_device_id(spi);
48 const char *name = id ? id->name : NULL; 48 const char *name = id ? id->name : NULL;
49 const int chip_type = id ? id->driver_data : 0;
49 50
50 regmap = devm_regmap_init_spi(spi, &inv_mpu_regmap_config); 51 regmap = devm_regmap_init_spi(spi, &inv_mpu_regmap_config);
51 if (IS_ERR(regmap)) { 52 if (IS_ERR(regmap)) {
@@ -55,7 +56,7 @@ static int inv_mpu_probe(struct spi_device *spi)
55 } 56 }
56 57
57 return inv_mpu_core_probe(regmap, spi->irq, name, 58 return inv_mpu_core_probe(regmap, spi->irq, name,
58 inv_mpu_i2c_disable, id->driver_data); 59 inv_mpu_i2c_disable, chip_type);
59} 60}
60 61
61static int inv_mpu_remove(struct spi_device *spi) 62static int inv_mpu_remove(struct spi_device *spi)
diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c
index 9c5c9ef3f1da..0e931a9a1669 100644
--- a/drivers/iio/magnetometer/ak8975.c
+++ b/drivers/iio/magnetometer/ak8975.c
@@ -462,6 +462,8 @@ static int ak8975_setup_irq(struct ak8975_data *data)
462 int rc; 462 int rc;
463 int irq; 463 int irq;
464 464
465 init_waitqueue_head(&data->data_ready_queue);
466 clear_bit(0, &data->flags);
465 if (client->irq) 467 if (client->irq)
466 irq = client->irq; 468 irq = client->irq;
467 else 469 else
@@ -477,8 +479,6 @@ static int ak8975_setup_irq(struct ak8975_data *data)
477 return rc; 479 return rc;
478 } 480 }
479 481
480 init_waitqueue_head(&data->data_ready_queue);
481 clear_bit(0, &data->flags);
482 data->eoc_irq = irq; 482 data->eoc_irq = irq;
483 483
484 return rc; 484 return rc;
@@ -732,7 +732,7 @@ static int ak8975_probe(struct i2c_client *client,
732 int eoc_gpio; 732 int eoc_gpio;
733 int err; 733 int err;
734 const char *name = NULL; 734 const char *name = NULL;
735 enum asahi_compass_chipset chipset; 735 enum asahi_compass_chipset chipset = AK_MAX_TYPE;
736 736
737 /* Grab and set up the supplied GPIO. */ 737 /* Grab and set up the supplied GPIO. */
738 if (client->dev.platform_data) 738 if (client->dev.platform_data)
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c
index 80b6bedc172f..64b3d11dcf1e 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
@@ -612,6 +612,7 @@ iscsi_iser_session_create(struct iscsi_endpoint *ep,
612 struct Scsi_Host *shost; 612 struct Scsi_Host *shost;
613 struct iser_conn *iser_conn = NULL; 613 struct iser_conn *iser_conn = NULL;
614 struct ib_conn *ib_conn; 614 struct ib_conn *ib_conn;
615 u32 max_fr_sectors;
615 u16 max_cmds; 616 u16 max_cmds;
616 617
617 shost = iscsi_host_alloc(&iscsi_iser_sht, 0, 0); 618 shost = iscsi_host_alloc(&iscsi_iser_sht, 0, 0);
@@ -632,7 +633,6 @@ iscsi_iser_session_create(struct iscsi_endpoint *ep,
632 iser_conn = ep->dd_data; 633 iser_conn = ep->dd_data;
633 max_cmds = iser_conn->max_cmds; 634 max_cmds = iser_conn->max_cmds;
634 shost->sg_tablesize = iser_conn->scsi_sg_tablesize; 635 shost->sg_tablesize = iser_conn->scsi_sg_tablesize;
635 shost->max_sectors = iser_conn->scsi_max_sectors;
636 636
637 mutex_lock(&iser_conn->state_mutex); 637 mutex_lock(&iser_conn->state_mutex);
638 if (iser_conn->state != ISER_CONN_UP) { 638 if (iser_conn->state != ISER_CONN_UP) {
@@ -657,8 +657,6 @@ iscsi_iser_session_create(struct iscsi_endpoint *ep,
657 */ 657 */
658 shost->sg_tablesize = min_t(unsigned short, shost->sg_tablesize, 658 shost->sg_tablesize = min_t(unsigned short, shost->sg_tablesize,
659 ib_conn->device->ib_device->attrs.max_fast_reg_page_list_len); 659 ib_conn->device->ib_device->attrs.max_fast_reg_page_list_len);
660 shost->max_sectors = min_t(unsigned int,
661 1024, (shost->sg_tablesize * PAGE_SIZE) >> 9);
662 660
663 if (iscsi_host_add(shost, 661 if (iscsi_host_add(shost,
664 ib_conn->device->ib_device->dma_device)) { 662 ib_conn->device->ib_device->dma_device)) {
@@ -672,6 +670,15 @@ iscsi_iser_session_create(struct iscsi_endpoint *ep,
672 goto free_host; 670 goto free_host;
673 } 671 }
674 672
673 /*
674 * FRs or FMRs can only map up to a (device) page per entry, but if the
675 * first entry is misaligned we'll end up using using two entries
676 * (head and tail) for a single page worth data, so we have to drop
677 * one segment from the calculation.
678 */
679 max_fr_sectors = ((shost->sg_tablesize - 1) * PAGE_SIZE) >> 9;
680 shost->max_sectors = min(iser_max_sectors, max_fr_sectors);
681
675 if (cmds_max > max_cmds) { 682 if (cmds_max > max_cmds) {
676 iser_info("cmds_max changed from %u to %u\n", 683 iser_info("cmds_max changed from %u to %u\n",
677 cmds_max, max_cmds); 684 cmds_max, max_cmds);
@@ -989,7 +996,6 @@ static struct scsi_host_template iscsi_iser_sht = {
989 .queuecommand = iscsi_queuecommand, 996 .queuecommand = iscsi_queuecommand,
990 .change_queue_depth = scsi_change_queue_depth, 997 .change_queue_depth = scsi_change_queue_depth,
991 .sg_tablesize = ISCSI_ISER_DEF_SG_TABLESIZE, 998 .sg_tablesize = ISCSI_ISER_DEF_SG_TABLESIZE,
992 .max_sectors = ISER_DEF_MAX_SECTORS,
993 .cmd_per_lun = ISER_DEF_CMD_PER_LUN, 999 .cmd_per_lun = ISER_DEF_CMD_PER_LUN,
994 .eh_abort_handler = iscsi_eh_abort, 1000 .eh_abort_handler = iscsi_eh_abort,
995 .eh_device_reset_handler= iscsi_eh_device_reset, 1001 .eh_device_reset_handler= iscsi_eh_device_reset,
diff --git a/drivers/input/misc/twl6040-vibra.c b/drivers/input/misc/twl6040-vibra.c
index 53e33fab3f7a..df3581f60628 100644
--- a/drivers/input/misc/twl6040-vibra.c
+++ b/drivers/input/misc/twl6040-vibra.c
@@ -181,6 +181,14 @@ static void vibra_play_work(struct work_struct *work)
181{ 181{
182 struct vibra_info *info = container_of(work, 182 struct vibra_info *info = container_of(work,
183 struct vibra_info, play_work); 183 struct vibra_info, play_work);
184 int ret;
185
186 /* Do not allow effect, while the routing is set to use audio */
187 ret = twl6040_get_vibralr_status(info->twl6040);
188 if (ret & TWL6040_VIBSEL) {
189 dev_info(info->dev, "Vibra is configured for audio\n");
190 return;
191 }
184 192
185 mutex_lock(&info->mutex); 193 mutex_lock(&info->mutex);
186 194
@@ -199,14 +207,6 @@ static int vibra_play(struct input_dev *input, void *data,
199 struct ff_effect *effect) 207 struct ff_effect *effect)
200{ 208{
201 struct vibra_info *info = input_get_drvdata(input); 209 struct vibra_info *info = input_get_drvdata(input);
202 int ret;
203
204 /* Do not allow effect, while the routing is set to use audio */
205 ret = twl6040_get_vibralr_status(info->twl6040);
206 if (ret & TWL6040_VIBSEL) {
207 dev_info(&input->dev, "Vibra is configured for audio\n");
208 return -EBUSY;
209 }
210 210
211 info->weak_speed = effect->u.rumble.weak_magnitude; 211 info->weak_speed = effect->u.rumble.weak_magnitude;
212 info->strong_speed = effect->u.rumble.strong_magnitude; 212 info->strong_speed = effect->u.rumble.strong_magnitude;
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index 2160512e861a..5af7907d0af4 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -1093,6 +1093,19 @@ static int mxt_t6_command(struct mxt_data *data, u16 cmd_offset,
1093 return 0; 1093 return 0;
1094} 1094}
1095 1095
1096static int mxt_acquire_irq(struct mxt_data *data)
1097{
1098 int error;
1099
1100 enable_irq(data->irq);
1101
1102 error = mxt_process_messages_until_invalid(data);
1103 if (error)
1104 return error;
1105
1106 return 0;
1107}
1108
1096static int mxt_soft_reset(struct mxt_data *data) 1109static int mxt_soft_reset(struct mxt_data *data)
1097{ 1110{
1098 struct device *dev = &data->client->dev; 1111 struct device *dev = &data->client->dev;
@@ -1111,7 +1124,7 @@ static int mxt_soft_reset(struct mxt_data *data)
1111 /* Ignore CHG line for 100ms after reset */ 1124 /* Ignore CHG line for 100ms after reset */
1112 msleep(100); 1125 msleep(100);
1113 1126
1114 enable_irq(data->irq); 1127 mxt_acquire_irq(data);
1115 1128
1116 ret = mxt_wait_for_completion(data, &data->reset_completion, 1129 ret = mxt_wait_for_completion(data, &data->reset_completion,
1117 MXT_RESET_TIMEOUT); 1130 MXT_RESET_TIMEOUT);
@@ -1466,19 +1479,6 @@ release_mem:
1466 return ret; 1479 return ret;
1467} 1480}
1468 1481
1469static int mxt_acquire_irq(struct mxt_data *data)
1470{
1471 int error;
1472
1473 enable_irq(data->irq);
1474
1475 error = mxt_process_messages_until_invalid(data);
1476 if (error)
1477 return error;
1478
1479 return 0;
1480}
1481
1482static int mxt_get_info(struct mxt_data *data) 1482static int mxt_get_info(struct mxt_data *data)
1483{ 1483{
1484 struct i2c_client *client = data->client; 1484 struct i2c_client *client = data->client;
diff --git a/drivers/input/touchscreen/zforce_ts.c b/drivers/input/touchscreen/zforce_ts.c
index 9bbadaaf6bc3..7b3845aa5983 100644
--- a/drivers/input/touchscreen/zforce_ts.c
+++ b/drivers/input/touchscreen/zforce_ts.c
@@ -370,8 +370,8 @@ static int zforce_touch_event(struct zforce_ts *ts, u8 *payload)
370 point.coord_x = point.coord_y = 0; 370 point.coord_x = point.coord_y = 0;
371 } 371 }
372 372
373 point.state = payload[9 * i + 5] & 0x03; 373 point.state = payload[9 * i + 5] & 0x0f;
374 point.id = (payload[9 * i + 5] & 0xfc) >> 2; 374 point.id = (payload[9 * i + 5] & 0xf0) >> 4;
375 375
376 /* determine touch major, minor and orientation */ 376 /* determine touch major, minor and orientation */
377 point.area_major = max(payload[9 * i + 6], 377 point.area_major = max(payload[9 * i + 6],
diff --git a/drivers/media/media-device.c b/drivers/media/media-device.c
index 6e43c95629ea..3cfd7af8c5ca 100644
--- a/drivers/media/media-device.c
+++ b/drivers/media/media-device.c
@@ -846,11 +846,11 @@ struct media_device *media_device_find_devres(struct device *dev)
846} 846}
847EXPORT_SYMBOL_GPL(media_device_find_devres); 847EXPORT_SYMBOL_GPL(media_device_find_devres);
848 848
849#if IS_ENABLED(CONFIG_PCI)
849void media_device_pci_init(struct media_device *mdev, 850void media_device_pci_init(struct media_device *mdev,
850 struct pci_dev *pci_dev, 851 struct pci_dev *pci_dev,
851 const char *name) 852 const char *name)
852{ 853{
853#ifdef CONFIG_PCI
854 mdev->dev = &pci_dev->dev; 854 mdev->dev = &pci_dev->dev;
855 855
856 if (name) 856 if (name)
@@ -866,16 +866,16 @@ void media_device_pci_init(struct media_device *mdev,
866 mdev->driver_version = LINUX_VERSION_CODE; 866 mdev->driver_version = LINUX_VERSION_CODE;
867 867
868 media_device_init(mdev); 868 media_device_init(mdev);
869#endif
870} 869}
871EXPORT_SYMBOL_GPL(media_device_pci_init); 870EXPORT_SYMBOL_GPL(media_device_pci_init);
871#endif
872 872
873#if IS_ENABLED(CONFIG_USB)
873void __media_device_usb_init(struct media_device *mdev, 874void __media_device_usb_init(struct media_device *mdev,
874 struct usb_device *udev, 875 struct usb_device *udev,
875 const char *board_name, 876 const char *board_name,
876 const char *driver_name) 877 const char *driver_name)
877{ 878{
878#ifdef CONFIG_USB
879 mdev->dev = &udev->dev; 879 mdev->dev = &udev->dev;
880 880
881 if (driver_name) 881 if (driver_name)
@@ -895,9 +895,9 @@ void __media_device_usb_init(struct media_device *mdev,
895 mdev->driver_version = LINUX_VERSION_CODE; 895 mdev->driver_version = LINUX_VERSION_CODE;
896 896
897 media_device_init(mdev); 897 media_device_init(mdev);
898#endif
899} 898}
900EXPORT_SYMBOL_GPL(__media_device_usb_init); 899EXPORT_SYMBOL_GPL(__media_device_usb_init);
900#endif
901 901
902 902
903#endif /* CONFIG_MEDIA_CONTROLLER */ 903#endif /* CONFIG_MEDIA_CONTROLLER */
diff --git a/drivers/media/platform/exynos4-is/media-dev.c b/drivers/media/platform/exynos4-is/media-dev.c
index feb521f28e14..4f494acd8150 100644
--- a/drivers/media/platform/exynos4-is/media-dev.c
+++ b/drivers/media/platform/exynos4-is/media-dev.c
@@ -1446,22 +1446,13 @@ static int fimc_md_probe(struct platform_device *pdev)
1446 1446
1447 platform_set_drvdata(pdev, fmd); 1447 platform_set_drvdata(pdev, fmd);
1448 1448
1449 /* Protect the media graph while we're registering entities */
1450 mutex_lock(&fmd->media_dev.graph_mutex);
1451
1452 ret = fimc_md_register_platform_entities(fmd, dev->of_node); 1449 ret = fimc_md_register_platform_entities(fmd, dev->of_node);
1453 if (ret) { 1450 if (ret)
1454 mutex_unlock(&fmd->media_dev.graph_mutex);
1455 goto err_clk; 1451 goto err_clk;
1456 }
1457 1452
1458 ret = fimc_md_register_sensor_entities(fmd); 1453 ret = fimc_md_register_sensor_entities(fmd);
1459 if (ret) { 1454 if (ret)
1460 mutex_unlock(&fmd->media_dev.graph_mutex);
1461 goto err_m_ent; 1455 goto err_m_ent;
1462 }
1463
1464 mutex_unlock(&fmd->media_dev.graph_mutex);
1465 1456
1466 ret = device_create_file(&pdev->dev, &dev_attr_subdev_conf_mode); 1457 ret = device_create_file(&pdev->dev, &dev_attr_subdev_conf_mode);
1467 if (ret) 1458 if (ret)
diff --git a/drivers/media/platform/s3c-camif/camif-core.c b/drivers/media/platform/s3c-camif/camif-core.c
index 0b44b9accf50..af237af204e2 100644
--- a/drivers/media/platform/s3c-camif/camif-core.c
+++ b/drivers/media/platform/s3c-camif/camif-core.c
@@ -493,21 +493,17 @@ static int s3c_camif_probe(struct platform_device *pdev)
493 if (ret < 0) 493 if (ret < 0)
494 goto err_sens; 494 goto err_sens;
495 495
496 mutex_lock(&camif->media_dev.graph_mutex);
497
498 ret = v4l2_device_register_subdev_nodes(&camif->v4l2_dev); 496 ret = v4l2_device_register_subdev_nodes(&camif->v4l2_dev);
499 if (ret < 0) 497 if (ret < 0)
500 goto err_unlock; 498 goto err_sens;
501 499
502 ret = camif_register_video_nodes(camif); 500 ret = camif_register_video_nodes(camif);
503 if (ret < 0) 501 if (ret < 0)
504 goto err_unlock; 502 goto err_sens;
505 503
506 ret = camif_create_media_links(camif); 504 ret = camif_create_media_links(camif);
507 if (ret < 0) 505 if (ret < 0)
508 goto err_unlock; 506 goto err_sens;
509
510 mutex_unlock(&camif->media_dev.graph_mutex);
511 507
512 ret = media_device_register(&camif->media_dev); 508 ret = media_device_register(&camif->media_dev);
513 if (ret < 0) 509 if (ret < 0)
@@ -516,8 +512,6 @@ static int s3c_camif_probe(struct platform_device *pdev)
516 pm_runtime_put(dev); 512 pm_runtime_put(dev);
517 return 0; 513 return 0;
518 514
519err_unlock:
520 mutex_unlock(&camif->media_dev.graph_mutex);
521err_sens: 515err_sens:
522 v4l2_device_unregister(&camif->v4l2_dev); 516 v4l2_device_unregister(&camif->v4l2_dev);
523 media_device_unregister(&camif->media_dev); 517 media_device_unregister(&camif->media_dev);
diff --git a/drivers/misc/mic/vop/vop_vringh.c b/drivers/misc/mic/vop/vop_vringh.c
index e94c7fb6712a..88e45234d527 100644
--- a/drivers/misc/mic/vop/vop_vringh.c
+++ b/drivers/misc/mic/vop/vop_vringh.c
@@ -945,6 +945,11 @@ static long vop_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
945 ret = -EFAULT; 945 ret = -EFAULT;
946 goto free_ret; 946 goto free_ret;
947 } 947 }
948 /* Ensure desc has not changed between the two reads */
949 if (memcmp(&dd, dd_config, sizeof(dd))) {
950 ret = -EINVAL;
951 goto free_ret;
952 }
948 mutex_lock(&vdev->vdev_mutex); 953 mutex_lock(&vdev->vdev_mutex);
949 mutex_lock(&vi->vop_mutex); 954 mutex_lock(&vi->vop_mutex);
950 ret = vop_virtio_add_device(vdev, dd_config); 955 ret = vop_virtio_add_device(vdev, dd_config);
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
index 409152b21191..aa87049c353d 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
@@ -1608,21 +1608,22 @@ static int xgene_enet_probe(struct platform_device *pdev)
1608 1608
1609 ret = xgene_enet_init_hw(pdata); 1609 ret = xgene_enet_init_hw(pdata);
1610 if (ret) 1610 if (ret)
1611 goto err; 1611 goto err_netdev;
1612 1612
1613 mac_ops = pdata->mac_ops; 1613 mac_ops = pdata->mac_ops;
1614 if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII) { 1614 if (pdata->phy_mode == PHY_INTERFACE_MODE_RGMII) {
1615 ret = xgene_enet_mdio_config(pdata); 1615 ret = xgene_enet_mdio_config(pdata);
1616 if (ret) 1616 if (ret)
1617 goto err; 1617 goto err_netdev;
1618 } else { 1618 } else {
1619 INIT_DELAYED_WORK(&pdata->link_work, mac_ops->link_state); 1619 INIT_DELAYED_WORK(&pdata->link_work, mac_ops->link_state);
1620 } 1620 }
1621 1621
1622 xgene_enet_napi_add(pdata); 1622 xgene_enet_napi_add(pdata);
1623 return 0; 1623 return 0;
1624err: 1624err_netdev:
1625 unregister_netdev(ndev); 1625 unregister_netdev(ndev);
1626err:
1626 free_netdev(ndev); 1627 free_netdev(ndev);
1627 return ret; 1628 return ret;
1628} 1629}
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index fd85b6dd4a6e..6a5a71710fa9 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -1439,6 +1439,10 @@ static int bnxt_poll_work(struct bnxt *bp, struct bnxt_napi *bnapi, int budget)
1439 if (!TX_CMP_VALID(txcmp, raw_cons)) 1439 if (!TX_CMP_VALID(txcmp, raw_cons))
1440 break; 1440 break;
1441 1441
1442 /* The valid test of the entry must be done first before
1443 * reading any further.
1444 */
1445 rmb();
1442 if (TX_CMP_TYPE(txcmp) == CMP_TYPE_TX_L2_CMP) { 1446 if (TX_CMP_TYPE(txcmp) == CMP_TYPE_TX_L2_CMP) {
1443 tx_pkts++; 1447 tx_pkts++;
1444 /* return full budget so NAPI will complete. */ 1448 /* return full budget so NAPI will complete. */
@@ -4096,9 +4100,11 @@ static int bnxt_alloc_rfs_vnics(struct bnxt *bp)
4096} 4100}
4097 4101
4098static int bnxt_cfg_rx_mode(struct bnxt *); 4102static int bnxt_cfg_rx_mode(struct bnxt *);
4103static bool bnxt_mc_list_updated(struct bnxt *, u32 *);
4099 4104
4100static int bnxt_init_chip(struct bnxt *bp, bool irq_re_init) 4105static int bnxt_init_chip(struct bnxt *bp, bool irq_re_init)
4101{ 4106{
4107 struct bnxt_vnic_info *vnic = &bp->vnic_info[0];
4102 int rc = 0; 4108 int rc = 0;
4103 4109
4104 if (irq_re_init) { 4110 if (irq_re_init) {
@@ -4154,13 +4160,22 @@ static int bnxt_init_chip(struct bnxt *bp, bool irq_re_init)
4154 netdev_err(bp->dev, "HWRM vnic filter failure rc: %x\n", rc); 4160 netdev_err(bp->dev, "HWRM vnic filter failure rc: %x\n", rc);
4155 goto err_out; 4161 goto err_out;
4156 } 4162 }
4157 bp->vnic_info[0].uc_filter_count = 1; 4163 vnic->uc_filter_count = 1;
4158 4164
4159 bp->vnic_info[0].rx_mask = CFA_L2_SET_RX_MASK_REQ_MASK_BCAST; 4165 vnic->rx_mask = CFA_L2_SET_RX_MASK_REQ_MASK_BCAST;
4160 4166
4161 if ((bp->dev->flags & IFF_PROMISC) && BNXT_PF(bp)) 4167 if ((bp->dev->flags & IFF_PROMISC) && BNXT_PF(bp))
4162 bp->vnic_info[0].rx_mask |= 4168 vnic->rx_mask |= CFA_L2_SET_RX_MASK_REQ_MASK_PROMISCUOUS;
4163 CFA_L2_SET_RX_MASK_REQ_MASK_PROMISCUOUS; 4169
4170 if (bp->dev->flags & IFF_ALLMULTI) {
4171 vnic->rx_mask |= CFA_L2_SET_RX_MASK_REQ_MASK_ALL_MCAST;
4172 vnic->mc_list_count = 0;
4173 } else {
4174 u32 mask = 0;
4175
4176 bnxt_mc_list_updated(bp, &mask);
4177 vnic->rx_mask |= mask;
4178 }
4164 4179
4165 rc = bnxt_cfg_rx_mode(bp); 4180 rc = bnxt_cfg_rx_mode(bp);
4166 if (rc) 4181 if (rc)
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index bfa10c3da35f..c9f77c324535 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -1521,9 +1521,15 @@ fec_enet_rx(struct net_device *ndev, int budget)
1521 struct fec_enet_private *fep = netdev_priv(ndev); 1521 struct fec_enet_private *fep = netdev_priv(ndev);
1522 1522
1523 for_each_set_bit(queue_id, &fep->work_rx, FEC_ENET_MAX_RX_QS) { 1523 for_each_set_bit(queue_id, &fep->work_rx, FEC_ENET_MAX_RX_QS) {
1524 clear_bit(queue_id, &fep->work_rx); 1524 int ret;
1525 pkt_received += fec_enet_rx_queue(ndev, 1525
1526 ret = fec_enet_rx_queue(ndev,
1526 budget - pkt_received, queue_id); 1527 budget - pkt_received, queue_id);
1528
1529 if (ret < budget - pkt_received)
1530 clear_bit(queue_id, &fep->work_rx);
1531
1532 pkt_received += ret;
1527 } 1533 }
1528 return pkt_received; 1534 return pkt_received;
1529} 1535}
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
index 8ef6875b6cf9..c1b3a9c8cf3b 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
@@ -698,7 +698,7 @@ static int get_fixed_ipv6_csum(__wsum hw_checksum, struct sk_buff *skb,
698 698
699 if (ipv6h->nexthdr == IPPROTO_FRAGMENT || ipv6h->nexthdr == IPPROTO_HOPOPTS) 699 if (ipv6h->nexthdr == IPPROTO_FRAGMENT || ipv6h->nexthdr == IPPROTO_HOPOPTS)
700 return -1; 700 return -1;
701 hw_checksum = csum_add(hw_checksum, (__force __wsum)(ipv6h->nexthdr << 8)); 701 hw_checksum = csum_add(hw_checksum, (__force __wsum)htons(ipv6h->nexthdr));
702 702
703 csum_pseudo_hdr = csum_partial(&ipv6h->saddr, 703 csum_pseudo_hdr = csum_partial(&ipv6h->saddr,
704 sizeof(ipv6h->saddr) + sizeof(ipv6h->daddr), 0); 704 sizeof(ipv6h->saddr) + sizeof(ipv6h->daddr), 0);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
index 559d11a443bc..f5c3b9465d8d 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
+++ b/drivers/net/ethernet/mellanox/mlx5/core/Kconfig
@@ -14,7 +14,6 @@ config MLX5_CORE_EN
14 bool "Mellanox Technologies ConnectX-4 Ethernet support" 14 bool "Mellanox Technologies ConnectX-4 Ethernet support"
15 depends on NETDEVICES && ETHERNET && PCI && MLX5_CORE 15 depends on NETDEVICES && ETHERNET && PCI && MLX5_CORE
16 select PTP_1588_CLOCK 16 select PTP_1588_CLOCK
17 select VXLAN if MLX5_CORE=y
18 default n 17 default n
19 ---help--- 18 ---help---
20 Ethernet support in Mellanox Technologies ConnectX-4 NIC. 19 Ethernet support in Mellanox Technologies ConnectX-4 NIC.
@@ -32,3 +31,10 @@ config MLX5_CORE_EN_DCB
32 This flag is depended on the kernel's DCB support. 31 This flag is depended on the kernel's DCB support.
33 32
34 If unsure, set to Y 33 If unsure, set to Y
34
35config MLX5_CORE_EN_VXLAN
36 bool "VXLAN offloads Support"
37 default y
38 depends on MLX5_CORE_EN && VXLAN && !(MLX5_CORE=y && VXLAN=m)
39 ---help---
40 Say Y here if you want to use VXLAN offloads in the driver.
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
index b531d4f3c00b..e4a5b37b90ab 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/Makefile
+++ b/drivers/net/ethernet/mellanox/mlx5/core/Makefile
@@ -6,6 +6,7 @@ mlx5_core-y := main.o cmd.o debugfs.o fw.o eq.o uar.o pagealloc.o \
6 6
7mlx5_core-$(CONFIG_MLX5_CORE_EN) += wq.o eswitch.o \ 7mlx5_core-$(CONFIG_MLX5_CORE_EN) += wq.o eswitch.o \
8 en_main.o en_fs.o en_ethtool.o en_tx.o en_rx.o \ 8 en_main.o en_fs.o en_ethtool.o en_tx.o en_rx.o \
9 en_txrx.o en_clock.o vxlan.o en_tc.o en_arfs.o 9 en_txrx.o en_clock.o en_tc.o en_arfs.o
10 10
11mlx5_core-$(CONFIG_MLX5_CORE_EN_VXLAN) += vxlan.o
11mlx5_core-$(CONFIG_MLX5_CORE_EN_DCB) += en_dcbnl.o 12mlx5_core-$(CONFIG_MLX5_CORE_EN_DCB) += en_dcbnl.o
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
index bfa5daaaf5aa..7aea32e085b3 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
@@ -522,7 +522,12 @@ struct mlx5e_priv {
522 struct mlx5e_direct_tir direct_tir[MLX5E_MAX_NUM_CHANNELS]; 522 struct mlx5e_direct_tir direct_tir[MLX5E_MAX_NUM_CHANNELS];
523 523
524 struct mlx5e_flow_steering fs; 524 struct mlx5e_flow_steering fs;
525 struct mlx5e_flow_tables fts;
526 struct mlx5e_eth_addr_db eth_addr;
527 struct mlx5e_vlan_db vlan;
528#ifdef CONFIG_MLX5_CORE_EN_VXLAN
525 struct mlx5e_vxlan_db vxlan; 529 struct mlx5e_vxlan_db vxlan;
530#endif
526 531
527 struct mlx5e_params params; 532 struct mlx5e_params params;
528 struct workqueue_struct *wq; 533 struct workqueue_struct *wq;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 1c70e518b5c5..b60a1bc6f457 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -2509,6 +2509,7 @@ static int mlx5e_get_vf_stats(struct net_device *dev,
2509 vf_stats); 2509 vf_stats);
2510} 2510}
2511 2511
2512#if IS_ENABLED(CONFIG_MLX5_CORE_EN_VXLAN)
2512static void mlx5e_add_vxlan_port(struct net_device *netdev, 2513static void mlx5e_add_vxlan_port(struct net_device *netdev,
2513 sa_family_t sa_family, __be16 port) 2514 sa_family_t sa_family, __be16 port)
2514{ 2515{
@@ -2580,6 +2581,7 @@ static netdev_features_t mlx5e_features_check(struct sk_buff *skb,
2580 2581
2581 return features; 2582 return features;
2582} 2583}
2584#endif
2583 2585
2584static const struct net_device_ops mlx5e_netdev_ops_basic = { 2586static const struct net_device_ops mlx5e_netdev_ops_basic = {
2585 .ndo_open = mlx5e_open, 2587 .ndo_open = mlx5e_open,
@@ -2614,6 +2616,7 @@ static const struct net_device_ops mlx5e_netdev_ops_sriov = {
2614 .ndo_set_features = mlx5e_set_features, 2616 .ndo_set_features = mlx5e_set_features,
2615 .ndo_change_mtu = mlx5e_change_mtu, 2617 .ndo_change_mtu = mlx5e_change_mtu,
2616 .ndo_do_ioctl = mlx5e_ioctl, 2618 .ndo_do_ioctl = mlx5e_ioctl,
2619#ifdef CONFIG_MLX5_CORE_EN_VXLAN
2617 .ndo_add_vxlan_port = mlx5e_add_vxlan_port, 2620 .ndo_add_vxlan_port = mlx5e_add_vxlan_port,
2618 .ndo_del_vxlan_port = mlx5e_del_vxlan_port, 2621 .ndo_del_vxlan_port = mlx5e_del_vxlan_port,
2619 .ndo_features_check = mlx5e_features_check, 2622 .ndo_features_check = mlx5e_features_check,
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/vxlan.h b/drivers/net/ethernet/mellanox/mlx5/core/vxlan.h
index 129f3527aa14..217ac530a514 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/vxlan.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/vxlan.h
@@ -48,14 +48,21 @@ struct mlx5e_vxlan_work {
48 48
49static inline bool mlx5e_vxlan_allowed(struct mlx5_core_dev *mdev) 49static inline bool mlx5e_vxlan_allowed(struct mlx5_core_dev *mdev)
50{ 50{
51 return (MLX5_CAP_ETH(mdev, tunnel_stateless_vxlan) && 51 return IS_ENABLED(CONFIG_MLX5_CORE_EN_VXLAN) &&
52 (MLX5_CAP_ETH(mdev, tunnel_stateless_vxlan) &&
52 mlx5_core_is_pf(mdev)); 53 mlx5_core_is_pf(mdev));
53} 54}
54 55
56#ifdef CONFIG_MLX5_CORE_EN_VXLAN
55void mlx5e_vxlan_init(struct mlx5e_priv *priv); 57void mlx5e_vxlan_init(struct mlx5e_priv *priv);
58void mlx5e_vxlan_cleanup(struct mlx5e_priv *priv);
59#else
60static inline void mlx5e_vxlan_init(struct mlx5e_priv *priv) {}
61static inline void mlx5e_vxlan_cleanup(struct mlx5e_priv *priv) {}
62#endif
63
56void mlx5e_vxlan_queue_work(struct mlx5e_priv *priv, sa_family_t sa_family, 64void mlx5e_vxlan_queue_work(struct mlx5e_priv *priv, sa_family_t sa_family,
57 u16 port, int add); 65 u16 port, int add);
58struct mlx5e_vxlan *mlx5e_vxlan_lookup_port(struct mlx5e_priv *priv, u16 port); 66struct mlx5e_vxlan *mlx5e_vxlan_lookup_port(struct mlx5e_priv *priv, u16 port);
59void mlx5e_vxlan_cleanup(struct mlx5e_priv *priv);
60 67
61#endif /* __MLX5_VXLAN_H__ */ 68#endif /* __MLX5_VXLAN_H__ */
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index 79cdd81d55ab..4a7273771028 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
@@ -2843,11 +2843,11 @@ static int mlxsw_sp_port_lag_join(struct mlxsw_sp_port *mlxsw_sp_port,
2843 lag->ref_count++; 2843 lag->ref_count++;
2844 return 0; 2844 return 0;
2845 2845
2846err_col_port_enable:
2847 mlxsw_sp_lag_col_port_remove(mlxsw_sp_port, lag_id);
2846err_col_port_add: 2848err_col_port_add:
2847 if (!lag->ref_count) 2849 if (!lag->ref_count)
2848 mlxsw_sp_lag_destroy(mlxsw_sp, lag_id); 2850 mlxsw_sp_lag_destroy(mlxsw_sp, lag_id);
2849err_col_port_enable:
2850 mlxsw_sp_lag_col_port_remove(mlxsw_sp_port, lag_id);
2851 return err; 2851 return err;
2852} 2852}
2853 2853
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index fb9efb84f13b..3710f19ed6bb 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -214,7 +214,15 @@ static int __mlxsw_sp_port_flood_set(struct mlxsw_sp_port *mlxsw_sp_port,
214 mlxsw_reg_sftr_pack(sftr_pl, MLXSW_SP_FLOOD_TABLE_BM, idx_begin, 214 mlxsw_reg_sftr_pack(sftr_pl, MLXSW_SP_FLOOD_TABLE_BM, idx_begin,
215 table_type, range, local_port, set); 215 table_type, range, local_port, set);
216 err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sftr), sftr_pl); 216 err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sftr), sftr_pl);
217 if (err)
218 goto err_flood_bm_set;
219 else
220 goto buffer_out;
217 221
222err_flood_bm_set:
223 mlxsw_reg_sftr_pack(sftr_pl, MLXSW_SP_FLOOD_TABLE_UC, idx_begin,
224 table_type, range, local_port, !set);
225 mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sftr), sftr_pl);
218buffer_out: 226buffer_out:
219 kfree(sftr_pl); 227 kfree(sftr_pl);
220 return err; 228 return err;
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c
index db80eb1c6d4f..2b10f1bcd151 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c
@@ -1015,20 +1015,24 @@ static int netxen_get_flash_block(struct netxen_adapter *adapter, int base,
1015{ 1015{
1016 int i, v, addr; 1016 int i, v, addr;
1017 __le32 *ptr32; 1017 __le32 *ptr32;
1018 int ret;
1018 1019
1019 addr = base; 1020 addr = base;
1020 ptr32 = buf; 1021 ptr32 = buf;
1021 for (i = 0; i < size / sizeof(u32); i++) { 1022 for (i = 0; i < size / sizeof(u32); i++) {
1022 if (netxen_rom_fast_read(adapter, addr, &v) == -1) 1023 ret = netxen_rom_fast_read(adapter, addr, &v);
1023 return -1; 1024 if (ret)
1025 return ret;
1026
1024 *ptr32 = cpu_to_le32(v); 1027 *ptr32 = cpu_to_le32(v);
1025 ptr32++; 1028 ptr32++;
1026 addr += sizeof(u32); 1029 addr += sizeof(u32);
1027 } 1030 }
1028 if ((char *)buf + size > (char *)ptr32) { 1031 if ((char *)buf + size > (char *)ptr32) {
1029 __le32 local; 1032 __le32 local;
1030 if (netxen_rom_fast_read(adapter, addr, &v) == -1) 1033 ret = netxen_rom_fast_read(adapter, addr, &v);
1031 return -1; 1034 if (ret)
1035 return ret;
1032 local = cpu_to_le32(v); 1036 local = cpu_to_le32(v);
1033 memcpy(ptr32, &local, (char *)buf + size - (char *)ptr32); 1037 memcpy(ptr32, &local, (char *)buf + size - (char *)ptr32);
1034 } 1038 }
@@ -1940,7 +1944,7 @@ void netxen_nic_set_link_parameters(struct netxen_adapter *adapter)
1940 if (adapter->phy_read && 1944 if (adapter->phy_read &&
1941 adapter->phy_read(adapter, 1945 adapter->phy_read(adapter,
1942 NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG, 1946 NETXEN_NIU_GB_MII_MGMT_ADDR_AUTONEG,
1943 &autoneg) != 0) 1947 &autoneg) == 0)
1944 adapter->link_autoneg = autoneg; 1948 adapter->link_autoneg = autoneg;
1945 } else 1949 } else
1946 goto link_down; 1950 goto link_down;
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
index cad37af1517d..7a0281a36c28 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
@@ -852,7 +852,8 @@ netxen_check_options(struct netxen_adapter *adapter)
852 ptr32 = (__le32 *)&serial_num; 852 ptr32 = (__le32 *)&serial_num;
853 offset = NX_FW_SERIAL_NUM_OFFSET; 853 offset = NX_FW_SERIAL_NUM_OFFSET;
854 for (i = 0; i < 8; i++) { 854 for (i = 0; i < 8; i++) {
855 if (netxen_rom_fast_read(adapter, offset, &val) == -1) { 855 err = netxen_rom_fast_read(adapter, offset, &val);
856 if (err) {
856 dev_err(&pdev->dev, "error reading board info\n"); 857 dev_err(&pdev->dev, "error reading board info\n");
857 adapter->driver_mismatch = 1; 858 adapter->driver_mismatch = 1;
858 return; 859 return;
diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c
index 82d85ccc9ed1..075faa52eb48 100644
--- a/drivers/net/ethernet/qlogic/qede/qede_main.c
+++ b/drivers/net/ethernet/qlogic/qede/qede_main.c
@@ -429,7 +429,7 @@ netdev_tx_t qede_start_xmit(struct sk_buff *skb,
429 u8 xmit_type; 429 u8 xmit_type;
430 u16 idx; 430 u16 idx;
431 u16 hlen; 431 u16 hlen;
432 bool data_split; 432 bool data_split = false;
433 433
434 /* Get tx-queue context and netdev index */ 434 /* Get tx-queue context and netdev index */
435 txq_index = skb_get_queue_mapping(skb); 435 txq_index = skb_get_queue_mapping(skb);
@@ -2094,8 +2094,6 @@ static struct qede_dev *qede_alloc_etherdev(struct qed_dev *cdev,
2094 edev->q_num_rx_buffers = NUM_RX_BDS_DEF; 2094 edev->q_num_rx_buffers = NUM_RX_BDS_DEF;
2095 edev->q_num_tx_buffers = NUM_TX_BDS_DEF; 2095 edev->q_num_tx_buffers = NUM_TX_BDS_DEF;
2096 2096
2097 DP_INFO(edev, "Allocated netdev with 64 tx queues and 64 rx queues\n");
2098
2099 SET_NETDEV_DEV(ndev, &pdev->dev); 2097 SET_NETDEV_DEV(ndev, &pdev->dev);
2100 2098
2101 memset(&edev->stats, 0, sizeof(edev->stats)); 2099 memset(&edev->stats, 0, sizeof(edev->stats));
@@ -2274,9 +2272,9 @@ static void qede_update_pf_params(struct qed_dev *cdev)
2274{ 2272{
2275 struct qed_pf_params pf_params; 2273 struct qed_pf_params pf_params;
2276 2274
2277 /* 16 rx + 16 tx */ 2275 /* 64 rx + 64 tx */
2278 memset(&pf_params, 0, sizeof(struct qed_pf_params)); 2276 memset(&pf_params, 0, sizeof(struct qed_pf_params));
2279 pf_params.eth_pf_params.num_cons = 32; 2277 pf_params.eth_pf_params.num_cons = 128;
2280 qed_ops->common->update_pf_params(cdev, &pf_params); 2278 qed_ops->common->update_pf_params(cdev, &pf_params);
2281} 2279}
2282 2280
diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
index 9c40b88fabd5..a6dc11ce497f 100644
--- a/drivers/net/geneve.c
+++ b/drivers/net/geneve.c
@@ -495,8 +495,6 @@ static int geneve_gro_complete(struct sock *sk, struct sk_buff *skb,
495 int gh_len; 495 int gh_len;
496 int err = -ENOSYS; 496 int err = -ENOSYS;
497 497
498 udp_tunnel_gro_complete(skb, nhoff);
499
500 gh = (struct genevehdr *)(skb->data + nhoff); 498 gh = (struct genevehdr *)(skb->data + nhoff);
501 gh_len = geneve_hlen(gh); 499 gh_len = geneve_hlen(gh);
502 type = gh->proto_type; 500 type = gh->proto_type;
@@ -507,6 +505,9 @@ static int geneve_gro_complete(struct sock *sk, struct sk_buff *skb,
507 err = ptype->callbacks.gro_complete(skb, nhoff + gh_len); 505 err = ptype->callbacks.gro_complete(skb, nhoff + gh_len);
508 506
509 rcu_read_unlock(); 507 rcu_read_unlock();
508
509 skb_set_inner_mac_header(skb, nhoff + gh_len);
510
510 return err; 511 return err;
511} 512}
512 513
diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
index 3add2c4aac21..460740ccc238 100644
--- a/drivers/net/macsec.c
+++ b/drivers/net/macsec.c
@@ -85,7 +85,7 @@ struct gcm_iv {
85 * @tfm: crypto struct, key storage 85 * @tfm: crypto struct, key storage
86 */ 86 */
87struct macsec_key { 87struct macsec_key {
88 u64 id; 88 u8 id[MACSEC_KEYID_LEN];
89 struct crypto_aead *tfm; 89 struct crypto_aead *tfm;
90}; 90};
91 91
@@ -1530,7 +1530,8 @@ static const struct nla_policy macsec_genl_sa_policy[NUM_MACSEC_SA_ATTR] = {
1530 [MACSEC_SA_ATTR_AN] = { .type = NLA_U8 }, 1530 [MACSEC_SA_ATTR_AN] = { .type = NLA_U8 },
1531 [MACSEC_SA_ATTR_ACTIVE] = { .type = NLA_U8 }, 1531 [MACSEC_SA_ATTR_ACTIVE] = { .type = NLA_U8 },
1532 [MACSEC_SA_ATTR_PN] = { .type = NLA_U32 }, 1532 [MACSEC_SA_ATTR_PN] = { .type = NLA_U32 },
1533 [MACSEC_SA_ATTR_KEYID] = { .type = NLA_U64 }, 1533 [MACSEC_SA_ATTR_KEYID] = { .type = NLA_BINARY,
1534 .len = MACSEC_KEYID_LEN, },
1534 [MACSEC_SA_ATTR_KEY] = { .type = NLA_BINARY, 1535 [MACSEC_SA_ATTR_KEY] = { .type = NLA_BINARY,
1535 .len = MACSEC_MAX_KEY_LEN, }, 1536 .len = MACSEC_MAX_KEY_LEN, },
1536}; 1537};
@@ -1577,6 +1578,9 @@ static bool validate_add_rxsa(struct nlattr **attrs)
1577 return false; 1578 return false;
1578 } 1579 }
1579 1580
1581 if (nla_len(attrs[MACSEC_SA_ATTR_KEYID]) != MACSEC_KEYID_LEN)
1582 return false;
1583
1580 return true; 1584 return true;
1581} 1585}
1582 1586
@@ -1642,7 +1646,7 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info)
1642 if (tb_sa[MACSEC_SA_ATTR_ACTIVE]) 1646 if (tb_sa[MACSEC_SA_ATTR_ACTIVE])
1643 rx_sa->active = !!nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]); 1647 rx_sa->active = !!nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]);
1644 1648
1645 rx_sa->key.id = nla_get_u64(tb_sa[MACSEC_SA_ATTR_KEYID]); 1649 nla_memcpy(rx_sa->key.id, tb_sa[MACSEC_SA_ATTR_KEY], MACSEC_KEYID_LEN);
1646 rx_sa->sc = rx_sc; 1650 rx_sa->sc = rx_sc;
1647 rcu_assign_pointer(rx_sc->sa[assoc_num], rx_sa); 1651 rcu_assign_pointer(rx_sc->sa[assoc_num], rx_sa);
1648 1652
@@ -1723,6 +1727,9 @@ static bool validate_add_txsa(struct nlattr **attrs)
1723 return false; 1727 return false;
1724 } 1728 }
1725 1729
1730 if (nla_len(attrs[MACSEC_SA_ATTR_KEYID]) != MACSEC_KEYID_LEN)
1731 return false;
1732
1726 return true; 1733 return true;
1727} 1734}
1728 1735
@@ -1778,7 +1785,7 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info)
1778 return -ENOMEM; 1785 return -ENOMEM;
1779 } 1786 }
1780 1787
1781 tx_sa->key.id = nla_get_u64(tb_sa[MACSEC_SA_ATTR_KEYID]); 1788 nla_memcpy(tx_sa->key.id, tb_sa[MACSEC_SA_ATTR_KEY], MACSEC_KEYID_LEN);
1782 1789
1783 spin_lock_bh(&tx_sa->lock); 1790 spin_lock_bh(&tx_sa->lock);
1784 tx_sa->next_pn = nla_get_u32(tb_sa[MACSEC_SA_ATTR_PN]); 1791 tx_sa->next_pn = nla_get_u32(tb_sa[MACSEC_SA_ATTR_PN]);
@@ -2365,9 +2372,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
2365 2372
2366 if (nla_put_u8(skb, MACSEC_SA_ATTR_AN, i) || 2373 if (nla_put_u8(skb, MACSEC_SA_ATTR_AN, i) ||
2367 nla_put_u32(skb, MACSEC_SA_ATTR_PN, tx_sa->next_pn) || 2374 nla_put_u32(skb, MACSEC_SA_ATTR_PN, tx_sa->next_pn) ||
2368 nla_put_u64_64bit(skb, MACSEC_SA_ATTR_KEYID, 2375 nla_put(skb, MACSEC_SA_ATTR_KEYID, MACSEC_KEYID_LEN, tx_sa->key.id) ||
2369 tx_sa->key.id,
2370 MACSEC_SA_ATTR_PAD) ||
2371 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, tx_sa->active)) { 2376 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, tx_sa->active)) {
2372 nla_nest_cancel(skb, txsa_nest); 2377 nla_nest_cancel(skb, txsa_nest);
2373 nla_nest_cancel(skb, txsa_list); 2378 nla_nest_cancel(skb, txsa_list);
@@ -2469,9 +2474,7 @@ static int dump_secy(struct macsec_secy *secy, struct net_device *dev,
2469 2474
2470 if (nla_put_u8(skb, MACSEC_SA_ATTR_AN, i) || 2475 if (nla_put_u8(skb, MACSEC_SA_ATTR_AN, i) ||
2471 nla_put_u32(skb, MACSEC_SA_ATTR_PN, rx_sa->next_pn) || 2476 nla_put_u32(skb, MACSEC_SA_ATTR_PN, rx_sa->next_pn) ||
2472 nla_put_u64_64bit(skb, MACSEC_SA_ATTR_KEYID, 2477 nla_put(skb, MACSEC_SA_ATTR_KEYID, MACSEC_KEYID_LEN, rx_sa->key.id) ||
2473 rx_sa->key.id,
2474 MACSEC_SA_ATTR_PAD) ||
2475 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, rx_sa->active)) { 2478 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, rx_sa->active)) {
2476 nla_nest_cancel(skb, rxsa_nest); 2479 nla_nest_cancel(skb, rxsa_nest);
2477 nla_nest_cancel(skb, rxsc_nest); 2480 nla_nest_cancel(skb, rxsc_nest);
diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c
index 22b85b097cbc..bd6720962b1f 100644
--- a/drivers/net/macvtap.c
+++ b/drivers/net/macvtap.c
@@ -384,7 +384,7 @@ static rx_handler_result_t macvtap_handle_frame(struct sk_buff **pskb)
384 goto wake_up; 384 goto wake_up;
385 } 385 }
386 386
387 kfree_skb(skb); 387 consume_skb(skb);
388 while (segs) { 388 while (segs) {
389 struct sk_buff *nskb = segs->next; 389 struct sk_buff *nskb = segs->next;
390 390
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index 2668e528dee4..2f29d20aa08f 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -613,8 +613,9 @@ out:
613 613
614static int vxlan_gro_complete(struct sock *sk, struct sk_buff *skb, int nhoff) 614static int vxlan_gro_complete(struct sock *sk, struct sk_buff *skb, int nhoff)
615{ 615{
616 udp_tunnel_gro_complete(skb, nhoff); 616 /* Sets 'skb->inner_mac_header' since we are always called with
617 617 * 'skb->encapsulation' set.
618 */
618 return eth_gro_complete(skb, nhoff + sizeof(struct vxlanhdr)); 619 return eth_gro_complete(skb, nhoff + sizeof(struct vxlanhdr));
619} 620}
620 621
diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c
index f798899338ed..5101f3ab4f29 100644
--- a/drivers/nvdimm/pmem.c
+++ b/drivers/nvdimm/pmem.c
@@ -397,10 +397,17 @@ static int nd_pfn_init(struct nd_pfn *nd_pfn)
397 */ 397 */
398 start += start_pad; 398 start += start_pad;
399 npfns = (pmem->size - start_pad - end_trunc - SZ_8K) / SZ_4K; 399 npfns = (pmem->size - start_pad - end_trunc - SZ_8K) / SZ_4K;
400 if (nd_pfn->mode == PFN_MODE_PMEM) 400 if (nd_pfn->mode == PFN_MODE_PMEM) {
401 offset = ALIGN(start + SZ_8K + 64 * npfns, nd_pfn->align) 401 unsigned long memmap_size;
402
403 /*
404 * vmemmap_populate_hugepages() allocates the memmap array in
405 * HPAGE_SIZE chunks.
406 */
407 memmap_size = ALIGN(64 * npfns, HPAGE_SIZE);
408 offset = ALIGN(start + SZ_8K + memmap_size, nd_pfn->align)
402 - start; 409 - start;
403 else if (nd_pfn->mode == PFN_MODE_RAM) 410 } else if (nd_pfn->mode == PFN_MODE_RAM)
404 offset = ALIGN(start + SZ_8K, nd_pfn->align) - start; 411 offset = ALIGN(start + SZ_8K, nd_pfn->align) - start;
405 else 412 else
406 goto err; 413 goto err;
diff --git a/drivers/nvmem/mxs-ocotp.c b/drivers/nvmem/mxs-ocotp.c
index 8ba19bba3156..2bb3c5799ac4 100644
--- a/drivers/nvmem/mxs-ocotp.c
+++ b/drivers/nvmem/mxs-ocotp.c
@@ -94,7 +94,7 @@ static int mxs_ocotp_read(void *context, const void *reg, size_t reg_size,
94 if (ret) 94 if (ret)
95 goto close_banks; 95 goto close_banks;
96 96
97 while (val_size) { 97 while (val_size >= reg_size) {
98 if ((offset < OCOTP_DATA_OFFSET) || (offset % 16)) { 98 if ((offset < OCOTP_DATA_OFFSET) || (offset % 16)) {
99 /* fill up non-data register */ 99 /* fill up non-data register */
100 *buf = 0; 100 *buf = 0;
@@ -103,7 +103,7 @@ static int mxs_ocotp_read(void *context, const void *reg, size_t reg_size,
103 } 103 }
104 104
105 buf++; 105 buf++;
106 val_size--; 106 val_size -= reg_size;
107 offset += reg_size; 107 offset += reg_size;
108 } 108 }
109 109
diff --git a/drivers/rapidio/devices/rio_mport_cdev.c b/drivers/rapidio/devices/rio_mport_cdev.c
index 96168b819044..e165b7ce29d7 100644
--- a/drivers/rapidio/devices/rio_mport_cdev.c
+++ b/drivers/rapidio/devices/rio_mport_cdev.c
@@ -126,7 +126,7 @@ struct rio_mport_mapping {
126 struct list_head node; 126 struct list_head node;
127 struct mport_dev *md; 127 struct mport_dev *md;
128 enum rio_mport_map_dir dir; 128 enum rio_mport_map_dir dir;
129 u32 rioid; 129 u16 rioid;
130 u64 rio_addr; 130 u64 rio_addr;
131 dma_addr_t phys_addr; /* for mmap */ 131 dma_addr_t phys_addr; /* for mmap */
132 void *virt_addr; /* kernel address, for dma_free_coherent */ 132 void *virt_addr; /* kernel address, for dma_free_coherent */
@@ -137,7 +137,7 @@ struct rio_mport_mapping {
137 137
138struct rio_mport_dma_map { 138struct rio_mport_dma_map {
139 int valid; 139 int valid;
140 uint64_t length; 140 u64 length;
141 void *vaddr; 141 void *vaddr;
142 dma_addr_t paddr; 142 dma_addr_t paddr;
143}; 143};
@@ -208,7 +208,7 @@ struct mport_cdev_priv {
208 struct kfifo event_fifo; 208 struct kfifo event_fifo;
209 wait_queue_head_t event_rx_wait; 209 wait_queue_head_t event_rx_wait;
210 spinlock_t fifo_lock; 210 spinlock_t fifo_lock;
211 unsigned int event_mask; /* RIO_DOORBELL, RIO_PORTWRITE */ 211 u32 event_mask; /* RIO_DOORBELL, RIO_PORTWRITE */
212#ifdef CONFIG_RAPIDIO_DMA_ENGINE 212#ifdef CONFIG_RAPIDIO_DMA_ENGINE
213 struct dma_chan *dmach; 213 struct dma_chan *dmach;
214 struct list_head async_list; 214 struct list_head async_list;
@@ -276,7 +276,8 @@ static int rio_mport_maint_rd(struct mport_cdev_priv *priv, void __user *arg,
276 return -EFAULT; 276 return -EFAULT;
277 277
278 if ((maint_io.offset % 4) || 278 if ((maint_io.offset % 4) ||
279 (maint_io.length == 0) || (maint_io.length % 4)) 279 (maint_io.length == 0) || (maint_io.length % 4) ||
280 (maint_io.length + maint_io.offset) > RIO_MAINT_SPACE_SZ)
280 return -EINVAL; 281 return -EINVAL;
281 282
282 buffer = vmalloc(maint_io.length); 283 buffer = vmalloc(maint_io.length);
@@ -298,7 +299,8 @@ static int rio_mport_maint_rd(struct mport_cdev_priv *priv, void __user *arg,
298 offset += 4; 299 offset += 4;
299 } 300 }
300 301
301 if (unlikely(copy_to_user(maint_io.buffer, buffer, maint_io.length))) 302 if (unlikely(copy_to_user((void __user *)(uintptr_t)maint_io.buffer,
303 buffer, maint_io.length)))
302 ret = -EFAULT; 304 ret = -EFAULT;
303out: 305out:
304 vfree(buffer); 306 vfree(buffer);
@@ -319,7 +321,8 @@ static int rio_mport_maint_wr(struct mport_cdev_priv *priv, void __user *arg,
319 return -EFAULT; 321 return -EFAULT;
320 322
321 if ((maint_io.offset % 4) || 323 if ((maint_io.offset % 4) ||
322 (maint_io.length == 0) || (maint_io.length % 4)) 324 (maint_io.length == 0) || (maint_io.length % 4) ||
325 (maint_io.length + maint_io.offset) > RIO_MAINT_SPACE_SZ)
323 return -EINVAL; 326 return -EINVAL;
324 327
325 buffer = vmalloc(maint_io.length); 328 buffer = vmalloc(maint_io.length);
@@ -327,7 +330,8 @@ static int rio_mport_maint_wr(struct mport_cdev_priv *priv, void __user *arg,
327 return -ENOMEM; 330 return -ENOMEM;
328 length = maint_io.length; 331 length = maint_io.length;
329 332
330 if (unlikely(copy_from_user(buffer, maint_io.buffer, length))) { 333 if (unlikely(copy_from_user(buffer,
334 (void __user *)(uintptr_t)maint_io.buffer, length))) {
331 ret = -EFAULT; 335 ret = -EFAULT;
332 goto out; 336 goto out;
333 } 337 }
@@ -360,7 +364,7 @@ out:
360 */ 364 */
361static int 365static int
362rio_mport_create_outbound_mapping(struct mport_dev *md, struct file *filp, 366rio_mport_create_outbound_mapping(struct mport_dev *md, struct file *filp,
363 u32 rioid, u64 raddr, u32 size, 367 u16 rioid, u64 raddr, u32 size,
364 dma_addr_t *paddr) 368 dma_addr_t *paddr)
365{ 369{
366 struct rio_mport *mport = md->mport; 370 struct rio_mport *mport = md->mport;
@@ -369,7 +373,7 @@ rio_mport_create_outbound_mapping(struct mport_dev *md, struct file *filp,
369 373
370 rmcd_debug(OBW, "did=%d ra=0x%llx sz=0x%x", rioid, raddr, size); 374 rmcd_debug(OBW, "did=%d ra=0x%llx sz=0x%x", rioid, raddr, size);
371 375
372 map = kzalloc(sizeof(struct rio_mport_mapping), GFP_KERNEL); 376 map = kzalloc(sizeof(*map), GFP_KERNEL);
373 if (map == NULL) 377 if (map == NULL)
374 return -ENOMEM; 378 return -ENOMEM;
375 379
@@ -394,7 +398,7 @@ err_map_outb:
394 398
395static int 399static int
396rio_mport_get_outbound_mapping(struct mport_dev *md, struct file *filp, 400rio_mport_get_outbound_mapping(struct mport_dev *md, struct file *filp,
397 u32 rioid, u64 raddr, u32 size, 401 u16 rioid, u64 raddr, u32 size,
398 dma_addr_t *paddr) 402 dma_addr_t *paddr)
399{ 403{
400 struct rio_mport_mapping *map; 404 struct rio_mport_mapping *map;
@@ -433,7 +437,7 @@ static int rio_mport_obw_map(struct file *filp, void __user *arg)
433 dma_addr_t paddr; 437 dma_addr_t paddr;
434 int ret; 438 int ret;
435 439
436 if (unlikely(copy_from_user(&map, arg, sizeof(struct rio_mmap)))) 440 if (unlikely(copy_from_user(&map, arg, sizeof(map))))
437 return -EFAULT; 441 return -EFAULT;
438 442
439 rmcd_debug(OBW, "did=%d ra=0x%llx sz=0x%llx", 443 rmcd_debug(OBW, "did=%d ra=0x%llx sz=0x%llx",
@@ -448,7 +452,7 @@ static int rio_mport_obw_map(struct file *filp, void __user *arg)
448 452
449 map.handle = paddr; 453 map.handle = paddr;
450 454
451 if (unlikely(copy_to_user(arg, &map, sizeof(struct rio_mmap)))) 455 if (unlikely(copy_to_user(arg, &map, sizeof(map))))
452 return -EFAULT; 456 return -EFAULT;
453 return 0; 457 return 0;
454} 458}
@@ -469,7 +473,7 @@ static int rio_mport_obw_free(struct file *filp, void __user *arg)
469 if (!md->mport->ops->unmap_outb) 473 if (!md->mport->ops->unmap_outb)
470 return -EPROTONOSUPPORT; 474 return -EPROTONOSUPPORT;
471 475
472 if (copy_from_user(&handle, arg, sizeof(u64))) 476 if (copy_from_user(&handle, arg, sizeof(handle)))
473 return -EFAULT; 477 return -EFAULT;
474 478
475 rmcd_debug(OBW, "h=0x%llx", handle); 479 rmcd_debug(OBW, "h=0x%llx", handle);
@@ -498,9 +502,9 @@ static int rio_mport_obw_free(struct file *filp, void __user *arg)
498static int maint_hdid_set(struct mport_cdev_priv *priv, void __user *arg) 502static int maint_hdid_set(struct mport_cdev_priv *priv, void __user *arg)
499{ 503{
500 struct mport_dev *md = priv->md; 504 struct mport_dev *md = priv->md;
501 uint16_t hdid; 505 u16 hdid;
502 506
503 if (copy_from_user(&hdid, arg, sizeof(uint16_t))) 507 if (copy_from_user(&hdid, arg, sizeof(hdid)))
504 return -EFAULT; 508 return -EFAULT;
505 509
506 md->mport->host_deviceid = hdid; 510 md->mport->host_deviceid = hdid;
@@ -520,9 +524,9 @@ static int maint_hdid_set(struct mport_cdev_priv *priv, void __user *arg)
520static int maint_comptag_set(struct mport_cdev_priv *priv, void __user *arg) 524static int maint_comptag_set(struct mport_cdev_priv *priv, void __user *arg)
521{ 525{
522 struct mport_dev *md = priv->md; 526 struct mport_dev *md = priv->md;
523 uint32_t comptag; 527 u32 comptag;
524 528
525 if (copy_from_user(&comptag, arg, sizeof(uint32_t))) 529 if (copy_from_user(&comptag, arg, sizeof(comptag)))
526 return -EFAULT; 530 return -EFAULT;
527 531
528 rio_local_write_config_32(md->mport, RIO_COMPONENT_TAG_CSR, comptag); 532 rio_local_write_config_32(md->mport, RIO_COMPONENT_TAG_CSR, comptag);
@@ -837,7 +841,7 @@ err_out:
837 * @xfer: data transfer descriptor structure 841 * @xfer: data transfer descriptor structure
838 */ 842 */
839static int 843static int
840rio_dma_transfer(struct file *filp, uint32_t transfer_mode, 844rio_dma_transfer(struct file *filp, u32 transfer_mode,
841 enum rio_transfer_sync sync, enum dma_data_direction dir, 845 enum rio_transfer_sync sync, enum dma_data_direction dir,
842 struct rio_transfer_io *xfer) 846 struct rio_transfer_io *xfer)
843{ 847{
@@ -875,7 +879,7 @@ rio_dma_transfer(struct file *filp, uint32_t transfer_mode,
875 unsigned long offset; 879 unsigned long offset;
876 long pinned; 880 long pinned;
877 881
878 offset = (unsigned long)xfer->loc_addr & ~PAGE_MASK; 882 offset = (unsigned long)(uintptr_t)xfer->loc_addr & ~PAGE_MASK;
879 nr_pages = PAGE_ALIGN(xfer->length + offset) >> PAGE_SHIFT; 883 nr_pages = PAGE_ALIGN(xfer->length + offset) >> PAGE_SHIFT;
880 884
881 page_list = kmalloc_array(nr_pages, 885 page_list = kmalloc_array(nr_pages,
@@ -1015,19 +1019,20 @@ static int rio_mport_transfer_ioctl(struct file *filp, void __user *arg)
1015 if (unlikely(copy_from_user(&transaction, arg, sizeof(transaction)))) 1019 if (unlikely(copy_from_user(&transaction, arg, sizeof(transaction))))
1016 return -EFAULT; 1020 return -EFAULT;
1017 1021
1018 if (transaction.count != 1) 1022 if (transaction.count != 1) /* only single transfer for now */
1019 return -EINVAL; 1023 return -EINVAL;
1020 1024
1021 if ((transaction.transfer_mode & 1025 if ((transaction.transfer_mode &
1022 priv->md->properties.transfer_mode) == 0) 1026 priv->md->properties.transfer_mode) == 0)
1023 return -ENODEV; 1027 return -ENODEV;
1024 1028
1025 transfer = vmalloc(transaction.count * sizeof(struct rio_transfer_io)); 1029 transfer = vmalloc(transaction.count * sizeof(*transfer));
1026 if (!transfer) 1030 if (!transfer)
1027 return -ENOMEM; 1031 return -ENOMEM;
1028 1032
1029 if (unlikely(copy_from_user(transfer, transaction.block, 1033 if (unlikely(copy_from_user(transfer,
1030 transaction.count * sizeof(struct rio_transfer_io)))) { 1034 (void __user *)(uintptr_t)transaction.block,
1035 transaction.count * sizeof(*transfer)))) {
1031 ret = -EFAULT; 1036 ret = -EFAULT;
1032 goto out_free; 1037 goto out_free;
1033 } 1038 }
@@ -1038,8 +1043,9 @@ static int rio_mport_transfer_ioctl(struct file *filp, void __user *arg)
1038 ret = rio_dma_transfer(filp, transaction.transfer_mode, 1043 ret = rio_dma_transfer(filp, transaction.transfer_mode,
1039 transaction.sync, dir, &transfer[i]); 1044 transaction.sync, dir, &transfer[i]);
1040 1045
1041 if (unlikely(copy_to_user(transaction.block, transfer, 1046 if (unlikely(copy_to_user((void __user *)(uintptr_t)transaction.block,
1042 transaction.count * sizeof(struct rio_transfer_io)))) 1047 transfer,
1048 transaction.count * sizeof(*transfer))))
1043 ret = -EFAULT; 1049 ret = -EFAULT;
1044 1050
1045out_free: 1051out_free:
@@ -1129,11 +1135,11 @@ err_tmo:
1129} 1135}
1130 1136
1131static int rio_mport_create_dma_mapping(struct mport_dev *md, struct file *filp, 1137static int rio_mport_create_dma_mapping(struct mport_dev *md, struct file *filp,
1132 uint64_t size, struct rio_mport_mapping **mapping) 1138 u64 size, struct rio_mport_mapping **mapping)
1133{ 1139{
1134 struct rio_mport_mapping *map; 1140 struct rio_mport_mapping *map;
1135 1141
1136 map = kzalloc(sizeof(struct rio_mport_mapping), GFP_KERNEL); 1142 map = kzalloc(sizeof(*map), GFP_KERNEL);
1137 if (map == NULL) 1143 if (map == NULL)
1138 return -ENOMEM; 1144 return -ENOMEM;
1139 1145
@@ -1165,7 +1171,7 @@ static int rio_mport_alloc_dma(struct file *filp, void __user *arg)
1165 struct rio_mport_mapping *mapping = NULL; 1171 struct rio_mport_mapping *mapping = NULL;
1166 int ret; 1172 int ret;
1167 1173
1168 if (unlikely(copy_from_user(&map, arg, sizeof(struct rio_dma_mem)))) 1174 if (unlikely(copy_from_user(&map, arg, sizeof(map))))
1169 return -EFAULT; 1175 return -EFAULT;
1170 1176
1171 ret = rio_mport_create_dma_mapping(md, filp, map.length, &mapping); 1177 ret = rio_mport_create_dma_mapping(md, filp, map.length, &mapping);
@@ -1174,7 +1180,7 @@ static int rio_mport_alloc_dma(struct file *filp, void __user *arg)
1174 1180
1175 map.dma_handle = mapping->phys_addr; 1181 map.dma_handle = mapping->phys_addr;
1176 1182
1177 if (unlikely(copy_to_user(arg, &map, sizeof(struct rio_dma_mem)))) { 1183 if (unlikely(copy_to_user(arg, &map, sizeof(map)))) {
1178 mutex_lock(&md->buf_mutex); 1184 mutex_lock(&md->buf_mutex);
1179 kref_put(&mapping->ref, mport_release_mapping); 1185 kref_put(&mapping->ref, mport_release_mapping);
1180 mutex_unlock(&md->buf_mutex); 1186 mutex_unlock(&md->buf_mutex);
@@ -1192,7 +1198,7 @@ static int rio_mport_free_dma(struct file *filp, void __user *arg)
1192 int ret = -EFAULT; 1198 int ret = -EFAULT;
1193 struct rio_mport_mapping *map, *_map; 1199 struct rio_mport_mapping *map, *_map;
1194 1200
1195 if (copy_from_user(&handle, arg, sizeof(u64))) 1201 if (copy_from_user(&handle, arg, sizeof(handle)))
1196 return -EFAULT; 1202 return -EFAULT;
1197 rmcd_debug(EXIT, "filp=%p", filp); 1203 rmcd_debug(EXIT, "filp=%p", filp);
1198 1204
@@ -1242,14 +1248,18 @@ static int rio_mport_free_dma(struct file *filp, void __user *arg)
1242 1248
1243static int 1249static int
1244rio_mport_create_inbound_mapping(struct mport_dev *md, struct file *filp, 1250rio_mport_create_inbound_mapping(struct mport_dev *md, struct file *filp,
1245 u64 raddr, u32 size, 1251 u64 raddr, u64 size,
1246 struct rio_mport_mapping **mapping) 1252 struct rio_mport_mapping **mapping)
1247{ 1253{
1248 struct rio_mport *mport = md->mport; 1254 struct rio_mport *mport = md->mport;
1249 struct rio_mport_mapping *map; 1255 struct rio_mport_mapping *map;
1250 int ret; 1256 int ret;
1251 1257
1252 map = kzalloc(sizeof(struct rio_mport_mapping), GFP_KERNEL); 1258 /* rio_map_inb_region() accepts u32 size */
1259 if (size > 0xffffffff)
1260 return -EINVAL;
1261
1262 map = kzalloc(sizeof(*map), GFP_KERNEL);
1253 if (map == NULL) 1263 if (map == NULL)
1254 return -ENOMEM; 1264 return -ENOMEM;
1255 1265
@@ -1262,7 +1272,7 @@ rio_mport_create_inbound_mapping(struct mport_dev *md, struct file *filp,
1262 1272
1263 if (raddr == RIO_MAP_ANY_ADDR) 1273 if (raddr == RIO_MAP_ANY_ADDR)
1264 raddr = map->phys_addr; 1274 raddr = map->phys_addr;
1265 ret = rio_map_inb_region(mport, map->phys_addr, raddr, size, 0); 1275 ret = rio_map_inb_region(mport, map->phys_addr, raddr, (u32)size, 0);
1266 if (ret < 0) 1276 if (ret < 0)
1267 goto err_map_inb; 1277 goto err_map_inb;
1268 1278
@@ -1288,7 +1298,7 @@ err_dma_alloc:
1288 1298
1289static int 1299static int
1290rio_mport_get_inbound_mapping(struct mport_dev *md, struct file *filp, 1300rio_mport_get_inbound_mapping(struct mport_dev *md, struct file *filp,
1291 u64 raddr, u32 size, 1301 u64 raddr, u64 size,
1292 struct rio_mport_mapping **mapping) 1302 struct rio_mport_mapping **mapping)
1293{ 1303{
1294 struct rio_mport_mapping *map; 1304 struct rio_mport_mapping *map;
@@ -1331,7 +1341,7 @@ static int rio_mport_map_inbound(struct file *filp, void __user *arg)
1331 1341
1332 if (!md->mport->ops->map_inb) 1342 if (!md->mport->ops->map_inb)
1333 return -EPROTONOSUPPORT; 1343 return -EPROTONOSUPPORT;
1334 if (unlikely(copy_from_user(&map, arg, sizeof(struct rio_mmap)))) 1344 if (unlikely(copy_from_user(&map, arg, sizeof(map))))
1335 return -EFAULT; 1345 return -EFAULT;
1336 1346
1337 rmcd_debug(IBW, "%s filp=%p", dev_name(&priv->md->dev), filp); 1347 rmcd_debug(IBW, "%s filp=%p", dev_name(&priv->md->dev), filp);
@@ -1344,7 +1354,7 @@ static int rio_mport_map_inbound(struct file *filp, void __user *arg)
1344 map.handle = mapping->phys_addr; 1354 map.handle = mapping->phys_addr;
1345 map.rio_addr = mapping->rio_addr; 1355 map.rio_addr = mapping->rio_addr;
1346 1356
1347 if (unlikely(copy_to_user(arg, &map, sizeof(struct rio_mmap)))) { 1357 if (unlikely(copy_to_user(arg, &map, sizeof(map)))) {
1348 /* Delete mapping if it was created by this request */ 1358 /* Delete mapping if it was created by this request */
1349 if (ret == 0 && mapping->filp == filp) { 1359 if (ret == 0 && mapping->filp == filp) {
1350 mutex_lock(&md->buf_mutex); 1360 mutex_lock(&md->buf_mutex);
@@ -1375,7 +1385,7 @@ static int rio_mport_inbound_free(struct file *filp, void __user *arg)
1375 if (!md->mport->ops->unmap_inb) 1385 if (!md->mport->ops->unmap_inb)
1376 return -EPROTONOSUPPORT; 1386 return -EPROTONOSUPPORT;
1377 1387
1378 if (copy_from_user(&handle, arg, sizeof(u64))) 1388 if (copy_from_user(&handle, arg, sizeof(handle)))
1379 return -EFAULT; 1389 return -EFAULT;
1380 1390
1381 mutex_lock(&md->buf_mutex); 1391 mutex_lock(&md->buf_mutex);
@@ -1401,7 +1411,7 @@ static int rio_mport_inbound_free(struct file *filp, void __user *arg)
1401static int maint_port_idx_get(struct mport_cdev_priv *priv, void __user *arg) 1411static int maint_port_idx_get(struct mport_cdev_priv *priv, void __user *arg)
1402{ 1412{
1403 struct mport_dev *md = priv->md; 1413 struct mport_dev *md = priv->md;
1404 uint32_t port_idx = md->mport->index; 1414 u32 port_idx = md->mport->index;
1405 1415
1406 rmcd_debug(MPORT, "port_index=%d", port_idx); 1416 rmcd_debug(MPORT, "port_index=%d", port_idx);
1407 1417
@@ -1451,7 +1461,7 @@ static void rio_mport_doorbell_handler(struct rio_mport *mport, void *dev_id,
1451 handled = 0; 1461 handled = 0;
1452 spin_lock(&data->db_lock); 1462 spin_lock(&data->db_lock);
1453 list_for_each_entry(db_filter, &data->doorbells, data_node) { 1463 list_for_each_entry(db_filter, &data->doorbells, data_node) {
1454 if (((db_filter->filter.rioid == 0xffffffff || 1464 if (((db_filter->filter.rioid == RIO_INVALID_DESTID ||
1455 db_filter->filter.rioid == src)) && 1465 db_filter->filter.rioid == src)) &&
1456 info >= db_filter->filter.low && 1466 info >= db_filter->filter.low &&
1457 info <= db_filter->filter.high) { 1467 info <= db_filter->filter.high) {
@@ -1525,6 +1535,9 @@ static int rio_mport_remove_db_filter(struct mport_cdev_priv *priv,
1525 if (copy_from_user(&filter, arg, sizeof(filter))) 1535 if (copy_from_user(&filter, arg, sizeof(filter)))
1526 return -EFAULT; 1536 return -EFAULT;
1527 1537
1538 if (filter.low > filter.high)
1539 return -EINVAL;
1540
1528 spin_lock_irqsave(&priv->md->db_lock, flags); 1541 spin_lock_irqsave(&priv->md->db_lock, flags);
1529 list_for_each_entry(db_filter, &priv->db_filters, priv_node) { 1542 list_for_each_entry(db_filter, &priv->db_filters, priv_node) {
1530 if (db_filter->filter.rioid == filter.rioid && 1543 if (db_filter->filter.rioid == filter.rioid &&
@@ -1737,10 +1750,10 @@ static int rio_mport_add_riodev(struct mport_cdev_priv *priv,
1737 return -EEXIST; 1750 return -EEXIST;
1738 } 1751 }
1739 1752
1740 size = sizeof(struct rio_dev); 1753 size = sizeof(*rdev);
1741 mport = md->mport; 1754 mport = md->mport;
1742 destid = (u16)dev_info.destid; 1755 destid = dev_info.destid;
1743 hopcount = (u8)dev_info.hopcount; 1756 hopcount = dev_info.hopcount;
1744 1757
1745 if (rio_mport_read_config_32(mport, destid, hopcount, 1758 if (rio_mport_read_config_32(mport, destid, hopcount,
1746 RIO_PEF_CAR, &rval)) 1759 RIO_PEF_CAR, &rval))
@@ -1872,8 +1885,8 @@ static int rio_mport_del_riodev(struct mport_cdev_priv *priv, void __user *arg)
1872 do { 1885 do {
1873 rdev = rio_get_comptag(dev_info.comptag, rdev); 1886 rdev = rio_get_comptag(dev_info.comptag, rdev);
1874 if (rdev && rdev->dev.parent == &mport->net->dev && 1887 if (rdev && rdev->dev.parent == &mport->net->dev &&
1875 rdev->destid == (u16)dev_info.destid && 1888 rdev->destid == dev_info.destid &&
1876 rdev->hopcount == (u8)dev_info.hopcount) 1889 rdev->hopcount == dev_info.hopcount)
1877 break; 1890 break;
1878 } while (rdev); 1891 } while (rdev);
1879 } 1892 }
@@ -2146,8 +2159,8 @@ static long mport_cdev_ioctl(struct file *filp,
2146 return maint_port_idx_get(data, (void __user *)arg); 2159 return maint_port_idx_get(data, (void __user *)arg);
2147 case RIO_MPORT_GET_PROPERTIES: 2160 case RIO_MPORT_GET_PROPERTIES:
2148 md->properties.hdid = md->mport->host_deviceid; 2161 md->properties.hdid = md->mport->host_deviceid;
2149 if (copy_to_user((void __user *)arg, &(data->md->properties), 2162 if (copy_to_user((void __user *)arg, &(md->properties),
2150 sizeof(data->md->properties))) 2163 sizeof(md->properties)))
2151 return -EFAULT; 2164 return -EFAULT;
2152 return 0; 2165 return 0;
2153 case RIO_ENABLE_DOORBELL_RANGE: 2166 case RIO_ENABLE_DOORBELL_RANGE:
@@ -2159,11 +2172,11 @@ static long mport_cdev_ioctl(struct file *filp,
2159 case RIO_DISABLE_PORTWRITE_RANGE: 2172 case RIO_DISABLE_PORTWRITE_RANGE:
2160 return rio_mport_remove_pw_filter(data, (void __user *)arg); 2173 return rio_mport_remove_pw_filter(data, (void __user *)arg);
2161 case RIO_SET_EVENT_MASK: 2174 case RIO_SET_EVENT_MASK:
2162 data->event_mask = arg; 2175 data->event_mask = (u32)arg;
2163 return 0; 2176 return 0;
2164 case RIO_GET_EVENT_MASK: 2177 case RIO_GET_EVENT_MASK:
2165 if (copy_to_user((void __user *)arg, &data->event_mask, 2178 if (copy_to_user((void __user *)arg, &data->event_mask,
2166 sizeof(data->event_mask))) 2179 sizeof(u32)))
2167 return -EFAULT; 2180 return -EFAULT;
2168 return 0; 2181 return 0;
2169 case RIO_MAP_OUTBOUND: 2182 case RIO_MAP_OUTBOUND:
@@ -2374,7 +2387,7 @@ static ssize_t mport_write(struct file *filp, const char __user *buf,
2374 return -EINVAL; 2387 return -EINVAL;
2375 2388
2376 ret = rio_mport_send_doorbell(mport, 2389 ret = rio_mport_send_doorbell(mport,
2377 (u16)event.u.doorbell.rioid, 2390 event.u.doorbell.rioid,
2378 event.u.doorbell.payload); 2391 event.u.doorbell.payload);
2379 if (ret < 0) 2392 if (ret < 0)
2380 return ret; 2393 return ret;
@@ -2421,7 +2434,7 @@ static struct mport_dev *mport_cdev_add(struct rio_mport *mport)
2421 struct mport_dev *md; 2434 struct mport_dev *md;
2422 struct rio_mport_attr attr; 2435 struct rio_mport_attr attr;
2423 2436
2424 md = kzalloc(sizeof(struct mport_dev), GFP_KERNEL); 2437 md = kzalloc(sizeof(*md), GFP_KERNEL);
2425 if (!md) { 2438 if (!md) {
2426 rmcd_error("Unable allocate a device object"); 2439 rmcd_error("Unable allocate a device object");
2427 return NULL; 2440 return NULL;
@@ -2470,7 +2483,7 @@ static struct mport_dev *mport_cdev_add(struct rio_mport *mport)
2470 /* The transfer_mode property will be returned through mport query 2483 /* The transfer_mode property will be returned through mport query
2471 * interface 2484 * interface
2472 */ 2485 */
2473#ifdef CONFIG_PPC /* for now: only on Freescale's SoCs */ 2486#ifdef CONFIG_FSL_RIO /* for now: only on Freescale's SoCs */
2474 md->properties.transfer_mode |= RIO_TRANSFER_MODE_MAPPED; 2487 md->properties.transfer_mode |= RIO_TRANSFER_MODE_MAPPED;
2475#else 2488#else
2476 md->properties.transfer_mode |= RIO_TRANSFER_MODE_TRANSFER; 2489 md->properties.transfer_mode |= RIO_TRANSFER_MODE_TRANSFER;
diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c
index 14718a9ffcfb..460c855be0d0 100644
--- a/drivers/usb/core/port.c
+++ b/drivers/usb/core/port.c
@@ -249,18 +249,12 @@ static int usb_port_runtime_suspend(struct device *dev)
249 249
250 return retval; 250 return retval;
251} 251}
252
253static int usb_port_prepare(struct device *dev)
254{
255 return 1;
256}
257#endif 252#endif
258 253
259static const struct dev_pm_ops usb_port_pm_ops = { 254static const struct dev_pm_ops usb_port_pm_ops = {
260#ifdef CONFIG_PM 255#ifdef CONFIG_PM
261 .runtime_suspend = usb_port_runtime_suspend, 256 .runtime_suspend = usb_port_runtime_suspend,
262 .runtime_resume = usb_port_runtime_resume, 257 .runtime_resume = usb_port_runtime_resume,
263 .prepare = usb_port_prepare,
264#endif 258#endif
265}; 259};
266 260
diff --git a/drivers/usb/core/usb.c b/drivers/usb/core/usb.c
index dcb85e3cd5a7..479187c32571 100644
--- a/drivers/usb/core/usb.c
+++ b/drivers/usb/core/usb.c
@@ -312,13 +312,7 @@ static int usb_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
312 312
313static int usb_dev_prepare(struct device *dev) 313static int usb_dev_prepare(struct device *dev)
314{ 314{
315 struct usb_device *udev = to_usb_device(dev); 315 return 0; /* Implement eventually? */
316
317 /* Return 0 if the current wakeup setting is wrong, otherwise 1 */
318 if (udev->do_remote_wakeup != device_may_wakeup(dev))
319 return 0;
320
321 return 1;
322} 316}
323 317
324static void usb_dev_complete(struct device *dev) 318static void usb_dev_complete(struct device *dev)
diff --git a/drivers/usb/musb/jz4740.c b/drivers/usb/musb/jz4740.c
index 5e5a8fa005f8..bc8889956d17 100644
--- a/drivers/usb/musb/jz4740.c
+++ b/drivers/usb/musb/jz4740.c
@@ -83,9 +83,9 @@ static int jz4740_musb_init(struct musb *musb)
83{ 83{
84 usb_phy_generic_register(); 84 usb_phy_generic_register();
85 musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2); 85 musb->xceiv = usb_get_phy(USB_PHY_TYPE_USB2);
86 if (!musb->xceiv) { 86 if (IS_ERR(musb->xceiv)) {
87 pr_err("HS UDC: no transceiver configured\n"); 87 pr_err("HS UDC: no transceiver configured\n");
88 return -ENODEV; 88 return PTR_ERR(musb->xceiv);
89 } 89 }
90 90
91 /* Silicon does not implement ConfigData register. 91 /* Silicon does not implement ConfigData register.
diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index 87bd578799a8..152865b36522 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -1164,12 +1164,12 @@ static int musb_gadget_disable(struct usb_ep *ep)
1164 musb_writew(epio, MUSB_RXMAXP, 0); 1164 musb_writew(epio, MUSB_RXMAXP, 0);
1165 } 1165 }
1166 1166
1167 musb_ep->desc = NULL;
1168 musb_ep->end_point.desc = NULL;
1169
1170 /* abort all pending DMA and requests */ 1167 /* abort all pending DMA and requests */
1171 nuke(musb_ep, -ESHUTDOWN); 1168 nuke(musb_ep, -ESHUTDOWN);
1172 1169
1170 musb_ep->desc = NULL;
1171 musb_ep->end_point.desc = NULL;
1172
1173 schedule_work(&musb->irq_work); 1173 schedule_work(&musb->irq_work);
1174 1174
1175 spin_unlock_irqrestore(&(musb->lock), flags); 1175 spin_unlock_irqrestore(&(musb->lock), flags);
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index 58487a473521..2f8ad7f1f482 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -2735,7 +2735,7 @@ static const struct hc_driver musb_hc_driver = {
2735 .description = "musb-hcd", 2735 .description = "musb-hcd",
2736 .product_desc = "MUSB HDRC host driver", 2736 .product_desc = "MUSB HDRC host driver",
2737 .hcd_priv_size = sizeof(struct musb *), 2737 .hcd_priv_size = sizeof(struct musb *),
2738 .flags = HCD_USB2 | HCD_MEMORY | HCD_BH, 2738 .flags = HCD_USB2 | HCD_MEMORY,
2739 2739
2740 /* not using irq handler or reset hooks from usbcore, since 2740 /* not using irq handler or reset hooks from usbcore, since
2741 * those must be shared with peripheral code for OTG configs 2741 * those must be shared with peripheral code for OTG configs
diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
index dd47823bb014..7c9f25e9c422 100644
--- a/drivers/usb/serial/cp210x.c
+++ b/drivers/usb/serial/cp210x.c
@@ -109,6 +109,7 @@ static const struct usb_device_id id_table[] = {
109 { USB_DEVICE(0x10C4, 0x826B) }, /* Cygnal Integrated Products, Inc., Fasttrax GPS demonstration module */ 109 { USB_DEVICE(0x10C4, 0x826B) }, /* Cygnal Integrated Products, Inc., Fasttrax GPS demonstration module */
110 { USB_DEVICE(0x10C4, 0x8281) }, /* Nanotec Plug & Drive */ 110 { USB_DEVICE(0x10C4, 0x8281) }, /* Nanotec Plug & Drive */
111 { USB_DEVICE(0x10C4, 0x8293) }, /* Telegesis ETRX2USB */ 111 { USB_DEVICE(0x10C4, 0x8293) }, /* Telegesis ETRX2USB */
112 { USB_DEVICE(0x10C4, 0x82F4) }, /* Starizona MicroTouch */
112 { USB_DEVICE(0x10C4, 0x82F9) }, /* Procyon AVS */ 113 { USB_DEVICE(0x10C4, 0x82F9) }, /* Procyon AVS */
113 { USB_DEVICE(0x10C4, 0x8341) }, /* Siemens MC35PU GPRS Modem */ 114 { USB_DEVICE(0x10C4, 0x8341) }, /* Siemens MC35PU GPRS Modem */
114 { USB_DEVICE(0x10C4, 0x8382) }, /* Cygnal Integrated Products, Inc. */ 115 { USB_DEVICE(0x10C4, 0x8382) }, /* Cygnal Integrated Products, Inc. */
@@ -118,6 +119,7 @@ static const struct usb_device_id id_table[] = {
118 { USB_DEVICE(0x10C4, 0x8418) }, /* IRZ Automation Teleport SG-10 GSM/GPRS Modem */ 119 { USB_DEVICE(0x10C4, 0x8418) }, /* IRZ Automation Teleport SG-10 GSM/GPRS Modem */
119 { USB_DEVICE(0x10C4, 0x846E) }, /* BEI USB Sensor Interface (VCP) */ 120 { USB_DEVICE(0x10C4, 0x846E) }, /* BEI USB Sensor Interface (VCP) */
120 { USB_DEVICE(0x10C4, 0x8477) }, /* Balluff RFID */ 121 { USB_DEVICE(0x10C4, 0x8477) }, /* Balluff RFID */
122 { USB_DEVICE(0x10C4, 0x84B6) }, /* Starizona Hyperion */
121 { USB_DEVICE(0x10C4, 0x85EA) }, /* AC-Services IBUS-IF */ 123 { USB_DEVICE(0x10C4, 0x85EA) }, /* AC-Services IBUS-IF */
122 { USB_DEVICE(0x10C4, 0x85EB) }, /* AC-Services CIS-IBUS */ 124 { USB_DEVICE(0x10C4, 0x85EB) }, /* AC-Services CIS-IBUS */
123 { USB_DEVICE(0x10C4, 0x85F8) }, /* Virtenio Preon32 */ 125 { USB_DEVICE(0x10C4, 0x85F8) }, /* Virtenio Preon32 */
@@ -141,6 +143,8 @@ static const struct usb_device_id id_table[] = {
141 { USB_DEVICE(0x10C4, 0xF004) }, /* Elan Digital Systems USBcount50 */ 143 { USB_DEVICE(0x10C4, 0xF004) }, /* Elan Digital Systems USBcount50 */
142 { USB_DEVICE(0x10C5, 0xEA61) }, /* Silicon Labs MobiData GPRS USB Modem */ 144 { USB_DEVICE(0x10C5, 0xEA61) }, /* Silicon Labs MobiData GPRS USB Modem */
143 { USB_DEVICE(0x10CE, 0xEA6A) }, /* Silicon Labs MobiData GPRS USB Modem 100EU */ 145 { USB_DEVICE(0x10CE, 0xEA6A) }, /* Silicon Labs MobiData GPRS USB Modem 100EU */
146 { USB_DEVICE(0x12B8, 0xEC60) }, /* Link G4 ECU */
147 { USB_DEVICE(0x12B8, 0xEC62) }, /* Link G4+ ECU */
144 { USB_DEVICE(0x13AD, 0x9999) }, /* Baltech card reader */ 148 { USB_DEVICE(0x13AD, 0x9999) }, /* Baltech card reader */
145 { USB_DEVICE(0x1555, 0x0004) }, /* Owen AC4 USB-RS485 Converter */ 149 { USB_DEVICE(0x1555, 0x0004) }, /* Owen AC4 USB-RS485 Converter */
146 { USB_DEVICE(0x166A, 0x0201) }, /* Clipsal 5500PACA C-Bus Pascal Automation Controller */ 150 { USB_DEVICE(0x166A, 0x0201) }, /* Clipsal 5500PACA C-Bus Pascal Automation Controller */
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
index 5c802d47892c..ca6bfddaacad 100644
--- a/drivers/virtio/virtio_ring.c
+++ b/drivers/virtio/virtio_ring.c
@@ -1006,7 +1006,7 @@ struct virtqueue *vring_create_virtqueue(
1006 const char *name) 1006 const char *name)
1007{ 1007{
1008 struct virtqueue *vq; 1008 struct virtqueue *vq;
1009 void *queue; 1009 void *queue = NULL;
1010 dma_addr_t dma_addr; 1010 dma_addr_t dma_addr;
1011 size_t queue_size_in_bytes; 1011 size_t queue_size_in_bytes;
1012 struct vring vring; 1012 struct vring vring;
diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
index 9781e0dd59d6..d46839f51e73 100644
--- a/drivers/xen/balloon.c
+++ b/drivers/xen/balloon.c
@@ -151,6 +151,8 @@ static DECLARE_WAIT_QUEUE_HEAD(balloon_wq);
151static void balloon_process(struct work_struct *work); 151static void balloon_process(struct work_struct *work);
152static DECLARE_DELAYED_WORK(balloon_worker, balloon_process); 152static DECLARE_DELAYED_WORK(balloon_worker, balloon_process);
153 153
154static void release_memory_resource(struct resource *resource);
155
154/* When ballooning out (allocating memory to return to Xen) we don't really 156/* When ballooning out (allocating memory to return to Xen) we don't really
155 want the kernel to try too hard since that can trigger the oom killer. */ 157 want the kernel to try too hard since that can trigger the oom killer. */
156#define GFP_BALLOON \ 158#define GFP_BALLOON \
@@ -267,6 +269,20 @@ static struct resource *additional_memory_resource(phys_addr_t size)
267 return NULL; 269 return NULL;
268 } 270 }
269 271
272#ifdef CONFIG_SPARSEMEM
273 {
274 unsigned long limit = 1UL << (MAX_PHYSMEM_BITS - PAGE_SHIFT);
275 unsigned long pfn = res->start >> PAGE_SHIFT;
276
277 if (pfn > limit) {
278 pr_err("New System RAM resource outside addressable RAM (%lu > %lu)\n",
279 pfn, limit);
280 release_memory_resource(res);
281 return NULL;
282 }
283 }
284#endif
285
270 return res; 286 return res;
271} 287}
272 288
diff --git a/drivers/xen/evtchn.c b/drivers/xen/evtchn.c
index 38272ad24551..f4edd6df3df2 100644
--- a/drivers/xen/evtchn.c
+++ b/drivers/xen/evtchn.c
@@ -316,7 +316,6 @@ static int evtchn_resize_ring(struct per_user_data *u)
316{ 316{
317 unsigned int new_size; 317 unsigned int new_size;
318 evtchn_port_t *new_ring, *old_ring; 318 evtchn_port_t *new_ring, *old_ring;
319 unsigned int p, c;
320 319
321 /* 320 /*
322 * Ensure the ring is large enough to capture all possible 321 * Ensure the ring is large enough to capture all possible
@@ -346,20 +345,17 @@ static int evtchn_resize_ring(struct per_user_data *u)
346 /* 345 /*
347 * Copy the old ring contents to the new ring. 346 * Copy the old ring contents to the new ring.
348 * 347 *
349 * If the ring contents crosses the end of the current ring, 348 * To take care of wrapping, a full ring, and the new index
350 * it needs to be copied in two chunks. 349 * pointing into the second half, simply copy the old contents
350 * twice.
351 * 351 *
352 * +---------+ +------------------+ 352 * +---------+ +------------------+
353 * |34567 12| -> | 1234567 | 353 * |34567 12| -> |34567 1234567 12|
354 * +-----p-c-+ +------------------+ 354 * +-----p-c-+ +-------c------p---+
355 */ 355 */
356 p = evtchn_ring_offset(u, u->ring_prod); 356 memcpy(new_ring, old_ring, u->ring_size * sizeof(*u->ring));
357 c = evtchn_ring_offset(u, u->ring_cons); 357 memcpy(new_ring + u->ring_size, old_ring,
358 if (p < c) { 358 u->ring_size * sizeof(*u->ring));
359 memcpy(new_ring + c, u->ring + c, (u->ring_size - c) * sizeof(*u->ring));
360 memcpy(new_ring + u->ring_size, u->ring, p * sizeof(*u->ring));
361 } else
362 memcpy(new_ring + c, u->ring + c, (p - c) * sizeof(*u->ring));
363 359
364 u->ring = new_ring; 360 u->ring = new_ring;
365 u->ring_size = new_size; 361 u->ring_size = new_size;
diff --git a/fs/pnode.c b/fs/pnode.c
index c524fdddc7fb..99899705b105 100644
--- a/fs/pnode.c
+++ b/fs/pnode.c
@@ -198,7 +198,7 @@ static struct mount *next_group(struct mount *m, struct mount *origin)
198 198
199/* all accesses are serialized by namespace_sem */ 199/* all accesses are serialized by namespace_sem */
200static struct user_namespace *user_ns; 200static struct user_namespace *user_ns;
201static struct mount *last_dest, *last_source, *dest_master; 201static struct mount *last_dest, *first_source, *last_source, *dest_master;
202static struct mountpoint *mp; 202static struct mountpoint *mp;
203static struct hlist_head *list; 203static struct hlist_head *list;
204 204
@@ -221,20 +221,22 @@ static int propagate_one(struct mount *m)
221 type = CL_MAKE_SHARED; 221 type = CL_MAKE_SHARED;
222 } else { 222 } else {
223 struct mount *n, *p; 223 struct mount *n, *p;
224 bool done;
224 for (n = m; ; n = p) { 225 for (n = m; ; n = p) {
225 p = n->mnt_master; 226 p = n->mnt_master;
226 if (p == dest_master || IS_MNT_MARKED(p)) { 227 if (p == dest_master || IS_MNT_MARKED(p))
227 while (last_dest->mnt_master != p) {
228 last_source = last_source->mnt_master;
229 last_dest = last_source->mnt_parent;
230 }
231 if (!peers(n, last_dest)) {
232 last_source = last_source->mnt_master;
233 last_dest = last_source->mnt_parent;
234 }
235 break; 228 break;
236 }
237 } 229 }
230 do {
231 struct mount *parent = last_source->mnt_parent;
232 if (last_source == first_source)
233 break;
234 done = parent->mnt_master == p;
235 if (done && peers(n, parent))
236 break;
237 last_source = last_source->mnt_master;
238 } while (!done);
239
238 type = CL_SLAVE; 240 type = CL_SLAVE;
239 /* beginning of peer group among the slaves? */ 241 /* beginning of peer group among the slaves? */
240 if (IS_MNT_SHARED(m)) 242 if (IS_MNT_SHARED(m))
@@ -286,6 +288,7 @@ int propagate_mnt(struct mount *dest_mnt, struct mountpoint *dest_mp,
286 */ 288 */
287 user_ns = current->nsproxy->mnt_ns->user_ns; 289 user_ns = current->nsproxy->mnt_ns->user_ns;
288 last_dest = dest_mnt; 290 last_dest = dest_mnt;
291 first_source = source_mnt;
289 last_source = source_mnt; 292 last_source = source_mnt;
290 mp = dest_mp; 293 mp = dest_mp;
291 list = tree_list; 294 list = tree_list;
diff --git a/fs/proc/base.c b/fs/proc/base.c
index b1755b23893e..92e37e224cd2 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -955,7 +955,8 @@ static ssize_t environ_read(struct file *file, char __user *buf,
955 struct mm_struct *mm = file->private_data; 955 struct mm_struct *mm = file->private_data;
956 unsigned long env_start, env_end; 956 unsigned long env_start, env_end;
957 957
958 if (!mm) 958 /* Ensure the process spawned far enough to have an environment. */
959 if (!mm || !mm->env_end)
959 return 0; 960 return 0;
960 961
961 page = (char *)__get_free_page(GFP_TEMPORARY); 962 page = (char *)__get_free_page(GFP_TEMPORARY);
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 14362a84c78e..3a932501d690 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -394,13 +394,13 @@ struct acpi_data_node {
394 394
395static inline bool is_acpi_node(struct fwnode_handle *fwnode) 395static inline bool is_acpi_node(struct fwnode_handle *fwnode)
396{ 396{
397 return fwnode && (fwnode->type == FWNODE_ACPI 397 return !IS_ERR_OR_NULL(fwnode) && (fwnode->type == FWNODE_ACPI
398 || fwnode->type == FWNODE_ACPI_DATA); 398 || fwnode->type == FWNODE_ACPI_DATA);
399} 399}
400 400
401static inline bool is_acpi_device_node(struct fwnode_handle *fwnode) 401static inline bool is_acpi_device_node(struct fwnode_handle *fwnode)
402{ 402{
403 return fwnode && fwnode->type == FWNODE_ACPI; 403 return !IS_ERR_OR_NULL(fwnode) && fwnode->type == FWNODE_ACPI;
404} 404}
405 405
406static inline struct acpi_device *to_acpi_device_node(struct fwnode_handle *fwnode) 406static inline struct acpi_device *to_acpi_device_node(struct fwnode_handle *fwnode)
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index eeae401a2412..3d5202eda22f 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -246,7 +246,7 @@
246#define __HAVE_BUILTIN_BSWAP32__ 246#define __HAVE_BUILTIN_BSWAP32__
247#define __HAVE_BUILTIN_BSWAP64__ 247#define __HAVE_BUILTIN_BSWAP64__
248#endif 248#endif
249#if GCC_VERSION >= 40800 || (defined(__powerpc__) && GCC_VERSION >= 40600) 249#if GCC_VERSION >= 40800
250#define __HAVE_BUILTIN_BSWAP16__ 250#define __HAVE_BUILTIN_BSWAP16__
251#endif 251#endif
252#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ 252#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
diff --git a/include/linux/of.h b/include/linux/of.h
index 7fcb681baadf..31758036787c 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -133,7 +133,7 @@ void of_core_init(void);
133 133
134static inline bool is_of_node(struct fwnode_handle *fwnode) 134static inline bool is_of_node(struct fwnode_handle *fwnode)
135{ 135{
136 return fwnode && fwnode->type == FWNODE_OF; 136 return !IS_ERR_OR_NULL(fwnode) && fwnode->type == FWNODE_OF;
137} 137}
138 138
139static inline struct device_node *to_of_node(struct fwnode_handle *fwnode) 139static inline struct device_node *to_of_node(struct fwnode_handle *fwnode)
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h
index f4ed4f1b0c77..6b052aa7b5b7 100644
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -517,6 +517,27 @@ static inline int PageTransCompound(struct page *page)
517} 517}
518 518
519/* 519/*
520 * PageTransCompoundMap is the same as PageTransCompound, but it also
521 * guarantees the primary MMU has the entire compound page mapped
522 * through pmd_trans_huge, which in turn guarantees the secondary MMUs
523 * can also map the entire compound page. This allows the secondary
524 * MMUs to call get_user_pages() only once for each compound page and
525 * to immediately map the entire compound page with a single secondary
526 * MMU fault. If there will be a pmd split later, the secondary MMUs
527 * will get an update through the MMU notifier invalidation through
528 * split_huge_pmd().
529 *
530 * Unlike PageTransCompound, this is safe to be called only while
531 * split_huge_pmd() cannot run from under us, like if protected by the
532 * MMU notifier, otherwise it may result in page->_mapcount < 0 false
533 * positives.
534 */
535static inline int PageTransCompoundMap(struct page *page)
536{
537 return PageTransCompound(page) && atomic_read(&page->_mapcount) < 0;
538}
539
540/*
520 * PageTransTail returns true for both transparent huge pages 541 * PageTransTail returns true for both transparent huge pages
521 * and hugetlbfs pages, so it should only be called when it's known 542 * and hugetlbfs pages, so it should only be called when it's known
522 * that hugetlbfs pages aren't involved. 543 * that hugetlbfs pages aren't involved.
@@ -559,6 +580,7 @@ static inline int TestClearPageDoubleMap(struct page *page)
559#else 580#else
560TESTPAGEFLAG_FALSE(TransHuge) 581TESTPAGEFLAG_FALSE(TransHuge)
561TESTPAGEFLAG_FALSE(TransCompound) 582TESTPAGEFLAG_FALSE(TransCompound)
583TESTPAGEFLAG_FALSE(TransCompoundMap)
562TESTPAGEFLAG_FALSE(TransTail) 584TESTPAGEFLAG_FALSE(TransTail)
563TESTPAGEFLAG_FALSE(DoubleMap) 585TESTPAGEFLAG_FALSE(DoubleMap)
564 TESTSETFLAG_FALSE(DoubleMap) 586 TESTSETFLAG_FALSE(DoubleMap)
diff --git a/include/linux/swap.h b/include/linux/swap.h
index 2b83359c19ca..0a4cd4703f40 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -533,6 +533,10 @@ static inline swp_entry_t get_swap_page(void)
533#ifdef CONFIG_MEMCG 533#ifdef CONFIG_MEMCG
534static inline int mem_cgroup_swappiness(struct mem_cgroup *memcg) 534static inline int mem_cgroup_swappiness(struct mem_cgroup *memcg)
535{ 535{
536 /* Cgroup2 doesn't have per-cgroup swappiness */
537 if (cgroup_subsys_on_dfl(memory_cgrp_subsys))
538 return vm_swappiness;
539
536 /* root ? */ 540 /* root ? */
537 if (mem_cgroup_disabled() || !memcg->css.parent) 541 if (mem_cgroup_disabled() || !memcg->css.parent)
538 return vm_swappiness; 542 return vm_swappiness;
diff --git a/include/net/netns/xfrm.h b/include/net/netns/xfrm.h
index 730d82ad6ee5..24cd3949a9a4 100644
--- a/include/net/netns/xfrm.h
+++ b/include/net/netns/xfrm.h
@@ -80,6 +80,7 @@ struct netns_xfrm {
80 struct flow_cache flow_cache_global; 80 struct flow_cache flow_cache_global;
81 atomic_t flow_cache_genid; 81 atomic_t flow_cache_genid;
82 struct list_head flow_cache_gc_list; 82 struct list_head flow_cache_gc_list;
83 atomic_t flow_cache_gc_count;
83 spinlock_t flow_cache_gc_lock; 84 spinlock_t flow_cache_gc_lock;
84 struct work_struct flow_cache_gc_work; 85 struct work_struct flow_cache_gc_work;
85 struct work_struct flow_cache_flush_work; 86 struct work_struct flow_cache_flush_work;
diff --git a/include/net/udp_tunnel.h b/include/net/udp_tunnel.h
index 4f543262dd81..9d14f707e534 100644
--- a/include/net/udp_tunnel.h
+++ b/include/net/udp_tunnel.h
@@ -112,15 +112,6 @@ static inline int udp_tunnel_handle_offloads(struct sk_buff *skb, bool udp_csum)
112 return iptunnel_handle_offloads(skb, type); 112 return iptunnel_handle_offloads(skb, type);
113} 113}
114 114
115static inline void udp_tunnel_gro_complete(struct sk_buff *skb, int nhoff)
116{
117 struct udphdr *uh;
118
119 uh = (struct udphdr *)(skb->data + nhoff - sizeof(struct udphdr));
120 skb_shinfo(skb)->gso_type |= uh->check ?
121 SKB_GSO_UDP_TUNNEL_CSUM : SKB_GSO_UDP_TUNNEL;
122}
123
124static inline void udp_tunnel_encap_enable(struct socket *sock) 115static inline void udp_tunnel_encap_enable(struct socket *sock)
125{ 116{
126#if IS_ENABLED(CONFIG_IPV6) 117#if IS_ENABLED(CONFIG_IPV6)
diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
index 6e0f5f01734c..c51afb71bfab 100644
--- a/include/uapi/asm-generic/unistd.h
+++ b/include/uapi/asm-generic/unistd.h
@@ -718,9 +718,9 @@ __SYSCALL(__NR_mlock2, sys_mlock2)
718#define __NR_copy_file_range 285 718#define __NR_copy_file_range 285
719__SYSCALL(__NR_copy_file_range, sys_copy_file_range) 719__SYSCALL(__NR_copy_file_range, sys_copy_file_range)
720#define __NR_preadv2 286 720#define __NR_preadv2 286
721__SYSCALL(__NR_preadv2, sys_preadv2) 721__SC_COMP(__NR_preadv2, sys_preadv2, compat_sys_preadv2)
722#define __NR_pwritev2 287 722#define __NR_pwritev2 287
723__SYSCALL(__NR_pwritev2, sys_pwritev2) 723__SC_COMP(__NR_pwritev2, sys_pwritev2, compat_sys_pwritev2)
724 724
725#undef __NR_syscalls 725#undef __NR_syscalls
726#define __NR_syscalls 288 726#define __NR_syscalls 288
diff --git a/include/uapi/linux/if_macsec.h b/include/uapi/linux/if_macsec.h
index 897a94942245..f7d4831a2cc7 100644
--- a/include/uapi/linux/if_macsec.h
+++ b/include/uapi/linux/if_macsec.h
@@ -19,6 +19,8 @@
19 19
20#define MACSEC_MAX_KEY_LEN 128 20#define MACSEC_MAX_KEY_LEN 128
21 21
22#define MACSEC_KEYID_LEN 16
23
22#define MACSEC_DEFAULT_CIPHER_ID 0x0080020001000001ULL 24#define MACSEC_DEFAULT_CIPHER_ID 0x0080020001000001ULL
23#define MACSEC_DEFAULT_CIPHER_ALT 0x0080C20001000001ULL 25#define MACSEC_DEFAULT_CIPHER_ALT 0x0080C20001000001ULL
24 26
@@ -79,7 +81,7 @@ enum macsec_sa_attrs {
79 MACSEC_SA_ATTR_ACTIVE, /* config/dump, u8 0..1 */ 81 MACSEC_SA_ATTR_ACTIVE, /* config/dump, u8 0..1 */
80 MACSEC_SA_ATTR_PN, /* config/dump, u32 */ 82 MACSEC_SA_ATTR_PN, /* config/dump, u32 */
81 MACSEC_SA_ATTR_KEY, /* config, data */ 83 MACSEC_SA_ATTR_KEY, /* config, data */
82 MACSEC_SA_ATTR_KEYID, /* config/dump, u64 */ 84 MACSEC_SA_ATTR_KEYID, /* config/dump, 128-bit */
83 MACSEC_SA_ATTR_STATS, /* dump, nested, macsec_sa_stats_attr */ 85 MACSEC_SA_ATTR_STATS, /* dump, nested, macsec_sa_stats_attr */
84 MACSEC_SA_ATTR_PAD, 86 MACSEC_SA_ATTR_PAD,
85 __MACSEC_SA_ATTR_END, 87 __MACSEC_SA_ATTR_END,
diff --git a/include/linux/rio_mport_cdev.h b/include/uapi/linux/rio_mport_cdev.h
index b65d19df76d2..5796bf1d06ad 100644
--- a/include/linux/rio_mport_cdev.h
+++ b/include/uapi/linux/rio_mport_cdev.h
@@ -39,16 +39,16 @@
39#ifndef _RIO_MPORT_CDEV_H_ 39#ifndef _RIO_MPORT_CDEV_H_
40#define _RIO_MPORT_CDEV_H_ 40#define _RIO_MPORT_CDEV_H_
41 41
42#ifndef __user 42#include <linux/ioctl.h>
43#define __user 43#include <linux/types.h>
44#endif
45 44
46struct rio_mport_maint_io { 45struct rio_mport_maint_io {
47 uint32_t rioid; /* destID of remote device */ 46 __u16 rioid; /* destID of remote device */
48 uint32_t hopcount; /* hopcount to remote device */ 47 __u8 hopcount; /* hopcount to remote device */
49 uint32_t offset; /* offset in register space */ 48 __u8 pad0[5];
50 size_t length; /* length in bytes */ 49 __u32 offset; /* offset in register space */
51 void __user *buffer; /* data buffer */ 50 __u32 length; /* length in bytes */
51 __u64 buffer; /* pointer to data buffer */
52}; 52};
53 53
54/* 54/*
@@ -66,22 +66,23 @@ struct rio_mport_maint_io {
66#define RIO_CAP_MAP_INB (1 << 7) 66#define RIO_CAP_MAP_INB (1 << 7)
67 67
68struct rio_mport_properties { 68struct rio_mport_properties {
69 uint16_t hdid; 69 __u16 hdid;
70 uint8_t id; /* Physical port ID */ 70 __u8 id; /* Physical port ID */
71 uint8_t index; 71 __u8 index;
72 uint32_t flags; 72 __u32 flags;
73 uint32_t sys_size; /* Default addressing size */ 73 __u32 sys_size; /* Default addressing size */
74 uint8_t port_ok; 74 __u8 port_ok;
75 uint8_t link_speed; 75 __u8 link_speed;
76 uint8_t link_width; 76 __u8 link_width;
77 uint32_t dma_max_sge; 77 __u8 pad0;
78 uint32_t dma_max_size; 78 __u32 dma_max_sge;
79 uint32_t dma_align; 79 __u32 dma_max_size;
80 uint32_t transfer_mode; /* Default transfer mode */ 80 __u32 dma_align;
81 uint32_t cap_sys_size; /* Capable system sizes */ 81 __u32 transfer_mode; /* Default transfer mode */
82 uint32_t cap_addr_size; /* Capable addressing sizes */ 82 __u32 cap_sys_size; /* Capable system sizes */
83 uint32_t cap_transfer_mode; /* Capable transfer modes */ 83 __u32 cap_addr_size; /* Capable addressing sizes */
84 uint32_t cap_mport; /* Mport capabilities */ 84 __u32 cap_transfer_mode; /* Capable transfer modes */
85 __u32 cap_mport; /* Mport capabilities */
85}; 86};
86 87
87/* 88/*
@@ -93,54 +94,57 @@ struct rio_mport_properties {
93#define RIO_PORTWRITE (1 << 1) 94#define RIO_PORTWRITE (1 << 1)
94 95
95struct rio_doorbell { 96struct rio_doorbell {
96 uint32_t rioid; 97 __u16 rioid;
97 uint16_t payload; 98 __u16 payload;
98}; 99};
99 100
100struct rio_doorbell_filter { 101struct rio_doorbell_filter {
101 uint32_t rioid; /* 0xffffffff to match all ids */ 102 __u16 rioid; /* Use RIO_INVALID_DESTID to match all ids */
102 uint16_t low; 103 __u16 low;
103 uint16_t high; 104 __u16 high;
105 __u16 pad0;
104}; 106};
105 107
106 108
107struct rio_portwrite { 109struct rio_portwrite {
108 uint32_t payload[16]; 110 __u32 payload[16];
109}; 111};
110 112
111struct rio_pw_filter { 113struct rio_pw_filter {
112 uint32_t mask; 114 __u32 mask;
113 uint32_t low; 115 __u32 low;
114 uint32_t high; 116 __u32 high;
117 __u32 pad0;
115}; 118};
116 119
117/* RapidIO base address for inbound requests set to value defined below 120/* RapidIO base address for inbound requests set to value defined below
118 * indicates that no specific RIO-to-local address translation is requested 121 * indicates that no specific RIO-to-local address translation is requested
119 * and driver should use direct (one-to-one) address mapping. 122 * and driver should use direct (one-to-one) address mapping.
120*/ 123*/
121#define RIO_MAP_ANY_ADDR (uint64_t)(~((uint64_t) 0)) 124#define RIO_MAP_ANY_ADDR (__u64)(~((__u64) 0))
122 125
123struct rio_mmap { 126struct rio_mmap {
124 uint32_t rioid; 127 __u16 rioid;
125 uint64_t rio_addr; 128 __u16 pad0[3];
126 uint64_t length; 129 __u64 rio_addr;
127 uint64_t handle; 130 __u64 length;
128 void *address; 131 __u64 handle;
132 __u64 address;
129}; 133};
130 134
131struct rio_dma_mem { 135struct rio_dma_mem {
132 uint64_t length; /* length of DMA memory */ 136 __u64 length; /* length of DMA memory */
133 uint64_t dma_handle; /* handle associated with this memory */ 137 __u64 dma_handle; /* handle associated with this memory */
134 void *buffer; /* pointer to this memory */ 138 __u64 address;
135}; 139};
136 140
137
138struct rio_event { 141struct rio_event {
139 unsigned int header; /* event type RIO_DOORBELL or RIO_PORTWRITE */ 142 __u32 header; /* event type RIO_DOORBELL or RIO_PORTWRITE */
140 union { 143 union {
141 struct rio_doorbell doorbell; /* header for RIO_DOORBELL */ 144 struct rio_doorbell doorbell; /* header for RIO_DOORBELL */
142 struct rio_portwrite portwrite; /* header for RIO_PORTWRITE */ 145 struct rio_portwrite portwrite; /* header for RIO_PORTWRITE */
143 } u; 146 } u;
147 __u32 pad0;
144}; 148};
145 149
146enum rio_transfer_sync { 150enum rio_transfer_sync {
@@ -184,35 +188,37 @@ enum rio_exchange {
184}; 188};
185 189
186struct rio_transfer_io { 190struct rio_transfer_io {
187 uint32_t rioid; /* Target destID */ 191 __u64 rio_addr; /* Address in target's RIO mem space */
188 uint64_t rio_addr; /* Address in target's RIO mem space */ 192 __u64 loc_addr;
189 enum rio_exchange method; /* Data exchange method */ 193 __u64 handle;
190 void __user *loc_addr; 194 __u64 offset; /* Offset in buffer */
191 uint64_t handle; 195 __u64 length; /* Length in bytes */
192 uint64_t offset; /* Offset in buffer */ 196 __u16 rioid; /* Target destID */
193 uint64_t length; /* Length in bytes */ 197 __u16 method; /* Data exchange method, one of rio_exchange enum */
194 uint32_t completion_code; /* Completion code for this transfer */ 198 __u32 completion_code; /* Completion code for this transfer */
195}; 199};
196 200
197struct rio_transaction { 201struct rio_transaction {
198 uint32_t transfer_mode; /* Data transfer mode */ 202 __u64 block; /* Pointer to array of <count> transfers */
199 enum rio_transfer_sync sync; /* Synchronization method */ 203 __u32 count; /* Number of transfers */
200 enum rio_transfer_dir dir; /* Transfer direction */ 204 __u32 transfer_mode; /* Data transfer mode */
201 size_t count; /* Number of transfers */ 205 __u16 sync; /* Synch method, one of rio_transfer_sync enum */
202 struct rio_transfer_io __user *block; /* Array of <count> transfers */ 206 __u16 dir; /* Transfer direction, one of rio_transfer_dir enum */
207 __u32 pad0;
203}; 208};
204 209
205struct rio_async_tx_wait { 210struct rio_async_tx_wait {
206 uint32_t token; /* DMA transaction ID token */ 211 __u32 token; /* DMA transaction ID token */
207 uint32_t timeout; /* Wait timeout in msec, if 0 use default TO */ 212 __u32 timeout; /* Wait timeout in msec, if 0 use default TO */
208}; 213};
209 214
210#define RIO_MAX_DEVNAME_SZ 20 215#define RIO_MAX_DEVNAME_SZ 20
211 216
212struct rio_rdev_info { 217struct rio_rdev_info {
213 uint32_t destid; 218 __u16 destid;
214 uint8_t hopcount; 219 __u8 hopcount;
215 uint32_t comptag; 220 __u8 pad0;
221 __u32 comptag;
216 char name[RIO_MAX_DEVNAME_SZ + 1]; 222 char name[RIO_MAX_DEVNAME_SZ + 1];
217}; 223};
218 224
@@ -220,11 +226,11 @@ struct rio_rdev_info {
220#define RIO_MPORT_DRV_MAGIC 'm' 226#define RIO_MPORT_DRV_MAGIC 'm'
221 227
222#define RIO_MPORT_MAINT_HDID_SET \ 228#define RIO_MPORT_MAINT_HDID_SET \
223 _IOW(RIO_MPORT_DRV_MAGIC, 1, uint16_t) 229 _IOW(RIO_MPORT_DRV_MAGIC, 1, __u16)
224#define RIO_MPORT_MAINT_COMPTAG_SET \ 230#define RIO_MPORT_MAINT_COMPTAG_SET \
225 _IOW(RIO_MPORT_DRV_MAGIC, 2, uint32_t) 231 _IOW(RIO_MPORT_DRV_MAGIC, 2, __u32)
226#define RIO_MPORT_MAINT_PORT_IDX_GET \ 232#define RIO_MPORT_MAINT_PORT_IDX_GET \
227 _IOR(RIO_MPORT_DRV_MAGIC, 3, uint32_t) 233 _IOR(RIO_MPORT_DRV_MAGIC, 3, __u32)
228#define RIO_MPORT_GET_PROPERTIES \ 234#define RIO_MPORT_GET_PROPERTIES \
229 _IOR(RIO_MPORT_DRV_MAGIC, 4, struct rio_mport_properties) 235 _IOR(RIO_MPORT_DRV_MAGIC, 4, struct rio_mport_properties)
230#define RIO_MPORT_MAINT_READ_LOCAL \ 236#define RIO_MPORT_MAINT_READ_LOCAL \
@@ -244,9 +250,9 @@ struct rio_rdev_info {
244#define RIO_DISABLE_PORTWRITE_RANGE \ 250#define RIO_DISABLE_PORTWRITE_RANGE \
245 _IOW(RIO_MPORT_DRV_MAGIC, 12, struct rio_pw_filter) 251 _IOW(RIO_MPORT_DRV_MAGIC, 12, struct rio_pw_filter)
246#define RIO_SET_EVENT_MASK \ 252#define RIO_SET_EVENT_MASK \
247 _IOW(RIO_MPORT_DRV_MAGIC, 13, unsigned int) 253 _IOW(RIO_MPORT_DRV_MAGIC, 13, __u32)
248#define RIO_GET_EVENT_MASK \ 254#define RIO_GET_EVENT_MASK \
249 _IOR(RIO_MPORT_DRV_MAGIC, 14, unsigned int) 255 _IOR(RIO_MPORT_DRV_MAGIC, 14, __u32)
250#define RIO_MAP_OUTBOUND \ 256#define RIO_MAP_OUTBOUND \
251 _IOWR(RIO_MPORT_DRV_MAGIC, 15, struct rio_mmap) 257 _IOWR(RIO_MPORT_DRV_MAGIC, 15, struct rio_mmap)
252#define RIO_UNMAP_OUTBOUND \ 258#define RIO_UNMAP_OUTBOUND \
@@ -254,11 +260,11 @@ struct rio_rdev_info {
254#define RIO_MAP_INBOUND \ 260#define RIO_MAP_INBOUND \
255 _IOWR(RIO_MPORT_DRV_MAGIC, 17, struct rio_mmap) 261 _IOWR(RIO_MPORT_DRV_MAGIC, 17, struct rio_mmap)
256#define RIO_UNMAP_INBOUND \ 262#define RIO_UNMAP_INBOUND \
257 _IOW(RIO_MPORT_DRV_MAGIC, 18, uint64_t) 263 _IOW(RIO_MPORT_DRV_MAGIC, 18, __u64)
258#define RIO_ALLOC_DMA \ 264#define RIO_ALLOC_DMA \
259 _IOWR(RIO_MPORT_DRV_MAGIC, 19, struct rio_dma_mem) 265 _IOWR(RIO_MPORT_DRV_MAGIC, 19, struct rio_dma_mem)
260#define RIO_FREE_DMA \ 266#define RIO_FREE_DMA \
261 _IOW(RIO_MPORT_DRV_MAGIC, 20, uint64_t) 267 _IOW(RIO_MPORT_DRV_MAGIC, 20, __u64)
262#define RIO_TRANSFER \ 268#define RIO_TRANSFER \
263 _IOWR(RIO_MPORT_DRV_MAGIC, 21, struct rio_transaction) 269 _IOWR(RIO_MPORT_DRV_MAGIC, 21, struct rio_transaction)
264#define RIO_WAIT_FOR_ASYNC \ 270#define RIO_WAIT_FOR_ASYNC \
diff --git a/include/uapi/linux/swab.h b/include/uapi/linux/swab.h
index 3f10e5317b46..8f3a8f606fd9 100644
--- a/include/uapi/linux/swab.h
+++ b/include/uapi/linux/swab.h
@@ -45,9 +45,7 @@
45 45
46static inline __attribute_const__ __u16 __fswab16(__u16 val) 46static inline __attribute_const__ __u16 __fswab16(__u16 val)
47{ 47{
48#ifdef __HAVE_BUILTIN_BSWAP16__ 48#if defined (__arch_swab16)
49 return __builtin_bswap16(val);
50#elif defined (__arch_swab16)
51 return __arch_swab16(val); 49 return __arch_swab16(val);
52#else 50#else
53 return ___constant_swab16(val); 51 return ___constant_swab16(val);
@@ -56,9 +54,7 @@ static inline __attribute_const__ __u16 __fswab16(__u16 val)
56 54
57static inline __attribute_const__ __u32 __fswab32(__u32 val) 55static inline __attribute_const__ __u32 __fswab32(__u32 val)
58{ 56{
59#ifdef __HAVE_BUILTIN_BSWAP32__ 57#if defined(__arch_swab32)
60 return __builtin_bswap32(val);
61#elif defined(__arch_swab32)
62 return __arch_swab32(val); 58 return __arch_swab32(val);
63#else 59#else
64 return ___constant_swab32(val); 60 return ___constant_swab32(val);
@@ -67,9 +63,7 @@ static inline __attribute_const__ __u32 __fswab32(__u32 val)
67 63
68static inline __attribute_const__ __u64 __fswab64(__u64 val) 64static inline __attribute_const__ __u64 __fswab64(__u64 val)
69{ 65{
70#ifdef __HAVE_BUILTIN_BSWAP64__ 66#if defined (__arch_swab64)
71 return __builtin_bswap64(val);
72#elif defined (__arch_swab64)
73 return __arch_swab64(val); 67 return __arch_swab64(val);
74#elif defined(__SWAB_64_THRU_32__) 68#elif defined(__SWAB_64_THRU_32__)
75 __u32 h = val >> 32; 69 __u32 h = val >> 32;
@@ -102,28 +96,40 @@ static inline __attribute_const__ __u32 __fswahb32(__u32 val)
102 * __swab16 - return a byteswapped 16-bit value 96 * __swab16 - return a byteswapped 16-bit value
103 * @x: value to byteswap 97 * @x: value to byteswap
104 */ 98 */
99#ifdef __HAVE_BUILTIN_BSWAP16__
100#define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
101#else
105#define __swab16(x) \ 102#define __swab16(x) \
106 (__builtin_constant_p((__u16)(x)) ? \ 103 (__builtin_constant_p((__u16)(x)) ? \
107 ___constant_swab16(x) : \ 104 ___constant_swab16(x) : \
108 __fswab16(x)) 105 __fswab16(x))
106#endif
109 107
110/** 108/**
111 * __swab32 - return a byteswapped 32-bit value 109 * __swab32 - return a byteswapped 32-bit value
112 * @x: value to byteswap 110 * @x: value to byteswap
113 */ 111 */
112#ifdef __HAVE_BUILTIN_BSWAP32__
113#define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
114#else
114#define __swab32(x) \ 115#define __swab32(x) \
115 (__builtin_constant_p((__u32)(x)) ? \ 116 (__builtin_constant_p((__u32)(x)) ? \
116 ___constant_swab32(x) : \ 117 ___constant_swab32(x) : \
117 __fswab32(x)) 118 __fswab32(x))
119#endif
118 120
119/** 121/**
120 * __swab64 - return a byteswapped 64-bit value 122 * __swab64 - return a byteswapped 64-bit value
121 * @x: value to byteswap 123 * @x: value to byteswap
122 */ 124 */
125#ifdef __HAVE_BUILTIN_BSWAP64__
126#define __swab64(x) (__u64)__builtin_bswap64((__u64)(x))
127#else
123#define __swab64(x) \ 128#define __swab64(x) \
124 (__builtin_constant_p((__u64)(x)) ? \ 129 (__builtin_constant_p((__u64)(x)) ? \
125 ___constant_swab64(x) : \ 130 ___constant_swab64(x) : \
126 __fswab64(x)) 131 __fswab64(x))
132#endif
127 133
128/** 134/**
129 * __swahw32 - return a word-swapped 32-bit value 135 * __swahw32 - return a word-swapped 32-bit value
diff --git a/include/xen/page.h b/include/xen/page.h
index 96294ac93755..9dc46cb8a0fd 100644
--- a/include/xen/page.h
+++ b/include/xen/page.h
@@ -15,9 +15,9 @@
15 */ 15 */
16 16
17#define xen_pfn_to_page(xen_pfn) \ 17#define xen_pfn_to_page(xen_pfn) \
18 ((pfn_to_page(((unsigned long)(xen_pfn) << XEN_PAGE_SHIFT) >> PAGE_SHIFT))) 18 (pfn_to_page((unsigned long)(xen_pfn) >> (PAGE_SHIFT - XEN_PAGE_SHIFT)))
19#define page_to_xen_pfn(page) \ 19#define page_to_xen_pfn(page) \
20 (((page_to_pfn(page)) << PAGE_SHIFT) >> XEN_PAGE_SHIFT) 20 ((page_to_pfn(page)) << (PAGE_SHIFT - XEN_PAGE_SHIFT))
21 21
22#define XEN_PFN_PER_PAGE (PAGE_SIZE / XEN_PAGE_SIZE) 22#define XEN_PFN_PER_PAGE (PAGE_SIZE / XEN_PAGE_SIZE)
23 23
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 8b489fcac37b..d1f7149f8704 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -596,17 +596,8 @@ bool sched_can_stop_tick(struct rq *rq)
596 return false; 596 return false;
597 597
598 /* 598 /*
599 * FIFO realtime policy runs the highest priority task (after DEADLINE). 599 * If there are more than one RR tasks, we need the tick to effect the
600 * Other runnable tasks are of a lower priority. The scheduler tick 600 * actual RR behaviour.
601 * isn't needed.
602 */
603 fifo_nr_running = rq->rt.rt_nr_running - rq->rt.rr_nr_running;
604 if (fifo_nr_running)
605 return true;
606
607 /*
608 * Round-robin realtime tasks time slice with other tasks at the same
609 * realtime priority.
610 */ 601 */
611 if (rq->rt.rr_nr_running) { 602 if (rq->rt.rr_nr_running) {
612 if (rq->rt.rr_nr_running == 1) 603 if (rq->rt.rr_nr_running == 1)
@@ -615,8 +606,20 @@ bool sched_can_stop_tick(struct rq *rq)
615 return false; 606 return false;
616 } 607 }
617 608
618 /* Normal multitasking need periodic preemption checks */ 609 /*
619 if (rq->cfs.nr_running > 1) 610 * If there's no RR tasks, but FIFO tasks, we can skip the tick, no
611 * forced preemption between FIFO tasks.
612 */
613 fifo_nr_running = rq->rt.rt_nr_running - rq->rt.rr_nr_running;
614 if (fifo_nr_running)
615 return true;
616
617 /*
618 * If there are no DL,RR/FIFO tasks, there must only be CFS tasks left;
619 * if there's more than one we need the tick for involuntary
620 * preemption.
621 */
622 if (rq->nr_running > 1)
620 return false; 623 return false;
621 624
622 return true; 625 return true;
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index ced963049e0a..b7b0760ba6ee 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -2113,8 +2113,13 @@ event_create_dir(struct dentry *parent, struct trace_event_file *file)
2113 trace_create_file("filter", 0644, file->dir, file, 2113 trace_create_file("filter", 0644, file->dir, file,
2114 &ftrace_event_filter_fops); 2114 &ftrace_event_filter_fops);
2115 2115
2116 trace_create_file("trigger", 0644, file->dir, file, 2116 /*
2117 &event_trigger_fops); 2117 * Only event directories that can be enabled should have
2118 * triggers.
2119 */
2120 if (!(call->flags & TRACE_EVENT_FL_IGNORE_ENABLE))
2121 trace_create_file("trigger", 0644, file->dir, file,
2122 &event_trigger_fops);
2118 2123
2119 trace_create_file("format", 0444, file->dir, call, 2124 trace_create_file("format", 0444, file->dir, call,
2120 &ftrace_event_format_fops); 2125 &ftrace_event_format_fops);
diff --git a/lib/stackdepot.c b/lib/stackdepot.c
index 9e0b0315a724..53ad6c0831ae 100644
--- a/lib/stackdepot.c
+++ b/lib/stackdepot.c
@@ -42,12 +42,14 @@
42 42
43#define DEPOT_STACK_BITS (sizeof(depot_stack_handle_t) * 8) 43#define DEPOT_STACK_BITS (sizeof(depot_stack_handle_t) * 8)
44 44
45#define STACK_ALLOC_NULL_PROTECTION_BITS 1
45#define STACK_ALLOC_ORDER 2 /* 'Slab' size order for stack depot, 4 pages */ 46#define STACK_ALLOC_ORDER 2 /* 'Slab' size order for stack depot, 4 pages */
46#define STACK_ALLOC_SIZE (1LL << (PAGE_SHIFT + STACK_ALLOC_ORDER)) 47#define STACK_ALLOC_SIZE (1LL << (PAGE_SHIFT + STACK_ALLOC_ORDER))
47#define STACK_ALLOC_ALIGN 4 48#define STACK_ALLOC_ALIGN 4
48#define STACK_ALLOC_OFFSET_BITS (STACK_ALLOC_ORDER + PAGE_SHIFT - \ 49#define STACK_ALLOC_OFFSET_BITS (STACK_ALLOC_ORDER + PAGE_SHIFT - \
49 STACK_ALLOC_ALIGN) 50 STACK_ALLOC_ALIGN)
50#define STACK_ALLOC_INDEX_BITS (DEPOT_STACK_BITS - STACK_ALLOC_OFFSET_BITS) 51#define STACK_ALLOC_INDEX_BITS (DEPOT_STACK_BITS - \
52 STACK_ALLOC_NULL_PROTECTION_BITS - STACK_ALLOC_OFFSET_BITS)
51#define STACK_ALLOC_SLABS_CAP 1024 53#define STACK_ALLOC_SLABS_CAP 1024
52#define STACK_ALLOC_MAX_SLABS \ 54#define STACK_ALLOC_MAX_SLABS \
53 (((1LL << (STACK_ALLOC_INDEX_BITS)) < STACK_ALLOC_SLABS_CAP) ? \ 55 (((1LL << (STACK_ALLOC_INDEX_BITS)) < STACK_ALLOC_SLABS_CAP) ? \
@@ -59,6 +61,7 @@ union handle_parts {
59 struct { 61 struct {
60 u32 slabindex : STACK_ALLOC_INDEX_BITS; 62 u32 slabindex : STACK_ALLOC_INDEX_BITS;
61 u32 offset : STACK_ALLOC_OFFSET_BITS; 63 u32 offset : STACK_ALLOC_OFFSET_BITS;
64 u32 valid : STACK_ALLOC_NULL_PROTECTION_BITS;
62 }; 65 };
63}; 66};
64 67
@@ -136,6 +139,7 @@ static struct stack_record *depot_alloc_stack(unsigned long *entries, int size,
136 stack->size = size; 139 stack->size = size;
137 stack->handle.slabindex = depot_index; 140 stack->handle.slabindex = depot_index;
138 stack->handle.offset = depot_offset >> STACK_ALLOC_ALIGN; 141 stack->handle.offset = depot_offset >> STACK_ALLOC_ALIGN;
142 stack->handle.valid = 1;
139 memcpy(stack->entries, entries, size * sizeof(unsigned long)); 143 memcpy(stack->entries, entries, size * sizeof(unsigned long));
140 depot_offset += required_size; 144 depot_offset += required_size;
141 145
diff --git a/mm/compaction.c b/mm/compaction.c
index ccf97b02b85f..8fa254043801 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -852,16 +852,8 @@ isolate_migratepages_range(struct compact_control *cc, unsigned long start_pfn,
852 pfn = isolate_migratepages_block(cc, pfn, block_end_pfn, 852 pfn = isolate_migratepages_block(cc, pfn, block_end_pfn,
853 ISOLATE_UNEVICTABLE); 853 ISOLATE_UNEVICTABLE);
854 854
855 /* 855 if (!pfn)
856 * In case of fatal failure, release everything that might
857 * have been isolated in the previous iteration, and signal
858 * the failure back to caller.
859 */
860 if (!pfn) {
861 putback_movable_pages(&cc->migratepages);
862 cc->nr_migratepages = 0;
863 break; 856 break;
864 }
865 857
866 if (cc->nr_migratepages == COMPACT_CLUSTER_MAX) 858 if (cc->nr_migratepages == COMPACT_CLUSTER_MAX)
867 break; 859 break;
@@ -1741,7 +1733,7 @@ void compaction_unregister_node(struct node *node)
1741 1733
1742static inline bool kcompactd_work_requested(pg_data_t *pgdat) 1734static inline bool kcompactd_work_requested(pg_data_t *pgdat)
1743{ 1735{
1744 return pgdat->kcompactd_max_order > 0; 1736 return pgdat->kcompactd_max_order > 0 || kthread_should_stop();
1745} 1737}
1746 1738
1747static bool kcompactd_node_suitable(pg_data_t *pgdat) 1739static bool kcompactd_node_suitable(pg_data_t *pgdat)
@@ -1805,6 +1797,8 @@ static void kcompactd_do_work(pg_data_t *pgdat)
1805 INIT_LIST_HEAD(&cc.freepages); 1797 INIT_LIST_HEAD(&cc.freepages);
1806 INIT_LIST_HEAD(&cc.migratepages); 1798 INIT_LIST_HEAD(&cc.migratepages);
1807 1799
1800 if (kthread_should_stop())
1801 return;
1808 status = compact_zone(zone, &cc); 1802 status = compact_zone(zone, &cc);
1809 1803
1810 if (zone_watermark_ok(zone, cc.order, low_wmark_pages(zone), 1804 if (zone_watermark_ok(zone, cc.order, low_wmark_pages(zone),
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index df67b53ae3c5..f7daa7de8f48 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -3452,7 +3452,7 @@ next:
3452 } 3452 }
3453 } 3453 }
3454 3454
3455 pr_info("%lu of %lu THP split", split, total); 3455 pr_info("%lu of %lu THP split\n", split, total);
3456 3456
3457 return 0; 3457 return 0;
3458} 3458}
@@ -3463,7 +3463,7 @@ static int __init split_huge_pages_debugfs(void)
3463{ 3463{
3464 void *ret; 3464 void *ret;
3465 3465
3466 ret = debugfs_create_file("split_huge_pages", 0644, NULL, NULL, 3466 ret = debugfs_create_file("split_huge_pages", 0200, NULL, NULL,
3467 &split_huge_pages_fops); 3467 &split_huge_pages_fops);
3468 if (!ret) 3468 if (!ret)
3469 pr_warn("Failed to create split_huge_pages in debugfs"); 3469 pr_warn("Failed to create split_huge_pages in debugfs");
diff --git a/mm/memory.c b/mm/memory.c
index 305537fc8640..52c218e2b724 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1222,15 +1222,8 @@ static inline unsigned long zap_pmd_range(struct mmu_gather *tlb,
1222 next = pmd_addr_end(addr, end); 1222 next = pmd_addr_end(addr, end);
1223 if (pmd_trans_huge(*pmd) || pmd_devmap(*pmd)) { 1223 if (pmd_trans_huge(*pmd) || pmd_devmap(*pmd)) {
1224 if (next - addr != HPAGE_PMD_SIZE) { 1224 if (next - addr != HPAGE_PMD_SIZE) {
1225#ifdef CONFIG_DEBUG_VM 1225 VM_BUG_ON_VMA(vma_is_anonymous(vma) &&
1226 if (!rwsem_is_locked(&tlb->mm->mmap_sem)) { 1226 !rwsem_is_locked(&tlb->mm->mmap_sem), vma);
1227 pr_err("%s: mmap_sem is unlocked! addr=0x%lx end=0x%lx vma->vm_start=0x%lx vma->vm_end=0x%lx\n",
1228 __func__, addr, end,
1229 vma->vm_start,
1230 vma->vm_end);
1231 BUG();
1232 }
1233#endif
1234 split_huge_pmd(vma, pmd, addr); 1227 split_huge_pmd(vma, pmd, addr);
1235 } else if (zap_huge_pmd(tlb, vma, pmd, addr)) 1228 } else if (zap_huge_pmd(tlb, vma, pmd, addr))
1236 goto next; 1229 goto next;
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 999792d35ccc..bc5149d5ec38 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -1910,7 +1910,8 @@ bool wb_over_bg_thresh(struct bdi_writeback *wb)
1910 if (gdtc->dirty > gdtc->bg_thresh) 1910 if (gdtc->dirty > gdtc->bg_thresh)
1911 return true; 1911 return true;
1912 1912
1913 if (wb_stat(wb, WB_RECLAIMABLE) > __wb_calc_thresh(gdtc)) 1913 if (wb_stat(wb, WB_RECLAIMABLE) >
1914 wb_calc_thresh(gdtc->wb, gdtc->bg_thresh))
1914 return true; 1915 return true;
1915 1916
1916 if (mdtc) { 1917 if (mdtc) {
@@ -1924,7 +1925,8 @@ bool wb_over_bg_thresh(struct bdi_writeback *wb)
1924 if (mdtc->dirty > mdtc->bg_thresh) 1925 if (mdtc->dirty > mdtc->bg_thresh)
1925 return true; 1926 return true;
1926 1927
1927 if (wb_stat(wb, WB_RECLAIMABLE) > __wb_calc_thresh(mdtc)) 1928 if (wb_stat(wb, WB_RECLAIMABLE) >
1929 wb_calc_thresh(mdtc->wb, mdtc->bg_thresh))
1928 return true; 1930 return true;
1929 } 1931 }
1930 1932
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 59de90d5d3a3..c1069efcc4d7 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -6485,7 +6485,7 @@ int __meminit init_per_zone_wmark_min(void)
6485 setup_per_zone_inactive_ratio(); 6485 setup_per_zone_inactive_ratio();
6486 return 0; 6486 return 0;
6487} 6487}
6488module_init(init_per_zone_wmark_min) 6488core_initcall(init_per_zone_wmark_min)
6489 6489
6490/* 6490/*
6491 * min_free_kbytes_sysctl_handler - just a wrapper around proc_dointvec() so 6491 * min_free_kbytes_sysctl_handler - just a wrapper around proc_dointvec() so
diff --git a/mm/zswap.c b/mm/zswap.c
index 91dad80d068b..de0f119b1780 100644
--- a/mm/zswap.c
+++ b/mm/zswap.c
@@ -170,6 +170,8 @@ static struct zswap_tree *zswap_trees[MAX_SWAPFILES];
170static LIST_HEAD(zswap_pools); 170static LIST_HEAD(zswap_pools);
171/* protects zswap_pools list modification */ 171/* protects zswap_pools list modification */
172static DEFINE_SPINLOCK(zswap_pools_lock); 172static DEFINE_SPINLOCK(zswap_pools_lock);
173/* pool counter to provide unique names to zpool */
174static atomic_t zswap_pools_count = ATOMIC_INIT(0);
173 175
174/* used by param callback function */ 176/* used by param callback function */
175static bool zswap_init_started; 177static bool zswap_init_started;
@@ -565,6 +567,7 @@ static struct zswap_pool *zswap_pool_find_get(char *type, char *compressor)
565static struct zswap_pool *zswap_pool_create(char *type, char *compressor) 567static struct zswap_pool *zswap_pool_create(char *type, char *compressor)
566{ 568{
567 struct zswap_pool *pool; 569 struct zswap_pool *pool;
570 char name[38]; /* 'zswap' + 32 char (max) num + \0 */
568 gfp_t gfp = __GFP_NORETRY | __GFP_NOWARN | __GFP_KSWAPD_RECLAIM; 571 gfp_t gfp = __GFP_NORETRY | __GFP_NOWARN | __GFP_KSWAPD_RECLAIM;
569 572
570 pool = kzalloc(sizeof(*pool), GFP_KERNEL); 573 pool = kzalloc(sizeof(*pool), GFP_KERNEL);
@@ -573,7 +576,10 @@ static struct zswap_pool *zswap_pool_create(char *type, char *compressor)
573 return NULL; 576 return NULL;
574 } 577 }
575 578
576 pool->zpool = zpool_create_pool(type, "zswap", gfp, &zswap_zpool_ops); 579 /* unique name for each pool specifically required by zsmalloc */
580 snprintf(name, 38, "zswap%x", atomic_inc_return(&zswap_pools_count));
581
582 pool->zpool = zpool_create_pool(type, name, gfp, &zswap_zpool_ops);
577 if (!pool->zpool) { 583 if (!pool->zpool) {
578 pr_err("%s zpool not available\n", type); 584 pr_err("%s zpool not available\n", type);
579 goto error; 585 goto error;
diff --git a/net/bridge/br_ioctl.c b/net/bridge/br_ioctl.c
index f8fc6241469a..d99b2009771a 100644
--- a/net/bridge/br_ioctl.c
+++ b/net/bridge/br_ioctl.c
@@ -21,18 +21,19 @@
21#include <asm/uaccess.h> 21#include <asm/uaccess.h>
22#include "br_private.h" 22#include "br_private.h"
23 23
24/* called with RTNL */
25static int get_bridge_ifindices(struct net *net, int *indices, int num) 24static int get_bridge_ifindices(struct net *net, int *indices, int num)
26{ 25{
27 struct net_device *dev; 26 struct net_device *dev;
28 int i = 0; 27 int i = 0;
29 28
30 for_each_netdev(net, dev) { 29 rcu_read_lock();
30 for_each_netdev_rcu(net, dev) {
31 if (i >= num) 31 if (i >= num)
32 break; 32 break;
33 if (dev->priv_flags & IFF_EBRIDGE) 33 if (dev->priv_flags & IFF_EBRIDGE)
34 indices[i++] = dev->ifindex; 34 indices[i++] = dev->ifindex;
35 } 35 }
36 rcu_read_unlock();
36 37
37 return i; 38 return i;
38} 39}
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 191ea66e4d92..6852f3c7009c 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -1279,6 +1279,7 @@ static int br_ip4_multicast_query(struct net_bridge *br,
1279 struct br_ip saddr; 1279 struct br_ip saddr;
1280 unsigned long max_delay; 1280 unsigned long max_delay;
1281 unsigned long now = jiffies; 1281 unsigned long now = jiffies;
1282 unsigned int offset = skb_transport_offset(skb);
1282 __be32 group; 1283 __be32 group;
1283 int err = 0; 1284 int err = 0;
1284 1285
@@ -1289,14 +1290,14 @@ static int br_ip4_multicast_query(struct net_bridge *br,
1289 1290
1290 group = ih->group; 1291 group = ih->group;
1291 1292
1292 if (skb->len == sizeof(*ih)) { 1293 if (skb->len == offset + sizeof(*ih)) {
1293 max_delay = ih->code * (HZ / IGMP_TIMER_SCALE); 1294 max_delay = ih->code * (HZ / IGMP_TIMER_SCALE);
1294 1295
1295 if (!max_delay) { 1296 if (!max_delay) {
1296 max_delay = 10 * HZ; 1297 max_delay = 10 * HZ;
1297 group = 0; 1298 group = 0;
1298 } 1299 }
1299 } else if (skb->len >= sizeof(*ih3)) { 1300 } else if (skb->len >= offset + sizeof(*ih3)) {
1300 ih3 = igmpv3_query_hdr(skb); 1301 ih3 = igmpv3_query_hdr(skb);
1301 if (ih3->nsrcs) 1302 if (ih3->nsrcs)
1302 goto out; 1303 goto out;
@@ -1357,6 +1358,7 @@ static int br_ip6_multicast_query(struct net_bridge *br,
1357 struct br_ip saddr; 1358 struct br_ip saddr;
1358 unsigned long max_delay; 1359 unsigned long max_delay;
1359 unsigned long now = jiffies; 1360 unsigned long now = jiffies;
1361 unsigned int offset = skb_transport_offset(skb);
1360 const struct in6_addr *group = NULL; 1362 const struct in6_addr *group = NULL;
1361 bool is_general_query; 1363 bool is_general_query;
1362 int err = 0; 1364 int err = 0;
@@ -1366,8 +1368,8 @@ static int br_ip6_multicast_query(struct net_bridge *br,
1366 (port && port->state == BR_STATE_DISABLED)) 1368 (port && port->state == BR_STATE_DISABLED))
1367 goto out; 1369 goto out;
1368 1370
1369 if (skb->len == sizeof(*mld)) { 1371 if (skb->len == offset + sizeof(*mld)) {
1370 if (!pskb_may_pull(skb, sizeof(*mld))) { 1372 if (!pskb_may_pull(skb, offset + sizeof(*mld))) {
1371 err = -EINVAL; 1373 err = -EINVAL;
1372 goto out; 1374 goto out;
1373 } 1375 }
@@ -1376,7 +1378,7 @@ static int br_ip6_multicast_query(struct net_bridge *br,
1376 if (max_delay) 1378 if (max_delay)
1377 group = &mld->mld_mca; 1379 group = &mld->mld_mca;
1378 } else { 1380 } else {
1379 if (!pskb_may_pull(skb, sizeof(*mld2q))) { 1381 if (!pskb_may_pull(skb, offset + sizeof(*mld2q))) {
1380 err = -EINVAL; 1382 err = -EINVAL;
1381 goto out; 1383 goto out;
1382 } 1384 }
diff --git a/net/core/flow.c b/net/core/flow.c
index 1033725be40b..3937b1b68d5b 100644
--- a/net/core/flow.c
+++ b/net/core/flow.c
@@ -92,8 +92,11 @@ static void flow_cache_gc_task(struct work_struct *work)
92 list_splice_tail_init(&xfrm->flow_cache_gc_list, &gc_list); 92 list_splice_tail_init(&xfrm->flow_cache_gc_list, &gc_list);
93 spin_unlock_bh(&xfrm->flow_cache_gc_lock); 93 spin_unlock_bh(&xfrm->flow_cache_gc_lock);
94 94
95 list_for_each_entry_safe(fce, n, &gc_list, u.gc_list) 95 list_for_each_entry_safe(fce, n, &gc_list, u.gc_list) {
96 flow_entry_kill(fce, xfrm); 96 flow_entry_kill(fce, xfrm);
97 atomic_dec(&xfrm->flow_cache_gc_count);
98 WARN_ON(atomic_read(&xfrm->flow_cache_gc_count) < 0);
99 }
97} 100}
98 101
99static void flow_cache_queue_garbage(struct flow_cache_percpu *fcp, 102static void flow_cache_queue_garbage(struct flow_cache_percpu *fcp,
@@ -101,6 +104,7 @@ static void flow_cache_queue_garbage(struct flow_cache_percpu *fcp,
101 struct netns_xfrm *xfrm) 104 struct netns_xfrm *xfrm)
102{ 105{
103 if (deleted) { 106 if (deleted) {
107 atomic_add(deleted, &xfrm->flow_cache_gc_count);
104 fcp->hash_count -= deleted; 108 fcp->hash_count -= deleted;
105 spin_lock_bh(&xfrm->flow_cache_gc_lock); 109 spin_lock_bh(&xfrm->flow_cache_gc_lock);
106 list_splice_tail(gc_list, &xfrm->flow_cache_gc_list); 110 list_splice_tail(gc_list, &xfrm->flow_cache_gc_list);
@@ -232,6 +236,13 @@ flow_cache_lookup(struct net *net, const struct flowi *key, u16 family, u8 dir,
232 if (fcp->hash_count > fc->high_watermark) 236 if (fcp->hash_count > fc->high_watermark)
233 flow_cache_shrink(fc, fcp); 237 flow_cache_shrink(fc, fcp);
234 238
239 if (fcp->hash_count > 2 * fc->high_watermark ||
240 atomic_read(&net->xfrm.flow_cache_gc_count) > fc->high_watermark) {
241 atomic_inc(&net->xfrm.flow_cache_genid);
242 flo = ERR_PTR(-ENOBUFS);
243 goto ret_object;
244 }
245
235 fle = kmem_cache_alloc(flow_cachep, GFP_ATOMIC); 246 fle = kmem_cache_alloc(flow_cachep, GFP_ATOMIC);
236 if (fle) { 247 if (fle) {
237 fle->net = net; 248 fle->net = net;
@@ -446,6 +457,7 @@ int flow_cache_init(struct net *net)
446 INIT_WORK(&net->xfrm.flow_cache_gc_work, flow_cache_gc_task); 457 INIT_WORK(&net->xfrm.flow_cache_gc_work, flow_cache_gc_task);
447 INIT_WORK(&net->xfrm.flow_cache_flush_work, flow_cache_flush_task); 458 INIT_WORK(&net->xfrm.flow_cache_flush_work, flow_cache_flush_task);
448 mutex_init(&net->xfrm.flow_flush_sem); 459 mutex_init(&net->xfrm.flow_flush_sem);
460 atomic_set(&net->xfrm.flow_cache_gc_count, 0);
449 461
450 fc->hash_shift = 10; 462 fc->hash_shift = 10;
451 fc->low_watermark = 2 * flow_cache_hash_size(fc); 463 fc->low_watermark = 2 * flow_cache_hash_size(fc);
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index d471f097c739..d69c4644f8f2 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -1173,14 +1173,16 @@ static noinline_for_stack int rtnl_fill_vfinfo(struct sk_buff *skb,
1173 1173
1174static int rtnl_fill_link_ifmap(struct sk_buff *skb, struct net_device *dev) 1174static int rtnl_fill_link_ifmap(struct sk_buff *skb, struct net_device *dev)
1175{ 1175{
1176 struct rtnl_link_ifmap map = { 1176 struct rtnl_link_ifmap map;
1177 .mem_start = dev->mem_start, 1177
1178 .mem_end = dev->mem_end, 1178 memset(&map, 0, sizeof(map));
1179 .base_addr = dev->base_addr, 1179 map.mem_start = dev->mem_start;
1180 .irq = dev->irq, 1180 map.mem_end = dev->mem_end;
1181 .dma = dev->dma, 1181 map.base_addr = dev->base_addr;
1182 .port = dev->if_port, 1182 map.irq = dev->irq;
1183 }; 1183 map.dma = dev->dma;
1184 map.port = dev->if_port;
1185
1184 if (nla_put_64bit(skb, IFLA_MAP, sizeof(map), &map, IFLA_PAD)) 1186 if (nla_put_64bit(skb, IFLA_MAP, sizeof(map), &map, IFLA_PAD))
1185 return -EMSGSIZE; 1187 return -EMSGSIZE;
1186 1188
diff --git a/net/ipv4/fou.c b/net/ipv4/fou.c
index 7ac5ec87b004..eeec7d60e5fd 100644
--- a/net/ipv4/fou.c
+++ b/net/ipv4/fou.c
@@ -227,8 +227,6 @@ static int fou_gro_complete(struct sock *sk, struct sk_buff *skb,
227 int err = -ENOSYS; 227 int err = -ENOSYS;
228 const struct net_offload **offloads; 228 const struct net_offload **offloads;
229 229
230 udp_tunnel_gro_complete(skb, nhoff);
231
232 rcu_read_lock(); 230 rcu_read_lock();
233 offloads = NAPI_GRO_CB(skb)->is_ipv6 ? inet6_offloads : inet_offloads; 231 offloads = NAPI_GRO_CB(skb)->is_ipv6 ? inet6_offloads : inet_offloads;
234 ops = rcu_dereference(offloads[proto]); 232 ops = rcu_dereference(offloads[proto]);
@@ -237,6 +235,8 @@ static int fou_gro_complete(struct sock *sk, struct sk_buff *skb,
237 235
238 err = ops->callbacks.gro_complete(skb, nhoff); 236 err = ops->callbacks.gro_complete(skb, nhoff);
239 237
238 skb_set_inner_mac_header(skb, nhoff);
239
240out_unlock: 240out_unlock:
241 rcu_read_unlock(); 241 rcu_read_unlock();
242 242
@@ -412,6 +412,8 @@ static int gue_gro_complete(struct sock *sk, struct sk_buff *skb, int nhoff)
412 412
413 err = ops->callbacks.gro_complete(skb, nhoff + guehlen); 413 err = ops->callbacks.gro_complete(skb, nhoff + guehlen);
414 414
415 skb_set_inner_mac_header(skb, nhoff + guehlen);
416
415out_unlock: 417out_unlock:
416 rcu_read_unlock(); 418 rcu_read_unlock();
417 return err; 419 return err;
diff --git a/net/ipv4/ip_vti.c b/net/ipv4/ip_vti.c
index 5cf10b777b7e..a917903d5e97 100644
--- a/net/ipv4/ip_vti.c
+++ b/net/ipv4/ip_vti.c
@@ -156,6 +156,7 @@ static netdev_tx_t vti_xmit(struct sk_buff *skb, struct net_device *dev,
156 struct dst_entry *dst = skb_dst(skb); 156 struct dst_entry *dst = skb_dst(skb);
157 struct net_device *tdev; /* Device to other host */ 157 struct net_device *tdev; /* Device to other host */
158 int err; 158 int err;
159 int mtu;
159 160
160 if (!dst) { 161 if (!dst) {
161 dev->stats.tx_carrier_errors++; 162 dev->stats.tx_carrier_errors++;
@@ -192,6 +193,23 @@ static netdev_tx_t vti_xmit(struct sk_buff *skb, struct net_device *dev,
192 tunnel->err_count = 0; 193 tunnel->err_count = 0;
193 } 194 }
194 195
196 mtu = dst_mtu(dst);
197 if (skb->len > mtu) {
198 skb_dst(skb)->ops->update_pmtu(skb_dst(skb), NULL, skb, mtu);
199 if (skb->protocol == htons(ETH_P_IP)) {
200 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_FRAG_NEEDED,
201 htonl(mtu));
202 } else {
203 if (mtu < IPV6_MIN_MTU)
204 mtu = IPV6_MIN_MTU;
205
206 icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu);
207 }
208
209 dst_release(dst);
210 goto tx_error;
211 }
212
195 skb_scrub_packet(skb, !net_eq(tunnel->net, dev_net(dev))); 213 skb_scrub_packet(skb, !net_eq(tunnel->net, dev_net(dev)));
196 skb_dst_set(skb, dst); 214 skb_dst_set(skb, dst);
197 skb->dev = skb_dst(skb)->dev; 215 skb->dev = skb_dst(skb)->dev;
diff --git a/net/ipv4/udp_offload.c b/net/ipv4/udp_offload.c
index 097060def7f0..6b7459c92bb2 100644
--- a/net/ipv4/udp_offload.c
+++ b/net/ipv4/udp_offload.c
@@ -350,6 +350,11 @@ int udp_gro_complete(struct sk_buff *skb, int nhoff,
350 350
351 uh->len = newlen; 351 uh->len = newlen;
352 352
353 /* Set encapsulation before calling into inner gro_complete() functions
354 * to make them set up the inner offsets.
355 */
356 skb->encapsulation = 1;
357
353 rcu_read_lock(); 358 rcu_read_lock();
354 sk = (*lookup)(skb, uh->source, uh->dest); 359 sk = (*lookup)(skb, uh->source, uh->dest);
355 if (sk && udp_sk(sk)->gro_complete) 360 if (sk && udp_sk(sk)->gro_complete)
@@ -360,9 +365,6 @@ int udp_gro_complete(struct sk_buff *skb, int nhoff,
360 if (skb->remcsum_offload) 365 if (skb->remcsum_offload)
361 skb_shinfo(skb)->gso_type |= SKB_GSO_TUNNEL_REMCSUM; 366 skb_shinfo(skb)->gso_type |= SKB_GSO_TUNNEL_REMCSUM;
362 367
363 skb->encapsulation = 1;
364 skb_set_inner_mac_header(skb, nhoff + sizeof(struct udphdr));
365
366 return err; 368 return err;
367} 369}
368EXPORT_SYMBOL(udp_gro_complete); 370EXPORT_SYMBOL(udp_gro_complete);
diff --git a/net/ipv6/icmp.c b/net/ipv6/icmp.c
index 9554b99a8508..4527285fcaa2 100644
--- a/net/ipv6/icmp.c
+++ b/net/ipv6/icmp.c
@@ -446,6 +446,8 @@ static void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info)
446 446
447 if (__ipv6_addr_needs_scope_id(addr_type)) 447 if (__ipv6_addr_needs_scope_id(addr_type))
448 iif = skb->dev->ifindex; 448 iif = skb->dev->ifindex;
449 else
450 iif = l3mdev_master_ifindex(skb->dev);
449 451
450 /* 452 /*
451 * Must not send error if the source does not uniquely 453 * Must not send error if the source does not uniquely
@@ -500,9 +502,6 @@ static void icmp6_send(struct sk_buff *skb, u8 type, u8 code, __u32 info)
500 else if (!fl6.flowi6_oif) 502 else if (!fl6.flowi6_oif)
501 fl6.flowi6_oif = np->ucast_oif; 503 fl6.flowi6_oif = np->ucast_oif;
502 504
503 if (!fl6.flowi6_oif)
504 fl6.flowi6_oif = l3mdev_master_ifindex(skb->dev);
505
506 dst = icmpv6_route_lookup(net, skb, sk, &fl6); 505 dst = icmpv6_route_lookup(net, skb, sk, &fl6);
507 if (IS_ERR(dst)) 506 if (IS_ERR(dst))
508 goto out; 507 goto out;
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 7bdc9c9c231b..c4efaa97280c 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -810,8 +810,13 @@ static void tcp_v6_send_response(const struct sock *sk, struct sk_buff *skb, u32
810 fl6.flowi6_proto = IPPROTO_TCP; 810 fl6.flowi6_proto = IPPROTO_TCP;
811 if (rt6_need_strict(&fl6.daddr) && !oif) 811 if (rt6_need_strict(&fl6.daddr) && !oif)
812 fl6.flowi6_oif = tcp_v6_iif(skb); 812 fl6.flowi6_oif = tcp_v6_iif(skb);
813 else 813 else {
814 if (!oif && netif_index_is_l3_master(net, skb->skb_iif))
815 oif = skb->skb_iif;
816
814 fl6.flowi6_oif = oif; 817 fl6.flowi6_oif = oif;
818 }
819
815 fl6.flowi6_mark = IP6_REPLY_MARK(net, skb->mark); 820 fl6.flowi6_mark = IP6_REPLY_MARK(net, skb->mark);
816 fl6.fl6_dport = t1->dest; 821 fl6.fl6_dport = t1->dest;
817 fl6.fl6_sport = t1->source; 822 fl6.fl6_sport = t1->source;
diff --git a/net/llc/af_llc.c b/net/llc/af_llc.c
index b3c52e3f689a..8ae3ed97d95c 100644
--- a/net/llc/af_llc.c
+++ b/net/llc/af_llc.c
@@ -626,6 +626,7 @@ static void llc_cmsg_rcv(struct msghdr *msg, struct sk_buff *skb)
626 if (llc->cmsg_flags & LLC_CMSG_PKTINFO) { 626 if (llc->cmsg_flags & LLC_CMSG_PKTINFO) {
627 struct llc_pktinfo info; 627 struct llc_pktinfo info;
628 628
629 memset(&info, 0, sizeof(info));
629 info.lpi_ifindex = llc_sk(skb->sk)->dev->ifindex; 630 info.lpi_ifindex = llc_sk(skb->sk)->dev->ifindex;
630 llc_pdu_decode_dsap(skb, &info.lpi_sap); 631 llc_pdu_decode_dsap(skb, &info.lpi_sap);
631 llc_pdu_decode_da(skb, info.lpi_mac); 632 llc_pdu_decode_da(skb, info.lpi_mac);
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c
index 3dce53ebea92..b5f1221f48d4 100644
--- a/net/vmw_vsock/af_vsock.c
+++ b/net/vmw_vsock/af_vsock.c
@@ -1808,27 +1808,8 @@ vsock_stream_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
1808 else if (sk->sk_shutdown & RCV_SHUTDOWN) 1808 else if (sk->sk_shutdown & RCV_SHUTDOWN)
1809 err = 0; 1809 err = 0;
1810 1810
1811 if (copied > 0) { 1811 if (copied > 0)
1812 /* We only do these additional bookkeeping/notification steps
1813 * if we actually copied something out of the queue pair
1814 * instead of just peeking ahead.
1815 */
1816
1817 if (!(flags & MSG_PEEK)) {
1818 /* If the other side has shutdown for sending and there
1819 * is nothing more to read, then modify the socket
1820 * state.
1821 */
1822 if (vsk->peer_shutdown & SEND_SHUTDOWN) {
1823 if (vsock_stream_has_data(vsk) <= 0) {
1824 sk->sk_state = SS_UNCONNECTED;
1825 sock_set_flag(sk, SOCK_DONE);
1826 sk->sk_state_change(sk);
1827 }
1828 }
1829 }
1830 err = copied; 1812 err = copied;
1831 }
1832 1813
1833out: 1814out:
1834 release_sock(sk); 1815 release_sock(sk);
diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c
index ff4a91fcab9f..637387bbaaea 100644
--- a/net/xfrm/xfrm_output.c
+++ b/net/xfrm/xfrm_output.c
@@ -99,6 +99,9 @@ static int xfrm_output_one(struct sk_buff *skb, int err)
99 99
100 skb_dst_force(skb); 100 skb_dst_force(skb);
101 101
102 /* Inner headers are invalid now. */
103 skb->encapsulation = 0;
104
102 err = x->type->output(x, skb); 105 err = x->type->output(x, skb);
103 if (err == -EINPROGRESS) 106 if (err == -EINPROGRESS)
104 goto out; 107 goto out;
diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c
index 161dd0d67da8..a9155077feef 100644
--- a/scripts/mod/file2alias.c
+++ b/scripts/mod/file2alias.c
@@ -371,6 +371,49 @@ static void do_usb_table(void *symval, unsigned long size,
371 do_usb_entry_multi(symval + i, mod); 371 do_usb_entry_multi(symval + i, mod);
372} 372}
373 373
374static void do_of_entry_multi(void *symval, struct module *mod)
375{
376 char alias[500];
377 int len;
378 char *tmp;
379
380 DEF_FIELD_ADDR(symval, of_device_id, name);
381 DEF_FIELD_ADDR(symval, of_device_id, type);
382 DEF_FIELD_ADDR(symval, of_device_id, compatible);
383
384 len = sprintf(alias, "of:N%sT%s", (*name)[0] ? *name : "*",
385 (*type)[0] ? *type : "*");
386
387 if (compatible[0])
388 sprintf(&alias[len], "%sC%s", (*type)[0] ? "*" : "",
389 *compatible);
390
391 /* Replace all whitespace with underscores */
392 for (tmp = alias; tmp && *tmp; tmp++)
393 if (isspace(*tmp))
394 *tmp = '_';
395
396 buf_printf(&mod->dev_table_buf, "MODULE_ALIAS(\"%s\");\n", alias);
397 strcat(alias, "C");
398 add_wildcard(alias);
399 buf_printf(&mod->dev_table_buf, "MODULE_ALIAS(\"%s\");\n", alias);
400}
401
402static void do_of_table(void *symval, unsigned long size,
403 struct module *mod)
404{
405 unsigned int i;
406 const unsigned long id_size = SIZE_of_device_id;
407
408 device_id_check(mod->name, "of", size, id_size, symval);
409
410 /* Leave last one: it's the terminator. */
411 size -= id_size;
412
413 for (i = 0; i < size; i += id_size)
414 do_of_entry_multi(symval + i, mod);
415}
416
374/* Looks like: hid:bNvNpN */ 417/* Looks like: hid:bNvNpN */
375static int do_hid_entry(const char *filename, 418static int do_hid_entry(const char *filename,
376 void *symval, char *alias) 419 void *symval, char *alias)
@@ -684,30 +727,6 @@ static int do_pcmcia_entry(const char *filename,
684} 727}
685ADD_TO_DEVTABLE("pcmcia", pcmcia_device_id, do_pcmcia_entry); 728ADD_TO_DEVTABLE("pcmcia", pcmcia_device_id, do_pcmcia_entry);
686 729
687static int do_of_entry (const char *filename, void *symval, char *alias)
688{
689 int len;
690 char *tmp;
691 DEF_FIELD_ADDR(symval, of_device_id, name);
692 DEF_FIELD_ADDR(symval, of_device_id, type);
693 DEF_FIELD_ADDR(symval, of_device_id, compatible);
694
695 len = sprintf(alias, "of:N%sT%s", (*name)[0] ? *name : "*",
696 (*type)[0] ? *type : "*");
697
698 if (compatible[0])
699 sprintf(&alias[len], "%sC%s", (*type)[0] ? "*" : "",
700 *compatible);
701
702 /* Replace all whitespace with underscores */
703 for (tmp = alias; tmp && *tmp; tmp++)
704 if (isspace (*tmp))
705 *tmp = '_';
706
707 return 1;
708}
709ADD_TO_DEVTABLE("of", of_device_id, do_of_entry);
710
711static int do_vio_entry(const char *filename, void *symval, 730static int do_vio_entry(const char *filename, void *symval,
712 char *alias) 731 char *alias)
713{ 732{
@@ -1348,6 +1367,8 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
1348 /* First handle the "special" cases */ 1367 /* First handle the "special" cases */
1349 if (sym_is(name, namelen, "usb")) 1368 if (sym_is(name, namelen, "usb"))
1350 do_usb_table(symval, sym->st_size, mod); 1369 do_usb_table(symval, sym->st_size, mod);
1370 if (sym_is(name, namelen, "of"))
1371 do_of_table(symval, sym->st_size, mod);
1351 else if (sym_is(name, namelen, "pnp")) 1372 else if (sym_is(name, namelen, "pnp"))
1352 do_pnp_device_entry(symval, sym->st_size, mod); 1373 do_pnp_device_entry(symval, sym->st_size, mod);
1353 else if (sym_is(name, namelen, "pnp_card")) 1374 else if (sym_is(name, namelen, "pnp_card"))
diff --git a/security/integrity/ima/ima_policy.c b/security/integrity/ima/ima_policy.c
index be09e2cacf82..3cd0a58672dd 100644
--- a/security/integrity/ima/ima_policy.c
+++ b/security/integrity/ima/ima_policy.c
@@ -884,10 +884,10 @@ static char *func_tokens[] = {
884 "BPRM_CHECK", 884 "BPRM_CHECK",
885 "MODULE_CHECK", 885 "MODULE_CHECK",
886 "FIRMWARE_CHECK", 886 "FIRMWARE_CHECK",
887 "POST_SETATTR",
887 "KEXEC_KERNEL_CHECK", 888 "KEXEC_KERNEL_CHECK",
888 "KEXEC_INITRAMFS_CHECK", 889 "KEXEC_INITRAMFS_CHECK",
889 "POLICY_CHECK", 890 "POLICY_CHECK"
890 "POST_SETATTR"
891}; 891};
892 892
893void *ima_policy_start(struct seq_file *m, loff_t *pos) 893void *ima_policy_start(struct seq_file *m, loff_t *pos)
diff --git a/tools/net/bpf_jit_disasm.c b/tools/net/bpf_jit_disasm.c
index 5b3241340945..544b05a53b70 100644
--- a/tools/net/bpf_jit_disasm.c
+++ b/tools/net/bpf_jit_disasm.c
@@ -98,6 +98,9 @@ static char *get_klog_buff(unsigned int *klen)
98 char *buff; 98 char *buff;
99 99
100 len = klogctl(CMD_ACTION_SIZE_BUFFER, NULL, 0); 100 len = klogctl(CMD_ACTION_SIZE_BUFFER, NULL, 0);
101 if (len < 0)
102 return NULL;
103
101 buff = malloc(len); 104 buff = malloc(len);
102 if (!buff) 105 if (!buff)
103 return NULL; 106 return NULL;