aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt4
-rw-r--r--Documentation/kernel-parameters.txt6
-rw-r--r--Documentation/networking/udplite.txt2
-rw-r--r--arch/arm/boot/dts/am335x-bone-common.dtsi19
-rw-r--r--arch/arm/boot/dts/am35xx-clocks.dtsi14
-rw-r--r--arch/arm/boot/dts/armada-xp-linksys-mamba.dts5
-rw-r--r--arch/arm/boot/dts/dm816x.dtsi4
-rw-r--r--arch/arm/boot/dts/omap3-n900.dts4
-rw-r--r--arch/arm/mach-exynos/suspend.c4
-rw-r--r--arch/arm/mach-omap2/sleep34xx.S22
-rw-r--r--arch/arm64/boot/dts/mediatek/mt8173-evb.dts3
-rw-r--r--arch/blackfin/include/asm/io.h1
-rw-r--r--arch/s390/net/bpf_jit.h4
-rw-r--r--arch/s390/net/bpf_jit_comp.c11
-rw-r--r--arch/score/lib/string.S2
-rw-r--r--arch/x86/kernel/cpu/perf_event_intel_uncore.c9
-rw-r--r--arch/x86/kernel/cpu/perf_event_intel_uncore.h18
-rw-r--r--arch/x86/kernel/cpu/perf_event_intel_uncore_snbep.c6
-rw-r--r--arch/x86/kvm/mmu.c14
-rw-r--r--block/blk-mq.c8
-rw-r--r--block/genhd.c12
-rw-r--r--drivers/ata/ahci_mvebu.c2
-rw-r--r--drivers/ata/pata_octeon_cf.c2
-rw-r--r--drivers/block/Kconfig1
-rw-r--r--drivers/block/zram/zram_drv.c2
-rw-r--r--drivers/bus/mvebu-mbus.c109
-rw-r--r--drivers/gpu/drm/i915/intel_i2c.c20
-rw-r--r--drivers/gpu/drm/i915/intel_sdvo.c2
-rw-r--r--drivers/gpu/drm/radeon/atombios_crtc.c7
-rw-r--r--drivers/gpu/drm/radeon/radeon_device.c15
-rw-r--r--drivers/gpu/drm/radeon/radeon_vm.c17
-rw-r--r--drivers/input/mouse/synaptics.c7
-rw-r--r--drivers/iommu/intel-iommu.c31
-rw-r--r--drivers/irqchip/irq-sunxi-nmi.c2
-rw-r--r--drivers/md/md.c14
-rw-r--r--drivers/md/raid10.c1
-rw-r--r--drivers/md/raid5.c1
-rw-r--r--drivers/net/ethernet/amd/xgbe/xgbe-drv.c2
-rw-r--r--drivers/net/ethernet/broadcom/b44.c2
-rw-r--r--drivers/net/ethernet/broadcom/genet/bcmmii.c12
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_ethtool.c20
-rw-r--r--drivers/net/ethernet/cisco/enic/enic_main.c11
-rw-r--r--drivers/net/ethernet/cisco/enic/vnic_rq.c9
-rw-r--r--drivers/net/ethernet/emulex/benet/be_cmds.c87
-rw-r--r--drivers/net/ethernet/emulex/benet/be_ethtool.c18
-rw-r--r--drivers/net/ethernet/emulex/benet/be_main.c15
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e.h1
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_debugfs.c9
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_main.c35
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_txrx.c25
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c10
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40e_txrx.c25
-rw-r--r--drivers/net/ethernet/intel/igb/igb_ptp.c4
-rw-r--r--drivers/soc/mediatek/Kconfig1
-rw-r--r--drivers/soc/mediatek/mtk-pmic-wrap.c54
-rw-r--r--drivers/virtio/virtio_pci_common.c1
-rw-r--r--include/linux/intel-iommu.h3
-rw-r--r--include/sound/hda_regmap.h2
-rw-r--r--kernel/locking/lockdep.c3
-rw-r--r--kernel/locking/lockdep_proc.c22
-rw-r--r--kernel/sched/fair.c2
-rw-r--r--kernel/trace/ring_buffer_benchmark.c2
-rw-r--r--lib/rhashtable.c1
-rw-r--r--mm/memcontrol.c6
-rw-r--r--mm/memory_hotplug.c4
-rw-r--r--mm/zsmalloc.c3
-rw-r--r--net/bridge/br_fdb.c2
-rw-r--r--net/bridge/br_multicast.c7
-rw-r--r--net/core/dev.c11
-rw-r--r--net/core/skbuff.c2
-rw-r--r--net/core/sock.c15
-rw-r--r--net/ipv4/udp.c18
-rw-r--r--net/ipv6/addrconf_core.c11
-rw-r--r--net/mpls/af_mpls.c13
-rw-r--r--net/mpls/internal.h1
-rw-r--r--net/openvswitch/vport-netdev.c1
-rw-r--r--net/sctp/auth.c11
-rw-r--r--net/tipc/socket.c16
-rw-r--r--net/wireless/wext-compat.c2
-rwxr-xr-xscripts/checkpatch.pl4
-rw-r--r--sound/hda/hdac_regmap.c8
-rw-r--r--sound/pci/hda/hda_codec.c27
-rw-r--r--sound/pci/hda/hda_intel.c19
-rw-r--r--sound/pci/hda/hda_local.h4
-rw-r--r--sound/usb/quirks.c5
85 files changed, 568 insertions, 403 deletions
diff --git a/Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt b/Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt
index 4b641c7bf1c2..09089a6d69ed 100644
--- a/Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt
+++ b/Documentation/devicetree/bindings/input/touchscreen/tsc2005.txt
@@ -32,8 +32,8 @@ Example:
32 touchscreen-fuzz-x = <4>; 32 touchscreen-fuzz-x = <4>;
33 touchscreen-fuzz-y = <7>; 33 touchscreen-fuzz-y = <7>;
34 touchscreen-fuzz-pressure = <2>; 34 touchscreen-fuzz-pressure = <2>;
35 touchscreen-max-x = <4096>; 35 touchscreen-size-x = <4096>;
36 touchscreen-max-y = <4096>; 36 touchscreen-size-y = <4096>;
37 touchscreen-max-pressure = <2048>; 37 touchscreen-max-pressure = <2048>;
38 38
39 ti,x-plate-ohms = <280>; 39 ti,x-plate-ohms = <280>;
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 61ab1628a057..6726139bd289 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1481,6 +1481,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
1481 By default, super page will be supported if Intel IOMMU 1481 By default, super page will be supported if Intel IOMMU
1482 has the capability. With this option, super page will 1482 has the capability. With this option, super page will
1483 not be supported. 1483 not be supported.
1484 ecs_off [Default Off]
1485 By default, extended context tables will be supported if
1486 the hardware advertises that it has support both for the
1487 extended tables themselves, and also PASID support. With
1488 this option set, extended tables will not be used even
1489 on hardware which claims to support them.
1484 1490
1485 intel_idle.max_cstate= [KNL,HW,ACPI,X86] 1491 intel_idle.max_cstate= [KNL,HW,ACPI,X86]
1486 0 disables intel_idle and fall back on acpi_idle. 1492 0 disables intel_idle and fall back on acpi_idle.
diff --git a/Documentation/networking/udplite.txt b/Documentation/networking/udplite.txt
index d727a3829100..53a726855e49 100644
--- a/Documentation/networking/udplite.txt
+++ b/Documentation/networking/udplite.txt
@@ -20,7 +20,7 @@
20 files/UDP-Lite-HOWTO.txt 20 files/UDP-Lite-HOWTO.txt
21 21
22 o The Wireshark UDP-Lite WiKi (with capture files): 22 o The Wireshark UDP-Lite WiKi (with capture files):
23 http://wiki.wireshark.org/Lightweight_User_Datagram_Protocol 23 https://wiki.wireshark.org/Lightweight_User_Datagram_Protocol
24 24
25 o The Protocol Spec, RFC 3828, http://www.ietf.org/rfc/rfc3828.txt 25 o The Protocol Spec, RFC 3828, http://www.ietf.org/rfc/rfc3828.txt
26 26
diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
index c3255e0c90aa..dbb3f4d2bf84 100644
--- a/arch/arm/boot/dts/am335x-bone-common.dtsi
+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
@@ -223,6 +223,25 @@
223/include/ "tps65217.dtsi" 223/include/ "tps65217.dtsi"
224 224
225&tps { 225&tps {
226 /*
227 * Configure pmic to enter OFF-state instead of SLEEP-state ("RTC-only
228 * mode") at poweroff. Most BeagleBone versions do not support RTC-only
229 * mode and risk hardware damage if this mode is entered.
230 *
231 * For details, see linux-omap mailing list May 2015 thread
232 * [PATCH] ARM: dts: am335x-bone* enable pmic-shutdown-controller
233 * In particular, messages:
234 * http://www.spinics.net/lists/linux-omap/msg118585.html
235 * http://www.spinics.net/lists/linux-omap/msg118615.html
236 *
237 * You can override this later with
238 * &tps { /delete-property/ ti,pmic-shutdown-controller; }
239 * if you want to use RTC-only mode and made sure you are not affected
240 * by the hardware problems. (Tip: double-check by performing a current
241 * measurement after shutdown: it should be less than 1 mA.)
242 */
243 ti,pmic-shutdown-controller;
244
226 regulators { 245 regulators {
227 dcdc1_reg: regulator@0 { 246 dcdc1_reg: regulator@0 {
228 regulator-name = "vdds_dpr"; 247 regulator-name = "vdds_dpr";
diff --git a/arch/arm/boot/dts/am35xx-clocks.dtsi b/arch/arm/boot/dts/am35xx-clocks.dtsi
index 518b8fde88b0..18cc826e9db5 100644
--- a/arch/arm/boot/dts/am35xx-clocks.dtsi
+++ b/arch/arm/boot/dts/am35xx-clocks.dtsi
@@ -12,7 +12,7 @@
12 #clock-cells = <0>; 12 #clock-cells = <0>;
13 compatible = "ti,am35xx-gate-clock"; 13 compatible = "ti,am35xx-gate-clock";
14 clocks = <&ipss_ick>; 14 clocks = <&ipss_ick>;
15 reg = <0x059c>; 15 reg = <0x032c>;
16 ti,bit-shift = <1>; 16 ti,bit-shift = <1>;
17 }; 17 };
18 18
@@ -20,7 +20,7 @@
20 #clock-cells = <0>; 20 #clock-cells = <0>;
21 compatible = "ti,gate-clock"; 21 compatible = "ti,gate-clock";
22 clocks = <&rmii_ck>; 22 clocks = <&rmii_ck>;
23 reg = <0x059c>; 23 reg = <0x032c>;
24 ti,bit-shift = <9>; 24 ti,bit-shift = <9>;
25 }; 25 };
26 26
@@ -28,7 +28,7 @@
28 #clock-cells = <0>; 28 #clock-cells = <0>;
29 compatible = "ti,am35xx-gate-clock"; 29 compatible = "ti,am35xx-gate-clock";
30 clocks = <&ipss_ick>; 30 clocks = <&ipss_ick>;
31 reg = <0x059c>; 31 reg = <0x032c>;
32 ti,bit-shift = <2>; 32 ti,bit-shift = <2>;
33 }; 33 };
34 34
@@ -36,7 +36,7 @@
36 #clock-cells = <0>; 36 #clock-cells = <0>;
37 compatible = "ti,gate-clock"; 37 compatible = "ti,gate-clock";
38 clocks = <&pclk_ck>; 38 clocks = <&pclk_ck>;
39 reg = <0x059c>; 39 reg = <0x032c>;
40 ti,bit-shift = <10>; 40 ti,bit-shift = <10>;
41 }; 41 };
42 42
@@ -44,7 +44,7 @@
44 #clock-cells = <0>; 44 #clock-cells = <0>;
45 compatible = "ti,am35xx-gate-clock"; 45 compatible = "ti,am35xx-gate-clock";
46 clocks = <&ipss_ick>; 46 clocks = <&ipss_ick>;
47 reg = <0x059c>; 47 reg = <0x032c>;
48 ti,bit-shift = <0>; 48 ti,bit-shift = <0>;
49 }; 49 };
50 50
@@ -52,7 +52,7 @@
52 #clock-cells = <0>; 52 #clock-cells = <0>;
53 compatible = "ti,gate-clock"; 53 compatible = "ti,gate-clock";
54 clocks = <&sys_ck>; 54 clocks = <&sys_ck>;
55 reg = <0x059c>; 55 reg = <0x032c>;
56 ti,bit-shift = <8>; 56 ti,bit-shift = <8>;
57 }; 57 };
58 58
@@ -60,7 +60,7 @@
60 #clock-cells = <0>; 60 #clock-cells = <0>;
61 compatible = "ti,am35xx-gate-clock"; 61 compatible = "ti,am35xx-gate-clock";
62 clocks = <&sys_ck>; 62 clocks = <&sys_ck>;
63 reg = <0x059c>; 63 reg = <0x032c>;
64 ti,bit-shift = <3>; 64 ti,bit-shift = <3>;
65 }; 65 };
66}; 66};
diff --git a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
index a2cf2154dcdb..fdd187c55aa5 100644
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
@@ -95,6 +95,11 @@
95 95
96 internal-regs { 96 internal-regs {
97 97
98 rtc@10300 {
99 /* No crystal connected to the internal RTC */
100 status = "disabled";
101 };
102
98 /* J10: VCC, NC, RX, NC, TX, GND */ 103 /* J10: VCC, NC, RX, NC, TX, GND */
99 serial@12000 { 104 serial@12000 {
100 status = "okay"; 105 status = "okay";
diff --git a/arch/arm/boot/dts/dm816x.dtsi b/arch/arm/boot/dts/dm816x.dtsi
index de8427be830a..289806adb343 100644
--- a/arch/arm/boot/dts/dm816x.dtsi
+++ b/arch/arm/boot/dts/dm816x.dtsi
@@ -382,7 +382,7 @@
382 ti,hwmods = "usb_otg_hs"; 382 ti,hwmods = "usb_otg_hs";
383 383
384 usb0: usb@47401000 { 384 usb0: usb@47401000 {
385 compatible = "ti,musb-am33xx"; 385 compatible = "ti,musb-dm816";
386 reg = <0x47401400 0x400 386 reg = <0x47401400 0x400
387 0x47401000 0x200>; 387 0x47401000 0x200>;
388 reg-names = "mc", "control"; 388 reg-names = "mc", "control";
@@ -422,7 +422,7 @@
422 }; 422 };
423 423
424 usb1: usb@47401800 { 424 usb1: usb@47401800 {
425 compatible = "ti,musb-am33xx"; 425 compatible = "ti,musb-dm816";
426 reg = <0x47401c00 0x400 426 reg = <0x47401c00 0x400
427 0x47401800 0x200>; 427 0x47401800 0x200>;
428 reg-names = "mc", "control"; 428 reg-names = "mc", "control";
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
index 5c16145920ea..5f5e0f3d5b64 100644
--- a/arch/arm/boot/dts/omap3-n900.dts
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -832,8 +832,8 @@
832 touchscreen-fuzz-x = <4>; 832 touchscreen-fuzz-x = <4>;
833 touchscreen-fuzz-y = <7>; 833 touchscreen-fuzz-y = <7>;
834 touchscreen-fuzz-pressure = <2>; 834 touchscreen-fuzz-pressure = <2>;
835 touchscreen-max-x = <4096>; 835 touchscreen-size-x = <4096>;
836 touchscreen-max-y = <4096>; 836 touchscreen-size-y = <4096>;
837 touchscreen-max-pressure = <2048>; 837 touchscreen-max-pressure = <2048>;
838 838
839 ti,x-plate-ohms = <280>; 839 ti,x-plate-ohms = <280>;
diff --git a/arch/arm/mach-exynos/suspend.c b/arch/arm/mach-exynos/suspend.c
index c0b6dccbf7bd..7d23ce04cad5 100644
--- a/arch/arm/mach-exynos/suspend.c
+++ b/arch/arm/mach-exynos/suspend.c
@@ -87,8 +87,8 @@ static unsigned int exynos_pmu_spare3;
87static u32 exynos_irqwake_intmask = 0xffffffff; 87static u32 exynos_irqwake_intmask = 0xffffffff;
88 88
89static const struct exynos_wkup_irq exynos3250_wkup_irq[] = { 89static const struct exynos_wkup_irq exynos3250_wkup_irq[] = {
90 { 105, BIT(1) }, /* RTC alarm */ 90 { 73, BIT(1) }, /* RTC alarm */
91 { 106, BIT(2) }, /* RTC tick */ 91 { 74, BIT(2) }, /* RTC tick */
92 { /* sentinel */ }, 92 { /* sentinel */ },
93}; 93};
94 94
diff --git a/arch/arm/mach-omap2/sleep34xx.S b/arch/arm/mach-omap2/sleep34xx.S
index d1dedc8195ed..eafd120b53f1 100644
--- a/arch/arm/mach-omap2/sleep34xx.S
+++ b/arch/arm/mach-omap2/sleep34xx.S
@@ -203,23 +203,8 @@ save_context_wfi:
203 */ 203 */
204 ldr r1, kernel_flush 204 ldr r1, kernel_flush
205 blx r1 205 blx r1
206 /*
207 * The kernel doesn't interwork: v7_flush_dcache_all in particluar will
208 * always return in Thumb state when CONFIG_THUMB2_KERNEL is enabled.
209 * This sequence switches back to ARM. Note that .align may insert a
210 * nop: bx pc needs to be word-aligned in order to work.
211 */
212 THUMB( .thumb )
213 THUMB( .align )
214 THUMB( bx pc )
215 THUMB( nop )
216 .arm
217
218 b omap3_do_wfi 206 b omap3_do_wfi
219 207ENDPROC(omap34xx_cpu_suspend)
220/*
221 * Local variables
222 */
223omap3_do_wfi_sram_addr: 208omap3_do_wfi_sram_addr:
224 .word omap3_do_wfi_sram 209 .word omap3_do_wfi_sram
225kernel_flush: 210kernel_flush:
@@ -364,10 +349,7 @@ exit_nonoff_modes:
364 * =================================== 349 * ===================================
365 */ 350 */
366 ldmfd sp!, {r4 - r11, pc} @ restore regs and return 351 ldmfd sp!, {r4 - r11, pc} @ restore regs and return
367 352ENDPROC(omap3_do_wfi)
368/*
369 * Local variables
370 */
371sdrc_power: 353sdrc_power:
372 .word SDRC_POWER_V 354 .word SDRC_POWER_V
373cm_idlest1_core: 355cm_idlest1_core:
diff --git a/arch/arm64/boot/dts/mediatek/mt8173-evb.dts b/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
index 43d54017b779..d0ab012fa379 100644
--- a/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
+++ b/arch/arm64/boot/dts/mediatek/mt8173-evb.dts
@@ -16,7 +16,8 @@
16#include "mt8173.dtsi" 16#include "mt8173.dtsi"
17 17
18/ { 18/ {
19 model = "mediatek,mt8173-evb"; 19 model = "MediaTek MT8173 evaluation board";
20 compatible = "mediatek,mt8173-evb", "mediatek,mt8173";
20 21
21 aliases { 22 aliases {
22 serial0 = &uart0; 23 serial0 = &uart0;
diff --git a/arch/blackfin/include/asm/io.h b/arch/blackfin/include/asm/io.h
index 4e8ad0523118..6abebe82d4e9 100644
--- a/arch/blackfin/include/asm/io.h
+++ b/arch/blackfin/include/asm/io.h
@@ -10,6 +10,7 @@
10#include <linux/compiler.h> 10#include <linux/compiler.h>
11#include <linux/types.h> 11#include <linux/types.h>
12#include <asm/byteorder.h> 12#include <asm/byteorder.h>
13#include <asm/def_LPBlackfin.h>
13 14
14#define __raw_readb bfin_read8 15#define __raw_readb bfin_read8
15#define __raw_readw bfin_read16 16#define __raw_readw bfin_read16
diff --git a/arch/s390/net/bpf_jit.h b/arch/s390/net/bpf_jit.h
index ba8593a515ba..de156ba3bd71 100644
--- a/arch/s390/net/bpf_jit.h
+++ b/arch/s390/net/bpf_jit.h
@@ -48,7 +48,9 @@ extern u8 sk_load_word[], sk_load_half[], sk_load_byte[];
48 * We get 160 bytes stack space from calling function, but only use 48 * We get 160 bytes stack space from calling function, but only use
49 * 11 * 8 byte (old backchain + r15 - r6) for storing registers. 49 * 11 * 8 byte (old backchain + r15 - r6) for storing registers.
50 */ 50 */
51#define STK_OFF (MAX_BPF_STACK + 8 + 4 + 4 + (160 - 11 * 8)) 51#define STK_SPACE (MAX_BPF_STACK + 8 + 4 + 4 + 160)
52#define STK_160_UNUSED (160 - 11 * 8)
53#define STK_OFF (STK_SPACE - STK_160_UNUSED)
52#define STK_OFF_TMP 160 /* Offset of tmp buffer on stack */ 54#define STK_OFF_TMP 160 /* Offset of tmp buffer on stack */
53#define STK_OFF_HLEN 168 /* Offset of SKB header length on stack */ 55#define STK_OFF_HLEN 168 /* Offset of SKB header length on stack */
54 56
diff --git a/arch/s390/net/bpf_jit_comp.c b/arch/s390/net/bpf_jit_comp.c
index 20c146d1251a..55423d8be580 100644
--- a/arch/s390/net/bpf_jit_comp.c
+++ b/arch/s390/net/bpf_jit_comp.c
@@ -384,13 +384,16 @@ static void bpf_jit_prologue(struct bpf_jit *jit)
384 } 384 }
385 /* Setup stack and backchain */ 385 /* Setup stack and backchain */
386 if (jit->seen & SEEN_STACK) { 386 if (jit->seen & SEEN_STACK) {
387 /* lgr %bfp,%r15 (BPF frame pointer) */ 387 if (jit->seen & SEEN_FUNC)
388 EMIT4(0xb9040000, BPF_REG_FP, REG_15); 388 /* lgr %w1,%r15 (backchain) */
389 EMIT4(0xb9040000, REG_W1, REG_15);
390 /* la %bfp,STK_160_UNUSED(%r15) (BPF frame pointer) */
391 EMIT4_DISP(0x41000000, BPF_REG_FP, REG_15, STK_160_UNUSED);
389 /* aghi %r15,-STK_OFF */ 392 /* aghi %r15,-STK_OFF */
390 EMIT4_IMM(0xa70b0000, REG_15, -STK_OFF); 393 EMIT4_IMM(0xa70b0000, REG_15, -STK_OFF);
391 if (jit->seen & SEEN_FUNC) 394 if (jit->seen & SEEN_FUNC)
392 /* stg %bfp,152(%r15) (backchain) */ 395 /* stg %w1,152(%r15) (backchain) */
393 EMIT6_DISP_LH(0xe3000000, 0x0024, BPF_REG_FP, REG_0, 396 EMIT6_DISP_LH(0xe3000000, 0x0024, REG_W1, REG_0,
394 REG_15, 152); 397 REG_15, 152);
395 } 398 }
396 /* 399 /*
diff --git a/arch/score/lib/string.S b/arch/score/lib/string.S
index 00b7d3a2fc60..16efa3ad037f 100644
--- a/arch/score/lib/string.S
+++ b/arch/score/lib/string.S
@@ -175,10 +175,10 @@ ENTRY(__clear_user)
175 br r3 175 br r3
176 176
177 .section .fixup, "ax" 177 .section .fixup, "ax"
17899:
178 br r3 179 br r3
179 .previous 180 .previous
180 .section __ex_table, "a" 181 .section __ex_table, "a"
181 .align 2 182 .align 2
18299:
183 .word 0b, 99b 183 .word 0b, 99b
184 .previous 184 .previous
diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.c b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
index dd319e59246b..90b7c501c95b 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_uncore.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.c
@@ -839,6 +839,7 @@ static int uncore_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id
839 box->phys_id = phys_id; 839 box->phys_id = phys_id;
840 box->pci_dev = pdev; 840 box->pci_dev = pdev;
841 box->pmu = pmu; 841 box->pmu = pmu;
842 uncore_box_init(box);
842 pci_set_drvdata(pdev, box); 843 pci_set_drvdata(pdev, box);
843 844
844 raw_spin_lock(&uncore_box_lock); 845 raw_spin_lock(&uncore_box_lock);
@@ -1002,8 +1003,10 @@ static int uncore_cpu_starting(int cpu)
1002 pmu = &type->pmus[j]; 1003 pmu = &type->pmus[j];
1003 box = *per_cpu_ptr(pmu->box, cpu); 1004 box = *per_cpu_ptr(pmu->box, cpu);
1004 /* called by uncore_cpu_init? */ 1005 /* called by uncore_cpu_init? */
1005 if (box && box->phys_id >= 0) 1006 if (box && box->phys_id >= 0) {
1007 uncore_box_init(box);
1006 continue; 1008 continue;
1009 }
1007 1010
1008 for_each_online_cpu(k) { 1011 for_each_online_cpu(k) {
1009 exist = *per_cpu_ptr(pmu->box, k); 1012 exist = *per_cpu_ptr(pmu->box, k);
@@ -1019,8 +1022,10 @@ static int uncore_cpu_starting(int cpu)
1019 } 1022 }
1020 } 1023 }
1021 1024
1022 if (box) 1025 if (box) {
1023 box->phys_id = phys_id; 1026 box->phys_id = phys_id;
1027 uncore_box_init(box);
1028 }
1024 } 1029 }
1025 } 1030 }
1026 return 0; 1031 return 0;
diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore.h b/arch/x86/kernel/cpu/perf_event_intel_uncore.h
index f789ec9a0133..ceac8f5dc018 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_uncore.h
+++ b/arch/x86/kernel/cpu/perf_event_intel_uncore.h
@@ -258,14 +258,6 @@ static inline int uncore_num_counters(struct intel_uncore_box *box)
258 return box->pmu->type->num_counters; 258 return box->pmu->type->num_counters;
259} 259}
260 260
261static inline void uncore_box_init(struct intel_uncore_box *box)
262{
263 if (!test_and_set_bit(UNCORE_BOX_FLAG_INITIATED, &box->flags)) {
264 if (box->pmu->type->ops->init_box)
265 box->pmu->type->ops->init_box(box);
266 }
267}
268
269static inline void uncore_disable_box(struct intel_uncore_box *box) 261static inline void uncore_disable_box(struct intel_uncore_box *box)
270{ 262{
271 if (box->pmu->type->ops->disable_box) 263 if (box->pmu->type->ops->disable_box)
@@ -274,8 +266,6 @@ static inline void uncore_disable_box(struct intel_uncore_box *box)
274 266
275static inline void uncore_enable_box(struct intel_uncore_box *box) 267static inline void uncore_enable_box(struct intel_uncore_box *box)
276{ 268{
277 uncore_box_init(box);
278
279 if (box->pmu->type->ops->enable_box) 269 if (box->pmu->type->ops->enable_box)
280 box->pmu->type->ops->enable_box(box); 270 box->pmu->type->ops->enable_box(box);
281} 271}
@@ -298,6 +288,14 @@ static inline u64 uncore_read_counter(struct intel_uncore_box *box,
298 return box->pmu->type->ops->read_counter(box, event); 288 return box->pmu->type->ops->read_counter(box, event);
299} 289}
300 290
291static inline void uncore_box_init(struct intel_uncore_box *box)
292{
293 if (!test_and_set_bit(UNCORE_BOX_FLAG_INITIATED, &box->flags)) {
294 if (box->pmu->type->ops->init_box)
295 box->pmu->type->ops->init_box(box);
296 }
297}
298
301static inline bool uncore_box_is_fake(struct intel_uncore_box *box) 299static inline bool uncore_box_is_fake(struct intel_uncore_box *box)
302{ 300{
303 return (box->phys_id < 0); 301 return (box->phys_id < 0);
diff --git a/arch/x86/kernel/cpu/perf_event_intel_uncore_snbep.c b/arch/x86/kernel/cpu/perf_event_intel_uncore_snbep.c
index 12d9548457e7..6d6e85dd5849 100644
--- a/arch/x86/kernel/cpu/perf_event_intel_uncore_snbep.c
+++ b/arch/x86/kernel/cpu/perf_event_intel_uncore_snbep.c
@@ -164,8 +164,8 @@
164 ((1ULL << (n)) - 1))) 164 ((1ULL << (n)) - 1)))
165 165
166/* Haswell-EP Ubox */ 166/* Haswell-EP Ubox */
167#define HSWEP_U_MSR_PMON_CTR0 0x705 167#define HSWEP_U_MSR_PMON_CTR0 0x709
168#define HSWEP_U_MSR_PMON_CTL0 0x709 168#define HSWEP_U_MSR_PMON_CTL0 0x705
169#define HSWEP_U_MSR_PMON_FILTER 0x707 169#define HSWEP_U_MSR_PMON_FILTER 0x707
170 170
171#define HSWEP_U_MSR_PMON_UCLK_FIXED_CTL 0x703 171#define HSWEP_U_MSR_PMON_UCLK_FIXED_CTL 0x703
@@ -1914,7 +1914,7 @@ static struct intel_uncore_type hswep_uncore_cbox = {
1914 .name = "cbox", 1914 .name = "cbox",
1915 .num_counters = 4, 1915 .num_counters = 4,
1916 .num_boxes = 18, 1916 .num_boxes = 18,
1917 .perf_ctr_bits = 44, 1917 .perf_ctr_bits = 48,
1918 .event_ctl = HSWEP_C0_MSR_PMON_CTL0, 1918 .event_ctl = HSWEP_C0_MSR_PMON_CTL0,
1919 .perf_ctr = HSWEP_C0_MSR_PMON_CTR0, 1919 .perf_ctr = HSWEP_C0_MSR_PMON_CTR0,
1920 .event_mask = SNBEP_CBO_MSR_PMON_RAW_EVENT_MASK, 1920 .event_mask = SNBEP_CBO_MSR_PMON_RAW_EVENT_MASK,
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 44a7d2515497..b73337634214 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -4215,13 +4215,13 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu, gpa_t gpa,
4215 u64 entry, gentry, *spte; 4215 u64 entry, gentry, *spte;
4216 int npte; 4216 int npte;
4217 bool remote_flush, local_flush, zap_page; 4217 bool remote_flush, local_flush, zap_page;
4218 union kvm_mmu_page_role mask = (union kvm_mmu_page_role) { 4218 union kvm_mmu_page_role mask = { };
4219 .cr0_wp = 1, 4219
4220 .cr4_pae = 1, 4220 mask.cr0_wp = 1;
4221 .nxe = 1, 4221 mask.cr4_pae = 1;
4222 .smep_andnot_wp = 1, 4222 mask.nxe = 1;
4223 .smap_andnot_wp = 1, 4223 mask.smep_andnot_wp = 1;
4224 }; 4224 mask.smap_andnot_wp = 1;
4225 4225
4226 /* 4226 /*
4227 * If we don't have indirect shadow pages, it means no page is 4227 * If we don't have indirect shadow pages, it means no page is
diff --git a/block/blk-mq.c b/block/blk-mq.c
index e68b71b85a7e..594eea04266e 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1600,6 +1600,7 @@ static int blk_mq_hctx_notify(void *data, unsigned long action,
1600 return NOTIFY_OK; 1600 return NOTIFY_OK;
1601} 1601}
1602 1602
1603/* hctx->ctxs will be freed in queue's release handler */
1603static void blk_mq_exit_hctx(struct request_queue *q, 1604static void blk_mq_exit_hctx(struct request_queue *q,
1604 struct blk_mq_tag_set *set, 1605 struct blk_mq_tag_set *set,
1605 struct blk_mq_hw_ctx *hctx, unsigned int hctx_idx) 1606 struct blk_mq_hw_ctx *hctx, unsigned int hctx_idx)
@@ -1618,7 +1619,6 @@ static void blk_mq_exit_hctx(struct request_queue *q,
1618 1619
1619 blk_mq_unregister_cpu_notifier(&hctx->cpu_notifier); 1620 blk_mq_unregister_cpu_notifier(&hctx->cpu_notifier);
1620 blk_free_flush_queue(hctx->fq); 1621 blk_free_flush_queue(hctx->fq);
1621 kfree(hctx->ctxs);
1622 blk_mq_free_bitmap(&hctx->ctx_map); 1622 blk_mq_free_bitmap(&hctx->ctx_map);
1623} 1623}
1624 1624
@@ -1891,8 +1891,12 @@ void blk_mq_release(struct request_queue *q)
1891 unsigned int i; 1891 unsigned int i;
1892 1892
1893 /* hctx kobj stays in hctx */ 1893 /* hctx kobj stays in hctx */
1894 queue_for_each_hw_ctx(q, hctx, i) 1894 queue_for_each_hw_ctx(q, hctx, i) {
1895 if (!hctx)
1896 continue;
1897 kfree(hctx->ctxs);
1895 kfree(hctx); 1898 kfree(hctx);
1899 }
1896 1900
1897 kfree(q->queue_hw_ctx); 1901 kfree(q->queue_hw_ctx);
1898 1902
diff --git a/block/genhd.c b/block/genhd.c
index 666e11b83983..ea982eadaf63 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -422,9 +422,9 @@ int blk_alloc_devt(struct hd_struct *part, dev_t *devt)
422 /* allocate ext devt */ 422 /* allocate ext devt */
423 idr_preload(GFP_KERNEL); 423 idr_preload(GFP_KERNEL);
424 424
425 spin_lock(&ext_devt_lock); 425 spin_lock_bh(&ext_devt_lock);
426 idx = idr_alloc(&ext_devt_idr, part, 0, NR_EXT_DEVT, GFP_NOWAIT); 426 idx = idr_alloc(&ext_devt_idr, part, 0, NR_EXT_DEVT, GFP_NOWAIT);
427 spin_unlock(&ext_devt_lock); 427 spin_unlock_bh(&ext_devt_lock);
428 428
429 idr_preload_end(); 429 idr_preload_end();
430 if (idx < 0) 430 if (idx < 0)
@@ -449,9 +449,9 @@ void blk_free_devt(dev_t devt)
449 return; 449 return;
450 450
451 if (MAJOR(devt) == BLOCK_EXT_MAJOR) { 451 if (MAJOR(devt) == BLOCK_EXT_MAJOR) {
452 spin_lock(&ext_devt_lock); 452 spin_lock_bh(&ext_devt_lock);
453 idr_remove(&ext_devt_idr, blk_mangle_minor(MINOR(devt))); 453 idr_remove(&ext_devt_idr, blk_mangle_minor(MINOR(devt)));
454 spin_unlock(&ext_devt_lock); 454 spin_unlock_bh(&ext_devt_lock);
455 } 455 }
456} 456}
457 457
@@ -690,13 +690,13 @@ struct gendisk *get_gendisk(dev_t devt, int *partno)
690 } else { 690 } else {
691 struct hd_struct *part; 691 struct hd_struct *part;
692 692
693 spin_lock(&ext_devt_lock); 693 spin_lock_bh(&ext_devt_lock);
694 part = idr_find(&ext_devt_idr, blk_mangle_minor(MINOR(devt))); 694 part = idr_find(&ext_devt_idr, blk_mangle_minor(MINOR(devt)));
695 if (part && get_disk(part_to_disk(part))) { 695 if (part && get_disk(part_to_disk(part))) {
696 *partno = part->partno; 696 *partno = part->partno;
697 disk = part_to_disk(part); 697 disk = part_to_disk(part);
698 } 698 }
699 spin_unlock(&ext_devt_lock); 699 spin_unlock_bh(&ext_devt_lock);
700 } 700 }
701 701
702 return disk; 702 return disk;
diff --git a/drivers/ata/ahci_mvebu.c b/drivers/ata/ahci_mvebu.c
index 23716dd8a7ec..5928d0746a27 100644
--- a/drivers/ata/ahci_mvebu.c
+++ b/drivers/ata/ahci_mvebu.c
@@ -45,7 +45,7 @@ static void ahci_mvebu_mbus_config(struct ahci_host_priv *hpriv,
45 writel((cs->mbus_attr << 8) | 45 writel((cs->mbus_attr << 8) |
46 (dram->mbus_dram_target_id << 4) | 1, 46 (dram->mbus_dram_target_id << 4) | 1,
47 hpriv->mmio + AHCI_WINDOW_CTRL(i)); 47 hpriv->mmio + AHCI_WINDOW_CTRL(i));
48 writel(cs->base, hpriv->mmio + AHCI_WINDOW_BASE(i)); 48 writel(cs->base >> 16, hpriv->mmio + AHCI_WINDOW_BASE(i));
49 writel(((cs->size - 1) & 0xffff0000), 49 writel(((cs->size - 1) & 0xffff0000),
50 hpriv->mmio + AHCI_WINDOW_SIZE(i)); 50 hpriv->mmio + AHCI_WINDOW_SIZE(i));
51 } 51 }
diff --git a/drivers/ata/pata_octeon_cf.c b/drivers/ata/pata_octeon_cf.c
index 80a80548ad0a..27245957eee3 100644
--- a/drivers/ata/pata_octeon_cf.c
+++ b/drivers/ata/pata_octeon_cf.c
@@ -1053,7 +1053,7 @@ static struct of_device_id octeon_cf_match[] = {
1053 }, 1053 },
1054 {}, 1054 {},
1055}; 1055};
1056MODULE_DEVICE_TABLE(of, octeon_i2c_match); 1056MODULE_DEVICE_TABLE(of, octeon_cf_match);
1057 1057
1058static struct platform_driver octeon_cf_driver = { 1058static struct platform_driver octeon_cf_driver = {
1059 .probe = octeon_cf_probe, 1059 .probe = octeon_cf_probe,
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig
index eb1fed5bd516..3ccef9eba6f9 100644
--- a/drivers/block/Kconfig
+++ b/drivers/block/Kconfig
@@ -406,6 +406,7 @@ config BLK_DEV_RAM_DAX
406 406
407config BLK_DEV_PMEM 407config BLK_DEV_PMEM
408 tristate "Persistent memory block device support" 408 tristate "Persistent memory block device support"
409 depends on HAS_IOMEM
409 help 410 help
410 Saying Y here will allow you to use a contiguous range of reserved 411 Saying Y here will allow you to use a contiguous range of reserved
411 memory as one or more persistent block devices. 412 memory as one or more persistent block devices.
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 8dcbced0eafd..6e134f4759c0 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -805,7 +805,9 @@ static void zram_reset_device(struct zram *zram)
805 memset(&zram->stats, 0, sizeof(zram->stats)); 805 memset(&zram->stats, 0, sizeof(zram->stats));
806 zram->disksize = 0; 806 zram->disksize = 0;
807 zram->max_comp_streams = 1; 807 zram->max_comp_streams = 1;
808
808 set_capacity(zram->disk, 0); 809 set_capacity(zram->disk, 0);
810 part_stat_set_all(&zram->disk->part0, 0);
809 811
810 up_write(&zram->init_lock); 812 up_write(&zram->init_lock);
811 /* I/O operation under all of CPU are done so let's free */ 813 /* I/O operation under all of CPU are done so let's free */
diff --git a/drivers/bus/mvebu-mbus.c b/drivers/bus/mvebu-mbus.c
index fb9ec6221730..6f047dcb94c2 100644
--- a/drivers/bus/mvebu-mbus.c
+++ b/drivers/bus/mvebu-mbus.c
@@ -58,7 +58,6 @@
58#include <linux/debugfs.h> 58#include <linux/debugfs.h>
59#include <linux/log2.h> 59#include <linux/log2.h>
60#include <linux/syscore_ops.h> 60#include <linux/syscore_ops.h>
61#include <linux/memblock.h>
62 61
63/* 62/*
64 * DDR target is the same on all platforms. 63 * DDR target is the same on all platforms.
@@ -70,6 +69,7 @@
70 */ 69 */
71#define WIN_CTRL_OFF 0x0000 70#define WIN_CTRL_OFF 0x0000
72#define WIN_CTRL_ENABLE BIT(0) 71#define WIN_CTRL_ENABLE BIT(0)
72/* Only on HW I/O coherency capable platforms */
73#define WIN_CTRL_SYNCBARRIER BIT(1) 73#define WIN_CTRL_SYNCBARRIER BIT(1)
74#define WIN_CTRL_TGT_MASK 0xf0 74#define WIN_CTRL_TGT_MASK 0xf0
75#define WIN_CTRL_TGT_SHIFT 4 75#define WIN_CTRL_TGT_SHIFT 4
@@ -102,9 +102,7 @@
102 102
103/* Relative to mbusbridge_base */ 103/* Relative to mbusbridge_base */
104#define MBUS_BRIDGE_CTRL_OFF 0x0 104#define MBUS_BRIDGE_CTRL_OFF 0x0
105#define MBUS_BRIDGE_SIZE_MASK 0xffff0000
106#define MBUS_BRIDGE_BASE_OFF 0x4 105#define MBUS_BRIDGE_BASE_OFF 0x4
107#define MBUS_BRIDGE_BASE_MASK 0xffff0000
108 106
109/* Maximum number of windows, for all known platforms */ 107/* Maximum number of windows, for all known platforms */
110#define MBUS_WINS_MAX 20 108#define MBUS_WINS_MAX 20
@@ -323,8 +321,9 @@ static int mvebu_mbus_setup_window(struct mvebu_mbus_state *mbus,
323 ctrl = ((size - 1) & WIN_CTRL_SIZE_MASK) | 321 ctrl = ((size - 1) & WIN_CTRL_SIZE_MASK) |
324 (attr << WIN_CTRL_ATTR_SHIFT) | 322 (attr << WIN_CTRL_ATTR_SHIFT) |
325 (target << WIN_CTRL_TGT_SHIFT) | 323 (target << WIN_CTRL_TGT_SHIFT) |
326 WIN_CTRL_SYNCBARRIER |
327 WIN_CTRL_ENABLE; 324 WIN_CTRL_ENABLE;
325 if (mbus->hw_io_coherency)
326 ctrl |= WIN_CTRL_SYNCBARRIER;
328 327
329 writel(base & WIN_BASE_LOW, addr + WIN_BASE_OFF); 328 writel(base & WIN_BASE_LOW, addr + WIN_BASE_OFF);
330 writel(ctrl, addr + WIN_CTRL_OFF); 329 writel(ctrl, addr + WIN_CTRL_OFF);
@@ -577,106 +576,36 @@ static unsigned int armada_xp_mbus_win_remap_offset(int win)
577 return MVEBU_MBUS_NO_REMAP; 576 return MVEBU_MBUS_NO_REMAP;
578} 577}
579 578
580/*
581 * Use the memblock information to find the MBus bridge hole in the
582 * physical address space.
583 */
584static void __init
585mvebu_mbus_find_bridge_hole(uint64_t *start, uint64_t *end)
586{
587 struct memblock_region *r;
588 uint64_t s = 0;
589
590 for_each_memblock(memory, r) {
591 /*
592 * This part of the memory is above 4 GB, so we don't
593 * care for the MBus bridge hole.
594 */
595 if (r->base >= 0x100000000)
596 continue;
597
598 /*
599 * The MBus bridge hole is at the end of the RAM under
600 * the 4 GB limit.
601 */
602 if (r->base + r->size > s)
603 s = r->base + r->size;
604 }
605
606 *start = s;
607 *end = 0x100000000;
608}
609
610static void __init 579static void __init
611mvebu_mbus_default_setup_cpu_target(struct mvebu_mbus_state *mbus) 580mvebu_mbus_default_setup_cpu_target(struct mvebu_mbus_state *mbus)
612{ 581{
613 int i; 582 int i;
614 int cs; 583 int cs;
615 uint64_t mbus_bridge_base, mbus_bridge_end;
616 584
617 mvebu_mbus_dram_info.mbus_dram_target_id = TARGET_DDR; 585 mvebu_mbus_dram_info.mbus_dram_target_id = TARGET_DDR;
618 586
619 mvebu_mbus_find_bridge_hole(&mbus_bridge_base, &mbus_bridge_end);
620
621 for (i = 0, cs = 0; i < 4; i++) { 587 for (i = 0, cs = 0; i < 4; i++) {
622 u64 base = readl(mbus->sdramwins_base + DDR_BASE_CS_OFF(i)); 588 u32 base = readl(mbus->sdramwins_base + DDR_BASE_CS_OFF(i));
623 u64 size = readl(mbus->sdramwins_base + DDR_SIZE_CS_OFF(i)); 589 u32 size = readl(mbus->sdramwins_base + DDR_SIZE_CS_OFF(i));
624 u64 end;
625 struct mbus_dram_window *w;
626
627 /* Ignore entries that are not enabled */
628 if (!(size & DDR_SIZE_ENABLED))
629 continue;
630
631 /*
632 * Ignore entries whose base address is above 2^32,
633 * since devices cannot DMA to such high addresses
634 */
635 if (base & DDR_BASE_CS_HIGH_MASK)
636 continue;
637
638 base = base & DDR_BASE_CS_LOW_MASK;
639 size = (size | ~DDR_SIZE_MASK) + 1;
640 end = base + size;
641
642 /*
643 * Adjust base/size of the current CS to make sure it
644 * doesn't overlap with the MBus bridge hole. This is
645 * particularly important for devices that do DMA from
646 * DRAM to a SRAM mapped in a MBus window, such as the
647 * CESA cryptographic engine.
648 */
649 590
650 /* 591 /*
651 * The CS is fully enclosed inside the MBus bridge 592 * We only take care of entries for which the chip
652 * area, so ignore it. 593 * select is enabled, and that don't have high base
594 * address bits set (devices can only access the first
595 * 32 bits of the memory).
653 */ 596 */
654 if (base >= mbus_bridge_base && end <= mbus_bridge_end) 597 if ((size & DDR_SIZE_ENABLED) &&
655 continue; 598 !(base & DDR_BASE_CS_HIGH_MASK)) {
599 struct mbus_dram_window *w;
656 600
657 /* 601 w = &mvebu_mbus_dram_info.cs[cs++];
658 * Beginning of CS overlaps with end of MBus, raise CS 602 w->cs_index = i;
659 * base address, and shrink its size. 603 w->mbus_attr = 0xf & ~(1 << i);
660 */ 604 if (mbus->hw_io_coherency)
661 if (base >= mbus_bridge_base && end > mbus_bridge_end) { 605 w->mbus_attr |= ATTR_HW_COHERENCY;
662 size -= mbus_bridge_end - base; 606 w->base = base & DDR_BASE_CS_LOW_MASK;
663 base = mbus_bridge_end; 607 w->size = (size | ~DDR_SIZE_MASK) + 1;
664 } 608 }
665
666 /*
667 * End of CS overlaps with beginning of MBus, shrink
668 * CS size.
669 */
670 if (base < mbus_bridge_base && end > mbus_bridge_base)
671 size -= end - mbus_bridge_base;
672
673 w = &mvebu_mbus_dram_info.cs[cs++];
674 w->cs_index = i;
675 w->mbus_attr = 0xf & ~(1 << i);
676 if (mbus->hw_io_coherency)
677 w->mbus_attr |= ATTR_HW_COHERENCY;
678 w->base = base;
679 w->size = size;
680 } 609 }
681 mvebu_mbus_dram_info.num_cs = cs; 610 mvebu_mbus_dram_info.num_cs = cs;
682} 611}
diff --git a/drivers/gpu/drm/i915/intel_i2c.c b/drivers/gpu/drm/i915/intel_i2c.c
index 56e437e31580..ae628001fd97 100644
--- a/drivers/gpu/drm/i915/intel_i2c.c
+++ b/drivers/gpu/drm/i915/intel_i2c.c
@@ -435,7 +435,7 @@ gmbus_xfer(struct i2c_adapter *adapter,
435 struct intel_gmbus, 435 struct intel_gmbus,
436 adapter); 436 adapter);
437 struct drm_i915_private *dev_priv = bus->dev_priv; 437 struct drm_i915_private *dev_priv = bus->dev_priv;
438 int i, reg_offset; 438 int i = 0, inc, try = 0, reg_offset;
439 int ret = 0; 439 int ret = 0;
440 440
441 intel_aux_display_runtime_get(dev_priv); 441 intel_aux_display_runtime_get(dev_priv);
@@ -448,12 +448,14 @@ gmbus_xfer(struct i2c_adapter *adapter,
448 448
449 reg_offset = dev_priv->gpio_mmio_base; 449 reg_offset = dev_priv->gpio_mmio_base;
450 450
451retry:
451 I915_WRITE(GMBUS0 + reg_offset, bus->reg0); 452 I915_WRITE(GMBUS0 + reg_offset, bus->reg0);
452 453
453 for (i = 0; i < num; i++) { 454 for (; i < num; i += inc) {
455 inc = 1;
454 if (gmbus_is_index_read(msgs, i, num)) { 456 if (gmbus_is_index_read(msgs, i, num)) {
455 ret = gmbus_xfer_index_read(dev_priv, &msgs[i]); 457 ret = gmbus_xfer_index_read(dev_priv, &msgs[i]);
456 i += 1; /* set i to the index of the read xfer */ 458 inc = 2; /* an index read is two msgs */
457 } else if (msgs[i].flags & I2C_M_RD) { 459 } else if (msgs[i].flags & I2C_M_RD) {
458 ret = gmbus_xfer_read(dev_priv, &msgs[i], 0); 460 ret = gmbus_xfer_read(dev_priv, &msgs[i], 0);
459 } else { 461 } else {
@@ -525,6 +527,18 @@ clear_err:
525 adapter->name, msgs[i].addr, 527 adapter->name, msgs[i].addr,
526 (msgs[i].flags & I2C_M_RD) ? 'r' : 'w', msgs[i].len); 528 (msgs[i].flags & I2C_M_RD) ? 'r' : 'w', msgs[i].len);
527 529
530 /*
531 * Passive adapters sometimes NAK the first probe. Retry the first
532 * message once on -ENXIO for GMBUS transfers; the bit banging algorithm
533 * has retries internally. See also the retry loop in
534 * drm_do_probe_ddc_edid, which bails out on the first -ENXIO.
535 */
536 if (ret == -ENXIO && i == 0 && try++ == 0) {
537 DRM_DEBUG_KMS("GMBUS [%s] NAK on first message, retry\n",
538 adapter->name);
539 goto retry;
540 }
541
528 goto out; 542 goto out;
529 543
530timeout: 544timeout:
diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i915/intel_sdvo.c
index e87d2f418de4..987b81f31b0e 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -2550,7 +2550,7 @@ intel_sdvo_analog_init(struct intel_sdvo *intel_sdvo, int device)
2550 2550
2551 DRM_DEBUG_KMS("initialising analog device %d\n", device); 2551 DRM_DEBUG_KMS("initialising analog device %d\n", device);
2552 2552
2553 intel_sdvo_connector = kzalloc(sizeof(*intel_sdvo_connector), GFP_KERNEL); 2553 intel_sdvo_connector = intel_sdvo_connector_alloc();
2554 if (!intel_sdvo_connector) 2554 if (!intel_sdvo_connector)
2555 return false; 2555 return false;
2556 2556
diff --git a/drivers/gpu/drm/radeon/atombios_crtc.c b/drivers/gpu/drm/radeon/atombios_crtc.c
index e597ffc26563..dac78ad24b31 100644
--- a/drivers/gpu/drm/radeon/atombios_crtc.c
+++ b/drivers/gpu/drm/radeon/atombios_crtc.c
@@ -580,9 +580,6 @@ static u32 atombios_adjust_pll(struct drm_crtc *crtc,
580 else 580 else
581 radeon_crtc->pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV; 581 radeon_crtc->pll_flags |= RADEON_PLL_PREFER_LOW_REF_DIV;
582 582
583 /* if there is no audio, set MINM_OVER_MAXP */
584 if (!drm_detect_monitor_audio(radeon_connector_edid(connector)))
585 radeon_crtc->pll_flags |= RADEON_PLL_PREFER_MINM_OVER_MAXP;
586 if (rdev->family < CHIP_RV770) 583 if (rdev->family < CHIP_RV770)
587 radeon_crtc->pll_flags |= RADEON_PLL_PREFER_MINM_OVER_MAXP; 584 radeon_crtc->pll_flags |= RADEON_PLL_PREFER_MINM_OVER_MAXP;
588 /* use frac fb div on APUs */ 585 /* use frac fb div on APUs */
@@ -1798,9 +1795,7 @@ static int radeon_get_shared_nondp_ppll(struct drm_crtc *crtc)
1798 if ((crtc->mode.clock == test_crtc->mode.clock) && 1795 if ((crtc->mode.clock == test_crtc->mode.clock) &&
1799 (adjusted_clock == test_adjusted_clock) && 1796 (adjusted_clock == test_adjusted_clock) &&
1800 (radeon_crtc->ss_enabled == test_radeon_crtc->ss_enabled) && 1797 (radeon_crtc->ss_enabled == test_radeon_crtc->ss_enabled) &&
1801 (test_radeon_crtc->pll_id != ATOM_PPLL_INVALID) && 1798 (test_radeon_crtc->pll_id != ATOM_PPLL_INVALID))
1802 (drm_detect_monitor_audio(radeon_connector_edid(test_radeon_crtc->connector)) ==
1803 drm_detect_monitor_audio(radeon_connector_edid(radeon_crtc->connector))))
1804 return test_radeon_crtc->pll_id; 1799 return test_radeon_crtc->pll_id;
1805 } 1800 }
1806 } 1801 }
diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c
index b7ca4c514621..a7fdfa4f0857 100644
--- a/drivers/gpu/drm/radeon/radeon_device.c
+++ b/drivers/gpu/drm/radeon/radeon_device.c
@@ -1463,6 +1463,21 @@ int radeon_device_init(struct radeon_device *rdev,
1463 if (r) 1463 if (r)
1464 DRM_ERROR("ib ring test failed (%d).\n", r); 1464 DRM_ERROR("ib ring test failed (%d).\n", r);
1465 1465
1466 /*
1467 * Turks/Thames GPU will freeze whole laptop if DPM is not restarted
1468 * after the CP ring have chew one packet at least. Hence here we stop
1469 * and restart DPM after the radeon_ib_ring_tests().
1470 */
1471 if (rdev->pm.dpm_enabled &&
1472 (rdev->pm.pm_method == PM_METHOD_DPM) &&
1473 (rdev->family == CHIP_TURKS) &&
1474 (rdev->flags & RADEON_IS_MOBILITY)) {
1475 mutex_lock(&rdev->pm.mutex);
1476 radeon_dpm_disable(rdev);
1477 radeon_dpm_enable(rdev);
1478 mutex_unlock(&rdev->pm.mutex);
1479 }
1480
1466 if ((radeon_testing & 1)) { 1481 if ((radeon_testing & 1)) {
1467 if (rdev->accel_working) 1482 if (rdev->accel_working)
1468 radeon_test_moves(rdev); 1483 radeon_test_moves(rdev);
diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c
index de42fc4a22b8..9c3377ca17b7 100644
--- a/drivers/gpu/drm/radeon/radeon_vm.c
+++ b/drivers/gpu/drm/radeon/radeon_vm.c
@@ -458,14 +458,16 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
458 /* make sure object fit at this offset */ 458 /* make sure object fit at this offset */
459 eoffset = soffset + size; 459 eoffset = soffset + size;
460 if (soffset >= eoffset) { 460 if (soffset >= eoffset) {
461 return -EINVAL; 461 r = -EINVAL;
462 goto error_unreserve;
462 } 463 }
463 464
464 last_pfn = eoffset / RADEON_GPU_PAGE_SIZE; 465 last_pfn = eoffset / RADEON_GPU_PAGE_SIZE;
465 if (last_pfn > rdev->vm_manager.max_pfn) { 466 if (last_pfn > rdev->vm_manager.max_pfn) {
466 dev_err(rdev->dev, "va above limit (0x%08X > 0x%08X)\n", 467 dev_err(rdev->dev, "va above limit (0x%08X > 0x%08X)\n",
467 last_pfn, rdev->vm_manager.max_pfn); 468 last_pfn, rdev->vm_manager.max_pfn);
468 return -EINVAL; 469 r = -EINVAL;
470 goto error_unreserve;
469 } 471 }
470 472
471 } else { 473 } else {
@@ -486,7 +488,8 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
486 "(bo %p 0x%010lx 0x%010lx)\n", bo_va->bo, 488 "(bo %p 0x%010lx 0x%010lx)\n", bo_va->bo,
487 soffset, tmp->bo, tmp->it.start, tmp->it.last); 489 soffset, tmp->bo, tmp->it.start, tmp->it.last);
488 mutex_unlock(&vm->mutex); 490 mutex_unlock(&vm->mutex);
489 return -EINVAL; 491 r = -EINVAL;
492 goto error_unreserve;
490 } 493 }
491 } 494 }
492 495
@@ -497,7 +500,8 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
497 tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL); 500 tmp = kzalloc(sizeof(struct radeon_bo_va), GFP_KERNEL);
498 if (!tmp) { 501 if (!tmp) {
499 mutex_unlock(&vm->mutex); 502 mutex_unlock(&vm->mutex);
500 return -ENOMEM; 503 r = -ENOMEM;
504 goto error_unreserve;
501 } 505 }
502 tmp->it.start = bo_va->it.start; 506 tmp->it.start = bo_va->it.start;
503 tmp->it.last = bo_va->it.last; 507 tmp->it.last = bo_va->it.last;
@@ -555,7 +559,6 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
555 r = radeon_vm_clear_bo(rdev, pt); 559 r = radeon_vm_clear_bo(rdev, pt);
556 if (r) { 560 if (r) {
557 radeon_bo_unref(&pt); 561 radeon_bo_unref(&pt);
558 radeon_bo_reserve(bo_va->bo, false);
559 return r; 562 return r;
560 } 563 }
561 564
@@ -575,6 +578,10 @@ int radeon_vm_bo_set_addr(struct radeon_device *rdev,
575 578
576 mutex_unlock(&vm->mutex); 579 mutex_unlock(&vm->mutex);
577 return 0; 580 return 0;
581
582error_unreserve:
583 radeon_bo_unreserve(bo_va->bo);
584 return r;
578} 585}
579 586
580/** 587/**
diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c
index 630af73e98c4..35c8d0ceabee 100644
--- a/drivers/input/mouse/synaptics.c
+++ b/drivers/input/mouse/synaptics.c
@@ -151,6 +151,11 @@ static const struct min_max_quirk min_max_pnpid_table[] = {
151 1024, 5112, 2024, 4832 151 1024, 5112, 2024, 4832
152 }, 152 },
153 { 153 {
154 (const char * const []){"LEN2000", NULL},
155 {ANY_BOARD_ID, ANY_BOARD_ID},
156 1024, 5113, 2021, 4832
157 },
158 {
154 (const char * const []){"LEN2001", NULL}, 159 (const char * const []){"LEN2001", NULL},
155 {ANY_BOARD_ID, ANY_BOARD_ID}, 160 {ANY_BOARD_ID, ANY_BOARD_ID},
156 1024, 5022, 2508, 4832 161 1024, 5022, 2508, 4832
@@ -191,7 +196,7 @@ static const char * const topbuttonpad_pnp_ids[] = {
191 "LEN0045", 196 "LEN0045",
192 "LEN0047", 197 "LEN0047",
193 "LEN0049", 198 "LEN0049",
194 "LEN2000", 199 "LEN2000", /* S540 */
195 "LEN2001", /* Edge E431 */ 200 "LEN2001", /* Edge E431 */
196 "LEN2002", /* Edge E531 */ 201 "LEN2002", /* Edge E531 */
197 "LEN2003", 202 "LEN2003",
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 68d43beccb7e..5ecfaf29933a 100644
--- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c
@@ -422,6 +422,14 @@ static int dmar_map_gfx = 1;
422static int dmar_forcedac; 422static int dmar_forcedac;
423static int intel_iommu_strict; 423static int intel_iommu_strict;
424static int intel_iommu_superpage = 1; 424static int intel_iommu_superpage = 1;
425static int intel_iommu_ecs = 1;
426
427/* We only actually use ECS when PASID support (on the new bit 40)
428 * is also advertised. Some early implementations — the ones with
429 * PASID support on bit 28 — have issues even when we *only* use
430 * extended root/context tables. */
431#define ecs_enabled(iommu) (intel_iommu_ecs && ecap_ecs(iommu->ecap) && \
432 ecap_pasid(iommu->ecap))
425 433
426int intel_iommu_gfx_mapped; 434int intel_iommu_gfx_mapped;
427EXPORT_SYMBOL_GPL(intel_iommu_gfx_mapped); 435EXPORT_SYMBOL_GPL(intel_iommu_gfx_mapped);
@@ -465,6 +473,10 @@ static int __init intel_iommu_setup(char *str)
465 printk(KERN_INFO 473 printk(KERN_INFO
466 "Intel-IOMMU: disable supported super page\n"); 474 "Intel-IOMMU: disable supported super page\n");
467 intel_iommu_superpage = 0; 475 intel_iommu_superpage = 0;
476 } else if (!strncmp(str, "ecs_off", 7)) {
477 printk(KERN_INFO
478 "Intel-IOMMU: disable extended context table support\n");
479 intel_iommu_ecs = 0;
468 } 480 }
469 481
470 str += strcspn(str, ","); 482 str += strcspn(str, ",");
@@ -669,7 +681,7 @@ static inline struct context_entry *iommu_context_addr(struct intel_iommu *iommu
669 struct context_entry *context; 681 struct context_entry *context;
670 u64 *entry; 682 u64 *entry;
671 683
672 if (ecap_ecs(iommu->ecap)) { 684 if (ecs_enabled(iommu)) {
673 if (devfn >= 0x80) { 685 if (devfn >= 0x80) {
674 devfn -= 0x80; 686 devfn -= 0x80;
675 entry = &root->hi; 687 entry = &root->hi;
@@ -696,6 +708,11 @@ static inline struct context_entry *iommu_context_addr(struct intel_iommu *iommu
696 return &context[devfn]; 708 return &context[devfn];
697} 709}
698 710
711static int iommu_dummy(struct device *dev)
712{
713 return dev->archdata.iommu == DUMMY_DEVICE_DOMAIN_INFO;
714}
715
699static struct intel_iommu *device_to_iommu(struct device *dev, u8 *bus, u8 *devfn) 716static struct intel_iommu *device_to_iommu(struct device *dev, u8 *bus, u8 *devfn)
700{ 717{
701 struct dmar_drhd_unit *drhd = NULL; 718 struct dmar_drhd_unit *drhd = NULL;
@@ -705,6 +722,9 @@ static struct intel_iommu *device_to_iommu(struct device *dev, u8 *bus, u8 *devf
705 u16 segment = 0; 722 u16 segment = 0;
706 int i; 723 int i;
707 724
725 if (iommu_dummy(dev))
726 return NULL;
727
708 if (dev_is_pci(dev)) { 728 if (dev_is_pci(dev)) {
709 pdev = to_pci_dev(dev); 729 pdev = to_pci_dev(dev);
710 segment = pci_domain_nr(pdev->bus); 730 segment = pci_domain_nr(pdev->bus);
@@ -798,7 +818,7 @@ static void free_context_table(struct intel_iommu *iommu)
798 if (context) 818 if (context)
799 free_pgtable_page(context); 819 free_pgtable_page(context);
800 820
801 if (!ecap_ecs(iommu->ecap)) 821 if (!ecs_enabled(iommu))
802 continue; 822 continue;
803 823
804 context = iommu_context_addr(iommu, i, 0x80, 0); 824 context = iommu_context_addr(iommu, i, 0x80, 0);
@@ -1133,7 +1153,7 @@ static void iommu_set_root_entry(struct intel_iommu *iommu)
1133 unsigned long flag; 1153 unsigned long flag;
1134 1154
1135 addr = virt_to_phys(iommu->root_entry); 1155 addr = virt_to_phys(iommu->root_entry);
1136 if (ecap_ecs(iommu->ecap)) 1156 if (ecs_enabled(iommu))
1137 addr |= DMA_RTADDR_RTT; 1157 addr |= DMA_RTADDR_RTT;
1138 1158
1139 raw_spin_lock_irqsave(&iommu->register_lock, flag); 1159 raw_spin_lock_irqsave(&iommu->register_lock, flag);
@@ -2969,11 +2989,6 @@ static inline struct dmar_domain *get_valid_domain_for_dev(struct device *dev)
2969 return __get_valid_domain_for_dev(dev); 2989 return __get_valid_domain_for_dev(dev);
2970} 2990}
2971 2991
2972static int iommu_dummy(struct device *dev)
2973{
2974 return dev->archdata.iommu == DUMMY_DEVICE_DOMAIN_INFO;
2975}
2976
2977/* Check if the dev needs to go through non-identity map and unmap process.*/ 2992/* Check if the dev needs to go through non-identity map and unmap process.*/
2978static int iommu_no_mapping(struct device *dev) 2993static int iommu_no_mapping(struct device *dev)
2979{ 2994{
diff --git a/drivers/irqchip/irq-sunxi-nmi.c b/drivers/irqchip/irq-sunxi-nmi.c
index 4a9ce5b50c5b..6b2b582433bd 100644
--- a/drivers/irqchip/irq-sunxi-nmi.c
+++ b/drivers/irqchip/irq-sunxi-nmi.c
@@ -104,7 +104,7 @@ static int sunxi_sc_nmi_set_type(struct irq_data *data, unsigned int flow_type)
104 irqd_set_trigger_type(data, flow_type); 104 irqd_set_trigger_type(data, flow_type);
105 irq_setup_alt_chip(data, flow_type); 105 irq_setup_alt_chip(data, flow_type);
106 106
107 for (i = 0; i <= gc->num_ct; i++, ct++) 107 for (i = 0; i < gc->num_ct; i++, ct++)
108 if (ct->type & flow_type) 108 if (ct->type & flow_type)
109 ctrl_off = ct->regs.type; 109 ctrl_off = ct->regs.type;
110 110
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 27506302eb7a..4dbed4a67aaf 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -3834,7 +3834,7 @@ array_state_store(struct mddev *mddev, const char *buf, size_t len)
3834 err = -EBUSY; 3834 err = -EBUSY;
3835 } 3835 }
3836 spin_unlock(&mddev->lock); 3836 spin_unlock(&mddev->lock);
3837 return err; 3837 return err ?: len;
3838 } 3838 }
3839 err = mddev_lock(mddev); 3839 err = mddev_lock(mddev);
3840 if (err) 3840 if (err)
@@ -4217,13 +4217,14 @@ action_store(struct mddev *mddev, const char *page, size_t len)
4217 set_bit(MD_RECOVERY_FROZEN, &mddev->recovery); 4217 set_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
4218 else 4218 else
4219 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); 4219 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
4220 flush_workqueue(md_misc_wq); 4220 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) &&
4221 if (mddev->sync_thread) { 4221 mddev_lock(mddev) == 0) {
4222 set_bit(MD_RECOVERY_INTR, &mddev->recovery); 4222 flush_workqueue(md_misc_wq);
4223 if (mddev_lock(mddev) == 0) { 4223 if (mddev->sync_thread) {
4224 set_bit(MD_RECOVERY_INTR, &mddev->recovery);
4224 md_reap_sync_thread(mddev); 4225 md_reap_sync_thread(mddev);
4225 mddev_unlock(mddev);
4226 } 4226 }
4227 mddev_unlock(mddev);
4227 } 4228 }
4228 } else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || 4229 } else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) ||
4229 test_bit(MD_RECOVERY_NEEDED, &mddev->recovery)) 4230 test_bit(MD_RECOVERY_NEEDED, &mddev->recovery))
@@ -8261,6 +8262,7 @@ void md_reap_sync_thread(struct mddev *mddev)
8261 if (mddev_is_clustered(mddev)) 8262 if (mddev_is_clustered(mddev))
8262 md_cluster_ops->metadata_update_finish(mddev); 8263 md_cluster_ops->metadata_update_finish(mddev);
8263 clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery); 8264 clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery);
8265 clear_bit(MD_RECOVERY_DONE, &mddev->recovery);
8264 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery); 8266 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery);
8265 clear_bit(MD_RECOVERY_RESHAPE, &mddev->recovery); 8267 clear_bit(MD_RECOVERY_RESHAPE, &mddev->recovery);
8266 clear_bit(MD_RECOVERY_REQUESTED, &mddev->recovery); 8268 clear_bit(MD_RECOVERY_REQUESTED, &mddev->recovery);
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index e793ab6b3570..f55c3f35b746 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -4156,6 +4156,7 @@ static int raid10_start_reshape(struct mddev *mddev)
4156 4156
4157 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery); 4157 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery);
4158 clear_bit(MD_RECOVERY_CHECK, &mddev->recovery); 4158 clear_bit(MD_RECOVERY_CHECK, &mddev->recovery);
4159 clear_bit(MD_RECOVERY_DONE, &mddev->recovery);
4159 set_bit(MD_RECOVERY_RESHAPE, &mddev->recovery); 4160 set_bit(MD_RECOVERY_RESHAPE, &mddev->recovery);
4160 set_bit(MD_RECOVERY_RUNNING, &mddev->recovery); 4161 set_bit(MD_RECOVERY_RUNNING, &mddev->recovery);
4161 4162
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 553d54b87052..b6793d2e051f 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -7354,6 +7354,7 @@ static int raid5_start_reshape(struct mddev *mddev)
7354 7354
7355 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery); 7355 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery);
7356 clear_bit(MD_RECOVERY_CHECK, &mddev->recovery); 7356 clear_bit(MD_RECOVERY_CHECK, &mddev->recovery);
7357 clear_bit(MD_RECOVERY_DONE, &mddev->recovery);
7357 set_bit(MD_RECOVERY_RESHAPE, &mddev->recovery); 7358 set_bit(MD_RECOVERY_RESHAPE, &mddev->recovery);
7358 set_bit(MD_RECOVERY_RUNNING, &mddev->recovery); 7359 set_bit(MD_RECOVERY_RUNNING, &mddev->recovery);
7359 mddev->sync_thread = md_register_thread(md_do_sync, mddev, 7360 mddev->sync_thread = md_register_thread(md_do_sync, mddev,
diff --git a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
index db84ddcfec84..9fd6c69a8bac 100644
--- a/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
+++ b/drivers/net/ethernet/amd/xgbe/xgbe-drv.c
@@ -423,7 +423,7 @@ static void xgbe_tx_timer(unsigned long data)
423 if (napi_schedule_prep(napi)) { 423 if (napi_schedule_prep(napi)) {
424 /* Disable Tx and Rx interrupts */ 424 /* Disable Tx and Rx interrupts */
425 if (pdata->per_channel_irq) 425 if (pdata->per_channel_irq)
426 disable_irq(channel->dma_irq); 426 disable_irq_nosync(channel->dma_irq);
427 else 427 else
428 xgbe_disable_rx_tx_ints(pdata); 428 xgbe_disable_rx_tx_ints(pdata);
429 429
diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
index 77363d680532..a3b1c07ae0af 100644
--- a/drivers/net/ethernet/broadcom/b44.c
+++ b/drivers/net/ethernet/broadcom/b44.c
@@ -2464,6 +2464,7 @@ err_out_powerdown:
2464 ssb_bus_may_powerdown(sdev->bus); 2464 ssb_bus_may_powerdown(sdev->bus);
2465 2465
2466err_out_free_dev: 2466err_out_free_dev:
2467 netif_napi_del(&bp->napi);
2467 free_netdev(dev); 2468 free_netdev(dev);
2468 2469
2469out: 2470out:
@@ -2480,6 +2481,7 @@ static void b44_remove_one(struct ssb_device *sdev)
2480 b44_unregister_phy_one(bp); 2481 b44_unregister_phy_one(bp);
2481 ssb_device_disable(sdev, 0); 2482 ssb_device_disable(sdev, 0);
2482 ssb_bus_may_powerdown(sdev->bus); 2483 ssb_bus_may_powerdown(sdev->bus);
2484 netif_napi_del(&bp->napi);
2483 free_netdev(dev); 2485 free_netdev(dev);
2484 ssb_pcihost_set_power_state(sdev, PCI_D3hot); 2486 ssb_pcihost_set_power_state(sdev, PCI_D3hot);
2485 ssb_set_drvdata(sdev, NULL); 2487 ssb_set_drvdata(sdev, NULL);
diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c
index e7651b3c6c57..420949cc55aa 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
@@ -299,9 +299,6 @@ int bcmgenet_mii_config(struct net_device *dev, bool init)
299 phy_name = "external RGMII (no delay)"; 299 phy_name = "external RGMII (no delay)";
300 else 300 else
301 phy_name = "external RGMII (TX delay)"; 301 phy_name = "external RGMII (TX delay)";
302 reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL);
303 reg |= RGMII_MODE_EN | id_mode_dis;
304 bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL);
305 bcmgenet_sys_writel(priv, 302 bcmgenet_sys_writel(priv,
306 PORT_MODE_EXT_GPHY, SYS_PORT_CTRL); 303 PORT_MODE_EXT_GPHY, SYS_PORT_CTRL);
307 break; 304 break;
@@ -310,6 +307,15 @@ int bcmgenet_mii_config(struct net_device *dev, bool init)
310 return -EINVAL; 307 return -EINVAL;
311 } 308 }
312 309
310 /* This is an external PHY (xMII), so we need to enable the RGMII
311 * block for the interface to work
312 */
313 if (priv->ext_phy) {
314 reg = bcmgenet_ext_readl(priv, EXT_RGMII_OOB_CTRL);
315 reg |= RGMII_MODE_EN | id_mode_dis;
316 bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL);
317 }
318
313 if (init) 319 if (init)
314 dev_info(kdev, "configuring instance for %s\n", phy_name); 320 dev_info(kdev, "configuring instance for %s\n", phy_name);
315 321
diff --git a/drivers/net/ethernet/cisco/enic/enic_ethtool.c b/drivers/net/ethernet/cisco/enic/enic_ethtool.c
index 28d9ca675a27..68d47b196dae 100644
--- a/drivers/net/ethernet/cisco/enic/enic_ethtool.c
+++ b/drivers/net/ethernet/cisco/enic/enic_ethtool.c
@@ -131,8 +131,15 @@ static void enic_get_drvinfo(struct net_device *netdev,
131{ 131{
132 struct enic *enic = netdev_priv(netdev); 132 struct enic *enic = netdev_priv(netdev);
133 struct vnic_devcmd_fw_info *fw_info; 133 struct vnic_devcmd_fw_info *fw_info;
134 int err;
134 135
135 enic_dev_fw_info(enic, &fw_info); 136 err = enic_dev_fw_info(enic, &fw_info);
137 /* return only when pci_zalloc_consistent fails in vnic_dev_fw_info
138 * For other failures, like devcmd failure, we return previously
139 * recorded info.
140 */
141 if (err == -ENOMEM)
142 return;
136 143
137 strlcpy(drvinfo->driver, DRV_NAME, sizeof(drvinfo->driver)); 144 strlcpy(drvinfo->driver, DRV_NAME, sizeof(drvinfo->driver));
138 strlcpy(drvinfo->version, DRV_VERSION, sizeof(drvinfo->version)); 145 strlcpy(drvinfo->version, DRV_VERSION, sizeof(drvinfo->version));
@@ -181,8 +188,15 @@ static void enic_get_ethtool_stats(struct net_device *netdev,
181 struct enic *enic = netdev_priv(netdev); 188 struct enic *enic = netdev_priv(netdev);
182 struct vnic_stats *vstats; 189 struct vnic_stats *vstats;
183 unsigned int i; 190 unsigned int i;
184 191 int err;
185 enic_dev_stats_dump(enic, &vstats); 192
193 err = enic_dev_stats_dump(enic, &vstats);
194 /* return only when pci_zalloc_consistent fails in vnic_dev_stats_dump
195 * For other failures, like devcmd failure, we return previously
196 * recorded stats.
197 */
198 if (err == -ENOMEM)
199 return;
186 200
187 for (i = 0; i < enic_n_tx_stats; i++) 201 for (i = 0; i < enic_n_tx_stats; i++)
188 *(data++) = ((u64 *)&vstats->tx)[enic_tx_stats[i].index]; 202 *(data++) = ((u64 *)&vstats->tx)[enic_tx_stats[i].index];
diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c
index 204bd182473b..eadae1b412c6 100644
--- a/drivers/net/ethernet/cisco/enic/enic_main.c
+++ b/drivers/net/ethernet/cisco/enic/enic_main.c
@@ -615,8 +615,15 @@ static struct rtnl_link_stats64 *enic_get_stats(struct net_device *netdev,
615{ 615{
616 struct enic *enic = netdev_priv(netdev); 616 struct enic *enic = netdev_priv(netdev);
617 struct vnic_stats *stats; 617 struct vnic_stats *stats;
618 int err;
618 619
619 enic_dev_stats_dump(enic, &stats); 620 err = enic_dev_stats_dump(enic, &stats);
621 /* return only when pci_zalloc_consistent fails in vnic_dev_stats_dump
622 * For other failures, like devcmd failure, we return previously
623 * recorded stats.
624 */
625 if (err == -ENOMEM)
626 return net_stats;
620 627
621 net_stats->tx_packets = stats->tx.tx_frames_ok; 628 net_stats->tx_packets = stats->tx.tx_frames_ok;
622 net_stats->tx_bytes = stats->tx.tx_bytes_ok; 629 net_stats->tx_bytes = stats->tx.tx_bytes_ok;
@@ -1407,6 +1414,7 @@ static int enic_poll_msix_rq(struct napi_struct *napi, int budget)
1407 */ 1414 */
1408 enic_calc_int_moderation(enic, &enic->rq[rq]); 1415 enic_calc_int_moderation(enic, &enic->rq[rq]);
1409 1416
1417 enic_poll_unlock_napi(&enic->rq[rq]);
1410 if (work_done < work_to_do) { 1418 if (work_done < work_to_do) {
1411 1419
1412 /* Some work done, but not enough to stay in polling, 1420 /* Some work done, but not enough to stay in polling,
@@ -1418,7 +1426,6 @@ static int enic_poll_msix_rq(struct napi_struct *napi, int budget)
1418 enic_set_int_moderation(enic, &enic->rq[rq]); 1426 enic_set_int_moderation(enic, &enic->rq[rq]);
1419 vnic_intr_unmask(&enic->intr[intr]); 1427 vnic_intr_unmask(&enic->intr[intr]);
1420 } 1428 }
1421 enic_poll_unlock_napi(&enic->rq[rq]);
1422 1429
1423 return work_done; 1430 return work_done;
1424} 1431}
diff --git a/drivers/net/ethernet/cisco/enic/vnic_rq.c b/drivers/net/ethernet/cisco/enic/vnic_rq.c
index 36a2ed606c91..c4b2183bf352 100644
--- a/drivers/net/ethernet/cisco/enic/vnic_rq.c
+++ b/drivers/net/ethernet/cisco/enic/vnic_rq.c
@@ -188,16 +188,15 @@ void vnic_rq_clean(struct vnic_rq *rq,
188 struct vnic_rq_buf *buf; 188 struct vnic_rq_buf *buf;
189 u32 fetch_index; 189 u32 fetch_index;
190 unsigned int count = rq->ring.desc_count; 190 unsigned int count = rq->ring.desc_count;
191 int i;
191 192
192 buf = rq->to_clean; 193 buf = rq->to_clean;
193 194
194 while (vnic_rq_desc_used(rq) > 0) { 195 for (i = 0; i < rq->ring.desc_count; i++) {
195
196 (*buf_clean)(rq, buf); 196 (*buf_clean)(rq, buf);
197 197 buf = buf->next;
198 buf = rq->to_clean = buf->next;
199 rq->ring.desc_avail++;
200 } 198 }
199 rq->ring.desc_avail = rq->ring.desc_count - 1;
201 200
202 /* Use current fetch_index as the ring starting point */ 201 /* Use current fetch_index as the ring starting point */
203 fetch_index = ioread32(&rq->ctrl->fetch_index); 202 fetch_index = ioread32(&rq->ctrl->fetch_index);
diff --git a/drivers/net/ethernet/emulex/benet/be_cmds.c b/drivers/net/ethernet/emulex/benet/be_cmds.c
index fb140faeafb1..c5e1d0ac75f9 100644
--- a/drivers/net/ethernet/emulex/benet/be_cmds.c
+++ b/drivers/net/ethernet/emulex/benet/be_cmds.c
@@ -1720,9 +1720,9 @@ int be_cmd_get_regs(struct be_adapter *adapter, u32 buf_len, void *buf)
1720 total_size = buf_len; 1720 total_size = buf_len;
1721 1721
1722 get_fat_cmd.size = sizeof(struct be_cmd_req_get_fat) + 60*1024; 1722 get_fat_cmd.size = sizeof(struct be_cmd_req_get_fat) + 60*1024;
1723 get_fat_cmd.va = pci_alloc_consistent(adapter->pdev, 1723 get_fat_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
1724 get_fat_cmd.size, 1724 get_fat_cmd.size,
1725 &get_fat_cmd.dma); 1725 &get_fat_cmd.dma, GFP_ATOMIC);
1726 if (!get_fat_cmd.va) { 1726 if (!get_fat_cmd.va) {
1727 dev_err(&adapter->pdev->dev, 1727 dev_err(&adapter->pdev->dev,
1728 "Memory allocation failure while reading FAT data\n"); 1728 "Memory allocation failure while reading FAT data\n");
@@ -1767,8 +1767,8 @@ int be_cmd_get_regs(struct be_adapter *adapter, u32 buf_len, void *buf)
1767 log_offset += buf_size; 1767 log_offset += buf_size;
1768 } 1768 }
1769err: 1769err:
1770 pci_free_consistent(adapter->pdev, get_fat_cmd.size, 1770 dma_free_coherent(&adapter->pdev->dev, get_fat_cmd.size,
1771 get_fat_cmd.va, get_fat_cmd.dma); 1771 get_fat_cmd.va, get_fat_cmd.dma);
1772 spin_unlock_bh(&adapter->mcc_lock); 1772 spin_unlock_bh(&adapter->mcc_lock);
1773 return status; 1773 return status;
1774} 1774}
@@ -2215,12 +2215,12 @@ int be_cmd_read_port_transceiver_data(struct be_adapter *adapter,
2215 return -EINVAL; 2215 return -EINVAL;
2216 2216
2217 cmd.size = sizeof(struct be_cmd_resp_port_type); 2217 cmd.size = sizeof(struct be_cmd_resp_port_type);
2218 cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma); 2218 cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
2219 GFP_ATOMIC);
2219 if (!cmd.va) { 2220 if (!cmd.va) {
2220 dev_err(&adapter->pdev->dev, "Memory allocation failed\n"); 2221 dev_err(&adapter->pdev->dev, "Memory allocation failed\n");
2221 return -ENOMEM; 2222 return -ENOMEM;
2222 } 2223 }
2223 memset(cmd.va, 0, cmd.size);
2224 2224
2225 spin_lock_bh(&adapter->mcc_lock); 2225 spin_lock_bh(&adapter->mcc_lock);
2226 2226
@@ -2245,7 +2245,7 @@ int be_cmd_read_port_transceiver_data(struct be_adapter *adapter,
2245 } 2245 }
2246err: 2246err:
2247 spin_unlock_bh(&adapter->mcc_lock); 2247 spin_unlock_bh(&adapter->mcc_lock);
2248 pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma); 2248 dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va, cmd.dma);
2249 return status; 2249 return status;
2250} 2250}
2251 2251
@@ -2720,7 +2720,8 @@ int be_cmd_get_phy_info(struct be_adapter *adapter)
2720 goto err; 2720 goto err;
2721 } 2721 }
2722 cmd.size = sizeof(struct be_cmd_req_get_phy_info); 2722 cmd.size = sizeof(struct be_cmd_req_get_phy_info);
2723 cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma); 2723 cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
2724 GFP_ATOMIC);
2724 if (!cmd.va) { 2725 if (!cmd.va) {
2725 dev_err(&adapter->pdev->dev, "Memory alloc failure\n"); 2726 dev_err(&adapter->pdev->dev, "Memory alloc failure\n");
2726 status = -ENOMEM; 2727 status = -ENOMEM;
@@ -2754,7 +2755,7 @@ int be_cmd_get_phy_info(struct be_adapter *adapter)
2754 BE_SUPPORTED_SPEED_1GBPS; 2755 BE_SUPPORTED_SPEED_1GBPS;
2755 } 2756 }
2756 } 2757 }
2757 pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma); 2758 dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va, cmd.dma);
2758err: 2759err:
2759 spin_unlock_bh(&adapter->mcc_lock); 2760 spin_unlock_bh(&adapter->mcc_lock);
2760 return status; 2761 return status;
@@ -2805,8 +2806,9 @@ int be_cmd_get_cntl_attributes(struct be_adapter *adapter)
2805 2806
2806 memset(&attribs_cmd, 0, sizeof(struct be_dma_mem)); 2807 memset(&attribs_cmd, 0, sizeof(struct be_dma_mem));
2807 attribs_cmd.size = sizeof(struct be_cmd_resp_cntl_attribs); 2808 attribs_cmd.size = sizeof(struct be_cmd_resp_cntl_attribs);
2808 attribs_cmd.va = pci_alloc_consistent(adapter->pdev, attribs_cmd.size, 2809 attribs_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
2809 &attribs_cmd.dma); 2810 attribs_cmd.size,
2811 &attribs_cmd.dma, GFP_ATOMIC);
2810 if (!attribs_cmd.va) { 2812 if (!attribs_cmd.va) {
2811 dev_err(&adapter->pdev->dev, "Memory allocation failure\n"); 2813 dev_err(&adapter->pdev->dev, "Memory allocation failure\n");
2812 status = -ENOMEM; 2814 status = -ENOMEM;
@@ -2833,8 +2835,8 @@ int be_cmd_get_cntl_attributes(struct be_adapter *adapter)
2833err: 2835err:
2834 mutex_unlock(&adapter->mbox_lock); 2836 mutex_unlock(&adapter->mbox_lock);
2835 if (attribs_cmd.va) 2837 if (attribs_cmd.va)
2836 pci_free_consistent(adapter->pdev, attribs_cmd.size, 2838 dma_free_coherent(&adapter->pdev->dev, attribs_cmd.size,
2837 attribs_cmd.va, attribs_cmd.dma); 2839 attribs_cmd.va, attribs_cmd.dma);
2838 return status; 2840 return status;
2839} 2841}
2840 2842
@@ -2972,9 +2974,10 @@ int be_cmd_get_mac_from_list(struct be_adapter *adapter, u8 *mac,
2972 2974
2973 memset(&get_mac_list_cmd, 0, sizeof(struct be_dma_mem)); 2975 memset(&get_mac_list_cmd, 0, sizeof(struct be_dma_mem));
2974 get_mac_list_cmd.size = sizeof(struct be_cmd_resp_get_mac_list); 2976 get_mac_list_cmd.size = sizeof(struct be_cmd_resp_get_mac_list);
2975 get_mac_list_cmd.va = pci_alloc_consistent(adapter->pdev, 2977 get_mac_list_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
2976 get_mac_list_cmd.size, 2978 get_mac_list_cmd.size,
2977 &get_mac_list_cmd.dma); 2979 &get_mac_list_cmd.dma,
2980 GFP_ATOMIC);
2978 2981
2979 if (!get_mac_list_cmd.va) { 2982 if (!get_mac_list_cmd.va) {
2980 dev_err(&adapter->pdev->dev, 2983 dev_err(&adapter->pdev->dev,
@@ -3047,8 +3050,8 @@ int be_cmd_get_mac_from_list(struct be_adapter *adapter, u8 *mac,
3047 3050
3048out: 3051out:
3049 spin_unlock_bh(&adapter->mcc_lock); 3052 spin_unlock_bh(&adapter->mcc_lock);
3050 pci_free_consistent(adapter->pdev, get_mac_list_cmd.size, 3053 dma_free_coherent(&adapter->pdev->dev, get_mac_list_cmd.size,
3051 get_mac_list_cmd.va, get_mac_list_cmd.dma); 3054 get_mac_list_cmd.va, get_mac_list_cmd.dma);
3052 return status; 3055 return status;
3053} 3056}
3054 3057
@@ -3101,8 +3104,8 @@ int be_cmd_set_mac_list(struct be_adapter *adapter, u8 *mac_array,
3101 3104
3102 memset(&cmd, 0, sizeof(struct be_dma_mem)); 3105 memset(&cmd, 0, sizeof(struct be_dma_mem));
3103 cmd.size = sizeof(struct be_cmd_req_set_mac_list); 3106 cmd.size = sizeof(struct be_cmd_req_set_mac_list);
3104 cmd.va = dma_alloc_coherent(&adapter->pdev->dev, cmd.size, 3107 cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
3105 &cmd.dma, GFP_KERNEL); 3108 GFP_KERNEL);
3106 if (!cmd.va) 3109 if (!cmd.va)
3107 return -ENOMEM; 3110 return -ENOMEM;
3108 3111
@@ -3291,7 +3294,8 @@ int be_cmd_get_acpi_wol_cap(struct be_adapter *adapter)
3291 3294
3292 memset(&cmd, 0, sizeof(struct be_dma_mem)); 3295 memset(&cmd, 0, sizeof(struct be_dma_mem));
3293 cmd.size = sizeof(struct be_cmd_resp_acpi_wol_magic_config_v1); 3296 cmd.size = sizeof(struct be_cmd_resp_acpi_wol_magic_config_v1);
3294 cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma); 3297 cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
3298 GFP_ATOMIC);
3295 if (!cmd.va) { 3299 if (!cmd.va) {
3296 dev_err(&adapter->pdev->dev, "Memory allocation failure\n"); 3300 dev_err(&adapter->pdev->dev, "Memory allocation failure\n");
3297 status = -ENOMEM; 3301 status = -ENOMEM;
@@ -3326,7 +3330,8 @@ int be_cmd_get_acpi_wol_cap(struct be_adapter *adapter)
3326err: 3330err:
3327 mutex_unlock(&adapter->mbox_lock); 3331 mutex_unlock(&adapter->mbox_lock);
3328 if (cmd.va) 3332 if (cmd.va)
3329 pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma); 3333 dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va,
3334 cmd.dma);
3330 return status; 3335 return status;
3331 3336
3332} 3337}
@@ -3340,8 +3345,9 @@ int be_cmd_set_fw_log_level(struct be_adapter *adapter, u32 level)
3340 3345
3341 memset(&extfat_cmd, 0, sizeof(struct be_dma_mem)); 3346 memset(&extfat_cmd, 0, sizeof(struct be_dma_mem));
3342 extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps); 3347 extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps);
3343 extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size, 3348 extfat_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
3344 &extfat_cmd.dma); 3349 extfat_cmd.size, &extfat_cmd.dma,
3350 GFP_ATOMIC);
3345 if (!extfat_cmd.va) 3351 if (!extfat_cmd.va)
3346 return -ENOMEM; 3352 return -ENOMEM;
3347 3353
@@ -3363,8 +3369,8 @@ int be_cmd_set_fw_log_level(struct be_adapter *adapter, u32 level)
3363 3369
3364 status = be_cmd_set_ext_fat_capabilites(adapter, &extfat_cmd, cfgs); 3370 status = be_cmd_set_ext_fat_capabilites(adapter, &extfat_cmd, cfgs);
3365err: 3371err:
3366 pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va, 3372 dma_free_coherent(&adapter->pdev->dev, extfat_cmd.size, extfat_cmd.va,
3367 extfat_cmd.dma); 3373 extfat_cmd.dma);
3368 return status; 3374 return status;
3369} 3375}
3370 3376
@@ -3377,8 +3383,9 @@ int be_cmd_get_fw_log_level(struct be_adapter *adapter)
3377 3383
3378 memset(&extfat_cmd, 0, sizeof(struct be_dma_mem)); 3384 memset(&extfat_cmd, 0, sizeof(struct be_dma_mem));
3379 extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps); 3385 extfat_cmd.size = sizeof(struct be_cmd_resp_get_ext_fat_caps);
3380 extfat_cmd.va = pci_alloc_consistent(adapter->pdev, extfat_cmd.size, 3386 extfat_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
3381 &extfat_cmd.dma); 3387 extfat_cmd.size, &extfat_cmd.dma,
3388 GFP_ATOMIC);
3382 3389
3383 if (!extfat_cmd.va) { 3390 if (!extfat_cmd.va) {
3384 dev_err(&adapter->pdev->dev, "%s: Memory allocation failure\n", 3391 dev_err(&adapter->pdev->dev, "%s: Memory allocation failure\n",
@@ -3396,8 +3403,8 @@ int be_cmd_get_fw_log_level(struct be_adapter *adapter)
3396 level = cfgs->module[0].trace_lvl[j].dbg_lvl; 3403 level = cfgs->module[0].trace_lvl[j].dbg_lvl;
3397 } 3404 }
3398 } 3405 }
3399 pci_free_consistent(adapter->pdev, extfat_cmd.size, extfat_cmd.va, 3406 dma_free_coherent(&adapter->pdev->dev, extfat_cmd.size, extfat_cmd.va,
3400 extfat_cmd.dma); 3407 extfat_cmd.dma);
3401err: 3408err:
3402 return level; 3409 return level;
3403} 3410}
@@ -3595,7 +3602,8 @@ int be_cmd_get_func_config(struct be_adapter *adapter, struct be_resources *res)
3595 3602
3596 memset(&cmd, 0, sizeof(struct be_dma_mem)); 3603 memset(&cmd, 0, sizeof(struct be_dma_mem));
3597 cmd.size = sizeof(struct be_cmd_resp_get_func_config); 3604 cmd.size = sizeof(struct be_cmd_resp_get_func_config);
3598 cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma); 3605 cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
3606 GFP_ATOMIC);
3599 if (!cmd.va) { 3607 if (!cmd.va) {
3600 dev_err(&adapter->pdev->dev, "Memory alloc failure\n"); 3608 dev_err(&adapter->pdev->dev, "Memory alloc failure\n");
3601 status = -ENOMEM; 3609 status = -ENOMEM;
@@ -3635,7 +3643,8 @@ int be_cmd_get_func_config(struct be_adapter *adapter, struct be_resources *res)
3635err: 3643err:
3636 mutex_unlock(&adapter->mbox_lock); 3644 mutex_unlock(&adapter->mbox_lock);
3637 if (cmd.va) 3645 if (cmd.va)
3638 pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma); 3646 dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va,
3647 cmd.dma);
3639 return status; 3648 return status;
3640} 3649}
3641 3650
@@ -3656,7 +3665,8 @@ int be_cmd_get_profile_config(struct be_adapter *adapter,
3656 3665
3657 memset(&cmd, 0, sizeof(struct be_dma_mem)); 3666 memset(&cmd, 0, sizeof(struct be_dma_mem));
3658 cmd.size = sizeof(struct be_cmd_resp_get_profile_config); 3667 cmd.size = sizeof(struct be_cmd_resp_get_profile_config);
3659 cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma); 3668 cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
3669 GFP_ATOMIC);
3660 if (!cmd.va) 3670 if (!cmd.va)
3661 return -ENOMEM; 3671 return -ENOMEM;
3662 3672
@@ -3702,7 +3712,8 @@ int be_cmd_get_profile_config(struct be_adapter *adapter,
3702 res->vf_if_cap_flags = vf_res->cap_flags; 3712 res->vf_if_cap_flags = vf_res->cap_flags;
3703err: 3713err:
3704 if (cmd.va) 3714 if (cmd.va)
3705 pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma); 3715 dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va,
3716 cmd.dma);
3706 return status; 3717 return status;
3707} 3718}
3708 3719
@@ -3717,7 +3728,8 @@ static int be_cmd_set_profile_config(struct be_adapter *adapter, void *desc,
3717 3728
3718 memset(&cmd, 0, sizeof(struct be_dma_mem)); 3729 memset(&cmd, 0, sizeof(struct be_dma_mem));
3719 cmd.size = sizeof(struct be_cmd_req_set_profile_config); 3730 cmd.size = sizeof(struct be_cmd_req_set_profile_config);
3720 cmd.va = pci_alloc_consistent(adapter->pdev, cmd.size, &cmd.dma); 3731 cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, cmd.size, &cmd.dma,
3732 GFP_ATOMIC);
3721 if (!cmd.va) 3733 if (!cmd.va)
3722 return -ENOMEM; 3734 return -ENOMEM;
3723 3735
@@ -3733,7 +3745,8 @@ static int be_cmd_set_profile_config(struct be_adapter *adapter, void *desc,
3733 status = be_cmd_notify_wait(adapter, &wrb); 3745 status = be_cmd_notify_wait(adapter, &wrb);
3734 3746
3735 if (cmd.va) 3747 if (cmd.va)
3736 pci_free_consistent(adapter->pdev, cmd.size, cmd.va, cmd.dma); 3748 dma_free_coherent(&adapter->pdev->dev, cmd.size, cmd.va,
3749 cmd.dma);
3737 return status; 3750 return status;
3738} 3751}
3739 3752
diff --git a/drivers/net/ethernet/emulex/benet/be_ethtool.c b/drivers/net/ethernet/emulex/benet/be_ethtool.c
index b765c24625bf..2835dee5dc39 100644
--- a/drivers/net/ethernet/emulex/benet/be_ethtool.c
+++ b/drivers/net/ethernet/emulex/benet/be_ethtool.c
@@ -264,8 +264,8 @@ static int lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name,
264 int status = 0; 264 int status = 0;
265 265
266 read_cmd.size = LANCER_READ_FILE_CHUNK; 266 read_cmd.size = LANCER_READ_FILE_CHUNK;
267 read_cmd.va = pci_alloc_consistent(adapter->pdev, read_cmd.size, 267 read_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev, read_cmd.size,
268 &read_cmd.dma); 268 &read_cmd.dma, GFP_ATOMIC);
269 269
270 if (!read_cmd.va) { 270 if (!read_cmd.va) {
271 dev_err(&adapter->pdev->dev, 271 dev_err(&adapter->pdev->dev,
@@ -289,8 +289,8 @@ static int lancer_cmd_read_file(struct be_adapter *adapter, u8 *file_name,
289 break; 289 break;
290 } 290 }
291 } 291 }
292 pci_free_consistent(adapter->pdev, read_cmd.size, read_cmd.va, 292 dma_free_coherent(&adapter->pdev->dev, read_cmd.size, read_cmd.va,
293 read_cmd.dma); 293 read_cmd.dma);
294 294
295 return status; 295 return status;
296} 296}
@@ -818,8 +818,9 @@ static int be_test_ddr_dma(struct be_adapter *adapter)
818 }; 818 };
819 819
820 ddrdma_cmd.size = sizeof(struct be_cmd_req_ddrdma_test); 820 ddrdma_cmd.size = sizeof(struct be_cmd_req_ddrdma_test);
821 ddrdma_cmd.va = dma_alloc_coherent(&adapter->pdev->dev, ddrdma_cmd.size, 821 ddrdma_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
822 &ddrdma_cmd.dma, GFP_KERNEL); 822 ddrdma_cmd.size, &ddrdma_cmd.dma,
823 GFP_KERNEL);
823 if (!ddrdma_cmd.va) 824 if (!ddrdma_cmd.va)
824 return -ENOMEM; 825 return -ENOMEM;
825 826
@@ -941,8 +942,9 @@ static int be_read_eeprom(struct net_device *netdev,
941 942
942 memset(&eeprom_cmd, 0, sizeof(struct be_dma_mem)); 943 memset(&eeprom_cmd, 0, sizeof(struct be_dma_mem));
943 eeprom_cmd.size = sizeof(struct be_cmd_req_seeprom_read); 944 eeprom_cmd.size = sizeof(struct be_cmd_req_seeprom_read);
944 eeprom_cmd.va = dma_alloc_coherent(&adapter->pdev->dev, eeprom_cmd.size, 945 eeprom_cmd.va = dma_zalloc_coherent(&adapter->pdev->dev,
945 &eeprom_cmd.dma, GFP_KERNEL); 946 eeprom_cmd.size, &eeprom_cmd.dma,
947 GFP_KERNEL);
946 948
947 if (!eeprom_cmd.va) 949 if (!eeprom_cmd.va)
948 return -ENOMEM; 950 return -ENOMEM;
diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c
index 6f9ffb9026cd..e43cc8a73ea7 100644
--- a/drivers/net/ethernet/emulex/benet/be_main.c
+++ b/drivers/net/ethernet/emulex/benet/be_main.c
@@ -4605,8 +4605,8 @@ static int lancer_fw_download(struct be_adapter *adapter,
4605 4605
4606 flash_cmd.size = sizeof(struct lancer_cmd_req_write_object) 4606 flash_cmd.size = sizeof(struct lancer_cmd_req_write_object)
4607 + LANCER_FW_DOWNLOAD_CHUNK; 4607 + LANCER_FW_DOWNLOAD_CHUNK;
4608 flash_cmd.va = dma_alloc_coherent(dev, flash_cmd.size, 4608 flash_cmd.va = dma_zalloc_coherent(dev, flash_cmd.size,
4609 &flash_cmd.dma, GFP_KERNEL); 4609 &flash_cmd.dma, GFP_KERNEL);
4610 if (!flash_cmd.va) 4610 if (!flash_cmd.va)
4611 return -ENOMEM; 4611 return -ENOMEM;
4612 4612
@@ -4739,8 +4739,8 @@ static int be_fw_download(struct be_adapter *adapter, const struct firmware* fw)
4739 } 4739 }
4740 4740
4741 flash_cmd.size = sizeof(struct be_cmd_write_flashrom); 4741 flash_cmd.size = sizeof(struct be_cmd_write_flashrom);
4742 flash_cmd.va = dma_alloc_coherent(dev, flash_cmd.size, &flash_cmd.dma, 4742 flash_cmd.va = dma_zalloc_coherent(dev, flash_cmd.size, &flash_cmd.dma,
4743 GFP_KERNEL); 4743 GFP_KERNEL);
4744 if (!flash_cmd.va) 4744 if (!flash_cmd.va)
4745 return -ENOMEM; 4745 return -ENOMEM;
4746 4746
@@ -5291,16 +5291,15 @@ static int be_drv_init(struct be_adapter *adapter)
5291 int status = 0; 5291 int status = 0;
5292 5292
5293 mbox_mem_alloc->size = sizeof(struct be_mcc_mailbox) + 16; 5293 mbox_mem_alloc->size = sizeof(struct be_mcc_mailbox) + 16;
5294 mbox_mem_alloc->va = dma_alloc_coherent(dev, mbox_mem_alloc->size, 5294 mbox_mem_alloc->va = dma_zalloc_coherent(dev, mbox_mem_alloc->size,
5295 &mbox_mem_alloc->dma, 5295 &mbox_mem_alloc->dma,
5296 GFP_KERNEL); 5296 GFP_KERNEL);
5297 if (!mbox_mem_alloc->va) 5297 if (!mbox_mem_alloc->va)
5298 return -ENOMEM; 5298 return -ENOMEM;
5299 5299
5300 mbox_mem_align->size = sizeof(struct be_mcc_mailbox); 5300 mbox_mem_align->size = sizeof(struct be_mcc_mailbox);
5301 mbox_mem_align->va = PTR_ALIGN(mbox_mem_alloc->va, 16); 5301 mbox_mem_align->va = PTR_ALIGN(mbox_mem_alloc->va, 16);
5302 mbox_mem_align->dma = PTR_ALIGN(mbox_mem_alloc->dma, 16); 5302 mbox_mem_align->dma = PTR_ALIGN(mbox_mem_alloc->dma, 16);
5303 memset(mbox_mem_align->va, 0, sizeof(struct be_mcc_mailbox));
5304 5303
5305 rx_filter->size = sizeof(struct be_cmd_req_rx_filter); 5304 rx_filter->size = sizeof(struct be_cmd_req_rx_filter);
5306 rx_filter->va = dma_zalloc_coherent(dev, rx_filter->size, 5305 rx_filter->va = dma_zalloc_coherent(dev, rx_filter->size,
diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 33c35d3b7420..5d47307121ab 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -317,6 +317,7 @@ struct i40e_pf {
317#endif 317#endif
318#define I40E_FLAG_PORT_ID_VALID (u64)(1 << 28) 318#define I40E_FLAG_PORT_ID_VALID (u64)(1 << 28)
319#define I40E_FLAG_DCB_CAPABLE (u64)(1 << 29) 319#define I40E_FLAG_DCB_CAPABLE (u64)(1 << 29)
320#define I40E_FLAG_VEB_MODE_ENABLED BIT_ULL(40)
320 321
321 /* tracks features that get auto disabled by errors */ 322 /* tracks features that get auto disabled by errors */
322 u64 auto_disable_flags; 323 u64 auto_disable_flags;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
index 34170eabca7d..da0faf478af0 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
@@ -1021,6 +1021,15 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
1021 goto command_write_done; 1021 goto command_write_done;
1022 } 1022 }
1023 1023
1024 /* By default we are in VEPA mode, if this is the first VF/VMDq
1025 * VSI to be added switch to VEB mode.
1026 */
1027 if (!(pf->flags & I40E_FLAG_VEB_MODE_ENABLED)) {
1028 pf->flags |= I40E_FLAG_VEB_MODE_ENABLED;
1029 i40e_do_reset_safe(pf,
1030 BIT_ULL(__I40E_PF_RESET_REQUESTED));
1031 }
1032
1024 vsi = i40e_vsi_setup(pf, I40E_VSI_VMDQ2, vsi_seid, 0); 1033 vsi = i40e_vsi_setup(pf, I40E_VSI_VMDQ2, vsi_seid, 0);
1025 if (vsi) 1034 if (vsi)
1026 dev_info(&pf->pdev->dev, "added VSI %d to relay %d\n", 1035 dev_info(&pf->pdev->dev, "added VSI %d to relay %d\n",
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index a54c14491e3b..5b5bea159bd5 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -6097,6 +6097,10 @@ static int i40e_reconstitute_veb(struct i40e_veb *veb)
6097 if (ret) 6097 if (ret)
6098 goto end_reconstitute; 6098 goto end_reconstitute;
6099 6099
6100 if (pf->flags & I40E_FLAG_VEB_MODE_ENABLED)
6101 veb->bridge_mode = BRIDGE_MODE_VEB;
6102 else
6103 veb->bridge_mode = BRIDGE_MODE_VEPA;
6100 i40e_config_bridge_mode(veb); 6104 i40e_config_bridge_mode(veb);
6101 6105
6102 /* create the remaining VSIs attached to this VEB */ 6106 /* create the remaining VSIs attached to this VEB */
@@ -8031,7 +8035,12 @@ static int i40e_ndo_bridge_setlink(struct net_device *dev,
8031 } else if (mode != veb->bridge_mode) { 8035 } else if (mode != veb->bridge_mode) {
8032 /* Existing HW bridge but different mode needs reset */ 8036 /* Existing HW bridge but different mode needs reset */
8033 veb->bridge_mode = mode; 8037 veb->bridge_mode = mode;
8034 i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED)); 8038 /* TODO: If no VFs or VMDq VSIs, disallow VEB mode */
8039 if (mode == BRIDGE_MODE_VEB)
8040 pf->flags |= I40E_FLAG_VEB_MODE_ENABLED;
8041 else
8042 pf->flags &= ~I40E_FLAG_VEB_MODE_ENABLED;
8043 i40e_do_reset(pf, BIT_ULL(__I40E_PF_RESET_REQUESTED));
8035 break; 8044 break;
8036 } 8045 }
8037 } 8046 }
@@ -8343,11 +8352,12 @@ static int i40e_add_vsi(struct i40e_vsi *vsi)
8343 ctxt.uplink_seid = vsi->uplink_seid; 8352 ctxt.uplink_seid = vsi->uplink_seid;
8344 ctxt.connection_type = I40E_AQ_VSI_CONN_TYPE_NORMAL; 8353 ctxt.connection_type = I40E_AQ_VSI_CONN_TYPE_NORMAL;
8345 ctxt.flags = I40E_AQ_VSI_TYPE_PF; 8354 ctxt.flags = I40E_AQ_VSI_TYPE_PF;
8346 if (i40e_is_vsi_uplink_mode_veb(vsi)) { 8355 if ((pf->flags & I40E_FLAG_VEB_MODE_ENABLED) &&
8356 (i40e_is_vsi_uplink_mode_veb(vsi))) {
8347 ctxt.info.valid_sections |= 8357 ctxt.info.valid_sections |=
8348 cpu_to_le16(I40E_AQ_VSI_PROP_SWITCH_VALID); 8358 cpu_to_le16(I40E_AQ_VSI_PROP_SWITCH_VALID);
8349 ctxt.info.switch_id = 8359 ctxt.info.switch_id =
8350 cpu_to_le16(I40E_AQ_VSI_SW_ID_FLAG_ALLOW_LB); 8360 cpu_to_le16(I40E_AQ_VSI_SW_ID_FLAG_ALLOW_LB);
8351 } 8361 }
8352 i40e_vsi_setup_queue_map(vsi, &ctxt, enabled_tc, true); 8362 i40e_vsi_setup_queue_map(vsi, &ctxt, enabled_tc, true);
8353 break; 8363 break;
@@ -8746,6 +8756,14 @@ struct i40e_vsi *i40e_vsi_setup(struct i40e_pf *pf, u8 type,
8746 __func__); 8756 __func__);
8747 return NULL; 8757 return NULL;
8748 } 8758 }
8759 /* We come up by default in VEPA mode if SRIOV is not
8760 * already enabled, in which case we can't force VEPA
8761 * mode.
8762 */
8763 if (!(pf->flags & I40E_FLAG_VEB_MODE_ENABLED)) {
8764 veb->bridge_mode = BRIDGE_MODE_VEPA;
8765 pf->flags &= ~I40E_FLAG_VEB_MODE_ENABLED;
8766 }
8749 i40e_config_bridge_mode(veb); 8767 i40e_config_bridge_mode(veb);
8750 } 8768 }
8751 for (i = 0; i < I40E_MAX_VEB && !veb; i++) { 8769 for (i = 0; i < I40E_MAX_VEB && !veb; i++) {
@@ -9856,6 +9874,15 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
9856 goto err_switch_setup; 9874 goto err_switch_setup;
9857 } 9875 }
9858 9876
9877#ifdef CONFIG_PCI_IOV
9878 /* prep for VF support */
9879 if ((pf->flags & I40E_FLAG_SRIOV_ENABLED) &&
9880 (pf->flags & I40E_FLAG_MSIX_ENABLED) &&
9881 !test_bit(__I40E_BAD_EEPROM, &pf->state)) {
9882 if (pci_num_vf(pdev))
9883 pf->flags |= I40E_FLAG_VEB_MODE_ENABLED;
9884 }
9885#endif
9859 err = i40e_setup_pf_switch(pf, false); 9886 err = i40e_setup_pf_switch(pf, false);
9860 if (err) { 9887 if (err) {
9861 dev_info(&pdev->dev, "setup_pf_switch failed: %d\n", err); 9888 dev_info(&pdev->dev, "setup_pf_switch failed: %d\n", err);
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 4bd3a80aba82..9d95042d5a0f 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -2410,14 +2410,12 @@ static int i40e_maybe_stop_tx(struct i40e_ring *tx_ring, int size)
2410 * i40e_chk_linearize - Check if there are more than 8 fragments per packet 2410 * i40e_chk_linearize - Check if there are more than 8 fragments per packet
2411 * @skb: send buffer 2411 * @skb: send buffer
2412 * @tx_flags: collected send information 2412 * @tx_flags: collected send information
2413 * @hdr_len: size of the packet header
2414 * 2413 *
2415 * Note: Our HW can't scatter-gather more than 8 fragments to build 2414 * Note: Our HW can't scatter-gather more than 8 fragments to build
2416 * a packet on the wire and so we need to figure out the cases where we 2415 * a packet on the wire and so we need to figure out the cases where we
2417 * need to linearize the skb. 2416 * need to linearize the skb.
2418 **/ 2417 **/
2419static bool i40e_chk_linearize(struct sk_buff *skb, u32 tx_flags, 2418static bool i40e_chk_linearize(struct sk_buff *skb, u32 tx_flags)
2420 const u8 hdr_len)
2421{ 2419{
2422 struct skb_frag_struct *frag; 2420 struct skb_frag_struct *frag;
2423 bool linearize = false; 2421 bool linearize = false;
@@ -2429,7 +2427,7 @@ static bool i40e_chk_linearize(struct sk_buff *skb, u32 tx_flags,
2429 gso_segs = skb_shinfo(skb)->gso_segs; 2427 gso_segs = skb_shinfo(skb)->gso_segs;
2430 2428
2431 if (tx_flags & (I40E_TX_FLAGS_TSO | I40E_TX_FLAGS_FSO)) { 2429 if (tx_flags & (I40E_TX_FLAGS_TSO | I40E_TX_FLAGS_FSO)) {
2432 u16 j = 1; 2430 u16 j = 0;
2433 2431
2434 if (num_frags < (I40E_MAX_BUFFER_TXD)) 2432 if (num_frags < (I40E_MAX_BUFFER_TXD))
2435 goto linearize_chk_done; 2433 goto linearize_chk_done;
@@ -2440,21 +2438,18 @@ static bool i40e_chk_linearize(struct sk_buff *skb, u32 tx_flags,
2440 goto linearize_chk_done; 2438 goto linearize_chk_done;
2441 } 2439 }
2442 frag = &skb_shinfo(skb)->frags[0]; 2440 frag = &skb_shinfo(skb)->frags[0];
2443 size = hdr_len;
2444 /* we might still have more fragments per segment */ 2441 /* we might still have more fragments per segment */
2445 do { 2442 do {
2446 size += skb_frag_size(frag); 2443 size += skb_frag_size(frag);
2447 frag++; j++; 2444 frag++; j++;
2445 if ((size >= skb_shinfo(skb)->gso_size) &&
2446 (j < I40E_MAX_BUFFER_TXD)) {
2447 size = (size % skb_shinfo(skb)->gso_size);
2448 j = (size) ? 1 : 0;
2449 }
2448 if (j == I40E_MAX_BUFFER_TXD) { 2450 if (j == I40E_MAX_BUFFER_TXD) {
2449 if (size < skb_shinfo(skb)->gso_size) { 2451 linearize = true;
2450 linearize = true; 2452 break;
2451 break;
2452 }
2453 j = 1;
2454 size -= skb_shinfo(skb)->gso_size;
2455 if (size)
2456 j++;
2457 size += hdr_len;
2458 } 2453 }
2459 num_frags--; 2454 num_frags--;
2460 } while (num_frags); 2455 } while (num_frags);
@@ -2724,7 +2719,7 @@ static netdev_tx_t i40e_xmit_frame_ring(struct sk_buff *skb,
2724 if (tsyn) 2719 if (tsyn)
2725 tx_flags |= I40E_TX_FLAGS_TSYN; 2720 tx_flags |= I40E_TX_FLAGS_TSYN;
2726 2721
2727 if (i40e_chk_linearize(skb, tx_flags, hdr_len)) 2722 if (i40e_chk_linearize(skb, tx_flags))
2728 if (skb_linearize(skb)) 2723 if (skb_linearize(skb))
2729 goto out_drop; 2724 goto out_drop;
2730 2725
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index 78d1c4ff565e..4e9376da0518 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -1018,11 +1018,19 @@ int i40e_pci_sriov_configure(struct pci_dev *pdev, int num_vfs)
1018{ 1018{
1019 struct i40e_pf *pf = pci_get_drvdata(pdev); 1019 struct i40e_pf *pf = pci_get_drvdata(pdev);
1020 1020
1021 if (num_vfs) 1021 if (num_vfs) {
1022 if (!(pf->flags & I40E_FLAG_VEB_MODE_ENABLED)) {
1023 pf->flags |= I40E_FLAG_VEB_MODE_ENABLED;
1024 i40e_do_reset_safe(pf,
1025 BIT_ULL(__I40E_PF_RESET_REQUESTED));
1026 }
1022 return i40e_pci_sriov_enable(pdev, num_vfs); 1027 return i40e_pci_sriov_enable(pdev, num_vfs);
1028 }
1023 1029
1024 if (!pci_vfs_assigned(pf->pdev)) { 1030 if (!pci_vfs_assigned(pf->pdev)) {
1025 i40e_free_vfs(pf); 1031 i40e_free_vfs(pf);
1032 pf->flags &= ~I40E_FLAG_VEB_MODE_ENABLED;
1033 i40e_do_reset_safe(pf, BIT_ULL(__I40E_PF_RESET_REQUESTED));
1026 } else { 1034 } else {
1027 dev_warn(&pdev->dev, "Unable to free VFs because some are assigned to VMs.\n"); 1035 dev_warn(&pdev->dev, "Unable to free VFs because some are assigned to VMs.\n");
1028 return -EINVAL; 1036 return -EINVAL;
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
index b077e02a0cc7..458fbb421090 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
@@ -1619,14 +1619,12 @@ static void i40e_create_tx_ctx(struct i40e_ring *tx_ring,
1619 * i40e_chk_linearize - Check if there are more than 8 fragments per packet 1619 * i40e_chk_linearize - Check if there are more than 8 fragments per packet
1620 * @skb: send buffer 1620 * @skb: send buffer
1621 * @tx_flags: collected send information 1621 * @tx_flags: collected send information
1622 * @hdr_len: size of the packet header
1623 * 1622 *
1624 * Note: Our HW can't scatter-gather more than 8 fragments to build 1623 * Note: Our HW can't scatter-gather more than 8 fragments to build
1625 * a packet on the wire and so we need to figure out the cases where we 1624 * a packet on the wire and so we need to figure out the cases where we
1626 * need to linearize the skb. 1625 * need to linearize the skb.
1627 **/ 1626 **/
1628static bool i40e_chk_linearize(struct sk_buff *skb, u32 tx_flags, 1627static bool i40e_chk_linearize(struct sk_buff *skb, u32 tx_flags)
1629 const u8 hdr_len)
1630{ 1628{
1631 struct skb_frag_struct *frag; 1629 struct skb_frag_struct *frag;
1632 bool linearize = false; 1630 bool linearize = false;
@@ -1638,7 +1636,7 @@ static bool i40e_chk_linearize(struct sk_buff *skb, u32 tx_flags,
1638 gso_segs = skb_shinfo(skb)->gso_segs; 1636 gso_segs = skb_shinfo(skb)->gso_segs;
1639 1637
1640 if (tx_flags & (I40E_TX_FLAGS_TSO | I40E_TX_FLAGS_FSO)) { 1638 if (tx_flags & (I40E_TX_FLAGS_TSO | I40E_TX_FLAGS_FSO)) {
1641 u16 j = 1; 1639 u16 j = 0;
1642 1640
1643 if (num_frags < (I40E_MAX_BUFFER_TXD)) 1641 if (num_frags < (I40E_MAX_BUFFER_TXD))
1644 goto linearize_chk_done; 1642 goto linearize_chk_done;
@@ -1649,21 +1647,18 @@ static bool i40e_chk_linearize(struct sk_buff *skb, u32 tx_flags,
1649 goto linearize_chk_done; 1647 goto linearize_chk_done;
1650 } 1648 }
1651 frag = &skb_shinfo(skb)->frags[0]; 1649 frag = &skb_shinfo(skb)->frags[0];
1652 size = hdr_len;
1653 /* we might still have more fragments per segment */ 1650 /* we might still have more fragments per segment */
1654 do { 1651 do {
1655 size += skb_frag_size(frag); 1652 size += skb_frag_size(frag);
1656 frag++; j++; 1653 frag++; j++;
1654 if ((size >= skb_shinfo(skb)->gso_size) &&
1655 (j < I40E_MAX_BUFFER_TXD)) {
1656 size = (size % skb_shinfo(skb)->gso_size);
1657 j = (size) ? 1 : 0;
1658 }
1657 if (j == I40E_MAX_BUFFER_TXD) { 1659 if (j == I40E_MAX_BUFFER_TXD) {
1658 if (size < skb_shinfo(skb)->gso_size) { 1660 linearize = true;
1659 linearize = true; 1661 break;
1660 break;
1661 }
1662 j = 1;
1663 size -= skb_shinfo(skb)->gso_size;
1664 if (size)
1665 j++;
1666 size += hdr_len;
1667 } 1662 }
1668 num_frags--; 1663 num_frags--;
1669 } while (num_frags); 1664 } while (num_frags);
@@ -1950,7 +1945,7 @@ static netdev_tx_t i40e_xmit_frame_ring(struct sk_buff *skb,
1950 else if (tso) 1945 else if (tso)
1951 tx_flags |= I40E_TX_FLAGS_TSO; 1946 tx_flags |= I40E_TX_FLAGS_TSO;
1952 1947
1953 if (i40e_chk_linearize(skb, tx_flags, hdr_len)) 1948 if (i40e_chk_linearize(skb, tx_flags))
1954 if (skb_linearize(skb)) 1949 if (skb_linearize(skb))
1955 goto out_drop; 1950 goto out_drop;
1956 1951
diff --git a/drivers/net/ethernet/intel/igb/igb_ptp.c b/drivers/net/ethernet/intel/igb/igb_ptp.c
index e3b9b63ad010..c3a9392cbc19 100644
--- a/drivers/net/ethernet/intel/igb/igb_ptp.c
+++ b/drivers/net/ethernet/intel/igb/igb_ptp.c
@@ -538,8 +538,8 @@ static int igb_ptp_feature_enable_i210(struct ptp_clock_info *ptp,
538 igb->perout[i].start.tv_nsec = rq->perout.start.nsec; 538 igb->perout[i].start.tv_nsec = rq->perout.start.nsec;
539 igb->perout[i].period.tv_sec = ts.tv_sec; 539 igb->perout[i].period.tv_sec = ts.tv_sec;
540 igb->perout[i].period.tv_nsec = ts.tv_nsec; 540 igb->perout[i].period.tv_nsec = ts.tv_nsec;
541 wr32(trgttiml, rq->perout.start.sec); 541 wr32(trgttimh, rq->perout.start.sec);
542 wr32(trgttimh, rq->perout.start.nsec); 542 wr32(trgttiml, rq->perout.start.nsec);
543 tsauxc |= tsauxc_mask; 543 tsauxc |= tsauxc_mask;
544 tsim |= tsim_mask; 544 tsim |= tsim_mask;
545 } else { 545 } else {
diff --git a/drivers/soc/mediatek/Kconfig b/drivers/soc/mediatek/Kconfig
index bcdb22d5e215..3c1850332a90 100644
--- a/drivers/soc/mediatek/Kconfig
+++ b/drivers/soc/mediatek/Kconfig
@@ -4,6 +4,7 @@
4config MTK_PMIC_WRAP 4config MTK_PMIC_WRAP
5 tristate "MediaTek PMIC Wrapper Support" 5 tristate "MediaTek PMIC Wrapper Support"
6 depends on ARCH_MEDIATEK 6 depends on ARCH_MEDIATEK
7 depends on RESET_CONTROLLER
7 select REGMAP 8 select REGMAP
8 help 9 help
9 Say yes here to add support for MediaTek PMIC Wrapper found 10 Say yes here to add support for MediaTek PMIC Wrapper found
diff --git a/drivers/soc/mediatek/mtk-pmic-wrap.c b/drivers/soc/mediatek/mtk-pmic-wrap.c
index db5be1eec54c..f432291feee9 100644
--- a/drivers/soc/mediatek/mtk-pmic-wrap.c
+++ b/drivers/soc/mediatek/mtk-pmic-wrap.c
@@ -443,11 +443,6 @@ static int pwrap_wait_for_state(struct pmic_wrapper *wrp,
443static int pwrap_write(struct pmic_wrapper *wrp, u32 adr, u32 wdata) 443static int pwrap_write(struct pmic_wrapper *wrp, u32 adr, u32 wdata)
444{ 444{
445 int ret; 445 int ret;
446 u32 val;
447
448 val = pwrap_readl(wrp, PWRAP_WACS2_RDATA);
449 if (PWRAP_GET_WACS_FSM(val) == PWRAP_WACS_FSM_WFVLDCLR)
450 pwrap_writel(wrp, 1, PWRAP_WACS2_VLDCLR);
451 446
452 ret = pwrap_wait_for_state(wrp, pwrap_is_fsm_idle); 447 ret = pwrap_wait_for_state(wrp, pwrap_is_fsm_idle);
453 if (ret) 448 if (ret)
@@ -462,11 +457,6 @@ static int pwrap_write(struct pmic_wrapper *wrp, u32 adr, u32 wdata)
462static int pwrap_read(struct pmic_wrapper *wrp, u32 adr, u32 *rdata) 457static int pwrap_read(struct pmic_wrapper *wrp, u32 adr, u32 *rdata)
463{ 458{
464 int ret; 459 int ret;
465 u32 val;
466
467 val = pwrap_readl(wrp, PWRAP_WACS2_RDATA);
468 if (PWRAP_GET_WACS_FSM(val) == PWRAP_WACS_FSM_WFVLDCLR)
469 pwrap_writel(wrp, 1, PWRAP_WACS2_VLDCLR);
470 460
471 ret = pwrap_wait_for_state(wrp, pwrap_is_fsm_idle); 461 ret = pwrap_wait_for_state(wrp, pwrap_is_fsm_idle);
472 if (ret) 462 if (ret)
@@ -480,6 +470,8 @@ static int pwrap_read(struct pmic_wrapper *wrp, u32 adr, u32 *rdata)
480 470
481 *rdata = PWRAP_GET_WACS_RDATA(pwrap_readl(wrp, PWRAP_WACS2_RDATA)); 471 *rdata = PWRAP_GET_WACS_RDATA(pwrap_readl(wrp, PWRAP_WACS2_RDATA));
482 472
473 pwrap_writel(wrp, 1, PWRAP_WACS2_VLDCLR);
474
483 return 0; 475 return 0;
484} 476}
485 477
@@ -563,45 +555,17 @@ static int pwrap_init_sidly(struct pmic_wrapper *wrp)
563 555
564static int pwrap_init_reg_clock(struct pmic_wrapper *wrp) 556static int pwrap_init_reg_clock(struct pmic_wrapper *wrp)
565{ 557{
566 unsigned long rate_spi; 558 if (pwrap_is_mt8135(wrp)) {
567 int ck_mhz; 559 pwrap_writel(wrp, 0x4, PWRAP_CSHEXT);
568
569 rate_spi = clk_get_rate(wrp->clk_spi);
570
571 if (rate_spi > 26000000)
572 ck_mhz = 26;
573 else if (rate_spi > 18000000)
574 ck_mhz = 18;
575 else
576 ck_mhz = 0;
577
578 switch (ck_mhz) {
579 case 18:
580 if (pwrap_is_mt8135(wrp))
581 pwrap_writel(wrp, 0xc, PWRAP_CSHEXT);
582 pwrap_writel(wrp, 0x4, PWRAP_CSHEXT_WRITE);
583 pwrap_writel(wrp, 0xc, PWRAP_CSHEXT_READ);
584 pwrap_writel(wrp, 0x0, PWRAP_CSLEXT_START);
585 pwrap_writel(wrp, 0x0, PWRAP_CSLEXT_END);
586 break;
587 case 26:
588 if (pwrap_is_mt8135(wrp))
589 pwrap_writel(wrp, 0x4, PWRAP_CSHEXT);
590 pwrap_writel(wrp, 0x0, PWRAP_CSHEXT_WRITE); 560 pwrap_writel(wrp, 0x0, PWRAP_CSHEXT_WRITE);
591 pwrap_writel(wrp, 0x4, PWRAP_CSHEXT_READ); 561 pwrap_writel(wrp, 0x4, PWRAP_CSHEXT_READ);
592 pwrap_writel(wrp, 0x0, PWRAP_CSLEXT_START); 562 pwrap_writel(wrp, 0x0, PWRAP_CSLEXT_START);
593 pwrap_writel(wrp, 0x0, PWRAP_CSLEXT_END); 563 pwrap_writel(wrp, 0x0, PWRAP_CSLEXT_END);
594 break; 564 } else {
595 case 0: 565 pwrap_writel(wrp, 0x0, PWRAP_CSHEXT_WRITE);
596 if (pwrap_is_mt8135(wrp)) 566 pwrap_writel(wrp, 0x4, PWRAP_CSHEXT_READ);
597 pwrap_writel(wrp, 0xf, PWRAP_CSHEXT); 567 pwrap_writel(wrp, 0x2, PWRAP_CSLEXT_START);
598 pwrap_writel(wrp, 0xf, PWRAP_CSHEXT_WRITE); 568 pwrap_writel(wrp, 0x2, PWRAP_CSLEXT_END);
599 pwrap_writel(wrp, 0xf, PWRAP_CSHEXT_READ);
600 pwrap_writel(wrp, 0xf, PWRAP_CSLEXT_START);
601 pwrap_writel(wrp, 0xf, PWRAP_CSLEXT_END);
602 break;
603 default:
604 return -EINVAL;
605 } 569 }
606 570
607 return 0; 571 return 0;
diff --git a/drivers/virtio/virtio_pci_common.c b/drivers/virtio/virtio_pci_common.c
index e894eb278d83..eba1b7ac7294 100644
--- a/drivers/virtio/virtio_pci_common.c
+++ b/drivers/virtio/virtio_pci_common.c
@@ -423,6 +423,7 @@ int vp_set_vq_affinity(struct virtqueue *vq, int cpu)
423 if (cpu == -1) 423 if (cpu == -1)
424 irq_set_affinity_hint(irq, NULL); 424 irq_set_affinity_hint(irq, NULL);
425 else { 425 else {
426 cpumask_clear(mask);
426 cpumask_set_cpu(cpu, mask); 427 cpumask_set_cpu(cpu, mask);
427 irq_set_affinity_hint(irq, mask); 428 irq_set_affinity_hint(irq, mask);
428 } 429 }
diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h
index 796ef9645827..a240e61a7700 100644
--- a/include/linux/intel-iommu.h
+++ b/include/linux/intel-iommu.h
@@ -115,13 +115,14 @@ static inline void dmar_writeq(void __iomem *addr, u64 val)
115 * Extended Capability Register 115 * Extended Capability Register
116 */ 116 */
117 117
118#define ecap_pasid(e) ((e >> 40) & 0x1)
118#define ecap_pss(e) ((e >> 35) & 0x1f) 119#define ecap_pss(e) ((e >> 35) & 0x1f)
119#define ecap_eafs(e) ((e >> 34) & 0x1) 120#define ecap_eafs(e) ((e >> 34) & 0x1)
120#define ecap_nwfs(e) ((e >> 33) & 0x1) 121#define ecap_nwfs(e) ((e >> 33) & 0x1)
121#define ecap_srs(e) ((e >> 31) & 0x1) 122#define ecap_srs(e) ((e >> 31) & 0x1)
122#define ecap_ers(e) ((e >> 30) & 0x1) 123#define ecap_ers(e) ((e >> 30) & 0x1)
123#define ecap_prs(e) ((e >> 29) & 0x1) 124#define ecap_prs(e) ((e >> 29) & 0x1)
124#define ecap_pasid(e) ((e >> 28) & 0x1) 125/* PASID support used to be on bit 28 */
125#define ecap_dis(e) ((e >> 27) & 0x1) 126#define ecap_dis(e) ((e >> 27) & 0x1)
126#define ecap_nest(e) ((e >> 26) & 0x1) 127#define ecap_nest(e) ((e >> 26) & 0x1)
127#define ecap_mts(e) ((e >> 25) & 0x1) 128#define ecap_mts(e) ((e >> 25) & 0x1)
diff --git a/include/sound/hda_regmap.h b/include/sound/hda_regmap.h
index 53a18b3635e2..df705908480a 100644
--- a/include/sound/hda_regmap.h
+++ b/include/sound/hda_regmap.h
@@ -9,6 +9,8 @@
9#include <sound/core.h> 9#include <sound/core.h>
10#include <sound/hdaudio.h> 10#include <sound/hdaudio.h>
11 11
12#define AC_AMP_FAKE_MUTE 0x10 /* fake mute bit set to amp verbs */
13
12int snd_hdac_regmap_init(struct hdac_device *codec); 14int snd_hdac_regmap_init(struct hdac_device *codec);
13void snd_hdac_regmap_exit(struct hdac_device *codec); 15void snd_hdac_regmap_exit(struct hdac_device *codec);
14int snd_hdac_regmap_add_vendor_verb(struct hdac_device *codec, 16int snd_hdac_regmap_add_vendor_verb(struct hdac_device *codec,
diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c
index a0831e1b99f4..aaeae885d9af 100644
--- a/kernel/locking/lockdep.c
+++ b/kernel/locking/lockdep.c
@@ -3900,7 +3900,8 @@ static void zap_class(struct lock_class *class)
3900 list_del_rcu(&class->hash_entry); 3900 list_del_rcu(&class->hash_entry);
3901 list_del_rcu(&class->lock_entry); 3901 list_del_rcu(&class->lock_entry);
3902 3902
3903 class->key = NULL; 3903 RCU_INIT_POINTER(class->key, NULL);
3904 RCU_INIT_POINTER(class->name, NULL);
3904} 3905}
3905 3906
3906static inline int within(const void *addr, void *start, unsigned long size) 3907static inline int within(const void *addr, void *start, unsigned long size)
diff --git a/kernel/locking/lockdep_proc.c b/kernel/locking/lockdep_proc.c
index ef43ac4bafb5..d83d798bef95 100644
--- a/kernel/locking/lockdep_proc.c
+++ b/kernel/locking/lockdep_proc.c
@@ -426,10 +426,12 @@ static void seq_lock_time(struct seq_file *m, struct lock_time *lt)
426 426
427static void seq_stats(struct seq_file *m, struct lock_stat_data *data) 427static void seq_stats(struct seq_file *m, struct lock_stat_data *data)
428{ 428{
429 char name[39]; 429 struct lockdep_subclass_key *ckey;
430 struct lock_class *class;
431 struct lock_class_stats *stats; 430 struct lock_class_stats *stats;
431 struct lock_class *class;
432 const char *cname;
432 int i, namelen; 433 int i, namelen;
434 char name[39];
433 435
434 class = data->class; 436 class = data->class;
435 stats = &data->stats; 437 stats = &data->stats;
@@ -440,15 +442,25 @@ static void seq_stats(struct seq_file *m, struct lock_stat_data *data)
440 if (class->subclass) 442 if (class->subclass)
441 namelen -= 2; 443 namelen -= 2;
442 444
443 if (!class->name) { 445 rcu_read_lock_sched();
446 cname = rcu_dereference_sched(class->name);
447 ckey = rcu_dereference_sched(class->key);
448
449 if (!cname && !ckey) {
450 rcu_read_unlock_sched();
451 return;
452
453 } else if (!cname) {
444 char str[KSYM_NAME_LEN]; 454 char str[KSYM_NAME_LEN];
445 const char *key_name; 455 const char *key_name;
446 456
447 key_name = __get_key_name(class->key, str); 457 key_name = __get_key_name(ckey, str);
448 snprintf(name, namelen, "%s", key_name); 458 snprintf(name, namelen, "%s", key_name);
449 } else { 459 } else {
450 snprintf(name, namelen, "%s", class->name); 460 snprintf(name, namelen, "%s", cname);
451 } 461 }
462 rcu_read_unlock_sched();
463
452 namelen = strlen(name); 464 namelen = strlen(name);
453 if (class->name_version > 1) { 465 if (class->name_version > 1) {
454 snprintf(name+namelen, 3, "#%d", class->name_version); 466 snprintf(name+namelen, 3, "#%d", class->name_version);
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index ffeaa4105e48..c2980e8733bc 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -2181,7 +2181,7 @@ void task_numa_work(struct callback_head *work)
2181 } 2181 }
2182 for (; vma; vma = vma->vm_next) { 2182 for (; vma; vma = vma->vm_next) {
2183 if (!vma_migratable(vma) || !vma_policy_mof(vma) || 2183 if (!vma_migratable(vma) || !vma_policy_mof(vma) ||
2184 is_vm_hugetlb_page(vma)) { 2184 is_vm_hugetlb_page(vma) || (vma->vm_flags & VM_MIXEDMAP)) {
2185 continue; 2185 continue;
2186 } 2186 }
2187 2187
diff --git a/kernel/trace/ring_buffer_benchmark.c b/kernel/trace/ring_buffer_benchmark.c
index 13d945c0d03f..1b28df2d9104 100644
--- a/kernel/trace/ring_buffer_benchmark.c
+++ b/kernel/trace/ring_buffer_benchmark.c
@@ -450,7 +450,7 @@ static int __init ring_buffer_benchmark_init(void)
450 450
451 if (producer_fifo >= 0) { 451 if (producer_fifo >= 0) {
452 struct sched_param param = { 452 struct sched_param param = {
453 .sched_priority = consumer_fifo 453 .sched_priority = producer_fifo
454 }; 454 };
455 sched_setscheduler(producer, SCHED_FIFO, &param); 455 sched_setscheduler(producer, SCHED_FIFO, &param);
456 } else 456 } else
diff --git a/lib/rhashtable.c b/lib/rhashtable.c
index 4396434e4715..8609378e6505 100644
--- a/lib/rhashtable.c
+++ b/lib/rhashtable.c
@@ -26,6 +26,7 @@
26#include <linux/random.h> 26#include <linux/random.h>
27#include <linux/rhashtable.h> 27#include <linux/rhashtable.h>
28#include <linux/err.h> 28#include <linux/err.h>
29#include <linux/export.h>
29 30
30#define HASH_DEFAULT_SIZE 64UL 31#define HASH_DEFAULT_SIZE 64UL
31#define HASH_MIN_SIZE 4U 32#define HASH_MIN_SIZE 4U
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 14c2f2017e37..a04225d372ba 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -2323,6 +2323,8 @@ done_restock:
2323 css_get_many(&memcg->css, batch); 2323 css_get_many(&memcg->css, batch);
2324 if (batch > nr_pages) 2324 if (batch > nr_pages)
2325 refill_stock(memcg, batch - nr_pages); 2325 refill_stock(memcg, batch - nr_pages);
2326 if (!(gfp_mask & __GFP_WAIT))
2327 goto done;
2326 /* 2328 /*
2327 * If the hierarchy is above the normal consumption range, 2329 * If the hierarchy is above the normal consumption range,
2328 * make the charging task trim their excess contribution. 2330 * make the charging task trim their excess contribution.
@@ -5833,9 +5835,7 @@ void mem_cgroup_swapout(struct page *page, swp_entry_t entry)
5833 if (!mem_cgroup_is_root(memcg)) 5835 if (!mem_cgroup_is_root(memcg))
5834 page_counter_uncharge(&memcg->memory, 1); 5836 page_counter_uncharge(&memcg->memory, 1);
5835 5837
5836 /* XXX: caller holds IRQ-safe mapping->tree_lock */ 5838 /* Caller disabled preemption with mapping->tree_lock */
5837 VM_BUG_ON(!irqs_disabled());
5838
5839 mem_cgroup_charge_statistics(memcg, page, -1); 5839 mem_cgroup_charge_statistics(memcg, page, -1);
5840 memcg_check_events(memcg, page); 5840 memcg_check_events(memcg, page);
5841} 5841}
diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c
index 457bde530cbe..9e88f749aa51 100644
--- a/mm/memory_hotplug.c
+++ b/mm/memory_hotplug.c
@@ -1969,8 +1969,10 @@ void try_offline_node(int nid)
1969 * wait_table may be allocated from boot memory, 1969 * wait_table may be allocated from boot memory,
1970 * here only free if it's allocated by vmalloc. 1970 * here only free if it's allocated by vmalloc.
1971 */ 1971 */
1972 if (is_vmalloc_addr(zone->wait_table)) 1972 if (is_vmalloc_addr(zone->wait_table)) {
1973 vfree(zone->wait_table); 1973 vfree(zone->wait_table);
1974 zone->wait_table = NULL;
1975 }
1974 } 1976 }
1975} 1977}
1976EXPORT_SYMBOL(try_offline_node); 1978EXPORT_SYMBOL(try_offline_node);
diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c
index 08bd7a3d464a..a8b5e749e84e 100644
--- a/mm/zsmalloc.c
+++ b/mm/zsmalloc.c
@@ -289,7 +289,8 @@ static int create_handle_cache(struct zs_pool *pool)
289 289
290static void destroy_handle_cache(struct zs_pool *pool) 290static void destroy_handle_cache(struct zs_pool *pool)
291{ 291{
292 kmem_cache_destroy(pool->handle_cachep); 292 if (pool->handle_cachep)
293 kmem_cache_destroy(pool->handle_cachep);
293} 294}
294 295
295static unsigned long alloc_handle(struct zs_pool *pool) 296static unsigned long alloc_handle(struct zs_pool *pool)
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c
index e0670d7054f9..659fb96672e4 100644
--- a/net/bridge/br_fdb.c
+++ b/net/bridge/br_fdb.c
@@ -796,9 +796,11 @@ static int __br_fdb_add(struct ndmsg *ndm, struct net_bridge_port *p,
796 int err = 0; 796 int err = 0;
797 797
798 if (ndm->ndm_flags & NTF_USE) { 798 if (ndm->ndm_flags & NTF_USE) {
799 local_bh_disable();
799 rcu_read_lock(); 800 rcu_read_lock();
800 br_fdb_update(p->br, p, addr, vid, true); 801 br_fdb_update(p->br, p, addr, vid, true);
801 rcu_read_unlock(); 802 rcu_read_unlock();
803 local_bh_enable();
802 } else { 804 } else {
803 spin_lock_bh(&p->br->hash_lock); 805 spin_lock_bh(&p->br->hash_lock);
804 err = fdb_add_entry(p, addr, ndm->ndm_state, 806 err = fdb_add_entry(p, addr, ndm->ndm_state,
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 22fd0419b314..ff667e18b2d6 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -1167,6 +1167,9 @@ static void br_multicast_add_router(struct net_bridge *br,
1167 struct net_bridge_port *p; 1167 struct net_bridge_port *p;
1168 struct hlist_node *slot = NULL; 1168 struct hlist_node *slot = NULL;
1169 1169
1170 if (!hlist_unhashed(&port->rlist))
1171 return;
1172
1170 hlist_for_each_entry(p, &br->router_list, rlist) { 1173 hlist_for_each_entry(p, &br->router_list, rlist) {
1171 if ((unsigned long) port >= (unsigned long) p) 1174 if ((unsigned long) port >= (unsigned long) p)
1172 break; 1175 break;
@@ -1194,12 +1197,8 @@ static void br_multicast_mark_router(struct net_bridge *br,
1194 if (port->multicast_router != 1) 1197 if (port->multicast_router != 1)
1195 return; 1198 return;
1196 1199
1197 if (!hlist_unhashed(&port->rlist))
1198 goto timer;
1199
1200 br_multicast_add_router(br, port); 1200 br_multicast_add_router(br, port);
1201 1201
1202timer:
1203 mod_timer(&port->multicast_router_timer, 1202 mod_timer(&port->multicast_router_timer,
1204 now + br->multicast_querier_interval); 1203 now + br->multicast_querier_interval);
1205} 1204}
diff --git a/net/core/dev.c b/net/core/dev.c
index 2c1c67fad64d..aa82f9ab6a36 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1718,15 +1718,8 @@ EXPORT_SYMBOL_GPL(is_skb_forwardable);
1718 1718
1719int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb) 1719int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
1720{ 1720{
1721 if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) { 1721 if (skb_orphan_frags(skb, GFP_ATOMIC) ||
1722 if (skb_copy_ubufs(skb, GFP_ATOMIC)) { 1722 unlikely(!is_skb_forwardable(dev, skb))) {
1723 atomic_long_inc(&dev->rx_dropped);
1724 kfree_skb(skb);
1725 return NET_RX_DROP;
1726 }
1727 }
1728
1729 if (unlikely(!is_skb_forwardable(dev, skb))) {
1730 atomic_long_inc(&dev->rx_dropped); 1723 atomic_long_inc(&dev->rx_dropped);
1731 kfree_skb(skb); 1724 kfree_skb(skb);
1732 return NET_RX_DROP; 1725 return NET_RX_DROP;
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 3cfff2a3d651..41ec02242ea7 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -4398,7 +4398,7 @@ struct sk_buff *alloc_skb_with_frags(unsigned long header_len,
4398 4398
4399 while (order) { 4399 while (order) {
4400 if (npages >= 1 << order) { 4400 if (npages >= 1 << order) {
4401 page = alloc_pages(gfp_mask | 4401 page = alloc_pages((gfp_mask & ~__GFP_WAIT) |
4402 __GFP_COMP | 4402 __GFP_COMP |
4403 __GFP_NOWARN | 4403 __GFP_NOWARN |
4404 __GFP_NORETRY, 4404 __GFP_NORETRY,
diff --git a/net/core/sock.c b/net/core/sock.c
index 292f42228bfb..dc30dc5bb1b8 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -354,15 +354,12 @@ void sk_clear_memalloc(struct sock *sk)
354 354
355 /* 355 /*
356 * SOCK_MEMALLOC is allowed to ignore rmem limits to ensure forward 356 * SOCK_MEMALLOC is allowed to ignore rmem limits to ensure forward
357 * progress of swapping. However, if SOCK_MEMALLOC is cleared while 357 * progress of swapping. SOCK_MEMALLOC may be cleared while
358 * it has rmem allocations there is a risk that the user of the 358 * it has rmem allocations due to the last swapfile being deactivated
359 * socket cannot make forward progress due to exceeding the rmem 359 * but there is a risk that the socket is unusable due to exceeding
360 * limits. By rights, sk_clear_memalloc() should only be called 360 * the rmem limits. Reclaim the reserves and obey rmem limits again.
361 * on sockets being torn down but warn and reset the accounting if
362 * that assumption breaks.
363 */ 361 */
364 if (WARN_ON(sk->sk_forward_alloc)) 362 sk_mem_reclaim(sk);
365 sk_mem_reclaim(sk);
366} 363}
367EXPORT_SYMBOL_GPL(sk_clear_memalloc); 364EXPORT_SYMBOL_GPL(sk_clear_memalloc);
368 365
@@ -1883,7 +1880,7 @@ bool skb_page_frag_refill(unsigned int sz, struct page_frag *pfrag, gfp_t gfp)
1883 1880
1884 pfrag->offset = 0; 1881 pfrag->offset = 0;
1885 if (SKB_FRAG_PAGE_ORDER) { 1882 if (SKB_FRAG_PAGE_ORDER) {
1886 pfrag->page = alloc_pages(gfp | __GFP_COMP | 1883 pfrag->page = alloc_pages((gfp & ~__GFP_WAIT) | __GFP_COMP |
1887 __GFP_NOWARN | __GFP_NORETRY, 1884 __GFP_NOWARN | __GFP_NORETRY,
1888 SKB_FRAG_PAGE_ORDER); 1885 SKB_FRAG_PAGE_ORDER);
1889 if (likely(pfrag->page)) { 1886 if (likely(pfrag->page)) {
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 1c92ea67baef..83aa604f9273 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -90,6 +90,7 @@
90#include <linux/socket.h> 90#include <linux/socket.h>
91#include <linux/sockios.h> 91#include <linux/sockios.h>
92#include <linux/igmp.h> 92#include <linux/igmp.h>
93#include <linux/inetdevice.h>
93#include <linux/in.h> 94#include <linux/in.h>
94#include <linux/errno.h> 95#include <linux/errno.h>
95#include <linux/timer.h> 96#include <linux/timer.h>
@@ -1960,6 +1961,7 @@ void udp_v4_early_demux(struct sk_buff *skb)
1960 struct sock *sk; 1961 struct sock *sk;
1961 struct dst_entry *dst; 1962 struct dst_entry *dst;
1962 int dif = skb->dev->ifindex; 1963 int dif = skb->dev->ifindex;
1964 int ours;
1963 1965
1964 /* validate the packet */ 1966 /* validate the packet */
1965 if (!pskb_may_pull(skb, skb_transport_offset(skb) + sizeof(struct udphdr))) 1967 if (!pskb_may_pull(skb, skb_transport_offset(skb) + sizeof(struct udphdr)))
@@ -1969,14 +1971,24 @@ void udp_v4_early_demux(struct sk_buff *skb)
1969 uh = udp_hdr(skb); 1971 uh = udp_hdr(skb);
1970 1972
1971 if (skb->pkt_type == PACKET_BROADCAST || 1973 if (skb->pkt_type == PACKET_BROADCAST ||
1972 skb->pkt_type == PACKET_MULTICAST) 1974 skb->pkt_type == PACKET_MULTICAST) {
1975 struct in_device *in_dev = __in_dev_get_rcu(skb->dev);
1976
1977 if (!in_dev)
1978 return;
1979
1980 ours = ip_check_mc_rcu(in_dev, iph->daddr, iph->saddr,
1981 iph->protocol);
1982 if (!ours)
1983 return;
1973 sk = __udp4_lib_mcast_demux_lookup(net, uh->dest, iph->daddr, 1984 sk = __udp4_lib_mcast_demux_lookup(net, uh->dest, iph->daddr,
1974 uh->source, iph->saddr, dif); 1985 uh->source, iph->saddr, dif);
1975 else if (skb->pkt_type == PACKET_HOST) 1986 } else if (skb->pkt_type == PACKET_HOST) {
1976 sk = __udp4_lib_demux_lookup(net, uh->dest, iph->daddr, 1987 sk = __udp4_lib_demux_lookup(net, uh->dest, iph->daddr,
1977 uh->source, iph->saddr, dif); 1988 uh->source, iph->saddr, dif);
1978 else 1989 } else {
1979 return; 1990 return;
1991 }
1980 1992
1981 if (!sk) 1993 if (!sk)
1982 return; 1994 return;
diff --git a/net/ipv6/addrconf_core.c b/net/ipv6/addrconf_core.c
index d873ceea86e6..ca09bf49ac68 100644
--- a/net/ipv6/addrconf_core.c
+++ b/net/ipv6/addrconf_core.c
@@ -133,6 +133,14 @@ static void snmp6_free_dev(struct inet6_dev *idev)
133 free_percpu(idev->stats.ipv6); 133 free_percpu(idev->stats.ipv6);
134} 134}
135 135
136static void in6_dev_finish_destroy_rcu(struct rcu_head *head)
137{
138 struct inet6_dev *idev = container_of(head, struct inet6_dev, rcu);
139
140 snmp6_free_dev(idev);
141 kfree(idev);
142}
143
136/* Nobody refers to this device, we may destroy it. */ 144/* Nobody refers to this device, we may destroy it. */
137 145
138void in6_dev_finish_destroy(struct inet6_dev *idev) 146void in6_dev_finish_destroy(struct inet6_dev *idev)
@@ -151,7 +159,6 @@ void in6_dev_finish_destroy(struct inet6_dev *idev)
151 pr_warn("Freeing alive inet6 device %p\n", idev); 159 pr_warn("Freeing alive inet6 device %p\n", idev);
152 return; 160 return;
153 } 161 }
154 snmp6_free_dev(idev); 162 call_rcu(&idev->rcu, in6_dev_finish_destroy_rcu);
155 kfree_rcu(idev, rcu);
156} 163}
157EXPORT_SYMBOL(in6_dev_finish_destroy); 164EXPORT_SYMBOL(in6_dev_finish_destroy);
diff --git a/net/mpls/af_mpls.c b/net/mpls/af_mpls.c
index 7b3f732269e4..1f93a5978f2a 100644
--- a/net/mpls/af_mpls.c
+++ b/net/mpls/af_mpls.c
@@ -541,7 +541,7 @@ static void mpls_ifdown(struct net_device *dev)
541 541
542 RCU_INIT_POINTER(dev->mpls_ptr, NULL); 542 RCU_INIT_POINTER(dev->mpls_ptr, NULL);
543 543
544 kfree(mdev); 544 kfree_rcu(mdev, rcu);
545} 545}
546 546
547static int mpls_dev_notify(struct notifier_block *this, unsigned long event, 547static int mpls_dev_notify(struct notifier_block *this, unsigned long event,
@@ -564,6 +564,17 @@ static int mpls_dev_notify(struct notifier_block *this, unsigned long event,
564 case NETDEV_UNREGISTER: 564 case NETDEV_UNREGISTER:
565 mpls_ifdown(dev); 565 mpls_ifdown(dev);
566 break; 566 break;
567 case NETDEV_CHANGENAME:
568 mdev = mpls_dev_get(dev);
569 if (mdev) {
570 int err;
571
572 mpls_dev_sysctl_unregister(mdev);
573 err = mpls_dev_sysctl_register(dev, mdev);
574 if (err)
575 return notifier_from_errno(err);
576 }
577 break;
567 } 578 }
568 return NOTIFY_OK; 579 return NOTIFY_OK;
569} 580}
diff --git a/net/mpls/internal.h b/net/mpls/internal.h
index b064c345042c..8cabeb5a1cb9 100644
--- a/net/mpls/internal.h
+++ b/net/mpls/internal.h
@@ -16,6 +16,7 @@ struct mpls_dev {
16 int input_enabled; 16 int input_enabled;
17 17
18 struct ctl_table_header *sysctl; 18 struct ctl_table_header *sysctl;
19 struct rcu_head rcu;
19}; 20};
20 21
21struct sk_buff; 22struct sk_buff;
diff --git a/net/openvswitch/vport-netdev.c b/net/openvswitch/vport-netdev.c
index 4776282c6417..33e6d6e2908f 100644
--- a/net/openvswitch/vport-netdev.c
+++ b/net/openvswitch/vport-netdev.c
@@ -125,6 +125,7 @@ static struct vport *netdev_create(const struct vport_parms *parms)
125 if (err) 125 if (err)
126 goto error_master_upper_dev_unlink; 126 goto error_master_upper_dev_unlink;
127 127
128 dev_disable_lro(netdev_vport->dev);
128 dev_set_promiscuity(netdev_vport->dev, 1); 129 dev_set_promiscuity(netdev_vport->dev, 1);
129 netdev_vport->dev->priv_flags |= IFF_OVS_DATAPATH; 130 netdev_vport->dev->priv_flags |= IFF_OVS_DATAPATH;
130 rtnl_unlock(); 131 rtnl_unlock();
diff --git a/net/sctp/auth.c b/net/sctp/auth.c
index fb7976aee61c..4f15b7d730e1 100644
--- a/net/sctp/auth.c
+++ b/net/sctp/auth.c
@@ -381,13 +381,14 @@ nomem:
381} 381}
382 382
383 383
384/* Public interface to creat the association shared key. 384/* Public interface to create the association shared key.
385 * See code above for the algorithm. 385 * See code above for the algorithm.
386 */ 386 */
387int sctp_auth_asoc_init_active_key(struct sctp_association *asoc, gfp_t gfp) 387int sctp_auth_asoc_init_active_key(struct sctp_association *asoc, gfp_t gfp)
388{ 388{
389 struct sctp_auth_bytes *secret; 389 struct sctp_auth_bytes *secret;
390 struct sctp_shared_key *ep_key; 390 struct sctp_shared_key *ep_key;
391 struct sctp_chunk *chunk;
391 392
392 /* If we don't support AUTH, or peer is not capable 393 /* If we don't support AUTH, or peer is not capable
393 * we don't need to do anything. 394 * we don't need to do anything.
@@ -410,6 +411,14 @@ int sctp_auth_asoc_init_active_key(struct sctp_association *asoc, gfp_t gfp)
410 sctp_auth_key_put(asoc->asoc_shared_key); 411 sctp_auth_key_put(asoc->asoc_shared_key);
411 asoc->asoc_shared_key = secret; 412 asoc->asoc_shared_key = secret;
412 413
414 /* Update send queue in case any chunk already in there now
415 * needs authenticating
416 */
417 list_for_each_entry(chunk, &asoc->outqueue.out_chunk_list, list) {
418 if (sctp_auth_send_cid(chunk->chunk_hdr->type, asoc))
419 chunk->auth = 1;
420 }
421
413 return 0; 422 return 0;
414} 423}
415 424
diff --git a/net/tipc/socket.c b/net/tipc/socket.c
index 9074b5cede38..f485600c4507 100644
--- a/net/tipc/socket.c
+++ b/net/tipc/socket.c
@@ -2142,11 +2142,17 @@ static void tipc_sk_timeout(unsigned long data)
2142 peer_node = tsk_peer_node(tsk); 2142 peer_node = tsk_peer_node(tsk);
2143 2143
2144 if (tsk->probing_state == TIPC_CONN_PROBING) { 2144 if (tsk->probing_state == TIPC_CONN_PROBING) {
2145 /* Previous probe not answered -> self abort */ 2145 if (!sock_owned_by_user(sk)) {
2146 skb = tipc_msg_create(TIPC_CRITICAL_IMPORTANCE, 2146 sk->sk_socket->state = SS_DISCONNECTING;
2147 TIPC_CONN_MSG, SHORT_H_SIZE, 0, 2147 tsk->connected = 0;
2148 own_node, peer_node, tsk->portid, 2148 tipc_node_remove_conn(sock_net(sk), tsk_peer_node(tsk),
2149 peer_port, TIPC_ERR_NO_PORT); 2149 tsk_peer_port(tsk));
2150 sk->sk_state_change(sk);
2151 } else {
2152 /* Try again later */
2153 sk_reset_timer(sk, &sk->sk_timer, (HZ / 20));
2154 }
2155
2150 } else { 2156 } else {
2151 skb = tipc_msg_create(CONN_MANAGER, CONN_PROBE, 2157 skb = tipc_msg_create(CONN_MANAGER, CONN_PROBE,
2152 INT_H_SIZE, 0, peer_node, own_node, 2158 INT_H_SIZE, 0, peer_node, own_node,
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c
index fff1bef6ed6d..fd682832a0e3 100644
--- a/net/wireless/wext-compat.c
+++ b/net/wireless/wext-compat.c
@@ -1333,6 +1333,8 @@ static struct iw_statistics *cfg80211_wireless_stats(struct net_device *dev)
1333 memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN); 1333 memcpy(bssid, wdev->current_bss->pub.bssid, ETH_ALEN);
1334 wdev_unlock(wdev); 1334 wdev_unlock(wdev);
1335 1335
1336 memset(&sinfo, 0, sizeof(sinfo));
1337
1336 if (rdev_get_station(rdev, dev, bssid, &sinfo)) 1338 if (rdev_get_station(rdev, dev, bssid, &sinfo))
1337 return NULL; 1339 return NULL;
1338 1340
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 89b1df4e72ab..c5ec977b9c37 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -3169,12 +3169,12 @@ sub process {
3169 } 3169 }
3170 3170
3171# check for global initialisers. 3171# check for global initialisers.
3172 if ($line =~ /^\+(\s*$Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL|false)\s*;/) { 3172 if ($line =~ /^\+$Type\s*$Ident(?:\s+$Modifier)*\s*=\s*(?:0|NULL|false)\s*;/) {
3173 if (ERROR("GLOBAL_INITIALISERS", 3173 if (ERROR("GLOBAL_INITIALISERS",
3174 "do not initialise globals to 0 or NULL\n" . 3174 "do not initialise globals to 0 or NULL\n" .
3175 $herecurr) && 3175 $herecurr) &&
3176 $fix) { 3176 $fix) {
3177 $fixed[$fixlinenr] =~ s/($Type\s*$Ident\s*(?:\s+$Modifier))*\s*=\s*(0|NULL|false)\s*;/$1;/; 3177 $fixed[$fixlinenr] =~ s/(^.$Type\s*$Ident(?:\s+$Modifier)*)\s*=\s*(0|NULL|false)\s*;/$1;/;
3178 } 3178 }
3179 } 3179 }
3180# check for static initialisers. 3180# check for static initialisers.
diff --git a/sound/hda/hdac_regmap.c b/sound/hda/hdac_regmap.c
index 7371e0c3926f..1eabcdf69457 100644
--- a/sound/hda/hdac_regmap.c
+++ b/sound/hda/hdac_regmap.c
@@ -246,6 +246,9 @@ static int hda_reg_read(void *context, unsigned int reg, unsigned int *val)
246 return hda_reg_read_stereo_amp(codec, reg, val); 246 return hda_reg_read_stereo_amp(codec, reg, val);
247 if (verb == AC_VERB_GET_PROC_COEF) 247 if (verb == AC_VERB_GET_PROC_COEF)
248 return hda_reg_read_coef(codec, reg, val); 248 return hda_reg_read_coef(codec, reg, val);
249 if ((verb & 0x700) == AC_VERB_SET_AMP_GAIN_MUTE)
250 reg &= ~AC_AMP_FAKE_MUTE;
251
249 err = snd_hdac_exec_verb(codec, reg, 0, val); 252 err = snd_hdac_exec_verb(codec, reg, 0, val);
250 if (err < 0) 253 if (err < 0)
251 return err; 254 return err;
@@ -265,6 +268,9 @@ static int hda_reg_write(void *context, unsigned int reg, unsigned int val)
265 unsigned int verb; 268 unsigned int verb;
266 int i, bytes, err; 269 int i, bytes, err;
267 270
271 if (codec->caps_overwriting)
272 return 0;
273
268 reg &= ~0x00080000U; /* drop GET bit */ 274 reg &= ~0x00080000U; /* drop GET bit */
269 reg |= (codec->addr << 28); 275 reg |= (codec->addr << 28);
270 verb = get_verb(reg); 276 verb = get_verb(reg);
@@ -280,6 +286,8 @@ static int hda_reg_write(void *context, unsigned int reg, unsigned int val)
280 286
281 switch (verb & 0xf00) { 287 switch (verb & 0xf00) {
282 case AC_VERB_SET_AMP_GAIN_MUTE: 288 case AC_VERB_SET_AMP_GAIN_MUTE:
289 if ((reg & AC_AMP_FAKE_MUTE) && (val & AC_AMP_MUTE))
290 val = 0;
283 verb = AC_VERB_SET_AMP_GAIN_MUTE; 291 verb = AC_VERB_SET_AMP_GAIN_MUTE;
284 if (reg & AC_AMP_GET_LEFT) 292 if (reg & AC_AMP_GET_LEFT)
285 verb |= AC_AMP_SET_LEFT >> 8; 293 verb |= AC_AMP_SET_LEFT >> 8;
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index b49feff0a319..5645481af3d9 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -436,7 +436,7 @@ static unsigned int get_num_devices(struct hda_codec *codec, hda_nid_t nid)
436 get_wcaps_type(wcaps) != AC_WID_PIN) 436 get_wcaps_type(wcaps) != AC_WID_PIN)
437 return 0; 437 return 0;
438 438
439 parm = snd_hda_param_read(codec, nid, AC_PAR_DEVLIST_LEN); 439 parm = snd_hdac_read_parm_uncached(&codec->core, nid, AC_PAR_DEVLIST_LEN);
440 if (parm == -1 && codec->bus->rirb_error) 440 if (parm == -1 && codec->bus->rirb_error)
441 parm = 0; 441 parm = 0;
442 return parm & AC_DEV_LIST_LEN_MASK; 442 return parm & AC_DEV_LIST_LEN_MASK;
@@ -1376,6 +1376,31 @@ int snd_hda_override_amp_caps(struct hda_codec *codec, hda_nid_t nid, int dir,
1376EXPORT_SYMBOL_GPL(snd_hda_override_amp_caps); 1376EXPORT_SYMBOL_GPL(snd_hda_override_amp_caps);
1377 1377
1378/** 1378/**
1379 * snd_hda_codec_amp_update - update the AMP mono value
1380 * @codec: HD-audio codec
1381 * @nid: NID to read the AMP value
1382 * @ch: channel to update (0 or 1)
1383 * @dir: #HDA_INPUT or #HDA_OUTPUT
1384 * @idx: the index value (only for input direction)
1385 * @mask: bit mask to set
1386 * @val: the bits value to set
1387 *
1388 * Update the AMP values for the given channel, direction and index.
1389 */
1390int snd_hda_codec_amp_update(struct hda_codec *codec, hda_nid_t nid,
1391 int ch, int dir, int idx, int mask, int val)
1392{
1393 unsigned int cmd = snd_hdac_regmap_encode_amp(nid, ch, dir, idx);
1394
1395 /* enable fake mute if no h/w mute but min=mute */
1396 if ((query_amp_caps(codec, nid, dir) &
1397 (AC_AMPCAP_MUTE | AC_AMPCAP_MIN_MUTE)) == AC_AMPCAP_MIN_MUTE)
1398 cmd |= AC_AMP_FAKE_MUTE;
1399 return snd_hdac_regmap_update_raw(&codec->core, cmd, mask, val);
1400}
1401EXPORT_SYMBOL_GPL(snd_hda_codec_amp_update);
1402
1403/**
1379 * snd_hda_codec_amp_stereo - update the AMP stereo values 1404 * snd_hda_codec_amp_stereo - update the AMP stereo values
1380 * @codec: HD-audio codec 1405 * @codec: HD-audio codec
1381 * @nid: NID to read the AMP value 1406 * @nid: NID to read the AMP value
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index fea198c58196..a244ba706317 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -340,6 +340,11 @@ enum {
340#define use_vga_switcheroo(chip) 0 340#define use_vga_switcheroo(chip) 0
341#endif 341#endif
342 342
343#define CONTROLLER_IN_GPU(pci) (((pci)->device == 0x0a0c) || \
344 ((pci)->device == 0x0c0c) || \
345 ((pci)->device == 0x0d0c) || \
346 ((pci)->device == 0x160c))
347
343static char *driver_short_names[] = { 348static char *driver_short_names[] = {
344 [AZX_DRIVER_ICH] = "HDA Intel", 349 [AZX_DRIVER_ICH] = "HDA Intel",
345 [AZX_DRIVER_PCH] = "HDA Intel PCH", 350 [AZX_DRIVER_PCH] = "HDA Intel PCH",
@@ -1854,8 +1859,17 @@ static int azx_probe_continue(struct azx *chip)
1854 if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) { 1859 if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) {
1855#ifdef CONFIG_SND_HDA_I915 1860#ifdef CONFIG_SND_HDA_I915
1856 err = hda_i915_init(hda); 1861 err = hda_i915_init(hda);
1857 if (err < 0) 1862 if (err < 0) {
1858 goto out_free; 1863 /* if the controller is bound only with HDMI/DP
1864 * (for HSW and BDW), we need to abort the probe;
1865 * for other chips, still continue probing as other
1866 * codecs can be on the same link.
1867 */
1868 if (CONTROLLER_IN_GPU(pci))
1869 goto out_free;
1870 else
1871 goto skip_i915;
1872 }
1859 err = hda_display_power(hda, true); 1873 err = hda_display_power(hda, true);
1860 if (err < 0) { 1874 if (err < 0) {
1861 dev_err(chip->card->dev, 1875 dev_err(chip->card->dev,
@@ -1865,6 +1879,7 @@ static int azx_probe_continue(struct azx *chip)
1865#endif 1879#endif
1866 } 1880 }
1867 1881
1882 skip_i915:
1868 err = azx_first_init(chip); 1883 err = azx_first_init(chip);
1869 if (err < 0) 1884 if (err < 0)
1870 goto out_free; 1885 goto out_free;
diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h
index 3b567f42296b..bed66c314431 100644
--- a/sound/pci/hda/hda_local.h
+++ b/sound/pci/hda/hda_local.h
@@ -129,8 +129,8 @@ int snd_hda_mixer_amp_switch_put_beep(struct snd_kcontrol *kcontrol,
129/* lowlevel accessor with caching; use carefully */ 129/* lowlevel accessor with caching; use carefully */
130#define snd_hda_codec_amp_read(codec, nid, ch, dir, idx) \ 130#define snd_hda_codec_amp_read(codec, nid, ch, dir, idx) \
131 snd_hdac_regmap_get_amp(&(codec)->core, nid, ch, dir, idx) 131 snd_hdac_regmap_get_amp(&(codec)->core, nid, ch, dir, idx)
132#define snd_hda_codec_amp_update(codec, nid, ch, dir, idx, mask, val) \ 132int snd_hda_codec_amp_update(struct hda_codec *codec, hda_nid_t nid,
133 snd_hdac_regmap_update_amp(&(codec)->core, nid, ch, dir, idx, mask, val) 133 int ch, int dir, int idx, int mask, int val);
134int snd_hda_codec_amp_stereo(struct hda_codec *codec, hda_nid_t nid, 134int snd_hda_codec_amp_stereo(struct hda_codec *codec, hda_nid_t nid,
135 int dir, int idx, int mask, int val); 135 int dir, int idx, int mask, int val);
136int snd_hda_codec_amp_init(struct hda_codec *codec, hda_nid_t nid, int ch, 136int snd_hda_codec_amp_init(struct hda_codec *codec, hda_nid_t nid, int ch,
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index b8c97d092a47..754e689596a2 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1267,8 +1267,9 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
1267 if (fp->altsetting == 2) 1267 if (fp->altsetting == 2)
1268 return SNDRV_PCM_FMTBIT_DSD_U32_BE; 1268 return SNDRV_PCM_FMTBIT_DSD_U32_BE;
1269 break; 1269 break;
1270 /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */ 1270
1271 case USB_ID(0x20b1, 0x2009): 1271 case USB_ID(0x20b1, 0x2009): /* DIYINHK DSD DXD 384kHz USB to I2S/DSD */
1272 case USB_ID(0x20b1, 0x2023): /* JLsounds I2SoverUSB */
1272 if (fp->altsetting == 3) 1273 if (fp->altsetting == 3)
1273 return SNDRV_PCM_FMTBIT_DSD_U32_BE; 1274 return SNDRV_PCM_FMTBIT_DSD_U32_BE;
1274 break; 1275 break;