History

Merge 4.2-rc4 into tty-next

Other serial driver work wants to build on patches now in 4.2-rc4 so merge the branch so this can properly happen.

Greg Kroah-Hartman committed 11 years ago

Commit 92311e42 parents d684779 cbfe8fa274 files · +2107 −1580Browse files

Unified · Split

274 files
  1. Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt +3 −0
  2. Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt +0 −2
  3. MAINTAINERS +15 −1
  4. Makefile +1 −1
  5. arch/arm/boot/dts/imx25-pdk.dts +3 −2
  6. arch/arm/boot/dts/imx51-apf51dev.dts +1 −1
  7. arch/arm/boot/dts/imx53-ard.dts +2 −2
  8. arch/arm/boot/dts/imx53-m53evk.dts +2 −2
  9. arch/arm/boot/dts/imx53-qsb-common.dtsi +2 −2
  10. arch/arm/boot/dts/imx53-smd.dts +2 −2
  11. arch/arm/boot/dts/imx53-tqma53.dtsi +2 −2
  12. arch/arm/boot/dts/imx53-tx53.dtsi +2 −2
  13. arch/arm/boot/dts/imx53-voipac-bsb.dts +2 −2
  14. arch/arm/boot/dts/imx6dl-riotboard.dts +4 −4
  15. arch/arm/boot/dts/imx6q-arm2.dts +3 −2
  16. arch/arm/boot/dts/imx6q-gk802.dts +2 −1
  17. arch/arm/boot/dts/imx6q-tbs2910.dts +2 −2
  18. arch/arm/boot/dts/imx6qdl-aristainetos.dtsi +2 −2
  19. arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi +2 −2
  20. arch/arm/boot/dts/imx6qdl-cubox-i.dtsi +1 −1
  21. arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi +3 −1
  22. arch/arm/boot/dts/imx6qdl-gw52xx.dtsi +1 −1
  23. arch/arm/boot/dts/imx6qdl-gw53xx.dtsi +1 −1
  24. arch/arm/boot/dts/imx6qdl-gw54xx.dtsi +1 −1
  25. arch/arm/boot/dts/imx6qdl-hummingboard.dtsi +1 −1
  26. arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi +2 −2
  27. arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi +4 −4
  28. arch/arm/boot/dts/imx6qdl-rex.dtsi +2 −2
  29. arch/arm/boot/dts/imx6qdl-sabreauto.dtsi +2 −2
  30. arch/arm/boot/dts/imx6qdl-sabrelite.dtsi +3 −3
  31. arch/arm/boot/dts/imx6qdl-sabresd.dtsi +4 −4
  32. arch/arm/boot/dts/imx6qdl-tx6.dtsi +2 −2
  33. arch/arm/boot/dts/imx6qdl-wandboard.dtsi +4 −2
  34. arch/arm/boot/dts/imx6sl-evk.dts +5 −5
  35. arch/arm/boot/dts/imx6sx-sabreauto.dts +2 −2
  36. arch/arm/boot/dts/imx6sx-sdb.dtsi +2 −2
  37. arch/arm/boot/dts/imx7d-sdb.dts +2 −2
  38. arch/arm/net/bpf_jit_32.c +44 −13
  39. arch/arm64/kernel/entry.S +3 −2
  40. arch/arm64/kernel/irq.c +2 −2
  41. arch/avr32/kernel/time.c +33 −32
  42. arch/m32r/include/asm/io.h +5 −0
  43. arch/s390/kernel/asm-offsets.c +7 −8
  44. arch/s390/kernel/entry.S +9 −4
  45. arch/s390/kernel/traps.c +2 −2
  46. arch/tile/kernel/setup.c +1 −1
  47. arch/x86/entry/entry_64_compat.S +9 −5
  48. arch/x86/include/uapi/asm/kvm.h +2 −2
  49. arch/x86/kernel/cpu/perf_event_intel_cqm.c +8 −0
  50. arch/x86/kernel/fpu/init.c +6 −0
  51. arch/x86/kvm/lapic.c +1 −1
  52. arch/x86/kvm/mtrr.c +30 −10
  53. arch/x86/kvm/svm.c +1 −1
  54. arch/x86/kvm/vmx.c +4 −1
  55. arch/x86/kvm/x86.h +5 −0
  56. arch/x86/mm/ioremap.c +6 −17
  57. arch/x86/mm/mmap.c +7 −0
  58. arch/x86/mm/mpx.c +3 −21
  59. arch/x86/mm/tlb.c +1 −1
  60. block/bio.c +14 −3
  61. block/blk-cgroup.c +5 −1
  62. drivers/ata/libata-core.c +18 −3
  63. drivers/ata/libata-pmp.c +7 −0
  64. drivers/ata/libata-scsi.c +2 −1
  65. drivers/ata/libata-transport.c +2 −0
  66. drivers/block/null_blk.c +9 −9
  67. drivers/bluetooth/btbcm.c +5 −6
  68. drivers/firmware/efi/cper.c +12 −3
  69. drivers/gpu/drm/amd/amdgpu/amdgpu.h +4 −0
  70. drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +1 −0
  71. drivers/gpu/drm/amd/amdgpu/cz_dpm.c +54 −16
  72. drivers/gpu/drm/amd/amdgpu/dce_v10_0.c +4 −0
  73. drivers/gpu/drm/amd/amdgpu/dce_v11_0.c +4 −0
  74. drivers/gpu/drm/amd/amdgpu/vce_v3_0.c +48 −0
  75. drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c +1 −0
  76. drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c +6 −6
  77. drivers/gpu/drm/drm_crtc.c +1 −4
  78. drivers/gpu/drm/i915/intel_uncore.c +19 −7
  79. drivers/gpu/drm/ttm/ttm_bo_util.c +2 −1
  80. drivers/hid/hid-cp2112.c +2 −0
  81. drivers/hid/hid-multitouch.c +7 −0
  82. drivers/hid/usbhid/hid-quirks.c +3 −0
  83. drivers/hid/wacom_sys.c +4 −2
  84. drivers/hid/wacom_wac.c +3 −0
  85. drivers/iio/accel/mma8452.c +4 −4
  86. drivers/iio/adc/mcp320x.c +2 −0
  87. drivers/iio/adc/vf610_adc.c +1 −1
  88. drivers/iio/light/stk3310.c +13 −13
  89. drivers/iio/magnetometer/Kconfig +1 −0
  90. drivers/iio/magnetometer/bmc150_magn.c +2 −2
  91. drivers/iio/magnetometer/mmc35240.c +7 −5
  92. drivers/iio/temperature/mlx90614.c +1 −1
  93. drivers/infiniband/hw/ipath/ipath_driver.c +4 −2
  94. drivers/input/input-leds.c +14 −2
  95. drivers/input/mouse/elantech.c +8 −5
  96. drivers/input/touchscreen/goodix.c +36 −0
  97. drivers/input/touchscreen/usbtouchscreen.c +3 −0
  98. drivers/input/touchscreen/zforce_ts.c +1 −1
  99. drivers/iommu/arm-smmu-v3.c +46 −14
  100. drivers/iommu/intel-iommu.c +6 −3
  101. drivers/isdn/gigaset/ser-gigaset.c +10 −25
  102. drivers/md/bitmap.c +17 −11
  103. drivers/md/md-cluster.c +11 −1
  104. drivers/md/md-cluster.h +1 −1
  105. drivers/md/md.c +3 −1
  106. drivers/md/raid1.c +5 −4
  107. drivers/md/raid10.c +4 −1
  108. drivers/md/raid5.c +28 −7
  109. drivers/md/raid5.h +2 −1
  110. drivers/media/pci/ivtv/ivtvfb.c +9 −6
  111. drivers/misc/mei/main.c +1 −1
  112. drivers/misc/mic/scif/scif_nodeqp.c +5 −10
  113. drivers/mmc/card/block.c +2 −0
  114. drivers/mmc/host/Kconfig +1 −0
  115. drivers/mmc/host/omap_hsmmc.c +6 −5
  116. drivers/mmc/host/sdhci-esdhc-imx.c +104 −106
  117. drivers/mmc/host/sdhci-esdhc.h +1 −1
  118. drivers/mmc/host/sdhci-pxav3.c +1 −0
  119. drivers/mmc/host/sdhci.c +12 −4
  120. drivers/net/bonding/bond_main.c +31 −3
  121. drivers/net/can/at91_can.c +4 −4
  122. drivers/net/can/bfin_can.c +2 −4
  123. drivers/net/can/cc770/cc770.c +2 −2
  124. drivers/net/can/flexcan.c +3 −4
  125. drivers/net/can/grcan.c +2 −1
  126. drivers/net/can/sja1000/sja1000.c +2 −4
  127. drivers/net/can/slcan.c +1 −1
  128. drivers/net/can/spi/mcp251x.c +8 −9
  129. drivers/net/can/ti_hecc.c +1 −1
  130. drivers/net/can/usb/ems_usb.c +2 −4
  131. drivers/net/can/usb/esd_usb2.c +2 −4
  132. drivers/net/can/usb/peak_usb/pcan_usb.c +3 −4
  133. drivers/net/can/usb/peak_usb/pcan_usb_pro.c +2 −2
  134. drivers/net/can/usb/usb_8dev.c +2 −4
  135. drivers/net/dsa/bcm_sf2.c +13 −2
  136. drivers/net/dsa/mv88e6xxx.c +1 −1
  137. drivers/net/ethernet/freescale/fec_main.c +13 −75
  138. drivers/net/ethernet/marvell/mvneta.c +10 −12
  139. drivers/net/ethernet/renesas/ravb_main.c +38 −36
  140. drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +1 −1
  141. drivers/net/ethernet/ti/cpsw.c +3 −6
  142. drivers/net/ethernet/ti/netcp_core.c +1 −1
  143. drivers/net/ipvlan/ipvlan.h +6 −3
  144. drivers/net/ipvlan/ipvlan_core.c +2 −4
  145. drivers/net/ipvlan/ipvlan_main.c +19 −23
  146. drivers/net/phy/dp83867.c +1 −1
  147. drivers/net/phy/mdio_bus.c +17 −2
  148. drivers/net/usb/qmi_wwan.c +1 −0
  149. drivers/net/virtio_net.c +2 −1
  150. drivers/net/wireless/ath/ath9k/hw.c +1 −0
  151. drivers/net/wireless/iwlwifi/iwl-fh.h +6 −0
  152. drivers/net/wireless/iwlwifi/iwl-nvm-parse.c +5 −7
  153. drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h +2 −1
  154. drivers/net/wireless/iwlwifi/mvm/scan.c +3 −0
  155. drivers/net/wireless/iwlwifi/mvm/sta.c +2 −1
  156. drivers/net/wireless/iwlwifi/mvm/time-event.c +1 −1
  157. drivers/net/wireless/iwlwifi/mvm/tx.c +1 −1
  158. drivers/net/wireless/iwlwifi/pcie/drv.c +3 −2
  159. drivers/net/wireless/iwlwifi/pcie/internal.h +8 −43
  160. drivers/net/wireless/iwlwifi/pcie/rx.c +83 −331
  161. drivers/net/wireless/iwlwifi/pcie/trans.c +29 −23
  162. drivers/net/xen-netback/netback.c +3 −3
  163. drivers/nvdimm/region_devs.c +5 −0
  164. drivers/parport/share.c +6 −5
  165. drivers/phy/Kconfig +2 −0
  166. drivers/phy/phy-berlin-usb.c +2 −2
  167. drivers/phy/phy-ti-pipe3.c +41 −131
  168. drivers/pinctrl/bcm/pinctrl-bcm2835.c +2 −0
  169. drivers/pinctrl/freescale/pinctrl-imx1-core.c +1 −2
  170. drivers/pinctrl/nomadik/pinctrl-abx500.c +0 −1
  171. drivers/pinctrl/pinctrl-lpc18xx.c +2 −2
  172. drivers/pinctrl/pinctrl-single.c +2 −1
  173. drivers/pinctrl/samsung/pinctrl-samsung.c +0 −5
  174. drivers/pinctrl/sh-pfc/sh_pfc.h +1 −1
  175. drivers/regulator/88pm800.c +1 −1
  176. drivers/regulator/core.c +15 −4
  177. drivers/regulator/max8973-regulator.c +1 −1
  178. drivers/regulator/s2mps11.c +10 −4
  179. drivers/s390/Makefile +1 −1
  180. drivers/s390/virtio/Makefile +0 −0
  181. drivers/s390/virtio/kvm_virtio.c +0 −0
  182. drivers/s390/virtio/virtio_ccw.c +0 −0
  183. drivers/scsi/virtio_scsi.c +3 −1
  184. drivers/spi/Kconfig +1 −1
  185. drivers/spi/spi-img-spfi.c +2 −0
  186. drivers/spi/spi-imx.c +3 −2
  187. drivers/spi/spi-zynqmp-gqspi.c +1 −0
  188. drivers/spi/spidev.c +1 −0
  189. drivers/tty/n_tty.c +13 −3
  190. drivers/tty/serial/Kconfig +1 −1
  191. drivers/tty/serial/amba-pl011.c +2 −2
  192. drivers/tty/serial/etraxfs-uart.c +1 −1
  193. drivers/tty/serial/imx.c +7 −8
  194. drivers/tty/serial/sc16is7xx.c +23 −7
  195. drivers/tty/serial/serial_core.c +2 −1
  196. drivers/tty/vt/selection.c +1 −0
  197. drivers/tty/vt/vt.c +2 −0
  198. drivers/usb/class/cdc-acm.c +1 −0
  199. drivers/usb/common/ulpi.c +1 −1
  200. drivers/usb/core/hcd.c +5 −2
  201. drivers/usb/core/hub.c +1 −1
  202. drivers/usb/core/usb.h +1 −0
  203. drivers/usb/dwc3/ep0.c +4 −0
  204. drivers/usb/gadget/udc/mv_udc_core.c +1 −1
  205. drivers/usb/gadget/udc/udc-core.c +8 −6
  206. drivers/usb/host/ohci-q.c +1 −6
  207. drivers/usb/host/ohci-tmio.c +1 −1
  208. drivers/usb/host/xhci-hub.c +16 −6
  209. drivers/usb/host/xhci-mem.c +1 −1
  210. drivers/usb/host/xhci-pci.c +54 −3
  211. drivers/usb/host/xhci-ring.c +3 −0
  212. drivers/usb/host/xhci.c +3 −0
  213. drivers/usb/host/xhci.h +1 −0
  214. drivers/usb/storage/unusual_devs.h +23 −0
  215. drivers/vhost/vhost.c +51 −16
  216. fs/fs-writeback.c +1 −0
  217. fs/namespace.c +33 −9
  218. fs/notify/mark.c +20 −14
  219. fs/pnode.h +0 −2
  220. fs/udf/inode.c +7 −12
  221. include/linux/ata.h +1 −0
  222. include/linux/cper.h +21 −1
  223. include/linux/ftrace.h +3 −0
  224. include/linux/libata.h +2 −0
  225. include/linux/mtd/nand.h +5 −5
  226. include/linux/platform_data/mmc-esdhc-imx.h +0 −1
  227. include/net/cfg80211.h +17 −0
  228. include/net/ip.h +1 −0
  229. include/uapi/drm/amdgpu_drm.h +2 −0
  230. include/uapi/drm/i915_drm.h +8 −0
  231. include/uapi/linux/virtio_net.h +16 −0
  232. include/uapi/linux/virtio_pci.h +6 −0
  233. include/uapi/linux/virtio_ring.h +4 −1
  234. kernel/resource.c +3 −3
  235. kernel/trace/ftrace.c +34 −18
  236. net/9p/trans_virtio.c +1 −0
  237. net/ax25/ax25_subr.c +1 −0
  238. net/bridge/br_mdb.c +0 −1
  239. net/bridge/br_multicast.c +30 −7
  240. net/caif/caif_socket.c +8 −11
  241. net/core/datagram.c +47 −9
  242. net/core/dst.c +3 −1
  243. net/core/rtnetlink.c +7 −4
  244. net/ipv4/datagram.c +12 −4
  245. net/ipv4/inet_hashtables.c +5 −6
  246. net/ipv4/ip_fragment.c +4 −2
  247. net/ipv4/tcp_input.c +1 −2
  248. net/ipv6/datagram.c +15 −5
  249. net/ipv6/ip6_offload.c +0 −2
  250. net/mac80211/debugfs_netdev.c +1 −0
  251. net/mac80211/iface.c +14 −11
  252. net/mac80211/mesh_plink.c +4 −1
  253. net/mac80211/pm.c +16 −0
  254. net/mac80211/tdls.c +3 −3
  255. net/mac80211/tx.c +3 −1
  256. net/netlink/af_netlink.c +47 −32
  257. net/openvswitch/flow_table.c +1 −1
  258. net/sched/act_bpf.c +3 −0
  259. net/sched/cls_bpf.c +1 −1
  260. net/sched/cls_flow.c +3 −2
  261. net/sched/cls_flower.c +1 −1
  262. net/sched/sch_fq_codel.c +11 −2
  263. net/sched/sch_sfq.c +1 −1
  264. net/wireless/chan.c +34 −11
  265. net/wireless/nl80211.c +8 −6
  266. net/wireless/reg.c +4 −4
  267. net/wireless/trace.h +7 −4
  268. samples/trace_events/trace-events-sample.h +5 −2
  269. sound/core/pcm_native.c +1 −1
  270. sound/hda/hdac_i915.c +4 −1
  271. sound/pci/hda/hda_intel.c +18 −8
  272. sound/pci/hda/patch_hdmi.c +2 −0
  273. sound/pci/hda/patch_realtek.c +31 −8
  274. sound/sparc/amd7930.c +1 −0
Documentation/devicetree/bindings/iommu/arm,smmu-v3.txt+3−0
@@ -35,3 +35,6 @@ the PCIe specification. · 34 unmodified lines
3535
3636 NOTE: this only applies to the SMMU itself, not
3737 masters connected upstream of the SMMU.
38+
39+- hisilicon,broken-prefetch-cmd
40+ : Avoid sending CMD_PREFETCH_* commands to the SMMU.
Documentation/devicetree/bindings/mmc/fsl-imx-esdhc.txt+0−2
@@ -17,7 +17,6 @@ Required properties: · 16 unmodified lines
1717 "fsl,imx6sx-usdhc"
1818
1919 Optional properties:
20−- fsl,cd-controller : Indicate to use controller internal card detection
2120 - fsl,wp-controller : Indicate to use controller internal write protection
2221 - fsl,delay-line : Specify the number of delay cells for override mode.
2322 This is used to set the clock delay for DLL(Delay Line) on override mode
@@ -35,7 +34,6 @@ esdhc@70004000 { · 11 unmodified lines
3534 compatible = "fsl,imx51-esdhc";
3635 reg = <0x70004000 0x4000>;
3736 interrupts = <1>;
38− fsl,cd-controller;
3937 fsl,wp-controller;
4038 };
4139
MAINTAINERS+15−1
@@ -5899,7 +5899,6 @@ S: Supported · 5898 unmodified lines
58995899 F: Documentation/s390/kvm.txt
59005900 F: arch/s390/include/asm/kvm*
59015901 F: arch/s390/kvm/
5902−F: drivers/s390/kvm/
59035902
59045903 KERNEL VIRTUAL MACHINE (KVM) FOR ARM
59055904 M: Christoffer Dall <christoffer.dall@linaro.org>
@@ -6839,6 +6838,12 @@ T: git git://linuxtv.org/anttip/media_tree.git · 933 unmodified lines
68396838 S: Maintained
68406839 F: drivers/media/usb/msi2500/
68416840
6841+MSYSTEMS DISKONCHIP G3 MTD DRIVER
6842+M: Robert Jarzmik <robert.jarzmik@free.fr>
6843+L: linux-mtd@lists.infradead.org
6844+S: Maintained
6845+F: drivers/mtd/devices/docg3*
6846+
68426847 MT9M032 APTINA SENSOR DRIVER
68436848 M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
68446849 L: linux-media@vger.kernel.org
@@ -10896,6 +10901,15 @@ F: drivers/block/virtio_blk.c · 4051 unmodified lines
1089610901 F: include/linux/virtio_*.h
1089710902 F: include/uapi/linux/virtio_*.h
1089810903
10904+VIRTIO DRIVERS FOR S390
10905+M: Christian Borntraeger <borntraeger@de.ibm.com>
10906+M: Cornelia Huck <cornelia.huck@de.ibm.com>
10907+L: linux-s390@vger.kernel.org
10908+L: virtualization@lists.linux-foundation.org
10909+L: kvm@vger.kernel.org
10910+S: Supported
10911+F: drivers/s390/virtio/
10912+
1089910913 VIRTIO GPU DRIVER
1090010914 M: David Airlie <airlied@linux.ie>
1090110915 M: Gerd Hoffmann <kraxel@redhat.com>
Makefile+1−1
@@ -1,7 +1,7 @@
11 VERSION = 4
22 PATCHLEVEL = 2
33 SUBLEVEL = 0
4−EXTRAVERSION = -rc3
4+EXTRAVERSION = -rc4
55 NAME = Hurr durr I'ma sheep
66
77 # *DOCUMENTATION*
arch/arm/boot/dts/imx25-pdk.dts+3−2
@@ -10,6 +10,7 @@ · 9 unmodified lines
1010 */
1111
1212 /dts-v1/;
13+#include <dt-bindings/gpio/gpio.h>
1314 #include <dt-bindings/input/input.h>
1415 #include "imx25.dtsi"
1516
@@ -114,8 +115,8 @@ · 98 unmodified lines
114115 &esdhc1 {
115116 pinctrl-names = "default";
116117 pinctrl-0 = <&pinctrl_esdhc1>;
117− cd-gpios = <&gpio2 1 0>;
118− wp-gpios = <&gpio2 0 0>;
118+ cd-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
119+ wp-gpios = <&gpio2 0 GPIO_ACTIVE_HIGH>;
119120 status = "okay";
120121 };
121122
arch/arm/boot/dts/imx51-apf51dev.dts+1−1
@@ -98,7 +98,7 @@ · 97 unmodified lines
9898 &esdhc1 {
9999 pinctrl-names = "default";
100100 pinctrl-0 = <&pinctrl_esdhc1>;
101− cd-gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>;
101+ cd-gpios = <&gpio2 29 GPIO_ACTIVE_LOW>;
102102 bus-width = <4>;
103103 status = "okay";
104104 };
arch/arm/boot/dts/imx53-ard.dts+2−2
@@ -103,8 +103,8 @@ · 102 unmodified lines
103103 &esdhc1 {
104104 pinctrl-names = "default";
105105 pinctrl-0 = <&pinctrl_esdhc1>;
106− cd-gpios = <&gpio1 1 0>;
107− wp-gpios = <&gpio1 9 0>;
106+ cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
107+ wp-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
108108 status = "okay";
109109 };
110110
arch/arm/boot/dts/imx53-m53evk.dts+2−2
@@ -124,8 +124,8 @@ · 123 unmodified lines
124124 &esdhc1 {
125125 pinctrl-names = "default";
126126 pinctrl-0 = <&pinctrl_esdhc1>;
127− cd-gpios = <&gpio1 1 0>;
128− wp-gpios = <&gpio1 9 0>;
127+ cd-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
128+ wp-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
129129 status = "okay";
130130 };
131131
arch/arm/boot/dts/imx53-qsb-common.dtsi+2−2
@@ -147,8 +147,8 @@ · 146 unmodified lines
147147 &esdhc3 {
148148 pinctrl-names = "default";
149149 pinctrl-0 = <&pinctrl_esdhc3>;
150− cd-gpios = <&gpio3 11 0>;
151− wp-gpios = <&gpio3 12 0>;
150+ cd-gpios = <&gpio3 11 GPIO_ACTIVE_LOW>;
151+ wp-gpios = <&gpio3 12 GPIO_ACTIVE_HIGH>;
152152 bus-width = <8>;
153153 status = "okay";
154154 };
arch/arm/boot/dts/imx53-smd.dts+2−2
@@ -41,8 +41,8 @@ · 40 unmodified lines
4141 &esdhc1 {
4242 pinctrl-names = "default";
4343 pinctrl-0 = <&pinctrl_esdhc1>;
44− cd-gpios = <&gpio3 13 0>;
45− wp-gpios = <&gpio4 11 0>;
44+ cd-gpios = <&gpio3 13 GPIO_ACTIVE_LOW>;
45+ wp-gpios = <&gpio4 11 GPIO_ACTIVE_HIGH>;
4646 status = "okay";
4747 };
4848
arch/arm/boot/dts/imx53-tqma53.dtsi+2−2
@@ -41,8 +41,8 @@ · 40 unmodified lines
4141 pinctrl-0 = <&pinctrl_esdhc2>,
4242 <&pinctrl_esdhc2_cdwp>;
4343 vmmc-supply = <&reg_3p3v>;
44− wp-gpios = <&gpio1 2 0>;
45− cd-gpios = <&gpio1 4 0>;
44+ wp-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
45+ cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
4646 status = "disabled";
4747 };
4848
arch/arm/boot/dts/imx53-tx53.dtsi+2−2
@@ -183,7 +183,7 @@ · 182 unmodified lines
183183 };
184184
185185 &esdhc1 {
186− cd-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>;
186+ cd-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
187187 fsl,wp-controller;
188188 pinctrl-names = "default";
189189 pinctrl-0 = <&pinctrl_esdhc1>;
@@ -191,7 +191,7 @@ · 1 unmodified line
191191 };
192192
193193 &esdhc2 {
194− cd-gpios = <&gpio3 25 GPIO_ACTIVE_HIGH>;
194+ cd-gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
195195 fsl,wp-controller;
196196 pinctrl-names = "default";
197197 pinctrl-0 = <&pinctrl_esdhc2>;
arch/arm/boot/dts/imx53-voipac-bsb.dts+2−2
@@ -119,8 +119,8 @@ · 118 unmodified lines
119119 &esdhc2 {
120120 pinctrl-names = "default";
121121 pinctrl-0 = <&pinctrl_esdhc2>;
122− cd-gpios = <&gpio3 25 0>;
123− wp-gpios = <&gpio2 19 0>;
122+ cd-gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
123+ wp-gpios = <&gpio2 19 GPIO_ACTIVE_HIGH>;
124124 vmmc-supply = <&reg_3p3v>;
125125 status = "okay";
126126 };
arch/arm/boot/dts/imx6dl-riotboard.dts+4−4
@@ -305,8 +305,8 @@ · 304 unmodified lines
305305 &usdhc2 {
306306 pinctrl-names = "default";
307307 pinctrl-0 = <&pinctrl_usdhc2>;
308− cd-gpios = <&gpio1 4 0>;
309− wp-gpios = <&gpio1 2 0>;
308+ cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
309+ wp-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
310310 vmmc-supply = <&reg_3p3v>;
311311 status = "okay";
312312 };
@@ -314,8 +314,8 @@ · 1 unmodified line
314314 &usdhc3 {
315315 pinctrl-names = "default";
316316 pinctrl-0 = <&pinctrl_usdhc3>;
317− cd-gpios = <&gpio7 0 0>;
318− wp-gpios = <&gpio7 1 0>;
317+ cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
318+ wp-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
319319 vmmc-supply = <&reg_3p3v>;
320320 status = "okay";
321321 };
arch/arm/boot/dts/imx6q-arm2.dts+3−2
@@ -11,6 +11,7 @@ · 10 unmodified lines
1111 */
1212
1313 /dts-v1/;
14+#include <dt-bindings/gpio/gpio.h>
1415 #include "imx6q.dtsi"
1516
1617 / {
@@ -196,8 +197,8 @@ · 179 unmodified lines
196197 };
197198
198199 &usdhc3 {
199− cd-gpios = <&gpio6 11 0>;
200− wp-gpios = <&gpio6 14 0>;
200+ cd-gpios = <&gpio6 11 GPIO_ACTIVE_LOW>;
201+ wp-gpios = <&gpio6 14 GPIO_ACTIVE_HIGH>;
201202 vmmc-supply = <&reg_3p3v>;
202203 pinctrl-names = "default";
203204 pinctrl-0 = <&pinctrl_usdhc3
arch/arm/boot/dts/imx6q-gk802.dts+2−1
@@ -7,6 +7,7 @@ · 6 unmodified lines
77 */
88
99 /dts-v1/;
10+#include <dt-bindings/gpio/gpio.h>
1011 #include "imx6q.dtsi"
1112
1213 / {
@@ -161,7 +162,7 @@ · 148 unmodified lines
161162 pinctrl-names = "default";
162163 pinctrl-0 = <&pinctrl_usdhc3>;
163164 bus-width = <4>;
164− cd-gpios = <&gpio6 11 0>;
165+ cd-gpios = <&gpio6 11 GPIO_ACTIVE_LOW>;
165166 vmmc-supply = <&reg_3p3v>;
166167 status = "okay";
167168 };
arch/arm/boot/dts/imx6q-tbs2910.dts+2−2
@@ -251,7 +251,7 @@ · 250 unmodified lines
251251 pinctrl-names = "default";
252252 pinctrl-0 = <&pinctrl_usdhc2>;
253253 bus-width = <4>;
254− cd-gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
254+ cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
255255 vmmc-supply = <&reg_3p3v>;
256256 status = "okay";
257257 };
@@ -260,7 +260,7 @@ · 2 unmodified lines
260260 pinctrl-names = "default";
261261 pinctrl-0 = <&pinctrl_usdhc3>;
262262 bus-width = <4>;
263− cd-gpios = <&gpio2 0 GPIO_ACTIVE_HIGH>;
263+ cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
264264 wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
265265 vmmc-supply = <&reg_3p3v>;
266266 status = "okay";
arch/arm/boot/dts/imx6qdl-aristainetos.dtsi+2−2
@@ -173,7 +173,7 @@ · 172 unmodified lines
173173 pinctrl-names = "default";
174174 pinctrl-0 = <&pinctrl_usdhc1>;
175175 vmmc-supply = <&reg_3p3v>;
176− cd-gpios = <&gpio4 7 GPIO_ACTIVE_HIGH>;
176+ cd-gpios = <&gpio4 7 GPIO_ACTIVE_LOW>;
177177 status = "okay";
178178 };
179179
@@ -181,7 +181,7 @@ · 1 unmodified line
181181 pinctrl-names = "default";
182182 pinctrl-0 = <&pinctrl_usdhc2>;
183183 vmmc-supply = <&reg_3p3v>;
184− cd-gpios = <&gpio4 8 GPIO_ACTIVE_HIGH>;
184+ cd-gpios = <&gpio4 8 GPIO_ACTIVE_LOW>;
185185 status = "okay";
186186 };
187187
arch/arm/boot/dts/imx6qdl-aristainetos2.dtsi+2−2
@@ -392,7 +392,7 @@ · 391 unmodified lines
392392 &usdhc1 {
393393 pinctrl-names = "default";
394394 pinctrl-0 = <&pinctrl_usdhc1>;
395− cd-gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>;
395+ cd-gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
396396 no-1-8-v;
397397 status = "okay";
398398 };
@@ -400,7 +400,7 @@ · 1 unmodified line
400400 &usdhc2 {
401401 pinctrl-names = "default";
402402 pinctrl-0 = <&pinctrl_usdhc2>;
403− cd-gpios = <&gpio4 5 GPIO_ACTIVE_HIGH>;
403+ cd-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>;
404404 wp-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
405405 no-1-8-v;
406406 status = "okay";
arch/arm/boot/dts/imx6qdl-cubox-i.dtsi+1−1
@@ -258,6 +258,6 @@ · 257 unmodified lines
258258 pinctrl-names = "default";
259259 pinctrl-0 = <&pinctrl_cubox_i_usdhc2_aux &pinctrl_cubox_i_usdhc2>;
260260 vmmc-supply = <&reg_3p3v>;
261− cd-gpios = <&gpio1 4 0>;
261+ cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
262262 status = "okay";
263263 };
arch/arm/boot/dts/imx6qdl-dfi-fs700-m60.dtsi+3−1
@@ -1,3 +1,5 @@
1+#include <dt-bindings/gpio/gpio.h>
2+
13 / {
24 regulators {
35 compatible = "simple-bus";
@@ -181,7 +183,7 @@ · 177 unmodified lines
181183 &usdhc2 { /* module slot */
182184 pinctrl-names = "default";
183185 pinctrl-0 = <&pinctrl_usdhc2>;
184− cd-gpios = <&gpio2 2 0>;
186+ cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
185187 status = "okay";
186188 };
187189
arch/arm/boot/dts/imx6qdl-gw52xx.dtsi+1−1
@@ -318,7 +318,7 @@ · 317 unmodified lines
318318 &usdhc3 {
319319 pinctrl-names = "default";
320320 pinctrl-0 = <&pinctrl_usdhc3>;
321− cd-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
321+ cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
322322 vmmc-supply = <&reg_3p3v>;
323323 status = "okay";
324324 };
arch/arm/boot/dts/imx6qdl-gw53xx.dtsi+1−1
@@ -324,7 +324,7 @@ · 323 unmodified lines
324324 &usdhc3 {
325325 pinctrl-names = "default";
326326 pinctrl-0 = <&pinctrl_usdhc3>;
327− cd-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
327+ cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
328328 vmmc-supply = <&reg_3p3v>;
329329 status = "okay";
330330 };
arch/arm/boot/dts/imx6qdl-gw54xx.dtsi+1−1
@@ -417,7 +417,7 @@ · 416 unmodified lines
417417 &usdhc3 {
418418 pinctrl-names = "default";
419419 pinctrl-0 = <&pinctrl_usdhc3>;
420− cd-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
420+ cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
421421 vmmc-supply = <&reg_3p3v>;
422422 status = "okay";
423423 };
arch/arm/boot/dts/imx6qdl-hummingboard.dtsi+1−1
@@ -299,6 +299,6 @@ · 298 unmodified lines
299299 &pinctrl_hummingboard_usdhc2
300300 >;
301301 vmmc-supply = <&reg_3p3v>;
302− cd-gpios = <&gpio1 4 0>;
302+ cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
303303 status = "okay";
304304 };
arch/arm/boot/dts/imx6qdl-nitrogen6x.dtsi+2−2
@@ -453,7 +453,7 @@ · 452 unmodified lines
453453 &usdhc3 {
454454 pinctrl-names = "default";
455455 pinctrl-0 = <&pinctrl_usdhc3>;
456− cd-gpios = <&gpio7 0 0>;
456+ cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
457457 vmmc-supply = <&reg_3p3v>;
458458 status = "okay";
459459 };
@@ -461,7 +461,7 @@ · 1 unmodified line
461461 &usdhc4 {
462462 pinctrl-names = "default";
463463 pinctrl-0 = <&pinctrl_usdhc4>;
464− cd-gpios = <&gpio2 6 0>;
464+ cd-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
465465 vmmc-supply = <&reg_3p3v>;
466466 status = "okay";
467467 };
arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi+4−4
@@ -409,8 +409,8 @@ · 408 unmodified lines
409409 &usdhc2 {
410410 pinctrl-names = "default";
411411 pinctrl-0 = <&pinctrl_usdhc2>;
412− cd-gpios = <&gpio1 4 0>;
413− wp-gpios = <&gpio1 2 0>;
412+ cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
413+ wp-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
414414 status = "disabled";
415415 };
416416
@@ -418,7 +418,7 @@ · 1 unmodified line
418418 pinctrl-names = "default";
419419 pinctrl-0 = <&pinctrl_usdhc3
420420 &pinctrl_usdhc3_cdwp>;
421− cd-gpios = <&gpio1 27 0>;
422− wp-gpios = <&gpio1 29 0>;
421+ cd-gpios = <&gpio1 27 GPIO_ACTIVE_LOW>;
422+ wp-gpios = <&gpio1 29 GPIO_ACTIVE_HIGH>;
423423 status = "disabled";
424424 };
arch/arm/boot/dts/imx6qdl-rex.dtsi+2−2
@@ -342,7 +342,7 @@ · 341 unmodified lines
342342 pinctrl-0 = <&pinctrl_usdhc2>;
343343 bus-width = <4>;
344344 cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
345− wp-gpios = <&gpio2 3 GPIO_ACTIVE_LOW>;
345+ wp-gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
346346 status = "okay";
347347 };
348348
@@ -351,6 +351,6 @@ · 2 unmodified lines
351351 pinctrl-0 = <&pinctrl_usdhc3>;
352352 bus-width = <4>;
353353 cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
354− wp-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
354+ wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
355355 status = "okay";
356356 };
arch/arm/boot/dts/imx6qdl-sabreauto.dtsi+2−2
@@ -467,8 +467,8 @@ · 466 unmodified lines
467467 pinctrl-0 = <&pinctrl_usdhc3>;
468468 pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
469469 pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
470− cd-gpios = <&gpio6 15 0>;
471− wp-gpios = <&gpio1 13 0>;
470+ cd-gpios = <&gpio6 15 GPIO_ACTIVE_LOW>;
471+ wp-gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
472472 status = "okay";
473473 };
474474
arch/arm/boot/dts/imx6qdl-sabrelite.dtsi+3−3
@@ -448,8 +448,8 @@ · 447 unmodified lines
448448 &usdhc3 {
449449 pinctrl-names = "default";
450450 pinctrl-0 = <&pinctrl_usdhc3>;
451− cd-gpios = <&gpio7 0 0>;
452− wp-gpios = <&gpio7 1 0>;
451+ cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
452+ wp-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
453453 vmmc-supply = <&reg_3p3v>;
454454 status = "okay";
455455 };
@@ -457,7 +457,7 @@ · 1 unmodified line
457457 &usdhc4 {
458458 pinctrl-names = "default";
459459 pinctrl-0 = <&pinctrl_usdhc4>;
460− cd-gpios = <&gpio2 6 0>;
460+ cd-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
461461 vmmc-supply = <&reg_3p3v>;
462462 status = "okay";
463463 };
arch/arm/boot/dts/imx6qdl-sabresd.dtsi+4−4
@@ -562,8 +562,8 @@ · 561 unmodified lines
562562 pinctrl-names = "default";
563563 pinctrl-0 = <&pinctrl_usdhc2>;
564564 bus-width = <8>;
565− cd-gpios = <&gpio2 2 0>;
566− wp-gpios = <&gpio2 3 0>;
565+ cd-gpios = <&gpio2 2 GPIO_ACTIVE_LOW>;
566+ wp-gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
567567 status = "okay";
568568 };
569569
@@ -571,8 +571,8 @@ · 1 unmodified line
571571 pinctrl-names = "default";
572572 pinctrl-0 = <&pinctrl_usdhc3>;
573573 bus-width = <8>;
574− cd-gpios = <&gpio2 0 0>;
575− wp-gpios = <&gpio2 1 0>;
574+ cd-gpios = <&gpio2 0 GPIO_ACTIVE_LOW>;
575+ wp-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
576576 status = "okay";
577577 };
578578
arch/arm/boot/dts/imx6qdl-tx6.dtsi+2−2
@@ -680,7 +680,7 @@ · 679 unmodified lines
680680 pinctrl-0 = <&pinctrl_usdhc1>;
681681 bus-width = <4>;
682682 no-1-8-v;
683− cd-gpios = <&gpio7 2 0>;
683+ cd-gpios = <&gpio7 2 GPIO_ACTIVE_LOW>;
684684 fsl,wp-controller;
685685 status = "okay";
686686 };
@@ -690,7 +690,7 @@ · 3 unmodified lines
690690 pinctrl-0 = <&pinctrl_usdhc2>;
691691 bus-width = <4>;
692692 no-1-8-v;
693− cd-gpios = <&gpio7 3 0>;
693+ cd-gpios = <&gpio7 3 GPIO_ACTIVE_LOW>;
694694 fsl,wp-controller;
695695 status = "okay";
696696 };
arch/arm/boot/dts/imx6qdl-wandboard.dtsi+4−2
@@ -9,6 +9,8 @@ · 8 unmodified lines
99 *
1010 */
1111
12+#include <dt-bindings/gpio/gpio.h>
13+
1214 / {
1315 regulators {
1416 compatible = "simple-bus";
@@ -250,13 +252,13 @@ · 235 unmodified lines
250252 &usdhc1 {
251253 pinctrl-names = "default";
252254 pinctrl-0 = <&pinctrl_usdhc1>;
253− cd-gpios = <&gpio1 2 0>;
255+ cd-gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
254256 status = "okay";
255257 };
256258
257259 &usdhc3 {
258260 pinctrl-names = "default";
259261 pinctrl-0 = <&pinctrl_usdhc3>;
260− cd-gpios = <&gpio3 9 0>;
262+ cd-gpios = <&gpio3 9 GPIO_ACTIVE_LOW>;
261263 status = "okay";
262264 };
arch/arm/boot/dts/imx6sl-evk.dts+5−5
@@ -617,8 +617,8 @@ · 616 unmodified lines
617617 pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
618618 pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
619619 bus-width = <8>;
620− cd-gpios = <&gpio4 7 0>;
621− wp-gpios = <&gpio4 6 0>;
620+ cd-gpios = <&gpio4 7 GPIO_ACTIVE_LOW>;
621+ wp-gpios = <&gpio4 6 GPIO_ACTIVE_HIGH>;
622622 status = "okay";
623623 };
624624
@@ -627,8 +627,8 @@ · 2 unmodified lines
627627 pinctrl-0 = <&pinctrl_usdhc2>;
628628 pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
629629 pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
630− cd-gpios = <&gpio5 0 0>;
631− wp-gpios = <&gpio4 29 0>;
630+ cd-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
631+ wp-gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>;
632632 status = "okay";
633633 };
634634
@@ -637,6 +637,6 @@ · 2 unmodified lines
637637 pinctrl-0 = <&pinctrl_usdhc3>;
638638 pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
639639 pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
640− cd-gpios = <&gpio3 22 0>;
640+ cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
641641 status = "okay";
642642 };
arch/arm/boot/dts/imx6sx-sabreauto.dts+2−2
@@ -49,7 +49,7 @@ · 48 unmodified lines
4949 pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
5050 pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
5151 bus-width = <8>;
52− cd-gpios = <&gpio7 10 GPIO_ACTIVE_HIGH>;
52+ cd-gpios = <&gpio7 10 GPIO_ACTIVE_LOW>;
5353 wp-gpios = <&gpio3 19 GPIO_ACTIVE_HIGH>;
5454 keep-power-in-suspend;
5555 enable-sdio-wakeup;
@@ -61,7 +61,7 @@ · 5 unmodified lines
6161 pinctrl-names = "default";
6262 pinctrl-0 = <&pinctrl_usdhc4>;
6363 bus-width = <8>;
64− cd-gpios = <&gpio7 11 GPIO_ACTIVE_HIGH>;
64+ cd-gpios = <&gpio7 11 GPIO_ACTIVE_LOW>;
6565 no-1-8-v;
6666 keep-power-in-suspend;
6767 enable-sdio-wakup;
arch/arm/boot/dts/imx6sx-sdb.dtsi+2−2
@@ -293,7 +293,7 @@ · 292 unmodified lines
293293 pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
294294 pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
295295 bus-width = <8>;
296− cd-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>;
296+ cd-gpios = <&gpio2 10 GPIO_ACTIVE_LOW>;
297297 wp-gpios = <&gpio2 15 GPIO_ACTIVE_HIGH>;
298298 keep-power-in-suspend;
299299 enable-sdio-wakeup;
@@ -304,7 +304,7 @@ · 4 unmodified lines
304304 &usdhc4 {
305305 pinctrl-names = "default";
306306 pinctrl-0 = <&pinctrl_usdhc4>;
307− cd-gpios = <&gpio6 21 GPIO_ACTIVE_HIGH>;
307+ cd-gpios = <&gpio6 21 GPIO_ACTIVE_LOW>;
308308 wp-gpios = <&gpio6 20 GPIO_ACTIVE_HIGH>;
309309 status = "okay";
310310 };
arch/arm/boot/dts/imx7d-sdb.dts+2−2
@@ -234,8 +234,8 @@ · 233 unmodified lines
234234 &usdhc1 {
235235 pinctrl-names = "default";
236236 pinctrl-0 = <&pinctrl_usdhc1>;
237− cd-gpios = <&gpio5 0 0>;
238− wp-gpios = <&gpio5 1 0>;
237+ cd-gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
238+ wp-gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
239239 enable-sdio-wakeup;
240240 keep-power-in-suspend;
241241 status = "okay";
arch/arm/net/bpf_jit_32.c+44−13
@@ -74,32 +74,52 @@ struct jit_ctx { · 73 unmodified lines
7474
7575 int bpf_jit_enable __read_mostly;
7676
77−static u64 jit_get_skb_b(struct sk_buff *skb, unsigned offset)
77+static inline int call_neg_helper(struct sk_buff *skb, int offset, void *ret,
78+ unsigned int size)
79+{
80+ void *ptr = bpf_internal_load_pointer_neg_helper(skb, offset, size);
81+
82+ if (!ptr)
83+ return -EFAULT;
84+ memcpy(ret, ptr, size);
85+ return 0;
86+}
87+
88+static u64 jit_get_skb_b(struct sk_buff *skb, int offset)
7889 {
7990 u8 ret;
8091 int err;
8192
82− err = skb_copy_bits(skb, offset, &ret, 1);
93+ if (offset < 0)
94+ err = call_neg_helper(skb, offset, &ret, 1);
95+ else
96+ err = skb_copy_bits(skb, offset, &ret, 1);
8397
8498 return (u64)err << 32 | ret;
8599 }
86100
87−static u64 jit_get_skb_h(struct sk_buff *skb, unsigned offset)
101+static u64 jit_get_skb_h(struct sk_buff *skb, int offset)
88102 {
89103 u16 ret;
90104 int err;
91105
92− err = skb_copy_bits(skb, offset, &ret, 2);
106+ if (offset < 0)
107+ err = call_neg_helper(skb, offset, &ret, 2);
108+ else
109+ err = skb_copy_bits(skb, offset, &ret, 2);
93110
94111 return (u64)err << 32 | ntohs(ret);
95112 }
96113
97−static u64 jit_get_skb_w(struct sk_buff *skb, unsigned offset)
114+static u64 jit_get_skb_w(struct sk_buff *skb, int offset)
98115 {
99116 u32 ret;
100117 int err;
101118
102− err = skb_copy_bits(skb, offset, &ret, 4);
119+ if (offset < 0)
120+ err = call_neg_helper(skb, offset, &ret, 4);
121+ else
122+ err = skb_copy_bits(skb, offset, &ret, 4);
103123
104124 return (u64)err << 32 | ntohl(ret);
105125 }
@@ -536,9 +556,6 @@ static int build_body(struct jit_ctx *ctx) · 430 unmodified lines
536556 case BPF_LD | BPF_B | BPF_ABS:
537557 load_order = 0;
538558 load:
539− /* the interpreter will deal with the negative K */
540− if ((int)k < 0)
541− return -ENOTSUPP;
542559 emit_mov_i(r_off, k, ctx);
543560 load_common:
544561 ctx->seen |= SEEN_DATA | SEEN_CALL;
@@ -547,12 +564,24 @@ load_common: · 2 unmodified lines
547564 emit(ARM_SUB_I(r_scratch, r_skb_hl,
548565 1 << load_order), ctx);
549566 emit(ARM_CMP_R(r_scratch, r_off), ctx);
550− condt = ARM_COND_HS;
567+ condt = ARM_COND_GE;
551568 } else {
552569 emit(ARM_CMP_R(r_skb_hl, r_off), ctx);
553570 condt = ARM_COND_HI;
554571 }
555572
573+ /*
574+ * test for negative offset, only if we are
575+ * currently scheduled to take the fast
576+ * path. this will update the flags so that
577+ * the slowpath instruction are ignored if the
578+ * offset is negative.
579+ *
580+ * for loard_order == 0 the HI condition will
581+ * make loads at offset 0 take the slow path too.
582+ */
583+ _emit(condt, ARM_CMP_I(r_off, 0), ctx);
584+
556585 _emit(condt, ARM_ADD_R(r_scratch, r_off, r_skb_data),
557586 ctx);
558587
@@ -860,9 +889,11 @@ b_epilogue: · 301 unmodified lines
860889 off = offsetof(struct sk_buff, vlan_tci);
861890 emit(ARM_LDRH_I(r_A, r_skb, off), ctx);
862891 if (code == (BPF_ANC | SKF_AD_VLAN_TAG))
863− OP_IMM3(ARM_AND, r_A, r_A, VLAN_VID_MASK, ctx);
864− else
865− OP_IMM3(ARM_AND, r_A, r_A, VLAN_TAG_PRESENT, ctx);
892+ OP_IMM3(ARM_AND, r_A, r_A, ~VLAN_TAG_PRESENT, ctx);
893+ else {
894+ OP_IMM3(ARM_LSR, r_A, r_A, 12, ctx);
895+ OP_IMM3(ARM_AND, r_A, r_A, 0x1, ctx);
896+ }
866897 break;
867898 case BPF_ANC | SKF_AD_QUEUE:
868899 ctx->seen |= SEEN_SKB;
arch/arm64/kernel/entry.S+3−2
@@ -585,7 +585,8 @@ ENDPROC(el0_irq) · 584 unmodified lines
585585 *
586586 */
587587 ENTRY(cpu_switch_to)
588− add x8, x0, #THREAD_CPU_CONTEXT
588+ mov x10, #THREAD_CPU_CONTEXT
589+ add x8, x0, x10
589590 mov x9, sp
590591 stp x19, x20, [x8], #16 // store callee-saved registers
591592 stp x21, x22, [x8], #16
@@ -594,7 +595,7 @@ ENTRY(cpu_switch_to) · 2 unmodified lines
594595 stp x27, x28, [x8], #16
595596 stp x29, x9, [x8], #16
596597 str lr, [x8]
597− add x8, x1, #THREAD_CPU_CONTEXT
598+ add x8, x1, x10
598599 ldp x19, x20, [x8], #16 // restore callee-saved registers
599600 ldp x21, x22, [x8], #16
600601 ldp x23, x24, [x8], #16
arch/arm64/kernel/irq.c+2−2
@@ -61,7 +61,7 @@ void __init init_IRQ(void) · 60 unmodified lines
6161 static bool migrate_one_irq(struct irq_desc *desc)
6262 {
6363 struct irq_data *d = irq_desc_get_irq_data(desc);
64− const struct cpumask *affinity = d->affinity;
64+ const struct cpumask *affinity = irq_data_get_affinity_mask(d);
6565 struct irq_chip *c;
6666 bool ret = false;
6767
@@ -81,7 +81,7 @@ static bool migrate_one_irq(struct irq_desc *desc) · 13 unmodified lines
8181 if (!c->irq_set_affinity)
8282 pr_debug("IRQ%u: unable to set affinity\n", d->irq);
8383 else if (c->irq_set_affinity(d, affinity, false) == IRQ_SET_MASK_OK && ret)
84− cpumask_copy(d->affinity, affinity);
84+ cpumask_copy(irq_data_get_affinity_mask(d), affinity);
8585
8686 return ret;
8787 }
arch/avr32/kernel/time.c+33−32
@@ -18,6 +18,7 @@ · 17 unmodified lines
1818
1919 #include <mach/pm.h>
2020
21+static bool disable_cpu_idle_poll;
2122
2223 static cycle_t read_cycle_count(struct clocksource *cs)
2324 {
@@ -80,45 +81,45 @@ static int comparator_next_event(unsigned long delta, · 56 unmodified lines
8081 return 0;
8182 }
8283
83−static void comparator_mode(enum clock_event_mode mode,
84− struct clock_event_device *evdev)
84+static int comparator_shutdown(struct clock_event_device *evdev)
8585 {
86− switch (mode) {
87− case CLOCK_EVT_MODE_ONESHOT:
88− pr_debug("%s: start\n", evdev->name);
89− /* FALLTHROUGH */
90− case CLOCK_EVT_MODE_RESUME:
86+ pr_debug("%s: %s\n", __func__, evdev->name);
87+ sysreg_write(COMPARE, 0);
88+
89+ if (disable_cpu_idle_poll) {
90+ disable_cpu_idle_poll = false;
9191 /*
92− * If we're using the COUNT and COMPARE registers we
93− * need to force idle poll.
92+ * Only disable idle poll if we have forced that
93+ * in a previous call.
9494 */
95− cpu_idle_poll_ctrl(true);
96− break;
97− case CLOCK_EVT_MODE_UNUSED:
98− case CLOCK_EVT_MODE_SHUTDOWN:
99− sysreg_write(COMPARE, 0);
100− pr_debug("%s: stop\n", evdev->name);
101− if (evdev->mode == CLOCK_EVT_MODE_ONESHOT ||
102− evdev->mode == CLOCK_EVT_MODE_RESUME) {
103− /*
104− * Only disable idle poll if we have forced that
105− * in a previous call.
106− */
107− cpu_idle_poll_ctrl(false);
108− }
109− break;
110− default:
111− BUG();
95+ cpu_idle_poll_ctrl(false);
11296 }
97+ return 0;
98+}
99+
100+static int comparator_set_oneshot(struct clock_event_device *evdev)
101+{
102+ pr_debug("%s: %s\n", __func__, evdev->name);
103+
104+ disable_cpu_idle_poll = true;
105+ /*
106+ * If we're using the COUNT and COMPARE registers we
107+ * need to force idle poll.
108+ */
109+ cpu_idle_poll_ctrl(true);
110+
111+ return 0;
113112 }
114113
115114 static struct clock_event_device comparator = {
116− .name = "avr32_comparator",
117− .features = CLOCK_EVT_FEAT_ONESHOT,
118− .shift = 16,
119− .rating = 50,
120− .set_next_event = comparator_next_event,
121− .set_mode = comparator_mode,
115+ .name = "avr32_comparator",
116+ .features = CLOCK_EVT_FEAT_ONESHOT,
117+ .shift = 16,
118+ .rating = 50,
119+ .set_next_event = comparator_next_event,
120+ .set_state_shutdown = comparator_shutdown,
121+ .set_state_oneshot = comparator_set_oneshot,
122+ .tick_resume = comparator_set_oneshot,
122123 };
123124
124125 void read_persistent_clock(struct timespec *ts)
arch/m32r/include/asm/io.h+5−0
@@ -174,6 +174,11 @@ static inline void _writel(unsigned long l, unsigned long addr) · 173 unmodified lines
174174 #define iowrite16 writew
175175 #define iowrite32 writel
176176
177+#define ioread16be(addr) be16_to_cpu(readw(addr))
178+#define ioread32be(addr) be32_to_cpu(readl(addr))
179+#define iowrite16be(v, addr) writew(cpu_to_be16(v), (addr))
180+#define iowrite32be(v, addr) writel(cpu_to_be32(v), (addr))
181+
177182 #define mmiowb()
178183
179184 #define flush_write_buffers() do { } while (0) /* M32R_FIXME */
arch/s390/kernel/asm-offsets.c+7−8
@@ -23,15 +23,15 @@ · 22 unmodified lines
2323
2424 int main(void)
2525 {
26− DEFINE(__THREAD_info, offsetof(struct task_struct, stack));
27− DEFINE(__THREAD_ksp, offsetof(struct task_struct, thread.ksp));
28− DEFINE(__THREAD_mm_segment, offsetof(struct task_struct, thread.mm_segment));
29− BLANK();
26+ DEFINE(__TASK_thread_info, offsetof(struct task_struct, stack));
27+ DEFINE(__TASK_thread, offsetof(struct task_struct, thread));
3028 DEFINE(__TASK_pid, offsetof(struct task_struct, pid));
3129 BLANK();
32− DEFINE(__THREAD_per_cause, offsetof(struct task_struct, thread.per_event.cause));
33− DEFINE(__THREAD_per_address, offsetof(struct task_struct, thread.per_event.address));
34− DEFINE(__THREAD_per_paid, offsetof(struct task_struct, thread.per_event.paid));
30+ DEFINE(__THREAD_ksp, offsetof(struct thread_struct, ksp));
31+ DEFINE(__THREAD_per_cause, offsetof(struct thread_struct, per_event.cause));
32+ DEFINE(__THREAD_per_address, offsetof(struct thread_struct, per_event.address));
33+ DEFINE(__THREAD_per_paid, offsetof(struct thread_struct, per_event.paid));
34+ DEFINE(__THREAD_trap_tdb, offsetof(struct thread_struct, trap_tdb));
3535 BLANK();
3636 DEFINE(__TI_task, offsetof(struct thread_info, task));
3737 DEFINE(__TI_flags, offsetof(struct thread_info, flags));
@@ -176,7 +176,6 @@ int main(void) · 138 unmodified lines
176176 DEFINE(__LC_VDSO_PER_CPU, offsetof(struct _lowcore, vdso_per_cpu_data));
177177 DEFINE(__LC_GMAP, offsetof(struct _lowcore, gmap));
178178 DEFINE(__LC_PGM_TDB, offsetof(struct _lowcore, pgm_tdb));
179− DEFINE(__THREAD_trap_tdb, offsetof(struct task_struct, thread.trap_tdb));
180179 DEFINE(__GMAP_ASCE, offsetof(struct gmap, asce));
181180 DEFINE(__SIE_PROG0C, offsetof(struct kvm_s390_sie_block, prog0c));
182181 DEFINE(__SIE_PROG20, offsetof(struct kvm_s390_sie_block, prog20));
arch/s390/kernel/entry.S+9−4
@@ -178,17 +178,21 @@ _PIF_WORK = (_PIF_PER_TRAP) · 177 unmodified lines
178178 */
179179 ENTRY(__switch_to)
180180 stmg %r6,%r15,__SF_GPRS(%r15) # store gprs of prev task
181− stg %r15,__THREAD_ksp(%r2) # store kernel stack of prev
182− lg %r4,__THREAD_info(%r2) # get thread_info of prev
183− lg %r5,__THREAD_info(%r3) # get thread_info of next
181+ lgr %r1,%r2
182+ aghi %r1,__TASK_thread # thread_struct of prev task
183+ lg %r4,__TASK_thread_info(%r2) # get thread_info of prev
184+ lg %r5,__TASK_thread_info(%r3) # get thread_info of next
185+ stg %r15,__THREAD_ksp(%r1) # store kernel stack of prev
186+ lgr %r1,%r3
187+ aghi %r1,__TASK_thread # thread_struct of next task
184188 lgr %r15,%r5
185189 aghi %r15,STACK_INIT # end of kernel stack of next
186190 stg %r3,__LC_CURRENT # store task struct of next
187191 stg %r5,__LC_THREAD_INFO # store thread info of next
188192 stg %r15,__LC_KERNEL_STACK # store end of kernel stack
193+ lg %r15,__THREAD_ksp(%r1) # load kernel stack of next
189194 lctl %c4,%c4,__TASK_pid(%r3) # load pid to control reg. 4
190195 mvc __LC_CURRENT_PID+4(4,%r0),__TASK_pid(%r3) # store pid of next
191− lg %r15,__THREAD_ksp(%r3) # load kernel stack of next
192196 lmg %r6,%r15,__SF_GPRS(%r15) # load gprs of next task
193197 br %r14
194198
@@ -417,6 +421,7 @@ ENTRY(pgm_check_handler) · 222 unmodified lines
417421 LAST_BREAK %r14
418422 lg %r15,__LC_KERNEL_STACK
419423 lg %r14,__TI_task(%r12)
424+ aghi %r14,__TASK_thread # pointer to thread_struct
420425 lghi %r13,__LC_PGM_TDB
421426 tm __LC_PGM_ILC+2,0x02 # check for transaction abort
422427 jz 2f
arch/s390/kernel/traps.c+2−2
@@ -259,7 +259,7 @@ void vector_exception(struct pt_regs *regs) · 258 unmodified lines
259259 }
260260
261261 /* get vector interrupt code from fpc */
262− asm volatile("stfpc %0" : "=m" (current->thread.fp_regs.fpc));
262+ asm volatile("stfpc %0" : "=Q" (current->thread.fp_regs.fpc));
263263 vic = (current->thread.fp_regs.fpc & 0xf00) >> 8;
264264 switch (vic) {
265265 case 1: /* invalid vector operation */
@@ -297,7 +297,7 @@ void data_exception(struct pt_regs *regs) · 31 unmodified lines
297297
298298 location = get_trap_ip(regs);
299299
300− asm volatile("stfpc %0" : "=m" (current->thread.fp_regs.fpc));
300+ asm volatile("stfpc %0" : "=Q" (current->thread.fp_regs.fpc));
301301 /* Check for vector register enablement */
302302 if (MACHINE_HAS_VX && !current->thread.vxrs &&
303303 (current->thread.fp_regs.fpc & FPC_DXC_MASK) == 0xfe00) {
arch/tile/kernel/setup.c+1−1
@@ -1139,7 +1139,7 @@ static void __init load_hv_initrd(void) · 1138 unmodified lines
11391139
11401140 void __init free_initrd_mem(unsigned long begin, unsigned long end)
11411141 {
1142− free_bootmem(__pa(begin), end - begin);
1142+ free_bootmem_late(__pa(begin), end - begin);
11431143 }
11441144
11451145 static int __init setup_initrd(char *str)
arch/x86/entry/entry_64_compat.S+9−5
@@ -205,7 +205,6 @@ sysexit_from_sys_call: · 204 unmodified lines
205205 movl RDX(%rsp), %edx /* arg3 */
206206 movl RSI(%rsp), %ecx /* arg4 */
207207 movl RDI(%rsp), %r8d /* arg5 */
208− movl %ebp, %r9d /* arg6 */
209208 .endm
210209
211210 .macro auditsys_exit exit
@@ -236,6 +235,7 @@ sysexit_from_sys_call: · 24 unmodified lines
236235
237236 sysenter_auditsys:
238237 auditsys_entry_common
238+ movl %ebp, %r9d /* reload 6th syscall arg */
239239 jmp sysenter_dispatch
240240
241241 sysexit_audit:
@@ -336,7 +336,7 @@ ENTRY(entry_SYSCALL_compat) · 94 unmodified lines
336336 * 32-bit zero extended:
337337 */
338338 ASM_STAC
339−1: movl (%r8), %ebp
339+1: movl (%r8), %r9d
340340 _ASM_EXTABLE(1b, ia32_badarg)
341341 ASM_CLAC
342342 orl $TS_COMPAT, ASM_THREAD_INFO(TI_status, %rsp, SIZEOF_PTREGS)
@@ -346,7 +346,7 @@ ENTRY(entry_SYSCALL_compat) · 3 unmodified lines
346346 cstar_do_call:
347347 /* 32-bit syscall -> 64-bit C ABI argument conversion */
348348 movl %edi, %r8d /* arg5 */
349− movl %ebp, %r9d /* arg6 */
349+ /* r9 already loaded */ /* arg6 */
350350 xchg %ecx, %esi /* rsi:arg2, rcx:arg4 */
351351 movl %ebx, %edi /* arg1 */
352352 movl %edx, %edx /* arg3 (zero extension) */
@@ -358,7 +358,6 @@ cstar_dispatch: · 5 unmodified lines
358358 call *ia32_sys_call_table(, %rax, 8)
359359 movq %rax, RAX(%rsp)
360360 1:
361− movl RCX(%rsp), %ebp
362361 DISABLE_INTERRUPTS(CLBR_NONE)
363362 TRACE_IRQS_OFF
364363 testl $_TIF_ALLWORK_MASK, ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
@@ -392,7 +391,9 @@ sysretl_from_sys_call: · 27 unmodified lines
392391
393392 #ifdef CONFIG_AUDITSYSCALL
394393 cstar_auditsys:
394+ movl %r9d, R9(%rsp) /* register to be clobbered by call */
395395 auditsys_entry_common
396+ movl R9(%rsp), %r9d /* reload 6th syscall arg */
396397 jmp cstar_dispatch
397398
398399 sysretl_audit:
@@ -404,14 +405,16 @@ cstar_tracesys: · 5 unmodified lines
404405 testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT), ASM_THREAD_INFO(TI_flags, %rsp, SIZEOF_PTREGS)
405406 jz cstar_auditsys
406407 #endif
408+ xchgl %r9d, %ebp
407409 SAVE_EXTRA_REGS
408410 xorl %eax, %eax /* Do not leak kernel information */
409411 movq %rax, R11(%rsp)
410412 movq %rax, R10(%rsp)
411− movq %rax, R9(%rsp)
413+ movq %r9, R9(%rsp)
412414 movq %rax, R8(%rsp)
413415 movq %rsp, %rdi /* &pt_regs -> arg1 */
414416 call syscall_trace_enter
417+ movl R9(%rsp), %r9d
415418
416419 /* Reload arg registers from stack. (see sysenter_tracesys) */
417420 movl RCX(%rsp), %ecx
@@ -421,6 +424,7 @@ cstar_tracesys: · 3 unmodified lines
421424 movl %eax, %eax /* zero extension */
422425
423426 RESTORE_EXTRA_REGS
427+ xchgl %ebp, %r9d
424428 jmp cstar_do_call
425429 END(entry_SYSCALL_compat)
426430
arch/x86/include/uapi/asm/kvm.h+2−2
@@ -354,7 +354,7 @@ struct kvm_xcrs { · 353 unmodified lines
354354 struct kvm_sync_regs {
355355 };
356356
357−#define KVM_QUIRK_LINT0_REENABLED (1 << 0)
358−#define KVM_QUIRK_CD_NW_CLEARED (1 << 1)
357+#define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0)
358+#define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1)
359359
360360 #endif /* _ASM_X86_KVM_H */
arch/x86/kernel/cpu/perf_event_intel_cqm.c+8−0
@@ -951,6 +951,14 @@ static u64 intel_cqm_event_count(struct perf_event *event) · 950 unmodified lines
951951 if (!cqm_group_leader(event))
952952 return 0;
953953
954+ /*
955+ * Getting up-to-date values requires an SMP IPI which is not
956+ * possible if we're being called in interrupt context. Return
957+ * the cached values instead.
958+ */
959+ if (unlikely(in_interrupt()))
960+ goto out;
961+
954962 /*
955963 * Notice that we don't perform the reading of an RMID
956964 * atomically, because we can't hold a spin lock across the
arch/x86/kernel/fpu/init.c+6−0
@@ -351,9 +351,15 @@ static int __init x86_noxsave_setup(char *s) · 350 unmodified lines
351351
352352 setup_clear_cpu_cap(X86_FEATURE_XSAVE);
353353 setup_clear_cpu_cap(X86_FEATURE_XSAVEOPT);
354+ setup_clear_cpu_cap(X86_FEATURE_XSAVEC);
354355 setup_clear_cpu_cap(X86_FEATURE_XSAVES);
355356 setup_clear_cpu_cap(X86_FEATURE_AVX);
356357 setup_clear_cpu_cap(X86_FEATURE_AVX2);
358+ setup_clear_cpu_cap(X86_FEATURE_AVX512F);
359+ setup_clear_cpu_cap(X86_FEATURE_AVX512PF);
360+ setup_clear_cpu_cap(X86_FEATURE_AVX512ER);
361+ setup_clear_cpu_cap(X86_FEATURE_AVX512CD);
362+ setup_clear_cpu_cap(X86_FEATURE_MPX);
357363
358364 return 1;
359365 }
arch/x86/kvm/lapic.c+1−1
@@ -1595,7 +1595,7 @@ void kvm_lapic_reset(struct kvm_vcpu *vcpu, bool init_event) · 1594 unmodified lines
15951595 for (i = 0; i < APIC_LVT_NUM; i++)
15961596 apic_set_reg(apic, APIC_LVTT + 0x10 * i, APIC_LVT_MASKED);
15971597 apic_update_lvtt(apic);
1598− if (!(vcpu->kvm->arch.disabled_quirks & KVM_QUIRK_LINT0_REENABLED))
1598+ if (kvm_check_has_quirk(vcpu->kvm, KVM_X86_QUIRK_LINT0_REENABLED))
15991599 apic_set_reg(apic, APIC_LVT0,
16001600 SET_APIC_DELIVERY_MODE(0, APIC_MODE_EXTINT));
16011601 apic_manage_nmi_watchdog(apic, kvm_apic_get_reg(apic, APIC_LVT0));
arch/x86/kvm/mtrr.c+30−10
@@ -120,6 +120,16 @@ static u8 mtrr_default_type(struct kvm_mtrr *mtrr_state) · 119 unmodified lines
120120 return mtrr_state->deftype & IA32_MTRR_DEF_TYPE_TYPE_MASK;
121121 }
122122
123+static u8 mtrr_disabled_type(void)
124+{
125+ /*
126+ * Intel SDM 11.11.2.2: all MTRRs are disabled when
127+ * IA32_MTRR_DEF_TYPE.E bit is cleared, and the UC
128+ * memory type is applied to all of physical memory.
129+ */
130+ return MTRR_TYPE_UNCACHABLE;
131+}
132+
123133 /*
124134 * Three terms are used in the following code:
125135 * - segment, it indicates the address segments covered by fixed MTRRs.
@@ -434,6 +444,8 @@ struct mtrr_iter { · 308 unmodified lines
434444
435445 /* output fields. */
436446 int mem_type;
447+ /* mtrr is completely disabled? */
448+ bool mtrr_disabled;
437449 /* [start, end) is not fully covered in MTRRs? */
438450 bool partial_map;
439451
@@ -549,7 +561,7 @@ static void mtrr_lookup_var_next(struct mtrr_iter *iter) · 109 unmodified lines
549561 static void mtrr_lookup_start(struct mtrr_iter *iter)
550562 {
551563 if (!mtrr_is_enabled(iter->mtrr_state)) {
552− iter->partial_map = true;
564+ iter->mtrr_disabled = true;
553565 return;
554566 }
555567
@@ -563,6 +575,7 @@ static void mtrr_lookup_init(struct mtrr_iter *iter, · 7 unmodified lines
563575 iter->mtrr_state = mtrr_state;
564576 iter->start = start;
565577 iter->end = end;
578+ iter->mtrr_disabled = false;
566579 iter->partial_map = false;
567580 iter->fixed = false;
568581 iter->range = NULL;
@@ -656,15 +669,19 @@ u8 kvm_mtrr_get_guest_memory_type(struct kvm_vcpu *vcpu, gfn_t gfn) · 87 unmodified lines
656669 return MTRR_TYPE_WRBACK;
657670 }
658671
659− /* It is not covered by MTRRs. */
660− if (iter.partial_map) {
661− /*
662− * We just check one page, partially covered by MTRRs is
663− * impossible.
664− */
665− WARN_ON(type != -1);
666− type = mtrr_default_type(mtrr_state);
667− }
672+ if (iter.mtrr_disabled)
673+ return mtrr_disabled_type();
674+
675+ /*
676+ * We just check one page, partially covered by MTRRs is
677+ * impossible.
678+ */
679+ WARN_ON(iter.partial_map);
680+
681+ /* not contained in any MTRRs. */
682+ if (type == -1)
683+ return mtrr_default_type(mtrr_state);
684+
668685 return type;
669686 }
670687 EXPORT_SYMBOL_GPL(kvm_mtrr_get_guest_memory_type);
@@ -689,6 +706,9 @@ bool kvm_mtrr_check_gfn_range_consistency(struct kvm_vcpu *vcpu, gfn_t gfn, · 18 unmodified lines
689706 return false;
690707 }
691708
709+ if (iter.mtrr_disabled)
710+ return true;
711+
692712 if (!iter.partial_map)
693713 return true;
694714
arch/x86/kvm/svm.c+1−1
@@ -1672,7 +1672,7 @@ static void svm_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0) · 1671 unmodified lines
16721672 * does not do it - this results in some delay at
16731673 * reboot
16741674 */
1675− if (!(vcpu->kvm->arch.disabled_quirks & KVM_QUIRK_CD_NW_CLEARED))
1675+ if (kvm_check_has_quirk(vcpu->kvm, KVM_X86_QUIRK_CD_NW_CLEARED))
16761676 cr0 &= ~(X86_CR0_CD | X86_CR0_NW);
16771677 svm->vmcb->save.cr0 = cr0;
16781678 mark_dirty(svm->vmcb, VMCB_CR);
arch/x86/kvm/vmx.c+4−1
@@ -8650,7 +8650,10 @@ static u64 vmx_get_mt_mask(struct kvm_vcpu *vcpu, gfn_t gfn, bool is_mmio) · 8649 unmodified lines
86508650
86518651 if (kvm_read_cr0(vcpu) & X86_CR0_CD) {
86528652 ipat = VMX_EPT_IPAT_BIT;
8653− cache = MTRR_TYPE_UNCACHABLE;
8653+ if (kvm_check_has_quirk(vcpu->kvm, KVM_X86_QUIRK_CD_NW_CLEARED))
8654+ cache = MTRR_TYPE_WRBACK;
8655+ else
8656+ cache = MTRR_TYPE_UNCACHABLE;
86548657 goto exit;
86558658 }
86568659
arch/x86/kvm/x86.h+5−0
@@ -147,6 +147,11 @@ static inline void kvm_register_writel(struct kvm_vcpu *vcpu, · 146 unmodified lines
147147 return kvm_register_write(vcpu, reg, val);
148148 }
149149
150+static inline bool kvm_check_has_quirk(struct kvm *kvm, u64 quirk)
151+{
152+ return !(kvm->arch.disabled_quirks & quirk);
153+}
154+
150155 void kvm_before_handle_nmi(struct kvm_vcpu *vcpu);
151156 void kvm_after_handle_nmi(struct kvm_vcpu *vcpu);
152157 void kvm_set_pending_timer(struct kvm_vcpu *vcpu);
arch/x86/mm/ioremap.c+6−17
@@ -63,8 +63,6 @@ static int __ioremap_check_ram(unsigned long start_pfn, unsigned long nr_pages, · 62 unmodified lines
6363 !PageReserved(pfn_to_page(start_pfn + i)))
6464 return 1;
6565
66− WARN_ONCE(1, "ioremap on RAM pfn 0x%lx\n", start_pfn);
67−
6866 return 0;
6967 }
7068
@@ -94,7 +92,6 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr, · 23 unmodified lines
9492 pgprot_t prot;
9593 int retval;
9694 void __iomem *ret_addr;
97− int ram_region;
9895
9996 /* Don't allow wraparound or zero size */
10097 last_addr = phys_addr + size - 1;
@@ -117,23 +114,15 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr, · 16 unmodified lines
117114 /*
118115 * Don't allow anybody to remap normal RAM that we're using..
119116 */
120− /* First check if whole region can be identified as RAM or not */
121− ram_region = region_is_ram(phys_addr, size);
122− if (ram_region > 0) {
123− WARN_ONCE(1, "ioremap on RAM at 0x%lx - 0x%lx\n",
124− (unsigned long int)phys_addr,
125− (unsigned long int)last_addr);
117+ pfn = phys_addr >> PAGE_SHIFT;
118+ last_pfn = last_addr >> PAGE_SHIFT;
119+ if (walk_system_ram_range(pfn, last_pfn - pfn + 1, NULL,
120+ __ioremap_check_ram) == 1) {
121+ WARN_ONCE(1, "ioremap on RAM at %pa - %pa\n",
122+ &phys_addr, &last_addr);
126123 return NULL;
127124 }
128125
129− /* If could not be identified(-1), check page by page */
130− if (ram_region < 0) {
131− pfn = phys_addr >> PAGE_SHIFT;
132− last_pfn = last_addr >> PAGE_SHIFT;
133− if (walk_system_ram_range(pfn, last_pfn - pfn + 1, NULL,
134− __ioremap_check_ram) == 1)
135− return NULL;
136− }
137126 /*
138127 * Mappings have to be page-aligned
139128 */
arch/x86/mm/mmap.c+7−0
@@ -126,3 +126,10 @@ void arch_pick_mmap_layout(struct mm_struct *mm) · 125 unmodified lines
126126 mm->get_unmapped_area = arch_get_unmapped_area_topdown;
127127 }
128128 }
129+
130+const char *arch_vma_name(struct vm_area_struct *vma)
131+{
132+ if (vma->vm_flags & VM_MPX)
133+ return "[mpx]";
134+ return NULL;
135+}
arch/x86/mm/mpx.c+3−21
@@ -20,20 +20,6 @@ · 19 unmodified lines
2020 #define CREATE_TRACE_POINTS
2121 #include <asm/trace/mpx.h>
2222
23−static const char *mpx_mapping_name(struct vm_area_struct *vma)
24−{
25− return "[mpx]";
26−}
27−
28−static struct vm_operations_struct mpx_vma_ops = {
29− .name = mpx_mapping_name,
30−};
31−
32−static int is_mpx_vma(struct vm_area_struct *vma)
33−{
34− return (vma->vm_ops == &mpx_vma_ops);
35−}
36−
3723 static inline unsigned long mpx_bd_size_bytes(struct mm_struct *mm)
3824 {
3925 if (is_64bit_mm(mm))
@@ -53,9 +39,6 @@ static inline unsigned long mpx_bt_size_bytes(struct mm_struct *mm) · 13 unmodified lines
5339 /*
5440 * This is really a simplified "vm_mmap". it only handles MPX
5541 * bounds tables (the bounds directory is user-allocated).
56− *
57− * Later on, we use the vma->vm_ops to uniquely identify these
58− * VMAs.
5942 */
6043 static unsigned long mpx_mmap(unsigned long len)
6144 {
@@ -101,7 +84,6 @@ static unsigned long mpx_mmap(unsigned long len) · 39 unmodified lines
10184 ret = -ENOMEM;
10285 goto out;
10386 }
104− vma->vm_ops = &mpx_vma_ops;
10587
10688 if (vm_flags & VM_LOCKED) {
10789 up_write(&mm->mmap_sem);
@@ -812,7 +794,7 @@ static noinline int zap_bt_entries_mapping(struct mm_struct *mm, · 704 unmodified lines
812794 * so stop immediately and return an error. This
813795 * probably results in a SIGSEGV.
814796 */
815− if (!is_mpx_vma(vma))
797+ if (!(vma->vm_flags & VM_MPX))
816798 return -EINVAL;
817799
818800 len = min(vma->vm_end, end) - addr;
@@ -945,9 +927,9 @@ static int try_unmap_single_bt(struct mm_struct *mm, · 126 unmodified lines
945927 * lots of tables even though we have no actual table
946928 * entries in use.
947929 */
948− while (next && is_mpx_vma(next))
930+ while (next && (next->vm_flags & VM_MPX))
949931 next = next->vm_next;
950− while (prev && is_mpx_vma(prev))
932+ while (prev && (prev->vm_flags & VM_MPX))
951933 prev = prev->vm_prev;
952934 /*
953935 * We know 'start' and 'end' lie within an area controlled
arch/x86/mm/tlb.c+1−1
@@ -117,7 +117,7 @@ static void flush_tlb_func(void *info) · 116 unmodified lines
117117 } else {
118118 unsigned long addr;
119119 unsigned long nr_pages =
120− f->flush_end - f->flush_start / PAGE_SIZE;
120+ (f->flush_end - f->flush_start) / PAGE_SIZE;
121121 addr = f->flush_start;
122122 while (addr < f->flush_end) {
123123 __flush_tlb_single(addr);
block/bio.c+14−3
@@ -1831,8 +1831,9 @@ EXPORT_SYMBOL(bio_endio); · 1830 unmodified lines
18311831 * Allocates and returns a new bio which represents @sectors from the start of
18321832 * @bio, and updates @bio to represent the remaining sectors.
18331833 *
1834− * The newly allocated bio will point to @bio's bi_io_vec; it is the caller's
1835− * responsibility to ensure that @bio is not freed before the split.
1834+ * Unless this is a discard request the newly allocated bio will point
1835+ * to @bio's bi_io_vec; it is the caller's responsibility to ensure that
1836+ * @bio is not freed before the split.
18361837 */
18371838 struct bio *bio_split(struct bio *bio, int sectors,
18381839 gfp_t gfp, struct bio_set *bs)
@@ -1842,7 +1843,15 @@ struct bio *bio_split(struct bio *bio, int sectors, · 3 unmodified lines
18421843 BUG_ON(sectors <= 0);
18431844 BUG_ON(sectors >= bio_sectors(bio));
18441845
1845− split = bio_clone_fast(bio, gfp, bs);
1846+ /*
1847+ * Discards need a mutable bio_vec to accommodate the payload
1848+ * required by the DSM TRIM and UNMAP commands.
1849+ */
1850+ if (bio->bi_rw & REQ_DISCARD)
1851+ split = bio_clone_bioset(bio, gfp, bs);
1852+ else
1853+ split = bio_clone_fast(bio, gfp, bs);
1854+
18461855 if (!split)
18471856 return NULL;
18481857
@@ -2009,6 +2018,7 @@ int bio_associate_blkcg(struct bio *bio, struct cgroup_subsys_state *blkcg_css) · 160 unmodified lines
20092018 bio->bi_css = blkcg_css;
20102019 return 0;
20112020 }
2021+EXPORT_SYMBOL_GPL(bio_associate_blkcg);
20122022
20132023 /**
20142024 * bio_associate_current - associate a bio with %current
@@ -2039,6 +2049,7 @@ int bio_associate_current(struct bio *bio) · 24 unmodified lines
20392049 bio->bi_css = task_get_css(current, blkio_cgrp_id);
20402050 return 0;
20412051 }
2052+EXPORT_SYMBOL_GPL(bio_associate_current);
20422053
20432054 /**
20442055 * bio_disassociate_task - undo bio_associate_current()
block/blk-cgroup.c+5−1
@@ -718,8 +718,12 @@ int blkg_conf_prep(struct blkcg *blkcg, const struct blkcg_policy *pol, · 717 unmodified lines
718718 return -EINVAL;
719719
720720 disk = get_gendisk(MKDEV(major, minor), &part);
721− if (!disk || part)
721+ if (!disk)
722722 return -EINVAL;
723+ if (part) {
724+ put_disk(disk);
725+ return -EINVAL;
726+ }
723727
724728 rcu_read_lock();
725729 spin_lock_irq(disk->queue->queue_lock);
drivers/ata/libata-core.c+18−3
@@ -2478,6 +2478,10 @@ int ata_dev_configure(struct ata_device *dev) · 2477 unmodified lines
24782478 dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_128,
24792479 dev->max_sectors);
24802480
2481+ if (dev->horkage & ATA_HORKAGE_MAX_SEC_1024)
2482+ dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_1024,
2483+ dev->max_sectors);
2484+
24812485 if (dev->horkage & ATA_HORKAGE_MAX_SEC_LBA48)
24822486 dev->max_sectors = ATA_MAX_SECTORS_LBA48;
24832487
@@ -4146,6 +4150,12 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { · 1662 unmodified lines
41464150 { "Slimtype DVD A DS8A8SH", NULL, ATA_HORKAGE_MAX_SEC_LBA48 },
41474151 { "Slimtype DVD A DS8A9SH", NULL, ATA_HORKAGE_MAX_SEC_LBA48 },
41484152
4153+ /*
4154+ * Causes silent data corruption with higher max sects.
4155+ * http://lkml.kernel.org/g/x49wpy40ysk.fsf@segfault.boston.devel.redhat.com
4156+ */
4157+ { "ST380013AS", "3.20", ATA_HORKAGE_MAX_SEC_1024 },
4158+
41494159 /* Devices we expect to fail diagnostics */
41504160
41514161 /* Devices where NCQ should be avoided */
@@ -4174,9 +4184,10 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { · 22 unmodified lines
41744184 { "ST3320[68]13AS", "SD1[5-9]", ATA_HORKAGE_NONCQ |
41754185 ATA_HORKAGE_FIRMWARE_WARN },
41764186
4177− /* Seagate Momentus SpinPoint M8 seem to have FPMDA_AA issues */
4187+ /* drives which fail FPDMA_AA activation (some may freeze afterwards) */
41784188 { "ST1000LM024 HN-M101MBB", "2AR10001", ATA_HORKAGE_BROKEN_FPDMA_AA },
41794189 { "ST1000LM024 HN-M101MBB", "2BA30001", ATA_HORKAGE_BROKEN_FPDMA_AA },
4190+ { "VB0250EAVER", "HPG7", ATA_HORKAGE_BROKEN_FPDMA_AA },
41804191
41814192 /* Blacklist entries taken from Silicon Image 3124/3132
41824193 Windows driver .inf file - also several Linux problem reports */
@@ -4229,7 +4240,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { · 46 unmodified lines
42294240 ATA_HORKAGE_ZERO_AFTER_TRIM, },
42304241 { "Crucial_CT*M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
42314242 ATA_HORKAGE_ZERO_AFTER_TRIM, },
4232− { "Micron_M5[15]0*", "MU01", ATA_HORKAGE_NO_NCQ_TRIM |
4243+ { "Micron_M5[15]0_*", "MU01", ATA_HORKAGE_NO_NCQ_TRIM |
42334244 ATA_HORKAGE_ZERO_AFTER_TRIM, },
42344245 { "Crucial_CT*M550*", "MU01", ATA_HORKAGE_NO_NCQ_TRIM |
42354246 ATA_HORKAGE_ZERO_AFTER_TRIM, },
@@ -4238,6 +4249,9 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { · 2 unmodified lines
42384249 { "Samsung SSD 8*", NULL, ATA_HORKAGE_NO_NCQ_TRIM |
42394250 ATA_HORKAGE_ZERO_AFTER_TRIM, },
42404251
4252+ /* devices that don't properly handle TRIM commands */
4253+ { "SuperSSpeed S238*", NULL, ATA_HORKAGE_NOTRIM, },
4254+
42414255 /*
42424256 * As defined, the DRAT (Deterministic Read After Trim) and RZAT
42434257 * (Return Zero After Trim) flags in the ATA Command Set are
@@ -4501,7 +4515,8 @@ static unsigned int ata_dev_set_xfermode(struct ata_device *dev) · 257 unmodified lines
45014515 else /* In the ancient relic department - skip all of this */
45024516 return 0;
45034517
4504− err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0, 0);
4518+ /* On some disks, this command causes spin-up, so we need longer timeout */
4519+ err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0, 15000);
45054520
45064521 DPRINTK("EXIT, err_mask=%x\n", err_mask);
45074522 return err_mask;
drivers/ata/libata-pmp.c+7−0
@@ -460,6 +460,13 @@ static void sata_pmp_quirks(struct ata_port *ap) · 459 unmodified lines
460460 ATA_LFLAG_NO_SRST |
461461 ATA_LFLAG_ASSUME_ATA;
462462 }
463+ } else if (vendor == 0x11ab && devid == 0x4140) {
464+ /* Marvell 4140 quirks */
465+ ata_for_each_link(link, ap, EDGE) {
466+ /* port 4 is for SEMB device and it doesn't like SRST */
467+ if (link->pmp == 4)
468+ link->flags |= ATA_LFLAG_DISABLED;
469+ }
463470 }
464471 }
465472
drivers/ata/libata-scsi.c+2−1
@@ -2568,7 +2568,8 @@ static unsigned int ata_scsiop_read_cap(struct ata_scsi_args *args, u8 *rbuf) · 2567 unmodified lines
25682568 rbuf[14] = (lowest_aligned >> 8) & 0x3f;
25692569 rbuf[15] = lowest_aligned;
25702570
2571− if (ata_id_has_trim(args->id)) {
2571+ if (ata_id_has_trim(args->id) &&
2572+ !(dev->horkage & ATA_HORKAGE_NOTRIM)) {
25722573 rbuf[14] |= 0x80; /* LBPME */
25732574
25742575 if (ata_id_has_zero_after_trim(args->id) &&
drivers/ata/libata-transport.c+2−0
@@ -569,6 +569,8 @@ show_ata_dev_trim(struct device *dev, · 568 unmodified lines
569569
570570 if (!ata_id_has_trim(ata_dev->id))
571571 mode = "unsupported";
572+ else if (ata_dev->horkage & ATA_HORKAGE_NOTRIM)
573+ mode = "forced_unsupported";
572574 else if (ata_dev->horkage & ATA_HORKAGE_NO_NCQ_TRIM)
573575 mode = "forced_unqueued";
574576 else if (ata_fpdma_dsm_supported(ata_dev))
drivers/block/null_blk.c+9−9
@@ -240,19 +240,19 @@ static enum hrtimer_restart null_cmd_timer_expired(struct hrtimer *timer) · 239 unmodified lines
240240 while ((entry = llist_del_all(&cq->list)) != NULL) {
241241 entry = llist_reverse_order(entry);
242242 do {
243+ struct request_queue *q = NULL;
244+
243245 cmd = container_of(entry, struct nullb_cmd, ll_list);
244246 entry = entry->next;
247+ if (cmd->rq)
248+ q = cmd->rq->q;
245249 end_cmd(cmd);
246250
247− if (cmd->rq) {
248− struct request_queue *q = cmd->rq->q;
249−
250− if (!q->mq_ops && blk_queue_stopped(q)) {
251− spin_lock(q->queue_lock);
252− if (blk_queue_stopped(q))
253− blk_start_queue(q);
254− spin_unlock(q->queue_lock);
255− }
251+ if (q && !q->mq_ops && blk_queue_stopped(q)) {
252+ spin_lock(q->queue_lock);
253+ if (blk_queue_stopped(q))
254+ blk_start_queue(q);
255+ spin_unlock(q->queue_lock);
256256 }
257257 } while (entry);
258258 }
drivers/bluetooth/btbcm.c+5−6
@@ -472,12 +472,11 @@ int btbcm_setup_apple(struct hci_dev *hdev) · 471 unmodified lines
472472
473473 /* Read Verbose Config Version Info */
474474 skb = btbcm_read_verbose_config(hdev);
475− if (IS_ERR(skb))
476− return PTR_ERR(skb);
477−
478− BT_INFO("%s: BCM: chip id %u build %4.4u", hdev->name, skb->data[1],
479− get_unaligned_le16(skb->data + 5));
480− kfree_skb(skb);
475+ if (!IS_ERR(skb)) {
476+ BT_INFO("%s: BCM: chip id %u build %4.4u", hdev->name, skb->data[1],
477+ get_unaligned_le16(skb->data + 5));
478+ kfree_skb(skb);
479+ }
481480
482481 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);
483482
drivers/firmware/efi/cper.c+12−3
@@ -305,10 +305,17 @@ const char *cper_mem_err_unpack(struct trace_seq *p, · 304 unmodified lines
305305 return ret;
306306 }
307307
308−static void cper_print_mem(const char *pfx, const struct cper_sec_mem_err *mem)
308+static void cper_print_mem(const char *pfx, const struct cper_sec_mem_err *mem,
309+ int len)
309310 {
310311 struct cper_mem_err_compact cmem;
311312
313+ /* Don't trust UEFI 2.1/2.2 structure with bad validation bits */
314+ if (len == sizeof(struct cper_sec_mem_err_old) &&
315+ (mem->validation_bits & ~(CPER_MEM_VALID_RANK_NUMBER - 1))) {
316+ pr_err(FW_WARN "valid bits set for fields beyond structure\n");
317+ return;
318+ }
312319 if (mem->validation_bits & CPER_MEM_VALID_ERROR_STATUS)
313320 printk("%s""error_status: 0x%016llx\n", pfx, mem->error_status);
314321 if (mem->validation_bits & CPER_MEM_VALID_PA)
@@ -405,8 +412,10 @@ static void cper_estatus_print_section( · 90 unmodified lines
405412 } else if (!uuid_le_cmp(*sec_type, CPER_SEC_PLATFORM_MEM)) {
406413 struct cper_sec_mem_err *mem_err = (void *)(gdata + 1);
407414 printk("%s""section_type: memory error\n", newpfx);
408− if (gdata->error_data_length >= sizeof(*mem_err))
409− cper_print_mem(newpfx, mem_err);
415+ if (gdata->error_data_length >=
416+ sizeof(struct cper_sec_mem_err_old))
417+ cper_print_mem(newpfx, mem_err,
418+ gdata->error_data_length);
410419 else
411420 goto err_section_too_small;
412421 } else if (!uuid_le_cmp(*sec_type, CPER_SEC_PCIE)) {
drivers/gpu/drm/amd/amdgpu/amdgpu.h+4−0
@@ -1614,6 +1614,9 @@ struct amdgpu_uvd { · 1613 unmodified lines
16141614 #define AMDGPU_MAX_VCE_HANDLES 16
16151615 #define AMDGPU_VCE_FIRMWARE_OFFSET 256
16161616
1617+#define AMDGPU_VCE_HARVEST_VCE0 (1 << 0)
1618+#define AMDGPU_VCE_HARVEST_VCE1 (1 << 1)
1619+
16171620 struct amdgpu_vce {
16181621 struct amdgpu_bo *vcpu_bo;
16191622 uint64_t gpu_addr;
@@ -1626,6 +1629,7 @@ struct amdgpu_vce { · 6 unmodified lines
16261629 const struct firmware *fw; /* VCE firmware */
16271630 struct amdgpu_ring ring[AMDGPU_MAX_VCE_RINGS];
16281631 struct amdgpu_irq_src irq;
1632+ unsigned harvest_config;
16291633 };
16301634
16311635 /*
drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c+1−0
@@ -459,6 +459,7 @@ static int amdgpu_info_ioctl(struct drm_device *dev, void *data, struct drm_file · 458 unmodified lines
459459 memcpy(&dev_info.cu_bitmap[0], &cu_info.bitmap[0], sizeof(cu_info.bitmap));
460460 dev_info.vram_type = adev->mc.vram_type;
461461 dev_info.vram_bit_width = adev->mc.vram_width;
462+ dev_info.vce_harvest_config = adev->vce.harvest_config;
462463
463464 return copy_to_user(out, &dev_info,
464465 min((size_t)size, sizeof(dev_info))) ? -EFAULT : 0;
drivers/gpu/drm/amd/amdgpu/cz_dpm.c+54−16
@@ -494,29 +494,67 @@ static void cz_dpm_fini(struct amdgpu_device *adev) · 493 unmodified lines
494494 amdgpu_free_extended_power_table(adev);
495495 }
496496
497+#define ixSMUSVI_NB_CURRENTVID 0xD8230044
498+#define CURRENT_NB_VID_MASK 0xff000000
499+#define CURRENT_NB_VID__SHIFT 24
500+#define ixSMUSVI_GFX_CURRENTVID 0xD8230048
501+#define CURRENT_GFX_VID_MASK 0xff000000
502+#define CURRENT_GFX_VID__SHIFT 24
503+
497504 static void
498505 cz_dpm_debugfs_print_current_performance_level(struct amdgpu_device *adev,
499506 struct seq_file *m)
500507 {
508+ struct cz_power_info *pi = cz_get_pi(adev);
501509 struct amdgpu_clock_voltage_dependency_table *table =
502510 &adev->pm.dpm.dyn_state.vddc_dependency_on_sclk;
503− u32 current_index =
504− (RREG32_SMC(ixTARGET_AND_CURRENT_PROFILE_INDEX) &
505− TARGET_AND_CURRENT_PROFILE_INDEX__CURR_SCLK_INDEX_MASK) >>
506− TARGET_AND_CURRENT_PROFILE_INDEX__CURR_SCLK_INDEX__SHIFT;
507− u32 sclk, tmp;
508− u16 vddc;
509−
510− if (current_index >= NUM_SCLK_LEVELS) {
511− seq_printf(m, "invalid dpm profile %d\n", current_index);
511+ struct amdgpu_uvd_clock_voltage_dependency_table *uvd_table =
512+ &adev->pm.dpm.dyn_state.uvd_clock_voltage_dependency_table;
513+ struct amdgpu_vce_clock_voltage_dependency_table *vce_table =
514+ &adev->pm.dpm.dyn_state.vce_clock_voltage_dependency_table;
515+ u32 sclk_index = REG_GET_FIELD(RREG32_SMC(ixTARGET_AND_CURRENT_PROFILE_INDEX),
516+ TARGET_AND_CURRENT_PROFILE_INDEX, CURR_SCLK_INDEX);
517+ u32 uvd_index = REG_GET_FIELD(RREG32_SMC(ixTARGET_AND_CURRENT_PROFILE_INDEX_2),
518+ TARGET_AND_CURRENT_PROFILE_INDEX_2, CURR_UVD_INDEX);
519+ u32 vce_index = REG_GET_FIELD(RREG32_SMC(ixTARGET_AND_CURRENT_PROFILE_INDEX_2),
520+ TARGET_AND_CURRENT_PROFILE_INDEX_2, CURR_VCE_INDEX);
521+ u32 sclk, vclk, dclk, ecclk, tmp;
522+ u16 vddnb, vddgfx;
523+
524+ if (sclk_index >= NUM_SCLK_LEVELS) {
525+ seq_printf(m, "invalid sclk dpm profile %d\n", sclk_index);
512526 } else {
513− sclk = table->entries[current_index].clk;
514− tmp = (RREG32_SMC(ixSMU_VOLTAGE_STATUS) &
515− SMU_VOLTAGE_STATUS__SMU_VOLTAGE_CURRENT_LEVEL_MASK) >>
516− SMU_VOLTAGE_STATUS__SMU_VOLTAGE_CURRENT_LEVEL__SHIFT;
517− vddc = cz_convert_8bit_index_to_voltage(adev, (u16)tmp);
518− seq_printf(m, "power level %d sclk: %u vddc: %u\n",
519− current_index, sclk, vddc);
527+ sclk = table->entries[sclk_index].clk;
528+ seq_printf(m, "%u sclk: %u\n", sclk_index, sclk);
529+ }
530+
531+ tmp = (RREG32_SMC(ixSMUSVI_NB_CURRENTVID) &
532+ CURRENT_NB_VID_MASK) >> CURRENT_NB_VID__SHIFT;
533+ vddnb = cz_convert_8bit_index_to_voltage(adev, (u16)tmp);
534+ tmp = (RREG32_SMC(ixSMUSVI_GFX_CURRENTVID) &
535+ CURRENT_GFX_VID_MASK) >> CURRENT_GFX_VID__SHIFT;
536+ vddgfx = cz_convert_8bit_index_to_voltage(adev, (u16)tmp);
537+ seq_printf(m, "vddnb: %u vddgfx: %u\n", vddnb, vddgfx);
538+
539+ seq_printf(m, "uvd %sabled\n", pi->uvd_power_gated ? "dis" : "en");
540+ if (!pi->uvd_power_gated) {
541+ if (uvd_index >= CZ_MAX_HARDWARE_POWERLEVELS) {
542+ seq_printf(m, "invalid uvd dpm level %d\n", uvd_index);
543+ } else {
544+ vclk = uvd_table->entries[uvd_index].vclk;
545+ dclk = uvd_table->entries[uvd_index].dclk;
546+ seq_printf(m, "%u uvd vclk: %u dclk: %u\n", uvd_index, vclk, dclk);
547+ }
548+ }
549+
550+ seq_printf(m, "vce %sabled\n", pi->vce_power_gated ? "dis" : "en");
551+ if (!pi->vce_power_gated) {
552+ if (vce_index >= CZ_MAX_HARDWARE_POWERLEVELS) {
553+ seq_printf(m, "invalid vce dpm level %d\n", vce_index);
554+ } else {
555+ ecclk = vce_table->entries[vce_index].ecclk;
556+ seq_printf(m, "%u vce ecclk: %u\n", vce_index, ecclk);
557+ }
520558 }
521559 }
522560
drivers/gpu/drm/amd/amdgpu/dce_v10_0.c+4−0
@@ -2632,6 +2632,7 @@ static void dce_v10_0_crtc_dpms(struct drm_crtc *crtc, int mode) · 2631 unmodified lines
26322632 struct drm_device *dev = crtc->dev;
26332633 struct amdgpu_device *adev = dev->dev_private;
26342634 struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
2635+ unsigned type;
26352636
26362637 switch (mode) {
26372638 case DRM_MODE_DPMS_ON:
@@ -2640,6 +2641,9 @@ static void dce_v10_0_crtc_dpms(struct drm_crtc *crtc, int mode) · 2 unmodified lines
26402641 dce_v10_0_vga_enable(crtc, true);
26412642 amdgpu_atombios_crtc_blank(crtc, ATOM_DISABLE);
26422643 dce_v10_0_vga_enable(crtc, false);
2644+ /* Make sure VBLANK interrupt is still enabled */
2645+ type = amdgpu_crtc_idx_to_irq_type(adev, amdgpu_crtc->crtc_id);
2646+ amdgpu_irq_update(adev, &adev->crtc_irq, type);
26432647 drm_vblank_post_modeset(dev, amdgpu_crtc->crtc_id);
26442648 dce_v10_0_crtc_load_lut(crtc);
26452649 break;
drivers/gpu/drm/amd/amdgpu/dce_v11_0.c+4−0
@@ -2631,6 +2631,7 @@ static void dce_v11_0_crtc_dpms(struct drm_crtc *crtc, int mode) · 2630 unmodified lines
26312631 struct drm_device *dev = crtc->dev;
26322632 struct amdgpu_device *adev = dev->dev_private;
26332633 struct amdgpu_crtc *amdgpu_crtc = to_amdgpu_crtc(crtc);
2634+ unsigned type;
26342635
26352636 switch (mode) {
26362637 case DRM_MODE_DPMS_ON:
@@ -2639,6 +2640,9 @@ static void dce_v11_0_crtc_dpms(struct drm_crtc *crtc, int mode) · 2 unmodified lines
26392640 dce_v11_0_vga_enable(crtc, true);
26402641 amdgpu_atombios_crtc_blank(crtc, ATOM_DISABLE);
26412642 dce_v11_0_vga_enable(crtc, false);
2643+ /* Make sure VBLANK interrupt is still enabled */
2644+ type = amdgpu_crtc_idx_to_irq_type(adev, amdgpu_crtc->crtc_id);
2645+ amdgpu_irq_update(adev, &adev->crtc_irq, type);
26422646 drm_vblank_post_modeset(dev, amdgpu_crtc->crtc_id);
26432647 dce_v11_0_crtc_load_lut(crtc);
26442648 break;
drivers/gpu/drm/amd/amdgpu/vce_v3_0.c+48−0
@@ -35,6 +35,8 @@ · 34 unmodified lines
3535 #include "oss/oss_2_0_d.h"
3636 #include "oss/oss_2_0_sh_mask.h"
3737 #include "gca/gfx_8_0_d.h"
38+#include "smu/smu_7_1_2_d.h"
39+#include "smu/smu_7_1_2_sh_mask.h"
3840
3941 #define GRBM_GFX_INDEX__VCE_INSTANCE__SHIFT 0x04
4042 #define GRBM_GFX_INDEX__VCE_INSTANCE_MASK 0x10
@@ -112,6 +114,10 @@ static int vce_v3_0_start(struct amdgpu_device *adev) · 71 unmodified lines
112114
113115 mutex_lock(&adev->grbm_idx_mutex);
114116 for (idx = 0; idx < 2; ++idx) {
117+
118+ if (adev->vce.harvest_config & (1 << idx))
119+ continue;
120+
115121 if(idx == 0)
116122 WREG32_P(mmGRBM_GFX_INDEX, 0,
117123 ~GRBM_GFX_INDEX__VCE_INSTANCE_MASK);
@@ -190,10 +196,52 @@ static int vce_v3_0_start(struct amdgpu_device *adev) · 72 unmodified lines
190196 return 0;
191197 }
192198
199+#define ixVCE_HARVEST_FUSE_MACRO__ADDRESS 0xC0014074
200+#define VCE_HARVEST_FUSE_MACRO__SHIFT 27
201+#define VCE_HARVEST_FUSE_MACRO__MASK 0x18000000
202+
203+static unsigned vce_v3_0_get_harvest_config(struct amdgpu_device *adev)
204+{
205+ u32 tmp;
206+ unsigned ret;
207+
208+ if (adev->flags & AMDGPU_IS_APU)
209+ tmp = (RREG32_SMC(ixVCE_HARVEST_FUSE_MACRO__ADDRESS) &
210+ VCE_HARVEST_FUSE_MACRO__MASK) >>
211+ VCE_HARVEST_FUSE_MACRO__SHIFT;
212+ else
213+ tmp = (RREG32_SMC(ixCC_HARVEST_FUSES) &
214+ CC_HARVEST_FUSES__VCE_DISABLE_MASK) >>
215+ CC_HARVEST_FUSES__VCE_DISABLE__SHIFT;
216+
217+ switch (tmp) {
218+ case 1:
219+ ret = AMDGPU_VCE_HARVEST_VCE0;
220+ break;
221+ case 2:
222+ ret = AMDGPU_VCE_HARVEST_VCE1;
223+ break;
224+ case 3:
225+ ret = AMDGPU_VCE_HARVEST_VCE0 | AMDGPU_VCE_HARVEST_VCE1;
226+ break;
227+ default:
228+ ret = 0;
229+ }
230+
231+ return ret;
232+}
233+
193234 static int vce_v3_0_early_init(void *handle)
194235 {
195236 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
196237
238+ adev->vce.harvest_config = vce_v3_0_get_harvest_config(adev);
239+
240+ if ((adev->vce.harvest_config &
241+ (AMDGPU_VCE_HARVEST_VCE0 | AMDGPU_VCE_HARVEST_VCE1)) ==
242+ (AMDGPU_VCE_HARVEST_VCE0 | AMDGPU_VCE_HARVEST_VCE1))
243+ return -ENOENT;
244+
197245 vce_v3_0_set_ring_funcs(adev);
198246 vce_v3_0_set_irq_funcs(adev);
199247
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_crtc.c+1−0
@@ -355,6 +355,7 @@ int atmel_hlcdc_crtc_create(struct drm_device *dev) · 354 unmodified lines
355355 planes->overlays[i]->base.possible_crtcs = 1 << crtc->id;
356356
357357 drm_crtc_helper_add(&crtc->base, &lcdc_crtc_helper_funcs);
358+ drm_crtc_vblank_reset(&crtc->base);
358359
359360 dc->crtc = &crtc->base;
360361
drivers/gpu/drm/atmel-hlcdc/atmel_hlcdc_dc.c+6−6
@@ -313,20 +313,20 @@ static int atmel_hlcdc_dc_load(struct drm_device *dev) · 312 unmodified lines
313313
314314 pm_runtime_enable(dev->dev);
315315
316− ret = atmel_hlcdc_dc_modeset_init(dev);
316+ ret = drm_vblank_init(dev, 1);
317317 if (ret < 0) {
318− dev_err(dev->dev, "failed to initialize mode setting\n");
318+ dev_err(dev->dev, "failed to initialize vblank\n");
319319 goto err_periph_clk_disable;
320320 }
321321
322− drm_mode_config_reset(dev);
323−
324− ret = drm_vblank_init(dev, 1);
322+ ret = atmel_hlcdc_dc_modeset_init(dev);
325323 if (ret < 0) {
326− dev_err(dev->dev, "failed to initialize vblank\n");
324+ dev_err(dev->dev, "failed to initialize mode setting\n");
327325 goto err_periph_clk_disable;
328326 }
329327
328+ drm_mode_config_reset(dev);
329+
330330 pm_runtime_get_sync(dev->dev);
331331 ret = drm_irq_install(dev, dc->hlcdc->irq);
332332 pm_runtime_put_sync(dev->dev);
drivers/gpu/drm/drm_crtc.c+1−4
@@ -5398,12 +5398,9 @@ void drm_mode_config_reset(struct drm_device *dev) · 5397 unmodified lines
53985398 if (encoder->funcs->reset)
53995399 encoder->funcs->reset(encoder);
54005400
5401− list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
5402− connector->status = connector_status_unknown;
5403−
5401+ list_for_each_entry(connector, &dev->mode_config.connector_list, head)
54045402 if (connector->funcs->reset)
54055403 connector->funcs->reset(connector);
5406− }
54075404 }
54085405 EXPORT_SYMBOL(drm_mode_config_reset);
54095406
drivers/gpu/drm/i915/intel_uncore.c+19−7
@@ -1274,10 +1274,12 @@ int i915_reg_read_ioctl(struct drm_device *dev, · 1273 unmodified lines
12741274 struct drm_i915_private *dev_priv = dev->dev_private;
12751275 struct drm_i915_reg_read *reg = data;
12761276 struct register_whitelist const *entry = whitelist;
1277+ unsigned size;
1278+ u64 offset;
12771279 int i, ret = 0;
12781280
12791281 for (i = 0; i < ARRAY_SIZE(whitelist); i++, entry++) {
1280− if (entry->offset == reg->offset &&
1282+ if (entry->offset == (reg->offset & -entry->size) &&
12811283 (1 << INTEL_INFO(dev)->gen & entry->gen_bitmask))
12821284 break;
12831285 }
@@ -1285,23 +1287,33 @@ int i915_reg_read_ioctl(struct drm_device *dev, · 1 unmodified line
12851287 if (i == ARRAY_SIZE(whitelist))
12861288 return -EINVAL;
12871289
1290+ /* We use the low bits to encode extra flags as the register should
1291+ * be naturally aligned (and those that are not so aligned merely
1292+ * limit the available flags for that register).
1293+ */
1294+ offset = entry->offset;
1295+ size = entry->size;
1296+ size |= reg->offset ^ offset;
1297+
12881298 intel_runtime_pm_get(dev_priv);
12891299
1290− switch (entry->size) {
1300+ switch (size) {
1301+ case 8 | 1:
1302+ reg->val = I915_READ64_2x32(offset, offset+4);
1303+ break;
12911304 case 8:
1292− reg->val = I915_READ64(reg->offset);
1305+ reg->val = I915_READ64(offset);
12931306 break;
12941307 case 4:
1295− reg->val = I915_READ(reg->offset);
1308+ reg->val = I915_READ(offset);
12961309 break;
12971310 case 2:
1298− reg->val = I915_READ16(reg->offset);
1311+ reg->val = I915_READ16(offset);
12991312 break;
13001313 case 1:
1301− reg->val = I915_READ8(reg->offset);
1314+ reg->val = I915_READ8(offset);
13021315 break;
13031316 default:
1304− MISSING_CASE(entry->size);
13051317 ret = -EINVAL;
13061318 goto out;
13071319 }
drivers/gpu/drm/ttm/ttm_bo_util.c+2−1
@@ -490,7 +490,8 @@ pgprot_t ttm_io_prot(uint32_t caching_flags, pgprot_t tmp) · 489 unmodified lines
490490 else if (boot_cpu_data.x86 > 3)
491491 tmp = pgprot_noncached(tmp);
492492 #endif
493−#if defined(__ia64__) || defined(__arm__) || defined(__powerpc__)
493+#if defined(__ia64__) || defined(__arm__) || defined(__aarch64__) || \
494+ defined(__powerpc__)
494495 if (caching_flags & TTM_PL_FLAG_WC)
495496 tmp = pgprot_writecombine(tmp);
496497 else
drivers/hid/hid-cp2112.c+2−0
@@ -356,6 +356,8 @@ static int cp2112_read(struct cp2112_device *dev, u8 *data, size_t size) · 355 unmodified lines
356356 struct cp2112_force_read_report report;
357357 int ret;
358358
359+ if (size > sizeof(dev->read_data))
360+ size = sizeof(dev->read_data);
359361 report.report = CP2112_DATA_READ_FORCE_SEND;
360362 report.length = cpu_to_be16(size);
361363
drivers/hid/hid-multitouch.c+7−0
@@ -778,9 +778,16 @@ static int mt_input_mapping(struct hid_device *hdev, struct hid_input *hi, · 777 unmodified lines
778778 /*
779779 * some egalax touchscreens have "application == HID_DG_TOUCHSCREEN"
780780 * for the stylus.
781+ * The check for mt_report_id ensures we don't process
782+ * HID_DG_CONTACTCOUNT from the pen report as it is outside the physical
783+ * collection, but within the report ID.
781784 */
782785 if (field->physical == HID_DG_STYLUS)
783786 return 0;
787+ else if ((field->physical == 0) &&
788+ (field->report->id != td->mt_report_id) &&
789+ (td->mt_report_id != -1))
790+ return 0;
784791
785792 if (field->application == HID_DG_TOUCHSCREEN ||
786793 field->application == HID_DG_TOUCHPAD)
drivers/hid/usbhid/hid-quirks.c+3−0
@@ -87,6 +87,9 @@ static const struct hid_blacklist { · 86 unmodified lines
8787 { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C05A, HID_QUIRK_ALWAYS_POLL },
8888 { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_MOUSE_C06A, HID_QUIRK_ALWAYS_POLL },
8989 { USB_VENDOR_ID_MGE, USB_DEVICE_ID_MGE_UPS, HID_QUIRK_NOGET },
90+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_SURFACE_PRO_2, HID_QUIRK_NO_INIT_REPORTS },
91+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_2, HID_QUIRK_NO_INIT_REPORTS },
92+ { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TOUCH_COVER_2, HID_QUIRK_NO_INIT_REPORTS },
9093 { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3, HID_QUIRK_NO_INIT_REPORTS },
9194 { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_TYPE_COVER_3_JP, HID_QUIRK_NO_INIT_REPORTS },
9295 { USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_POWER_COVER, HID_QUIRK_NO_INIT_REPORTS },
drivers/hid/wacom_sys.c+4−2
@@ -1271,11 +1271,13 @@ fail_leds: · 1270 unmodified lines
12711271 pad_input_dev = NULL;
12721272 wacom_wac->pad_registered = false;
12731273 fail_register_pad_input:
1274− input_unregister_device(touch_input_dev);
1274+ if (touch_input_dev)
1275+ input_unregister_device(touch_input_dev);
12751276 wacom_wac->touch_input = NULL;
12761277 wacom_wac->touch_registered = false;
12771278 fail_register_touch_input:
1278− input_unregister_device(pen_input_dev);
1279+ if (pen_input_dev)
1280+ input_unregister_device(pen_input_dev);
12791281 wacom_wac->pen_input = NULL;
12801282 wacom_wac->pen_registered = false;
12811283 fail_register_pen_input:
drivers/hid/wacom_wac.c+3−0
@@ -2213,6 +2213,9 @@ void wacom_setup_device_quirks(struct wacom *wacom) · 2212 unmodified lines
22132213 features->x_max = 4096;
22142214 features->y_max = 4096;
22152215 }
2216+ else if (features->pktlen == WACOM_PKGLEN_BBTOUCH) {
2217+ features->device_type |= WACOM_DEVICETYPE_PAD;
2218+ }
22162219 }
22172220
22182221 /*
drivers/iio/accel/mma8452.c+4−4
@@ -557,21 +557,21 @@ static void mma8452_transient_interrupt(struct iio_dev *indio_dev) · 556 unmodified lines
557557 if (src & MMA8452_TRANSIENT_SRC_XTRANSE)
558558 iio_push_event(indio_dev,
559559 IIO_MOD_EVENT_CODE(IIO_ACCEL, 0, IIO_MOD_X,
560− IIO_EV_TYPE_THRESH,
560+ IIO_EV_TYPE_MAG,
561561 IIO_EV_DIR_RISING),
562562 ts);
563563
564564 if (src & MMA8452_TRANSIENT_SRC_YTRANSE)
565565 iio_push_event(indio_dev,
566566 IIO_MOD_EVENT_CODE(IIO_ACCEL, 0, IIO_MOD_Y,
567− IIO_EV_TYPE_THRESH,
567+ IIO_EV_TYPE_MAG,
568568 IIO_EV_DIR_RISING),
569569 ts);
570570
571571 if (src & MMA8452_TRANSIENT_SRC_ZTRANSE)
572572 iio_push_event(indio_dev,
573573 IIO_MOD_EVENT_CODE(IIO_ACCEL, 0, IIO_MOD_Z,
574− IIO_EV_TYPE_THRESH,
574+ IIO_EV_TYPE_MAG,
575575 IIO_EV_DIR_RISING),
576576 ts);
577577 }
@@ -644,7 +644,7 @@ static int mma8452_reg_access_dbg(struct iio_dev *indio_dev, · 66 unmodified lines
644644
645645 static const struct iio_event_spec mma8452_transient_event[] = {
646646 {
647− .type = IIO_EV_TYPE_THRESH,
647+ .type = IIO_EV_TYPE_MAG,
648648 .dir = IIO_EV_DIR_RISING,
649649 .mask_separate = BIT(IIO_EV_INFO_ENABLE),
650650 .mask_shared_by_type = BIT(IIO_EV_INFO_VALUE) |
drivers/iio/adc/mcp320x.c+2−0
@@ -299,6 +299,8 @@ static int mcp320x_probe(struct spi_device *spi) · 298 unmodified lines
299299 indio_dev->channels = chip_info->channels;
300300 indio_dev->num_channels = chip_info->num_channels;
301301
302+ adc->chip_info = chip_info;
303+
302304 adc->transfer[0].tx_buf = &adc->tx_buf;
303305 adc->transfer[0].len = sizeof(adc->tx_buf);
304306 adc->transfer[1].rx_buf = adc->rx_buf;
drivers/iio/adc/vf610_adc.c+1−1
@@ -635,7 +635,7 @@ static int vf610_adc_reg_access(struct iio_dev *indio_dev, · 634 unmodified lines
635635 struct vf610_adc *info = iio_priv(indio_dev);
636636
637637 if ((readval == NULL) ||
638− (!(reg % 4) || (reg > VF610_REG_ADC_PCTL)))
638+ ((reg % 4) || (reg > VF610_REG_ADC_PCTL)))
639639 return -EINVAL;
640640
641641 *readval = readl(info->regs + reg);
drivers/iio/light/stk3310.c+13−13
@@ -200,7 +200,7 @@ static int stk3310_read_event(struct iio_dev *indio_dev, · 199 unmodified lines
200200 int *val, int *val2)
201201 {
202202 u8 reg;
203− u16 buf;
203+ __be16 buf;
204204 int ret;
205205 struct stk3310_data *data = iio_priv(indio_dev);
206206
@@ -222,7 +222,7 @@ static int stk3310_read_event(struct iio_dev *indio_dev, · 15 unmodified lines
222222 dev_err(&data->client->dev, "register read failed\n");
223223 return ret;
224224 }
225− *val = swab16(buf);
225+ *val = be16_to_cpu(buf);
226226
227227 return IIO_VAL_INT;
228228 }
@@ -235,7 +235,7 @@ static int stk3310_write_event(struct iio_dev *indio_dev, · 6 unmodified lines
235235 int val, int val2)
236236 {
237237 u8 reg;
238− u16 buf;
238+ __be16 buf;
239239 int ret;
240240 unsigned int index;
241241 struct stk3310_data *data = iio_priv(indio_dev);
@@ -252,7 +252,7 @@ static int stk3310_write_event(struct iio_dev *indio_dev, · 10 unmodified lines
252252 else
253253 return -EINVAL;
254254
255− buf = swab16(val);
255+ buf = cpu_to_be16(val);
256256 ret = regmap_bulk_write(data->regmap, reg, &buf, 2);
257257 if (ret < 0)
258258 dev_err(&client->dev, "failed to set PS threshold!\n");
@@ -301,7 +301,7 @@ static int stk3310_read_raw(struct iio_dev *indio_dev, · 42 unmodified lines
301301 int *val, int *val2, long mask)
302302 {
303303 u8 reg;
304− u16 buf;
304+ __be16 buf;
305305 int ret;
306306 unsigned int index;
307307 struct stk3310_data *data = iio_priv(indio_dev);
@@ -322,7 +322,7 @@ static int stk3310_read_raw(struct iio_dev *indio_dev, · 14 unmodified lines
322322 mutex_unlock(&data->lock);
323323 return ret;
324324 }
325− *val = swab16(buf);
325+ *val = be16_to_cpu(buf);
326326 mutex_unlock(&data->lock);
327327 return IIO_VAL_INT;
328328 case IIO_CHAN_INFO_INT_TIME:
@@ -608,13 +608,7 @@ static int stk3310_probe(struct i2c_client *client, · 279 unmodified lines
608608 if (ret < 0)
609609 return ret;
610610
611− ret = iio_device_register(indio_dev);
612− if (ret < 0) {
613− dev_err(&client->dev, "device_register failed\n");
614− stk3310_set_state(data, STK3310_STATE_STANDBY);
615− }
616−
617− if (client->irq <= 0)
611+ if (client->irq < 0)
618612 client->irq = stk3310_gpio_probe(client);
619613
620614 if (client->irq >= 0) {
@@ -629,6 +623,12 @@ static int stk3310_probe(struct i2c_client *client, · 8 unmodified lines
629623 client->irq);
630624 }
631625
626+ ret = iio_device_register(indio_dev);
627+ if (ret < 0) {
628+ dev_err(&client->dev, "device_register failed\n");
629+ stk3310_set_state(data, STK3310_STATE_STANDBY);
630+ }
631+
632632 return ret;
633633 }
634634
drivers/iio/magnetometer/Kconfig+1−0
@@ -90,6 +90,7 @@ config IIO_ST_MAGN_SPI_3AXIS · 89 unmodified lines
9090 config BMC150_MAGN
9191 tristate "Bosch BMC150 Magnetometer Driver"
9292 depends on I2C
93+ select REGMAP_I2C
9394 select IIO_BUFFER
9495 select IIO_TRIGGERED_BUFFER
9596 help
drivers/iio/magnetometer/bmc150_magn.c+2−2
@@ -706,11 +706,11 @@ static int bmc150_magn_init(struct bmc150_magn_data *data) · 705 unmodified lines
706706 goto err_poweroff;
707707 }
708708 if (chip_id != BMC150_MAGN_CHIP_ID_VAL) {
709− dev_err(&data->client->dev, "Invalid chip id 0x%x\n", ret);
709+ dev_err(&data->client->dev, "Invalid chip id 0x%x\n", chip_id);
710710 ret = -ENODEV;
711711 goto err_poweroff;
712712 }
713− dev_dbg(&data->client->dev, "Chip id %x\n", ret);
713+ dev_dbg(&data->client->dev, "Chip id %x\n", chip_id);
714714
715715 preset = bmc150_magn_presets_table[BMC150_MAGN_DEFAULT_PRESET];
716716 ret = bmc150_magn_set_odr(data, preset.odr);
drivers/iio/magnetometer/mmc35240.c+7−5
@@ -202,8 +202,8 @@ static int mmc35240_hw_set(struct mmc35240_data *data, bool set) · 201 unmodified lines
202202 coil_bit = MMC35240_CTRL0_RESET_BIT;
203203
204204 return regmap_update_bits(data->regmap, MMC35240_REG_CTRL0,
205− MMC35240_CTRL0_REFILL_BIT,
206− coil_bit);
205+ coil_bit, coil_bit);
206+
207207 }
208208
209209 static int mmc35240_init(struct mmc35240_data *data)
@@ -222,14 +222,15 @@ static int mmc35240_init(struct mmc35240_data *data) · 12 unmodified lines
222222
223223 /*
224224 * make sure we restore sensor characteristics, by doing
225− * a RESET/SET sequence
225+ * a SET/RESET sequence, the axis polarity being naturally
226+ * aligned after RESET
226227 */
227− ret = mmc35240_hw_set(data, false);
228+ ret = mmc35240_hw_set(data, true);
228229 if (ret < 0)
229230 return ret;
230231 usleep_range(MMC53240_WAIT_SET_RESET, MMC53240_WAIT_SET_RESET + 1);
231232
232− ret = mmc35240_hw_set(data, true);
233+ ret = mmc35240_hw_set(data, false);
233234 if (ret < 0)
234235 return ret;
235236
@@ -503,6 +504,7 @@ static int mmc35240_probe(struct i2c_client *client, · 267 unmodified lines
503504 }
504505
505506 data = iio_priv(indio_dev);
507+ i2c_set_clientdata(client, indio_dev);
506508 data->client = client;
507509 data->regmap = regmap;
508510 data->res = MMC35240_16_BITS_SLOW;
drivers/iio/temperature/mlx90614.c+1−1
@@ -204,7 +204,7 @@ static int mlx90614_read_raw(struct iio_dev *indio_dev, · 203 unmodified lines
204204 *val = ret;
205205 return IIO_VAL_INT;
206206 case IIO_CHAN_INFO_OFFSET:
207− *val = 13657;
207+ *val = -13657;
208208 *val2 = 500000;
209209 return IIO_VAL_INT_PLUS_MICRO;
210210 case IIO_CHAN_INFO_SCALE:
drivers/infiniband/hw/ipath/ipath_driver.c+4−2
@@ -31,6 +31,8 @@ · 30 unmodified lines
3131 * SOFTWARE.
3232 */
3333
34+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
35+
3436 #include <linux/sched.h>
3537 #include <linux/spinlock.h>
3638 #include <linux/idr.h>
@@ -399,8 +401,8 @@ static int ipath_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) · 362 unmodified lines
399401 u32 bar0 = 0, bar1 = 0;
400402
401403 #ifdef CONFIG_X86_64
402− if (WARN(pat_enabled(),
403− "ipath needs PAT disabled, boot with nopat kernel parameter\n")) {
404+ if (pat_enabled()) {
405+ pr_warn("ipath needs PAT disabled, boot with nopat kernel parameter\n");
404406 ret = -ENODEV;
405407 goto bail;
406408 }
drivers/input/input-leds.c+14−2
@@ -71,6 +71,18 @@ static void input_leds_event(struct input_handle *handle, unsigned int type, · 70 unmodified lines
7171 {
7272 }
7373
74+static int input_leds_get_count(struct input_dev *dev)
75+{
76+ unsigned int led_code;
77+ int count = 0;
78+
79+ for_each_set_bit(led_code, dev->ledbit, LED_CNT)
80+ if (input_led_info[led_code].name)
81+ count++;
82+
83+ return count;
84+}
85+
7486 static int input_leds_connect(struct input_handler *handler,
7587 struct input_dev *dev,
7688 const struct input_device_id *id)
@@ -81,7 +93,7 @@ static int input_leds_connect(struct input_handler *handler, · 4 unmodified lines
8193 int led_no;
8294 int error;
8395
84− num_leds = bitmap_weight(dev->ledbit, LED_CNT);
96+ num_leds = input_leds_get_count(dev);
8597 if (!num_leds)
8698 return -ENXIO;
8799
@@ -112,7 +124,7 @@ static int input_leds_connect(struct input_handler *handler, · 24 unmodified lines
112124 led->handle = &leds->handle;
113125 led->code = led_code;
114126
115− if (WARN_ON(!input_led_info[led_code].name))
127+ if (!input_led_info[led_code].name)
116128 continue;
117129
118130 led->cdev.name = kasprintf(GFP_KERNEL, "%s::%s",
drivers/input/mouse/elantech.c+8−5
@@ -1167,7 +1167,7 @@ static int elantech_set_input_params(struct psmouse *psmouse) · 1166 unmodified lines
11671167 struct input_dev *dev = psmouse->dev;
11681168 struct elantech_data *etd = psmouse->private;
11691169 unsigned int x_min = 0, y_min = 0, x_max = 0, y_max = 0, width = 0;
1170− unsigned int x_res = 0, y_res = 0;
1170+ unsigned int x_res = 31, y_res = 31;
11711171
11721172 if (elantech_set_range(psmouse, &x_min, &y_min, &x_max, &y_max, &width))
11731173 return -1;
@@ -1232,8 +1232,6 @@ static int elantech_set_input_params(struct psmouse *psmouse) · 58 unmodified lines
12321232 /* For X to recognize me as touchpad. */
12331233 input_set_abs_params(dev, ABS_X, x_min, x_max, 0, 0);
12341234 input_set_abs_params(dev, ABS_Y, y_min, y_max, 0, 0);
1235− input_abs_set_res(dev, ABS_X, x_res);
1236− input_abs_set_res(dev, ABS_Y, y_res);
12371235 /*
12381236 * range of pressure and width is the same as v2,
12391237 * report ABS_PRESSURE, ABS_TOOL_WIDTH for compatibility.
@@ -1246,8 +1244,6 @@ static int elantech_set_input_params(struct psmouse *psmouse) · 6 unmodified lines
12461244 input_mt_init_slots(dev, ETP_MAX_FINGERS, 0);
12471245 input_set_abs_params(dev, ABS_MT_POSITION_X, x_min, x_max, 0, 0);
12481246 input_set_abs_params(dev, ABS_MT_POSITION_Y, y_min, y_max, 0, 0);
1249− input_abs_set_res(dev, ABS_MT_POSITION_X, x_res);
1250− input_abs_set_res(dev, ABS_MT_POSITION_Y, y_res);
12511247 input_set_abs_params(dev, ABS_MT_PRESSURE, ETP_PMIN_V2,
12521248 ETP_PMAX_V2, 0, 0);
12531249 /*
@@ -1259,6 +1255,13 @@ static int elantech_set_input_params(struct psmouse *psmouse) · 5 unmodified lines
12591255 break;
12601256 }
12611257
1258+ input_abs_set_res(dev, ABS_X, x_res);
1259+ input_abs_set_res(dev, ABS_Y, y_res);
1260+ if (etd->hw_version > 1) {
1261+ input_abs_set_res(dev, ABS_MT_POSITION_X, x_res);
1262+ input_abs_set_res(dev, ABS_MT_POSITION_Y, y_res);
1263+ }
1264+
12621265 etd->y_max = y_max;
12631266 etd->width = width;
12641267
drivers/input/touchscreen/goodix.c+36−0
@@ -15,6 +15,7 @@ · 14 unmodified lines
1515 */
1616
1717 #include <linux/kernel.h>
18+#include <linux/dmi.h>
1819 #include <linux/i2c.h>
1920 #include <linux/input.h>
2021 #include <linux/input/mt.h>
@@ -34,6 +35,7 @@ struct goodix_ts_data { · 13 unmodified lines
3435 int abs_y_max;
3536 unsigned int max_touch_num;
3637 unsigned int int_trigger_type;
38+ bool rotated_screen;
3739 };
3840
3941 #define GOODIX_MAX_HEIGHT 4096
@@ -60,6 +62,30 @@ static const unsigned long goodix_irq_flags[] = { · 20 unmodified lines
6062 IRQ_TYPE_LEVEL_HIGH,
6163 };
6264
65+/*
66+ * Those tablets have their coordinates origin at the bottom right
67+ * of the tablet, as if rotated 180 degrees
68+ */
69+static const struct dmi_system_id rotated_screen[] = {
70+#if defined(CONFIG_DMI) && defined(CONFIG_X86)
71+ {
72+ .ident = "WinBook TW100",
73+ .matches = {
74+ DMI_MATCH(DMI_SYS_VENDOR, "WinBook"),
75+ DMI_MATCH(DMI_PRODUCT_NAME, "TW100")
76+ }
77+ },
78+ {
79+ .ident = "WinBook TW700",
80+ .matches = {
81+ DMI_MATCH(DMI_SYS_VENDOR, "WinBook"),
82+ DMI_MATCH(DMI_PRODUCT_NAME, "TW700")
83+ },
84+ },
85+#endif
86+ {}
87+};
88+
6389 /**
6490 * goodix_i2c_read - read data from a register of the i2c slave device.
6591 *
@@ -129,6 +155,11 @@ static void goodix_ts_report_touch(struct goodix_ts_data *ts, u8 *coor_data) · 63 unmodified lines
129155 int input_y = get_unaligned_le16(&coor_data[3]);
130156 int input_w = get_unaligned_le16(&coor_data[5]);
131157
158+ if (ts->rotated_screen) {
159+ input_x = ts->abs_x_max - input_x;
160+ input_y = ts->abs_y_max - input_y;
161+ }
162+
132163 input_mt_slot(ts->input_dev, id);
133164 input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, true);
134165 input_report_abs(ts->input_dev, ABS_MT_POSITION_X, input_x);
@@ -223,6 +254,11 @@ static void goodix_read_config(struct goodix_ts_data *ts) · 88 unmodified lines
223254 ts->abs_y_max = GOODIX_MAX_HEIGHT;
224255 ts->max_touch_num = GOODIX_MAX_CONTACTS;
225256 }
257+
258+ ts->rotated_screen = dmi_check_system(rotated_screen);
259+ if (ts->rotated_screen)
260+ dev_dbg(&ts->client->dev,
261+ "Applying '180 degrees rotated screen' quirk\n");
226262 }
227263
228264 /**
drivers/input/touchscreen/usbtouchscreen.c+3−0
@@ -627,6 +627,9 @@ static int dmc_tsc10_init(struct usbtouch_usb *usbtouch) · 626 unmodified lines
627627 goto err_out;
628628 }
629629
630+ /* TSC-25 data sheet specifies a delay after the RESET command */
631+ msleep(150);
632+
630633 /* set coordinate output rate */
631634 buf[0] = buf[1] = 0xFF;
632635 ret = usb_control_msg(dev, usb_rcvctrlpipe (dev, 0),
drivers/input/touchscreen/zforce_ts.c+1−1
@@ -429,7 +429,7 @@ static int zforce_read_packet(struct zforce_ts *ts, u8 *buf) · 428 unmodified lines
429429 goto unlock;
430430 }
431431
432− if (buf[PAYLOAD_LENGTH] == 0) {
432+ if (buf[PAYLOAD_LENGTH] == 0 || buf[PAYLOAD_LENGTH] > FRAME_MAXSIZE) {
433433 dev_err(&client->dev, "invalid payload length: %d\n",
434434 buf[PAYLOAD_LENGTH]);
435435 ret = -EIO;
drivers/iommu/arm-smmu-v3.c+46−14
@@ -199,9 +199,10 @@ · 198 unmodified lines
199199 * Stream table.
200200 *
201201 * Linear: Enough to cover 1 << IDR1.SIDSIZE entries
202− * 2lvl: 8k L1 entries, 256 lazy entries per table (each table covers a PCI bus)
202+ * 2lvl: 128k L1 entries,
203+ * 256 lazy entries per table (each table covers a PCI bus)
203204 */
204−#define STRTAB_L1_SZ_SHIFT 16
205+#define STRTAB_L1_SZ_SHIFT 20
205206 #define STRTAB_SPLIT 8
206207
207208 #define STRTAB_L1_DESC_DWORDS 1
@@ -269,10 +270,10 @@ · 61 unmodified lines
269270 #define ARM64_TCR_TG0_SHIFT 14
270271 #define ARM64_TCR_TG0_MASK 0x3UL
271272 #define CTXDESC_CD_0_TCR_IRGN0_SHIFT 8
272−#define ARM64_TCR_IRGN0_SHIFT 24
273+#define ARM64_TCR_IRGN0_SHIFT 8
273274 #define ARM64_TCR_IRGN0_MASK 0x3UL
274275 #define CTXDESC_CD_0_TCR_ORGN0_SHIFT 10
275−#define ARM64_TCR_ORGN0_SHIFT 26
276+#define ARM64_TCR_ORGN0_SHIFT 10
276277 #define ARM64_TCR_ORGN0_MASK 0x3UL
277278 #define CTXDESC_CD_0_TCR_SH0_SHIFT 12
278279 #define ARM64_TCR_SH0_SHIFT 12
@@ -542,6 +543,9 @@ struct arm_smmu_device { · 263 unmodified lines
542543 #define ARM_SMMU_FEAT_HYP (1 << 12)
543544 u32 features;
544545
546+#define ARM_SMMU_OPT_SKIP_PREFETCH (1 << 0)
547+ u32 options;
548+
545549 struct arm_smmu_cmdq cmdq;
546550 struct arm_smmu_evtq evtq;
547551 struct arm_smmu_priq priq;
@@ -602,11 +606,35 @@ struct arm_smmu_domain { · 54 unmodified lines
602606 static DEFINE_SPINLOCK(arm_smmu_devices_lock);
603607 static LIST_HEAD(arm_smmu_devices);
604608
609+struct arm_smmu_option_prop {
610+ u32 opt;
611+ const char *prop;
612+};
613+
614+static struct arm_smmu_option_prop arm_smmu_options[] = {
615+ { ARM_SMMU_OPT_SKIP_PREFETCH, "hisilicon,broken-prefetch-cmd" },
616+ { 0, NULL},
617+};
618+
605619 static struct arm_smmu_domain *to_smmu_domain(struct iommu_domain *dom)
606620 {
607621 return container_of(dom, struct arm_smmu_domain, domain);
608622 }
609623
624+static void parse_driver_options(struct arm_smmu_device *smmu)
625+{
626+ int i = 0;
627+
628+ do {
629+ if (of_property_read_bool(smmu->dev->of_node,
630+ arm_smmu_options[i].prop)) {
631+ smmu->options |= arm_smmu_options[i].opt;
632+ dev_notice(smmu->dev, "option %s\n",
633+ arm_smmu_options[i].prop);
634+ }
635+ } while (arm_smmu_options[++i].opt);
636+}
637+
610638 /* Low-level queue manipulation functions */
611639 static bool queue_full(struct arm_smmu_queue *q)
612640 {
@@ -1036,7 +1064,8 @@ static void arm_smmu_write_strtab_ent(struct arm_smmu_device *smmu, u32 sid, · 423 unmodified lines
10361064 arm_smmu_sync_ste_for_sid(smmu, sid);
10371065
10381066 /* It's likely that we'll want to use the new STE soon */
1039− arm_smmu_cmdq_issue_cmd(smmu, &prefetch_cmd);
1067+ if (!(smmu->options & ARM_SMMU_OPT_SKIP_PREFETCH))
1068+ arm_smmu_cmdq_issue_cmd(smmu, &prefetch_cmd);
10401069 }
10411070
10421071 static void arm_smmu_init_bypass_stes(u64 *strtab, unsigned int nent)
@@ -1064,7 +1093,7 @@ static int arm_smmu_init_l2_strtab(struct arm_smmu_device *smmu, u32 sid) · 21 unmodified lines
10641093 return 0;
10651094
10661095 size = 1 << (STRTAB_SPLIT + ilog2(STRTAB_STE_DWORDS) + 3);
1067− strtab = &cfg->strtab[sid >> STRTAB_SPLIT << STRTAB_L1_DESC_DWORDS];
1096+ strtab = &cfg->strtab[(sid >> STRTAB_SPLIT) * STRTAB_L1_DESC_DWORDS];
10681097
10691098 desc->span = STRTAB_SPLIT + 1;
10701099 desc->l2ptr = dma_zalloc_coherent(smmu->dev, size, &desc->l2ptr_dma,
@@ -2020,21 +2049,23 @@ static int arm_smmu_init_strtab_2lvl(struct arm_smmu_device *smmu) · 949 unmodified lines
20202049 {
20212050 void *strtab;
20222051 u64 reg;
2023− u32 size;
2052+ u32 size, l1size;
20242053 int ret;
20252054 struct arm_smmu_strtab_cfg *cfg = &smmu->strtab_cfg;
20262055
20272056 /* Calculate the L1 size, capped to the SIDSIZE */
20282057 size = STRTAB_L1_SZ_SHIFT - (ilog2(STRTAB_L1_DESC_DWORDS) + 3);
20292058 size = min(size, smmu->sid_bits - STRTAB_SPLIT);
2030− if (size + STRTAB_SPLIT < smmu->sid_bits)
2059+ cfg->num_l1_ents = 1 << size;
2060+
2061+ size += STRTAB_SPLIT;
2062+ if (size < smmu->sid_bits)
20312063 dev_warn(smmu->dev,
20322064 "2-level strtab only covers %u/%u bits of SID\n",
2033− size + STRTAB_SPLIT, smmu->sid_bits);
2065+ size, smmu->sid_bits);
20342066
2035− cfg->num_l1_ents = 1 << size;
2036− size = cfg->num_l1_ents * (STRTAB_L1_DESC_DWORDS << 3);
2037− strtab = dma_zalloc_coherent(smmu->dev, size, &cfg->strtab_dma,
2067+ l1size = cfg->num_l1_ents * (STRTAB_L1_DESC_DWORDS << 3);
2068+ strtab = dma_zalloc_coherent(smmu->dev, l1size, &cfg->strtab_dma,
20382069 GFP_KERNEL);
20392070 if (!strtab) {
20402071 dev_err(smmu->dev,
@@ -2055,8 +2086,7 @@ static int arm_smmu_init_strtab_2lvl(struct arm_smmu_device *smmu) · 14 unmodified lines
20552086 ret = arm_smmu_init_l1_strtab(smmu);
20562087 if (ret)
20572088 dma_free_coherent(smmu->dev,
2058− cfg->num_l1_ents *
2059− (STRTAB_L1_DESC_DWORDS << 3),
2089+ l1size,
20602090 strtab,
20612091 cfg->strtab_dma);
20622092 return ret;
@@ -2573,6 +2603,8 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev) · 510 unmodified lines
25732603 if (irq > 0)
25742604 smmu->gerr_irq = irq;
25752605
2606+ parse_driver_options(smmu);
2607+
25762608 /* Probe the h/w */
25772609 ret = arm_smmu_device_probe(smmu);
25782610 if (ret)
drivers/iommu/intel-iommu.c+6−3
@@ -1830,8 +1830,9 @@ static int domain_init(struct dmar_domain *domain, int guest_width) · 1829 unmodified lines
18301830
18311831 static void domain_exit(struct dmar_domain *domain)
18321832 {
1833+ struct dmar_drhd_unit *drhd;
1834+ struct intel_iommu *iommu;
18331835 struct page *freelist = NULL;
1834− int i;
18351836
18361837 /* Domain 0 is reserved, so dont process it */
18371838 if (!domain)
@@ -1851,8 +1852,10 @@ static void domain_exit(struct dmar_domain *domain) · 13 unmodified lines
18511852
18521853 /* clear attached or cached domains */
18531854 rcu_read_lock();
1854− for_each_set_bit(i, domain->iommu_bmp, g_num_of_iommus)
1855− iommu_detach_domain(domain, g_iommus[i]);
1855+ for_each_active_iommu(iommu, drhd)
1856+ if (domain_type_is_vm(domain) ||
1857+ test_bit(iommu->seq_id, domain->iommu_bmp))
1858+ iommu_detach_domain(domain, iommu);
18561859 rcu_read_unlock();
18571860
18581861 dma_free_pagelist(freelist);
drivers/isdn/gigaset/ser-gigaset.c+10−25
@@ -524,9 +524,18 @@ gigaset_tty_open(struct tty_struct *tty) · 523 unmodified lines
524524 cs->hw.ser->tty = tty;
525525 atomic_set(&cs->hw.ser->refcnt, 1);
526526 init_completion(&cs->hw.ser->dead_cmp);
527−
528527 tty->disc_data = cs;
529528
529+ /* Set the amount of data we're willing to receive per call
530+ * from the hardware driver to half of the input buffer size
531+ * to leave some reserve.
532+ * Note: We don't do flow control towards the hardware driver.
533+ * If more data is received than will fit into the input buffer,
534+ * it will be dropped and an error will be logged. This should
535+ * never happen as the device is slow and the buffer size ample.
536+ */
537+ tty->receive_room = RBUFSIZE/2;
538+
530539 /* OK.. Initialization of the datastructures and the HW is done.. Now
531540 * startup system and notify the LL that we are ready to run
532541 */
@@ -597,28 +606,6 @@ static int gigaset_tty_hangup(struct tty_struct *tty) · 64 unmodified lines
597606 return 0;
598607 }
599608
600−/*
601− * Read on the tty.
602− * Unused, received data goes only to the Gigaset driver.
603− */
604−static ssize_t
605−gigaset_tty_read(struct tty_struct *tty, struct file *file,
606− unsigned char __user *buf, size_t count)
607−{
608− return -EAGAIN;
609−}
610−
611−/*
612− * Write on the tty.
613− * Unused, transmit data comes only from the Gigaset driver.
614− */
615−static ssize_t
616−gigaset_tty_write(struct tty_struct *tty, struct file *file,
617− const unsigned char *buf, size_t count)
618−{
619− return -EAGAIN;
620−}
621−
622609 /*
623610 * Ioctl on the tty.
624611 * Called in process context only.
@@ -752,8 +739,6 @@ static struct tty_ldisc_ops gigaset_ldisc = { · 127 unmodified lines
752739 .open = gigaset_tty_open,
753740 .close = gigaset_tty_close,
754741 .hangup = gigaset_tty_hangup,
755− .read = gigaset_tty_read,
756− .write = gigaset_tty_write,
757742 .ioctl = gigaset_tty_ioctl,
758743 .receive_buf = gigaset_tty_receive,
759744 .write_wakeup = gigaset_tty_wakeup,
drivers/md/bitmap.c+17−11
@@ -494,7 +494,7 @@ static int bitmap_new_disk_sb(struct bitmap *bitmap) · 493 unmodified lines
494494 bitmap_super_t *sb;
495495 unsigned long chunksize, daemon_sleep, write_behind;
496496
497− bitmap->storage.sb_page = alloc_page(GFP_KERNEL);
497+ bitmap->storage.sb_page = alloc_page(GFP_KERNEL | __GFP_ZERO);
498498 if (bitmap->storage.sb_page == NULL)
499499 return -ENOMEM;
500500 bitmap->storage.sb_page->index = 0;
@@ -541,6 +541,7 @@ static int bitmap_new_disk_sb(struct bitmap *bitmap) · 40 unmodified lines
541541 sb->state = cpu_to_le32(bitmap->flags);
542542 bitmap->events_cleared = bitmap->mddev->events;
543543 sb->events_cleared = cpu_to_le64(bitmap->mddev->events);
544+ bitmap->mddev->bitmap_info.nodes = 0;
544545
545546 kunmap_atomic(sb);
546547
@@ -558,6 +559,7 @@ static int bitmap_read_sb(struct bitmap *bitmap) · 11 unmodified lines
558559 unsigned long sectors_reserved = 0;
559560 int err = -EINVAL;
560561 struct page *sb_page;
562+ loff_t offset = bitmap->mddev->bitmap_info.offset;
561563
562564 if (!bitmap->storage.file && !bitmap->mddev->bitmap_info.offset) {
563565 chunksize = 128 * 1024 * 1024;
@@ -584,9 +586,9 @@ re_read: · 20 unmodified lines
584586 bm_blocks = ((bm_blocks+7) >> 3) + sizeof(bitmap_super_t);
585587 /* to 4k blocks */
586588 bm_blocks = DIV_ROUND_UP_SECTOR_T(bm_blocks, 4096);
587− bitmap->mddev->bitmap_info.offset += bitmap->cluster_slot * (bm_blocks << 3);
589+ offset = bitmap->mddev->bitmap_info.offset + (bitmap->cluster_slot * (bm_blocks << 3));
588590 pr_info("%s:%d bm slot: %d offset: %llu\n", __func__, __LINE__,
589− bitmap->cluster_slot, (unsigned long long)bitmap->mddev->bitmap_info.offset);
591+ bitmap->cluster_slot, offset);
590592 }
591593
592594 if (bitmap->storage.file) {
@@ -597,7 +599,7 @@ re_read: · 4 unmodified lines
597599 bitmap, bytes, sb_page);
598600 } else {
599601 err = read_sb_page(bitmap->mddev,
600− bitmap->mddev->bitmap_info.offset,
602+ offset,
601603 sb_page,
602604 0, sizeof(bitmap_super_t));
603605 }
@@ -611,8 +613,16 @@ re_read: · 7 unmodified lines
611613 daemon_sleep = le32_to_cpu(sb->daemon_sleep) * HZ;
612614 write_behind = le32_to_cpu(sb->write_behind);
613615 sectors_reserved = le32_to_cpu(sb->sectors_reserved);
614− nodes = le32_to_cpu(sb->nodes);
615− strlcpy(bitmap->mddev->bitmap_info.cluster_name, sb->cluster_name, 64);
616+ /* XXX: This is a hack to ensure that we don't use clustering
617+ * in case:
618+ * - dm-raid is in use and
619+ * - the nodes written in bitmap_sb is erroneous.
620+ */
621+ if (!bitmap->mddev->sync_super) {
622+ nodes = le32_to_cpu(sb->nodes);
623+ strlcpy(bitmap->mddev->bitmap_info.cluster_name,
624+ sb->cluster_name, 64);
625+ }
616626
617627 /* verify that the bitmap-specific fields are valid */
618628 if (sb->magic != cpu_to_le32(BITMAP_MAGIC))
@@ -671,7 +681,7 @@ out: · 52 unmodified lines
671681 kunmap_atomic(sb);
672682 /* Assiging chunksize is required for "re_read" */
673683 bitmap->mddev->bitmap_info.chunksize = chunksize;
674− if (nodes && (bitmap->cluster_slot < 0)) {
684+ if (err == 0 && nodes && (bitmap->cluster_slot < 0)) {
675685 err = md_setup_cluster(bitmap->mddev, nodes);
676686 if (err) {
677687 pr_err("%s: Could not setup cluster service (%d)\n",
@@ -1866,10 +1876,6 @@ int bitmap_copy_from_slot(struct mddev *mddev, int slot, · 1188 unmodified lines
18661876 if (IS_ERR(bitmap))
18671877 return PTR_ERR(bitmap);
18681878
1869− rv = bitmap_read_sb(bitmap);
1870− if (rv)
1871− goto err;
1872−
18731879 rv = bitmap_init_from_disk(bitmap, 0);
18741880 if (rv)
18751881 goto err;
drivers/md/md-cluster.c+11−1
@@ -44,6 +44,7 @@ struct resync_info { · 43 unmodified lines
4444
4545 /* md_cluster_info flags */
4646 #define MD_CLUSTER_WAITING_FOR_NEWDISK 1
47+#define MD_CLUSTER_SUSPEND_READ_BALANCING 2
4748
4849
4950 struct md_cluster_info {
@@ -275,6 +276,9 @@ clear_bit: · 225 unmodified lines
275276
276277 static void recover_prep(void *arg)
277278 {
279+ struct mddev *mddev = arg;
280+ struct md_cluster_info *cinfo = mddev->cluster_info;
281+ set_bit(MD_CLUSTER_SUSPEND_READ_BALANCING, &cinfo->state);
278282 }
279283
280284 static void recover_slot(void *arg, struct dlm_slot *slot)
@@ -307,6 +311,7 @@ static void recover_done(void *arg, struct dlm_slot *slots, · 26 unmodified lines
307311
308312 cinfo->slot_number = our_slot;
309313 complete(&cinfo->completion);
314+ clear_bit(MD_CLUSTER_SUSPEND_READ_BALANCING, &cinfo->state);
310315 }
311316
312317 static const struct dlm_lockspace_ops md_ls_ops = {
@@ -816,12 +821,17 @@ static void resync_finish(struct mddev *mddev) · 503 unmodified lines
816821 resync_send(mddev, RESYNCING, 0, 0);
817822 }
818823
819−static int area_resyncing(struct mddev *mddev, sector_t lo, sector_t hi)
824+static int area_resyncing(struct mddev *mddev, int direction,
825+ sector_t lo, sector_t hi)
820826 {
821827 struct md_cluster_info *cinfo = mddev->cluster_info;
822828 int ret = 0;
823829 struct suspend_info *s;
824830
831+ if ((direction == READ) &&
832+ test_bit(MD_CLUSTER_SUSPEND_READ_BALANCING, &cinfo->state))
833+ return 1;
834+
825835 spin_lock_irq(&cinfo->suspend_lock);
826836 if (list_empty(&cinfo->suspend_list))
827837 goto out;
drivers/md/md-cluster.h+1−1
@@ -18,7 +18,7 @@ struct md_cluster_operations { · 17 unmodified lines
1818 int (*metadata_update_start)(struct mddev *mddev);
1919 int (*metadata_update_finish)(struct mddev *mddev);
2020 int (*metadata_update_cancel)(struct mddev *mddev);
21− int (*area_resyncing)(struct mddev *mddev, sector_t lo, sector_t hi);
21+ int (*area_resyncing)(struct mddev *mddev, int direction, sector_t lo, sector_t hi);
2222 int (*add_new_disk_start)(struct mddev *mddev, struct md_rdev *rdev);
2323 int (*add_new_disk_finish)(struct mddev *mddev);
2424 int (*new_disk_ack)(struct mddev *mddev, bool ack);
drivers/md/md.c+3−1
@@ -5382,6 +5382,8 @@ static void __md_stop(struct mddev *mddev) · 5381 unmodified lines
53825382 {
53835383 struct md_personality *pers = mddev->pers;
53845384 mddev_detach(mddev);
5385+ /* Ensure ->event_work is done */
5386+ flush_workqueue(md_misc_wq);
53855387 spin_lock(&mddev->lock);
53865388 mddev->ready = 0;
53875389 mddev->pers = NULL;
@@ -7437,7 +7439,7 @@ int md_setup_cluster(struct mddev *mddev, int nodes) · 2049 unmodified lines
74377439 err = request_module("md-cluster");
74387440 if (err) {
74397441 pr_err("md-cluster module not found.\n");
7440− return err;
7442+ return -ENOENT;
74417443 }
74427444
74437445 spin_lock(&pers_lock);
drivers/md/raid1.c+5−4
@@ -336,7 +336,7 @@ static void raid1_end_read_request(struct bio *bio, int error) · 335 unmodified lines
336336 spin_lock_irqsave(&conf->device_lock, flags);
337337 if (r1_bio->mddev->degraded == conf->raid_disks ||
338338 (r1_bio->mddev->degraded == conf->raid_disks-1 &&
339− !test_bit(Faulty, &conf->mirrors[mirror].rdev->flags)))
339+ test_bit(In_sync, &conf->mirrors[mirror].rdev->flags)))
340340 uptodate = 1;
341341 spin_unlock_irqrestore(&conf->device_lock, flags);
342342 }
@@ -541,7 +541,7 @@ static int read_balance(struct r1conf *conf, struct r1bio *r1_bio, int *max_sect · 198 unmodified lines
541541
542542 if ((conf->mddev->recovery_cp < this_sector + sectors) ||
543543 (mddev_is_clustered(conf->mddev) &&
544− md_cluster_ops->area_resyncing(conf->mddev, this_sector,
544+ md_cluster_ops->area_resyncing(conf->mddev, READ, this_sector,
545545 this_sector + sectors)))
546546 choose_first = 1;
547547 else
@@ -1111,7 +1111,8 @@ static void make_request(struct mddev *mddev, struct bio * bio) · 563 unmodified lines
11111111 ((bio_end_sector(bio) > mddev->suspend_lo &&
11121112 bio->bi_iter.bi_sector < mddev->suspend_hi) ||
11131113 (mddev_is_clustered(mddev) &&
1114− md_cluster_ops->area_resyncing(mddev, bio->bi_iter.bi_sector, bio_end_sector(bio))))) {
1114+ md_cluster_ops->area_resyncing(mddev, WRITE,
1115+ bio->bi_iter.bi_sector, bio_end_sector(bio))))) {
11151116 /* As the suspend_* range is controlled by
11161117 * userspace, we want an interruptible
11171118 * wait.
@@ -1124,7 +1125,7 @@ static void make_request(struct mddev *mddev, struct bio * bio) · 6 unmodified lines
11241125 if (bio_end_sector(bio) <= mddev->suspend_lo ||
11251126 bio->bi_iter.bi_sector >= mddev->suspend_hi ||
11261127 (mddev_is_clustered(mddev) &&
1127− !md_cluster_ops->area_resyncing(mddev,
1128+ !md_cluster_ops->area_resyncing(mddev, WRITE,
11281129 bio->bi_iter.bi_sector, bio_end_sector(bio))))
11291130 break;
11301131 schedule();
drivers/md/raid10.c+4−1
@@ -3556,6 +3556,7 @@ static struct r10conf *setup_conf(struct mddev *mddev) · 3555 unmodified lines
35563556 /* far_copies must be 1 */
35573557 conf->prev.stride = conf->dev_sectors;
35583558 }
3559+ conf->reshape_safe = conf->reshape_progress;
35593560 spin_lock_init(&conf->device_lock);
35603561 INIT_LIST_HEAD(&conf->retry_list);
35613562
@@ -3760,7 +3761,6 @@ static int run(struct mddev *mddev) · 198 unmodified lines
37603761 }
37613762 conf->offset_diff = min_offset_diff;
37623763
3763− conf->reshape_safe = conf->reshape_progress;
37643764 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery);
37653765 clear_bit(MD_RECOVERY_CHECK, &mddev->recovery);
37663766 set_bit(MD_RECOVERY_RESHAPE, &mddev->recovery);
@@ -4103,6 +4103,7 @@ static int raid10_start_reshape(struct mddev *mddev) · 336 unmodified lines
41034103 conf->reshape_progress = size;
41044104 } else
41054105 conf->reshape_progress = 0;
4106+ conf->reshape_safe = conf->reshape_progress;
41064107 spin_unlock_irq(&conf->device_lock);
41074108
41084109 if (mddev->delta_disks && mddev->bitmap) {
@@ -4170,6 +4171,7 @@ abort: · 61 unmodified lines
41704171 rdev->new_data_offset = rdev->data_offset;
41714172 smp_wmb();
41724173 conf->reshape_progress = MaxSector;
4174+ conf->reshape_safe = MaxSector;
41734175 mddev->reshape_position = MaxSector;
41744176 spin_unlock_irq(&conf->device_lock);
41754177 return ret;
@@ -4524,6 +4526,7 @@ static void end_reshape(struct r10conf *conf) · 348 unmodified lines
45244526 md_finish_reshape(conf->mddev);
45254527 smp_wmb();
45264528 conf->reshape_progress = MaxSector;
4529+ conf->reshape_safe = MaxSector;
45274530 spin_unlock_irq(&conf->device_lock);
45284531
45294532 /* read-ahead size must cover two whole stripes, which is
drivers/md/raid5.c+28−7
@@ -2162,6 +2162,9 @@ static int resize_stripes(struct r5conf *conf, int newsize) · 2161 unmodified lines
21622162 if (!sc)
21632163 return -ENOMEM;
21642164
2165+ /* Need to ensure auto-resizing doesn't interfere */
2166+ mutex_lock(&conf->cache_size_mutex);
2167+
21652168 for (i = conf->max_nr_stripes; i; i--) {
21662169 nsh = alloc_stripe(sc, GFP_KERNEL);
21672170 if (!nsh)
@@ -2178,6 +2181,7 @@ static int resize_stripes(struct r5conf *conf, int newsize) · 10 unmodified lines
21782181 kmem_cache_free(sc, nsh);
21792182 }
21802183 kmem_cache_destroy(sc);
2184+ mutex_unlock(&conf->cache_size_mutex);
21812185 return -ENOMEM;
21822186 }
21832187 /* Step 2 - Must use GFP_NOIO now.
@@ -2224,6 +2228,7 @@ static int resize_stripes(struct r5conf *conf, int newsize) · 40 unmodified lines
22242228 } else
22252229 err = -ENOMEM;
22262230
2231+ mutex_unlock(&conf->cache_size_mutex);
22272232 /* Step 4, return new stripes to service */
22282233 while(!list_empty(&newstripes)) {
22292234 nsh = list_entry(newstripes.next, struct stripe_head, lru);
@@ -4061,8 +4066,10 @@ static void analyse_stripe(struct stripe_head *sh, struct stripe_head_state *s) · 1831 unmodified lines
40614066 &first_bad, &bad_sectors))
40624067 set_bit(R5_ReadRepl, &dev->flags);
40634068 else {
4064− if (rdev)
4069+ if (rdev && !test_bit(Faulty, &rdev->flags))
40654070 set_bit(R5_NeedReplace, &dev->flags);
4071+ else
4072+ clear_bit(R5_NeedReplace, &dev->flags);
40664073 rdev = rcu_dereference(conf->disks[i].rdev);
40674074 clear_bit(R5_ReadRepl, &dev->flags);
40684075 }
@@ -5857,12 +5864,14 @@ static void raid5d(struct md_thread *thread) · 1788 unmodified lines
58575864 pr_debug("%d stripes handled\n", handled);
58585865
58595866 spin_unlock_irq(&conf->device_lock);
5860− if (test_and_clear_bit(R5_ALLOC_MORE, &conf->cache_state)) {
5867+ if (test_and_clear_bit(R5_ALLOC_MORE, &conf->cache_state) &&
5868+ mutex_trylock(&conf->cache_size_mutex)) {
58615869 grow_one_stripe(conf, __GFP_NOWARN);
58625870 /* Set flag even if allocation failed. This helps
58635871 * slow down allocation requests when mem is short
58645872 */
58655873 set_bit(R5_DID_ALLOC, &conf->cache_state);
5874+ mutex_unlock(&conf->cache_size_mutex);
58665875 }
58675876
58685877 async_tx_issue_pending_all();
@@ -5894,18 +5903,22 @@ raid5_set_cache_size(struct mddev *mddev, int size) · 25 unmodified lines
58945903 return -EINVAL;
58955904
58965905 conf->min_nr_stripes = size;
5906+ mutex_lock(&conf->cache_size_mutex);
58975907 while (size < conf->max_nr_stripes &&
58985908 drop_one_stripe(conf))
58995909 ;
5910+ mutex_unlock(&conf->cache_size_mutex);
59005911
59015912
59025913 err = md_allow_write(mddev);
59035914 if (err)
59045915 return err;
59055916
5917+ mutex_lock(&conf->cache_size_mutex);
59065918 while (size > conf->max_nr_stripes)
59075919 if (!grow_one_stripe(conf, GFP_KERNEL))
59085920 break;
5921+ mutex_unlock(&conf->cache_size_mutex);
59095922
59105923 return 0;
59115924 }
@@ -6371,11 +6384,18 @@ static unsigned long raid5_cache_scan(struct shrinker *shrink, · 459 unmodified lines
63716384 struct shrink_control *sc)
63726385 {
63736386 struct r5conf *conf = container_of(shrink, struct r5conf, shrinker);
6374− int ret = 0;
6375− while (ret < sc->nr_to_scan) {
6376− if (drop_one_stripe(conf) == 0)
6377− return SHRINK_STOP;
6378− ret++;
6387+ unsigned long ret = SHRINK_STOP;
6388+
6389+ if (mutex_trylock(&conf->cache_size_mutex)) {
6390+ ret= 0;
6391+ while (ret < sc->nr_to_scan) {
6392+ if (drop_one_stripe(conf) == 0) {
6393+ ret = SHRINK_STOP;
6394+ break;
6395+ }
6396+ ret++;
6397+ }
6398+ mutex_unlock(&conf->cache_size_mutex);
63796399 }
63806400 return ret;
63816401 }
@@ -6444,6 +6464,7 @@ static struct r5conf *setup_conf(struct mddev *mddev) · 62 unmodified lines
64446464 goto abort;
64456465 spin_lock_init(&conf->device_lock);
64466466 seqcount_init(&conf->gen_lock);
6467+ mutex_init(&conf->cache_size_mutex);
64476468 init_waitqueue_head(&conf->wait_for_quiescent);
64486469 for (i = 0; i < NR_STRIPE_HASH_LOCKS; i++) {
64496470 init_waitqueue_head(&conf->wait_for_stripe[i]);
drivers/md/raid5.h+2−1
@@ -482,7 +482,8 @@ struct r5conf { · 481 unmodified lines
482482 */
483483 int active_name;
484484 char cache_name[2][32];
485− struct kmem_cache *slab_cache; /* for allocating stripes */
485+ struct kmem_cache *slab_cache; /* for allocating stripes */
486+ struct mutex cache_size_mutex; /* Protect changes to cache size */
486487
487488 int seq_flush, seq_write;
488489 int quiesce;
drivers/media/pci/ivtv/ivtvfb.c+9−6
@@ -38,6 +38,8 @@ · 37 unmodified lines
3838 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
3939 */
4040
41+#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
42+
4143 #include <linux/module.h>
4244 #include <linux/kernel.h>
4345 #include <linux/fb.h>
@@ -1171,6 +1173,13 @@ static int ivtvfb_init_card(struct ivtv *itv) · 1127 unmodified lines
11711173 {
11721174 int rc;
11731175
1176+#ifdef CONFIG_X86_64
1177+ if (pat_enabled()) {
1178+ pr_warn("ivtvfb needs PAT disabled, boot with nopat kernel parameter\n");
1179+ return -ENODEV;
1180+ }
1181+#endif
1182+
11741183 if (itv->osd_info) {
11751184 IVTVFB_ERR("Card %d already initialised\n", ivtvfb_card_id);
11761185 return -EBUSY;
@@ -1265,12 +1274,6 @@ static int __init ivtvfb_init(void) · 88 unmodified lines
12651274 int registered = 0;
12661275 int err;
12671276
1268−#ifdef CONFIG_X86_64
1269− if (WARN(pat_enabled(),
1270− "ivtvfb needs PAT disabled, boot with nopat kernel parameter\n")) {
1271− return -ENODEV;
1272− }
1273−#endif
12741277
12751278 if (ivtvfb_card_id < -1 || ivtvfb_card_id >= IVTV_MAX_CARDS) {
12761279 printk(KERN_ERR "ivtvfb: ivtvfb_card_id parameter is out of range (valid range: -1 - %d)\n",
drivers/misc/mei/main.c+1−1
@@ -682,7 +682,7 @@ int mei_register(struct mei_device *dev, struct device *parent) · 681 unmodified lines
682682 /* Fill in the data structures */
683683 devno = MKDEV(MAJOR(mei_devt), dev->minor);
684684 cdev_init(&dev->cdev, &mei_fops);
685− dev->cdev.owner = mei_fops.owner;
685+ dev->cdev.owner = parent->driver->owner;
686686
687687 /* Add the device */
688688 ret = cdev_add(&dev->cdev, devno, 1);
drivers/misc/mic/scif/scif_nodeqp.c+5−10
@@ -357,7 +357,7 @@ static void scif_p2p_freesg(struct scatterlist *sg) · 356 unmodified lines
357357 }
358358
359359 static struct scatterlist *
360−scif_p2p_setsg(void __iomem *va, int page_size, int page_cnt)
360+scif_p2p_setsg(phys_addr_t pa, int page_size, int page_cnt)
361361 {
362362 struct scatterlist *sg;
363363 struct page *page;
@@ -368,16 +368,11 @@ scif_p2p_setsg(void __iomem *va, int page_size, int page_cnt) · 4 unmodified lines
368368 return NULL;
369369 sg_init_table(sg, page_cnt);
370370 for (i = 0; i < page_cnt; i++) {
371− page = vmalloc_to_page((void __force *)va);
372− if (!page)
373− goto p2p_sg_err;
371+ page = pfn_to_page(pa >> PAGE_SHIFT);
374372 sg_set_page(&sg[i], page, page_size, 0);
375− va += page_size;
373+ pa += page_size;
376374 }
377375 return sg;
378−p2p_sg_err:
379− kfree(sg);
380− return NULL;
381376 }
382377
383378 /* Init p2p mappings required to access peerdev from scifdev */
@@ -395,14 +390,14 @@ scif_init_p2p_info(struct scif_dev *scifdev, struct scif_dev *peerdev) · 11 unmodified lines
395390 p2p = kzalloc(sizeof(*p2p), GFP_KERNEL);
396391 if (!p2p)
397392 return NULL;
398− p2p->ppi_sg[SCIF_PPI_MMIO] = scif_p2p_setsg(psdev->mmio->va,
393+ p2p->ppi_sg[SCIF_PPI_MMIO] = scif_p2p_setsg(psdev->mmio->pa,
399394 PAGE_SIZE, num_mmio_pages);
400395 if (!p2p->ppi_sg[SCIF_PPI_MMIO])
401396 goto free_p2p;
402397 p2p->sg_nentries[SCIF_PPI_MMIO] = num_mmio_pages;
403398 sg_page_shift = get_order(min(psdev->aper->len, (u64)(1 << 30)));
404399 num_aper_chunks = num_aper_pages >> (sg_page_shift - PAGE_SHIFT);
405− p2p->ppi_sg[SCIF_PPI_APER] = scif_p2p_setsg(psdev->aper->va,
400+ p2p->ppi_sg[SCIF_PPI_APER] = scif_p2p_setsg(psdev->aper->pa,
406401 1 << sg_page_shift,
407402 num_aper_chunks);
408403 p2p->sg_nentries[SCIF_PPI_APER] = num_aper_chunks;
drivers/mmc/card/block.c+2−0
@@ -208,6 +208,8 @@ static ssize_t power_ro_lock_show(struct device *dev, · 207 unmodified lines
208208
209209 ret = snprintf(buf, PAGE_SIZE, "%d\n", locked);
210210
211+ mmc_blk_put(md);
212+
211213 return ret;
212214 }
213215
drivers/mmc/host/Kconfig+1−0
@@ -779,6 +779,7 @@ config MMC_TOSHIBA_PCI · 778 unmodified lines
779779
780780 config MMC_MTK
781781 tristate "MediaTek SD/MMC Card Interface support"
782+ depends on HAS_DMA
782783 help
783784 This selects the MediaTek(R) Secure digital and Multimedia card Interface.
784785 If you have a machine with a integrated SD/MMC card reader, say Y or M here.
drivers/mmc/host/omap_hsmmc.c+6−5
@@ -1062,9 +1062,14 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host *host, int status) · 1061 unmodified lines
10621062
10631063 if (status & (CTO_EN | CCRC_EN))
10641064 end_cmd = 1;
1065+ if (host->data || host->response_busy) {
1066+ end_trans = !end_cmd;
1067+ host->response_busy = 0;
1068+ }
10651069 if (status & (CTO_EN | DTO_EN))
10661070 hsmmc_command_incomplete(host, -ETIMEDOUT, end_cmd);
1067− else if (status & (CCRC_EN | DCRC_EN))
1071+ else if (status & (CCRC_EN | DCRC_EN | DEB_EN | CEB_EN |
1072+ BADA_EN))
10681073 hsmmc_command_incomplete(host, -EILSEQ, end_cmd);
10691074
10701075 if (status & ACE_EN) {
@@ -1081,10 +1086,6 @@ static void omap_hsmmc_do_irq(struct omap_hsmmc_host *host, int status) · 10 unmodified lines
10811086 }
10821087 dev_dbg(mmc_dev(host->mmc), "AC12 err: 0x%x\n", ac12);
10831088 }
1084− if (host->data || host->response_busy) {
1085− end_trans = !end_cmd;
1086− host->response_busy = 0;
1087− }
10881089 }
10891090
10901091 OMAP_HSMMC_WRITE(host->base, STAT, status);
drivers/mmc/host/sdhci-esdhc-imx.c+104−106
@@ -581,13 +581,8 @@ static void esdhc_writeb_le(struct sdhci_host *host, u8 val, int reg) · 580 unmodified lines
581581 static unsigned int esdhc_pltfm_get_max_clock(struct sdhci_host *host)
582582 {
583583 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
584− struct pltfm_imx_data *imx_data = pltfm_host->priv;
585− struct esdhc_platform_data *boarddata = &imx_data->boarddata;
586584
587− if (boarddata->f_max && (boarddata->f_max < pltfm_host->clock))
588− return boarddata->f_max;
589− else
590− return pltfm_host->clock;
585+ return pltfm_host->clock;
591586 }
592587
593588 static unsigned int esdhc_pltfm_get_min_clock(struct sdhci_host *host)
@@ -878,34 +873,19 @@ static const struct sdhci_pltfm_data sdhci_esdhc_imx_pdata = { · 284 unmodified lines
878873 static int
879874 sdhci_esdhc_imx_probe_dt(struct platform_device *pdev,
880875 struct sdhci_host *host,
881− struct esdhc_platform_data *boarddata)
876+ struct pltfm_imx_data *imx_data)
882877 {
883878 struct device_node *np = pdev->dev.of_node;
884−
885− if (!np)
886− return -ENODEV;
887−
888− if (of_get_property(np, "non-removable", NULL))
889− boarddata->cd_type = ESDHC_CD_PERMANENT;
890−
891− if (of_get_property(np, "fsl,cd-controller", NULL))
892− boarddata->cd_type = ESDHC_CD_CONTROLLER;
879+ struct esdhc_platform_data *boarddata = &imx_data->boarddata;
880+ int ret;
893881
894882 if (of_get_property(np, "fsl,wp-controller", NULL))
895883 boarddata->wp_type = ESDHC_WP_CONTROLLER;
896884
897− boarddata->cd_gpio = of_get_named_gpio(np, "cd-gpios", 0);
898− if (gpio_is_valid(boarddata->cd_gpio))
899− boarddata->cd_type = ESDHC_CD_GPIO;
900−
901885 boarddata->wp_gpio = of_get_named_gpio(np, "wp-gpios", 0);
902886 if (gpio_is_valid(boarddata->wp_gpio))
903887 boarddata->wp_type = ESDHC_WP_GPIO;
904888
905− of_property_read_u32(np, "bus-width", &boarddata->max_bus_width);
906−
907− of_property_read_u32(np, "max-frequency", &boarddata->f_max);
908−
909889 if (of_find_property(np, "no-1-8-v", NULL))
910890 boarddata->support_vsel = false;
911891 else
@@ -916,29 +896,119 @@ sdhci_esdhc_imx_probe_dt(struct platform_device *pdev, · 4 unmodified lines
916896
917897 mmc_of_parse_voltage(np, &host->ocr_mask);
918898
899+ /* sdr50 and sdr104 needs work on 1.8v signal voltage */
900+ if ((boarddata->support_vsel) && esdhc_is_usdhc(imx_data) &&
901+ !IS_ERR(imx_data->pins_default)) {
902+ imx_data->pins_100mhz = pinctrl_lookup_state(imx_data->pinctrl,
903+ ESDHC_PINCTRL_STATE_100MHZ);
904+ imx_data->pins_200mhz = pinctrl_lookup_state(imx_data->pinctrl,
905+ ESDHC_PINCTRL_STATE_200MHZ);
906+ if (IS_ERR(imx_data->pins_100mhz) ||
907+ IS_ERR(imx_data->pins_200mhz)) {
908+ dev_warn(mmc_dev(host->mmc),
909+ "could not get ultra high speed state, work on normal mode\n");
910+ /*
911+ * fall back to not support uhs by specify no 1.8v quirk
912+ */
913+ host->quirks2 |= SDHCI_QUIRK2_NO_1_8_V;
914+ }
915+ } else {
916+ host->quirks2 |= SDHCI_QUIRK2_NO_1_8_V;
917+ }
918+
919919 /* call to generic mmc_of_parse to support additional capabilities */
920− return mmc_of_parse(host->mmc);
920+ ret = mmc_of_parse(host->mmc);
921+ if (ret)
922+ return ret;
923+
924+ if (!IS_ERR_VALUE(mmc_gpio_get_cd(host->mmc)))
925+ host->quirks &= ~SDHCI_QUIRK_BROKEN_CARD_DETECTION;
926+
927+ return 0;
921928 }
922929 #else
923930 static inline int
924931 sdhci_esdhc_imx_probe_dt(struct platform_device *pdev,
925932 struct sdhci_host *host,
926− struct esdhc_platform_data *boarddata)
933+ struct pltfm_imx_data *imx_data)
927934 {
928935 return -ENODEV;
929936 }
930937 #endif
931938
939+static int sdhci_esdhc_imx_probe_nondt(struct platform_device *pdev,
940+ struct sdhci_host *host,
941+ struct pltfm_imx_data *imx_data)
942+{
943+ struct esdhc_platform_data *boarddata = &imx_data->boarddata;
944+ int err;
945+
946+ if (!host->mmc->parent->platform_data) {
947+ dev_err(mmc_dev(host->mmc), "no board data!\n");
948+ return -EINVAL;
949+ }
950+
951+ imx_data->boarddata = *((struct esdhc_platform_data *)
952+ host->mmc->parent->platform_data);
953+ /* write_protect */
954+ if (boarddata->wp_type == ESDHC_WP_GPIO) {
955+ err = mmc_gpio_request_ro(host->mmc, boarddata->wp_gpio);
956+ if (err) {
957+ dev_err(mmc_dev(host->mmc),
958+ "failed to request write-protect gpio!\n");
959+ return err;
960+ }
961+ host->mmc->caps2 |= MMC_CAP2_RO_ACTIVE_HIGH;
962+ }
963+
964+ /* card_detect */
965+ switch (boarddata->cd_type) {
966+ case ESDHC_CD_GPIO:
967+ err = mmc_gpio_request_cd(host->mmc, boarddata->cd_gpio, 0);
968+ if (err) {
969+ dev_err(mmc_dev(host->mmc),
970+ "failed to request card-detect gpio!\n");
971+ return err;
972+ }
973+ /* fall through */
974+
975+ case ESDHC_CD_CONTROLLER:
976+ /* we have a working card_detect back */
977+ host->quirks &= ~SDHCI_QUIRK_BROKEN_CARD_DETECTION;
978+ break;
979+
980+ case ESDHC_CD_PERMANENT:
981+ host->mmc->caps |= MMC_CAP_NONREMOVABLE;
982+ break;
983+
984+ case ESDHC_CD_NONE:
985+ break;
986+ }
987+
988+ switch (boarddata->max_bus_width) {
989+ case 8:
990+ host->mmc->caps |= MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA;
991+ break;
992+ case 4:
993+ host->mmc->caps |= MMC_CAP_4_BIT_DATA;
994+ break;
995+ case 1:
996+ default:
997+ host->quirks |= SDHCI_QUIRK_FORCE_1_BIT_DATA;
998+ break;
999+ }
1000+
1001+ return 0;
1002+}
1003+
9321004 static int sdhci_esdhc_imx_probe(struct platform_device *pdev)
9331005 {
9341006 const struct of_device_id *of_id =
9351007 of_match_device(imx_esdhc_dt_ids, &pdev->dev);
9361008 struct sdhci_pltfm_host *pltfm_host;
9371009 struct sdhci_host *host;
938− struct esdhc_platform_data *boarddata;
9391010 int err;
9401011 struct pltfm_imx_data *imx_data;
941− bool dt = true;
9421012
9431013 host = sdhci_pltfm_init(pdev, &sdhci_esdhc_imx_pdata, 0);
9441014 if (IS_ERR(host))
@@ -1030,84 +1100,12 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) · 85 unmodified lines
10301100 if (imx_data->socdata->flags & ESDHC_FLAG_ERR004536)
10311101 host->quirks |= SDHCI_QUIRK_BROKEN_ADMA;
10321102
1033− boarddata = &imx_data->boarddata;
1034− if (sdhci_esdhc_imx_probe_dt(pdev, host, boarddata) < 0) {
1035− if (!host->mmc->parent->platform_data) {
1036− dev_err(mmc_dev(host->mmc), "no board data!\n");
1037− err = -EINVAL;
1038− goto disable_clk;
1039− }
1040− imx_data->boarddata = *((struct esdhc_platform_data *)
1041− host->mmc->parent->platform_data);
1042− dt = false;
1043− }
1044− /* write_protect */
1045− if (boarddata->wp_type == ESDHC_WP_GPIO && !dt) {
1046− err = mmc_gpio_request_ro(host->mmc, boarddata->wp_gpio);
1047− if (err) {
1048− dev_err(mmc_dev(host->mmc),
1049− "failed to request write-protect gpio!\n");
1050− goto disable_clk;
1051− }
1052− host->mmc->caps2 |= MMC_CAP2_RO_ACTIVE_HIGH;
1053− }
1054−
1055− /* card_detect */
1056− switch (boarddata->cd_type) {
1057− case ESDHC_CD_GPIO:
1058− if (dt)
1059− break;
1060− err = mmc_gpio_request_cd(host->mmc, boarddata->cd_gpio, 0);
1061− if (err) {
1062− dev_err(mmc_dev(host->mmc),
1063− "failed to request card-detect gpio!\n");
1064− goto disable_clk;
1065− }
1066− /* fall through */
1067−
1068− case ESDHC_CD_CONTROLLER:
1069− /* we have a working card_detect back */
1070− host->quirks &= ~SDHCI_QUIRK_BROKEN_CARD_DETECTION;
1071− break;
1072−
1073− case ESDHC_CD_PERMANENT:
1074− host->mmc->caps |= MMC_CAP_NONREMOVABLE;
1075− break;
1076−
1077− case ESDHC_CD_NONE:
1078− break;
1079− }
1080−
1081− switch (boarddata->max_bus_width) {
1082− case 8:
1083− host->mmc->caps |= MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA;
1084− break;
1085− case 4:
1086− host->mmc->caps |= MMC_CAP_4_BIT_DATA;
1087− break;
1088− case 1:
1089− default:
1090− host->quirks |= SDHCI_QUIRK_FORCE_1_BIT_DATA;
1091− break;
1092− }
1093−
1094− /* sdr50 and sdr104 needs work on 1.8v signal voltage */
1095− if ((boarddata->support_vsel) && esdhc_is_usdhc(imx_data) &&
1096− !IS_ERR(imx_data->pins_default)) {
1097− imx_data->pins_100mhz = pinctrl_lookup_state(imx_data->pinctrl,
1098− ESDHC_PINCTRL_STATE_100MHZ);
1099− imx_data->pins_200mhz = pinctrl_lookup_state(imx_data->pinctrl,
1100− ESDHC_PINCTRL_STATE_200MHZ);
1101− if (IS_ERR(imx_data->pins_100mhz) ||
1102− IS_ERR(imx_data->pins_200mhz)) {
1103− dev_warn(mmc_dev(host->mmc),
1104− "could not get ultra high speed state, work on normal mode\n");
1105− /* fall back to not support uhs by specify no 1.8v quirk */
1106− host->quirks2 |= SDHCI_QUIRK2_NO_1_8_V;
1107− }
1108− } else {
1109− host->quirks2 |= SDHCI_QUIRK2_NO_1_8_V;
1110− }
1103+ if (of_id)
1104+ err = sdhci_esdhc_imx_probe_dt(pdev, host, imx_data);
1105+ else
1106+ err = sdhci_esdhc_imx_probe_nondt(pdev, host, imx_data);
1107+ if (err)
1108+ goto disable_clk;
11111109
11121110 err = sdhci_add_host(host);
11131111 if (err)
drivers/mmc/host/sdhci-esdhc.h+1−1
@@ -45,6 +45,6 @@ · 44 unmodified lines
4545 #define ESDHC_DMA_SYSCTL 0x40c
4646 #define ESDHC_DMA_SNOOP 0x00000040
4747
48−#define ESDHC_HOST_CONTROL_RES 0x05
48+#define ESDHC_HOST_CONTROL_RES 0x01
4949
5050 #endif /* _DRIVERS_MMC_SDHCI_ESDHC_H */
drivers/mmc/host/sdhci-pxav3.c+1−0
@@ -411,6 +411,7 @@ static int sdhci_pxav3_probe(struct platform_device *pdev) · 410 unmodified lines
411411 goto err_of_parse;
412412 sdhci_get_of_property(pdev);
413413 pdata = pxav3_get_mmc_pdata(dev);
414+ pdev->dev.platform_data = pdata;
414415 } else if (pdata) {
415416 /* on-chip device */
416417 if (pdata->flags & PXA_FLAG_CARD_PERMANENT)
drivers/mmc/host/sdhci.c+12−4
@@ -2866,6 +2866,7 @@ int sdhci_add_host(struct sdhci_host *host) · 2865 unmodified lines
28662866 u32 max_current_caps;
28672867 unsigned int ocr_avail;
28682868 unsigned int override_timeout_clk;
2869+ u32 max_clk;
28692870 int ret;
28702871
28712872 WARN_ON(host == NULL);
@@ -2978,8 +2979,11 @@ int sdhci_add_host(struct sdhci_host *host) · 106 unmodified lines
29782979 GFP_KERNEL);
29792980 host->align_buffer = kmalloc(host->align_buffer_sz, GFP_KERNEL);
29802981 if (!host->adma_table || !host->align_buffer) {
2981− dma_free_coherent(mmc_dev(mmc), host->adma_table_sz,
2982− host->adma_table, host->adma_addr);
2982+ if (host->adma_table)
2983+ dma_free_coherent(mmc_dev(mmc),
2984+ host->adma_table_sz,
2985+ host->adma_table,
2986+ host->adma_addr);
29832987 kfree(host->align_buffer);
29842988 pr_warn("%s: Unable to allocate ADMA buffers - falling back to standard DMA\n",
29852989 mmc_hostname(mmc));
@@ -3047,18 +3051,22 @@ int sdhci_add_host(struct sdhci_host *host) · 61 unmodified lines
30473051 * Set host parameters.
30483052 */
30493053 mmc->ops = &sdhci_ops;
3050− mmc->f_max = host->max_clk;
3054+ max_clk = host->max_clk;
3055+
30513056 if (host->ops->get_min_clock)
30523057 mmc->f_min = host->ops->get_min_clock(host);
30533058 else if (host->version >= SDHCI_SPEC_300) {
30543059 if (host->clk_mul) {
30553060 mmc->f_min = (host->max_clk * host->clk_mul) / 1024;
3056− mmc->f_max = host->max_clk * host->clk_mul;
3061+ max_clk = host->max_clk * host->clk_mul;
30573062 } else
30583063 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_300;
30593064 } else
30603065 mmc->f_min = host->max_clk / SDHCI_MAX_DIV_SPEC_200;
30613066
3067+ if (!mmc->f_max || (mmc->f_max && (mmc->f_max > max_clk)))
3068+ mmc->f_max = max_clk;
3069+
30623070 if (!(host->quirks & SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK)) {
30633071 host->timeout_clk = (caps[0] & SDHCI_TIMEOUT_CLK_MASK) >>
30643072 SDHCI_TIMEOUT_CLK_SHIFT;
drivers/net/bonding/bond_main.c+31−3
@@ -625,6 +625,23 @@ static void bond_set_dev_addr(struct net_device *bond_dev, · 624 unmodified lines
625625 call_netdevice_notifiers(NETDEV_CHANGEADDR, bond_dev);
626626 }
627627
628+static struct slave *bond_get_old_active(struct bonding *bond,
629+ struct slave *new_active)
630+{
631+ struct slave *slave;
632+ struct list_head *iter;
633+
634+ bond_for_each_slave(bond, slave, iter) {
635+ if (slave == new_active)
636+ continue;
637+
638+ if (ether_addr_equal(bond->dev->dev_addr, slave->dev->dev_addr))
639+ return slave;
640+ }
641+
642+ return NULL;
643+}
644+
628645 /* bond_do_fail_over_mac
629646 *
630647 * Perform special MAC address swapping for fail_over_mac settings
@@ -652,6 +669,9 @@ static void bond_do_fail_over_mac(struct bonding *bond, · 21 unmodified lines
652669 if (!new_active)
653670 return;
654671
672+ if (!old_active)
673+ old_active = bond_get_old_active(bond, new_active);
674+
655675 if (old_active) {
656676 ether_addr_copy(tmp_mac, new_active->dev->dev_addr);
657677 ether_addr_copy(saddr.sa_data,
@@ -1725,9 +1745,16 @@ err_free: · 1067 unmodified lines
17251745
17261746 err_undo_flags:
17271747 /* Enslave of first slave has failed and we need to fix master's mac */
1728− if (!bond_has_slaves(bond) &&
1729− ether_addr_equal_64bits(bond_dev->dev_addr, slave_dev->dev_addr))
1730− eth_hw_addr_random(bond_dev);
1748+ if (!bond_has_slaves(bond)) {
1749+ if (ether_addr_equal_64bits(bond_dev->dev_addr,
1750+ slave_dev->dev_addr))
1751+ eth_hw_addr_random(bond_dev);
1752+ if (bond_dev->type != ARPHRD_ETHER) {
1753+ ether_setup(bond_dev);
1754+ bond_dev->flags |= IFF_MASTER;
1755+ bond_dev->priv_flags &= ~IFF_TX_SKB_SHARING;
1756+ }
1757+ }
17311758
17321759 return res;
17331760 }
@@ -1916,6 +1943,7 @@ static int bond_release_and_destroy(struct net_device *bond_dev, · 182 unmodified lines
19161943 bond_dev->priv_flags |= IFF_DISABLE_NETPOLL;
19171944 netdev_info(bond_dev, "Destroying bond %s\n",
19181945 bond_dev->name);
1946+ bond_remove_proc_entry(bond);
19191947 unregister_netdevice(bond_dev);
19201948 }
19211949 return ret;
drivers/net/can/at91_can.c+4−4
@@ -577,10 +577,10 @@ static void at91_rx_overflow_err(struct net_device *dev) · 576 unmodified lines
577577
578578 cf->can_id |= CAN_ERR_CRTL;
579579 cf->data[1] = CAN_ERR_CRTL_RX_OVERFLOW;
580− netif_receive_skb(skb);
581580
582581 stats->rx_packets++;
583582 stats->rx_bytes += cf->can_dlc;
583+ netif_receive_skb(skb);
584584 }
585585
586586 /**
@@ -642,10 +642,10 @@ static void at91_read_msg(struct net_device *dev, unsigned int mb) · 55 unmodified lines
642642 }
643643
644644 at91_read_mb(dev, mb, cf);
645− netif_receive_skb(skb);
646645
647646 stats->rx_packets++;
648647 stats->rx_bytes += cf->can_dlc;
648+ netif_receive_skb(skb);
649649
650650 can_led_event(dev, CAN_LED_EVENT_RX);
651651 }
@@ -802,10 +802,10 @@ static int at91_poll_err(struct net_device *dev, int quota, u32 reg_sr) · 150 unmodified lines
802802 return 0;
803803
804804 at91_poll_err_frame(dev, cf, reg_sr);
805− netif_receive_skb(skb);
806805
807806 dev->stats.rx_packets++;
808807 dev->stats.rx_bytes += cf->can_dlc;
808+ netif_receive_skb(skb);
809809
810810 return 1;
811811 }
@@ -1067,10 +1067,10 @@ static void at91_irq_err(struct net_device *dev) · 255 unmodified lines
10671067 return;
10681068
10691069 at91_irq_err_state(dev, cf, new_state);
1070− netif_rx(skb);
10711070
10721071 dev->stats.rx_packets++;
10731072 dev->stats.rx_bytes += cf->can_dlc;
1073+ netif_rx(skb);
10741074
10751075 priv->can.state = new_state;
10761076 }
drivers/net/can/bfin_can.c+2−4
@@ -424,10 +424,9 @@ static void bfin_can_rx(struct net_device *dev, u16 isrc) · 423 unmodified lines
424424 cf->data[6 - i] = (6 - i) < cf->can_dlc ? (val >> 8) : 0;
425425 }
426426
427− netif_rx(skb);
428−
429427 stats->rx_packets++;
430428 stats->rx_bytes += cf->can_dlc;
429+ netif_rx(skb);
431430 }
432431
433432 static int bfin_can_err(struct net_device *dev, u16 isrc, u16 status)
@@ -508,10 +507,9 @@ static int bfin_can_err(struct net_device *dev, u16 isrc, u16 status) · 74 unmodified lines
508507
509508 priv->can.state = state;
510509
511− netif_rx(skb);
512−
513510 stats->rx_packets++;
514511 stats->rx_bytes += cf->can_dlc;
512+ netif_rx(skb);
515513
516514 return 0;
517515 }
drivers/net/can/cc770/cc770.c+2−2
@@ -504,10 +504,10 @@ static void cc770_rx(struct net_device *dev, unsigned int mo, u8 ctrl1) · 503 unmodified lines
504504 for (i = 0; i < cf->can_dlc; i++)
505505 cf->data[i] = cc770_read_reg(priv, msgobj[mo].data[i]);
506506 }
507− netif_rx(skb);
508507
509508 stats->rx_packets++;
510509 stats->rx_bytes += cf->can_dlc;
510+ netif_rx(skb);
511511 }
512512
513513 static int cc770_err(struct net_device *dev, u8 status)
@@ -584,10 +584,10 @@ static int cc770_err(struct net_device *dev, u8 status) · 70 unmodified lines
584584 }
585585 }
586586
587− netif_rx(skb);
588587
589588 stats->rx_packets++;
590589 stats->rx_bytes += cf->can_dlc;
590+ netif_rx(skb);
591591
592592 return 0;
593593 }
drivers/net/can/flexcan.c+3−4
@@ -577,10 +577,10 @@ static int flexcan_poll_bus_err(struct net_device *dev, u32 reg_esr) · 576 unmodified lines
577577 return 0;
578578
579579 do_bus_err(dev, cf, reg_esr);
580− netif_receive_skb(skb);
581580
582581 dev->stats.rx_packets++;
583582 dev->stats.rx_bytes += cf->can_dlc;
583+ netif_receive_skb(skb);
584584
585585 return 1;
586586 }
@@ -622,10 +622,9 @@ static int flexcan_poll_state(struct net_device *dev, u32 reg_esr) · 35 unmodified lines
622622 if (unlikely(new_state == CAN_STATE_BUS_OFF))
623623 can_bus_off(dev);
624624
625− netif_receive_skb(skb);
626−
627625 dev->stats.rx_packets++;
628626 dev->stats.rx_bytes += cf->can_dlc;
627+ netif_receive_skb(skb);
629628
630629 return 1;
631630 }
@@ -670,10 +669,10 @@ static int flexcan_read_frame(struct net_device *dev) · 38 unmodified lines
670669 }
671670
672671 flexcan_read_fifo(dev, cf);
673− netif_receive_skb(skb);
674672
675673 stats->rx_packets++;
676674 stats->rx_bytes += cf->can_dlc;
675+ netif_receive_skb(skb);
677676
678677 can_led_event(dev, CAN_LED_EVENT_RX);
679678
drivers/net/can/grcan.c+2−1
@@ -1216,11 +1216,12 @@ static int grcan_receive(struct net_device *dev, int budget) · 1215 unmodified lines
12161216 cf->data[i] = (u8)(slot[j] >> shift);
12171217 }
12181218 }
1219− netif_receive_skb(skb);
12201219
12211220 /* Update statistics and read pointer */
12221221 stats->rx_packets++;
12231222 stats->rx_bytes += cf->can_dlc;
1223+ netif_receive_skb(skb);
1224+
12241225 rd = grcan_ring_add(rd, GRCAN_MSG_SIZE, dma->rx.size);
12251226 }
12261227
drivers/net/can/sja1000/sja1000.c+2−4
@@ -377,10 +377,9 @@ static void sja1000_rx(struct net_device *dev) · 376 unmodified lines
377377 /* release receive buffer */
378378 sja1000_write_cmdreg(priv, CMD_RRB);
379379
380− netif_rx(skb);
381−
382380 stats->rx_packets++;
383381 stats->rx_bytes += cf->can_dlc;
382+ netif_rx(skb);
384383
385384 can_led_event(dev, CAN_LED_EVENT_RX);
386385 }
@@ -484,10 +483,9 @@ static int sja1000_err(struct net_device *dev, uint8_t isrc, uint8_t status) · 97 unmodified lines
484483 can_bus_off(dev);
485484 }
486485
487− netif_rx(skb);
488−
489486 stats->rx_packets++;
490487 stats->rx_bytes += cf->can_dlc;
488+ netif_rx(skb);
491489
492490 return 0;
493491 }
drivers/net/can/slcan.c+1−1
@@ -218,10 +218,10 @@ static void slc_bump(struct slcan *sl) · 217 unmodified lines
218218
219219 memcpy(skb_put(skb, sizeof(struct can_frame)),
220220 &cf, sizeof(struct can_frame));
221− netif_rx_ni(skb);
222221
223222 sl->dev->stats.rx_packets++;
224223 sl->dev->stats.rx_bytes += cf.can_dlc;
224+ netif_rx_ni(skb);
225225 }
226226
227227 /* parse tty input stream */
drivers/net/can/spi/mcp251x.c+8−9
@@ -1086,8 +1086,8 @@ static int mcp251x_can_probe(struct spi_device *spi) · 1085 unmodified lines
10861086 if (ret)
10871087 goto out_clk;
10881088
1089− priv->power = devm_regulator_get(&spi->dev, "vdd");
1090− priv->transceiver = devm_regulator_get(&spi->dev, "xceiver");
1089+ priv->power = devm_regulator_get_optional(&spi->dev, "vdd");
1090+ priv->transceiver = devm_regulator_get_optional(&spi->dev, "xceiver");
10911091 if ((PTR_ERR(priv->power) == -EPROBE_DEFER) ||
10921092 (PTR_ERR(priv->transceiver) == -EPROBE_DEFER)) {
10931093 ret = -EPROBE_DEFER;
@@ -1222,17 +1222,16 @@ static int __maybe_unused mcp251x_can_resume(struct device *dev) · 128 unmodified lines
12221222 struct spi_device *spi = to_spi_device(dev);
12231223 struct mcp251x_priv *priv = spi_get_drvdata(spi);
12241224
1225− if (priv->after_suspend & AFTER_SUSPEND_POWER) {
1225+ if (priv->after_suspend & AFTER_SUSPEND_POWER)
12261226 mcp251x_power_enable(priv->power, 1);
1227+
1228+ if (priv->after_suspend & AFTER_SUSPEND_UP) {
1229+ mcp251x_power_enable(priv->transceiver, 1);
12271230 queue_work(priv->wq, &priv->restart_work);
12281231 } else {
1229− if (priv->after_suspend & AFTER_SUSPEND_UP) {
1230− mcp251x_power_enable(priv->transceiver, 1);
1231− queue_work(priv->wq, &priv->restart_work);
1232− } else {
1233− priv->after_suspend = 0;
1234− }
1232+ priv->after_suspend = 0;
12351233 }
1234+
12361235 priv->force_quit = 0;
12371236 enable_irq(spi->irq);
12381237 return 0;
drivers/net/can/ti_hecc.c+1−1
@@ -747,9 +747,9 @@ static int ti_hecc_error(struct net_device *ndev, int int_status, · 746 unmodified lines
747747 }
748748 }
749749
750− netif_rx(skb);
751750 stats->rx_packets++;
752751 stats->rx_bytes += cf->can_dlc;
752+ netif_rx(skb);
753753
754754 return 0;
755755 }
drivers/net/can/usb/ems_usb.c+2−4
@@ -324,10 +324,9 @@ static void ems_usb_rx_can_msg(struct ems_usb *dev, struct ems_cpc_msg *msg) · 323 unmodified lines
324324 cf->data[i] = msg->msg.can_msg.msg[i];
325325 }
326326
327− netif_rx(skb);
328−
329327 stats->rx_packets++;
330328 stats->rx_bytes += cf->can_dlc;
329+ netif_rx(skb);
331330 }
332331
333332 static void ems_usb_rx_err(struct ems_usb *dev, struct ems_cpc_msg *msg)
@@ -400,10 +399,9 @@ static void ems_usb_rx_err(struct ems_usb *dev, struct ems_cpc_msg *msg) · 66 unmodified lines
400399 stats->rx_errors++;
401400 }
402401
403− netif_rx(skb);
404−
405402 stats->rx_packets++;
406403 stats->rx_bytes += cf->can_dlc;
404+ netif_rx(skb);
407405 }
408406
409407 /*
drivers/net/can/usb/esd_usb2.c+2−4
@@ -301,13 +301,12 @@ static void esd_usb2_rx_event(struct esd_usb2_net_priv *priv, · 300 unmodified lines
301301 cf->data[7] = rxerr;
302302 }
303303
304− netif_rx(skb);
305−
306304 priv->bec.txerr = txerr;
307305 priv->bec.rxerr = rxerr;
308306
309307 stats->rx_packets++;
310308 stats->rx_bytes += cf->can_dlc;
309+ netif_rx(skb);
311310 }
312311 }
313312
@@ -347,10 +346,9 @@ static void esd_usb2_rx_can_msg(struct esd_usb2_net_priv *priv, · 33 unmodified lines
347346 cf->data[i] = msg->msg.rx.data[i];
348347 }
349348
350− netif_rx(skb);
351−
352349 stats->rx_packets++;
353350 stats->rx_bytes += cf->can_dlc;
351+ netif_rx(skb);
354352 }
355353
356354 return;
drivers/net/can/usb/peak_usb/pcan_usb.c+3−4
@@ -526,9 +526,9 @@ static int pcan_usb_decode_error(struct pcan_usb_msg_context *mc, u8 n, · 525 unmodified lines
526526 hwts->hwtstamp = timeval_to_ktime(tv);
527527 }
528528
529− netif_rx(skb);
530529 mc->netdev->stats.rx_packets++;
531530 mc->netdev->stats.rx_bytes += cf->can_dlc;
531+ netif_rx(skb);
532532
533533 return 0;
534534 }
@@ -659,12 +659,11 @@ static int pcan_usb_decode_data(struct pcan_usb_msg_context *mc, u8 status_len) · 124 unmodified lines
659659 hwts = skb_hwtstamps(skb);
660660 hwts->hwtstamp = timeval_to_ktime(tv);
661661
662− /* push the skb */
663− netif_rx(skb);
664−
665662 /* update statistics */
666663 mc->netdev->stats.rx_packets++;
667664 mc->netdev->stats.rx_bytes += cf->can_dlc;
665+ /* push the skb */
666+ netif_rx(skb);
668667
669668 return 0;
670669
drivers/net/can/usb/peak_usb/pcan_usb_pro.c+2−2
@@ -553,9 +553,9 @@ static int pcan_usb_pro_handle_canmsg(struct pcan_usb_pro_interface *usb_if, · 552 unmodified lines
553553 hwts = skb_hwtstamps(skb);
554554 hwts->hwtstamp = timeval_to_ktime(tv);
555555
556− netif_rx(skb);
557556 netdev->stats.rx_packets++;
558557 netdev->stats.rx_bytes += can_frame->can_dlc;
558+ netif_rx(skb);
559559
560560 return 0;
561561 }
@@ -670,9 +670,9 @@ static int pcan_usb_pro_handle_error(struct pcan_usb_pro_interface *usb_if, · 108 unmodified lines
670670 peak_usb_get_ts_tv(&usb_if->time_ref, le32_to_cpu(er->ts32), &tv);
671671 hwts = skb_hwtstamps(skb);
672672 hwts->hwtstamp = timeval_to_ktime(tv);
673− netif_rx(skb);
674673 netdev->stats.rx_packets++;
675674 netdev->stats.rx_bytes += can_frame->can_dlc;
675+ netif_rx(skb);
676676
677677 return 0;
678678 }
drivers/net/can/usb/usb_8dev.c+2−4
@@ -461,10 +461,9 @@ static void usb_8dev_rx_err_msg(struct usb_8dev_priv *priv, · 460 unmodified lines
461461 priv->bec.txerr = txerr;
462462 priv->bec.rxerr = rxerr;
463463
464− netif_rx(skb);
465−
466464 stats->rx_packets++;
467465 stats->rx_bytes += cf->can_dlc;
466+ netif_rx(skb);
468467 }
469468
470469 /* Read data and status frames */
@@ -494,10 +493,9 @@ static void usb_8dev_rx_can_msg(struct usb_8dev_priv *priv, · 23 unmodified lines
494493 else
495494 memcpy(cf->data, msg->data, cf->can_dlc);
496495
497− netif_rx(skb);
498−
499496 stats->rx_packets++;
500497 stats->rx_bytes += cf->can_dlc;
498+ netif_rx(skb);
501499
502500 can_led_event(priv->netdev, CAN_LED_EVENT_RX);
503501 } else {
drivers/net/dsa/bcm_sf2.c+13−2
@@ -696,9 +696,20 @@ static int bcm_sf2_sw_setup(struct dsa_switch *ds) · 695 unmodified lines
696696 }
697697
698698 /* Include the pseudo-PHY address and the broadcast PHY address to
699− * divert reads towards our workaround
699+ * divert reads towards our workaround. This is only required for
700+ * 7445D0, since 7445E0 disconnects the internal switch pseudo-PHY such
701+ * that we can use the regular SWITCH_MDIO master controller instead.
702+ *
703+ * By default, DSA initializes ds->phys_mii_mask to ds->phys_port_mask
704+ * to have a 1:1 mapping between Port address and PHY address in order
705+ * to utilize the slave_mii_bus instance to read from Port PHYs. This is
706+ * not what we want here, so we initialize phys_mii_mask 0 to always
707+ * utilize the "master" MDIO bus backed by the "mdio-unimac" driver.
700708 */
701− ds->phys_mii_mask |= ((1 << BRCM_PSEUDO_PHY_ADDR) | (1 << 0));
709+ if (of_machine_is_compatible("brcm,bcm7445d0"))
710+ ds->phys_mii_mask |= ((1 << BRCM_PSEUDO_PHY_ADDR) | (1 << 0));
711+ else
712+ ds->phys_mii_mask = 0;
702713
703714 rev = reg_readl(priv, REG_SWITCH_REVISION);
704715 priv->hw_params.top_rev = (rev >> SWITCH_TOP_REV_SHIFT) &
drivers/net/dsa/mv88e6xxx.c+1−1
@@ -1163,7 +1163,7 @@ int mv88e6xxx_leave_bridge(struct dsa_switch *ds, int port, u32 br_port_mask) · 1162 unmodified lines
11631163
11641164 newfid = __ffs(ps->fid_mask);
11651165 ps->fid[port] = newfid;
1166− ps->fid_mask &= (1 << newfid);
1166+ ps->fid_mask &= ~(1 << newfid);
11671167 ps->bridge_mask[fid] &= ~(1 << port);
11681168 ps->bridge_mask[newfid] = 1 << port;
11691169
drivers/net/ethernet/freescale/fec_main.c+13−75
@@ -24,7 +24,6 @@ · 23 unmodified lines
2424 #include <linux/module.h>
2525 #include <linux/kernel.h>
2626 #include <linux/string.h>
27−#include <linux/pm_runtime.h>
2827 #include <linux/ptrace.h>
2928 #include <linux/errno.h>
3029 #include <linux/ioport.h>
@@ -78,7 +77,6 @@ static void fec_enet_itr_coal_init(struct net_device *ndev); · 47 unmodified lines
7877 #define FEC_ENET_RAEM_V 0x8
7978 #define FEC_ENET_RAFL_V 0x8
8079 #define FEC_ENET_OPD_V 0xFFF0
81−#define FEC_MDIO_PM_TIMEOUT 100 /* ms */
8280
8381 static struct platform_device_id fec_devtype[] = {
8482 {
@@ -1769,13 +1767,7 @@ static void fec_enet_adjust_link(struct net_device *ndev) · 1684 unmodified lines
17691767 static int fec_enet_mdio_read(struct mii_bus *bus, int mii_id, int regnum)
17701768 {
17711769 struct fec_enet_private *fep = bus->priv;
1772− struct device *dev = &fep->pdev->dev;
17731770 unsigned long time_left;
1774− int ret = 0;
1775−
1776− ret = pm_runtime_get_sync(dev);
1777− if (IS_ERR_VALUE(ret))
1778− return ret;
17791771
17801772 fep->mii_timeout = 0;
17811773 init_completion(&fep->mdio_done);
@@ -1791,30 +1783,18 @@ static int fec_enet_mdio_read(struct mii_bus *bus, int mii_id, int regnum) · 9 unmodified lines
17911783 if (time_left == 0) {
17921784 fep->mii_timeout = 1;
17931785 netdev_err(fep->netdev, "MDIO read timeout\n");
1794− ret = -ETIMEDOUT;
1795− goto out;
1786+ return -ETIMEDOUT;
17961787 }
17971788
1798− ret = FEC_MMFR_DATA(readl(fep->hwp + FEC_MII_DATA));
1799−
1800−out:
1801− pm_runtime_mark_last_busy(dev);
1802− pm_runtime_put_autosuspend(dev);
1803−
1804− return ret;
1789+ /* return value */
1790+ return FEC_MMFR_DATA(readl(fep->hwp + FEC_MII_DATA));
18051791 }
18061792
18071793 static int fec_enet_mdio_write(struct mii_bus *bus, int mii_id, int regnum,
18081794 u16 value)
18091795 {
18101796 struct fec_enet_private *fep = bus->priv;
1811− struct device *dev = &fep->pdev->dev;
18121797 unsigned long time_left;
1813− int ret = 0;
1814−
1815− ret = pm_runtime_get_sync(dev);
1816− if (IS_ERR_VALUE(ret))
1817− return ret;
18181798
18191799 fep->mii_timeout = 0;
18201800 init_completion(&fep->mdio_done);
@@ -1831,13 +1811,10 @@ static int fec_enet_mdio_write(struct mii_bus *bus, int mii_id, int regnum, · 10 unmodified lines
18311811 if (time_left == 0) {
18321812 fep->mii_timeout = 1;
18331813 netdev_err(fep->netdev, "MDIO write timeout\n");
1834− ret = -ETIMEDOUT;
1814+ return -ETIMEDOUT;
18351815 }
18361816
1837− pm_runtime_mark_last_busy(dev);
1838− pm_runtime_put_autosuspend(dev);
1839−
1840− return ret;
1817+ return 0;
18411818 }
18421819
18431820 static int fec_enet_clk_enable(struct net_device *ndev, bool enable)
@@ -1849,6 +1826,9 @@ static int fec_enet_clk_enable(struct net_device *ndev, bool enable) · 5 unmodified lines
18491826 ret = clk_prepare_enable(fep->clk_ahb);
18501827 if (ret)
18511828 return ret;
1829+ ret = clk_prepare_enable(fep->clk_ipg);
1830+ if (ret)
1831+ goto failed_clk_ipg;
18521832 if (fep->clk_enet_out) {
18531833 ret = clk_prepare_enable(fep->clk_enet_out);
18541834 if (ret)
@@ -1872,6 +1852,7 @@ static int fec_enet_clk_enable(struct net_device *ndev, bool enable) · 17 unmodified lines
18721852 }
18731853 } else {
18741854 clk_disable_unprepare(fep->clk_ahb);
1855+ clk_disable_unprepare(fep->clk_ipg);
18751856 if (fep->clk_enet_out)
18761857 clk_disable_unprepare(fep->clk_enet_out);
18771858 if (fep->clk_ptp) {
@@ -1893,6 +1874,8 @@ failed_clk_ptp: · 15 unmodified lines
18931874 if (fep->clk_enet_out)
18941875 clk_disable_unprepare(fep->clk_enet_out);
18951876 failed_clk_enet_out:
1877+ clk_disable_unprepare(fep->clk_ipg);
1878+failed_clk_ipg:
18961879 clk_disable_unprepare(fep->clk_ahb);
18971880
18981881 return ret;
@@ -2864,14 +2847,10 @@ fec_enet_open(struct net_device *ndev) · 965 unmodified lines
28642847 struct fec_enet_private *fep = netdev_priv(ndev);
28652848 int ret;
28662849
2867− ret = pm_runtime_get_sync(&fep->pdev->dev);
2868− if (IS_ERR_VALUE(ret))
2869− return ret;
2870−
28712850 pinctrl_pm_select_default_state(&fep->pdev->dev);
28722851 ret = fec_enet_clk_enable(ndev, true);
28732852 if (ret)
2874− goto clk_enable;
2853+ return ret;
28752854
28762855 /* I should reset the ring buffers here, but I don't yet know
28772856 * a simple way to do that.
@@ -2902,9 +2881,6 @@ err_enet_mii_probe: · 24 unmodified lines
29022881 fec_enet_free_buffers(ndev);
29032882 err_enet_alloc:
29042883 fec_enet_clk_enable(ndev, false);
2905−clk_enable:
2906− pm_runtime_mark_last_busy(&fep->pdev->dev);
2907− pm_runtime_put_autosuspend(&fep->pdev->dev);
29082884 pinctrl_pm_select_sleep_state(&fep->pdev->dev);
29092885 return ret;
29102886 }
@@ -2927,9 +2903,6 @@ fec_enet_close(struct net_device *ndev) · 16 unmodified lines
29272903
29282904 fec_enet_clk_enable(ndev, false);
29292905 pinctrl_pm_select_sleep_state(&fep->pdev->dev);
2930− pm_runtime_mark_last_busy(&fep->pdev->dev);
2931− pm_runtime_put_autosuspend(&fep->pdev->dev);
2932−
29332906 fec_enet_free_buffers(ndev);
29342907
29352908 return 0;
@@ -3415,10 +3388,6 @@ fec_probe(struct platform_device *pdev) · 479 unmodified lines
34153388 if (ret)
34163389 goto failed_clk;
34173390
3418− ret = clk_prepare_enable(fep->clk_ipg);
3419− if (ret)
3420− goto failed_clk_ipg;
3421−
34223391 fep->reg_phy = devm_regulator_get(&pdev->dev, "phy");
34233392 if (!IS_ERR(fep->reg_phy)) {
34243393 ret = regulator_enable(fep->reg_phy);
@@ -3465,8 +3434,6 @@ fec_probe(struct platform_device *pdev) · 40 unmodified lines
34653434 netif_carrier_off(ndev);
34663435 fec_enet_clk_enable(ndev, false);
34673436 pinctrl_pm_select_sleep_state(&pdev->dev);
3468− pm_runtime_set_active(&pdev->dev);
3469− pm_runtime_enable(&pdev->dev);
34703437
34713438 ret = register_netdev(ndev);
34723439 if (ret)
@@ -3480,12 +3447,6 @@ fec_probe(struct platform_device *pdev) · 7 unmodified lines
34803447
34813448 fep->rx_copybreak = COPYBREAK_DEFAULT;
34823449 INIT_WORK(&fep->tx_timeout_work, fec_enet_timeout_work);
3483−
3484− pm_runtime_set_autosuspend_delay(&pdev->dev, FEC_MDIO_PM_TIMEOUT);
3485− pm_runtime_use_autosuspend(&pdev->dev);
3486− pm_runtime_mark_last_busy(&pdev->dev);
3487− pm_runtime_put_autosuspend(&pdev->dev);
3488−
34893450 return 0;
34903451
34913452 failed_register:
@@ -3496,8 +3457,6 @@ failed_init: · 4 unmodified lines
34963457 if (fep->reg_phy)
34973458 regulator_disable(fep->reg_phy);
34983459 failed_regulator:
3499− clk_disable_unprepare(fep->clk_ipg);
3500−failed_clk_ipg:
35013460 fec_enet_clk_enable(ndev, false);
35023461 failed_clk:
35033462 failed_phy:
@@ -3609,28 +3568,7 @@ failed_clk: · 105 unmodified lines
36093568 return ret;
36103569 }
36113570
3612−static int __maybe_unused fec_runtime_suspend(struct device *dev)
3613−{
3614− struct net_device *ndev = dev_get_drvdata(dev);
3615− struct fec_enet_private *fep = netdev_priv(ndev);
3616−
3617− clk_disable_unprepare(fep->clk_ipg);
3618−
3619− return 0;
3620−}
3621−
3622−static int __maybe_unused fec_runtime_resume(struct device *dev)
3623−{
3624− struct net_device *ndev = dev_get_drvdata(dev);
3625− struct fec_enet_private *fep = netdev_priv(ndev);
3626−
3627− return clk_prepare_enable(fep->clk_ipg);
3628−}
3629−
3630−static const struct dev_pm_ops fec_pm_ops = {
3631− SET_SYSTEM_SLEEP_PM_OPS(fec_suspend, fec_resume)
3632− SET_RUNTIME_PM_OPS(fec_runtime_suspend, fec_runtime_resume, NULL)
3633−};
3571+static SIMPLE_DEV_PM_OPS(fec_pm_ops, fec_suspend, fec_resume);
36343572
36353573 static struct platform_driver fec_driver = {
36363574 .driver = {
drivers/net/ethernet/marvell/mvneta.c+10−12
@@ -1462,7 +1462,7 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, · 1461 unmodified lines
14621462 struct mvneta_rx_queue *rxq)
14631463 {
14641464 struct net_device *dev = pp->dev;
1465− int rx_done, rx_filled;
1465+ int rx_done;
14661466 u32 rcvd_pkts = 0;
14671467 u32 rcvd_bytes = 0;
14681468
@@ -1473,7 +1473,6 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, · 4 unmodified lines
14731473 rx_todo = rx_done;
14741474
14751475 rx_done = 0;
1476− rx_filled = 0;
14771476
14781477 /* Fairness NAPI loop */
14791478 while (rx_done < rx_todo) {
@@ -1484,7 +1483,6 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, · 4 unmodified lines
14841483 int rx_bytes, err;
14851484
14861485 rx_done++;
1487− rx_filled++;
14881486 rx_status = rx_desc->status;
14891487 rx_bytes = rx_desc->data_size - (ETH_FCS_LEN + MVNETA_MH_SIZE);
14901488 data = (unsigned char *)rx_desc->buf_cookie;
@@ -1524,6 +1522,14 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, · 33 unmodified lines
15241522 continue;
15251523 }
15261524
1525+ /* Refill processing */
1526+ err = mvneta_rx_refill(pp, rx_desc);
1527+ if (err) {
1528+ netdev_err(dev, "Linux processing - Can't refill\n");
1529+ rxq->missed++;
1530+ goto err_drop_frame;
1531+ }
1532+
15271533 skb = build_skb(data, pp->frag_size > PAGE_SIZE ? 0 : pp->frag_size);
15281534 if (!skb)
15291535 goto err_drop_frame;
@@ -1543,14 +1549,6 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, · 13 unmodified lines
15431549 mvneta_rx_csum(pp, rx_status, skb);
15441550
15451551 napi_gro_receive(&pp->napi, skb);
1546−
1547− /* Refill processing */
1548− err = mvneta_rx_refill(pp, rx_desc);
1549− if (err) {
1550− netdev_err(dev, "Linux processing - Can't refill\n");
1551− rxq->missed++;
1552− rx_filled--;
1553− }
15541552 }
15551553
15561554 if (rcvd_pkts) {
@@ -1563,7 +1561,7 @@ static int mvneta_rx(struct mvneta_port *pp, int rx_todo, · 6 unmodified lines
15631561 }
15641562
15651563 /* Update rxq management counters */
1566− mvneta_rxq_desc_num_update(pp, rxq, rx_done, rx_filled);
1564+ mvneta_rxq_desc_num_update(pp, rxq, rx_done, rx_done);
15671565
15681566 return rx_done;
15691567 }
drivers/net/ethernet/renesas/ravb_main.c+38−36
@@ -228,9 +228,7 @@ static void ravb_ring_format(struct net_device *ndev, int q) · 227 unmodified lines
228228 struct ravb_desc *desc = NULL;
229229 int rx_ring_size = sizeof(*rx_desc) * priv->num_rx_ring[q];
230230 int tx_ring_size = sizeof(*tx_desc) * priv->num_tx_ring[q];
231− struct sk_buff *skb;
232231 dma_addr_t dma_addr;
233− void *buffer;
234232 int i;
235233
236234 priv->cur_rx[q] = 0;
@@ -241,41 +239,28 @@ static void ravb_ring_format(struct net_device *ndev, int q) · 4 unmodified lines
241239 memset(priv->rx_ring[q], 0, rx_ring_size);
242240 /* Build RX ring buffer */
243241 for (i = 0; i < priv->num_rx_ring[q]; i++) {
244− priv->rx_skb[q][i] = NULL;
245− skb = netdev_alloc_skb(ndev, PKT_BUF_SZ + RAVB_ALIGN - 1);
246− if (!skb)
247− break;
248− ravb_set_buffer_align(skb);
249242 /* RX descriptor */
250243 rx_desc = &priv->rx_ring[q][i];
251244 /* The size of the buffer should be on 16-byte boundary. */
252245 rx_desc->ds_cc = cpu_to_le16(ALIGN(PKT_BUF_SZ, 16));
253− dma_addr = dma_map_single(&ndev->dev, skb->data,
246+ dma_addr = dma_map_single(&ndev->dev, priv->rx_skb[q][i]->data,
254247 ALIGN(PKT_BUF_SZ, 16),
255248 DMA_FROM_DEVICE);
256− if (dma_mapping_error(&ndev->dev, dma_addr)) {
257− dev_kfree_skb(skb);
258− break;
259− }
260− priv->rx_skb[q][i] = skb;
249+ /* We just set the data size to 0 for a failed mapping which
250+ * should prevent DMA from happening...
251+ */
252+ if (dma_mapping_error(&ndev->dev, dma_addr))
253+ rx_desc->ds_cc = cpu_to_le16(0);
261254 rx_desc->dptr = cpu_to_le32(dma_addr);
262255 rx_desc->die_dt = DT_FEMPTY;
263256 }
264257 rx_desc = &priv->rx_ring[q][i];
265258 rx_desc->dptr = cpu_to_le32((u32)priv->rx_desc_dma[q]);
266259 rx_desc->die_dt = DT_LINKFIX; /* type */
267− priv->dirty_rx[q] = (u32)(i - priv->num_rx_ring[q]);
268260
269261 memset(priv->tx_ring[q], 0, tx_ring_size);
270262 /* Build TX ring buffer */
271263 for (i = 0; i < priv->num_tx_ring[q]; i++) {
272− priv->tx_skb[q][i] = NULL;
273− priv->tx_buffers[q][i] = NULL;
274− buffer = kmalloc(PKT_BUF_SZ + RAVB_ALIGN - 1, GFP_KERNEL);
275− if (!buffer)
276− break;
277− /* Aligned TX buffer */
278− priv->tx_buffers[q][i] = buffer;
279264 tx_desc = &priv->tx_ring[q][i];
280265 tx_desc->die_dt = DT_EEMPTY;
281266 }
@@ -298,7 +283,10 @@ static void ravb_ring_format(struct net_device *ndev, int q) · 16 unmodified lines
298283 static int ravb_ring_init(struct net_device *ndev, int q)
299284 {
300285 struct ravb_private *priv = netdev_priv(ndev);
286+ struct sk_buff *skb;
301287 int ring_size;
288+ void *buffer;
289+ int i;
302290
303291 /* Allocate RX and TX skb rings */
304292 priv->rx_skb[q] = kcalloc(priv->num_rx_ring[q],
@@ -308,12 +296,28 @@ static int ravb_ring_init(struct net_device *ndev, int q) · 3 unmodified lines
308296 if (!priv->rx_skb[q] || !priv->tx_skb[q])
309297 goto error;
310298
299+ for (i = 0; i < priv->num_rx_ring[q]; i++) {
300+ skb = netdev_alloc_skb(ndev, PKT_BUF_SZ + RAVB_ALIGN - 1);
301+ if (!skb)
302+ goto error;
303+ ravb_set_buffer_align(skb);
304+ priv->rx_skb[q][i] = skb;
305+ }
306+
311307 /* Allocate rings for the aligned buffers */
312308 priv->tx_buffers[q] = kcalloc(priv->num_tx_ring[q],
313309 sizeof(*priv->tx_buffers[q]), GFP_KERNEL);
314310 if (!priv->tx_buffers[q])
315311 goto error;
316312
313+ for (i = 0; i < priv->num_tx_ring[q]; i++) {
314+ buffer = kmalloc(PKT_BUF_SZ + RAVB_ALIGN - 1, GFP_KERNEL);
315+ if (!buffer)
316+ goto error;
317+ /* Aligned TX buffer */
318+ priv->tx_buffers[q][i] = buffer;
319+ }
320+
317321 /* Allocate all RX descriptors. */
318322 ring_size = sizeof(struct ravb_ex_rx_desc) * (priv->num_rx_ring[q] + 1);
319323 priv->rx_ring[q] = dma_alloc_coherent(NULL, ring_size,
@@ -524,6 +528,10 @@ static bool ravb_rx(struct net_device *ndev, int *quota, int q) · 204 unmodified lines
524528 if (--boguscnt < 0)
525529 break;
526530
531+ /* We use 0-byte descriptors to mark the DMA mapping errors */
532+ if (!pkt_len)
533+ continue;
534+
527535 if (desc_status & MSC_MC)
528536 stats->multicast++;
529537
@@ -543,10 +551,9 @@ static bool ravb_rx(struct net_device *ndev, int *quota, int q) · 13 unmodified lines
543551
544552 skb = priv->rx_skb[q][entry];
545553 priv->rx_skb[q][entry] = NULL;
546− dma_sync_single_for_cpu(&ndev->dev,
547− le32_to_cpu(desc->dptr),
548− ALIGN(PKT_BUF_SZ, 16),
549− DMA_FROM_DEVICE);
554+ dma_unmap_single(&ndev->dev, le32_to_cpu(desc->dptr),
555+ ALIGN(PKT_BUF_SZ, 16),
556+ DMA_FROM_DEVICE);
550557 get_ts &= (q == RAVB_NC) ?
551558 RAVB_RXTSTAMP_TYPE_V2_L2_EVENT :
552559 ~RAVB_RXTSTAMP_TYPE_V2_L2_EVENT;
@@ -584,17 +591,15 @@ static bool ravb_rx(struct net_device *ndev, int *quota, int q) · 31 unmodified lines
584591 if (!skb)
585592 break; /* Better luck next round. */
586593 ravb_set_buffer_align(skb);
587− dma_unmap_single(&ndev->dev, le32_to_cpu(desc->dptr),
588− ALIGN(PKT_BUF_SZ, 16),
589− DMA_FROM_DEVICE);
590594 dma_addr = dma_map_single(&ndev->dev, skb->data,
591595 le16_to_cpu(desc->ds_cc),
592596 DMA_FROM_DEVICE);
593597 skb_checksum_none_assert(skb);
594− if (dma_mapping_error(&ndev->dev, dma_addr)) {
595− dev_kfree_skb_any(skb);
596− break;
597− }
598+ /* We just set the data size to 0 for a failed mapping
599+ * which should prevent DMA from happening...
600+ */
601+ if (dma_mapping_error(&ndev->dev, dma_addr))
602+ desc->ds_cc = cpu_to_le16(0);
598603 desc->dptr = cpu_to_le32(dma_addr);
599604 priv->rx_skb[q][entry] = skb;
600605 }
@@ -1279,7 +1284,6 @@ static netdev_tx_t ravb_start_xmit(struct sk_buff *skb, struct net_device *ndev) · 678 unmodified lines
12791284 u32 dma_addr;
12801285 void *buffer;
12811286 u32 entry;
1282− u32 tccr;
12831287
12841288 spin_lock_irqsave(&priv->lock, flags);
12851289 if (priv->cur_tx[q] - priv->dirty_tx[q] >= priv->num_tx_ring[q]) {
@@ -1328,9 +1332,7 @@ static netdev_tx_t ravb_start_xmit(struct sk_buff *skb, struct net_device *ndev) · 42 unmodified lines
13281332 dma_wmb();
13291333 desc->die_dt = DT_FSINGLE;
13301334
1331− tccr = ravb_read(ndev, TCCR);
1332− if (!(tccr & (TCCR_TSRQ0 << q)))
1333− ravb_write(ndev, tccr | (TCCR_TSRQ0 << q), TCCR);
1335+ ravb_write(ndev, ravb_read(ndev, TCCR) | (TCCR_TSRQ0 << q), TCCR);
13341336
13351337 priv->cur_tx[q]++;
13361338 if (priv->cur_tx[q] - priv->dirty_tx[q] >= priv->num_tx_ring[q] &&
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c+1−1
@@ -2843,7 +2843,7 @@ int stmmac_dvr_probe(struct device *device, · 2842 unmodified lines
28432843 if (res->mac)
28442844 memcpy(priv->dev->dev_addr, res->mac, ETH_ALEN);
28452845
2846− dev_set_drvdata(device, priv);
2846+ dev_set_drvdata(device, priv->dev);
28472847
28482848 /* Verify driver arguments */
28492849 stmmac_verify_args();
drivers/net/ethernet/ti/cpsw.c+3−6
@@ -793,9 +793,7 @@ static irqreturn_t cpsw_rx_interrupt(int irq, void *dev_id) · 792 unmodified lines
793793 static int cpsw_poll(struct napi_struct *napi, int budget)
794794 {
795795 struct cpsw_priv *priv = napi_to_priv(napi);
796− int num_tx, num_rx;
797−
798− num_tx = cpdma_chan_process(priv->txch, 128);
796+ int num_rx;
799797
800798 num_rx = cpdma_chan_process(priv->rxch, budget);
801799 if (num_rx < budget) {
@@ -810,9 +808,8 @@ static int cpsw_poll(struct napi_struct *napi, int budget) · 8 unmodified lines
810808 }
811809 }
812810
813− if (num_rx || num_tx)
814− cpsw_dbg(priv, intr, "poll %d rx, %d tx pkts\n",
815− num_rx, num_tx);
811+ if (num_rx)
812+ cpsw_dbg(priv, intr, "poll %d rx pkts\n", num_rx);
816813
817814 return num_rx;
818815 }
drivers/net/ethernet/ti/netcp_core.c+1−1
@@ -1617,11 +1617,11 @@ static int netcp_ndo_open(struct net_device *ndev) · 1616 unmodified lines
16171617 }
16181618 mutex_unlock(&netcp_modules_lock);
16191619
1620− netcp_rxpool_refill(netcp);
16211620 napi_enable(&netcp->rx_napi);
16221621 napi_enable(&netcp->tx_napi);
16231622 knav_queue_enable_notify(netcp->tx_compl_q);
16241623 knav_queue_enable_notify(netcp->rx_queue);
1624+ netcp_rxpool_refill(netcp);
16251625 netif_tx_wake_all_queues(ndev);
16261626 dev_dbg(netcp->ndev_dev, "netcp device %s opened\n", ndev->name);
16271627 return 0;
drivers/net/ipvlan/ipvlan.h+6−3
@@ -67,8 +67,6 @@ struct ipvl_dev { · 66 unmodified lines
6767 struct ipvl_port *port;
6868 struct net_device *phy_dev;
6969 struct list_head addrs;
70− int ipv4cnt;
71− int ipv6cnt;
7270 struct ipvl_pcpu_stats __percpu *pcpu_stats;
7371 DECLARE_BITMAP(mac_filters, IPVLAN_MAC_FILTER_SIZE);
7472 netdev_features_t sfeatures;
@@ -106,6 +104,11 @@ static inline struct ipvl_port *ipvlan_port_get_rcu(const struct net_device *d) · 31 unmodified lines
106104 return rcu_dereference(d->rx_handler_data);
107105 }
108106
107+static inline struct ipvl_port *ipvlan_port_get_rcu_bh(const struct net_device *d)
108+{
109+ return rcu_dereference_bh(d->rx_handler_data);
110+}
111+
109112 static inline struct ipvl_port *ipvlan_port_get_rtnl(const struct net_device *d)
110113 {
111114 return rtnl_dereference(d->rx_handler_data);
@@ -124,5 +127,5 @@ struct ipvl_addr *ipvlan_find_addr(const struct ipvl_dev *ipvlan, · 12 unmodified lines
124127 bool ipvlan_addr_busy(struct ipvl_port *port, void *iaddr, bool is_v6);
125128 struct ipvl_addr *ipvlan_ht_addr_lookup(const struct ipvl_port *port,
126129 const void *iaddr, bool is_v6);
127−void ipvlan_ht_addr_del(struct ipvl_addr *addr, bool sync);
130+void ipvlan_ht_addr_del(struct ipvl_addr *addr);
128131 #endif /* __IPVLAN_H */
drivers/net/ipvlan/ipvlan_core.c+2−4
@@ -85,11 +85,9 @@ void ipvlan_ht_addr_add(struct ipvl_dev *ipvlan, struct ipvl_addr *addr) · 84 unmodified lines
8585 hlist_add_head_rcu(&addr->hlnode, &port->hlhead[hash]);
8686 }
8787
88−void ipvlan_ht_addr_del(struct ipvl_addr *addr, bool sync)
88+void ipvlan_ht_addr_del(struct ipvl_addr *addr)
8989 {
9090 hlist_del_init_rcu(&addr->hlnode);
91− if (sync)
92− synchronize_rcu();
9391 }
9492
9593 struct ipvl_addr *ipvlan_find_addr(const struct ipvl_dev *ipvlan,
@@ -531,7 +529,7 @@ static int ipvlan_xmit_mode_l2(struct sk_buff *skb, struct net_device *dev) · 435 unmodified lines
531529 int ipvlan_queue_xmit(struct sk_buff *skb, struct net_device *dev)
532530 {
533531 struct ipvl_dev *ipvlan = netdev_priv(dev);
534− struct ipvl_port *port = ipvlan_port_get_rcu(ipvlan->phy_dev);
532+ struct ipvl_port *port = ipvlan_port_get_rcu_bh(ipvlan->phy_dev);
535533
536534 if (!port)
537535 goto out;
drivers/net/ipvlan/ipvlan_main.c+19−23
@@ -153,10 +153,9 @@ static int ipvlan_open(struct net_device *dev) · 152 unmodified lines
153153 else
154154 dev->flags &= ~IFF_NOARP;
155155
156− if (ipvlan->ipv6cnt > 0 || ipvlan->ipv4cnt > 0) {
157− list_for_each_entry(addr, &ipvlan->addrs, anode)
158− ipvlan_ht_addr_add(ipvlan, addr);
159− }
156+ list_for_each_entry(addr, &ipvlan->addrs, anode)
157+ ipvlan_ht_addr_add(ipvlan, addr);
158+
160159 return dev_uc_add(phy_dev, phy_dev->dev_addr);
161160 }
162161
@@ -171,10 +170,9 @@ static int ipvlan_stop(struct net_device *dev) · 8 unmodified lines
171170
172171 dev_uc_del(phy_dev, phy_dev->dev_addr);
173172
174− if (ipvlan->ipv6cnt > 0 || ipvlan->ipv4cnt > 0) {
175− list_for_each_entry(addr, &ipvlan->addrs, anode)
176− ipvlan_ht_addr_del(addr, !dev->dismantle);
177− }
173+ list_for_each_entry(addr, &ipvlan->addrs, anode)
174+ ipvlan_ht_addr_del(addr);
175+
178176 return 0;
179177 }
180178
@@ -471,8 +469,6 @@ static int ipvlan_link_new(struct net *src_net, struct net_device *dev, · 290 unmodified lines
471469 ipvlan->port = port;
472470 ipvlan->sfeatures = IPVLAN_FEATURES;
473471 INIT_LIST_HEAD(&ipvlan->addrs);
474− ipvlan->ipv4cnt = 0;
475− ipvlan->ipv6cnt = 0;
476472
477473 /* TODO Probably put random address here to be presented to the
478474 * world but keep using the physical-dev address for the outgoing
@@ -508,12 +504,12 @@ static void ipvlan_link_delete(struct net_device *dev, struct list_head *head) · 29 unmodified lines
508504 struct ipvl_dev *ipvlan = netdev_priv(dev);
509505 struct ipvl_addr *addr, *next;
510506
511− if (ipvlan->ipv6cnt > 0 || ipvlan->ipv4cnt > 0) {
512− list_for_each_entry_safe(addr, next, &ipvlan->addrs, anode) {
513− ipvlan_ht_addr_del(addr, !dev->dismantle);
514− list_del(&addr->anode);
515− }
507+ list_for_each_entry_safe(addr, next, &ipvlan->addrs, anode) {
508+ ipvlan_ht_addr_del(addr);
509+ list_del(&addr->anode);
510+ kfree_rcu(addr, rcu);
516511 }
512+
517513 list_del_rcu(&ipvlan->pnode);
518514 unregister_netdevice_queue(dev, head);
519515 netdev_upper_dev_unlink(ipvlan->phy_dev, dev);
@@ -627,7 +623,7 @@ static int ipvlan_add_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr) · 107 unmodified lines
627623 memcpy(&addr->ip6addr, ip6_addr, sizeof(struct in6_addr));
628624 addr->atype = IPVL_IPV6;
629625 list_add_tail(&addr->anode, &ipvlan->addrs);
630− ipvlan->ipv6cnt++;
626+
631627 /* If the interface is not up, the address will be added to the hash
632628 * list by ipvlan_open.
633629 */
@@ -645,10 +641,8 @@ static void ipvlan_del_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr) · 11 unmodified lines
645641 if (!addr)
646642 return;
647643
648− ipvlan_ht_addr_del(addr, true);
644+ ipvlan_ht_addr_del(addr);
649645 list_del(&addr->anode);
650− ipvlan->ipv6cnt--;
651− WARN_ON(ipvlan->ipv6cnt < 0);
652646 kfree_rcu(addr, rcu);
653647
654648 return;
@@ -661,6 +655,10 @@ static int ipvlan_addr6_event(struct notifier_block *unused, · 6 unmodified lines
661655 struct net_device *dev = (struct net_device *)if6->idev->dev;
662656 struct ipvl_dev *ipvlan = netdev_priv(dev);
663657
658+ /* FIXME IPv6 autoconf calls us from bh without RTNL */
659+ if (in_softirq())
660+ return NOTIFY_DONE;
661+
664662 if (!netif_is_ipvlan(dev))
665663 return NOTIFY_DONE;
666664
@@ -699,7 +697,7 @@ static int ipvlan_add_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr) · 32 unmodified lines
699697 memcpy(&addr->ip4addr, ip4_addr, sizeof(struct in_addr));
700698 addr->atype = IPVL_IPV4;
701699 list_add_tail(&addr->anode, &ipvlan->addrs);
702− ipvlan->ipv4cnt++;
700+
703701 /* If the interface is not up, the address will be added to the hash
704702 * list by ipvlan_open.
705703 */
@@ -717,10 +715,8 @@ static void ipvlan_del_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr) · 11 unmodified lines
717715 if (!addr)
718716 return;
719717
720− ipvlan_ht_addr_del(addr, true);
718+ ipvlan_ht_addr_del(addr);
721719 list_del(&addr->anode);
722− ipvlan->ipv4cnt--;
723− WARN_ON(ipvlan->ipv4cnt < 0);
724720 kfree_rcu(addr, rcu);
725721
726722 return;
drivers/net/phy/dp83867.c+1−1
@@ -164,7 +164,7 @@ static int dp83867_config_init(struct phy_device *phydev) · 163 unmodified lines
164164 return ret;
165165 }
166166
167− if ((phydev->interface >= PHY_INTERFACE_MODE_RGMII_ID) ||
167+ if ((phydev->interface >= PHY_INTERFACE_MODE_RGMII_ID) &&
168168 (phydev->interface <= PHY_INTERFACE_MODE_RGMII_RXID)) {
169169 val = phy_read_mmd_indirect(phydev, DP83867_RGMIICTL,
170170 DP83867_DEVADDR, phydev->addr);
drivers/net/phy/mdio_bus.c+17−2
@@ -421,6 +421,8 @@ static int mdio_bus_match(struct device *dev, struct device_driver *drv) · 420 unmodified lines
421421 {
422422 struct phy_device *phydev = to_phy_device(dev);
423423 struct phy_driver *phydrv = to_phy_driver(drv);
424+ const int num_ids = ARRAY_SIZE(phydev->c45_ids.device_ids);
425+ int i;
424426
425427 if (of_driver_match_device(dev, drv))
426428 return 1;
@@ -428,8 +430,21 @@ static int mdio_bus_match(struct device *dev, struct device_driver *drv) · 1 unmodified line
428430 if (phydrv->match_phy_device)
429431 return phydrv->match_phy_device(phydev);
430432
431− return (phydrv->phy_id & phydrv->phy_id_mask) ==
432− (phydev->phy_id & phydrv->phy_id_mask);
433+ if (phydev->is_c45) {
434+ for (i = 1; i < num_ids; i++) {
435+ if (!(phydev->c45_ids.devices_in_package & (1 << i)))
436+ continue;
437+
438+ if ((phydrv->phy_id & phydrv->phy_id_mask) ==
439+ (phydev->c45_ids.device_ids[i] &
440+ phydrv->phy_id_mask))
441+ return 1;
442+ }
443+ return 0;
444+ } else {
445+ return (phydrv->phy_id & phydrv->phy_id_mask) ==
446+ (phydev->phy_id & phydrv->phy_id_mask);
447+ }
433448 }
434449
435450 #ifdef CONFIG_PM
drivers/net/usb/qmi_wwan.c+1−0
@@ -757,6 +757,7 @@ static const struct usb_device_id products[] = { · 756 unmodified lines
757757 {QMI_FIXED_INTF(0x1199, 0x901c, 8)}, /* Sierra Wireless EM7700 */
758758 {QMI_FIXED_INTF(0x1199, 0x901f, 8)}, /* Sierra Wireless EM7355 */
759759 {QMI_FIXED_INTF(0x1199, 0x9041, 8)}, /* Sierra Wireless MC7305/MC7355 */
760+ {QMI_FIXED_INTF(0x1199, 0x9041, 10)}, /* Sierra Wireless MC7305/MC7355 */
760761 {QMI_FIXED_INTF(0x1199, 0x9051, 8)}, /* Netgear AirCard 340U */
761762 {QMI_FIXED_INTF(0x1199, 0x9053, 8)}, /* Sierra Wireless Modem */
762763 {QMI_FIXED_INTF(0x1199, 0x9054, 8)}, /* Sierra Wireless Modem */
drivers/net/virtio_net.c+2−1
@@ -1828,7 +1828,8 @@ static int virtnet_probe(struct virtio_device *vdev) · 1827 unmodified lines
18281828 else
18291829 vi->hdr_len = sizeof(struct virtio_net_hdr);
18301830
1831− if (virtio_has_feature(vdev, VIRTIO_F_ANY_LAYOUT))
1831+ if (virtio_has_feature(vdev, VIRTIO_F_ANY_LAYOUT) ||
1832+ virtio_has_feature(vdev, VIRTIO_F_VERSION_1))
18321833 vi->any_header_sg = true;
18331834
18341835 if (virtio_has_feature(vdev, VIRTIO_NET_F_CTRL_VQ))
drivers/net/wireless/ath/ath9k/hw.c+1−0
@@ -279,6 +279,7 @@ static void ath9k_hw_read_revisions(struct ath_hw *ah) · 278 unmodified lines
279279 return;
280280 case AR9300_DEVID_QCA956X:
281281 ah->hw_version.macVersion = AR_SREV_VERSION_9561;
282+ return;
282283 }
283284
284285 val = REG_READ(ah, AR_SREV) & AR_SREV_ID;
drivers/net/wireless/iwlwifi/iwl-fh.h+6−0
@@ -438,6 +438,12 @@ static inline unsigned int FH_MEM_CBBC_QUEUE(unsigned int chnl) · 437 unmodified lines
438438 #define RX_QUEUE_MASK 255
439439 #define RX_QUEUE_SIZE_LOG 8
440440
441+/*
442+ * RX related structures and functions
443+ */
444+#define RX_FREE_BUFFERS 64
445+#define RX_LOW_WATERMARK 8
446+
441447 /**
442448 * struct iwl_rb_status - reserve buffer status
443449 * host memory mapped FH registers
drivers/net/wireless/iwlwifi/iwl-nvm-parse.c+5−7
@@ -540,13 +540,11 @@ static void iwl_set_hw_address_family_8000(struct device *dev, · 539 unmodified lines
540540 hw_addr = (const u8 *)(mac_override +
541541 MAC_ADDRESS_OVERRIDE_FAMILY_8000);
542542
543− /* The byte order is little endian 16 bit, meaning 214365 */
544− data->hw_addr[0] = hw_addr[1];
545− data->hw_addr[1] = hw_addr[0];
546− data->hw_addr[2] = hw_addr[3];
547− data->hw_addr[3] = hw_addr[2];
548− data->hw_addr[4] = hw_addr[5];
549− data->hw_addr[5] = hw_addr[4];
543+ /*
544+ * Store the MAC address from MAO section.
545+ * No byte swapping is required in MAO section
546+ */
547+ memcpy(data->hw_addr, hw_addr, ETH_ALEN);
550548
551549 /*
552550 * Force the use of the OTP MAC address in case of reserved MAC
drivers/net/wireless/iwlwifi/mvm/fw-api-scan.h+2−1
@@ -660,7 +660,8 @@ struct iwl_scan_config { · 659 unmodified lines
660660 * iwl_umac_scan_flags
661661 *@IWL_UMAC_SCAN_FLAG_PREEMPTIVE: scan process triggered by this scan request
662662 * can be preempted by other scan requests with higher priority.
663− * The low priority scan is aborted.
663+ * The low priority scan will be resumed when the higher proirity scan is
664+ * completed.
664665 *@IWL_UMAC_SCAN_FLAG_START_NOTIF: notification will be sent to the driver
665666 * when scan starts.
666667 */
drivers/net/wireless/iwlwifi/mvm/scan.c+3−0
@@ -1109,6 +1109,9 @@ static int iwl_mvm_scan_umac(struct iwl_mvm *mvm, struct ieee80211_vif *vif, · 1108 unmodified lines
11091109 cmd->uid = cpu_to_le32(uid);
11101110 cmd->general_flags = cpu_to_le32(iwl_mvm_scan_umac_flags(mvm, params));
11111111
1112+ if (type == IWL_MVM_SCAN_SCHED)
1113+ cmd->flags = cpu_to_le32(IWL_UMAC_SCAN_FLAG_PREEMPTIVE);
1114+
11121115 if (iwl_mvm_scan_use_ebs(mvm, vif, n_iterations))
11131116 cmd->channel_flags = IWL_SCAN_CHANNEL_FLAG_EBS |
11141117 IWL_SCAN_CHANNEL_FLAG_EBS_ACCURATE |
drivers/net/wireless/iwlwifi/mvm/sta.c+2−1
@@ -1401,6 +1401,7 @@ int iwl_mvm_set_sta_key(struct iwl_mvm *mvm, · 1400 unmodified lines
14011401 bool mcast = !(keyconf->flags & IEEE80211_KEY_FLAG_PAIRWISE);
14021402 u8 sta_id;
14031403 int ret;
1404+ static const u8 __maybe_unused zero_addr[ETH_ALEN] = {0};
14041405
14051406 lockdep_assert_held(&mvm->mutex);
14061407
@@ -1467,7 +1468,7 @@ int iwl_mvm_set_sta_key(struct iwl_mvm *mvm, · 60 unmodified lines
14671468 end:
14681469 IWL_DEBUG_WEP(mvm, "key: cipher=%x len=%d idx=%d sta=%pM ret=%d\n",
14691470 keyconf->cipher, keyconf->keylen, keyconf->keyidx,
1470− sta->addr, ret);
1471+ sta ? sta->addr : zero_addr, ret);
14711472 return ret;
14721473 }
14731474
drivers/net/wireless/iwlwifi/mvm/time-event.c+1−1
@@ -86,7 +86,7 @@ void iwl_mvm_te_clear_data(struct iwl_mvm *mvm, · 85 unmodified lines
8686 {
8787 lockdep_assert_held(&mvm->time_event_lock);
8888
89− if (te_data->id == TE_MAX)
89+ if (!te_data->vif)
9090 return;
9191
9292 list_del(&te_data->list);
drivers/net/wireless/iwlwifi/mvm/tx.c+1−1
@@ -252,7 +252,7 @@ void iwl_mvm_set_tx_cmd_rate(struct iwl_mvm *mvm, struct iwl_tx_cmd *tx_cmd, · 251 unmodified lines
252252
253253 if (info->band == IEEE80211_BAND_2GHZ &&
254254 !iwl_mvm_bt_coex_is_shared_ant_avail(mvm))
255− rate_flags = BIT(mvm->cfg->non_shared_ant) << RATE_MCS_ANT_POS;
255+ rate_flags = mvm->cfg->non_shared_ant << RATE_MCS_ANT_POS;
256256 else
257257 rate_flags =
258258 BIT(mvm->mgmt_last_antenna_idx) << RATE_MCS_ANT_POS;
drivers/net/wireless/iwlwifi/pcie/drv.c+3−2
@@ -368,12 +368,14 @@ static const struct pci_device_id iwl_hw_card_ids[] = { · 367 unmodified lines
368368 /* 3165 Series */
369369 {IWL_PCI_DEVICE(0x3165, 0x4010, iwl3165_2ac_cfg)},
370370 {IWL_PCI_DEVICE(0x3165, 0x4012, iwl3165_2ac_cfg)},
371+ {IWL_PCI_DEVICE(0x3166, 0x4212, iwl3165_2ac_cfg)},
371372 {IWL_PCI_DEVICE(0x3165, 0x4410, iwl3165_2ac_cfg)},
372373 {IWL_PCI_DEVICE(0x3165, 0x4510, iwl3165_2ac_cfg)},
373374 {IWL_PCI_DEVICE(0x3165, 0x4110, iwl3165_2ac_cfg)},
374375 {IWL_PCI_DEVICE(0x3166, 0x4310, iwl3165_2ac_cfg)},
375376 {IWL_PCI_DEVICE(0x3166, 0x4210, iwl3165_2ac_cfg)},
376377 {IWL_PCI_DEVICE(0x3165, 0x8010, iwl3165_2ac_cfg)},
378+ {IWL_PCI_DEVICE(0x3165, 0x8110, iwl3165_2ac_cfg)},
377379
378380 /* 7265 Series */
379381 {IWL_PCI_DEVICE(0x095A, 0x5010, iwl7265_2ac_cfg)},
@@ -426,9 +428,8 @@ static const struct pci_device_id iwl_hw_card_ids[] = { · 46 unmodified lines
426428 {IWL_PCI_DEVICE(0x24F4, 0x1130, iwl8260_2ac_cfg)},
427429 {IWL_PCI_DEVICE(0x24F4, 0x1030, iwl8260_2ac_cfg)},
428430 {IWL_PCI_DEVICE(0x24F3, 0xC010, iwl8260_2ac_cfg)},
431+ {IWL_PCI_DEVICE(0x24F3, 0xC110, iwl8260_2ac_cfg)},
429432 {IWL_PCI_DEVICE(0x24F3, 0xD010, iwl8260_2ac_cfg)},
430− {IWL_PCI_DEVICE(0x24F4, 0xC030, iwl8260_2ac_cfg)},
431− {IWL_PCI_DEVICE(0x24F4, 0xD030, iwl8260_2ac_cfg)},
432433 {IWL_PCI_DEVICE(0x24F3, 0xC050, iwl8260_2ac_cfg)},
433434 {IWL_PCI_DEVICE(0x24F3, 0xD050, iwl8260_2ac_cfg)},
434435 {IWL_PCI_DEVICE(0x24F3, 0x8010, iwl8260_2ac_cfg)},
drivers/net/wireless/iwlwifi/pcie/internal.h+8−43
@@ -44,15 +44,6 @@ · 43 unmodified lines
4444 #include "iwl-io.h"
4545 #include "iwl-op-mode.h"
4646
47−/*
48− * RX related structures and functions
49− */
50−#define RX_NUM_QUEUES 1
51−#define RX_POST_REQ_ALLOC 2
52−#define RX_CLAIM_REQ_ALLOC 8
53−#define RX_POOL_SIZE ((RX_CLAIM_REQ_ALLOC - RX_POST_REQ_ALLOC) * RX_NUM_QUEUES)
54−#define RX_LOW_WATERMARK 8
55−
5647 struct iwl_host_cmd;
5748
5849 /*This file includes the declaration that are internal to the
@@ -86,29 +77,29 @@ struct isr_statistics { · 27 unmodified lines
8677 * struct iwl_rxq - Rx queue
8778 * @bd: driver's pointer to buffer of receive buffer descriptors (rbd)
8879 * @bd_dma: bus address of buffer of receive buffer descriptors (rbd)
80+ * @pool:
81+ * @queue:
8982 * @read: Shared index to newest available Rx buffer
9083 * @write: Shared index to oldest written Rx packet
9184 * @free_count: Number of pre-allocated buffers in rx_free
92− * @used_count: Number of RBDs handled to allocator to use for allocation
9385 * @write_actual:
94− * @rx_free: list of RBDs with allocated RB ready for use
95− * @rx_used: list of RBDs with no RB attached
86+ * @rx_free: list of free SKBs for use
87+ * @rx_used: List of Rx buffers with no SKB
9688 * @need_update: flag to indicate we need to update read/write index
9789 * @rb_stts: driver's pointer to receive buffer status
9890 * @rb_stts_dma: bus address of receive buffer status
9991 * @lock:
100− * @pool: initial pool of iwl_rx_mem_buffer for the queue
101− * @queue: actual rx queue
10292 *
10393 * NOTE: rx_free and rx_used are used as a FIFO for iwl_rx_mem_buffers
10494 */
10595 struct iwl_rxq {
10696 __le32 *bd;
10797 dma_addr_t bd_dma;
98+ struct iwl_rx_mem_buffer pool[RX_QUEUE_SIZE + RX_FREE_BUFFERS];
99+ struct iwl_rx_mem_buffer *queue[RX_QUEUE_SIZE];
108100 u32 read;
109101 u32 write;
110102 u32 free_count;
111− u32 used_count;
112103 u32 write_actual;
113104 struct list_head rx_free;
114105 struct list_head rx_used;
@@ -116,32 +107,6 @@ struct iwl_rxq { · 1 unmodified line
116107 struct iwl_rb_status *rb_stts;
117108 dma_addr_t rb_stts_dma;
118109 spinlock_t lock;
119− struct iwl_rx_mem_buffer pool[RX_QUEUE_SIZE];
120− struct iwl_rx_mem_buffer *queue[RX_QUEUE_SIZE];
121−};
122−
123−/**
124− * struct iwl_rb_allocator - Rx allocator
125− * @pool: initial pool of allocator
126− * @req_pending: number of requests the allcator had not processed yet
127− * @req_ready: number of requests honored and ready for claiming
128− * @rbd_allocated: RBDs with pages allocated and ready to be handled to
129− * the queue. This is a list of &struct iwl_rx_mem_buffer
130− * @rbd_empty: RBDs with no page attached for allocator use. This is a list
131− * of &struct iwl_rx_mem_buffer
132− * @lock: protects the rbd_allocated and rbd_empty lists
133− * @alloc_wq: work queue for background calls
134− * @rx_alloc: work struct for background calls
135− */
136−struct iwl_rb_allocator {
137− struct iwl_rx_mem_buffer pool[RX_POOL_SIZE];
138− atomic_t req_pending;
139− atomic_t req_ready;
140− struct list_head rbd_allocated;
141− struct list_head rbd_empty;
142− spinlock_t lock;
143− struct workqueue_struct *alloc_wq;
144− struct work_struct rx_alloc;
145110 };
146111
147112 struct iwl_dma_ptr {
@@ -285,7 +250,7 @@ iwl_pcie_get_scratchbuf_dma(struct iwl_txq *txq, int idx) · 137 unmodified lines
285250 /**
286251 * struct iwl_trans_pcie - PCIe transport specific data
287252 * @rxq: all the RX queue data
288− * @rba: allocator for RX replenishing
253+ * @rx_replenish: work that will be called when buffers need to be allocated
289254 * @drv - pointer to iwl_drv
290255 * @trans: pointer to the generic transport area
291256 * @scd_base_addr: scheduler sram base address in SRAM
@@ -308,7 +273,7 @@ iwl_pcie_get_scratchbuf_dma(struct iwl_txq *txq, int idx) · 16 unmodified lines
308273 */
309274 struct iwl_trans_pcie {
310275 struct iwl_rxq rxq;
311− struct iwl_rb_allocator rba;
276+ struct work_struct rx_replenish;
312277 struct iwl_trans *trans;
313278 struct iwl_drv *drv;
314279
drivers/net/wireless/iwlwifi/pcie/rx.c+83−331
@@ -1,7 +1,7 @@
11 /******************************************************************************
22 *
33 * Copyright(c) 2003 - 2014 Intel Corporation. All rights reserved.
4− * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH
4+ * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH
55 *
66 * Portions of this file are derived from the ipw3945 project, as well
77 * as portions of the ieee80211 subsystem header files.
@@ -74,29 +74,16 @@ · 66 unmodified lines
7474 * resets the Rx queue buffers with new memory.
7575 *
7676 * The management in the driver is as follows:
77− * + A list of pre-allocated RBDs is stored in iwl->rxq->rx_free.
78− * When the interrupt handler is called, the request is processed.
79− * The page is either stolen - transferred to the upper layer
80− * or reused - added immediately to the iwl->rxq->rx_free list.
81− * + When the page is stolen - the driver updates the matching queue's used
82− * count, detaches the RBD and transfers it to the queue used list.
83− * When there are two used RBDs - they are transferred to the allocator empty
84− * list. Work is then scheduled for the allocator to start allocating
85− * eight buffers.
86− * When there are another 6 used RBDs - they are transferred to the allocator
87− * empty list and the driver tries to claim the pre-allocated buffers and
88− * add them to iwl->rxq->rx_free. If it fails - it continues to claim them
89− * until ready.
90− * When there are 8+ buffers in the free list - either from allocation or from
91− * 8 reused unstolen pages - restock is called to update the FW and indexes.
92− * + In order to make sure the allocator always has RBDs to use for allocation
93− * the allocator has initial pool in the size of num_queues*(8-2) - the
94− * maximum missing RBDs per allocation request (request posted with 2
95− * empty RBDs, there is no guarantee when the other 6 RBDs are supplied).
96− * The queues supplies the recycle of the rest of the RBDs.
77+ * + A list of pre-allocated SKBs is stored in iwl->rxq->rx_free. When
78+ * iwl->rxq->free_count drops to or below RX_LOW_WATERMARK, work is scheduled
79+ * to replenish the iwl->rxq->rx_free.
80+ * + In iwl_pcie_rx_replenish (scheduled) if 'processed' != 'read' then the
81+ * iwl->rxq is replenished and the READ INDEX is updated (updating the
82+ * 'processed' and 'read' driver indexes as well)
9783 * + A received packet is processed and handed to the kernel network stack,
9884 * detached from the iwl->rxq. The driver 'processed' index is updated.
99− * + If there are no allocated buffers in iwl->rxq->rx_free,
85+ * + The Host/Firmware iwl->rxq is replenished at irq thread time from the
86+ * rx_free list. If there are no allocated buffers in iwl->rxq->rx_free,
10087 * the READ INDEX is not incremented and iwl->status(RX_STALLED) is set.
10188 * If there were enough free buffers and RX_STALLED is set it is cleared.
10289 *
@@ -105,32 +92,18 @@ · 2 unmodified lines
10592 *
10693 * iwl_rxq_alloc() Allocates rx_free
10794 * iwl_pcie_rx_replenish() Replenishes rx_free list from rx_used, and calls
108− * iwl_pcie_rxq_restock.
109− * Used only during initialization.
95+ * iwl_pcie_rxq_restock
11096 * iwl_pcie_rxq_restock() Moves available buffers from rx_free into Rx
11197 * queue, updates firmware pointers, and updates
112− * the WRITE index.
113− * iwl_pcie_rx_allocator() Background work for allocating pages.
98+ * the WRITE index. If insufficient rx_free buffers
99+ * are available, schedules iwl_pcie_rx_replenish
114100 *
115101 * -- enable interrupts --
116102 * ISR - iwl_rx() Detach iwl_rx_mem_buffers from pool up to the
117103 * READ INDEX, detaching the SKB from the pool.
118104 * Moves the packet buffer from queue to rx_used.
119− * Posts and claims requests to the allocator.
120105 * Calls iwl_pcie_rxq_restock to refill any empty
121106 * slots.
122− *
123− * RBD life-cycle:
124− *
125− * Init:
126− * rxq.pool -> rxq.rx_used -> rxq.rx_free -> rxq.queue
127− *
128− * Regular Receive interrupt:
129− * Page Stolen:
130− * rxq.queue -> rxq.rx_used -> allocator.rbd_empty ->
131− * allocator.rbd_allocated -> rxq.rx_free -> rxq.queue
132− * Page not Stolen:
133− * rxq.queue -> rxq.rx_free -> rxq.queue
134107 * ...
135108 *
136109 */
@@ -267,6 +240,10 @@ static void iwl_pcie_rxq_restock(struct iwl_trans *trans) · 130 unmodified lines
267240 rxq->free_count--;
268241 }
269242 spin_unlock(&rxq->lock);
243+ /* If the pre-allocated buffer pool is dropping low, schedule to
244+ * refill it */
245+ if (rxq->free_count <= RX_LOW_WATERMARK)
246+ schedule_work(&trans_pcie->rx_replenish);
270247
271248 /* If we've added more space for the firmware to place data, tell it.
272249 * Increment device's write pointer in multiples of 8. */
@@ -277,44 +254,6 @@ static void iwl_pcie_rxq_restock(struct iwl_trans *trans) · 4 unmodified lines
277254 }
278255 }
279256
280−/*
281− * iwl_pcie_rx_alloc_page - allocates and returns a page.
282− *
283− */
284−static struct page *iwl_pcie_rx_alloc_page(struct iwl_trans *trans)
285−{
286− struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
287− struct iwl_rxq *rxq = &trans_pcie->rxq;
288− struct page *page;
289− gfp_t gfp_mask = GFP_KERNEL;
290−
291− if (rxq->free_count > RX_LOW_WATERMARK)
292− gfp_mask |= __GFP_NOWARN;
293−
294− if (trans_pcie->rx_page_order > 0)
295− gfp_mask |= __GFP_COMP;
296−
297− /* Alloc a new receive buffer */
298− page = alloc_pages(gfp_mask, trans_pcie->rx_page_order);
299− if (!page) {
300− if (net_ratelimit())
301− IWL_DEBUG_INFO(trans, "alloc_pages failed, order: %d\n",
302− trans_pcie->rx_page_order);
303− /* Issue an error if the hardware has consumed more than half
304− * of its free buffer list and we don't have enough
305− * pre-allocated buffers.
306−` */
307− if (rxq->free_count <= RX_LOW_WATERMARK &&
308− iwl_rxq_space(rxq) > (RX_QUEUE_SIZE / 2) &&
309− net_ratelimit())
310− IWL_CRIT(trans,
311− "Failed to alloc_pages with GFP_KERNEL. Only %u free buffers remaining.\n",
312− rxq->free_count);
313− return NULL;
314− }
315− return page;
316−}
317−
318257 /*
319258 * iwl_pcie_rxq_alloc_rbs - allocate a page for each used RBD
320259 *
@@ -324,12 +263,13 @@ static struct page *iwl_pcie_rx_alloc_page(struct iwl_trans *trans) · 3 unmodified lines
324263 * iwl_pcie_rxq_restock. The latter function will update the HW to use the newly
325264 * allocated buffers.
326265 */
327−static void iwl_pcie_rxq_alloc_rbs(struct iwl_trans *trans)
266+static void iwl_pcie_rxq_alloc_rbs(struct iwl_trans *trans, gfp_t priority)
328267 {
329268 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
330269 struct iwl_rxq *rxq = &trans_pcie->rxq;
331270 struct iwl_rx_mem_buffer *rxb;
332271 struct page *page;
272+ gfp_t gfp_mask = priority;
333273
334274 while (1) {
335275 spin_lock(&rxq->lock);
@@ -339,10 +279,32 @@ static void iwl_pcie_rxq_alloc_rbs(struct iwl_trans *trans) · 3 unmodified lines
339279 }
340280 spin_unlock(&rxq->lock);
341281
282+ if (rxq->free_count > RX_LOW_WATERMARK)
283+ gfp_mask |= __GFP_NOWARN;
284+
285+ if (trans_pcie->rx_page_order > 0)
286+ gfp_mask |= __GFP_COMP;
287+
342288 /* Alloc a new receive buffer */
343− page = iwl_pcie_rx_alloc_page(trans);
344− if (!page)
289+ page = alloc_pages(gfp_mask, trans_pcie->rx_page_order);
290+ if (!page) {
291+ if (net_ratelimit())
292+ IWL_DEBUG_INFO(trans, "alloc_pages failed, "
293+ "order: %d\n",
294+ trans_pcie->rx_page_order);
295+
296+ if ((rxq->free_count <= RX_LOW_WATERMARK) &&
297+ net_ratelimit())
298+ IWL_CRIT(trans, "Failed to alloc_pages with %s."
299+ "Only %u free buffers remaining.\n",
300+ priority == GFP_ATOMIC ?
301+ "GFP_ATOMIC" : "GFP_KERNEL",
302+ rxq->free_count);
303+ /* We don't reschedule replenish work here -- we will
304+ * call the restock method and if it still needs
305+ * more buffers it will schedule replenish */
345306 return;
307+ }
346308
347309 spin_lock(&rxq->lock);
348310
@@ -393,7 +355,7 @@ static void iwl_pcie_rxq_free_rbs(struct iwl_trans *trans) · 44 unmodified lines
393355
394356 lockdep_assert_held(&rxq->lock);
395357
396− for (i = 0; i < RX_QUEUE_SIZE; i++) {
358+ for (i = 0; i < RX_FREE_BUFFERS + RX_QUEUE_SIZE; i++) {
397359 if (!rxq->pool[i].page)
398360 continue;
399361 dma_unmap_page(trans->dev, rxq->pool[i].page_dma,
@@ -410,144 +372,32 @@ static void iwl_pcie_rxq_free_rbs(struct iwl_trans *trans) · 10 unmodified lines
410372 * When moving to rx_free an page is allocated for the slot.
411373 *
412374 * Also restock the Rx queue via iwl_pcie_rxq_restock.
413− * This is called only during initialization
375+ * This is called as a scheduled work item (except for during initialization)
414376 */
415−static void iwl_pcie_rx_replenish(struct iwl_trans *trans)
377+static void iwl_pcie_rx_replenish(struct iwl_trans *trans, gfp_t gfp)
416378 {
417− iwl_pcie_rxq_alloc_rbs(trans);
379+ iwl_pcie_rxq_alloc_rbs(trans, gfp);
418380
419381 iwl_pcie_rxq_restock(trans);
420382 }
421383
422−/*
423− * iwl_pcie_rx_allocator - Allocates pages in the background for RX queues
424− *
425− * Allocates for each received request 8 pages
426− * Called as a scheduled work item.
427− */
428−static void iwl_pcie_rx_allocator(struct iwl_trans *trans)
429−{
430− struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
431− struct iwl_rb_allocator *rba = &trans_pcie->rba;
432−
433− while (atomic_read(&rba->req_pending)) {
434− int i;
435− struct list_head local_empty;
436− struct list_head local_allocated;
437−
438− INIT_LIST_HEAD(&local_allocated);
439− spin_lock(&rba->lock);
440− /* swap out the entire rba->rbd_empty to a local list */
441− list_replace_init(&rba->rbd_empty, &local_empty);
442− spin_unlock(&rba->lock);
443−
444− for (i = 0; i < RX_CLAIM_REQ_ALLOC;) {
445− struct iwl_rx_mem_buffer *rxb;
446− struct page *page;
447−
448− /* List should never be empty - each reused RBD is
449− * returned to the list, and initial pool covers any
450− * possible gap between the time the page is allocated
451− * to the time the RBD is added.
452− */
453− BUG_ON(list_empty(&local_empty));
454− /* Get the first rxb from the rbd list */
455− rxb = list_first_entry(&local_empty,
456− struct iwl_rx_mem_buffer, list);
457− BUG_ON(rxb->page);
458−
459− /* Alloc a new receive buffer */
460− page = iwl_pcie_rx_alloc_page(trans);
461− if (!page)
462− continue;
463− rxb->page = page;
464−
465− /* Get physical address of the RB */
466− rxb->page_dma = dma_map_page(trans->dev, page, 0,
467− PAGE_SIZE << trans_pcie->rx_page_order,
468− DMA_FROM_DEVICE);
469− if (dma_mapping_error(trans->dev, rxb->page_dma)) {
470− rxb->page = NULL;
471− __free_pages(page, trans_pcie->rx_page_order);
472− continue;
473− }
474− /* dma address must be no more than 36 bits */
475− BUG_ON(rxb->page_dma & ~DMA_BIT_MASK(36));
476− /* and also 256 byte aligned! */
477− BUG_ON(rxb->page_dma & DMA_BIT_MASK(8));
478−
479− /* move the allocated entry to the out list */
480− list_move(&rxb->list, &local_allocated);
481− i++;
482− }
483−
484− spin_lock(&rba->lock);
485− /* add the allocated rbds to the allocator allocated list */
486− list_splice_tail(&local_allocated, &rba->rbd_allocated);
487− /* add the unused rbds back to the allocator empty list */
488− list_splice_tail(&local_empty, &rba->rbd_empty);
489− spin_unlock(&rba->lock);
490−
491− atomic_dec(&rba->req_pending);
492− atomic_inc(&rba->req_ready);
493− }
494−}
495−
496−/*
497− * iwl_pcie_rx_allocator_get - Returns the pre-allocated pages
498−.*
499−.* Called by queue when the queue posted allocation request and
500− * has freed 8 RBDs in order to restock itself.
501− */
502−static int iwl_pcie_rx_allocator_get(struct iwl_trans *trans,
503− struct iwl_rx_mem_buffer
504− *out[RX_CLAIM_REQ_ALLOC])
505−{
506− struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
507− struct iwl_rb_allocator *rba = &trans_pcie->rba;
508− int i;
509−
510− if (atomic_dec_return(&rba->req_ready) < 0) {
511− atomic_inc(&rba->req_ready);
512− IWL_DEBUG_RX(trans,
513− "Allocation request not ready, pending requests = %d\n",
514− atomic_read(&rba->req_pending));
515− return -ENOMEM;
516− }
517−
518− spin_lock(&rba->lock);
519− for (i = 0; i < RX_CLAIM_REQ_ALLOC; i++) {
520− /* Get next free Rx buffer, remove it from free list */
521− out[i] = list_first_entry(&rba->rbd_allocated,
522− struct iwl_rx_mem_buffer, list);
523− list_del(&out[i]->list);
524− }
525− spin_unlock(&rba->lock);
526−
527− return 0;
528−}
529−
530−static void iwl_pcie_rx_allocator_work(struct work_struct *data)
384+static void iwl_pcie_rx_replenish_work(struct work_struct *data)
531385 {
532− struct iwl_rb_allocator *rba_p =
533− container_of(data, struct iwl_rb_allocator, rx_alloc);
534386 struct iwl_trans_pcie *trans_pcie =
535− container_of(rba_p, struct iwl_trans_pcie, rba);
387+ container_of(data, struct iwl_trans_pcie, rx_replenish);
536388
537− iwl_pcie_rx_allocator(trans_pcie->trans);
389+ iwl_pcie_rx_replenish(trans_pcie->trans, GFP_KERNEL);
538390 }
539391
540392 static int iwl_pcie_rx_alloc(struct iwl_trans *trans)
541393 {
542394 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
543395 struct iwl_rxq *rxq = &trans_pcie->rxq;
544− struct iwl_rb_allocator *rba = &trans_pcie->rba;
545396 struct device *dev = trans->dev;
546397
547398 memset(&trans_pcie->rxq, 0, sizeof(trans_pcie->rxq));
548399
549400 spin_lock_init(&rxq->lock);
550− spin_lock_init(&rba->lock);
551401
552402 if (WARN_ON(rxq->bd || rxq->rb_stts))
553403 return -EINVAL;
@@ -637,49 +487,15 @@ static void iwl_pcie_rx_init_rxb_lists(struct iwl_rxq *rxq) · 83 unmodified lines
637487 INIT_LIST_HEAD(&rxq->rx_free);
638488 INIT_LIST_HEAD(&rxq->rx_used);
639489 rxq->free_count = 0;
640− rxq->used_count = 0;
641490
642− for (i = 0; i < RX_QUEUE_SIZE; i++)
491+ for (i = 0; i < RX_FREE_BUFFERS + RX_QUEUE_SIZE; i++)
643492 list_add(&rxq->pool[i].list, &rxq->rx_used);
644493 }
645494
646−static void iwl_pcie_rx_init_rba(struct iwl_rb_allocator *rba)
647−{
648− int i;
649−
650− lockdep_assert_held(&rba->lock);
651−
652− INIT_LIST_HEAD(&rba->rbd_allocated);
653− INIT_LIST_HEAD(&rba->rbd_empty);
654−
655− for (i = 0; i < RX_POOL_SIZE; i++)
656− list_add(&rba->pool[i].list, &rba->rbd_empty);
657−}
658−
659−static void iwl_pcie_rx_free_rba(struct iwl_trans *trans)
660−{
661− struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
662− struct iwl_rb_allocator *rba = &trans_pcie->rba;
663− int i;
664−
665− lockdep_assert_held(&rba->lock);
666−
667− for (i = 0; i < RX_POOL_SIZE; i++) {
668− if (!rba->pool[i].page)
669− continue;
670− dma_unmap_page(trans->dev, rba->pool[i].page_dma,
671− PAGE_SIZE << trans_pcie->rx_page_order,
672− DMA_FROM_DEVICE);
673− __free_pages(rba->pool[i].page, trans_pcie->rx_page_order);
674− rba->pool[i].page = NULL;
675− }
676−}
677−
678495 int iwl_pcie_rx_init(struct iwl_trans *trans)
679496 {
680497 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
681498 struct iwl_rxq *rxq = &trans_pcie->rxq;
682− struct iwl_rb_allocator *rba = &trans_pcie->rba;
683499 int i, err;
684500
685501 if (!rxq->bd) {
@@ -687,21 +503,11 @@ int iwl_pcie_rx_init(struct iwl_trans *trans) · 1 unmodified line
687503 if (err)
688504 return err;
689505 }
690− if (!rba->alloc_wq)
691− rba->alloc_wq = alloc_workqueue("rb_allocator",
692− WQ_HIGHPRI | WQ_UNBOUND, 1);
693− INIT_WORK(&rba->rx_alloc, iwl_pcie_rx_allocator_work);
694−
695− spin_lock(&rba->lock);
696− atomic_set(&rba->req_pending, 0);
697− atomic_set(&rba->req_ready, 0);
698− /* free all first - we might be reconfigured for a different size */
699− iwl_pcie_rx_free_rba(trans);
700− iwl_pcie_rx_init_rba(rba);
701− spin_unlock(&rba->lock);
702506
703507 spin_lock(&rxq->lock);
704508
509+ INIT_WORK(&trans_pcie->rx_replenish, iwl_pcie_rx_replenish_work);
510+
705511 /* free all first - we might be reconfigured for a different size */
706512 iwl_pcie_rxq_free_rbs(trans);
707513 iwl_pcie_rx_init_rxb_lists(rxq);
@@ -716,7 +522,7 @@ int iwl_pcie_rx_init(struct iwl_trans *trans) · 8 unmodified lines
716522 memset(rxq->rb_stts, 0, sizeof(*rxq->rb_stts));
717523 spin_unlock(&rxq->lock);
718524
719− iwl_pcie_rx_replenish(trans);
525+ iwl_pcie_rx_replenish(trans, GFP_KERNEL);
720526
721527 iwl_pcie_rx_hw_init(trans, rxq);
722528
@@ -731,7 +537,6 @@ void iwl_pcie_rx_free(struct iwl_trans *trans) · 8 unmodified lines
731537 {
732538 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
733539 struct iwl_rxq *rxq = &trans_pcie->rxq;
734− struct iwl_rb_allocator *rba = &trans_pcie->rba;
735540
736541 /*if rxq->bd is NULL, it means that nothing has been allocated,
737542 * exit now */
@@ -740,15 +545,7 @@ void iwl_pcie_rx_free(struct iwl_trans *trans) · 2 unmodified lines
740545 return;
741546 }
742547
743− cancel_work_sync(&rba->rx_alloc);
744− if (rba->alloc_wq) {
745− destroy_workqueue(rba->alloc_wq);
746− rba->alloc_wq = NULL;
747− }
748−
749− spin_lock(&rba->lock);
750− iwl_pcie_rx_free_rba(trans);
751− spin_unlock(&rba->lock);
548+ cancel_work_sync(&trans_pcie->rx_replenish);
752549
753550 spin_lock(&rxq->lock);
754551 iwl_pcie_rxq_free_rbs(trans);
@@ -769,43 +566,6 @@ void iwl_pcie_rx_free(struct iwl_trans *trans) · 14 unmodified lines
769566 rxq->rb_stts = NULL;
770567 }
771568
772−/*
773− * iwl_pcie_rx_reuse_rbd - Recycle used RBDs
774− *
775− * Called when a RBD can be reused. The RBD is transferred to the allocator.
776− * When there are 2 empty RBDs - a request for allocation is posted
777− */
778−static void iwl_pcie_rx_reuse_rbd(struct iwl_trans *trans,
779− struct iwl_rx_mem_buffer *rxb,
780− struct iwl_rxq *rxq)
781−{
782− struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
783− struct iwl_rb_allocator *rba = &trans_pcie->rba;
784−
785− /* Count the used RBDs */
786− rxq->used_count++;
787−
788− /* Move the RBD to the used list, will be moved to allocator in batches
789− * before claiming or posting a request*/
790− list_add_tail(&rxb->list, &rxq->rx_used);
791−
792− /* If we have RX_POST_REQ_ALLOC new released rx buffers -
793− * issue a request for allocator. Modulo RX_CLAIM_REQ_ALLOC is
794− * used for the case we failed to claim RX_CLAIM_REQ_ALLOC,
795− * after but we still need to post another request.
796− */
797− if ((rxq->used_count % RX_CLAIM_REQ_ALLOC) == RX_POST_REQ_ALLOC) {
798− /* Move the 2 RBDs to the allocator ownership.
799− Allocator has another 6 from pool for the request completion*/
800− spin_lock(&rba->lock);
801− list_splice_tail_init(&rxq->rx_used, &rba->rbd_empty);
802− spin_unlock(&rba->lock);
803−
804− atomic_inc(&rba->req_pending);
805− queue_work(rba->alloc_wq, &rba->rx_alloc);
806− }
807−}
808−
809569 static void iwl_pcie_rx_handle_rb(struct iwl_trans *trans,
810570 struct iwl_rx_mem_buffer *rxb)
811571 {
@@ -928,13 +688,13 @@ static void iwl_pcie_rx_handle_rb(struct iwl_trans *trans, · 116 unmodified lines
928688 */
929689 __free_pages(rxb->page, trans_pcie->rx_page_order);
930690 rxb->page = NULL;
931− iwl_pcie_rx_reuse_rbd(trans, rxb, rxq);
691+ list_add_tail(&rxb->list, &rxq->rx_used);
932692 } else {
933693 list_add_tail(&rxb->list, &rxq->rx_free);
934694 rxq->free_count++;
935695 }
936696 } else
937− iwl_pcie_rx_reuse_rbd(trans, rxb, rxq);
697+ list_add_tail(&rxb->list, &rxq->rx_used);
938698 }
939699
940700 /*
@@ -944,7 +704,10 @@ static void iwl_pcie_rx_handle(struct iwl_trans *trans) · 3 unmodified lines
944704 {
945705 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
946706 struct iwl_rxq *rxq = &trans_pcie->rxq;
947− u32 r, i, j;
707+ u32 r, i;
708+ u8 fill_rx = 0;
709+ u32 count = 8;
710+ int total_empty;
948711
949712 restart:
950713 spin_lock(&rxq->lock);
@@ -957,6 +720,14 @@ restart: · 6 unmodified lines
957720 if (i == r)
958721 IWL_DEBUG_RX(trans, "HW = SW = %d\n", r);
959722
723+ /* calculate total frames need to be restock after handling RX */
724+ total_empty = r - rxq->write_actual;
725+ if (total_empty < 0)
726+ total_empty += RX_QUEUE_SIZE;
727+
728+ if (total_empty > (RX_QUEUE_SIZE / 2))
729+ fill_rx = 1;
730+
960731 while (i != r) {
961732 struct iwl_rx_mem_buffer *rxb;
962733
@@ -968,48 +739,29 @@ restart: · 5 unmodified lines
968739 iwl_pcie_rx_handle_rb(trans, rxb);
969740
970741 i = (i + 1) & RX_QUEUE_MASK;
971−
972− /* If we have RX_CLAIM_REQ_ALLOC released rx buffers -
973− * try to claim the pre-allocated buffers from the allocator */
974− if (rxq->used_count >= RX_CLAIM_REQ_ALLOC) {
975− struct iwl_rb_allocator *rba = &trans_pcie->rba;
976− struct iwl_rx_mem_buffer *out[RX_CLAIM_REQ_ALLOC];
977−
978− /* Add the remaining 6 empty RBDs for allocator use */
979− spin_lock(&rba->lock);
980− list_splice_tail_init(&rxq->rx_used, &rba->rbd_empty);
981− spin_unlock(&rba->lock);
982−
983− /* If not ready - continue, will try to reclaim later.
984− * No need to reschedule work - allocator exits only on
985− * success */
986− if (!iwl_pcie_rx_allocator_get(trans, out)) {
987− /* If success - then RX_CLAIM_REQ_ALLOC
988− * buffers were retrieved and should be added
989− * to free list */
990− rxq->used_count -= RX_CLAIM_REQ_ALLOC;
991− for (j = 0; j < RX_CLAIM_REQ_ALLOC; j++) {
992− list_add_tail(&out[j]->list,
993− &rxq->rx_free);
994− rxq->free_count++;
995− }
742+ /* If there are a lot of unused frames,
743+ * restock the Rx queue so ucode wont assert. */
744+ if (fill_rx) {
745+ count++;
746+ if (count >= 8) {
747+ rxq->read = i;
748+ spin_unlock(&rxq->lock);
749+ iwl_pcie_rx_replenish(trans, GFP_ATOMIC);
750+ count = 0;
751+ goto restart;
996752 }
997753 }
998− /* handle restock for two cases:
999− * - we just pulled buffers from the allocator
1000− * - we have 8+ unstolen pages accumulated */
1001− if (rxq->free_count >= RX_CLAIM_REQ_ALLOC) {
1002− rxq->read = i;
1003− spin_unlock(&rxq->lock);
1004− iwl_pcie_rxq_restock(trans);
1005− goto restart;
1006− }
1007754 }
1008755
1009756 /* Backtrack one entry */
1010757 rxq->read = i;
1011758 spin_unlock(&rxq->lock);
1012759
760+ if (fill_rx)
761+ iwl_pcie_rx_replenish(trans, GFP_ATOMIC);
762+ else
763+ iwl_pcie_rxq_restock(trans);
764+
1013765 if (trans_pcie->napi.poll)
1014766 napi_gro_flush(&trans_pcie->napi, false);
1015767 }
drivers/net/wireless/iwlwifi/pcie/trans.c+29−23
@@ -182,7 +182,7 @@ static void iwl_trans_pcie_write_shr(struct iwl_trans *trans, u32 reg, u32 val) · 181 unmodified lines
182182
183183 static void iwl_pcie_set_pwr(struct iwl_trans *trans, bool vaux)
184184 {
185− if (!trans->cfg->apmg_not_supported)
185+ if (trans->cfg->apmg_not_supported)
186186 return;
187187
188188 if (vaux && pci_pme_capable(to_pci_dev(trans->dev), PCI_D3cold))
@@ -2459,7 +2459,7 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, · 2270 unmodified lines
24592459 struct iwl_trans_pcie *trans_pcie;
24602460 struct iwl_trans *trans;
24612461 u16 pci_cmd;
2462− int err;
2462+ int ret;
24632463
24642464 trans = iwl_trans_alloc(sizeof(struct iwl_trans_pcie),
24652465 &pdev->dev, cfg, &trans_ops_pcie, 0);
@@ -2474,8 +2474,8 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, · 8 unmodified lines
24742474 spin_lock_init(&trans_pcie->ref_lock);
24752475 init_waitqueue_head(&trans_pcie->ucode_write_waitq);
24762476
2477− err = pci_enable_device(pdev);
2478− if (err)
2477+ ret = pci_enable_device(pdev);
2478+ if (ret)
24792479 goto out_no_pci;
24802480
24812481 if (!cfg->base_params->pcie_l1_allowed) {
@@ -2491,23 +2491,23 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, · 9 unmodified lines
24912491
24922492 pci_set_master(pdev);
24932493
2494− err = pci_set_dma_mask(pdev, DMA_BIT_MASK(36));
2495− if (!err)
2496− err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(36));
2497− if (err) {
2498− err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
2499− if (!err)
2500− err = pci_set_consistent_dma_mask(pdev,
2494+ ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(36));
2495+ if (!ret)
2496+ ret = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(36));
2497+ if (ret) {
2498+ ret = pci_set_dma_mask(pdev, DMA_BIT_MASK(32));
2499+ if (!ret)
2500+ ret = pci_set_consistent_dma_mask(pdev,
25012501 DMA_BIT_MASK(32));
25022502 /* both attempts failed: */
2503− if (err) {
2503+ if (ret) {
25042504 dev_err(&pdev->dev, "No suitable DMA available\n");
25052505 goto out_pci_disable_device;
25062506 }
25072507 }
25082508
2509− err = pci_request_regions(pdev, DRV_NAME);
2510− if (err) {
2509+ ret = pci_request_regions(pdev, DRV_NAME);
2510+ if (ret) {
25112511 dev_err(&pdev->dev, "pci_request_regions failed\n");
25122512 goto out_pci_disable_device;
25132513 }
@@ -2515,7 +2515,7 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, · 1 unmodified line
25152515 trans_pcie->hw_base = pci_ioremap_bar(pdev, 0);
25162516 if (!trans_pcie->hw_base) {
25172517 dev_err(&pdev->dev, "pci_ioremap_bar failed\n");
2518− err = -ENODEV;
2518+ ret = -ENODEV;
25192519 goto out_pci_release_regions;
25202520 }
25212521
@@ -2527,9 +2527,9 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, · 5 unmodified lines
25272527 trans_pcie->pci_dev = pdev;
25282528 iwl_disable_interrupts(trans);
25292529
2530− err = pci_enable_msi(pdev);
2531− if (err) {
2532− dev_err(&pdev->dev, "pci_enable_msi failed(0X%x)\n", err);
2530+ ret = pci_enable_msi(pdev);
2531+ if (ret) {
2532+ dev_err(&pdev->dev, "pci_enable_msi failed(0X%x)\n", ret);
25332533 /* enable rfkill interrupt: hw bug w/a */
25342534 pci_read_config_word(pdev, PCI_COMMAND, &pci_cmd);
25352535 if (pci_cmd & PCI_COMMAND_INTX_DISABLE) {
@@ -2547,11 +2547,16 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, · 11 unmodified lines
25472547 */
25482548 if (trans->cfg->device_family == IWL_DEVICE_FAMILY_8000) {
25492549 unsigned long flags;
2550− int ret;
25512550
25522551 trans->hw_rev = (trans->hw_rev & 0xfff0) |
25532552 (CSR_HW_REV_STEP(trans->hw_rev << 2) << 2);
25542553
2554+ ret = iwl_pcie_prepare_card_hw(trans);
2555+ if (ret) {
2556+ IWL_WARN(trans, "Exit HW not ready\n");
2557+ goto out_pci_disable_msi;
2558+ }
2559+
25552560 /*
25562561 * in-order to recognize C step driver should read chip version
25572562 * id located at the AUX bus MISC address space.
@@ -2591,13 +2596,14 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, · 33 unmodified lines
25912596 /* Initialize the wait queue for commands */
25922597 init_waitqueue_head(&trans_pcie->wait_command_queue);
25932598
2594− if (iwl_pcie_alloc_ict(trans))
2599+ ret = iwl_pcie_alloc_ict(trans);
2600+ if (ret)
25952601 goto out_pci_disable_msi;
25962602
2597− err = request_threaded_irq(pdev->irq, iwl_pcie_isr,
2603+ ret = request_threaded_irq(pdev->irq, iwl_pcie_isr,
25982604 iwl_pcie_irq_handler,
25992605 IRQF_SHARED, DRV_NAME, trans);
2600− if (err) {
2606+ if (ret) {
26012607 IWL_ERR(trans, "Error allocating IRQ %d\n", pdev->irq);
26022608 goto out_free_ict;
26032609 }
@@ -2617,5 +2623,5 @@ out_pci_disable_device: · 13 unmodified lines
26172623 pci_disable_device(pdev);
26182624 out_no_pci:
26192625 iwl_trans_free(trans);
2620− return ERR_PTR(err);
2626+ return ERR_PTR(ret);
26212627 }
drivers/net/xen-netback/netback.c+3−3
@@ -1566,13 +1566,13 @@ static inline void xenvif_tx_dealloc_action(struct xenvif_queue *queue) · 1565 unmodified lines
15661566 smp_rmb();
15671567
15681568 while (dc != dp) {
1569− BUG_ON(gop - queue->tx_unmap_ops > MAX_PENDING_REQS);
1569+ BUG_ON(gop - queue->tx_unmap_ops >= MAX_PENDING_REQS);
15701570 pending_idx =
15711571 queue->dealloc_ring[pending_index(dc++)];
15721572
1573− pending_idx_release[gop-queue->tx_unmap_ops] =
1573+ pending_idx_release[gop - queue->tx_unmap_ops] =
15741574 pending_idx;
1575− queue->pages_to_unmap[gop-queue->tx_unmap_ops] =
1575+ queue->pages_to_unmap[gop - queue->tx_unmap_ops] =
15761576 queue->mmap_pages[pending_idx];
15771577 gnttab_set_unmap_op(gop,
15781578 idx_to_kaddr(queue, pending_idx),
drivers/nvdimm/region_devs.c+5−0
@@ -458,10 +458,15 @@ static void nd_region_notify_driver_action(struct nvdimm_bus *nvdimm_bus, · 457 unmodified lines
458458 nvdimm_bus_unlock(dev);
459459 }
460460 if (is_nd_btt(dev) && probe) {
461+ struct nd_btt *nd_btt = to_nd_btt(dev);
462+
461463 nd_region = to_nd_region(dev->parent);
462464 nvdimm_bus_lock(dev);
463465 if (nd_region->btt_seed == dev)
464466 nd_region_create_btt_seed(nd_region);
467+ if (nd_region->ns_seed == &nd_btt->ndns->dev &&
468+ is_nd_blk(dev->parent))
469+ nd_region_create_blk_seed(nd_region);
465470 nvdimm_bus_unlock(dev);
466471 }
467472 }
drivers/parport/share.c+6−5
@@ -891,8 +891,10 @@ parport_register_dev_model(struct parport *port, const char *name, · 890 unmodified lines
891891 par_dev->dev.release = free_pardevice;
892892 par_dev->devmodel = true;
893893 ret = device_register(&par_dev->dev);
894− if (ret)
895− goto err_put_dev;
894+ if (ret) {
895+ put_device(&par_dev->dev);
896+ goto err_put_port;
897+ }
896898
897899 /* Chain this onto the list */
898900 par_dev->prev = NULL;
@@ -907,7 +909,8 @@ parport_register_dev_model(struct parport *port, const char *name, · 8 unmodified lines
907909 spin_unlock(&port->physport->pardevice_lock);
908910 pr_debug("%s: cannot grant exclusive access for device %s\n",
909911 port->name, name);
910− goto err_put_dev;
912+ device_unregister(&par_dev->dev);
913+ goto err_put_port;
911914 }
912915 port->flags |= PARPORT_FLAG_EXCL;
913916 }
@@ -938,8 +941,6 @@ parport_register_dev_model(struct parport *port, const char *name, · 24 unmodified lines
938941
939942 return par_dev;
940943
941−err_put_dev:
942− put_device(&par_dev->dev);
943944 err_free_devname:
944945 kfree(devname);
945946 err_free_par_dev:
drivers/phy/Kconfig+2−0
@@ -56,6 +56,7 @@ config PHY_EXYNOS_MIPI_VIDEO · 55 unmodified lines
5656
5757 config PHY_PXA_28NM_HSIC
5858 tristate "Marvell USB HSIC 28nm PHY Driver"
59+ depends on HAS_IOMEM
5960 select GENERIC_PHY
6061 help
6162 Enable this to support Marvell USB HSIC PHY driver for Marvell
@@ -66,6 +67,7 @@ config PHY_PXA_28NM_HSIC · 4 unmodified lines
6667
6768 config PHY_PXA_28NM_USB2
6869 tristate "Marvell USB 2.0 28nm PHY Driver"
70+ depends on HAS_IOMEM
6971 select GENERIC_PHY
7072 help
7173 Enable this to support Marvell USB 2.0 PHY driver for Marvell
drivers/phy/phy-berlin-usb.c+2−2
@@ -105,9 +105,9 @@ · 104 unmodified lines
105105
106106 static const u32 phy_berlin_pll_dividers[] = {
107107 /* Berlin 2 */
108− CLK_REF_DIV(0xc) | FEEDBACK_CLK_DIV(0x54),
109− /* Berlin 2CD */
110108 CLK_REF_DIV(0x6) | FEEDBACK_CLK_DIV(0x55),
109+ /* Berlin 2CD/Q */
110+ CLK_REF_DIV(0xc) | FEEDBACK_CLK_DIV(0x54),
111111 };
112112
113113 struct phy_berlin_usb_priv {
drivers/phy/phy-ti-pipe3.c+41−131
@@ -28,7 +28,6 @@ · 27 unmodified lines
2828 #include <linux/delay.h>
2929 #include <linux/phy/omap_control_phy.h>
3030 #include <linux/of_platform.h>
31−#include <linux/spinlock.h>
3231
3332 #define PLL_STATUS 0x00000004
3433 #define PLL_GO 0x00000008
@@ -83,10 +82,6 @@ struct ti_pipe3 { · 48 unmodified lines
8382 struct clk *refclk;
8483 struct clk *div_clk;
8584 struct pipe3_dpll_map *dpll_map;
86− bool enabled;
87− spinlock_t lock; /* serialize clock enable/disable */
88− /* the below flag is needed specifically for SATA */
89− bool refclk_enabled;
9085 };
9186
9287 static struct pipe3_dpll_map dpll_map_usb[] = {
@@ -137,6 +132,9 @@ static struct pipe3_dpll_params *ti_pipe3_get_dpll_params(struct ti_pipe3 *phy) · 44 unmodified lines
137132 return NULL;
138133 }
139134
135+static int ti_pipe3_enable_clocks(struct ti_pipe3 *phy);
136+static void ti_pipe3_disable_clocks(struct ti_pipe3 *phy);
137+
140138 static int ti_pipe3_power_off(struct phy *x)
141139 {
142140 struct ti_pipe3 *phy = phy_get_drvdata(x);
@@ -217,6 +215,7 @@ static int ti_pipe3_init(struct phy *x) · 74 unmodified lines
217215 u32 val;
218216 int ret = 0;
219217
218+ ti_pipe3_enable_clocks(phy);
220219 /*
221220 * Set pcie_pcs register to 0x96 for proper functioning of phy
222221 * as recommended in AM572x TRM SPRUHZ6, section 18.5.2.2, table
@@ -250,33 +249,35 @@ static int ti_pipe3_exit(struct phy *x) · 27 unmodified lines
250249 u32 val;
251250 unsigned long timeout;
252251
253− /* SATA DPLL can't be powered down due to Errata i783 and PCIe
254− * does not have internal DPLL
255− */
256− if (of_device_is_compatible(phy->dev->of_node, "ti,phy-pipe3-sata") ||
257− of_device_is_compatible(phy->dev->of_node, "ti,phy-pipe3-pcie"))
252+ /* SATA DPLL can't be powered down due to Errata i783 */
253+ if (of_device_is_compatible(phy->dev->of_node, "ti,phy-pipe3-sata"))
258254 return 0;
259255
260− /* Put DPLL in IDLE mode */
261− val = ti_pipe3_readl(phy->pll_ctrl_base, PLL_CONFIGURATION2);
262− val |= PLL_IDLE;
263− ti_pipe3_writel(phy->pll_ctrl_base, PLL_CONFIGURATION2, val);
264−
265− /* wait for LDO and Oscillator to power down */
266− timeout = jiffies + msecs_to_jiffies(PLL_IDLE_TIME);
267− do {
268− cpu_relax();
269− val = ti_pipe3_readl(phy->pll_ctrl_base, PLL_STATUS);
270− if ((val & PLL_TICOPWDN) && (val & PLL_LDOPWDN))
271− break;
272− } while (!time_after(jiffies, timeout));
256+ /* PCIe doesn't have internal DPLL */
257+ if (!of_device_is_compatible(phy->dev->of_node, "ti,phy-pipe3-pcie")) {
258+ /* Put DPLL in IDLE mode */
259+ val = ti_pipe3_readl(phy->pll_ctrl_base, PLL_CONFIGURATION2);
260+ val |= PLL_IDLE;
261+ ti_pipe3_writel(phy->pll_ctrl_base, PLL_CONFIGURATION2, val);
273262
274− if (!(val & PLL_TICOPWDN) || !(val & PLL_LDOPWDN)) {
275− dev_err(phy->dev, "Failed to power down: PLL_STATUS 0x%x\n",
276− val);
277− return -EBUSY;
263+ /* wait for LDO and Oscillator to power down */
264+ timeout = jiffies + msecs_to_jiffies(PLL_IDLE_TIME);
265+ do {
266+ cpu_relax();
267+ val = ti_pipe3_readl(phy->pll_ctrl_base, PLL_STATUS);
268+ if ((val & PLL_TICOPWDN) && (val & PLL_LDOPWDN))
269+ break;
270+ } while (!time_after(jiffies, timeout));
271+
272+ if (!(val & PLL_TICOPWDN) || !(val & PLL_LDOPWDN)) {
273+ dev_err(phy->dev, "Failed to power down: PLL_STATUS 0x%x\n",
274+ val);
275+ return -EBUSY;
276+ }
278277 }
279278
279+ ti_pipe3_disable_clocks(phy);
280+
280281 return 0;
281282 }
282283 static struct phy_ops ops = {
@@ -306,7 +307,6 @@ static int ti_pipe3_probe(struct platform_device *pdev) · 23 unmodified lines
306307 return -ENOMEM;
307308
308309 phy->dev = &pdev->dev;
309− spin_lock_init(&phy->lock);
310310
311311 if (!of_device_is_compatible(node, "ti,phy-pipe3-pcie")) {
312312 match = of_match_device(ti_pipe3_id_table, &pdev->dev);
@@ -402,6 +402,10 @@ static int ti_pipe3_probe(struct platform_device *pdev) · 89 unmodified lines
402402
403403 platform_set_drvdata(pdev, phy);
404404 pm_runtime_enable(phy->dev);
405+ /* Prevent auto-disable of refclk for SATA PHY due to Errata i783 */
406+ if (of_device_is_compatible(node, "ti,phy-pipe3-sata"))
407+ if (!IS_ERR(phy->refclk))
408+ clk_prepare_enable(phy->refclk);
405409
406410 generic_phy = devm_phy_create(phy->dev, NULL, &ops);
407411 if (IS_ERR(generic_phy))
@@ -413,63 +417,33 @@ static int ti_pipe3_probe(struct platform_device *pdev) · 5 unmodified lines
413417 if (IS_ERR(phy_provider))
414418 return PTR_ERR(phy_provider);
415419
416− pm_runtime_get(&pdev->dev);
417−
418420 return 0;
419421 }
420422
421423 static int ti_pipe3_remove(struct platform_device *pdev)
422424 {
423− if (!pm_runtime_suspended(&pdev->dev))
424− pm_runtime_put(&pdev->dev);
425425 pm_runtime_disable(&pdev->dev);
426426
427427 return 0;
428428 }
429429
430−#ifdef CONFIG_PM
431−static int ti_pipe3_enable_refclk(struct ti_pipe3 *phy)
430+static int ti_pipe3_enable_clocks(struct ti_pipe3 *phy)
432431 {
433− if (!IS_ERR(phy->refclk) && !phy->refclk_enabled) {
434− int ret;
432+ int ret = 0;
435433
434+ if (!IS_ERR(phy->refclk)) {
436435 ret = clk_prepare_enable(phy->refclk);
437436 if (ret) {
438437 dev_err(phy->dev, "Failed to enable refclk %d\n", ret);
439438 return ret;
440439 }
441− phy->refclk_enabled = true;
442440 }
443441
444− return 0;
445−}
446−
447−static void ti_pipe3_disable_refclk(struct ti_pipe3 *phy)
448−{
449− if (!IS_ERR(phy->refclk))
450− clk_disable_unprepare(phy->refclk);
451−
452− phy->refclk_enabled = false;
453−}
454−
455−static int ti_pipe3_enable_clocks(struct ti_pipe3 *phy)
456−{
457− int ret = 0;
458− unsigned long flags;
459−
460− spin_lock_irqsave(&phy->lock, flags);
461− if (phy->enabled)
462− goto err1;
463−
464− ret = ti_pipe3_enable_refclk(phy);
465− if (ret)
466− goto err1;
467−
468442 if (!IS_ERR(phy->wkupclk)) {
469443 ret = clk_prepare_enable(phy->wkupclk);
470444 if (ret) {
471445 dev_err(phy->dev, "Failed to enable wkupclk %d\n", ret);
472− goto err2;
446+ goto disable_refclk;
473447 }
474448 }
475449
@@ -477,96 +451,33 @@ static int ti_pipe3_enable_clocks(struct ti_pipe3 *phy) · 1 unmodified line
477451 ret = clk_prepare_enable(phy->div_clk);
478452 if (ret) {
479453 dev_err(phy->dev, "Failed to enable div_clk %d\n", ret);
480− goto err3;
454+ goto disable_wkupclk;
481455 }
482456 }
483457
484− phy->enabled = true;
485− spin_unlock_irqrestore(&phy->lock, flags);
486458 return 0;
487459
488−err3:
460+disable_wkupclk:
489461 if (!IS_ERR(phy->wkupclk))
490462 clk_disable_unprepare(phy->wkupclk);
491463
492−err2:
464+disable_refclk:
493465 if (!IS_ERR(phy->refclk))
494466 clk_disable_unprepare(phy->refclk);
495467
496− ti_pipe3_disable_refclk(phy);
497−err1:
498− spin_unlock_irqrestore(&phy->lock, flags);
499468 return ret;
500469 }
501470
502471 static void ti_pipe3_disable_clocks(struct ti_pipe3 *phy)
503472 {
504− unsigned long flags;
505−
506− spin_lock_irqsave(&phy->lock, flags);
507− if (!phy->enabled) {
508− spin_unlock_irqrestore(&phy->lock, flags);
509− return;
510− }
511−
512473 if (!IS_ERR(phy->wkupclk))
513474 clk_disable_unprepare(phy->wkupclk);
514− /* Don't disable refclk for SATA PHY due to Errata i783 */
515− if (!of_device_is_compatible(phy->dev->of_node, "ti,phy-pipe3-sata"))
516− ti_pipe3_disable_refclk(phy);
475+ if (!IS_ERR(phy->refclk))
476+ clk_disable_unprepare(phy->refclk);
517477 if (!IS_ERR(phy->div_clk))
518478 clk_disable_unprepare(phy->div_clk);
519− phy->enabled = false;
520− spin_unlock_irqrestore(&phy->lock, flags);
521−}
522−
523−static int ti_pipe3_runtime_suspend(struct device *dev)
524−{
525− struct ti_pipe3 *phy = dev_get_drvdata(dev);
526−
527− ti_pipe3_disable_clocks(phy);
528− return 0;
529479 }
530480
531−static int ti_pipe3_runtime_resume(struct device *dev)
532−{
533− struct ti_pipe3 *phy = dev_get_drvdata(dev);
534− int ret = 0;
535−
536− ret = ti_pipe3_enable_clocks(phy);
537− return ret;
538−}
539−
540−static int ti_pipe3_suspend(struct device *dev)
541−{
542− struct ti_pipe3 *phy = dev_get_drvdata(dev);
543−
544− ti_pipe3_disable_clocks(phy);
545− return 0;
546−}
547−
548−static int ti_pipe3_resume(struct device *dev)
549−{
550− struct ti_pipe3 *phy = dev_get_drvdata(dev);
551− int ret;
552−
553− ret = ti_pipe3_enable_clocks(phy);
554− if (ret)
555− return ret;
556−
557− pm_runtime_disable(dev);
558− pm_runtime_set_active(dev);
559− pm_runtime_enable(dev);
560− return 0;
561−}
562−#endif
563−
564−static const struct dev_pm_ops ti_pipe3_pm_ops = {
565− SET_RUNTIME_PM_OPS(ti_pipe3_runtime_suspend,
566− ti_pipe3_runtime_resume, NULL)
567− SET_SYSTEM_SLEEP_PM_OPS(ti_pipe3_suspend, ti_pipe3_resume)
568−};
569−
570481 static const struct of_device_id ti_pipe3_id_table[] = {
571482 {
572483 .compatible = "ti,phy-usb3",
@@ -592,7 +503,6 @@ static struct platform_driver ti_pipe3_driver = { · 19 unmodified lines
592503 .remove = ti_pipe3_remove,
593504 .driver = {
594505 .name = "ti-pipe3",
595− .pm = &ti_pipe3_pm_ops,
596506 .of_match_table = ti_pipe3_id_table,
597507 },
598508 };
drivers/pinctrl/bcm/pinctrl-bcm2835.c+2−0
@@ -473,6 +473,8 @@ static void bcm2835_gpio_irq_disable(struct irq_data *data) · 472 unmodified lines
473473
474474 spin_lock_irqsave(&pc->irq_lock[bank], flags);
475475 bcm2835_gpio_irq_config(pc, gpio, false);
476+ /* Clear events that were latched prior to clearing event sources */
477+ bcm2835_gpio_set_bit(pc, GPEDS0, gpio);
476478 clear_bit(offset, &pc->enabled_irq_map[bank]);
477479 spin_unlock_irqrestore(&pc->irq_lock[bank], flags);
478480 }
drivers/pinctrl/freescale/pinctrl-imx1-core.c+1−2
@@ -403,14 +403,13 @@ static int imx1_pinconf_set(struct pinctrl_dev *pctldev, · 402 unmodified lines
403403 unsigned num_configs)
404404 {
405405 struct imx1_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
406− const struct imx1_pinctrl_soc_info *info = ipctl->info;
407406 int i;
408407
409408 for (i = 0; i != num_configs; ++i) {
410409 imx1_write_bit(ipctl, pin_id, configs[i] & 0x01, MX1_PUEN);
411410
412411 dev_dbg(ipctl->dev, "pinconf set pullup pin %s\n",
413− info->pins[pin_id].name);
412+ pin_desc_get(pctldev, pin_id)->name);
414413 }
415414
416415 return 0;
drivers/pinctrl/nomadik/pinctrl-abx500.c+0−1
@@ -787,7 +787,6 @@ static const struct pinmux_ops abx500_pinmux_ops = { · 786 unmodified lines
787787 .set_mux = abx500_pmx_set,
788788 .gpio_request_enable = abx500_gpio_request_enable,
789789 .gpio_disable_free = abx500_gpio_disable_free,
790− .strict = true,
791790 };
792791
793792 static int abx500_get_groups_cnt(struct pinctrl_dev *pctldev)
drivers/pinctrl/pinctrl-lpc18xx.c+2−2
@@ -823,7 +823,7 @@ static int lpc18xx_pconf_set_i2c0(struct pinctrl_dev *pctldev, · 822 unmodified lines
823823 break;
824824
825825 case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
826− if (param)
826+ if (param_val)
827827 *reg &= ~(LPC18XX_SCU_I2C0_ZIF << shift);
828828 else
829829 *reg |= (LPC18XX_SCU_I2C0_ZIF << shift);
@@ -876,7 +876,7 @@ static int lpc18xx_pconf_set_pin(struct pinctrl_dev *pctldev, · 46 unmodified lines
876876 break;
877877
878878 case PIN_CONFIG_INPUT_SCHMITT_ENABLE:
879− if (param)
879+ if (param_val)
880880 *reg &= ~LPC18XX_SCU_PIN_ZIF;
881881 else
882882 *reg |= LPC18XX_SCU_PIN_ZIF;
drivers/pinctrl/pinctrl-single.c+2−1
@@ -1760,7 +1760,8 @@ static int pcs_irq_init_chained_handler(struct pcs_device *pcs, · 1759 unmodified lines
17601760 int res;
17611761
17621762 res = request_irq(pcs_soc->irq, pcs_irq_handler,
1763− IRQF_SHARED | IRQF_NO_SUSPEND,
1763+ IRQF_SHARED | IRQF_NO_SUSPEND |
1764+ IRQF_NO_THREAD,
17641765 name, pcs_soc);
17651766 if (res) {
17661767 pcs_soc->irq = -1;
drivers/pinctrl/samsung/pinctrl-samsung.c+0−5
@@ -33,11 +33,6 @@ · 32 unmodified lines
3333 #include "../core.h"
3434 #include "pinctrl-samsung.h"
3535
36−#define GROUP_SUFFIX "-grp"
37−#define GSUFFIX_LEN sizeof(GROUP_SUFFIX)
38−#define FUNCTION_SUFFIX "-mux"
39−#define FSUFFIX_LEN sizeof(FUNCTION_SUFFIX)
40−
4136 /* list of all possible config options supported */
4237 static struct pin_config {
4338 const char *property;
drivers/pinctrl/sh-pfc/sh_pfc.h+1−1
@@ -224,7 +224,7 @@ struct sh_pfc_soc_info { · 223 unmodified lines
224224
225225 /* PINMUX_GPIO_GP_ALL - Expand to a list of sh_pfc_pin entries */
226226 #define _GP_GPIO(bank, _pin, _name, sfx) \
227− [(bank * 32) + _pin] = { \
227+ { \
228228 .pin = (bank * 32) + _pin, \
229229 .name = __stringify(_name), \
230230 .enum_id = _name##_DATA, \
drivers/regulator/88pm800.c+1−1
@@ -130,7 +130,7 @@ struct pm800_regulators { · 129 unmodified lines
130130 .owner = THIS_MODULE, \
131131 .n_voltages = ARRAY_SIZE(ldo_volt_table), \
132132 .vsel_reg = PM800_##vreg##_VOUT, \
133− .vsel_mask = 0x1f, \
133+ .vsel_mask = 0xf, \
134134 .enable_reg = PM800_##ereg, \
135135 .enable_mask = 1 << (ebit), \
136136 .volt_table = ldo_volt_table, \
drivers/regulator/core.c+15−4
@@ -109,6 +109,7 @@ static int _regulator_do_set_voltage(struct regulator_dev *rdev, · 108 unmodified lines
109109 static struct regulator *create_regulator(struct regulator_dev *rdev,
110110 struct device *dev,
111111 const char *supply_name);
112+static void _regulator_put(struct regulator *regulator);
112113
113114 static const char *rdev_get_name(struct regulator_dev *rdev)
114115 {
@@ -1105,6 +1106,9 @@ static int set_supply(struct regulator_dev *rdev, · 990 unmodified lines
11051106
11061107 rdev_info(rdev, "supplied by %s\n", rdev_get_name(supply_rdev));
11071108
1109+ if (!try_module_get(supply_rdev->owner))
1110+ return -ENODEV;
1111+
11081112 rdev->supply = create_regulator(supply_rdev, &rdev->dev, "SUPPLY");
11091113 if (rdev->supply == NULL) {
11101114 err = -ENOMEM;
@@ -1381,9 +1385,13 @@ static int regulator_resolve_supply(struct regulator_dev *rdev) · 270 unmodified lines
13811385 }
13821386
13831387 if (!r) {
1384− dev_err(dev, "Failed to resolve %s-supply for %s\n",
1385− rdev->supply_name, rdev->desc->name);
1386− return -EPROBE_DEFER;
1388+ if (have_full_constraints()) {
1389+ r = dummy_regulator_rdev;
1390+ } else {
1391+ dev_err(dev, "Failed to resolve %s-supply for %s\n",
1392+ rdev->supply_name, rdev->desc->name);
1393+ return -EPROBE_DEFER;
1394+ }
13871395 }
13881396
13891397 /* Recursively resolve the supply of the supply */
@@ -1398,8 +1406,11 @@ static int regulator_resolve_supply(struct regulator_dev *rdev) · 8 unmodified lines
13981406 /* Cascade always-on state to supply */
13991407 if (_regulator_is_enabled(rdev)) {
14001408 ret = regulator_enable(rdev->supply);
1401− if (ret < 0)
1409+ if (ret < 0) {
1410+ if (rdev->supply)
1411+ _regulator_put(rdev->supply);
14021412 return ret;
1413+ }
14031414 }
14041415
14051416 return 0;
drivers/regulator/max8973-regulator.c+1−1
@@ -450,7 +450,7 @@ static struct max8973_regulator_platform_data *max8973_parse_dt( · 449 unmodified lines
450450 pdata->control_flags |= MAX8973_CONTROL_FREQ_SHIFT_9PER_ENABLE;
451451
452452 if (of_property_read_bool(np, "maxim,enable-bias-control"))
453− pdata->control_flags |= MAX8973_BIAS_ENABLE;
453+ pdata->control_flags |= MAX8973_CONTROL_BIAS_ENABLE;
454454
455455 return pdata;
456456 }
drivers/regulator/s2mps11.c+10−4
@@ -34,6 +34,8 @@ · 33 unmodified lines
3434 #include <linux/mfd/samsung/s2mps14.h>
3535 #include <linux/mfd/samsung/s2mpu02.h>
3636
37+/* The highest number of possible regulators for supported devices. */
38+#define S2MPS_REGULATOR_MAX S2MPS13_REGULATOR_MAX
3739 struct s2mps11_info {
3840 unsigned int rdev_num;
3941 int ramp_delay2;
@@ -49,7 +51,7 @@ struct s2mps11_info { · 9 unmodified lines
4951 * One bit for each S2MPS13/S2MPS14/S2MPU02 regulator whether
5052 * the suspend mode was enabled.
5153 */
52− unsigned long long s2mps14_suspend_state:50;
54+ DECLARE_BITMAP(suspend_state, S2MPS_REGULATOR_MAX);
5355
5456 /* Array of size rdev_num with GPIO-s for external sleep control */
5557 int *ext_control_gpio;
@@ -500,7 +502,7 @@ static int s2mps14_regulator_enable(struct regulator_dev *rdev) · 444 unmodified lines
500502 switch (s2mps11->dev_type) {
501503 case S2MPS13X:
502504 case S2MPS14X:
503− if (s2mps11->s2mps14_suspend_state & (1 << rdev_get_id(rdev)))
505+ if (test_bit(rdev_get_id(rdev), s2mps11->suspend_state))
504506 val = S2MPS14_ENABLE_SUSPEND;
505507 else if (gpio_is_valid(s2mps11->ext_control_gpio[rdev_get_id(rdev)]))
506508 val = S2MPS14_ENABLE_EXT_CONTROL;
@@ -508,7 +510,7 @@ static int s2mps14_regulator_enable(struct regulator_dev *rdev) · 1 unmodified line
508510 val = rdev->desc->enable_mask;
509511 break;
510512 case S2MPU02:
511− if (s2mps11->s2mps14_suspend_state & (1 << rdev_get_id(rdev)))
513+ if (test_bit(rdev_get_id(rdev), s2mps11->suspend_state))
512514 val = S2MPU02_ENABLE_SUSPEND;
513515 else
514516 val = rdev->desc->enable_mask;
@@ -562,7 +564,7 @@ static int s2mps14_regulator_set_suspend_disable(struct regulator_dev *rdev) · 47 unmodified lines
562564 if (ret < 0)
563565 return ret;
564566
565− s2mps11->s2mps14_suspend_state |= (1 << rdev_get_id(rdev));
567+ set_bit(rdev_get_id(rdev), s2mps11->suspend_state);
566568 /*
567569 * Don't enable suspend mode if regulator is already disabled because
568570 * this would effectively for a short time turn on the regulator after
@@ -960,18 +962,22 @@ static int s2mps11_pmic_probe(struct platform_device *pdev) · 391 unmodified lines
960962 case S2MPS11X:
961963 s2mps11->rdev_num = ARRAY_SIZE(s2mps11_regulators);
962964 regulators = s2mps11_regulators;
965+ BUILD_BUG_ON(S2MPS_REGULATOR_MAX < s2mps11->rdev_num);
963966 break;
964967 case S2MPS13X:
965968 s2mps11->rdev_num = ARRAY_SIZE(s2mps13_regulators);
966969 regulators = s2mps13_regulators;
970+ BUILD_BUG_ON(S2MPS_REGULATOR_MAX < s2mps11->rdev_num);
967971 break;
968972 case S2MPS14X:
969973 s2mps11->rdev_num = ARRAY_SIZE(s2mps14_regulators);
970974 regulators = s2mps14_regulators;
975+ BUILD_BUG_ON(S2MPS_REGULATOR_MAX < s2mps11->rdev_num);
971976 break;
972977 case S2MPU02:
973978 s2mps11->rdev_num = ARRAY_SIZE(s2mpu02_regulators);
974979 regulators = s2mpu02_regulators;
980+ BUILD_BUG_ON(S2MPS_REGULATOR_MAX < s2mps11->rdev_num);
975981 break;
976982 default:
977983 dev_err(&pdev->dev, "Invalid device type: %u\n",
drivers/s390/Makefile+1−1
@@ -2,7 +2,7 @@ · 1 unmodified line
22 # Makefile for the S/390 specific device drivers
33 #
44
5−obj-y += cio/ block/ char/ crypto/ net/ scsi/ kvm/
5+obj-y += cio/ block/ char/ crypto/ net/ scsi/ virtio/
66
77 drivers-y += drivers/s390/built-in.o
88
drivers/s390/virtio/Makefilerenamed from drivers/s390/kvm/Makefile+0−0

File renamed without changes.

drivers/s390/virtio/kvm_virtio.crenamed from drivers/s390/kvm/kvm_virtio.c+0−0

File renamed without changes.

drivers/s390/virtio/virtio_ccw.crenamed from drivers/s390/kvm/virtio_ccw.c+0−0

File renamed without changes.

drivers/scsi/virtio_scsi.c+3−1
@@ -949,7 +949,7 @@ static int virtscsi_probe(struct virtio_device *vdev) · 948 unmodified lines
949949 {
950950 struct Scsi_Host *shost;
951951 struct virtio_scsi *vscsi;
952− int err, host_prot;
952+ int err;
953953 u32 sg_elems, num_targets;
954954 u32 cmd_per_lun;
955955 u32 num_queues;
@@ -1009,6 +1009,8 @@ static int virtscsi_probe(struct virtio_device *vdev) · 53 unmodified lines
10091009
10101010 #ifdef CONFIG_BLK_DEV_INTEGRITY
10111011 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_T10_PI)) {
1012+ int host_prot;
1013+
10121014 host_prot = SHOST_DIF_TYPE1_PROTECTION | SHOST_DIF_TYPE2_PROTECTION |
10131015 SHOST_DIF_TYPE3_PROTECTION | SHOST_DIX_TYPE1_PROTECTION |
10141016 SHOST_DIX_TYPE2_PROTECTION | SHOST_DIX_TYPE3_PROTECTION;
drivers/spi/Kconfig+1−1
@@ -612,7 +612,7 @@ config SPI_XTENSA_XTFPGA · 611 unmodified lines
612612
613613 config SPI_ZYNQMP_GQSPI
614614 tristate "Xilinx ZynqMP GQSPI controller"
615− depends on SPI_MASTER
615+ depends on SPI_MASTER && HAS_DMA
616616 help
617617 Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC.
618618
drivers/spi/spi-img-spfi.c+2−0
@@ -40,6 +40,7 @@ · 39 unmodified lines
4040 #define SPFI_CONTROL_SOFT_RESET BIT(11)
4141 #define SPFI_CONTROL_SEND_DMA BIT(10)
4242 #define SPFI_CONTROL_GET_DMA BIT(9)
43+#define SPFI_CONTROL_SE BIT(8)
4344 #define SPFI_CONTROL_TMODE_SHIFT 5
4445 #define SPFI_CONTROL_TMODE_MASK 0x7
4546 #define SPFI_CONTROL_TMODE_SINGLE 0
@@ -491,6 +492,7 @@ static void img_spfi_config(struct spi_master *master, struct spi_device *spi, · 445 unmodified lines
491492 else if (xfer->tx_nbits == SPI_NBITS_QUAD &&
492493 xfer->rx_nbits == SPI_NBITS_QUAD)
493494 val |= SPFI_CONTROL_TMODE_QUAD << SPFI_CONTROL_TMODE_SHIFT;
495+ val |= SPFI_CONTROL_SE;
494496 spfi_writel(spfi, val, SPFI_CONTROL);
495497 }
496498
drivers/spi/spi-imx.c+3−2
@@ -201,8 +201,9 @@ static bool spi_imx_can_dma(struct spi_master *master, struct spi_device *spi, · 200 unmodified lines
201201 {
202202 struct spi_imx_data *spi_imx = spi_master_get_devdata(master);
203203
204− if (spi_imx->dma_is_inited && (transfer->len > spi_imx->rx_wml)
205− && (transfer->len > spi_imx->tx_wml))
204+ if (spi_imx->dma_is_inited
205+ && transfer->len > spi_imx->rx_wml * sizeof(u32)
206+ && transfer->len > spi_imx->tx_wml * sizeof(u32))
206207 return true;
207208 return false;
208209 }
drivers/spi/spi-zynqmp-gqspi.c+1−0
@@ -214,6 +214,7 @@ static void zynqmp_gqspi_selectslave(struct zynqmp_qspi *instanceptr, · 213 unmodified lines
214214 case GQSPI_SELECT_FLASH_CS_BOTH:
215215 instanceptr->genfifocs = GQSPI_GENFIFO_CS_LOWER |
216216 GQSPI_GENFIFO_CS_UPPER;
217+ break;
217218 case GQSPI_SELECT_FLASH_CS_UPPER:
218219 instanceptr->genfifocs = GQSPI_GENFIFO_CS_UPPER;
219220 break;
drivers/spi/spidev.c+1−0
@@ -693,6 +693,7 @@ static struct class *spidev_class; · 692 unmodified lines
693693 #ifdef CONFIG_OF
694694 static const struct of_device_id spidev_dt_ids[] = {
695695 { .compatible = "rohm,dh2228fv" },
696+ { .compatible = "lineartechnology,ltc2488" },
696697 {},
697698 };
698699 MODULE_DEVICE_TABLE(of, spidev_dt_ids);
drivers/tty/n_tty.c+13−3
@@ -1108,19 +1108,29 @@ static void eraser(unsigned char c, struct tty_struct *tty) · 1107 unmodified lines
11081108 * Locking: ctrl_lock
11091109 */
11101110
1111−static void isig(int sig, struct tty_struct *tty)
1111+static void __isig(int sig, struct tty_struct *tty)
11121112 {
1113− struct n_tty_data *ldata = tty->disc_data;
11141113 struct pid *tty_pgrp = tty_get_pgrp(tty);
11151114 if (tty_pgrp) {
11161115 kill_pgrp(tty_pgrp, sig, 1);
11171116 put_pid(tty_pgrp);
11181117 }
1118+}
11191119
1120− if (!L_NOFLSH(tty)) {
1120+static void isig(int sig, struct tty_struct *tty)
1121+{
1122+ struct n_tty_data *ldata = tty->disc_data;
1123+
1124+ if (L_NOFLSH(tty)) {
1125+ /* signal only */
1126+ __isig(sig, tty);
1127+
1128+ } else { /* signal and flush */
11211129 up_read(&tty->termios_rwsem);
11221130 down_write(&tty->termios_rwsem);
11231131
1132+ __isig(sig, tty);
1133+
11241134 /* clear echo buffer */
11251135 mutex_lock(&ldata->output_lock);
11261136 ldata->echo_head = ldata->echo_tail = 0;
drivers/tty/serial/Kconfig+1−1
@@ -1185,7 +1185,7 @@ config SERIAL_SC16IS7XX_CORE · 1184 unmodified lines
11851185 config SERIAL_SC16IS7XX
11861186 tristate "SC16IS7xx serial support"
11871187 select SERIAL_CORE
1188− depends on I2C || SPI_MASTER
1188+ depends on (SPI_MASTER && !I2C) || I2C
11891189 help
11901190 This selects support for SC16IS7xx serial ports.
11911191 Supported ICs are SC16IS740, SC16IS741, SC16IS750, SC16IS752,
drivers/tty/serial/amba-pl011.c+2−2
@@ -2310,8 +2310,8 @@ static int pl011_setup_port(struct device *dev, struct uart_amba_port *uap, · 2309 unmodified lines
23102310 void __iomem *base;
23112311
23122312 base = devm_ioremap_resource(dev, mmiobase);
2313− if (!base)
2314− return -ENOMEM;
2313+ if (IS_ERR(base))
2314+ return PTR_ERR(base);
23152315
23162316 index = pl011_probe_dt_alias(index, dev);
23172317
drivers/tty/serial/etraxfs-uart.c+1−1
@@ -943,7 +943,7 @@ static int etraxfs_uart_remove(struct platform_device *pdev) · 942 unmodified lines
943943
944944 port = platform_get_drvdata(pdev);
945945 uart_remove_one_port(&etraxfs_uart_driver, port);
946− etraxfs_uart_ports[pdev->id] = NULL;
946+ etraxfs_uart_ports[port->line] = NULL;
947947
948948 return 0;
949949 }
drivers/tty/serial/imx.c+7−8
@@ -1139,11 +1139,6 @@ static int imx_startup(struct uart_port *port) · 1138 unmodified lines
11391139
11401140 writel(temp & ~UCR4_DREN, sport->port.membase + UCR4);
11411141
1142− /* Can we enable the DMA support? */
1143− if (is_imx6q_uart(sport) && !uart_console(port) &&
1144− !sport->dma_is_inited)
1145− imx_uart_dma_init(sport);
1146−
11471142 spin_lock_irqsave(&sport->port.lock, flags);
11481143 /* Reset fifo's and state machines */
11491144 imx_reset(sport);
@@ -1154,9 +1149,6 @@ static int imx_startup(struct uart_port *port) · 4 unmodified lines
11541149 writel(USR1_RTSD, sport->port.membase + USR1);
11551150 writel(USR2_ORE, sport->port.membase + USR2);
11561151
1157− if (sport->dma_is_inited && !sport->dma_is_enabled)
1158− imx_enable_dma(sport);
1159−
11601152 temp = readl(sport->port.membase + UCR1);
11611153 temp |= UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN;
11621154
@@ -1327,6 +1319,11 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios, · 164 unmodified lines
13271319 } else {
13281320 ucr2 |= UCR2_CTSC;
13291321 }
1322+
1323+ /* Can we enable the DMA support? */
1324+ if (is_imx6q_uart(sport) && !uart_console(port)
1325+ && !sport->dma_is_inited)
1326+ imx_uart_dma_init(sport);
13301327 } else {
13311328 termios->c_cflag &= ~CRTSCTS;
13321329 }
@@ -1443,6 +1440,8 @@ imx_set_termios(struct uart_port *port, struct ktermios *termios, · 110 unmodified lines
14431440 if (UART_ENABLE_MS(&sport->port, termios->c_cflag))
14441441 imx_enable_ms(&sport->port);
14451442
1443+ if (sport->dma_is_inited && !sport->dma_is_enabled)
1444+ imx_enable_dma(sport);
14461445 spin_unlock_irqrestore(&sport->port.lock, flags);
14471446 }
14481447
drivers/tty/serial/sc16is7xx.c+23−7
@@ -354,6 +354,26 @@ static void sc16is7xx_port_write(struct uart_port *port, u8 reg, u8 val) · 353 unmodified lines
354354 (reg << SC16IS7XX_REG_SHIFT) | port->line, val);
355355 }
356356
357+static void sc16is7xx_fifo_read(struct uart_port *port, unsigned int rxlen)
358+{
359+ struct sc16is7xx_port *s = dev_get_drvdata(port->dev);
360+ u8 addr = (SC16IS7XX_RHR_REG << SC16IS7XX_REG_SHIFT) | port->line;
361+
362+ regcache_cache_bypass(s->regmap, true);
363+ regmap_raw_read(s->regmap, addr, s->buf, rxlen);
364+ regcache_cache_bypass(s->regmap, false);
365+}
366+
367+static void sc16is7xx_fifo_write(struct uart_port *port, u8 to_send)
368+{
369+ struct sc16is7xx_port *s = dev_get_drvdata(port->dev);
370+ u8 addr = (SC16IS7XX_THR_REG << SC16IS7XX_REG_SHIFT) | port->line;
371+
372+ regcache_cache_bypass(s->regmap, true);
373+ regmap_raw_write(s->regmap, addr, s->buf, to_send);
374+ regcache_cache_bypass(s->regmap, false);
375+}
376+
357377 static void sc16is7xx_port_update(struct uart_port *port, u8 reg,
358378 u8 mask, u8 val)
359379 {
@@ -508,10 +528,7 @@ static void sc16is7xx_handle_rx(struct uart_port *port, unsigned int rxlen, · 148 unmodified lines
508528 s->buf[0] = sc16is7xx_port_read(port, SC16IS7XX_RHR_REG);
509529 bytes_read = 1;
510530 } else {
511− regcache_cache_bypass(s->regmap, true);
512− regmap_raw_read(s->regmap, SC16IS7XX_RHR_REG,
513− s->buf, rxlen);
514− regcache_cache_bypass(s->regmap, false);
531+ sc16is7xx_fifo_read(port, rxlen);
515532 bytes_read = rxlen;
516533 }
517534
@@ -591,9 +608,8 @@ static void sc16is7xx_handle_tx(struct uart_port *port) · 73 unmodified lines
591608 s->buf[i] = xmit->buf[xmit->tail];
592609 xmit->tail = (xmit->tail + 1) & (UART_XMIT_SIZE - 1);
593610 }
594− regcache_cache_bypass(s->regmap, true);
595− regmap_raw_write(s->regmap, SC16IS7XX_THR_REG, s->buf, to_send);
596− regcache_cache_bypass(s->regmap, false);
611+
612+ sc16is7xx_fifo_write(port, to_send);
597613 }
598614
599615 if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
drivers/tty/serial/serial_core.c+2−1
@@ -1418,7 +1418,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp) · 1417 unmodified lines
14181418 mutex_lock(&port->mutex);
14191419 uart_shutdown(tty, state);
14201420 tty_port_tty_set(port, NULL);
1421− tty->closing = 0;
1421+
14221422 spin_lock_irqsave(&port->lock, flags);
14231423
14241424 if (port->blocked_open) {
@@ -1444,6 +1444,7 @@ static void uart_close(struct tty_struct *tty, struct file *filp) · 19 unmodified lines
14441444 mutex_unlock(&port->mutex);
14451445
14461446 tty_ldisc_flush(tty);
1447+ tty->closing = 0;
14471448 }
14481449
14491450 static void uart_wait_until_sent(struct tty_struct *tty, int timeout)
drivers/tty/vt/selection.c+1−0
@@ -356,6 +356,7 @@ int paste_selection(struct tty_struct *tty) · 355 unmodified lines
356356 schedule();
357357 continue;
358358 }
359+ __set_current_state(TASK_RUNNING);
359360 count = sel_buffer_lth - pasted;
360361 count = tty_ldisc_receive_buf(ld, sel_buffer + pasted, NULL,
361362 count);
drivers/tty/vt/vt.c+2−0
@@ -742,6 +742,8 @@ static void visual_init(struct vc_data *vc, int num, int init) · 741 unmodified lines
742742 __module_get(vc->vc_sw->owner);
743743 vc->vc_num = num;
744744 vc->vc_display_fg = &master_display_fg;
745+ if (vc->vc_uni_pagedir_loc)
746+ con_free_unimap(vc);
745747 vc->vc_uni_pagedir_loc = &vc->vc_uni_pagedir;
746748 vc->vc_uni_pagedir = NULL;
747749 vc->vc_hi_font_mask = 0;
drivers/usb/class/cdc-acm.c+1−0
@@ -1944,6 +1944,7 @@ static void __exit acm_exit(void) · 1943 unmodified lines
19441944 usb_deregister(&acm_driver);
19451945 tty_unregister_driver(acm_tty_driver);
19461946 put_tty_driver(acm_tty_driver);
1947+ idr_destroy(&acm_minors);
19471948 }
19481949
19491950 module_init(acm_init);
drivers/usb/common/ulpi.c+1−1
@@ -242,7 +242,7 @@ static int __init ulpi_init(void) · 241 unmodified lines
242242 {
243243 return bus_register(&ulpi_bus);
244244 }
245−module_init(ulpi_init);
245+subsys_initcall(ulpi_init);
246246
247247 static void __exit ulpi_exit(void)
248248 {
drivers/usb/core/hcd.c+5−2
@@ -1022,9 +1022,12 @@ static int register_root_hub(struct usb_hcd *hcd) · 1021 unmodified lines
10221022 dev_name(&usb_dev->dev), retval);
10231023 return (retval < 0) ? retval : -EMSGSIZE;
10241024 }
1025− if (usb_dev->speed == USB_SPEED_SUPER) {
1025+
1026+ if (le16_to_cpu(usb_dev->descriptor.bcdUSB) >= 0x0201) {
10261027 retval = usb_get_bos_descriptor(usb_dev);
1027− if (retval < 0) {
1028+ if (!retval) {
1029+ usb_dev->lpm_capable = usb_device_supports_lpm(usb_dev);
1030+ } else if (usb_dev->speed == USB_SPEED_SUPER) {
10281031 mutex_unlock(&usb_bus_list_lock);
10291032 dev_dbg(parent_dev, "can't read %s bos descriptor %d\n",
10301033 dev_name(&usb_dev->dev), retval);
drivers/usb/core/hub.c+1−1
@@ -122,7 +122,7 @@ struct usb_hub *usb_hub_to_struct_hub(struct usb_device *hdev) · 121 unmodified lines
122122 return usb_get_intfdata(hdev->actconfig->interface[0]);
123123 }
124124
125−static int usb_device_supports_lpm(struct usb_device *udev)
125+int usb_device_supports_lpm(struct usb_device *udev)
126126 {
127127 /* USB 2.1 (and greater) devices indicate LPM support through
128128 * their USB 2.0 Extended Capabilities BOS descriptor.
drivers/usb/core/usb.h+1−0
@@ -65,6 +65,7 @@ extern int usb_hub_init(void); · 64 unmodified lines
6565 extern void usb_hub_cleanup(void);
6666 extern int usb_major_init(void);
6767 extern void usb_major_cleanup(void);
68+extern int usb_device_supports_lpm(struct usb_device *udev);
6869
6970 #ifdef CONFIG_PM
7071
drivers/usb/dwc3/ep0.c+4−0
@@ -727,6 +727,10 @@ static int dwc3_ep0_std_request(struct dwc3 *dwc, struct usb_ctrlrequest *ctrl) · 726 unmodified lines
727727 dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_ISOCH_DELAY");
728728 ret = dwc3_ep0_set_isoch_delay(dwc, ctrl);
729729 break;
730+ case USB_REQ_SET_INTERFACE:
731+ dwc3_trace(trace_dwc3_ep0, "USB_REQ_SET_INTERFACE");
732+ dwc->start_config_issued = false;
733+ /* Fall through */
730734 default:
731735 dwc3_trace(trace_dwc3_ep0, "Forwarding to gadget driver");
732736 ret = dwc3_ep0_delegate_req(dwc, ctrl);
drivers/usb/gadget/udc/mv_udc_core.c+1−1
@@ -2167,7 +2167,7 @@ static int mv_udc_probe(struct platform_device *pdev) · 2166 unmodified lines
21672167 return -ENODEV;
21682168 }
21692169
2170− udc->phy_regs = ioremap(r->start, resource_size(r));
2170+ udc->phy_regs = devm_ioremap(&pdev->dev, r->start, resource_size(r));
21712171 if (udc->phy_regs == NULL) {
21722172 dev_err(&pdev->dev, "failed to map phy I/O memory\n");
21732173 return -EBUSY;
drivers/usb/gadget/udc/udc-core.c+8−6
@@ -60,13 +60,15 @@ static DEFINE_MUTEX(udc_lock); · 59 unmodified lines
6060 int usb_gadget_map_request(struct usb_gadget *gadget,
6161 struct usb_request *req, int is_in)
6262 {
63+ struct device *dev = gadget->dev.parent;
64+
6365 if (req->length == 0)
6466 return 0;
6567
6668 if (req->num_sgs) {
6769 int mapped;
6870
69− mapped = dma_map_sg(&gadget->dev, req->sg, req->num_sgs,
71+ mapped = dma_map_sg(dev, req->sg, req->num_sgs,
7072 is_in ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
7173 if (mapped == 0) {
7274 dev_err(&gadget->dev, "failed to map SGs\n");
@@ -75,11 +77,11 @@ int usb_gadget_map_request(struct usb_gadget *gadget, · 2 unmodified lines
7577
7678 req->num_mapped_sgs = mapped;
7779 } else {
78− req->dma = dma_map_single(&gadget->dev, req->buf, req->length,
80+ req->dma = dma_map_single(dev, req->buf, req->length,
7981 is_in ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
8082
81− if (dma_mapping_error(&gadget->dev, req->dma)) {
82− dev_err(&gadget->dev, "failed to map buffer\n");
83+ if (dma_mapping_error(dev, req->dma)) {
84+ dev_err(dev, "failed to map buffer\n");
8385 return -EFAULT;
8486 }
8587 }
@@ -95,12 +97,12 @@ void usb_gadget_unmap_request(struct usb_gadget *gadget, · 9 unmodified lines
9597 return;
9698
9799 if (req->num_mapped_sgs) {
98− dma_unmap_sg(&gadget->dev, req->sg, req->num_mapped_sgs,
100+ dma_unmap_sg(gadget->dev.parent, req->sg, req->num_mapped_sgs,
99101 is_in ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
100102
101103 req->num_mapped_sgs = 0;
102104 } else {
103− dma_unmap_single(&gadget->dev, req->dma, req->length,
105+ dma_unmap_single(gadget->dev.parent, req->dma, req->length,
104106 is_in ? DMA_TO_DEVICE : DMA_FROM_DEVICE);
105107 }
106108 }
drivers/usb/host/ohci-q.c+1−6
@@ -981,10 +981,6 @@ rescan_all: · 980 unmodified lines
981981 int completed, modified;
982982 __hc32 *prev;
983983
984− /* Is this ED already invisible to the hardware? */
985− if (ed->state == ED_IDLE)
986− goto ed_idle;
987−
988984 /* only take off EDs that the HC isn't using, accounting for
989985 * frame counter wraps and EDs with partially retired TDs
990986 */
@@ -1012,12 +1008,10 @@ skip_ed: · 21 unmodified lines
10121008 }
10131009
10141010 /* ED's now officially unlinked, hc doesn't see */
1015− ed->state = ED_IDLE;
10161011 ed->hwHeadP &= ~cpu_to_hc32(ohci, ED_H);
10171012 ed->hwNextED = 0;
10181013 wmb();
10191014 ed->hwINFO &= ~cpu_to_hc32(ohci, ED_SKIP | ED_DEQUEUE);
1020−ed_idle:
10211015
10221016 /* reentrancy: if we drop the schedule lock, someone might
10231017 * have modified this list. normally it's just prepending
@@ -1088,6 +1082,7 @@ rescan_this: · 64 unmodified lines
10881082 if (list_empty(&ed->td_list)) {
10891083 *last = ed->ed_next;
10901084 ed->ed_next = NULL;
1085+ ed->state = ED_IDLE;
10911086 list_del(&ed->in_use_list);
10921087 } else if (ohci->rh_state == OHCI_RH_RUNNING) {
10931088 *last = ed->ed_next;
drivers/usb/host/ohci-tmio.c+1−1
@@ -58,7 +58,7 @@ · 57 unmodified lines
5858 #define CCR_PM_CKRNEN 0x0002
5959 #define CCR_PM_USBPW1 0x0004
6060 #define CCR_PM_USBPW2 0x0008
61−#define CCR_PM_USBPW3 0x0008
61+#define CCR_PM_USBPW3 0x0010
6262 #define CCR_PM_PMEE 0x0100
6363 #define CCR_PM_PMES 0x8000
6464
drivers/usb/host/xhci-hub.c+16−6
@@ -484,10 +484,13 @@ static void xhci_hub_report_usb3_link_state(struct xhci_hcd *xhci, · 483 unmodified lines
484484 u32 pls = status_reg & PORT_PLS_MASK;
485485
486486 /* resume state is a xHCI internal state.
487− * Do not report it to usb core.
487+ * Do not report it to usb core, instead, pretend to be U3,
488+ * thus usb core knows it's not ready for transfer
488489 */
489− if (pls == XDEV_RESUME)
490+ if (pls == XDEV_RESUME) {
491+ *status |= USB_SS_PORT_LS_U3;
490492 return;
493+ }
491494
492495 /* When the CAS bit is set then warm reset
493496 * should be performed on port
@@ -588,7 +591,14 @@ static u32 xhci_get_port_status(struct usb_hcd *hcd, · 94 unmodified lines
588591 status |= USB_PORT_STAT_C_RESET << 16;
589592 /* USB3.0 only */
590593 if (hcd->speed == HCD_USB3) {
591− if ((raw_port_status & PORT_PLC))
594+ /* Port link change with port in resume state should not be
595+ * reported to usbcore, as this is an internal state to be
596+ * handled by xhci driver. Reporting PLC to usbcore may
597+ * cause usbcore clearing PLC first and port change event
598+ * irq won't be generated.
599+ */
600+ if ((raw_port_status & PORT_PLC) &&
601+ (raw_port_status & PORT_PLS_MASK) != XDEV_RESUME)
592602 status |= USB_PORT_STAT_C_LINK_STATE << 16;
593603 if ((raw_port_status & PORT_WRC))
594604 status |= USB_PORT_STAT_C_BH_RESET << 16;
@@ -1120,10 +1130,10 @@ int xhci_bus_suspend(struct usb_hcd *hcd) · 525 unmodified lines
11201130 spin_lock_irqsave(&xhci->lock, flags);
11211131
11221132 if (hcd->self.root_hub->do_remote_wakeup) {
1123− if (bus_state->resuming_ports) {
1133+ if (bus_state->resuming_ports || /* USB2 */
1134+ bus_state->port_remote_wakeup) { /* USB3 */
11241135 spin_unlock_irqrestore(&xhci->lock, flags);
1125− xhci_dbg(xhci, "suspend failed because "
1126− "a port is resuming\n");
1136+ xhci_dbg(xhci, "suspend failed because a port is resuming\n");
11271137 return -EBUSY;
11281138 }
11291139 }
drivers/usb/host/xhci-mem.c+1−1
@@ -1427,10 +1427,10 @@ int xhci_endpoint_init(struct xhci_hcd *xhci, · 1426 unmodified lines
14271427 /* Attempt to use the ring cache */
14281428 if (virt_dev->num_rings_cached == 0)
14291429 return -ENOMEM;
1430+ virt_dev->num_rings_cached--;
14301431 virt_dev->eps[ep_index].new_ring =
14311432 virt_dev->ring_cache[virt_dev->num_rings_cached];
14321433 virt_dev->ring_cache[virt_dev->num_rings_cached] = NULL;
1433− virt_dev->num_rings_cached--;
14341434 xhci_reinit_cached_ring(xhci, virt_dev->eps[ep_index].new_ring,
14351435 1, type);
14361436 }
drivers/usb/host/xhci-pci.c+54−3
@@ -23,10 +23,15 @@ · 22 unmodified lines
2323 #include <linux/pci.h>
2424 #include <linux/slab.h>
2525 #include <linux/module.h>
26+#include <linux/acpi.h>
2627
2728 #include "xhci.h"
2829 #include "xhci-trace.h"
2930
31+#define PORT2_SSIC_CONFIG_REG2 0x883c
32+#define PROG_DONE (1 << 30)
33+#define SSIC_PORT_UNUSED (1 << 31)
34+
3035 /* Device for a quirk */
3136 #define PCI_VENDOR_ID_FRESCO_LOGIC 0x1b73
3237 #define PCI_DEVICE_ID_FRESCO_LOGIC_PDK 0x1000
@@ -176,20 +181,63 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) · 143 unmodified lines
176181 }
177182
178183 /*
184+ * In some Intel xHCI controllers, in order to get D3 working,
185+ * through a vendor specific SSIC CONFIG register at offset 0x883c,
186+ * SSIC PORT need to be marked as "unused" before putting xHCI
187+ * into D3. After D3 exit, the SSIC port need to be marked as "used".
188+ * Without this change, xHCI might not enter D3 state.
179189 * Make sure PME works on some Intel xHCI controllers by writing 1 to clear
180190 * the Internal PME flag bit in vendor specific PMCTRL register at offset 0x80a4
181191 */
182−static void xhci_pme_quirk(struct xhci_hcd *xhci)
192+static void xhci_pme_quirk(struct usb_hcd *hcd, bool suspend)
183193 {
194+ struct xhci_hcd *xhci = hcd_to_xhci(hcd);
195+ struct pci_dev *pdev = to_pci_dev(hcd->self.controller);
184196 u32 val;
185197 void __iomem *reg;
186198
199+ if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
200+ pdev->device == PCI_DEVICE_ID_INTEL_CHERRYVIEW_XHCI) {
201+
202+ reg = (void __iomem *) xhci->cap_regs + PORT2_SSIC_CONFIG_REG2;
203+
204+ /* Notify SSIC that SSIC profile programming is not done */
205+ val = readl(reg) & ~PROG_DONE;
206+ writel(val, reg);
207+
208+ /* Mark SSIC port as unused(suspend) or used(resume) */
209+ val = readl(reg);
210+ if (suspend)
211+ val |= SSIC_PORT_UNUSED;
212+ else
213+ val &= ~SSIC_PORT_UNUSED;
214+ writel(val, reg);
215+
216+ /* Notify SSIC that SSIC profile programming is done */
217+ val = readl(reg) | PROG_DONE;
218+ writel(val, reg);
219+ readl(reg);
220+ }
221+
187222 reg = (void __iomem *) xhci->cap_regs + 0x80a4;
188223 val = readl(reg);
189224 writel(val | BIT(28), reg);
190225 readl(reg);
191226 }
192227
228+#ifdef CONFIG_ACPI
229+static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev)
230+{
231+ static const u8 intel_dsm_uuid[] = {
232+ 0xb7, 0x0c, 0x34, 0xac, 0x01, 0xe9, 0xbf, 0x45,
233+ 0xb7, 0xe6, 0x2b, 0x34, 0xec, 0x93, 0x1e, 0x23,
234+ };
235+ acpi_evaluate_dsm(ACPI_HANDLE(&dev->dev), intel_dsm_uuid, 3, 1, NULL);
236+}
237+#else
238+ static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
239+#endif /* CONFIG_ACPI */
240+
193241 /* called during probe() after chip reset completes */
194242 static int xhci_pci_setup(struct usb_hcd *hcd)
195243 {
@@ -263,6 +311,9 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) · 67 unmodified lines
263311 HCC_MAX_PSA(xhci->hcc_params) >= 4)
264312 xhci->shared_hcd->can_do_streams = 1;
265313
314+ if (xhci->quirks & XHCI_PME_STUCK_QUIRK)
315+ xhci_pme_acpi_rtd3_enable(dev);
316+
266317 /* USB-2 and USB-3 roothubs initialized, allow runtime pm suspend */
267318 pm_runtime_put_noidle(&dev->dev);
268319
@@ -307,7 +358,7 @@ static int xhci_pci_suspend(struct usb_hcd *hcd, bool do_wakeup) · 38 unmodified lines
307358 pdev->no_d3cold = true;
308359
309360 if (xhci->quirks & XHCI_PME_STUCK_QUIRK)
310− xhci_pme_quirk(xhci);
361+ xhci_pme_quirk(hcd, true);
311362
312363 return xhci_suspend(xhci, do_wakeup);
313364 }
@@ -340,7 +391,7 @@ static int xhci_pci_resume(struct usb_hcd *hcd, bool hibernated) · 26 unmodified lines
340391 usb_enable_intel_xhci_ports(pdev);
341392
342393 if (xhci->quirks & XHCI_PME_STUCK_QUIRK)
343− xhci_pme_quirk(xhci);
394+ xhci_pme_quirk(hcd, false);
344395
345396 retval = xhci_resume(xhci, hibernated);
346397 return retval;
drivers/usb/host/xhci-ring.c+3−0
@@ -1546,6 +1546,9 @@ static void handle_port_status(struct xhci_hcd *xhci, · 1545 unmodified lines
15461546 usb_hcd_resume_root_hub(hcd);
15471547 }
15481548
1549+ if (hcd->speed == HCD_USB3 && (temp & PORT_PLS_MASK) == XDEV_INACTIVE)
1550+ bus_state->port_remote_wakeup &= ~(1 << faked_port_index);
1551+
15491552 if ((temp & PORT_PLC) && (temp & PORT_PLS_MASK) == XDEV_RESUME) {
15501553 xhci_dbg(xhci, "port resume event for port %d\n", port_id);
15511554
drivers/usb/host/xhci.c+3−0
@@ -3453,6 +3453,9 @@ int xhci_discover_or_reset_device(struct usb_hcd *hcd, struct usb_device *udev) · 3452 unmodified lines
34533453 return -EINVAL;
34543454 }
34553455
3456+ if (virt_dev->tt_info)
3457+ old_active_eps = virt_dev->tt_info->active_eps;
3458+
34563459 if (virt_dev->udev != udev) {
34573460 /* If the virt_dev and the udev does not match, this virt_dev
34583461 * may belong to another udev.
drivers/usb/host/xhci.h+1−0
@@ -285,6 +285,7 @@ struct xhci_op_regs { · 284 unmodified lines
285285 #define XDEV_U0 (0x0 << 5)
286286 #define XDEV_U2 (0x2 << 5)
287287 #define XDEV_U3 (0x3 << 5)
288+#define XDEV_INACTIVE (0x6 << 5)
288289 #define XDEV_RESUME (0xf << 5)
289290 /* true: port has power (see HCC_PPC) */
290291 #define PORT_POWER (1 << 9)
drivers/usb/storage/unusual_devs.h+23−0
@@ -2065,6 +2065,18 @@ UNUSUAL_DEV( 0x1908, 0x3335, 0x0200, 0x0200, · 2064 unmodified lines
20652065 USB_SC_DEVICE, USB_PR_DEVICE, NULL,
20662066 US_FL_NO_READ_DISC_INFO ),
20672067
2068+/* Reported by Oliver Neukum <oneukum@suse.com>
2069+ * This device morphes spontaneously into another device if the access
2070+ * pattern of Windows isn't followed. Thus writable media would be dirty
2071+ * if the initial instance is used. So the device is limited to its
2072+ * virtual CD.
2073+ * And yes, the concept that BCD goes up to 9 is not heeded */
2074+UNUSUAL_DEV( 0x19d2, 0x1225, 0x0000, 0xffff,
2075+ "ZTE,Incorporated",
2076+ "ZTE WCDMA Technologies MSM",
2077+ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
2078+ US_FL_SINGLE_LUN ),
2079+
20682080 /* Reported by Sven Geggus <sven-usbst@geggus.net>
20692081 * This encrypted pen drive returns bogus data for the initial READ(10).
20702082 */
@@ -2074,6 +2086,17 @@ UNUSUAL_DEV( 0x1b1c, 0x1ab5, 0x0200, 0x0200, · 3 unmodified lines
20742086 USB_SC_DEVICE, USB_PR_DEVICE, NULL,
20752087 US_FL_INITIAL_READ10 ),
20762088
2089+/* Reported by Hans de Goede <hdegoede@redhat.com>
2090+ * These are mini projectors using USB for both power and video data transport
2091+ * The usb-storage interface is a virtual windows driver CD, which the gm12u320
2092+ * driver automatically converts into framebuffer & kms dri device nodes.
2093+ */
2094+UNUSUAL_DEV( 0x1de1, 0xc102, 0x0000, 0xffff,
2095+ "Grain-media Technology Corp.",
2096+ "USB3.0 Device GM12U320",
2097+ USB_SC_DEVICE, USB_PR_DEVICE, NULL,
2098+ US_FL_IGNORE_DEVICE ),
2099+
20772100 /* Patch by Richard Schütz <r.schtz@t-online.de>
20782101 * This external hard drive enclosure uses a JMicron chip which
20792102 * needs the US_FL_IGNORE_RESIDUE flag to work properly. */
drivers/vhost/vhost.c+51−16
@@ -22,14 +22,20 @@ · 21 unmodified lines
2222 #include <linux/file.h>
2323 #include <linux/highmem.h>
2424 #include <linux/slab.h>
25+#include <linux/vmalloc.h>
2526 #include <linux/kthread.h>
2627 #include <linux/cgroup.h>
2728 #include <linux/module.h>
29+#include <linux/sort.h>
2830
2931 #include "vhost.h"
3032
33+static ushort max_mem_regions = 64;
34+module_param(max_mem_regions, ushort, 0444);
35+MODULE_PARM_DESC(max_mem_regions,
36+ "Maximum number of memory regions in memory map. (default: 64)");
37+
3138 enum {
32− VHOST_MEMORY_MAX_NREGIONS = 64,
3339 VHOST_MEMORY_F_LOG = 0x1,
3440 };
3541
@@ -543,7 +549,7 @@ void vhost_dev_cleanup(struct vhost_dev *dev, bool locked) · 507 unmodified lines
543549 fput(dev->log_file);
544550 dev->log_file = NULL;
545551 /* No one will access memory at this point */
546− kfree(dev->memory);
552+ kvfree(dev->memory);
547553 dev->memory = NULL;
548554 WARN_ON(!list_empty(&dev->work_list));
549555 if (dev->worker) {
@@ -663,6 +669,28 @@ int vhost_vq_access_ok(struct vhost_virtqueue *vq) · 113 unmodified lines
663669 }
664670 EXPORT_SYMBOL_GPL(vhost_vq_access_ok);
665671
672+static int vhost_memory_reg_sort_cmp(const void *p1, const void *p2)
673+{
674+ const struct vhost_memory_region *r1 = p1, *r2 = p2;
675+ if (r1->guest_phys_addr < r2->guest_phys_addr)
676+ return 1;
677+ if (r1->guest_phys_addr > r2->guest_phys_addr)
678+ return -1;
679+ return 0;
680+}
681+
682+static void *vhost_kvzalloc(unsigned long size)
683+{
684+ void *n = kzalloc(size, GFP_KERNEL | __GFP_NOWARN | __GFP_REPEAT);
685+
686+ if (!n) {
687+ n = vzalloc(size);
688+ if (!n)
689+ return ERR_PTR(-ENOMEM);
690+ }
691+ return n;
692+}
693+
666694 static long vhost_set_memory(struct vhost_dev *d, struct vhost_memory __user *m)
667695 {
668696 struct vhost_memory mem, *newmem, *oldmem;
@@ -673,21 +701,23 @@ static long vhost_set_memory(struct vhost_dev *d, struct vhost_memory __user *m) · 4 unmodified lines
673701 return -EFAULT;
674702 if (mem.padding)
675703 return -EOPNOTSUPP;
676− if (mem.nregions > VHOST_MEMORY_MAX_NREGIONS)
704+ if (mem.nregions > max_mem_regions)
677705 return -E2BIG;
678− newmem = kmalloc(size + mem.nregions * sizeof *m->regions, GFP_KERNEL);
706+ newmem = vhost_kvzalloc(size + mem.nregions * sizeof(*m->regions));
679707 if (!newmem)
680708 return -ENOMEM;
681709
682710 memcpy(newmem, &mem, size);
683711 if (copy_from_user(newmem->regions, m->regions,
684712 mem.nregions * sizeof *m->regions)) {
685− kfree(newmem);
713+ kvfree(newmem);
686714 return -EFAULT;
687715 }
716+ sort(newmem->regions, newmem->nregions, sizeof(*newmem->regions),
717+ vhost_memory_reg_sort_cmp, NULL);
688718
689719 if (!memory_access_ok(d, newmem, 0)) {
690− kfree(newmem);
720+ kvfree(newmem);
691721 return -EFAULT;
692722 }
693723 oldmem = d->memory;
@@ -699,7 +729,7 @@ static long vhost_set_memory(struct vhost_dev *d, struct vhost_memory __user *m) · 5 unmodified lines
699729 d->vqs[i]->memory = newmem;
700730 mutex_unlock(&d->vqs[i]->mutex);
701731 }
702− kfree(oldmem);
732+ kvfree(oldmem);
703733 return 0;
704734 }
705735
@@ -992,17 +1022,22 @@ EXPORT_SYMBOL_GPL(vhost_dev_ioctl); · 286 unmodified lines
9921022 static const struct vhost_memory_region *find_region(struct vhost_memory *mem,
9931023 __u64 addr, __u32 len)
9941024 {
995− struct vhost_memory_region *reg;
996− int i;
1025+ const struct vhost_memory_region *reg;
1026+ int start = 0, end = mem->nregions;
9971027
998− /* linear search is not brilliant, but we really have on the order of 6
999− * regions in practice */
1000− for (i = 0; i < mem->nregions; ++i) {
1001− reg = mem->regions + i;
1002− if (reg->guest_phys_addr <= addr &&
1003− reg->guest_phys_addr + reg->memory_size - 1 >= addr)
1004− return reg;
1028+ while (start < end) {
1029+ int slot = start + (end - start) / 2;
1030+ reg = mem->regions + slot;
1031+ if (addr >= reg->guest_phys_addr)
1032+ end = slot;
1033+ else
1034+ start = slot + 1;
10051035 }
1036+
1037+ reg = mem->regions + start;
1038+ if (addr >= reg->guest_phys_addr &&
1039+ reg->guest_phys_addr + reg->memory_size > addr)
1040+ return reg;
10061041 return NULL;
10071042 }
10081043
fs/fs-writeback.c+1−0
@@ -702,6 +702,7 @@ void wbc_account_io(struct writeback_control *wbc, struct page *page, · 701 unmodified lines
702702 else
703703 wbc->wb_tcand_bytes -= min(bytes, wbc->wb_tcand_bytes);
704704 }
705+EXPORT_SYMBOL_GPL(wbc_account_io);
705706
706707 /**
707708 * inode_congested - test whether an inode is congested
fs/namespace.c+33−9
@@ -1361,6 +1361,36 @@ enum umount_tree_flags { · 1360 unmodified lines
13611361 UMOUNT_PROPAGATE = 2,
13621362 UMOUNT_CONNECTED = 4,
13631363 };
1364+
1365+static bool disconnect_mount(struct mount *mnt, enum umount_tree_flags how)
1366+{
1367+ /* Leaving mounts connected is only valid for lazy umounts */
1368+ if (how & UMOUNT_SYNC)
1369+ return true;
1370+
1371+ /* A mount without a parent has nothing to be connected to */
1372+ if (!mnt_has_parent(mnt))
1373+ return true;
1374+
1375+ /* Because the reference counting rules change when mounts are
1376+ * unmounted and connected, umounted mounts may not be
1377+ * connected to mounted mounts.
1378+ */
1379+ if (!(mnt->mnt_parent->mnt.mnt_flags & MNT_UMOUNT))
1380+ return true;
1381+
1382+ /* Has it been requested that the mount remain connected? */
1383+ if (how & UMOUNT_CONNECTED)
1384+ return false;
1385+
1386+ /* Is the mount locked such that it needs to remain connected? */
1387+ if (IS_MNT_LOCKED(mnt))
1388+ return false;
1389+
1390+ /* By default disconnect the mount */
1391+ return true;
1392+}
1393+
13641394 /*
13651395 * mount_lock must be held
13661396 * namespace_sem must be held for write
@@ -1398,10 +1428,7 @@ static void umount_tree(struct mount *mnt, enum umount_tree_flags how) · 31 unmodified lines
13981428 if (how & UMOUNT_SYNC)
13991429 p->mnt.mnt_flags |= MNT_SYNC_UMOUNT;
14001430
1401− disconnect = !(((how & UMOUNT_CONNECTED) &&
1402− mnt_has_parent(p) &&
1403− (p->mnt_parent->mnt.mnt_flags & MNT_UMOUNT)) ||
1404− IS_MNT_LOCKED_AND_LAZY(p));
1431+ disconnect = disconnect_mount(p, how);
14051432
14061433 pin_insert_group(&p->mnt_umount, &p->mnt_parent->mnt,
14071434 disconnect ? &unmounted : NULL);
@@ -1538,11 +1565,8 @@ void __detach_mounts(struct dentry *dentry) · 130 unmodified lines
15381565 while (!hlist_empty(&mp->m_list)) {
15391566 mnt = hlist_entry(mp->m_list.first, struct mount, mnt_mp_list);
15401567 if (mnt->mnt.mnt_flags & MNT_UMOUNT) {
1541− struct mount *p, *tmp;
1542− list_for_each_entry_safe(p, tmp, &mnt->mnt_mounts, mnt_child) {
1543− hlist_add_head(&p->mnt_umount.s_list, &unmounted);
1544− umount_mnt(p);
1545− }
1568+ hlist_add_head(&mnt->mnt_umount.s_list, &unmounted);
1569+ umount_mnt(mnt);
15461570 }
15471571 else umount_tree(mnt, UMOUNT_CONNECTED);
15481572 }
fs/notify/mark.c+20−14
@@ -152,15 +152,31 @@ void fsnotify_destroy_mark_locked(struct fsnotify_mark *mark, · 151 unmodified lines
152152 BUG();
153153
154154 list_del_init(&mark->g_list);
155+
155156 spin_unlock(&mark->lock);
156157
157158 if (inode && (mark->flags & FSNOTIFY_MARK_FLAG_OBJECT_PINNED))
158159 iput(inode);
160+ /* release lock temporarily */
161+ mutex_unlock(&group->mark_mutex);
159162
160163 spin_lock(&destroy_lock);
161164 list_add(&mark->g_list, &destroy_list);
162165 spin_unlock(&destroy_lock);
163166 wake_up(&destroy_waitq);
167+ /*
168+ * We don't necessarily have a ref on mark from caller so the above destroy
169+ * may have actually freed it, unless this group provides a 'freeing_mark'
170+ * function which must be holding a reference.
171+ */
172+
173+ /*
174+ * Some groups like to know that marks are being freed. This is a
175+ * callback to the group function to let it know that this mark
176+ * is being freed.
177+ */
178+ if (group->ops->freeing_mark)
179+ group->ops->freeing_mark(mark, group);
164180
165181 /*
166182 * __fsnotify_update_child_dentry_flags(inode);
@@ -175,6 +191,8 @@ void fsnotify_destroy_mark_locked(struct fsnotify_mark *mark, · 8 unmodified lines
175191 */
176192
177193 atomic_dec(&group->num_marks);
194+
195+ mutex_lock_nested(&group->mark_mutex, SINGLE_DEPTH_NESTING);
178196 }
179197
180198 void fsnotify_destroy_mark(struct fsnotify_mark *mark,
@@ -187,10 +205,7 @@ void fsnotify_destroy_mark(struct fsnotify_mark *mark, · 6 unmodified lines
187205
188206 /*
189207 * Destroy all marks in the given list. The marks must be already detached from
190− * the original inode / vfsmount. Note that we can race with
191− * fsnotify_clear_marks_by_group_flags(). However we hold a reference to each
192− * mark so they won't get freed from under us and nobody else touches our
193− * free_list list_head.
208+ * the original inode / vfsmount.
194209 */
195210 void fsnotify_destroy_marks(struct list_head *to_free)
196211 {
@@ -391,7 +406,7 @@ struct fsnotify_mark *fsnotify_find_mark(struct hlist_head *head, · 194 unmodified lines
391406 }
392407
393408 /*
394− * Clear any marks in a group in which mark->flags & flags is true.
409+ * clear any marks in a group in which mark->flags & flags is true
395410 */
396411 void fsnotify_clear_marks_by_group_flags(struct fsnotify_group *group,
397412 unsigned int flags)
@@ -445,7 +460,6 @@ static int fsnotify_mark_destroy(void *ignored) · 47 unmodified lines
445460 {
446461 struct fsnotify_mark *mark, *next;
447462 struct list_head private_destroy_list;
448− struct fsnotify_group *group;
449463
450464 for (;;) {
451465 spin_lock(&destroy_lock);
@@ -457,14 +471,6 @@ static int fsnotify_mark_destroy(void *ignored) · 5 unmodified lines
457471
458472 list_for_each_entry_safe(mark, next, &private_destroy_list, g_list) {
459473 list_del_init(&mark->g_list);
460− group = mark->group;
461− /*
462− * Some groups like to know that marks are being freed.
463− * This is a callback to the group function to let it
464− * know that this mark is being freed.
465− */
466− if (group && group->ops->freeing_mark)
467− group->ops->freeing_mark(mark, group);
468474 fsnotify_put_mark(mark);
469475 }
470476
fs/pnode.h+0−2
@@ -20,8 +20,6 @@ · 19 unmodified lines
2020 #define SET_MNT_MARK(m) ((m)->mnt.mnt_flags |= MNT_MARKED)
2121 #define CLEAR_MNT_MARK(m) ((m)->mnt.mnt_flags &= ~MNT_MARKED)
2222 #define IS_MNT_LOCKED(m) ((m)->mnt.mnt_flags & MNT_LOCKED)
23−#define IS_MNT_LOCKED_AND_LAZY(m) \
24− (((m)->mnt.mnt_flags & (MNT_LOCKED|MNT_SYNC_UMOUNT)) == MNT_LOCKED)
2523
2624 #define CL_EXPIRE 0x01
2725 #define CL_SLAVE 0x02
fs/udf/inode.c+7−12
@@ -1652,17 +1652,9 @@ static int udf_update_inode(struct inode *inode, int do_sync) · 1651 unmodified lines
16521652 iinfo->i_ext.i_data, inode->i_sb->s_blocksize -
16531653 sizeof(struct unallocSpaceEntry));
16541654 use->descTag.tagIdent = cpu_to_le16(TAG_IDENT_USE);
1655− use->descTag.tagLocation =
1656− cpu_to_le32(iinfo->i_location.logicalBlockNum);
1657− crclen = sizeof(struct unallocSpaceEntry) +
1658− iinfo->i_lenAlloc - sizeof(struct tag);
1659− use->descTag.descCRCLength = cpu_to_le16(crclen);
1660− use->descTag.descCRC = cpu_to_le16(crc_itu_t(0, (char *)use +
1661− sizeof(struct tag),
1662− crclen));
1663− use->descTag.tagChecksum = udf_tag_checksum(&use->descTag);
1655+ crclen = sizeof(struct unallocSpaceEntry);
16641656
1665− goto out;
1657+ goto finish;
16661658 }
16671659
16681660 if (UDF_QUERY_FLAG(inode->i_sb, UDF_FLAG_UID_FORGET))
@@ -1782,6 +1774,8 @@ static int udf_update_inode(struct inode *inode, int do_sync) · 113 unmodified lines
17821774 efe->descTag.tagIdent = cpu_to_le16(TAG_IDENT_EFE);
17831775 crclen = sizeof(struct extendedFileEntry);
17841776 }
1777+
1778+finish:
17851779 if (iinfo->i_strat4096) {
17861780 fe->icbTag.strategyType = cpu_to_le16(4096);
17871781 fe->icbTag.strategyParameter = cpu_to_le16(1);
@@ -1791,7 +1785,9 @@ static int udf_update_inode(struct inode *inode, int do_sync) · 3 unmodified lines
17911785 fe->icbTag.numEntries = cpu_to_le16(1);
17921786 }
17931787
1794− if (S_ISDIR(inode->i_mode))
1788+ if (iinfo->i_use)
1789+ fe->icbTag.fileType = ICBTAG_FILE_TYPE_USE;
1790+ else if (S_ISDIR(inode->i_mode))
17951791 fe->icbTag.fileType = ICBTAG_FILE_TYPE_DIRECTORY;
17961792 else if (S_ISREG(inode->i_mode))
17971793 fe->icbTag.fileType = ICBTAG_FILE_TYPE_REGULAR;
@@ -1828,7 +1824,6 @@ static int udf_update_inode(struct inode *inode, int do_sync) · 30 unmodified lines
18281824 crclen));
18291825 fe->descTag.tagChecksum = udf_tag_checksum(&fe->descTag);
18301826
1831−out:
18321827 set_buffer_uptodate(bh);
18331828 unlock_buffer(bh);
18341829
include/linux/ata.h+1−0
@@ -45,6 +45,7 @@ enum { · 44 unmodified lines
4545 ATA_SECT_SIZE = 512,
4646 ATA_MAX_SECTORS_128 = 128,
4747 ATA_MAX_SECTORS = 256,
48+ ATA_MAX_SECTORS_1024 = 1024,
4849 ATA_MAX_SECTORS_LBA48 = 65535,/* TODO: 65536? */
4950 ATA_MAX_SECTORS_TAPE = 65535,
5051
include/linux/cper.h+21−1
@@ -340,7 +340,27 @@ struct cper_ia_proc_ctx { · 339 unmodified lines
340340 __u64 mm_reg_addr;
341341 };
342342
343−/* Memory Error Section */
343+/* Old Memory Error Section UEFI 2.1, 2.2 */
344+struct cper_sec_mem_err_old {
345+ __u64 validation_bits;
346+ __u64 error_status;
347+ __u64 physical_addr;
348+ __u64 physical_addr_mask;
349+ __u16 node;
350+ __u16 card;
351+ __u16 module;
352+ __u16 bank;
353+ __u16 device;
354+ __u16 row;
355+ __u16 column;
356+ __u16 bit_pos;
357+ __u64 requestor_id;
358+ __u64 responder_id;
359+ __u64 target_id;
360+ __u8 error_type;
361+};
362+
363+/* Memory Error Section UEFI >= 2.3 */
344364 struct cper_sec_mem_err {
345365 __u64 validation_bits;
346366 __u64 error_status;
include/linux/ftrace.h+3−0
@@ -116,6 +116,7 @@ ftrace_func_t ftrace_ops_get_func(struct ftrace_ops *ops); · 115 unmodified lines
116116 * SAVE_REGS. If another ops with this flag set is already registered
117117 * for any of the functions that this ops will be registered for, then
118118 * this ops will fail to register or set_filter_ip.
119+ * PID - Is affected by set_ftrace_pid (allows filtering on those pids)
119120 */
120121 enum {
121122 FTRACE_OPS_FL_ENABLED = 1 << 0,
@@ -132,6 +133,7 @@ enum { · 10 unmodified lines
132133 FTRACE_OPS_FL_MODIFYING = 1 << 11,
133134 FTRACE_OPS_FL_ALLOC_TRAMP = 1 << 12,
134135 FTRACE_OPS_FL_IPMODIFY = 1 << 13,
136+ FTRACE_OPS_FL_PID = 1 << 14,
135137 };
136138
137139 #ifdef CONFIG_DYNAMIC_FTRACE
@@ -159,6 +161,7 @@ struct ftrace_ops { · 21 unmodified lines
159161 struct ftrace_ops *next;
160162 unsigned long flags;
161163 void *private;
164+ ftrace_func_t saved_func;
162165 int __percpu *disabled;
163166 #ifdef CONFIG_DYNAMIC_FTRACE
164167 int nr_trampolines;
include/linux/libata.h+2−0
@@ -431,6 +431,8 @@ enum { · 430 unmodified lines
431431 ATA_HORKAGE_WD_BROKEN_LPM = (1 << 21), /* some WDs have broken LPM */
432432 ATA_HORKAGE_ZERO_AFTER_TRIM = (1 << 22),/* guarantees zero after trim */
433433 ATA_HORKAGE_NO_NCQ_LOG = (1 << 23), /* don't use NCQ for log read */
434+ ATA_HORKAGE_NOTRIM = (1 << 24), /* don't use TRIM */
435+ ATA_HORKAGE_MAX_SEC_1024 = (1 << 25), /* Limit max sects to 1024 */
434436
435437 /* DMA mask for user DMA control: User visible values; DO NOT
436438 renumber */
include/linux/mtd/nand.h+5−5
@@ -177,11 +177,6 @@ typedef enum { · 176 unmodified lines
177177 #define NAND_OWN_BUFFERS 0x00020000
178178 /* Chip may not exist, so silence any errors in scan */
179179 #define NAND_SCAN_SILENT_NODEV 0x00040000
180−/*
181− * This option could be defined by controller drivers to protect against
182− * kmap'ed, vmalloc'ed highmem buffers being passed from upper layers
183− */
184−#define NAND_USE_BOUNCE_BUFFER 0x00080000
185180 /*
186181 * Autodetect nand buswidth with readid/onfi.
187182 * This suppose the driver will configure the hardware in 8 bits mode
@@ -189,6 +184,11 @@ typedef enum { · 1 unmodified line
189184 * before calling nand_scan_tail.
190185 */
191186 #define NAND_BUSWIDTH_AUTO 0x00080000
187+/*
188+ * This option could be defined by controller drivers to protect against
189+ * kmap'ed, vmalloc'ed highmem buffers being passed from upper layers
190+ */
191+#define NAND_USE_BOUNCE_BUFFER 0x00100000
192192
193193 /* Options set by nand scan */
194194 /* Nand scan has allocated controller struct */
include/linux/platform_data/mmc-esdhc-imx.h+0−1
@@ -43,7 +43,6 @@ struct esdhc_platform_data { · 42 unmodified lines
4343 enum wp_types wp_type;
4444 enum cd_types cd_type;
4545 int max_bus_width;
46− unsigned int f_max;
4746 bool support_vsel;
4847 unsigned int delay_line;
4948 };
include/net/cfg80211.h+17−0
@@ -4868,6 +4868,23 @@ bool cfg80211_reg_can_beacon(struct wiphy *wiphy, · 4867 unmodified lines
48684868 struct cfg80211_chan_def *chandef,
48694869 enum nl80211_iftype iftype);
48704870
4871+/**
4872+ * cfg80211_reg_can_beacon_relax - check if beaconing is allowed with relaxation
4873+ * @wiphy: the wiphy
4874+ * @chandef: the channel definition
4875+ * @iftype: interface type
4876+ *
4877+ * Return: %true if there is no secondary channel or the secondary channel(s)
4878+ * can be used for beaconing (i.e. is not a radar channel etc.). This version
4879+ * also checks if IR-relaxation conditions apply, to allow beaconing under
4880+ * more permissive conditions.
4881+ *
4882+ * Requires the RTNL to be held.
4883+ */
4884+bool cfg80211_reg_can_beacon_relax(struct wiphy *wiphy,
4885+ struct cfg80211_chan_def *chandef,
4886+ enum nl80211_iftype iftype);
4887+
48714888 /*
48724889 * cfg80211_ch_switch_notify - update wdev channel and notify userspace
48734890 * @dev: the device which switched channels
include/net/ip.h+1−0
@@ -161,6 +161,7 @@ static inline __u8 get_rtconn_flags(struct ipcm_cookie* ipc, struct sock* sk) · 160 unmodified lines
161161 }
162162
163163 /* datagram.c */
164+int __ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len);
164165 int ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len);
165166
166167 void ip4_datagram_release_cb(struct sock *sk);
include/uapi/drm/amdgpu_drm.h+2−0
@@ -614,6 +614,8 @@ struct drm_amdgpu_info_device { · 613 unmodified lines
614614 uint32_t vram_type;
615615 /** video memory bit width*/
616616 uint32_t vram_bit_width;
617+ /* vce harvesting instance */
618+ uint32_t vce_harvest_config;
617619 };
618620
619621 struct drm_amdgpu_info_hw_ip {
include/uapi/drm/i915_drm.h+8−0
@@ -1070,6 +1070,14 @@ struct drm_i915_reg_read { · 1069 unmodified lines
10701070 __u64 offset;
10711071 __u64 val; /* Return value */
10721072 };
1073+/* Known registers:
1074+ *
1075+ * Render engine timestamp - 0x2358 + 64bit - gen7+
1076+ * - Note this register returns an invalid value if using the default
1077+ * single instruction 8byte read, in order to workaround that use
1078+ * offset (0x2538 | 1) instead.
1079+ *
1080+ */
10731081
10741082 struct drm_i915_reset_stats {
10751083 __u32 ctx_id;
include/uapi/linux/virtio_net.h+16−0
@@ -34,6 +34,7 @@ · 33 unmodified lines
3434 /* The feature bitmap for virtio net */
3535 #define VIRTIO_NET_F_CSUM 0 /* Host handles pkts w/ partial csum */
3636 #define VIRTIO_NET_F_GUEST_CSUM 1 /* Guest handles pkts w/ partial csum */
37+#define VIRTIO_NET_F_CTRL_GUEST_OFFLOADS 2 /* Dynamic offload configuration. */
3738 #define VIRTIO_NET_F_MAC 5 /* Host has given MAC address. */
3839 #define VIRTIO_NET_F_GUEST_TSO4 7 /* Guest can handle TSOv4 in. */
3940 #define VIRTIO_NET_F_GUEST_TSO6 8 /* Guest can handle TSOv6 in. */
@@ -226,4 +227,19 @@ struct virtio_net_ctrl_mq { · 186 unmodified lines
226227 #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MIN 1
227228 #define VIRTIO_NET_CTRL_MQ_VQ_PAIRS_MAX 0x8000
228229
230+/*
231+ * Control network offloads
232+ *
233+ * Reconfigures the network offloads that Guest can handle.
234+ *
235+ * Available with the VIRTIO_NET_F_CTRL_GUEST_OFFLOADS feature bit.
236+ *
237+ * Command data format matches the feature bit mask exactly.
238+ *
239+ * See VIRTIO_NET_F_GUEST_* for the list of offloads
240+ * that can be enabled/disabled.
241+ */
242+#define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
243+#define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
244+
229245 #endif /* _LINUX_VIRTIO_NET_H */
include/uapi/linux/virtio_pci.h+6−0
@@ -157,6 +157,12 @@ struct virtio_pci_common_cfg { · 156 unmodified lines
157157 __le32 queue_used_hi; /* read-write */
158158 };
159159
160+/* Fields in VIRTIO_PCI_CAP_PCI_CFG: */
161+struct virtio_pci_cfg_cap {
162+ struct virtio_pci_cap cap;
163+ __u8 pci_cfg_data[4]; /* Data for BAR access. */
164+};
165+
160166 /* Macro versions of offsets for the Old Timers! */
161167 #define VIRTIO_PCI_CAP_VNDR 0
162168 #define VIRTIO_PCI_CAP_NEXT 1
include/uapi/linux/virtio_ring.h+4−1
@@ -31,6 +31,9 @@ · 30 unmodified lines
3131 * SUCH DAMAGE.
3232 *
3333 * Copyright Rusty Russell IBM Corporation 2007. */
34+#ifndef __KERNEL__
35+#include <stdint.h>
36+#endif
3437 #include <linux/types.h>
3538 #include <linux/virtio_types.h>
3639
@@ -143,7 +146,7 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p, · 106 unmodified lines
143146 vr->num = num;
144147 vr->desc = p;
145148 vr->avail = p + num*sizeof(struct vring_desc);
146− vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + sizeof(__virtio16)
149+ vr->used = (void *)(((uintptr_t)&vr->avail->ring[num] + sizeof(__virtio16)
147150 + align-1) & ~(align - 1));
148151 }
149152
kernel/resource.c+3−3
@@ -504,13 +504,13 @@ int region_is_ram(resource_size_t start, unsigned long size) · 503 unmodified lines
504504 {
505505 struct resource *p;
506506 resource_size_t end = start + size - 1;
507− int flags = IORESOURCE_MEM | IORESOURCE_BUSY;
507+ unsigned long flags = IORESOURCE_MEM | IORESOURCE_BUSY;
508508 const char *name = "System RAM";
509509 int ret = -1;
510510
511511 read_lock(&resource_lock);
512512 for (p = iomem_resource.child; p ; p = p->sibling) {
513− if (end < p->start)
513+ if (p->end < start)
514514 continue;
515515
516516 if (p->start <= start && end <= p->end) {
@@ -521,7 +521,7 @@ int region_is_ram(resource_size_t start, unsigned long size) · 4 unmodified lines
521521 ret = 1;
522522 break;
523523 }
524− if (p->end < start)
524+ if (end < p->start)
525525 break; /* not found */
526526 }
527527 read_unlock(&resource_lock);
kernel/trace/ftrace.c+34−18
@@ -98,6 +98,13 @@ struct ftrace_pid { · 97 unmodified lines
9898 struct pid *pid;
9999 };
100100
101+static bool ftrace_pids_enabled(void)
102+{
103+ return !list_empty(&ftrace_pids);
104+}
105+
106+static void ftrace_update_trampoline(struct ftrace_ops *ops);
107+
101108 /*
102109 * ftrace_disabled is set when an anomaly is discovered.
103110 * ftrace_disabled is much stronger than ftrace_enabled.
@@ -109,7 +116,6 @@ static DEFINE_MUTEX(ftrace_lock); · 5 unmodified lines
109116 static struct ftrace_ops *ftrace_control_list __read_mostly = &ftrace_list_end;
110117 static struct ftrace_ops *ftrace_ops_list __read_mostly = &ftrace_list_end;
111118 ftrace_func_t ftrace_trace_function __read_mostly = ftrace_stub;
112−ftrace_func_t ftrace_pid_function __read_mostly = ftrace_stub;
113119 static struct ftrace_ops global_ops;
114120 static struct ftrace_ops control_ops;
115121
@@ -183,14 +189,7 @@ static void ftrace_pid_func(unsigned long ip, unsigned long parent_ip, · 67 unmodified lines
183189 if (!test_tsk_trace_trace(current))
184190 return;
185191
186− ftrace_pid_function(ip, parent_ip, op, regs);
187−}
188−
189−static void set_ftrace_pid_function(ftrace_func_t func)
190−{
191− /* do not set ftrace_pid_function to itself! */
192− if (func != ftrace_pid_func)
193− ftrace_pid_function = func;
192+ op->saved_func(ip, parent_ip, op, regs);
194193 }
195194
196195 /**
@@ -202,7 +201,6 @@ static void set_ftrace_pid_function(ftrace_func_t func) · 5 unmodified lines
202201 void clear_ftrace_function(void)
203202 {
204203 ftrace_trace_function = ftrace_stub;
205− ftrace_pid_function = ftrace_stub;
206204 }
207205
208206 static void control_ops_disable_all(struct ftrace_ops *ops)
@@ -436,6 +434,12 @@ static int __register_ftrace_function(struct ftrace_ops *ops) · 227 unmodified lines
436434 } else
437435 add_ftrace_ops(&ftrace_ops_list, ops);
438436
437+ /* Always save the function, and reset at unregistering */
438+ ops->saved_func = ops->func;
439+
440+ if (ops->flags & FTRACE_OPS_FL_PID && ftrace_pids_enabled())
441+ ops->func = ftrace_pid_func;
442+
439443 ftrace_update_trampoline(ops);
440444
441445 if (ftrace_enabled)
@@ -463,15 +467,28 @@ static int __unregister_ftrace_function(struct ftrace_ops *ops) · 21 unmodified lines
463467 if (ftrace_enabled)
464468 update_ftrace_function();
465469
470+ ops->func = ops->saved_func;
471+
466472 return 0;
467473 }
468474
469475 static void ftrace_update_pid_func(void)
470476 {
477+ bool enabled = ftrace_pids_enabled();
478+ struct ftrace_ops *op;
479+
471480 /* Only do something if we are tracing something */
472481 if (ftrace_trace_function == ftrace_stub)
473482 return;
474483
484+ do_for_each_ftrace_op(op, ftrace_ops_list) {
485+ if (op->flags & FTRACE_OPS_FL_PID) {
486+ op->func = enabled ? ftrace_pid_func :
487+ op->saved_func;
488+ ftrace_update_trampoline(op);
489+ }
490+ } while_for_each_ftrace_op(op);
491+
475492 update_ftrace_function();
476493 }
477494
@@ -1133,7 +1150,8 @@ static struct ftrace_ops global_ops = { · 655 unmodified lines
11331150 .local_hash.filter_hash = EMPTY_HASH,
11341151 INIT_OPS_HASH(global_ops)
11351152 .flags = FTRACE_OPS_FL_RECURSION_SAFE |
1136− FTRACE_OPS_FL_INITIALIZED,
1153+ FTRACE_OPS_FL_INITIALIZED |
1154+ FTRACE_OPS_FL_PID,
11371155 };
11381156
11391157 /*
@@ -5023,7 +5041,9 @@ static void ftrace_update_trampoline(struct ftrace_ops *ops) · 3883 unmodified lines
50235041
50245042 static struct ftrace_ops global_ops = {
50255043 .func = ftrace_stub,
5026− .flags = FTRACE_OPS_FL_RECURSION_SAFE | FTRACE_OPS_FL_INITIALIZED,
5044+ .flags = FTRACE_OPS_FL_RECURSION_SAFE |
5045+ FTRACE_OPS_FL_INITIALIZED |
5046+ FTRACE_OPS_FL_PID,
50275047 };
50285048
50295049 static int __init ftrace_nodyn_init(void)
@@ -5080,11 +5100,6 @@ void ftrace_init_array_ops(struct trace_array *tr, ftrace_func_t func) · 50 unmodified lines
50805100 if (WARN_ON(tr->ops->func != ftrace_stub))
50815101 printk("ftrace ops had %pS for function\n",
50825102 tr->ops->func);
5083− /* Only the top level instance does pid tracing */
5084− if (!list_empty(&ftrace_pids)) {
5085− set_ftrace_pid_function(func);
5086− func = ftrace_pid_func;
5087− }
50885103 }
50895104 tr->ops->func = func;
50905105 tr->ops->private = tr;
@@ -5371,7 +5386,7 @@ static void *fpid_start(struct seq_file *m, loff_t *pos) · 280 unmodified lines
53715386 {
53725387 mutex_lock(&ftrace_lock);
53735388
5374− if (list_empty(&ftrace_pids) && (!*pos))
5389+ if (!ftrace_pids_enabled() && (!*pos))
53755390 return (void *) 1;
53765391
53775392 return seq_list_start(&ftrace_pids, *pos);
@@ -5610,6 +5625,7 @@ static struct ftrace_ops graph_ops = { · 232 unmodified lines
56105625 .func = ftrace_stub,
56115626 .flags = FTRACE_OPS_FL_RECURSION_SAFE |
56125627 FTRACE_OPS_FL_INITIALIZED |
5628+ FTRACE_OPS_FL_PID |
56135629 FTRACE_OPS_FL_STUB,
56145630 #ifdef FTRACE_GRAPH_TRAMP_ADDR
56155631 .trampoline = FTRACE_GRAPH_TRAMP_ADDR,
net/9p/trans_virtio.c+1−0
@@ -704,6 +704,7 @@ static void p9_virtio_remove(struct virtio_device *vdev) · 703 unmodified lines
704704
705705 mutex_unlock(&virtio_9p_lock);
706706
707+ vdev->config->reset(vdev);
707708 vdev->config->del_vqs(vdev);
708709
709710 sysfs_remove_file(&(vdev->dev.kobj), &dev_attr_mount_tag.attr);
net/ax25/ax25_subr.c+1−0
@@ -264,6 +264,7 @@ void ax25_disconnect(ax25_cb *ax25, int reason) · 263 unmodified lines
264264 {
265265 ax25_clear_queues(ax25);
266266
267+ ax25_stop_heartbeat(ax25);
267268 ax25_stop_t1timer(ax25);
268269 ax25_stop_t2timer(ax25);
269270 ax25_stop_t3timer(ax25);
net/bridge/br_mdb.c+0−1
@@ -351,7 +351,6 @@ static int br_mdb_add_group(struct net_bridge *br, struct net_bridge_port *port, · 350 unmodified lines
351351 if (state == MDB_TEMPORARY)
352352 mod_timer(&p->timer, now + br->multicast_membership_interval);
353353
354− br_mdb_notify(br->dev, port, group, RTM_NEWMDB);
355354 return 0;
356355 }
357356
net/bridge/br_multicast.c+30−7
@@ -39,6 +39,16 @@ static void br_multicast_start_querier(struct net_bridge *br, · 38 unmodified lines
3939 struct bridge_mcast_own_query *query);
4040 static void br_multicast_add_router(struct net_bridge *br,
4141 struct net_bridge_port *port);
42+static void br_ip4_multicast_leave_group(struct net_bridge *br,
43+ struct net_bridge_port *port,
44+ __be32 group,
45+ __u16 vid);
46+#if IS_ENABLED(CONFIG_IPV6)
47+static void br_ip6_multicast_leave_group(struct net_bridge *br,
48+ struct net_bridge_port *port,
49+ const struct in6_addr *group,
50+ __u16 vid);
51+#endif
4252 unsigned int br_mdb_rehash_seq;
4353
4454 static inline int br_ip_equal(const struct br_ip *a, const struct br_ip *b)
@@ -1010,9 +1020,15 @@ static int br_ip4_multicast_igmp3_report(struct net_bridge *br, · 965 unmodified lines
10101020 continue;
10111021 }
10121022
1013− err = br_ip4_multicast_add_group(br, port, group, vid);
1014− if (err)
1015− break;
1023+ if ((type == IGMPV3_CHANGE_TO_INCLUDE ||
1024+ type == IGMPV3_MODE_IS_INCLUDE) &&
1025+ ntohs(grec->grec_nsrcs) == 0) {
1026+ br_ip4_multicast_leave_group(br, port, group, vid);
1027+ } else {
1028+ err = br_ip4_multicast_add_group(br, port, group, vid);
1029+ if (err)
1030+ break;
1031+ }
10161032 }
10171033
10181034 return err;
@@ -1071,10 +1087,17 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br, · 52 unmodified lines
10711087 continue;
10721088 }
10731089
1074− err = br_ip6_multicast_add_group(br, port, &grec->grec_mca,
1075− vid);
1076− if (err)
1077− break;
1090+ if ((grec->grec_type == MLD2_CHANGE_TO_INCLUDE ||
1091+ grec->grec_type == MLD2_MODE_IS_INCLUDE) &&
1092+ ntohs(*nsrcs) == 0) {
1093+ br_ip6_multicast_leave_group(br, port, &grec->grec_mca,
1094+ vid);
1095+ } else {
1096+ err = br_ip6_multicast_add_group(br, port,
1097+ &grec->grec_mca, vid);
1098+ if (!err)
1099+ break;
1100+ }
10781101 }
10791102
10801103 return err;
net/caif/caif_socket.c+8−11
@@ -121,12 +121,13 @@ static void caif_flow_ctrl(struct sock *sk, int mode) · 120 unmodified lines
121121 * Copied from sock.c:sock_queue_rcv_skb(), but changed so packets are
122122 * not dropped, but CAIF is sending flow off instead.
123123 */
124−static int caif_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
124+static void caif_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
125125 {
126126 int err;
127127 unsigned long flags;
128128 struct sk_buff_head *list = &sk->sk_receive_queue;
129129 struct caifsock *cf_sk = container_of(sk, struct caifsock, sk);
130+ bool queued = false;
130131
131132 if (atomic_read(&sk->sk_rmem_alloc) + skb->truesize >=
132133 (unsigned int)sk->sk_rcvbuf && rx_flow_is_on(cf_sk)) {
@@ -139,7 +140,8 @@ static int caif_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) · 6 unmodified lines
139140
140141 err = sk_filter(sk, skb);
141142 if (err)
142− return err;
143+ goto out;
144+
143145 if (!sk_rmem_schedule(sk, skb, skb->truesize) && rx_flow_is_on(cf_sk)) {
144146 set_rx_flow_off(cf_sk);
145147 net_dbg_ratelimited("sending flow OFF due to rmem_schedule\n");
@@ -147,21 +149,16 @@ static int caif_queue_rcv_skb(struct sock *sk, struct sk_buff *skb) · 1 unmodified line
147149 }
148150 skb->dev = NULL;
149151 skb_set_owner_r(skb, sk);
150− /* Cache the SKB length before we tack it onto the receive
151− * queue. Once it is added it no longer belongs to us and
152− * may be freed by other threads of control pulling packets
153− * from the queue.
154− */
155152 spin_lock_irqsave(&list->lock, flags);
156− if (!sock_flag(sk, SOCK_DEAD))
153+ queued = !sock_flag(sk, SOCK_DEAD);
154+ if (queued)
157155 __skb_queue_tail(list, skb);
158156 spin_unlock_irqrestore(&list->lock, flags);
159−
160− if (!sock_flag(sk, SOCK_DEAD))
157+out:
158+ if (queued)
161159 sk->sk_data_ready(sk);
162160 else
163161 kfree_skb(skb);
164− return 0;
165162 }
166163
167164 /* Packet Receive Callback function called from CAIF Stack */
net/core/datagram.c+47−9
@@ -131,6 +131,35 @@ out_noerr: · 130 unmodified lines
131131 goto out;
132132 }
133133
134+static int skb_set_peeked(struct sk_buff *skb)
135+{
136+ struct sk_buff *nskb;
137+
138+ if (skb->peeked)
139+ return 0;
140+
141+ /* We have to unshare an skb before modifying it. */
142+ if (!skb_shared(skb))
143+ goto done;
144+
145+ nskb = skb_clone(skb, GFP_ATOMIC);
146+ if (!nskb)
147+ return -ENOMEM;
148+
149+ skb->prev->next = nskb;
150+ skb->next->prev = nskb;
151+ nskb->prev = skb->prev;
152+ nskb->next = skb->next;
153+
154+ consume_skb(skb);
155+ skb = nskb;
156+
157+done:
158+ skb->peeked = 1;
159+
160+ return 0;
161+}
162+
134163 /**
135164 * __skb_recv_datagram - Receive a datagram skbuff
136165 * @sk: socket
@@ -165,7 +194,9 @@ out_noerr: · 28 unmodified lines
165194 struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned int flags,
166195 int *peeked, int *off, int *err)
167196 {
197+ struct sk_buff_head *queue = &sk->sk_receive_queue;
168198 struct sk_buff *skb, *last;
199+ unsigned long cpu_flags;
169200 long timeo;
170201 /*
171202 * Caller is allowed not to check sk->sk_err before skb_recv_datagram()
@@ -184,8 +215,6 @@ struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned int flags, · 12 unmodified lines
184215 * Look at current nfs client by the way...
185216 * However, this function was correct in any case. 8)
186217 */
187− unsigned long cpu_flags;
188− struct sk_buff_head *queue = &sk->sk_receive_queue;
189218 int _off = *off;
190219
191220 last = (struct sk_buff *)queue;
@@ -199,7 +228,11 @@ struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned int flags, · 7 unmodified lines
199228 _off -= skb->len;
200229 continue;
201230 }
202− skb->peeked = 1;
231+
232+ error = skb_set_peeked(skb);
233+ if (error)
234+ goto unlock_err;
235+
203236 atomic_inc(&skb->users);
204237 } else
205238 __skb_unlink(skb, queue);
@@ -223,6 +256,8 @@ struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned int flags, · 17 unmodified lines
223256
224257 return NULL;
225258
259+unlock_err:
260+ spin_unlock_irqrestore(&queue->lock, cpu_flags);
226261 no_packet:
227262 *err = error;
228263 return NULL;
@@ -622,7 +657,8 @@ __sum16 __skb_checksum_complete_head(struct sk_buff *skb, int len) · 393 unmodified lines
622657 !skb->csum_complete_sw)
623658 netdev_rx_csum_fault(skb->dev);
624659 }
625− skb->csum_valid = !sum;
660+ if (!skb_shared(skb))
661+ skb->csum_valid = !sum;
626662 return sum;
627663 }
628664 EXPORT_SYMBOL(__skb_checksum_complete_head);
@@ -642,11 +678,13 @@ __sum16 __skb_checksum_complete(struct sk_buff *skb) · 13 unmodified lines
642678 netdev_rx_csum_fault(skb->dev);
643679 }
644680
645− /* Save full packet checksum */
646− skb->csum = csum;
647− skb->ip_summed = CHECKSUM_COMPLETE;
648− skb->csum_complete_sw = 1;
649− skb->csum_valid = !sum;
681+ if (!skb_shared(skb)) {
682+ /* Save full packet checksum */
683+ skb->csum = csum;
684+ skb->ip_summed = CHECKSUM_COMPLETE;
685+ skb->csum_complete_sw = 1;
686+ skb->csum_valid = !sum;
687+ }
650688
651689 return sum;
652690 }
net/core/dst.c+3−1
@@ -284,7 +284,9 @@ void dst_release(struct dst_entry *dst) · 283 unmodified lines
284284 int newrefcnt;
285285
286286 newrefcnt = atomic_dec_return(&dst->__refcnt);
287− WARN_ON(newrefcnt < 0);
287+ if (unlikely(newrefcnt < 0))
288+ net_warn_ratelimited("%s: dst:%p refcnt:%d\n",
289+ __func__, dst, newrefcnt);
288290 if (unlikely(dst->flags & DST_NOCACHE) && !newrefcnt)
289291 call_rcu(&dst->rcu_head, dst_destroy_rcu);
290292 }
net/core/rtnetlink.c+7−4
@@ -1804,10 +1804,13 @@ static int do_setlink(const struct sk_buff *skb, · 1803 unmodified lines
18041804 goto errout;
18051805
18061806 nla_for_each_nested(attr, tb[IFLA_VF_PORTS], rem) {
1807− if (nla_type(attr) != IFLA_VF_PORT)
1808− continue;
1809− err = nla_parse_nested(port, IFLA_PORT_MAX,
1810− attr, ifla_port_policy);
1807+ if (nla_type(attr) != IFLA_VF_PORT ||
1808+ nla_len(attr) < NLA_HDRLEN) {
1809+ err = -EINVAL;
1810+ goto errout;
1811+ }
1812+ err = nla_parse_nested(port, IFLA_PORT_MAX, attr,
1813+ ifla_port_policy);
18111814 if (err < 0)
18121815 goto errout;
18131816 if (!port[IFLA_PORT_VF]) {
net/ipv4/datagram.c+12−4
@@ -20,7 +20,7 @@ · 19 unmodified lines
2020 #include <net/route.h>
2121 #include <net/tcp_states.h>
2222
23−int ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
23+int __ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
2424 {
2525 struct inet_sock *inet = inet_sk(sk);
2626 struct sockaddr_in *usin = (struct sockaddr_in *) uaddr;
@@ -39,8 +39,6 @@ int ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) · 12 unmodified lines
3939
4040 sk_dst_reset(sk);
4141
42− lock_sock(sk);
43−
4442 oif = sk->sk_bound_dev_if;
4543 saddr = inet->inet_saddr;
4644 if (ipv4_is_multicast(usin->sin_addr.s_addr)) {
@@ -82,9 +80,19 @@ int ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) · 35 unmodified lines
8280 sk_dst_set(sk, &rt->dst);
8381 err = 0;
8482 out:
85− release_sock(sk);
8683 return err;
8784 }
85+EXPORT_SYMBOL(__ip4_datagram_connect);
86+
87+int ip4_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
88+{
89+ int res;
90+
91+ lock_sock(sk);
92+ res = __ip4_datagram_connect(sk, uaddr, addr_len);
93+ release_sock(sk);
94+ return res;
95+}
8896 EXPORT_SYMBOL(ip4_datagram_connect);
8997
9098 /* Because UDP xmit path can manipulate sk_dst_cache without holding
net/ipv4/inet_hashtables.c+5−6
@@ -624,22 +624,21 @@ EXPORT_SYMBOL_GPL(inet_hashinfo_init); · 623 unmodified lines
624624
625625 int inet_ehash_locks_alloc(struct inet_hashinfo *hashinfo)
626626 {
627+ unsigned int locksz = sizeof(spinlock_t);
627628 unsigned int i, nblocks = 1;
628629
629− if (sizeof(spinlock_t) != 0) {
630+ if (locksz != 0) {
630631 /* allocate 2 cache lines or at least one spinlock per cpu */
631− nblocks = max_t(unsigned int,
632− 2 * L1_CACHE_BYTES / sizeof(spinlock_t),
633− 1);
632+ nblocks = max(2U * L1_CACHE_BYTES / locksz, 1U);
634633 nblocks = roundup_pow_of_two(nblocks * num_possible_cpus());
635634
636635 /* no more locks than number of hash buckets */
637636 nblocks = min(nblocks, hashinfo->ehash_mask + 1);
638637
639− hashinfo->ehash_locks = kmalloc_array(nblocks, sizeof(spinlock_t),
638+ hashinfo->ehash_locks = kmalloc_array(nblocks, locksz,
640639 GFP_KERNEL | __GFP_NOWARN);
641640 if (!hashinfo->ehash_locks)
642− hashinfo->ehash_locks = vmalloc(nblocks * sizeof(spinlock_t));
641+ hashinfo->ehash_locks = vmalloc(nblocks * locksz);
643642
644643 if (!hashinfo->ehash_locks)
645644 return -ENOMEM;
net/ipv4/ip_fragment.c+4−2
@@ -351,7 +351,7 @@ static int ip_frag_queue(struct ipq *qp, struct sk_buff *skb) · 350 unmodified lines
351351 ihl = ip_hdrlen(skb);
352352
353353 /* Determine the position of this fragment. */
354− end = offset + skb->len - ihl;
354+ end = offset + skb->len - skb_network_offset(skb) - ihl;
355355 err = -EINVAL;
356356
357357 /* Is this the final fragment? */
@@ -381,7 +381,7 @@ static int ip_frag_queue(struct ipq *qp, struct sk_buff *skb) · 23 unmodified lines
381381 goto err;
382382
383383 err = -ENOMEM;
384− if (!pskb_pull(skb, ihl))
384+ if (!pskb_pull(skb, skb_network_offset(skb) + ihl))
385385 goto err;
386386
387387 err = pskb_trim_rcsum(skb, end - offset);
@@ -641,6 +641,8 @@ static int ip_frag_reasm(struct ipq *qp, struct sk_buff *prev, · 253 unmodified lines
641641 iph->frag_off = 0;
642642 }
643643
644+ ip_send_check(iph);
645+
644646 IP_INC_STATS_BH(net, IPSTATS_MIB_REASMOKS);
645647 qp->q.fragments = NULL;
646648 qp->q.fragments_tail = NULL;
net/ipv4/tcp_input.c+1−2
@@ -1917,14 +1917,13 @@ void tcp_enter_loss(struct sock *sk) · 1916 unmodified lines
19171917 const struct inet_connection_sock *icsk = inet_csk(sk);
19181918 struct tcp_sock *tp = tcp_sk(sk);
19191919 struct sk_buff *skb;
1920− bool new_recovery = false;
1920+ bool new_recovery = icsk->icsk_ca_state < TCP_CA_Recovery;
19211921 bool is_reneg; /* is receiver reneging on SACKs? */
19221922
19231923 /* Reduce ssthresh if it has not yet been made inside this window. */
19241924 if (icsk->icsk_ca_state <= TCP_CA_Disorder ||
19251925 !after(tp->high_seq, tp->snd_una) ||
19261926 (icsk->icsk_ca_state == TCP_CA_Loss && !icsk->icsk_retransmits)) {
1927− new_recovery = true;
19281927 tp->prior_ssthresh = tcp_current_ssthresh(sk);
19291928 tp->snd_ssthresh = icsk->icsk_ca_ops->ssthresh(sk);
19301929 tcp_ca_event(sk, CA_EVENT_LOSS);
net/ipv6/datagram.c+15−5
@@ -40,7 +40,7 @@ static bool ipv6_mapped_addr_any(const struct in6_addr *a) · 39 unmodified lines
4040 return ipv6_addr_v4mapped(a) && (a->s6_addr32[3] == 0);
4141 }
4242
43−int ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
43+static int __ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
4444 {
4545 struct sockaddr_in6 *usin = (struct sockaddr_in6 *) uaddr;
4646 struct inet_sock *inet = inet_sk(sk);
@@ -56,7 +56,7 @@ int ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) · 9 unmodified lines
5656 if (usin->sin6_family == AF_INET) {
5757 if (__ipv6_only_sock(sk))
5858 return -EAFNOSUPPORT;
59− err = ip4_datagram_connect(sk, uaddr, addr_len);
59+ err = __ip4_datagram_connect(sk, uaddr, addr_len);
6060 goto ipv4_connected;
6161 }
6262
@@ -98,9 +98,9 @@ int ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len) · 35 unmodified lines
9898 sin.sin_addr.s_addr = daddr->s6_addr32[3];
9999 sin.sin_port = usin->sin6_port;
100100
101− err = ip4_datagram_connect(sk,
102− (struct sockaddr *) &sin,
103− sizeof(sin));
101+ err = __ip4_datagram_connect(sk,
102+ (struct sockaddr *) &sin,
103+ sizeof(sin));
104104
105105 ipv4_connected:
106106 if (err)
@@ -204,6 +204,16 @@ out: · 97 unmodified lines
204204 fl6_sock_release(flowlabel);
205205 return err;
206206 }
207+
208+int ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
209+{
210+ int res;
211+
212+ lock_sock(sk);
213+ res = __ip6_datagram_connect(sk, uaddr, addr_len);
214+ release_sock(sk);
215+ return res;
216+}
207217 EXPORT_SYMBOL_GPL(ip6_datagram_connect);
208218
209219 int ip6_datagram_connect_v6_only(struct sock *sk, struct sockaddr *uaddr,
net/ipv6/ip6_offload.c+0−2
@@ -292,8 +292,6 @@ static struct packet_offload ipv6_packet_offload __read_mostly = { · 291 unmodified lines
292292 static const struct net_offload sit_offload = {
293293 .callbacks = {
294294 .gso_segment = ipv6_gso_segment,
295− .gro_receive = ipv6_gro_receive,
296− .gro_complete = ipv6_gro_complete,
297295 },
298296 };
299297
net/mac80211/debugfs_netdev.c+1−0
@@ -723,6 +723,7 @@ void ieee80211_debugfs_remove_netdev(struct ieee80211_sub_if_data *sdata) · 722 unmodified lines
723723
724724 debugfs_remove_recursive(sdata->vif.debugfs_dir);
725725 sdata->vif.debugfs_dir = NULL;
726+ sdata->debugfs.subdir_stations = NULL;
726727 }
727728
728729 void ieee80211_debugfs_rename_netdev(struct ieee80211_sub_if_data *sdata)
net/mac80211/iface.c+14−11
@@ -1863,10 +1863,6 @@ void ieee80211_sdata_stop(struct ieee80211_sub_if_data *sdata) · 1862 unmodified lines
18631863 ieee80211_teardown_sdata(sdata);
18641864 }
18651865
1866−/*
1867− * Remove all interfaces, may only be called at hardware unregistration
1868− * time because it doesn't do RCU-safe list removals.
1869− */
18701866 void ieee80211_remove_interfaces(struct ieee80211_local *local)
18711867 {
18721868 struct ieee80211_sub_if_data *sdata, *tmp;
@@ -1875,14 +1871,21 @@ void ieee80211_remove_interfaces(struct ieee80211_local *local) · 2 unmodified lines
18751871
18761872 ASSERT_RTNL();
18771873
1878− /*
1879− * Close all AP_VLAN interfaces first, as otherwise they
1880− * might be closed while the AP interface they belong to
1881− * is closed, causing unregister_netdevice_many() to crash.
1874+ /* Before destroying the interfaces, make sure they're all stopped so
1875+ * that the hardware is stopped. Otherwise, the driver might still be
1876+ * iterating the interfaces during the shutdown, e.g. from a worker
1877+ * or from RX processing or similar, and if it does so (using atomic
1878+ * iteration) while we're manipulating the list, the iteration will
1879+ * crash.
1880+ *
1881+ * After this, the hardware should be stopped and the driver should
1882+ * have stopped all of its activities, so that we can do RCU-unaware
1883+ * manipulations of the interface list below.
18821884 */
1883− list_for_each_entry(sdata, &local->interfaces, list)
1884− if (sdata->vif.type == NL80211_IFTYPE_AP_VLAN)
1885− dev_close(sdata->dev);
1885+ cfg80211_shutdown_all_interfaces(local->hw.wiphy);
1886+
1887+ WARN(local->open_count, "%s: open count remains %d\n",
1888+ wiphy_name(local->hw.wiphy), local->open_count);
18861889
18871890 mutex_lock(&local->iflist_mtx);
18881891 list_for_each_entry_safe(sdata, tmp, &local->interfaces, list) {
net/mac80211/mesh_plink.c+4−1
@@ -306,7 +306,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata, · 305 unmodified lines
306306 if (action == WLAN_SP_MESH_PEERING_CONFIRM) {
307307 /* AID */
308308 pos = skb_put(skb, 2);
309− put_unaligned_le16(plid, pos + 2);
309+ put_unaligned_le16(plid, pos);
310310 }
311311 if (ieee80211_add_srates_ie(sdata, skb, true, band) ||
312312 ieee80211_add_ext_srates_ie(sdata, skb, true, band) ||
@@ -1122,6 +1122,9 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, · 809 unmodified lines
11221122 WLAN_SP_MESH_PEERING_CONFIRM) {
11231123 baseaddr += 4;
11241124 baselen += 4;
1125+
1126+ if (baselen > len)
1127+ return;
11251128 }
11261129 ieee802_11_parse_elems(baseaddr, len - baselen, true, &elems);
11271130 mesh_process_plink_frame(sdata, mgmt, &elems);
net/mac80211/pm.c+16−0
@@ -76,6 +76,22 @@ int __ieee80211_suspend(struct ieee80211_hw *hw, struct cfg80211_wowlan *wowlan) · 75 unmodified lines
7676 if (sdata->vif.type != NL80211_IFTYPE_STATION)
7777 continue;
7878 ieee80211_mgd_quiesce(sdata);
79+ /* If suspended during TX in progress, and wowlan
80+ * is enabled (connection will be active) there
81+ * can be a race where the driver is put out
82+ * of power-save due to TX and during suspend
83+ * dynamic_ps_timer is cancelled and TX packet
84+ * is flushed, leaving the driver in ACTIVE even
85+ * after resuming until dynamic_ps_timer puts
86+ * driver back in DOZE.
87+ */
88+ if (sdata->u.mgd.associated &&
89+ sdata->u.mgd.powersave &&
90+ !(local->hw.conf.flags & IEEE80211_CONF_PS)) {
91+ local->hw.conf.flags |= IEEE80211_CONF_PS;
92+ ieee80211_hw_config(local,
93+ IEEE80211_CONF_CHANGE_PS);
94+ }
7995 }
8096
8197 err = drv_suspend(local, wowlan);
net/mac80211/tdls.c+3−3
@@ -60,6 +60,7 @@ ieee80211_tdls_add_subband(struct ieee80211_sub_if_data *sdata, · 59 unmodified lines
6060 struct ieee80211_channel *ch;
6161 struct cfg80211_chan_def chandef;
6262 int i, subband_start;
63+ struct wiphy *wiphy = sdata->local->hw.wiphy;
6364
6465 for (i = start; i <= end; i += spacing) {
6566 if (!ch_cnt)
@@ -70,9 +71,8 @@ ieee80211_tdls_add_subband(struct ieee80211_sub_if_data *sdata, · 4 unmodified lines
7071 /* we will be active on the channel */
7172 cfg80211_chandef_create(&chandef, ch,
7273 NL80211_CHAN_NO_HT);
73− if (cfg80211_reg_can_beacon(sdata->local->hw.wiphy,
74− &chandef,
75− sdata->wdev.iftype)) {
74+ if (cfg80211_reg_can_beacon_relax(wiphy, &chandef,
75+ sdata->wdev.iftype)) {
7676 ch_cnt++;
7777 /*
7878 * check if the next channel is also part of
net/mac80211/tx.c+3−1
@@ -1117,7 +1117,9 @@ static bool ieee80211_tx_prep_agg(struct ieee80211_tx_data *tx, · 1116 unmodified lines
11171117 queued = true;
11181118 info->control.vif = &tx->sdata->vif;
11191119 info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING;
1120− info->flags &= ~IEEE80211_TX_TEMPORARY_FLAGS;
1120+ info->flags &= ~IEEE80211_TX_TEMPORARY_FLAGS |
1121+ IEEE80211_TX_CTL_NO_PS_BUFFER |
1122+ IEEE80211_TX_STATUS_EOSP;
11211123 __skb_queue_tail(&tid_tx->pending, skb);
11221124 if (skb_queue_len(&tid_tx->pending) > STA_MAX_TX_BUFFER)
11231125 purge_skb = __skb_dequeue(&tid_tx->pending);
net/netlink/af_netlink.c+47−32
@@ -357,25 +357,52 @@ err1: · 356 unmodified lines
357357 return NULL;
358358 }
359359
360+
361+static void
362+__netlink_set_ring(struct sock *sk, struct nl_mmap_req *req, bool tx_ring, void **pg_vec,
363+ unsigned int order)
364+{
365+ struct netlink_sock *nlk = nlk_sk(sk);
366+ struct sk_buff_head *queue;
367+ struct netlink_ring *ring;
368+
369+ queue = tx_ring ? &sk->sk_write_queue : &sk->sk_receive_queue;
370+ ring = tx_ring ? &nlk->tx_ring : &nlk->rx_ring;
371+
372+ spin_lock_bh(&queue->lock);
373+
374+ ring->frame_max = req->nm_frame_nr - 1;
375+ ring->head = 0;
376+ ring->frame_size = req->nm_frame_size;
377+ ring->pg_vec_pages = req->nm_block_size / PAGE_SIZE;
378+
379+ swap(ring->pg_vec_len, req->nm_block_nr);
380+ swap(ring->pg_vec_order, order);
381+ swap(ring->pg_vec, pg_vec);
382+
383+ __skb_queue_purge(queue);
384+ spin_unlock_bh(&queue->lock);
385+
386+ WARN_ON(atomic_read(&nlk->mapped));
387+
388+ if (pg_vec)
389+ free_pg_vec(pg_vec, order, req->nm_block_nr);
390+}
391+
360392 static int netlink_set_ring(struct sock *sk, struct nl_mmap_req *req,
361− bool closing, bool tx_ring)
393+ bool tx_ring)
362394 {
363395 struct netlink_sock *nlk = nlk_sk(sk);
364396 struct netlink_ring *ring;
365− struct sk_buff_head *queue;
366397 void **pg_vec = NULL;
367398 unsigned int order = 0;
368− int err;
369399
370400 ring = tx_ring ? &nlk->tx_ring : &nlk->rx_ring;
371− queue = tx_ring ? &sk->sk_write_queue : &sk->sk_receive_queue;
372401
373− if (!closing) {
374− if (atomic_read(&nlk->mapped))
375− return -EBUSY;
376− if (atomic_read(&ring->pending))
377− return -EBUSY;
378− }
402+ if (atomic_read(&nlk->mapped))
403+ return -EBUSY;
404+ if (atomic_read(&ring->pending))
405+ return -EBUSY;
379406
380407 if (req->nm_block_nr) {
381408 if (ring->pg_vec != NULL)
@@ -407,31 +434,19 @@ static int netlink_set_ring(struct sock *sk, struct nl_mmap_req *req, · 25 unmodified lines
407434 return -EINVAL;
408435 }
409436
410− err = -EBUSY;
411437 mutex_lock(&nlk->pg_vec_lock);
412− if (closing || atomic_read(&nlk->mapped) == 0) {
413− err = 0;
414− spin_lock_bh(&queue->lock);
415−
416− ring->frame_max = req->nm_frame_nr - 1;
417− ring->head = 0;
418− ring->frame_size = req->nm_frame_size;
419− ring->pg_vec_pages = req->nm_block_size / PAGE_SIZE;
420−
421− swap(ring->pg_vec_len, req->nm_block_nr);
422− swap(ring->pg_vec_order, order);
423− swap(ring->pg_vec, pg_vec);
424−
425− __skb_queue_purge(queue);
426− spin_unlock_bh(&queue->lock);
427−
428− WARN_ON(atomic_read(&nlk->mapped));
438+ if (atomic_read(&nlk->mapped) == 0) {
439+ __netlink_set_ring(sk, req, tx_ring, pg_vec, order);
440+ mutex_unlock(&nlk->pg_vec_lock);
441+ return 0;
429442 }
443+
430444 mutex_unlock(&nlk->pg_vec_lock);
431445
432446 if (pg_vec)
433447 free_pg_vec(pg_vec, order, req->nm_block_nr);
434− return err;
448+
449+ return -EBUSY;
435450 }
436451
437452 static void netlink_mm_open(struct vm_area_struct *vma)
@@ -900,10 +915,10 @@ static void netlink_sock_destruct(struct sock *sk) · 462 unmodified lines
900915
901916 memset(&req, 0, sizeof(req));
902917 if (nlk->rx_ring.pg_vec)
903− netlink_set_ring(sk, &req, true, false);
918+ __netlink_set_ring(sk, &req, false, NULL, 0);
904919 memset(&req, 0, sizeof(req));
905920 if (nlk->tx_ring.pg_vec)
906− netlink_set_ring(sk, &req, true, true);
921+ __netlink_set_ring(sk, &req, true, NULL, 0);
907922 }
908923 #endif /* CONFIG_NETLINK_MMAP */
909924
@@ -2223,7 +2238,7 @@ static int netlink_setsockopt(struct socket *sock, int level, int optname, · 1313 unmodified lines
22232238 return -EINVAL;
22242239 if (copy_from_user(&req, optval, sizeof(req)))
22252240 return -EFAULT;
2226− err = netlink_set_ring(sk, &req, false,
2241+ err = netlink_set_ring(sk, &req,
22272242 optname == NETLINK_TX_RING);
22282243 break;
22292244 }
net/openvswitch/flow_table.c+1−1
@@ -752,7 +752,7 @@ int ovs_flow_init(void) · 751 unmodified lines
752752 BUILD_BUG_ON(sizeof(struct sw_flow_key) % sizeof(long));
753753
754754 flow_cache = kmem_cache_create("sw_flow", sizeof(struct sw_flow)
755− + (num_possible_nodes()
755+ + (nr_node_ids
756756 * sizeof(struct flow_stats *)),
757757 0, 0, NULL);
758758 if (flow_cache == NULL)
net/sched/act_bpf.c+3−0
@@ -339,6 +339,9 @@ static void tcf_bpf_cleanup(struct tc_action *act, int bind) · 338 unmodified lines
339339 bpf_prog_put(prog->filter);
340340 else
341341 bpf_prog_destroy(prog->filter);
342+
343+ kfree(prog->bpf_ops);
344+ kfree(prog->bpf_name);
342345 }
343346
344347 static struct tc_action_ops act_bpf_ops __read_mostly = {
net/sched/cls_bpf.c+1−1
@@ -378,7 +378,7 @@ static int cls_bpf_change(struct net *net, struct sk_buff *in_skb, · 377 unmodified lines
378378 goto errout;
379379
380380 if (oldprog) {
381− list_replace_rcu(&prog->link, &oldprog->link);
381+ list_replace_rcu(&oldprog->link, &prog->link);
382382 tcf_unbind_filter(tp, &oldprog->res);
383383 call_rcu(&oldprog->rcu, __cls_bpf_delete_prog);
384384 } else {
net/sched/cls_flow.c+3−2
@@ -425,6 +425,8 @@ static int flow_change(struct net *net, struct sk_buff *in_skb, · 424 unmodified lines
425425 if (!fnew)
426426 goto err2;
427427
428+ tcf_exts_init(&fnew->exts, TCA_FLOW_ACT, TCA_FLOW_POLICE);
429+
428430 fold = (struct flow_filter *)*arg;
429431 if (fold) {
430432 err = -EINVAL;
@@ -486,7 +488,6 @@ static int flow_change(struct net *net, struct sk_buff *in_skb, · 55 unmodified lines
486488 fnew->mask = ~0U;
487489 fnew->tp = tp;
488490 get_random_bytes(&fnew->hashrnd, 4);
489− tcf_exts_init(&fnew->exts, TCA_FLOW_ACT, TCA_FLOW_POLICE);
490491 }
491492
492493 fnew->perturb_timer.function = flow_perturbation;
@@ -526,7 +527,7 @@ static int flow_change(struct net *net, struct sk_buff *in_skb, · 33 unmodified lines
526527 if (*arg == 0)
527528 list_add_tail_rcu(&fnew->list, &head->filters);
528529 else
529− list_replace_rcu(&fnew->list, &fold->list);
530+ list_replace_rcu(&fold->list, &fnew->list);
530531
531532 *arg = (unsigned long)fnew;
532533
net/sched/cls_flower.c+1−1
@@ -499,7 +499,7 @@ static int fl_change(struct net *net, struct sk_buff *in_skb, · 498 unmodified lines
499499 *arg = (unsigned long) fnew;
500500
501501 if (fold) {
502− list_replace_rcu(&fnew->list, &fold->list);
502+ list_replace_rcu(&fold->list, &fnew->list);
503503 tcf_unbind_filter(tp, &fold->res);
504504 call_rcu(&fold->rcu, fl_destroy_filter);
505505 } else {
net/sched/sch_fq_codel.c+11−2
@@ -155,14 +155,23 @@ static unsigned int fq_codel_drop(struct Qdisc *sch) · 154 unmodified lines
155155 skb = dequeue_head(flow);
156156 len = qdisc_pkt_len(skb);
157157 q->backlogs[idx] -= len;
158− kfree_skb(skb);
159158 sch->q.qlen--;
160159 qdisc_qstats_drop(sch);
161160 qdisc_qstats_backlog_dec(sch, skb);
161+ kfree_skb(skb);
162162 flow->dropped++;
163163 return idx;
164164 }
165165
166+static unsigned int fq_codel_qdisc_drop(struct Qdisc *sch)
167+{
168+ unsigned int prev_backlog;
169+
170+ prev_backlog = sch->qstats.backlog;
171+ fq_codel_drop(sch);
172+ return prev_backlog - sch->qstats.backlog;
173+}
174+
166175 static int fq_codel_enqueue(struct sk_buff *skb, struct Qdisc *sch)
167176 {
168177 struct fq_codel_sched_data *q = qdisc_priv(sch);
@@ -604,7 +613,7 @@ static struct Qdisc_ops fq_codel_qdisc_ops __read_mostly = { · 435 unmodified lines
604613 .enqueue = fq_codel_enqueue,
605614 .dequeue = fq_codel_dequeue,
606615 .peek = qdisc_peek_dequeued,
607− .drop = fq_codel_drop,
616+ .drop = fq_codel_qdisc_drop,
608617 .init = fq_codel_init,
609618 .reset = fq_codel_reset,
610619 .destroy = fq_codel_destroy,
net/sched/sch_sfq.c+1−1
@@ -306,10 +306,10 @@ drop: · 305 unmodified lines
306306 len = qdisc_pkt_len(skb);
307307 slot->backlog -= len;
308308 sfq_dec(q, x);
309− kfree_skb(skb);
310309 sch->q.qlen--;
311310 qdisc_qstats_drop(sch);
312311 qdisc_qstats_backlog_dec(sch, skb);
312+ kfree_skb(skb);
313313 return len;
314314 }
315315
net/wireless/chan.c+34−11
@@ -797,23 +797,18 @@ static bool cfg80211_ir_permissive_chan(struct wiphy *wiphy, · 796 unmodified lines
797797 return false;
798798 }
799799
800−bool cfg80211_reg_can_beacon(struct wiphy *wiphy,
801− struct cfg80211_chan_def *chandef,
802− enum nl80211_iftype iftype)
800+static bool _cfg80211_reg_can_beacon(struct wiphy *wiphy,
801+ struct cfg80211_chan_def *chandef,
802+ enum nl80211_iftype iftype,
803+ bool check_no_ir)
803804 {
804805 bool res;
805806 u32 prohibited_flags = IEEE80211_CHAN_DISABLED |
806807 IEEE80211_CHAN_RADAR;
807808
808− trace_cfg80211_reg_can_beacon(wiphy, chandef, iftype);
809+ trace_cfg80211_reg_can_beacon(wiphy, chandef, iftype, check_no_ir);
809810
810− /*
811− * Under certain conditions suggested by some regulatory bodies a
812− * GO/STA can IR on channels marked with IEEE80211_NO_IR. Set this flag
813− * only if such relaxations are not enabled and the conditions are not
814− * met.
815− */
816− if (!cfg80211_ir_permissive_chan(wiphy, iftype, chandef->chan))
811+ if (check_no_ir)
817812 prohibited_flags |= IEEE80211_CHAN_NO_IR;
818813
819814 if (cfg80211_chandef_dfs_required(wiphy, chandef, iftype) > 0 &&
@@ -827,8 +822,36 @@ bool cfg80211_reg_can_beacon(struct wiphy *wiphy, · 7 unmodified lines
827822 trace_cfg80211_return_bool(res);
828823 return res;
829824 }
825+
826+bool cfg80211_reg_can_beacon(struct wiphy *wiphy,
827+ struct cfg80211_chan_def *chandef,
828+ enum nl80211_iftype iftype)
829+{
830+ return _cfg80211_reg_can_beacon(wiphy, chandef, iftype, true);
831+}
830832 EXPORT_SYMBOL(cfg80211_reg_can_beacon);
831833
834+bool cfg80211_reg_can_beacon_relax(struct wiphy *wiphy,
835+ struct cfg80211_chan_def *chandef,
836+ enum nl80211_iftype iftype)
837+{
838+ bool check_no_ir;
839+
840+ ASSERT_RTNL();
841+
842+ /*
843+ * Under certain conditions suggested by some regulatory bodies a
844+ * GO/STA can IR on channels marked with IEEE80211_NO_IR. Set this flag
845+ * only if such relaxations are not enabled and the conditions are not
846+ * met.
847+ */
848+ check_no_ir = !cfg80211_ir_permissive_chan(wiphy, iftype,
849+ chandef->chan);
850+
851+ return _cfg80211_reg_can_beacon(wiphy, chandef, iftype, check_no_ir);
852+}
853+EXPORT_SYMBOL(cfg80211_reg_can_beacon_relax);
854+
832855 int cfg80211_set_monitor_channel(struct cfg80211_registered_device *rdev,
833856 struct cfg80211_chan_def *chandef)
834857 {
net/wireless/nl80211.c+8−6
@@ -2003,7 +2003,8 @@ static int __nl80211_set_channel(struct cfg80211_registered_device *rdev, · 2002 unmodified lines
20032003 switch (iftype) {
20042004 case NL80211_IFTYPE_AP:
20052005 case NL80211_IFTYPE_P2P_GO:
2006− if (!cfg80211_reg_can_beacon(&rdev->wiphy, &chandef, iftype)) {
2006+ if (!cfg80211_reg_can_beacon_relax(&rdev->wiphy, &chandef,
2007+ iftype)) {
20072008 result = -EINVAL;
20082009 break;
20092010 }
@@ -3403,8 +3404,8 @@ static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info) · 1393 unmodified lines
34033404 } else if (!nl80211_get_ap_channel(rdev, &params))
34043405 return -EINVAL;
34053406
3406− if (!cfg80211_reg_can_beacon(&rdev->wiphy, &params.chandef,
3407− wdev->iftype))
3407+ if (!cfg80211_reg_can_beacon_relax(&rdev->wiphy, &params.chandef,
3408+ wdev->iftype))
34083409 return -EINVAL;
34093410
34103411 if (info->attrs[NL80211_ATTR_ACL_POLICY]) {
@@ -6492,8 +6493,8 @@ skip_beacons: · 3081 unmodified lines
64926493 if (err)
64936494 return err;
64946495
6495− if (!cfg80211_reg_can_beacon(&rdev->wiphy, &params.chandef,
6496− wdev->iftype))
6496+ if (!cfg80211_reg_can_beacon_relax(&rdev->wiphy, &params.chandef,
6497+ wdev->iftype))
64976498 return -EINVAL;
64986499
64996500 err = cfg80211_chandef_dfs_required(wdev->wiphy,
@@ -10170,7 +10171,8 @@ static int nl80211_tdls_channel_switch(struct sk_buff *skb, · 3670 unmodified lines
1017010171 return -EINVAL;
1017110172
1017210173 /* we will be active on the TDLS link */
10173− if (!cfg80211_reg_can_beacon(&rdev->wiphy, &chandef, wdev->iftype))
10174+ if (!cfg80211_reg_can_beacon_relax(&rdev->wiphy, &chandef,
10175+ wdev->iftype))
1017410176 return -EINVAL;
1017510177
1017610178 /* don't allow switching to DFS channels */
net/wireless/reg.c+4−4
@@ -544,15 +544,15 @@ static int call_crda(const char *alpha2) · 543 unmodified lines
544544 reg_regdb_query(alpha2);
545545
546546 if (reg_crda_timeouts > REG_MAX_CRDA_TIMEOUTS) {
547− pr_info("Exceeded CRDA call max attempts. Not calling CRDA\n");
547+ pr_debug("Exceeded CRDA call max attempts. Not calling CRDA\n");
548548 return -EINVAL;
549549 }
550550
551551 if (!is_world_regdom((char *) alpha2))
552− pr_info("Calling CRDA for country: %c%c\n",
552+ pr_debug("Calling CRDA for country: %c%c\n",
553553 alpha2[0], alpha2[1]);
554554 else
555− pr_info("Calling CRDA to update world regulatory domain\n");
555+ pr_debug("Calling CRDA to update world regulatory domain\n");
556556
557557 return kobject_uevent_env(&reg_pdev->dev.kobj, KOBJ_CHANGE, env);
558558 }
@@ -1589,7 +1589,7 @@ static bool reg_wdev_chan_valid(struct wiphy *wiphy, struct wireless_dev *wdev) · 1030 unmodified lines
15891589 case NL80211_IFTYPE_AP:
15901590 case NL80211_IFTYPE_P2P_GO:
15911591 case NL80211_IFTYPE_ADHOC:
1592− return cfg80211_reg_can_beacon(wiphy, &chandef, iftype);
1592+ return cfg80211_reg_can_beacon_relax(wiphy, &chandef, iftype);
15931593 case NL80211_IFTYPE_STATION:
15941594 case NL80211_IFTYPE_P2P_CLIENT:
15951595 return cfg80211_chandef_usable(wiphy, &chandef,
net/wireless/trace.h+7−4
@@ -2358,20 +2358,23 @@ TRACE_EVENT(cfg80211_cqm_rssi_notify, · 2357 unmodified lines
23582358
23592359 TRACE_EVENT(cfg80211_reg_can_beacon,
23602360 TP_PROTO(struct wiphy *wiphy, struct cfg80211_chan_def *chandef,
2361− enum nl80211_iftype iftype),
2362− TP_ARGS(wiphy, chandef, iftype),
2361+ enum nl80211_iftype iftype, bool check_no_ir),
2362+ TP_ARGS(wiphy, chandef, iftype, check_no_ir),
23632363 TP_STRUCT__entry(
23642364 WIPHY_ENTRY
23652365 CHAN_DEF_ENTRY
23662366 __field(enum nl80211_iftype, iftype)
2367+ __field(bool, check_no_ir)
23672368 ),
23682369 TP_fast_assign(
23692370 WIPHY_ASSIGN;
23702371 CHAN_DEF_ASSIGN(chandef);
23712372 __entry->iftype = iftype;
2373+ __entry->check_no_ir = check_no_ir;
23722374 ),
2373− TP_printk(WIPHY_PR_FMT ", " CHAN_DEF_PR_FMT ", iftype=%d",
2374− WIPHY_PR_ARG, CHAN_DEF_PR_ARG, __entry->iftype)
2375+ TP_printk(WIPHY_PR_FMT ", " CHAN_DEF_PR_FMT ", iftype=%d check_no_ir=%s",
2376+ WIPHY_PR_ARG, CHAN_DEF_PR_ARG, __entry->iftype,
2377+ BOOL_TO_STR(__entry->check_no_ir))
23752378 );
23762379
23772380 TRACE_EVENT(cfg80211_chandef_dfs_required,
samples/trace_events/trace-events-sample.h+5−2
@@ -168,7 +168,10 @@ · 167 unmodified lines
168168 *
169169 * For __dynamic_array(int, foo, bar) use __get_dynamic_array(foo)
170170 * Use __get_dynamic_array_len(foo) to get the length of the array
171− * saved.
171+ * saved. Note, __get_dynamic_array_len() returns the total allocated
172+ * length of the dynamic array; __print_array() expects the second
173+ * parameter to be the number of elements. To get that, the array length
174+ * needs to be divided by the element size.
172175 *
173176 * For __string(foo, bar) use __get_str(foo)
174177 *
@@ -288,7 +291,7 @@ TRACE_EVENT(foo_bar, · 113 unmodified lines
288291 * This prints out the array that is defined by __array in a nice format.
289292 */
290293 __print_array(__get_dynamic_array(list),
291− __get_dynamic_array_len(list),
294+ __get_dynamic_array_len(list) / sizeof(int),
292295 sizeof(int)),
293296 __get_str(str), __get_bitmask(cpus))
294297 );
sound/core/pcm_native.c+1−1
@@ -85,7 +85,7 @@ static DECLARE_RWSEM(snd_pcm_link_rwsem); · 84 unmodified lines
8585 void snd_pcm_stream_lock(struct snd_pcm_substream *substream)
8686 {
8787 if (substream->pcm->nonatomic) {
88− down_read(&snd_pcm_link_rwsem);
88+ down_read_nested(&snd_pcm_link_rwsem, SINGLE_DEPTH_NESTING);
8989 mutex_lock(&substream->self_group.mutex);
9090 } else {
9191 read_lock(&snd_pcm_link_rwlock);
sound/hda/hdac_i915.c+4−1
@@ -56,8 +56,11 @@ int snd_hdac_display_power(struct hdac_bus *bus, bool enable) · 55 unmodified lines
5656 enable ? "enable" : "disable");
5757
5858 if (enable) {
59− if (!bus->i915_power_refcount++)
59+ if (!bus->i915_power_refcount++) {
6060 acomp->ops->get_power(acomp->dev);
61+ snd_hdac_set_codec_wakeup(bus, true);
62+ snd_hdac_set_codec_wakeup(bus, false);
63+ }
6164 } else {
6265 WARN_ON(!bus->i915_power_refcount);
6366 if (!--bus->i915_power_refcount)
sound/pci/hda/hda_intel.c+18−8
@@ -979,14 +979,16 @@ static int azx_runtime_resume(struct device *dev) · 978 unmodified lines
979979 if (!azx_has_pm_runtime(chip))
980980 return 0;
981981
982− if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL
983− && hda->need_i915_power) {
984− bus = azx_bus(chip);
985− snd_hdac_display_power(bus, true);
986− haswell_set_bclk(hda);
987− /* toggle codec wakeup bit for STATESTS read */
988− snd_hdac_set_codec_wakeup(bus, true);
989− snd_hdac_set_codec_wakeup(bus, false);
982+ if (chip->driver_caps & AZX_DCAPS_I915_POWERWELL) {
983+ bus = azx_bus(chip);
984+ if (hda->need_i915_power) {
985+ snd_hdac_display_power(bus, true);
986+ haswell_set_bclk(hda);
987+ } else {
988+ /* toggle codec wakeup bit for STATESTS read */
989+ snd_hdac_set_codec_wakeup(bus, true);
990+ snd_hdac_set_codec_wakeup(bus, false);
991+ }
990992 }
991993
992994 /* Read STATESTS before controller reset */
@@ -2182,6 +2184,8 @@ static const struct pci_device_id azx_ids[] = { · 1189 unmodified lines
21822184 /* ATI HDMI */
21832185 { PCI_DEVICE(0x1002, 0x1308),
21842186 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
2187+ { PCI_DEVICE(0x1002, 0x157a),
2188+ .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
21852189 { PCI_DEVICE(0x1002, 0x793b),
21862190 .driver_data = AZX_DRIVER_ATIHDMI | AZX_DCAPS_PRESET_ATI_HDMI },
21872191 { PCI_DEVICE(0x1002, 0x7919),
@@ -2236,8 +2240,14 @@ static const struct pci_device_id azx_ids[] = { · 48 unmodified lines
22362240 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
22372241 { PCI_DEVICE(0x1002, 0xaab0),
22382242 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
2243+ { PCI_DEVICE(0x1002, 0xaac0),
2244+ .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
22392245 { PCI_DEVICE(0x1002, 0xaac8),
22402246 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
2247+ { PCI_DEVICE(0x1002, 0xaad8),
2248+ .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
2249+ { PCI_DEVICE(0x1002, 0xaae8),
2250+ .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS },
22412251 /* VIA VT8251/VT8237A */
22422252 { PCI_DEVICE(0x1106, 0x3288),
22432253 .driver_data = AZX_DRIVER_VIA | AZX_DCAPS_POSFIX_VIA },
sound/pci/hda/patch_hdmi.c+2−0
@@ -3512,6 +3512,7 @@ static const struct hda_codec_preset snd_hda_preset_hdmi[] = { · 3511 unmodified lines
35123512 { .id = 0x10de0070, .name = "GPU 70 HDMI/DP", .patch = patch_nvhdmi },
35133513 { .id = 0x10de0071, .name = "GPU 71 HDMI/DP", .patch = patch_nvhdmi },
35143514 { .id = 0x10de0072, .name = "GPU 72 HDMI/DP", .patch = patch_nvhdmi },
3515+{ .id = 0x10de007d, .name = "GPU 7d HDMI/DP", .patch = patch_nvhdmi },
35153516 { .id = 0x10de8001, .name = "MCP73 HDMI", .patch = patch_nvhdmi_2ch },
35163517 { .id = 0x11069f80, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi },
35173518 { .id = 0x11069f81, .name = "VX900 HDMI/DP", .patch = patch_via_hdmi },
@@ -3576,6 +3577,7 @@ MODULE_ALIAS("snd-hda-codec-id:10de0067"); · 58 unmodified lines
35763577 MODULE_ALIAS("snd-hda-codec-id:10de0070");
35773578 MODULE_ALIAS("snd-hda-codec-id:10de0071");
35783579 MODULE_ALIAS("snd-hda-codec-id:10de0072");
3580+MODULE_ALIAS("snd-hda-codec-id:10de007d");
35793581 MODULE_ALIAS("snd-hda-codec-id:10de8001");
35803582 MODULE_ALIAS("snd-hda-codec-id:11069f80");
35813583 MODULE_ALIAS("snd-hda-codec-id:11069f81");
sound/pci/hda/patch_realtek.c+31−8
@@ -5061,7 +5061,7 @@ static const struct hda_fixup alc269_fixups[] = { · 5060 unmodified lines
50615061 { 0x14, 0x90170110 },
50625062 { 0x17, 0x40000008 },
50635063 { 0x18, 0x411111f0 },
5064− { 0x19, 0x411111f0 },
5064+ { 0x19, 0x01a1913c },
50655065 { 0x1a, 0x411111f0 },
50665066 { 0x1b, 0x411111f0 },
50675067 { 0x1d, 0x40f89b2d },
@@ -5430,8 +5430,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = { · 362 unmodified lines
54305430 {0x15, 0x0221401f}, \
54315431 {0x1a, 0x411111f0}, \
54325432 {0x1b, 0x411111f0}, \
5433− {0x1d, 0x40700001}, \
5434− {0x1e, 0x411111f0}
5433+ {0x1d, 0x40700001}
54355434
54365435 #define ALC298_STANDARD_PINS \
54375436 {0x18, 0x411111f0}, \
@@ -5462,6 +5461,17 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { · 24 unmodified lines
54625461 {0x17, 0x40000000},
54635462 {0x1d, 0x40700001},
54645463 {0x21, 0x02211030}),
5464+ SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
5465+ {0x12, 0x40000000},
5466+ {0x14, 0x90170130},
5467+ {0x17, 0x411111f0},
5468+ {0x18, 0x411111f0},
5469+ {0x19, 0x411111f0},
5470+ {0x1a, 0x411111f0},
5471+ {0x1b, 0x01014020},
5472+ {0x1d, 0x4054c029},
5473+ {0x1e, 0x411111f0},
5474+ {0x21, 0x0221103f}),
54655475 SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
54665476 {0x12, 0x90a60160},
54675477 {0x14, 0x90170120},
@@ -5690,35 +5700,48 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { · 222 unmodified lines
56905700 {0x13, 0x411111f0},
56915701 {0x16, 0x01014020},
56925702 {0x18, 0x411111f0},
5693− {0x19, 0x01a19030}),
5703+ {0x19, 0x01a19030},
5704+ {0x1e, 0x411111f0}),
56945705 SND_HDA_PIN_QUIRK(0x10ec0292, 0x1028, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE,
56955706 ALC292_STANDARD_PINS,
56965707 {0x12, 0x90a60140},
56975708 {0x13, 0x411111f0},
56985709 {0x16, 0x01014020},
56995710 {0x18, 0x02a19031},
5700− {0x19, 0x01a1903e}),
5711+ {0x19, 0x01a1903e},
5712+ {0x1e, 0x411111f0}),
57015713 SND_HDA_PIN_QUIRK(0x10ec0292, 0x1028, "Dell", ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
57025714 ALC292_STANDARD_PINS,
57035715 {0x12, 0x90a60140},
57045716 {0x13, 0x411111f0},
57055717 {0x16, 0x411111f0},
57065718 {0x18, 0x411111f0},
5707− {0x19, 0x411111f0}),
5719+ {0x19, 0x411111f0},
5720+ {0x1e, 0x411111f0}),
57085721 SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE,
57095722 ALC292_STANDARD_PINS,
57105723 {0x12, 0x40000000},
57115724 {0x13, 0x90a60140},
57125725 {0x16, 0x21014020},
57135726 {0x18, 0x411111f0},
5714− {0x19, 0x21a19030}),
5727+ {0x19, 0x21a19030},
5728+ {0x1e, 0x411111f0}),
57155729 SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE,
57165730 ALC292_STANDARD_PINS,
57175731 {0x12, 0x40000000},
57185732 {0x13, 0x90a60140},
57195733 {0x16, 0x411111f0},
57205734 {0x18, 0x411111f0},
5721− {0x19, 0x411111f0}),
5735+ {0x19, 0x411111f0},
5736+ {0x1e, 0x411111f0}),
5737+ SND_HDA_PIN_QUIRK(0x10ec0293, 0x1028, "Dell", ALC293_FIXUP_DELL1_MIC_NO_PRESENCE,
5738+ ALC292_STANDARD_PINS,
5739+ {0x12, 0x40000000},
5740+ {0x13, 0x90a60140},
5741+ {0x16, 0x21014020},
5742+ {0x18, 0x411111f0},
5743+ {0x19, 0x21a19030},
5744+ {0x1e, 0x411111ff}),
57225745 SND_HDA_PIN_QUIRK(0x10ec0298, 0x1028, "Dell", ALC298_FIXUP_DELL1_MIC_NO_PRESENCE,
57235746 ALC298_STANDARD_PINS,
57245747 {0x12, 0x90a60130},
sound/sparc/amd7930.c+1−0
@@ -956,6 +956,7 @@ static int snd_amd7930_create(struct snd_card *card, · 955 unmodified lines
956956 if (!amd->regs) {
957957 snd_printk(KERN_ERR
958958 "amd7930-%d: Unable to map chip registers.\n", dev);
959+ kfree(amd);
959960 return -EIO;
960961 }
961962

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t