History

Merge v3.13-rc6 into char-misc-next

We want these fixes in here as well.

Greg Kroah-Hartman committed 12 years ago

Commit dde86f42 parents 3b2c67d 802eee9288 files · +2784 −1399Browse files

Unified · Split

288 files
  1. Documentation/block/null_blk.txt +72 −0
  2. Documentation/kernel-parameters.txt +2 −0
  3. Documentation/module-signing.txt +240 −0
  4. Documentation/networking/ip-sysctl.txt +6 −2
  5. MAINTAINERS +23 −4
  6. Makefile +10 −14
  7. arch/arc/include/uapi/asm/unistd.h +7 −1
  8. arch/arm/boot/dts/r8a7790.dtsi +14 −14
  9. arch/arm/mach-omap2/board-ldp.c +6 −1
  10. arch/arm/mach-omap2/display.c +38 −0
  11. arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c +2 −2
  12. arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +3 −3
  13. arch/arm/mach-omap2/omap_hwmod_7xx_data.c +1 −1
  14. arch/arm/mach-pxa/include/mach/lubbock.h +2 −0
  15. arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c +1 −10
  16. arch/arm/mach-shmobile/board-armadillo800eva.c +7 −0
  17. arch/arm/mach-shmobile/board-bockw.c +1 −1
  18. arch/arm/mach-shmobile/board-lager.c +3 −1
  19. arch/arm/xen/enlighten.c +3 −3
  20. arch/arm64/include/asm/xen/page-coherent.h +0 −4
  21. arch/arm64/kernel/ptrace.c +18 −20
  22. arch/powerpc/include/asm/kvm_book3s.h +4 −0
  23. arch/powerpc/include/asm/kvm_book3s_asm.h +2 −0
  24. arch/powerpc/include/asm/opal.h +2 −2
  25. arch/powerpc/include/asm/switch_to.h +1 −1
  26. arch/powerpc/kernel/asm-offsets.c +1 −0
  27. arch/powerpc/kernel/crash_dump.c +3 −3
  28. arch/powerpc/kernel/process.c +16 −16
  29. arch/powerpc/kernel/ptrace.c +2 −2
  30. arch/powerpc/kernel/setup-common.c +2 −2
  31. arch/powerpc/kernel/smp.c +2 −2
  32. arch/powerpc/kvm/book3s_64_mmu_hv.c +14 −4
  33. arch/powerpc/kvm/book3s_hv.c +14 −10
  34. arch/powerpc/kvm/book3s_hv_rm_mmu.c +7 −2
  35. arch/powerpc/kvm/book3s_hv_rmhandlers.S +13 −10
  36. arch/powerpc/kvm/book3s_interrupts.S +11 −8
  37. arch/powerpc/kvm/book3s_pr.c +22 −0
  38. arch/powerpc/kvm/book3s_rmhandlers.S +1 −5
  39. arch/powerpc/kvm/booke.c +6 −6
  40. arch/powerpc/platforms/powernv/opal-lpc.c +6 −6
  41. arch/powerpc/platforms/powernv/opal-xscom.c +3 −1
  42. arch/powerpc/platforms/pseries/lparcfg.c +6 −6
  43. arch/powerpc/platforms/pseries/msi.c +15 −13
  44. arch/powerpc/platforms/pseries/nvram.c +23 −23
  45. arch/powerpc/platforms/pseries/pci.c +4 −4
  46. arch/sh/lib/Makefile +1 −1
  47. arch/sparc/include/asm/pgtable_64.h +2 −2
  48. arch/x86/Kconfig +1 −0
  49. arch/x86/include/asm/pgtable.h +9 −2
  50. arch/x86/include/asm/preempt.h +11 −0
  51. arch/x86/kernel/cpu/intel.c +2 −1
  52. arch/x86/kernel/cpu/perf_event.h +12 −3
  53. arch/x86/mm/gup.c +13 −0
  54. block/blk-mq-sysfs.c +13 −0
  55. drivers/acpi/Kconfig +0 −1
  56. drivers/acpi/acpi_lpss.c +1 −0
  57. drivers/acpi/apei/Kconfig +0 −1
  58. drivers/acpi/apei/erst.c +1 −0
  59. drivers/ata/ahci.c +9 −9
  60. drivers/ata/ahci_imx.c +2 −1
  61. drivers/ata/libata-core.c +17 −2
  62. drivers/ata/libata-scsi.c +21 −0
  63. drivers/block/null_blk.c +76 −26
  64. drivers/block/skd_main.c +2 −2
  65. drivers/clk/clk-s2mps11.c +3 −3
  66. drivers/clocksource/Kconfig +1 −0
  67. drivers/clocksource/clksrc-of.c +0 −1
  68. drivers/clocksource/dw_apb_timer_of.c +4 −3
  69. drivers/clocksource/sun4i_timer.c +3 −0
  70. drivers/clocksource/time-armada-370-xp.c +5 −5
  71. drivers/cpufreq/cpufreq.c +37 −32
  72. drivers/dma/Kconfig +7 −0
  73. drivers/dma/at_hdmac_regs.h +0 −4
  74. drivers/dma/dmaengine.c +2 −2
  75. drivers/dma/dmatest.c +4 −4
  76. drivers/dma/fsldma.c +1 −30
  77. drivers/dma/mv_xor.c +63 −38
  78. drivers/dma/pl330.c +1 −4
  79. drivers/dma/ppc4xx/adma.c +1 −26
  80. drivers/dma/txx9dmac.c +0 −1
  81. drivers/firewire/sbp2.c +0 −1
  82. drivers/firmware/Makefile +1 −0
  83. drivers/firmware/efi/Kconfig +3 −3
  84. drivers/firmware/efi/Makefile +1 −1
  85. drivers/firmware/efi/efi-pstore.c +1 −0
  86. drivers/gpio/gpio-msm-v2.c +2 −2
  87. drivers/gpio/gpio-rcar.c +2 −1
  88. drivers/gpio/gpio-twl4030.c +12 −3
  89. drivers/gpu/drm/armada/armada_drm.h +1 −0
  90. drivers/gpu/drm/armada/armada_drv.c +6 −1
  91. drivers/gpu/drm/armada/armada_fbdev.c +15 −5
  92. drivers/gpu/drm/armada/armada_gem.c +4 −3
  93. drivers/gpu/drm/drm_edid.c +8 −0
  94. drivers/gpu/drm/drm_stub.c +3 −3
  95. drivers/gpu/drm/i915/i915_dma.c +11 −9
  96. drivers/gpu/drm/i915/i915_drv.c +1 −0
  97. drivers/gpu/drm/i915/i915_drv.h +6 −3
  98. drivers/gpu/drm/i915/i915_gem.c +24 −10
  99. drivers/gpu/drm/i915/i915_gem_context.c +12 −4
  100. drivers/gpu/drm/i915/i915_gem_evict.c +11 −3
  101. drivers/gpu/drm/i915/i915_gem_execbuffer.c +20 −8
  102. drivers/gpu/drm/i915/i915_gem_gtt.c +7 −2
  103. drivers/gpu/drm/i915/intel_display.c +8 −6
  104. drivers/gpu/drm/i915/intel_drv.h +1 −0
  105. drivers/gpu/drm/i915/intel_panel.c +23 −3
  106. drivers/gpu/drm/i915/intel_pm.c +39 −4
  107. drivers/gpu/drm/i915/intel_ringbuffer.c +1 −0
  108. drivers/gpu/drm/i915/intel_uncore.c +1 −0
  109. drivers/gpu/drm/nouveau/nouveau_drm.c +6 −0
  110. drivers/gpu/drm/qxl/Kconfig +1 −0
  111. drivers/gpu/drm/qxl/qxl_display.c +1 −1
  112. drivers/gpu/drm/radeon/atombios_crtc.c +3 −1
  113. drivers/gpu/drm/radeon/cik_sdma.c +1 −1
  114. drivers/gpu/drm/radeon/dce6_afmt.c +5 −3
  115. drivers/gpu/drm/radeon/evergreen_hdmi.c +2 −2
  116. drivers/gpu/drm/radeon/ni.c +16 −4
  117. drivers/gpu/drm/radeon/radeon_asic.c +2 −2
  118. drivers/gpu/drm/radeon/radeon_drv.c +0 −10
  119. drivers/gpu/drm/radeon/rs690.c +10 −0
  120. drivers/gpu/drm/radeon/rv770_dpm.c +6 −0
  121. drivers/gpu/drm/ttm/ttm_bo_util.c +2 −1
  122. drivers/gpu/drm/ttm/ttm_bo_vm.c +3 −3
  123. drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c +3 −0
  124. drivers/idle/intel_idle.c +3 −0
  125. drivers/iio/adc/ad7887.c +14 −2
  126. drivers/iio/imu/adis16400_core.c +6 −1
  127. drivers/iio/light/cm36651.c +1 −1
  128. drivers/infiniband/core/iwcm.c +9 −2
  129. drivers/infiniband/core/uverbs.h +9 −1
  130. drivers/infiniband/core/uverbs_cmd.c +17 −0
  131. drivers/infiniband/core/uverbs_main.c +16 −11
  132. drivers/infiniband/hw/cxgb4/mem.c +1 −1
  133. drivers/infiniband/ulp/isert/ib_isert.c +16 −6
  134. drivers/irqchip/irq-renesas-intc-irqpin.c +5 −3
  135. drivers/md/bcache/alloc.c +2 −0
  136. drivers/md/bcache/bcache.h +6 −6
  137. drivers/md/bcache/btree.c +25 −2
  138. drivers/md/bcache/movinggc.c +15 −6
  139. drivers/md/bcache/super.c +1 −1
  140. drivers/md/bcache/sysfs.c +29 −21
  141. drivers/md/bcache/util.c +7 −1
  142. drivers/md/bcache/util.h +1 −1
  143. drivers/md/bcache/writeback.c +25 −28
  144. drivers/net/can/usb/ems_usb.c +2 −1
  145. drivers/net/can/usb/peak_usb/pcan_usb_pro.c +3 −0
  146. drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c +21 −26
  147. drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h +1 −0
  148. drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c +40 −25
  149. drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c +8 −11
  150. drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c +2 −8
  151. drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +1 −1
  152. drivers/net/hyperv/netvsc_drv.c +0 −1
  153. drivers/net/xen-netback/netback.c +3 −0
  154. drivers/phy/Kconfig +2 −2
  155. drivers/phy/phy-core.c +10 −16
  156. drivers/pinctrl/pinctrl-baytrail.c +1 −0
  157. drivers/pinctrl/sh-pfc/sh_pfc.h +1 −1
  158. drivers/powercap/intel_rapl.c +11 −2
  159. drivers/regulator/s2mps11.c +1 −1
  160. drivers/scsi/qla2xxx/qla_target.c +6 −4
  161. drivers/staging/comedi/drivers.c +1 −1
  162. drivers/staging/comedi/drivers/8255_pci.c +12 −3
  163. drivers/staging/iio/magnetometer/hmc5843.c +6 −1
  164. drivers/staging/imx-drm/imx-drm-core.c +29 −10
  165. drivers/staging/imx-drm/imx-tve.c +0 −9
  166. drivers/staging/imx-drm/ipu-v3/ipu-common.c +16 −16
  167. drivers/target/iscsi/iscsi_target.c +13 −14
  168. drivers/target/iscsi/iscsi_target_configfs.c +2 −1
  169. drivers/target/iscsi/iscsi_target_login.c +0 −6
  170. drivers/target/target_core_device.c +5 −0
  171. drivers/target/target_core_file.c +4 −4
  172. drivers/target/target_core_file.h +4 −1
  173. drivers/target/target_core_tpg.c +1 −9
  174. drivers/tty/n_tty.c +6 −1
  175. drivers/tty/serial/8250/8250_dw.c +6 −2
  176. drivers/tty/serial/xilinx_uartps.c +2 −0
  177. drivers/tty/tty_ldsem.c +13 −3
  178. drivers/usb/chipidea/core.c +4 −0
  179. drivers/usb/chipidea/host.c +2 −1
  180. drivers/usb/chipidea/udc.c +0 −3
  181. drivers/usb/class/cdc-wdm.c +3 −5
  182. drivers/usb/dwc3/core.c +5 −3
  183. drivers/usb/host/ohci-at91.c +15 −11
  184. drivers/usb/host/xhci-pci.c +6 −1
  185. drivers/usb/phy/Kconfig +3 −1
  186. drivers/usb/phy/phy-tegra-usb.c +1 −1
  187. drivers/usb/phy/phy-twl6030-usb.c +2 −1
  188. drivers/usb/serial/option.c +2 −0
  189. drivers/usb/serial/zte_ev.c +1 −2
  190. drivers/virtio/virtio_balloon.c +1 −1
  191. drivers/xen/balloon.c +34 −29
  192. drivers/xen/grant-table.c +2 −1
  193. drivers/xen/privcmd.c +7 −2
  194. fs/aio.c +69 −44
  195. fs/ceph/addr.c +6 −2
  196. fs/ceph/inode.c +58 −78
  197. fs/ext2/super.c +1 −0
  198. fs/ext4/ext4.h +10 −0
  199. fs/ext4/ext4_jbd2.c +9 −0
  200. fs/ext4/extents.c +30 −15
  201. fs/ext4/inode.c +0 −12
  202. fs/ext4/mballoc.c +11 −6
  203. fs/ext4/super.c +15 −6
  204. fs/jbd2/journal.c +8 −10
  205. fs/jbd2/recovery.c +1 −1
  206. fs/jbd2/transaction.c +9 −7
  207. fs/pstore/platform.c +5 −2
  208. fs/sysfs/file.c +3 −5
  209. fs/xfs/xfs_bmap.c +24 −8
  210. fs/xfs/xfs_bmap_util.c +12 −2
  211. fs/xfs/xfs_buf.c +14 −23
  212. fs/xfs/xfs_buf.h +7 −4
  213. fs/xfs/xfs_buf_item.c +19 −2
  214. fs/xfs/xfs_dir2_node.c +13 −13
  215. fs/xfs/xfs_iops.c +2 −1
  216. fs/xfs/xfs_log_recover.c +11 −2
  217. fs/xfs/xfs_qm.c +53 −27
  218. fs/xfs/xfs_trans_buf.c +12 −1
  219. include/asm-generic/pgtable.h +3 −4
  220. include/asm-generic/preempt.h +11 −24
  221. include/linux/auxvec.h +1 −1
  222. include/linux/libata.h +1 −0
  223. include/linux/lockref.h +1 −1
  224. include/linux/math64.h +30 −0
  225. include/linux/migrate.h +11 −1
  226. include/linux/mm.h +3 −3
  227. include/linux/mm_types.h +51 −1
  228. include/linux/percpu-defs.h +1 −0
  229. include/linux/pstore.h +3 −0
  230. include/linux/reboot.h +1 −0
  231. include/linux/sched.h +2 −3
  232. include/rdma/ib_verbs.h +1 −1
  233. include/target/target_core_base.h +1 −4
  234. include/uapi/drm/vmwgfx_drm.h +1 −0
  235. include/uapi/linux/perf_event.h +1 −0
  236. include/xen/interface/io/blkif.h +5 −5
  237. init/Kconfig +6 −0
  238. kernel/Makefile +4 −3
  239. kernel/bounds.c +1 −1
  240. kernel/cgroup.c +32 −18
  241. kernel/events/core.c +18 −3
  242. kernel/fork.c +1 −0
  243. kernel/freezer.c +6 −0
  244. kernel/kexec.c +1 −0
  245. kernel/power/console.c +1 −0
  246. kernel/reboot.c +1 −1
  247. kernel/sched/core.c +4 −2
  248. kernel/sched/fair.c +71 −80
  249. kernel/sched/rt.c +14 −0
  250. kernel/trace/ftrace.c +1 −1
  251. kernel/user.c +3 −3
  252. mm/Kconfig +1 −1
  253. mm/compaction.c +4 −0
  254. mm/huge_memory.c +36 −9
  255. mm/memory-failure.c +10 −4
  256. mm/memory.c +1 −1
  257. mm/mempolicy.c +9 −7
  258. mm/migrate.c +65 −17
  259. mm/mprotect.c +11 −2
  260. mm/page_alloc.c +9 −10
  261. mm/pgtable-generic.c +6 −2
  262. mm/rmap.c +4 −0
  263. net/core/neighbour.c +1 −0
  264. net/ipv4/netfilter/ipt_SYNPROXY.c +1 −0
  265. net/ipv4/netfilter/nft_reject_ipv4.c +1 −1
  266. net/ipv4/udp.c +4 −9
  267. net/ipv6/netfilter/ip6t_SYNPROXY.c +1 −0
  268. net/sctp/probe.c +16 −1
  269. net/unix/af_unix.c +6 −2
  270. scripts/link-vmlinux.sh +3 −1
  271. security/selinux/hooks.c +5 −3
  272. sound/core/pcm_lib.c +2 −0
  273. sound/pci/hda/hda_intel.c +4 −0
  274. sound/pci/hda/patch_realtek.c +4 −0
  275. sound/soc/atmel/atmel_ssc_dai.c +29 −1
  276. sound/soc/atmel/sam9x5_wm8731.c +1 −1
  277. sound/soc/codecs/wm5110.c +1 −1
  278. sound/soc/codecs/wm8904.c +1 −1
  279. sound/soc/codecs/wm8962.c +13 −0
  280. sound/soc/codecs/wm_adsp.c +7 −3
  281. sound/soc/fsl/imx-wm8962.c +0 −2
  282. sound/soc/kirkwood/kirkwood-i2s.c +12 −12
  283. sound/soc/soc-generic-dmaengine-pcm.c +27 −11
  284. sound/soc/soc-pcm.c +3 −2
  285. sound/soc/tegra/tegra20_i2s.c +3 −3
  286. sound/soc/tegra/tegra20_spdif.c +5 −5
  287. sound/soc/tegra/tegra30_i2s.c +3 −3
  288. tools/power/cpupower/utils/cpupower-set.c +3 −3
Documentation/block/null_blk.txt+72−0
@@ -0,0 +1,72 @@
1+Null block device driver
2+================================================================================
3+
4+I. Overview
5+
6+The null block device (/dev/nullb*) is used for benchmarking the various
7+block-layer implementations. It emulates a block device of X gigabytes in size.
8+The following instances are possible:
9+
10+ Single-queue block-layer
11+ - Request-based.
12+ - Single submission queue per device.
13+ - Implements IO scheduling algorithms (CFQ, Deadline, noop).
14+ Multi-queue block-layer
15+ - Request-based.
16+ - Configurable submission queues per device.
17+ No block-layer (Known as bio-based)
18+ - Bio-based. IO requests are submitted directly to the device driver.
19+ - Directly accepts bio data structure and returns them.
20+
21+All of them have a completion queue for each core in the system.
22+
23+II. Module parameters applicable for all instances:
24+
25+queue_mode=[0-2]: Default: 2-Multi-queue
26+ Selects which block-layer the module should instantiate with.
27+
28+ 0: Bio-based.
29+ 1: Single-queue.
30+ 2: Multi-queue.
31+
32+home_node=[0--nr_nodes]: Default: NUMA_NO_NODE
33+ Selects what CPU node the data structures are allocated from.
34+
35+gb=[Size in GB]: Default: 250GB
36+ The size of the device reported to the system.
37+
38+bs=[Block size (in bytes)]: Default: 512 bytes
39+ The block size reported to the system.
40+
41+nr_devices=[Number of devices]: Default: 2
42+ Number of block devices instantiated. They are instantiated as /dev/nullb0,
43+ etc.
44+
45+irq_mode=[0-2]: Default: 1-Soft-irq
46+ The completion mode used for completing IOs to the block-layer.
47+
48+ 0: None.
49+ 1: Soft-irq. Uses IPI to complete IOs across CPU nodes. Simulates the overhead
50+ when IOs are issued from another CPU node than the home the device is
51+ connected to.
52+ 2: Timer: Waits a specific period (completion_nsec) for each IO before
53+ completion.
54+
55+completion_nsec=[ns]: Default: 10.000ns
56+ Combined with irq_mode=2 (timer). The time each completion event must wait.
57+
58+submit_queues=[0..nr_cpus]:
59+ The number of submission queues attached to the device driver. If unset, it
60+ defaults to 1 on single-queue and bio-based instances. For multi-queue,
61+ it is ignored when use_per_node_hctx module parameter is 1.
62+
63+hw_queue_depth=[0..qdepth]: Default: 64
64+ The hardware queue depth of the device.
65+
66+III: Multi-queue specific parameters
67+
68+use_per_node_hctx=[0/1]: Default: 0
69+ 0: The number of submit queues are set to the value of the submit_queues
70+ parameter.
71+ 1: The multi-queue block layer is instantiated with a hardware dispatch
72+ queue for each CPU node in the system.
Documentation/kernel-parameters.txt+2−0
@@ -1529,6 +1529,8 @@ bytes respectively. Such letter suffixes can also be entirely omitted. · 1528 unmodified lines
15291529
15301530 * atapi_dmadir: Enable ATAPI DMADIR bridge support
15311531
1532+ * disable: Disable this device.
1533+
15321534 If there are multiple matching configurations changing
15331535 the same attribute, the last one is used.
15341536
Documentation/module-signing.txt+240−0
@@ -0,0 +1,240 @@
1+ ==============================
2+ KERNEL MODULE SIGNING FACILITY
3+ ==============================
4+
5+CONTENTS
6+
7+ - Overview.
8+ - Configuring module signing.
9+ - Generating signing keys.
10+ - Public keys in the kernel.
11+ - Manually signing modules.
12+ - Signed modules and stripping.
13+ - Loading signed modules.
14+ - Non-valid signatures and unsigned modules.
15+ - Administering/protecting the private key.
16+
17+
18+========
19+OVERVIEW
20+========
21+
22+The kernel module signing facility cryptographically signs modules during
23+installation and then checks the signature upon loading the module. This
24+allows increased kernel security by disallowing the loading of unsigned modules
25+or modules signed with an invalid key. Module signing increases security by
26+making it harder to load a malicious module into the kernel. The module
27+signature checking is done by the kernel so that it is not necessary to have
28+trusted userspace bits.
29+
30+This facility uses X.509 ITU-T standard certificates to encode the public keys
31+involved. The signatures are not themselves encoded in any industrial standard
32+type. The facility currently only supports the RSA public key encryption
33+standard (though it is pluggable and permits others to be used). The possible
34+hash algorithms that can be used are SHA-1, SHA-224, SHA-256, SHA-384, and
35+SHA-512 (the algorithm is selected by data in the signature).
36+
37+
38+==========================
39+CONFIGURING MODULE SIGNING
40+==========================
41+
42+The module signing facility is enabled by going to the "Enable Loadable Module
43+Support" section of the kernel configuration and turning on
44+
45+ CONFIG_MODULE_SIG "Module signature verification"
46+
47+This has a number of options available:
48+
49+ (1) "Require modules to be validly signed" (CONFIG_MODULE_SIG_FORCE)
50+
51+ This specifies how the kernel should deal with a module that has a
52+ signature for which the key is not known or a module that is unsigned.
53+
54+ If this is off (ie. "permissive"), then modules for which the key is not
55+ available and modules that are unsigned are permitted, but the kernel will
56+ be marked as being tainted.
57+
58+ If this is on (ie. "restrictive"), only modules that have a valid
59+ signature that can be verified by a public key in the kernel's possession
60+ will be loaded. All other modules will generate an error.
61+
62+ Irrespective of the setting here, if the module has a signature block that
63+ cannot be parsed, it will be rejected out of hand.
64+
65+
66+ (2) "Automatically sign all modules" (CONFIG_MODULE_SIG_ALL)
67+
68+ If this is on then modules will be automatically signed during the
69+ modules_install phase of a build. If this is off, then the modules must
70+ be signed manually using:
71+
72+ scripts/sign-file
73+
74+
75+ (3) "Which hash algorithm should modules be signed with?"
76+
77+ This presents a choice of which hash algorithm the installation phase will
78+ sign the modules with:
79+
80+ CONFIG_SIG_SHA1 "Sign modules with SHA-1"
81+ CONFIG_SIG_SHA224 "Sign modules with SHA-224"
82+ CONFIG_SIG_SHA256 "Sign modules with SHA-256"
83+ CONFIG_SIG_SHA384 "Sign modules with SHA-384"
84+ CONFIG_SIG_SHA512 "Sign modules with SHA-512"
85+
86+ The algorithm selected here will also be built into the kernel (rather
87+ than being a module) so that modules signed with that algorithm can have
88+ their signatures checked without causing a dependency loop.
89+
90+
91+=======================
92+GENERATING SIGNING KEYS
93+=======================
94+
95+Cryptographic keypairs are required to generate and check signatures. A
96+private key is used to generate a signature and the corresponding public key is
97+used to check it. The private key is only needed during the build, after which
98+it can be deleted or stored securely. The public key gets built into the
99+kernel so that it can be used to check the signatures as the modules are
100+loaded.
101+
102+Under normal conditions, the kernel build will automatically generate a new
103+keypair using openssl if one does not exist in the files:
104+
105+ signing_key.priv
106+ signing_key.x509
107+
108+during the building of vmlinux (the public part of the key needs to be built
109+into vmlinux) using parameters in the:
110+
111+ x509.genkey
112+
113+file (which is also generated if it does not already exist).
114+
115+It is strongly recommended that you provide your own x509.genkey file.
116+
117+Most notably, in the x509.genkey file, the req_distinguished_name section
118+should be altered from the default:
119+
120+ [ req_distinguished_name ]
121+ O = Magrathea
122+ CN = Glacier signing key
123+ emailAddress = slartibartfast@magrathea.h2g2
124+
125+The generated RSA key size can also be set with:
126+
127+ [ req ]
128+ default_bits = 4096
129+
130+
131+It is also possible to manually generate the key private/public files using the
132+x509.genkey key generation configuration file in the root node of the Linux
133+kernel sources tree and the openssl command. The following is an example to
134+generate the public/private key files:
135+
136+ openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 \
137+ -config x509.genkey -outform DER -out signing_key.x509 \
138+ -keyout signing_key.priv
139+
140+
141+=========================
142+PUBLIC KEYS IN THE KERNEL
143+=========================
144+
145+The kernel contains a ring of public keys that can be viewed by root. They're
146+in a keyring called ".system_keyring" that can be seen by:
147+
148+ [root@deneb ~]# cat /proc/keys
149+ ...
150+ 223c7853 I------ 1 perm 1f030000 0 0 keyring .system_keyring: 1
151+ 302d2d52 I------ 1 perm 1f010000 0 0 asymmetri Fedora kernel signing key: d69a84e6bce3d216b979e9505b3e3ef9a7118079: X509.RSA a7118079 []
152+ ...
153+
154+Beyond the public key generated specifically for module signing, any file
155+placed in the kernel source root directory or the kernel build root directory
156+whose name is suffixed with ".x509" will be assumed to be an X.509 public key
157+and will be added to the keyring.
158+
159+Further, the architecture code may take public keys from a hardware store and
160+add those in also (e.g. from the UEFI key database).
161+
162+Finally, it is possible to add additional public keys by doing:
163+
164+ keyctl padd asymmetric "" [.system_keyring-ID] <[key-file]
165+
166+e.g.:
167+
168+ keyctl padd asymmetric "" 0x223c7853 <my_public_key.x509
169+
170+Note, however, that the kernel will only permit keys to be added to
171+.system_keyring _if_ the new key's X.509 wrapper is validly signed by a key
172+that is already resident in the .system_keyring at the time the key was added.
173+
174+
175+=========================
176+MANUALLY SIGNING MODULES
177+=========================
178+
179+To manually sign a module, use the scripts/sign-file tool available in
180+the Linux kernel source tree. The script requires 4 arguments:
181+
182+ 1. The hash algorithm (e.g., sha256)
183+ 2. The private key filename
184+ 3. The public key filename
185+ 4. The kernel module to be signed
186+
187+The following is an example to sign a kernel module:
188+
189+ scripts/sign-file sha512 kernel-signkey.priv \
190+ kernel-signkey.x509 module.ko
191+
192+The hash algorithm used does not have to match the one configured, but if it
193+doesn't, you should make sure that hash algorithm is either built into the
194+kernel or can be loaded without requiring itself.
195+
196+
197+============================
198+SIGNED MODULES AND STRIPPING
199+============================
200+
201+A signed module has a digital signature simply appended at the end. The string
202+"~Module signature appended~." at the end of the module's file confirms that a
203+signature is present but it does not confirm that the signature is valid!
204+
205+Signed modules are BRITTLE as the signature is outside of the defined ELF
206+container. Thus they MAY NOT be stripped once the signature is computed and
207+attached. Note the entire module is the signed payload, including any and all
208+debug information present at the time of signing.
209+
210+
211+======================
212+LOADING SIGNED MODULES
213+======================
214+
215+Modules are loaded with insmod, modprobe, init_module() or finit_module(),
216+exactly as for unsigned modules as no processing is done in userspace. The
217+signature checking is all done within the kernel.
218+
219+
220+=========================================
221+NON-VALID SIGNATURES AND UNSIGNED MODULES
222+=========================================
223+
224+If CONFIG_MODULE_SIG_FORCE is enabled or enforcemodulesig=1 is supplied on
225+the kernel command line, the kernel will only load validly signed modules
226+for which it has a public key. Otherwise, it will also load modules that are
227+unsigned. Any module for which the kernel has a key, but which proves to have
228+a signature mismatch will not be permitted to load.
229+
230+Any module that has an unparseable signature will be rejected.
231+
232+
233+=========================================
234+ADMINISTERING/PROTECTING THE PRIVATE KEY
235+=========================================
236+
237+Since the private key is used to sign modules, viruses and malware could use
238+the private key to sign modules and compromise the operating system. The
239+private key must be either destroyed or moved to a secure location and not kept
240+in the root node of the kernel source tree.
Documentation/networking/ip-sysctl.txt+6−2
@@ -16,8 +16,12 @@ ip_default_ttl - INTEGER · 15 unmodified lines
1616 Default: 64 (as recommended by RFC1700)
1717
1818 ip_no_pmtu_disc - BOOLEAN
19− Disable Path MTU Discovery.
20− default FALSE
19+ Disable Path MTU Discovery. If enabled and a
20+ fragmentation-required ICMP is received, the PMTU to this
21+ destination will be set to min_pmtu (see below). You will need
22+ to raise min_pmtu to the smallest interface MTU on your system
23+ manually if you want to avoid locally generated fragments.
24+ Default: FALSE
2125
2226 min_pmtu - INTEGER
2327 default 552 - minimum discovered Path MTU
MAINTAINERS+23−4
@@ -1008,6 +1008,8 @@ M: Santosh Shilimkar <santosh.shilimkar@ti.com> · 1007 unmodified lines
10081008 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
10091009 S: Maintained
10101010 F: arch/arm/mach-keystone/
1011+F: drivers/clk/keystone/
1012+T: git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git
10111013
10121014 ARM/LOGICPD PXA270 MACHINE SUPPORT
10131015 M: Lennert Buytenhek <kernel@wantstofly.org>
@@ -3761,9 +3763,11 @@ F: include/uapi/linux/gigaset_dev.h · 2747 unmodified lines
37613763
37623764 GPIO SUBSYSTEM
37633765 M: Linus Walleij <linus.walleij@linaro.org>
3764−S: Maintained
3766+M: Alexandre Courbot <gnurou@gmail.com>
37653767 L: linux-gpio@vger.kernel.org
3766−F: Documentation/gpio.txt
3768+T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git
3769+S: Maintained
3770+F: Documentation/gpio/
37673771 F: drivers/gpio/
37683772 F: include/linux/gpio*
37693773 F: include/asm-generic/gpio.h
@@ -3831,6 +3835,12 @@ T: git git://linuxtv.org/media_tree.git · 61 unmodified lines
38313835 S: Maintained
38323836 F: drivers/media/usb/gspca/
38333837
3838+GUID PARTITION TABLE (GPT)
3839+M: Davidlohr Bueso <davidlohr@hp.com>
3840+L: linux-efi@vger.kernel.org
3841+S: Maintained
3842+F: block/partitions/efi.*
3843+
38343844 STK1160 USB VIDEO CAPTURE DRIVER
38353845 M: Ezequiel Garcia <elezegarcia@gmail.com>
38363846 L: linux-media@vger.kernel.org
@@ -5911,12 +5921,21 @@ M: Steffen Klassert <steffen.klassert@secunet.com> · 2074 unmodified lines
59115921 M: Herbert Xu <herbert@gondor.apana.org.au>
59125922 M: "David S. Miller" <davem@davemloft.net>
59135923 L: netdev@vger.kernel.org
5914−T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
5924+T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec.git
5925+T: git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next.git
59155926 S: Maintained
59165927 F: net/xfrm/
59175928 F: net/key/
59185929 F: net/ipv4/xfrm*
5930+F: net/ipv4/esp4.c
5931+F: net/ipv4/ah4.c
5932+F: net/ipv4/ipcomp.c
5933+F: net/ipv4/ip_vti.c
59195934 F: net/ipv6/xfrm*
5935+F: net/ipv6/esp6.c
5936+F: net/ipv6/ah6.c
5937+F: net/ipv6/ipcomp6.c
5938+F: net/ipv6/ip6_vti.c
59205939 F: include/uapi/linux/xfrm.h
59215940 F: include/net/xfrm.h
59225941
@@ -9571,7 +9590,7 @@ F: drivers/xen/*swiotlb* · 3648 unmodified lines
95719590
95729591 XFS FILESYSTEM
95739592 P: Silicon Graphics Inc
9574−M: Dave Chinner <dchinner@fromorbit.com>
9593+M: Dave Chinner <david@fromorbit.com>
95759594 M: Ben Myers <bpm@sgi.com>
95769595 M: xfs@oss.sgi.com
95779596 L: xfs@oss.sgi.com
Makefile+10−14
@@ -1,7 +1,7 @@
11 VERSION = 3
22 PATCHLEVEL = 13
33 SUBLEVEL = 0
4−EXTRAVERSION = -rc4
4+EXTRAVERSION = -rc6
55 NAME = One Giant Leap for Frogkind
66
77 # *DOCUMENTATION*
@@ -732,19 +732,15 @@ export mod_strip_cmd · 724 unmodified lines
732732 # Select initial ramdisk compression format, default is gzip(1).
733733 # This shall be used by the dracut(8) tool while creating an initramfs image.
734734 #
735−INITRD_COMPRESS=gzip
736−ifeq ($(CONFIG_RD_BZIP2), y)
737− INITRD_COMPRESS=bzip2
738−else ifeq ($(CONFIG_RD_LZMA), y)
739− INITRD_COMPRESS=lzma
740−else ifeq ($(CONFIG_RD_XZ), y)
741− INITRD_COMPRESS=xz
742−else ifeq ($(CONFIG_RD_LZO), y)
743− INITRD_COMPRESS=lzo
744−else ifeq ($(CONFIG_RD_LZ4), y)
745− INITRD_COMPRESS=lz4
746−endif
747−export INITRD_COMPRESS
735+INITRD_COMPRESS-y := gzip
736+INITRD_COMPRESS-$(CONFIG_RD_BZIP2) := bzip2
737+INITRD_COMPRESS-$(CONFIG_RD_LZMA) := lzma
738+INITRD_COMPRESS-$(CONFIG_RD_XZ) := xz
739+INITRD_COMPRESS-$(CONFIG_RD_LZO) := lzo
740+INITRD_COMPRESS-$(CONFIG_RD_LZ4) := lz4
741+# do not export INITRD_COMPRESS, since we didn't actually
742+# choose a sane default compression above.
743+# export INITRD_COMPRESS := $(INITRD_COMPRESS-y)
748744
749745 ifdef CONFIG_MODULE_SIG_ALL
750746 MODSECKEY = ./signing_key.priv
arch/arc/include/uapi/asm/unistd.h+7−1
@@ -8,7 +8,11 @@ · 7 unmodified lines
88
99 /******** no-legacy-syscalls-ABI *******/
1010
11−#ifndef _UAPI_ASM_ARC_UNISTD_H
11+/*
12+ * Non-typical guard macro to enable inclusion twice in ARCH sys.c
13+ * That is how the Generic syscall wrapper generator works
14+ */
15+#if !defined(_UAPI_ASM_ARC_UNISTD_H) || defined(__SYSCALL)
1216 #define _UAPI_ASM_ARC_UNISTD_H
1317
1418 #define __ARCH_WANT_SYS_EXECVE
@@ -36,4 +40,6 @@ __SYSCALL(__NR_arc_gettls, sys_arc_gettls) · 21 unmodified lines
3640 #define __NR_sysfs (__NR_arch_specific_syscall + 3)
3741 __SYSCALL(__NR_sysfs, sys_sysfs)
3842
43+#undef __SYSCALL
44+
3945 #endif
arch/arm/boot/dts/r8a7790.dtsi+14−14
@@ -87,9 +87,9 @@ · 86 unmodified lines
8787 interrupts = <1 9 0xf04>;
8888 };
8989
90− gpio0: gpio@ffc40000 {
90+ gpio0: gpio@e6050000 {
9191 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
92− reg = <0 0xffc40000 0 0x2c>;
92+ reg = <0 0xe6050000 0 0x50>;
9393 interrupt-parent = <&gic>;
9494 interrupts = <0 4 0x4>;
9595 #gpio-cells = <2>;
@@ -99,9 +99,9 @@ · 3 unmodified lines
9999 interrupt-controller;
100100 };
101101
102− gpio1: gpio@ffc41000 {
102+ gpio1: gpio@e6051000 {
103103 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
104− reg = <0 0xffc41000 0 0x2c>;
104+ reg = <0 0xe6051000 0 0x50>;
105105 interrupt-parent = <&gic>;
106106 interrupts = <0 5 0x4>;
107107 #gpio-cells = <2>;
@@ -111,9 +111,9 @@ · 3 unmodified lines
111111 interrupt-controller;
112112 };
113113
114− gpio2: gpio@ffc42000 {
114+ gpio2: gpio@e6052000 {
115115 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
116− reg = <0 0xffc42000 0 0x2c>;
116+ reg = <0 0xe6052000 0 0x50>;
117117 interrupt-parent = <&gic>;
118118 interrupts = <0 6 0x4>;
119119 #gpio-cells = <2>;
@@ -123,9 +123,9 @@ · 3 unmodified lines
123123 interrupt-controller;
124124 };
125125
126− gpio3: gpio@ffc43000 {
126+ gpio3: gpio@e6053000 {
127127 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
128− reg = <0 0xffc43000 0 0x2c>;
128+ reg = <0 0xe6053000 0 0x50>;
129129 interrupt-parent = <&gic>;
130130 interrupts = <0 7 0x4>;
131131 #gpio-cells = <2>;
@@ -135,9 +135,9 @@ · 3 unmodified lines
135135 interrupt-controller;
136136 };
137137
138− gpio4: gpio@ffc44000 {
138+ gpio4: gpio@e6054000 {
139139 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
140− reg = <0 0xffc44000 0 0x2c>;
140+ reg = <0 0xe6054000 0 0x50>;
141141 interrupt-parent = <&gic>;
142142 interrupts = <0 8 0x4>;
143143 #gpio-cells = <2>;
@@ -147,9 +147,9 @@ · 3 unmodified lines
147147 interrupt-controller;
148148 };
149149
150− gpio5: gpio@ffc45000 {
150+ gpio5: gpio@e6055000 {
151151 compatible = "renesas,gpio-r8a7790", "renesas,gpio-rcar";
152− reg = <0 0xffc45000 0 0x2c>;
152+ reg = <0 0xe6055000 0 0x50>;
153153 interrupt-parent = <&gic>;
154154 interrupts = <0 9 0x4>;
155155 #gpio-cells = <2>;
@@ -241,7 +241,7 @@ · 85 unmodified lines
241241
242242 sdhi0: sdhi@ee100000 {
243243 compatible = "renesas,sdhi-r8a7790";
244− reg = <0 0xee100000 0 0x100>;
244+ reg = <0 0xee100000 0 0x200>;
245245 interrupt-parent = <&gic>;
246246 interrupts = <0 165 4>;
247247 cap-sd-highspeed;
@@ -250,7 +250,7 @@ · 2 unmodified lines
250250
251251 sdhi1: sdhi@ee120000 {
252252 compatible = "renesas,sdhi-r8a7790";
253− reg = <0 0xee120000 0 0x100>;
253+ reg = <0 0xee120000 0 0x200>;
254254 interrupt-parent = <&gic>;
255255 interrupts = <0 166 4>;
256256 cap-sd-highspeed;
arch/arm/mach-omap2/board-ldp.c+6−1
@@ -242,12 +242,18 @@ static void __init ldp_display_init(void) · 241 unmodified lines
242242
243243 static int ldp_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio)
244244 {
245+ int res;
246+
245247 /* LCD enable GPIO */
246248 ldp_lcd_pdata.enable_gpio = gpio + 7;
247249
248250 /* Backlight enable GPIO */
249251 ldp_lcd_pdata.backlight_gpio = gpio + 15;
250252
253+ res = platform_device_register(&ldp_lcd_device);
254+ if (res)
255+ pr_err("Unable to register LCD: %d\n", res);
256+
251257 return 0;
252258 }
253259
@@ -346,7 +352,6 @@ static struct omap2_hsmmc_info mmc[] __initdata = { · 92 unmodified lines
346352
347353 static struct platform_device *ldp_devices[] __initdata = {
348354 &ldp_gpio_keys_device,
349− &ldp_lcd_device,
350355 };
351356
352357 #ifdef CONFIG_OMAP_MUX
arch/arm/mach-omap2/display.c+38−0
@@ -101,13 +101,51 @@ static const struct omap_dss_hwmod_data omap4_dss_hwmod_data[] __initconst = { · 100 unmodified lines
101101 { "dss_hdmi", "omapdss_hdmi", -1 },
102102 };
103103
104+static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
105+{
106+ u32 enable_mask, enable_shift;
107+ u32 pipd_mask, pipd_shift;
108+ u32 reg;
109+
110+ if (dsi_id == 0) {
111+ enable_mask = OMAP4_DSI1_LANEENABLE_MASK;
112+ enable_shift = OMAP4_DSI1_LANEENABLE_SHIFT;
113+ pipd_mask = OMAP4_DSI1_PIPD_MASK;
114+ pipd_shift = OMAP4_DSI1_PIPD_SHIFT;
115+ } else if (dsi_id == 1) {
116+ enable_mask = OMAP4_DSI2_LANEENABLE_MASK;
117+ enable_shift = OMAP4_DSI2_LANEENABLE_SHIFT;
118+ pipd_mask = OMAP4_DSI2_PIPD_MASK;
119+ pipd_shift = OMAP4_DSI2_PIPD_SHIFT;
120+ } else {
121+ return -ENODEV;
122+ }
123+
124+ reg = omap4_ctrl_pad_readl(OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY);
125+
126+ reg &= ~enable_mask;
127+ reg &= ~pipd_mask;
128+
129+ reg |= (lanes << enable_shift) & enable_mask;
130+ reg |= (lanes << pipd_shift) & pipd_mask;
131+
132+ omap4_ctrl_pad_writel(reg, OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_DSIPHY);
133+
134+ return 0;
135+}
136+
104137 static int omap_dsi_enable_pads(int dsi_id, unsigned lane_mask)
105138 {
139+ if (cpu_is_omap44xx())
140+ return omap4_dsi_mux_pads(dsi_id, lane_mask);
141+
106142 return 0;
107143 }
108144
109145 static void omap_dsi_disable_pads(int dsi_id, unsigned lane_mask)
110146 {
147+ if (cpu_is_omap44xx())
148+ omap4_dsi_mux_pads(dsi_id, 0);
111149 }
112150
113151 static int omap_dss_set_min_bus_tput(struct device *dev, unsigned long tput)
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c+2−2
@@ -796,7 +796,7 @@ struct omap_hwmod omap2xxx_counter_32k_hwmod = { · 795 unmodified lines
796796
797797 /* gpmc */
798798 static struct omap_hwmod_irq_info omap2xxx_gpmc_irqs[] = {
799− { .irq = 20 },
799+ { .irq = 20 + OMAP_INTC_START, },
800800 { .irq = -1 }
801801 };
802802
@@ -841,7 +841,7 @@ static struct omap_hwmod_class omap2_rng_hwmod_class = { · 38 unmodified lines
841841 };
842842
843843 static struct omap_hwmod_irq_info omap2_rng_mpu_irqs[] = {
844− { .irq = 52 },
844+ { .irq = 52 + OMAP_INTC_START, },
845845 { .irq = -1 }
846846 };
847847
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c+3−3
@@ -2165,7 +2165,7 @@ static struct omap_hwmod_class omap3xxx_gpmc_hwmod_class = { · 2164 unmodified lines
21652165 };
21662166
21672167 static struct omap_hwmod_irq_info omap3xxx_gpmc_irqs[] = {
2168− { .irq = 20 },
2168+ { .irq = 20 + OMAP_INTC_START, },
21692169 { .irq = -1 }
21702170 };
21712171
@@ -2999,7 +2999,7 @@ static struct omap_mmu_dev_attr mmu_isp_dev_attr = { · 827 unmodified lines
29992999
30003000 static struct omap_hwmod omap3xxx_mmu_isp_hwmod;
30013001 static struct omap_hwmod_irq_info omap3xxx_mmu_isp_irqs[] = {
3002− { .irq = 24 },
3002+ { .irq = 24 + OMAP_INTC_START, },
30033003 { .irq = -1 }
30043004 };
30053005
@@ -3041,7 +3041,7 @@ static struct omap_mmu_dev_attr mmu_iva_dev_attr = { · 35 unmodified lines
30413041
30423042 static struct omap_hwmod omap3xxx_mmu_iva_hwmod;
30433043 static struct omap_hwmod_irq_info omap3xxx_mmu_iva_irqs[] = {
3044− { .irq = 28 },
3044+ { .irq = 28 + OMAP_INTC_START, },
30453045 { .irq = -1 }
30463046 };
30473047
arch/arm/mach-omap2/omap_hwmod_7xx_data.c+1−1
@@ -1637,7 +1637,7 @@ static struct omap_hwmod dra7xx_uart1_hwmod = { · 1636 unmodified lines
16371637 .class = &dra7xx_uart_hwmod_class,
16381638 .clkdm_name = "l4per_clkdm",
16391639 .main_clk = "uart1_gfclk_mux",
1640− .flags = HWMOD_SWSUP_SIDLE_ACT,
1640+ .flags = HWMOD_SWSUP_SIDLE_ACT | DEBUG_OMAP2UART1_FLAGS,
16411641 .prcm = {
16421642 .omap4 = {
16431643 .clkctrl_offs = DRA7XX_CM_L4PER_UART1_CLKCTRL_OFFSET,
arch/arm/mach-pxa/include/mach/lubbock.h+2−0
@@ -10,6 +10,8 @@ · 9 unmodified lines
1010 * published by the Free Software Foundation.
1111 */
1212
13+#include <mach/irqs.h>
14+
1315 #define LUBBOCK_ETH_PHYS PXA_CS3_PHYS
1416
1517 #define LUBBOCK_FPGA_PHYS PXA_CS2_PHYS
arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c+1−10
@@ -8,8 +8,6 @@ · 7 unmodified lines
88 * published by the Free Software Foundation.
99 */
1010
11−#include <linux/clk-provider.h>
12−#include <linux/irqchip.h>
1311 #include <linux/of_platform.h>
1412
1513 #include <asm/mach/arch.h>
@@ -48,15 +46,9 @@ static void __init s3c64xx_dt_map_io(void) · 32 unmodified lines
4846 panic("SoC is not S3C64xx!");
4947 }
5048
51−static void __init s3c64xx_dt_init_irq(void)
52−{
53− of_clk_init(NULL);
54− samsung_wdt_reset_of_init();
55− irqchip_init();
56−};
57−
5849 static void __init s3c64xx_dt_init_machine(void)
5950 {
51+ samsung_wdt_reset_of_init();
6052 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
6153 }
6254
@@ -79,7 +71,6 @@ DT_MACHINE_START(S3C6400_DT, "Samsung S3C64xx (Flattened Device Tree)") · 16 unmodified lines
7971 /* Maintainer: Tomasz Figa <tomasz.figa@gmail.com> */
8072 .dt_compat = s3c64xx_dt_compat,
8173 .map_io = s3c64xx_dt_map_io,
82− .init_irq = s3c64xx_dt_init_irq,
8374 .init_machine = s3c64xx_dt_init_machine,
8475 .restart = s3c64xx_dt_restart,
8576 MACHINE_END
arch/arm/mach-shmobile/board-armadillo800eva.c+7−0
@@ -614,6 +614,11 @@ static struct regulator_consumer_supply fixed3v3_power_consumers[] = { · 613 unmodified lines
614614 REGULATOR_SUPPLY("vqmmc", "sh_mmcif"),
615615 };
616616
617+/* Fixed 3.3V regulator used by LCD backlight */
618+static struct regulator_consumer_supply fixed5v0_power_consumers[] = {
619+ REGULATOR_SUPPLY("power", "pwm-backlight.0"),
620+};
621+
617622 /* Fixed 3.3V regulator to be used by SDHI0 */
618623 static struct regulator_consumer_supply vcc_sdhi0_consumers[] = {
619624 REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi.0"),
@@ -1196,6 +1201,8 @@ static void __init eva_init(void) · 576 unmodified lines
11961201
11971202 regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
11981203 ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
1204+ regulator_register_always_on(3, "fixed-5.0V", fixed5v0_power_consumers,
1205+ ARRAY_SIZE(fixed5v0_power_consumers), 5000000);
11991206
12001207 pinctrl_register_mappings(eva_pinctrl_map, ARRAY_SIZE(eva_pinctrl_map));
12011208 pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));
arch/arm/mach-shmobile/board-bockw.c+1−1
@@ -679,7 +679,7 @@ static void __init bockw_init(void) · 678 unmodified lines
679679 .id = i,
680680 .data = &rsnd_card_info[i],
681681 .size_data = sizeof(struct asoc_simple_card_info),
682− .dma_mask = ~0,
682+ .dma_mask = DMA_BIT_MASK(32),
683683 };
684684
685685 platform_device_register_full(&cardinfo);
arch/arm/mach-shmobile/board-lager.c+3−1
@@ -245,7 +245,9 @@ static void __init lager_init(void) · 244 unmodified lines
245245 {
246246 lager_add_standard_devices();
247247
248− phy_register_fixup_for_id("r8a7790-ether-ff:01", lager_ksz8041_fixup);
248+ if (IS_ENABLED(CONFIG_PHYLIB))
249+ phy_register_fixup_for_id("r8a7790-ether-ff:01",
250+ lager_ksz8041_fixup);
249251 }
250252
251253 static const char * const lager_boards_compat_dt[] __initconst = {
arch/arm/xen/enlighten.c+3−3
@@ -96,7 +96,7 @@ static int remap_pte_fn(pte_t *ptep, pgtable_t token, unsigned long addr, · 95 unmodified lines
9696 struct remap_data *info = data;
9797 struct page *page = info->pages[info->index++];
9898 unsigned long pfn = page_to_pfn(page);
99− pte_t pte = pfn_pte(pfn, info->prot);
99+ pte_t pte = pte_mkspecial(pfn_pte(pfn, info->prot));
100100
101101 if (map_foreign_page(pfn, info->fgmfn, info->domid))
102102 return -EFAULT;
@@ -224,10 +224,10 @@ static int __init xen_guest_init(void) · 121 unmodified lines
224224 }
225225 if (of_address_to_resource(node, GRANT_TABLE_PHYSADDR, &res))
226226 return 0;
227− xen_hvm_resume_frames = res.start >> PAGE_SHIFT;
227+ xen_hvm_resume_frames = res.start;
228228 xen_events_irq = irq_of_parse_and_map(node, 0);
229229 pr_info("Xen %s support found, events_irq=%d gnttab_frame_pfn=%lx\n",
230− version, xen_events_irq, xen_hvm_resume_frames);
230+ version, xen_events_irq, (xen_hvm_resume_frames >> PAGE_SHIFT));
231231 xen_domain_type = XEN_HVM_DOMAIN;
232232
233233 xen_setup_features();
arch/arm64/include/asm/xen/page-coherent.h+0−4
@@ -23,25 +23,21 @@ static inline void xen_dma_map_page(struct device *hwdev, struct page *page, · 22 unmodified lines
2323 unsigned long offset, size_t size, enum dma_data_direction dir,
2424 struct dma_attrs *attrs)
2525 {
26− __generic_dma_ops(hwdev)->map_page(hwdev, page, offset, size, dir, attrs);
2726 }
2827
2928 static inline void xen_dma_unmap_page(struct device *hwdev, dma_addr_t handle,
3029 size_t size, enum dma_data_direction dir,
3130 struct dma_attrs *attrs)
3231 {
33− __generic_dma_ops(hwdev)->unmap_page(hwdev, handle, size, dir, attrs);
3432 }
3533
3634 static inline void xen_dma_sync_single_for_cpu(struct device *hwdev,
3735 dma_addr_t handle, size_t size, enum dma_data_direction dir)
3836 {
39− __generic_dma_ops(hwdev)->sync_single_for_cpu(hwdev, handle, size, dir);
4037 }
4138
4239 static inline void xen_dma_sync_single_for_device(struct device *hwdev,
4340 dma_addr_t handle, size_t size, enum dma_data_direction dir)
4441 {
45− __generic_dma_ops(hwdev)->sync_single_for_device(hwdev, handle, size, dir);
4642 }
4743 #endif /* _ASM_ARM64_XEN_PAGE_COHERENT_H */
arch/arm64/kernel/ptrace.c+18−20
@@ -214,31 +214,29 @@ static int ptrace_hbp_fill_attr_ctrl(unsigned int note_type, · 213 unmodified lines
214214 {
215215 int err, len, type, disabled = !ctrl.enabled;
216216
217− if (disabled) {
218− len = 0;
219− type = HW_BREAKPOINT_EMPTY;
220− } else {
221− err = arch_bp_generic_fields(ctrl, &len, &type);
222− if (err)
223− return err;
224−
225− switch (note_type) {
226− case NT_ARM_HW_BREAK:
227− if ((type & HW_BREAKPOINT_X) != type)
228− return -EINVAL;
229− break;
230− case NT_ARM_HW_WATCH:
231− if ((type & HW_BREAKPOINT_RW) != type)
232− return -EINVAL;
233− break;
234− default:
217+ attr->disabled = disabled;
218+ if (disabled)
219+ return 0;
220+
221+ err = arch_bp_generic_fields(ctrl, &len, &type);
222+ if (err)
223+ return err;
224+
225+ switch (note_type) {
226+ case NT_ARM_HW_BREAK:
227+ if ((type & HW_BREAKPOINT_X) != type)
235228 return -EINVAL;
236− }
229+ break;
230+ case NT_ARM_HW_WATCH:
231+ if ((type & HW_BREAKPOINT_RW) != type)
232+ return -EINVAL;
233+ break;
234+ default:
235+ return -EINVAL;
237236 }
238237
239238 attr->bp_len = len;
240239 attr->bp_type = type;
241− attr->disabled = disabled;
242240
243241 return 0;
244242 }
arch/powerpc/include/asm/kvm_book3s.h+4−0
@@ -192,6 +192,10 @@ extern void kvmppc_load_up_vsx(void); · 191 unmodified lines
192192 extern u32 kvmppc_alignment_dsisr(struct kvm_vcpu *vcpu, unsigned int inst);
193193 extern ulong kvmppc_alignment_dar(struct kvm_vcpu *vcpu, unsigned int inst);
194194 extern int kvmppc_h_pr(struct kvm_vcpu *vcpu, unsigned long cmd);
195+extern void kvmppc_copy_to_svcpu(struct kvmppc_book3s_shadow_vcpu *svcpu,
196+ struct kvm_vcpu *vcpu);
197+extern void kvmppc_copy_from_svcpu(struct kvm_vcpu *vcpu,
198+ struct kvmppc_book3s_shadow_vcpu *svcpu);
195199
196200 static inline struct kvmppc_vcpu_book3s *to_book3s(struct kvm_vcpu *vcpu)
197201 {
arch/powerpc/include/asm/kvm_book3s_asm.h+2−0
@@ -79,6 +79,7 @@ struct kvmppc_host_state { · 78 unmodified lines
7979 ulong vmhandler;
8080 ulong scratch0;
8181 ulong scratch1;
82+ ulong scratch2;
8283 u8 in_guest;
8384 u8 restore_hid5;
8485 u8 napping;
@@ -106,6 +107,7 @@ struct kvmppc_host_state { · 21 unmodified lines
106107 };
107108
108109 struct kvmppc_book3s_shadow_vcpu {
110+ bool in_use;
109111 ulong gpr[14];
110112 u32 cr;
111113 u32 xer;
arch/powerpc/include/asm/opal.h+2−2
@@ -720,13 +720,13 @@ int64_t opal_pci_next_error(uint64_t phb_id, uint64_t *first_frozen_pe, · 719 unmodified lines
720720 int64_t opal_pci_poll(uint64_t phb_id);
721721 int64_t opal_return_cpu(void);
722722
723−int64_t opal_xscom_read(uint32_t gcid, uint32_t pcb_addr, uint64_t *val);
723+int64_t opal_xscom_read(uint32_t gcid, uint32_t pcb_addr, __be64 *val);
724724 int64_t opal_xscom_write(uint32_t gcid, uint32_t pcb_addr, uint64_t val);
725725
726726 int64_t opal_lpc_write(uint32_t chip_id, enum OpalLPCAddressType addr_type,
727727 uint32_t addr, uint32_t data, uint32_t sz);
728728 int64_t opal_lpc_read(uint32_t chip_id, enum OpalLPCAddressType addr_type,
729− uint32_t addr, uint32_t *data, uint32_t sz);
729+ uint32_t addr, __be32 *data, uint32_t sz);
730730 int64_t opal_validate_flash(uint64_t buffer, uint32_t *size, uint32_t *result);
731731 int64_t opal_manage_flash(uint8_t op);
732732 int64_t opal_update_flash(uint64_t blk_list);
arch/powerpc/include/asm/switch_to.h+1−1
@@ -35,7 +35,7 @@ extern void giveup_vsx(struct task_struct *); · 34 unmodified lines
3535 extern void enable_kernel_spe(void);
3636 extern void giveup_spe(struct task_struct *);
3737 extern void load_up_spe(struct task_struct *);
38−extern void switch_booke_debug_regs(struct thread_struct *new_thread);
38+extern void switch_booke_debug_regs(struct debug_reg *new_debug);
3939
4040 #ifndef CONFIG_SMP
4141 extern void discard_lazy_cpu_state(void);
arch/powerpc/kernel/asm-offsets.c+1−0
@@ -576,6 +576,7 @@ int main(void) · 575 unmodified lines
576576 HSTATE_FIELD(HSTATE_VMHANDLER, vmhandler);
577577 HSTATE_FIELD(HSTATE_SCRATCH0, scratch0);
578578 HSTATE_FIELD(HSTATE_SCRATCH1, scratch1);
579+ HSTATE_FIELD(HSTATE_SCRATCH2, scratch2);
579580 HSTATE_FIELD(HSTATE_IN_GUEST, in_guest);
580581 HSTATE_FIELD(HSTATE_RESTORE_HID5, restore_hid5);
581582 HSTATE_FIELD(HSTATE_NAPPING, napping);
arch/powerpc/kernel/crash_dump.c+3−3
@@ -124,15 +124,15 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf, · 123 unmodified lines
124124 void crash_free_reserved_phys_range(unsigned long begin, unsigned long end)
125125 {
126126 unsigned long addr;
127− const u32 *basep, *sizep;
127+ const __be32 *basep, *sizep;
128128 unsigned int rtas_start = 0, rtas_end = 0;
129129
130130 basep = of_get_property(rtas.dev, "linux,rtas-base", NULL);
131131 sizep = of_get_property(rtas.dev, "rtas-size", NULL);
132132
133133 if (basep && sizep) {
134− rtas_start = *basep;
135− rtas_end = *basep + *sizep;
134+ rtas_start = be32_to_cpup(basep);
135+ rtas_end = rtas_start + be32_to_cpup(sizep);
136136 }
137137
138138 for (addr = begin; addr < end; addr += PAGE_SIZE) {
arch/powerpc/kernel/process.c+16−16
@@ -339,7 +339,7 @@ static void set_debug_reg_defaults(struct thread_struct *thread) · 338 unmodified lines
339339 #endif
340340 }
341341
342−static void prime_debug_regs(struct thread_struct *thread)
342+static void prime_debug_regs(struct debug_reg *debug)
343343 {
344344 /*
345345 * We could have inherited MSR_DE from userspace, since
@@ -348,22 +348,22 @@ static void prime_debug_regs(struct thread_struct *thread) · 2 unmodified lines
348348 */
349349 mtmsr(mfmsr() & ~MSR_DE);
350350
351− mtspr(SPRN_IAC1, thread->debug.iac1);
352− mtspr(SPRN_IAC2, thread->debug.iac2);
351+ mtspr(SPRN_IAC1, debug->iac1);
352+ mtspr(SPRN_IAC2, debug->iac2);
353353 #if CONFIG_PPC_ADV_DEBUG_IACS > 2
354− mtspr(SPRN_IAC3, thread->debug.iac3);
355− mtspr(SPRN_IAC4, thread->debug.iac4);
354+ mtspr(SPRN_IAC3, debug->iac3);
355+ mtspr(SPRN_IAC4, debug->iac4);
356356 #endif
357− mtspr(SPRN_DAC1, thread->debug.dac1);
358− mtspr(SPRN_DAC2, thread->debug.dac2);
357+ mtspr(SPRN_DAC1, debug->dac1);
358+ mtspr(SPRN_DAC2, debug->dac2);
359359 #if CONFIG_PPC_ADV_DEBUG_DVCS > 0
360− mtspr(SPRN_DVC1, thread->debug.dvc1);
361− mtspr(SPRN_DVC2, thread->debug.dvc2);
360+ mtspr(SPRN_DVC1, debug->dvc1);
361+ mtspr(SPRN_DVC2, debug->dvc2);
362362 #endif
363− mtspr(SPRN_DBCR0, thread->debug.dbcr0);
364− mtspr(SPRN_DBCR1, thread->debug.dbcr1);
363+ mtspr(SPRN_DBCR0, debug->dbcr0);
364+ mtspr(SPRN_DBCR1, debug->dbcr1);
365365 #ifdef CONFIG_BOOKE
366− mtspr(SPRN_DBCR2, thread->debug.dbcr2);
366+ mtspr(SPRN_DBCR2, debug->dbcr2);
367367 #endif
368368 }
369369 /*
@@ -371,11 +371,11 @@ static void prime_debug_regs(struct thread_struct *thread) · 1 unmodified line
371371 * debug registers, set the debug registers from the values
372372 * stored in the new thread.
373373 */
374−void switch_booke_debug_regs(struct thread_struct *new_thread)
374+void switch_booke_debug_regs(struct debug_reg *new_debug)
375375 {
376376 if ((current->thread.debug.dbcr0 & DBCR0_IDM)
377− || (new_thread->debug.dbcr0 & DBCR0_IDM))
378− prime_debug_regs(new_thread);
377+ || (new_debug->dbcr0 & DBCR0_IDM))
378+ prime_debug_regs(new_debug);
379379 }
380380 EXPORT_SYMBOL_GPL(switch_booke_debug_regs);
381381 #else /* !CONFIG_PPC_ADV_DEBUG_REGS */
@@ -683,7 +683,7 @@ struct task_struct *__switch_to(struct task_struct *prev, · 301 unmodified lines
683683 #endif /* CONFIG_SMP */
684684
685685 #ifdef CONFIG_PPC_ADV_DEBUG_REGS
686− switch_booke_debug_regs(&new->thread);
686+ switch_booke_debug_regs(&new->thread.debug);
687687 #else
688688 /*
689689 * For PPC_BOOK3S_64, we use the hw-breakpoint interfaces that would
arch/powerpc/kernel/ptrace.c+2−2
@@ -1555,7 +1555,7 @@ long arch_ptrace(struct task_struct *child, long request, · 1554 unmodified lines
15551555
15561556 flush_fp_to_thread(child);
15571557 if (fpidx < (PT_FPSCR - PT_FPR0))
1558− memcpy(&tmp, &child->thread.fp_state.fpr,
1558+ memcpy(&tmp, &child->thread.TS_FPR(fpidx),
15591559 sizeof(long));
15601560 else
15611561 tmp = child->thread.fp_state.fpscr;
@@ -1588,7 +1588,7 @@ long arch_ptrace(struct task_struct *child, long request, · 26 unmodified lines
15881588
15891589 flush_fp_to_thread(child);
15901590 if (fpidx < (PT_FPSCR - PT_FPR0))
1591− memcpy(&child->thread.fp_state.fpr, &data,
1591+ memcpy(&child->thread.TS_FPR(fpidx), &data,
15921592 sizeof(long));
15931593 else
15941594 child->thread.fp_state.fpscr = data;
arch/powerpc/kernel/setup-common.c+2−2
@@ -479,7 +479,7 @@ void __init smp_setup_cpu_maps(void) · 478 unmodified lines
479479 if (machine_is(pseries) && firmware_has_feature(FW_FEATURE_LPAR) &&
480480 (dn = of_find_node_by_path("/rtas"))) {
481481 int num_addr_cell, num_size_cell, maxcpus;
482− const unsigned int *ireg;
482+ const __be32 *ireg;
483483
484484 num_addr_cell = of_n_addr_cells(dn);
485485 num_size_cell = of_n_size_cells(dn);
@@ -489,7 +489,7 @@ void __init smp_setup_cpu_maps(void) · 3 unmodified lines
489489 if (!ireg)
490490 goto out;
491491
492− maxcpus = ireg[num_addr_cell + num_size_cell];
492+ maxcpus = be32_to_cpup(ireg + num_addr_cell + num_size_cell);
493493
494494 /* Double maxcpus for processors which have SMT capability */
495495 if (cpu_has_feature(CPU_FTR_SMT))
arch/powerpc/kernel/smp.c+2−2
@@ -580,7 +580,7 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle) · 579 unmodified lines
580580 int cpu_to_core_id(int cpu)
581581 {
582582 struct device_node *np;
583− const int *reg;
583+ const __be32 *reg;
584584 int id = -1;
585585
586586 np = of_get_cpu_node(cpu, NULL);
@@ -591,7 +591,7 @@ int cpu_to_core_id(int cpu) · 4 unmodified lines
591591 if (!reg)
592592 goto out;
593593
594− id = *reg;
594+ id = be32_to_cpup(reg);
595595 out:
596596 of_node_put(np);
597597 return id;
arch/powerpc/kvm/book3s_64_mmu_hv.c+14−4
@@ -469,11 +469,14 @@ static int kvmppc_mmu_book3s_64_hv_xlate(struct kvm_vcpu *vcpu, gva_t eaddr, · 468 unmodified lines
469469 slb_v = vcpu->kvm->arch.vrma_slb_v;
470470 }
471471
472+ preempt_disable();
472473 /* Find the HPTE in the hash table */
473474 index = kvmppc_hv_find_lock_hpte(kvm, eaddr, slb_v,
474475 HPTE_V_VALID | HPTE_V_ABSENT);
475− if (index < 0)
476+ if (index < 0) {
477+ preempt_enable();
476478 return -ENOENT;
479+ }
477480 hptep = (unsigned long *)(kvm->arch.hpt_virt + (index << 4));
478481 v = hptep[0] & ~HPTE_V_HVLOCK;
479482 gr = kvm->arch.revmap[index].guest_rpte;
@@ -481,6 +484,7 @@ static int kvmppc_mmu_book3s_64_hv_xlate(struct kvm_vcpu *vcpu, gva_t eaddr, · 1 unmodified line
481484 /* Unlock the HPTE */
482485 asm volatile("lwsync" : : : "memory");
483486 hptep[0] = v;
487+ preempt_enable();
484488
485489 gpte->eaddr = eaddr;
486490 gpte->vpage = ((v & HPTE_V_AVPN) << 4) | ((eaddr >> 12) & 0xfff);
@@ -665,6 +669,7 @@ int kvmppc_book3s_hv_page_fault(struct kvm_run *run, struct kvm_vcpu *vcpu, · 178 unmodified lines
665669 return -EFAULT;
666670 } else {
667671 page = pages[0];
672+ pfn = page_to_pfn(page);
668673 if (PageHuge(page)) {
669674 page = compound_head(page);
670675 pte_size <<= compound_order(page);
@@ -689,7 +694,6 @@ int kvmppc_book3s_hv_page_fault(struct kvm_run *run, struct kvm_vcpu *vcpu, · 18 unmodified lines
689694 }
690695 rcu_read_unlock_sched();
691696 }
692− pfn = page_to_pfn(page);
693697 }
694698
695699 ret = -EFAULT;
@@ -707,8 +711,14 @@ int kvmppc_book3s_hv_page_fault(struct kvm_run *run, struct kvm_vcpu *vcpu, · 11 unmodified lines
707711 r = (r & ~(HPTE_R_W|HPTE_R_I|HPTE_R_G)) | HPTE_R_M;
708712 }
709713
710− /* Set the HPTE to point to pfn */
711− r = (r & ~(HPTE_R_PP0 - pte_size)) | (pfn << PAGE_SHIFT);
714+ /*
715+ * Set the HPTE to point to pfn.
716+ * Since the pfn is at PAGE_SIZE granularity, make sure we
717+ * don't mask out lower-order bits if psize < PAGE_SIZE.
718+ */
719+ if (psize < PAGE_SIZE)
720+ psize = PAGE_SIZE;
721+ r = (r & ~(HPTE_R_PP0 - psize)) | ((pfn << PAGE_SHIFT) & ~(psize - 1));
712722 if (hpte_is_writable(r) && !write_ok)
713723 r = hpte_make_readonly(r);
714724 ret = RESUME_GUEST;
arch/powerpc/kvm/book3s_hv.c+14−10
@@ -131,8 +131,9 @@ static void kvmppc_fast_vcpu_kick_hv(struct kvm_vcpu *vcpu) · 130 unmodified lines
131131 static void kvmppc_core_vcpu_load_hv(struct kvm_vcpu *vcpu, int cpu)
132132 {
133133 struct kvmppc_vcore *vc = vcpu->arch.vcore;
134+ unsigned long flags;
134135
135− spin_lock(&vcpu->arch.tbacct_lock);
136+ spin_lock_irqsave(&vcpu->arch.tbacct_lock, flags);
136137 if (vc->runner == vcpu && vc->vcore_state != VCORE_INACTIVE &&
137138 vc->preempt_tb != TB_NIL) {
138139 vc->stolen_tb += mftb() - vc->preempt_tb;
@@ -143,19 +144,20 @@ static void kvmppc_core_vcpu_load_hv(struct kvm_vcpu *vcpu, int cpu) · 4 unmodified lines
143144 vcpu->arch.busy_stolen += mftb() - vcpu->arch.busy_preempt;
144145 vcpu->arch.busy_preempt = TB_NIL;
145146 }
146− spin_unlock(&vcpu->arch.tbacct_lock);
147+ spin_unlock_irqrestore(&vcpu->arch.tbacct_lock, flags);
147148 }
148149
149150 static void kvmppc_core_vcpu_put_hv(struct kvm_vcpu *vcpu)
150151 {
151152 struct kvmppc_vcore *vc = vcpu->arch.vcore;
153+ unsigned long flags;
152154
153− spin_lock(&vcpu->arch.tbacct_lock);
155+ spin_lock_irqsave(&vcpu->arch.tbacct_lock, flags);
154156 if (vc->runner == vcpu && vc->vcore_state != VCORE_INACTIVE)
155157 vc->preempt_tb = mftb();
156158 if (vcpu->arch.state == KVMPPC_VCPU_BUSY_IN_HOST)
157159 vcpu->arch.busy_preempt = mftb();
158− spin_unlock(&vcpu->arch.tbacct_lock);
160+ spin_unlock_irqrestore(&vcpu->arch.tbacct_lock, flags);
159161 }
160162
161163 static void kvmppc_set_msr_hv(struct kvm_vcpu *vcpu, u64 msr)
@@ -486,11 +488,11 @@ static u64 vcore_stolen_time(struct kvmppc_vcore *vc, u64 now) · 324 unmodified lines
486488 */
487489 if (vc->vcore_state != VCORE_INACTIVE &&
488490 vc->runner->arch.run_task != current) {
489− spin_lock(&vc->runner->arch.tbacct_lock);
491+ spin_lock_irq(&vc->runner->arch.tbacct_lock);
490492 p = vc->stolen_tb;
491493 if (vc->preempt_tb != TB_NIL)
492494 p += now - vc->preempt_tb;
493− spin_unlock(&vc->runner->arch.tbacct_lock);
495+ spin_unlock_irq(&vc->runner->arch.tbacct_lock);
494496 } else {
495497 p = vc->stolen_tb;
496498 }
@@ -512,10 +514,10 @@ static void kvmppc_create_dtl_entry(struct kvm_vcpu *vcpu, · 15 unmodified lines
512514 core_stolen = vcore_stolen_time(vc, now);
513515 stolen = core_stolen - vcpu->arch.stolen_logged;
514516 vcpu->arch.stolen_logged = core_stolen;
515− spin_lock(&vcpu->arch.tbacct_lock);
517+ spin_lock_irq(&vcpu->arch.tbacct_lock);
516518 stolen += vcpu->arch.busy_stolen;
517519 vcpu->arch.busy_stolen = 0;
518− spin_unlock(&vcpu->arch.tbacct_lock);
520+ spin_unlock_irq(&vcpu->arch.tbacct_lock);
519521 if (!dt || !vpa)
520522 return;
521523 memset(dt, 0, sizeof(struct dtl_entry));
@@ -589,7 +591,9 @@ int kvmppc_pseries_do_hcall(struct kvm_vcpu *vcpu) · 67 unmodified lines
589591 if (list_empty(&vcpu->kvm->arch.rtas_tokens))
590592 return RESUME_HOST;
591593
594+ idx = srcu_read_lock(&vcpu->kvm->srcu);
592595 rc = kvmppc_rtas_hcall(vcpu);
596+ srcu_read_unlock(&vcpu->kvm->srcu, idx);
593597
594598 if (rc == -ENOENT)
595599 return RESUME_HOST;
@@ -1115,13 +1119,13 @@ static void kvmppc_remove_runnable(struct kvmppc_vcore *vc, · 519 unmodified lines
11151119
11161120 if (vcpu->arch.state != KVMPPC_VCPU_RUNNABLE)
11171121 return;
1118− spin_lock(&vcpu->arch.tbacct_lock);
1122+ spin_lock_irq(&vcpu->arch.tbacct_lock);
11191123 now = mftb();
11201124 vcpu->arch.busy_stolen += vcore_stolen_time(vc, now) -
11211125 vcpu->arch.stolen_logged;
11221126 vcpu->arch.busy_preempt = now;
11231127 vcpu->arch.state = KVMPPC_VCPU_BUSY_IN_HOST;
1124− spin_unlock(&vcpu->arch.tbacct_lock);
1128+ spin_unlock_irq(&vcpu->arch.tbacct_lock);
11251129 --vc->n_runnable;
11261130 list_del(&vcpu->arch.run_list);
11271131 }
arch/powerpc/kvm/book3s_hv_rm_mmu.c+7−2
@@ -225,6 +225,7 @@ long kvmppc_do_h_enter(struct kvm *kvm, unsigned long flags, · 224 unmodified lines
225225 is_io = pa & (HPTE_R_I | HPTE_R_W);
226226 pte_size = PAGE_SIZE << (pa & KVMPPC_PAGE_ORDER_MASK);
227227 pa &= PAGE_MASK;
228+ pa |= gpa & ~PAGE_MASK;
228229 } else {
229230 /* Translate to host virtual address */
230231 hva = __gfn_to_hva_memslot(memslot, gfn);
@@ -238,13 +239,13 @@ long kvmppc_do_h_enter(struct kvm *kvm, unsigned long flags, · 7 unmodified lines
238239 ptel = hpte_make_readonly(ptel);
239240 is_io = hpte_cache_bits(pte_val(pte));
240241 pa = pte_pfn(pte) << PAGE_SHIFT;
242+ pa |= hva & (pte_size - 1);
243+ pa |= gpa & ~PAGE_MASK;
241244 }
242245 }
243246
244247 if (pte_size < psize)
245248 return H_PARAMETER;
246− if (pa && pte_size > psize)
247− pa |= gpa & (pte_size - 1);
248249
249250 ptel &= ~(HPTE_R_PP0 - psize);
250251 ptel |= pa;
@@ -749,6 +750,10 @@ static int slb_base_page_shift[4] = { · 498 unmodified lines
749750 20, /* 1M, unsupported */
750751 };
751752
753+/* When called from virtmode, this func should be protected by
754+ * preempt_disable(), otherwise, the holding of HPTE_V_HVLOCK
755+ * can trigger deadlock issue.
756+ */
752757 long kvmppc_hv_find_lock_hpte(struct kvm *kvm, gva_t eaddr, unsigned long slb_v,
753758 unsigned long valid)
754759 {
arch/powerpc/kvm/book3s_hv_rmhandlers.S+13−10
@@ -153,7 +153,6 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_206) · 152 unmodified lines
153153
154154 13: b machine_check_fwnmi
155155
156−
157156 /*
158157 * We come in here when wakened from nap mode on a secondary hw thread.
159158 * Relocation is off and most register values are lost.
@@ -224,6 +223,11 @@ kvm_start_guest: · 64 unmodified lines
224223 /* Clear our vcpu pointer so we don't come back in early */
225224 li r0, 0
226225 std r0, HSTATE_KVM_VCPU(r13)
226+ /*
227+ * Make sure we clear HSTATE_KVM_VCPU(r13) before incrementing
228+ * the nap_count, because once the increment to nap_count is
229+ * visible we could be given another vcpu.
230+ */
227231 lwsync
228232 /* Clear any pending IPI - we're an offline thread */
229233 ld r5, HSTATE_XICS_PHYS(r13)
@@ -241,7 +245,6 @@ kvm_start_guest: · 11 unmodified lines
241245 /* increment the nap count and then go to nap mode */
242246 ld r4, HSTATE_KVM_VCORE(r13)
243247 addi r4, r4, VCORE_NAP_COUNT
244− lwsync /* make previous updates visible */
245248 51: lwarx r3, 0, r4
246249 addi r3, r3, 1
247250 stwcx. r3, 0, r4
@@ -751,15 +754,14 @@ kvmppc_interrupt_hv: · 503 unmodified lines
751754 * guest CR, R12 saved in shadow VCPU SCRATCH1/0
752755 * guest R13 saved in SPRN_SCRATCH0
753756 */
754− /* abuse host_r2 as third scratch area; we get r2 from PACATOC(r13) */
755− std r9, HSTATE_HOST_R2(r13)
757+ std r9, HSTATE_SCRATCH2(r13)
756758
757759 lbz r9, HSTATE_IN_GUEST(r13)
758760 cmpwi r9, KVM_GUEST_MODE_HOST_HV
759761 beq kvmppc_bad_host_intr
760762 #ifdef CONFIG_KVM_BOOK3S_PR_POSSIBLE
761763 cmpwi r9, KVM_GUEST_MODE_GUEST
762− ld r9, HSTATE_HOST_R2(r13)
764+ ld r9, HSTATE_SCRATCH2(r13)
763765 beq kvmppc_interrupt_pr
764766 #endif
765767 /* We're now back in the host but in guest MMU context */
@@ -779,7 +781,7 @@ kvmppc_interrupt_hv: · 13 unmodified lines
779781 std r6, VCPU_GPR(R6)(r9)
780782 std r7, VCPU_GPR(R7)(r9)
781783 std r8, VCPU_GPR(R8)(r9)
782− ld r0, HSTATE_HOST_R2(r13)
784+ ld r0, HSTATE_SCRATCH2(r13)
783785 std r0, VCPU_GPR(R9)(r9)
784786 std r10, VCPU_GPR(R10)(r9)
785787 std r11, VCPU_GPR(R11)(r9)
@@ -990,14 +992,13 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_201) · 204 unmodified lines
990992 */
991993 /* Increment the threads-exiting-guest count in the 0xff00
992994 bits of vcore->entry_exit_count */
993− lwsync
994995 ld r5,HSTATE_KVM_VCORE(r13)
995996 addi r6,r5,VCORE_ENTRY_EXIT
996997 41: lwarx r3,0,r6
997998 addi r0,r3,0x100
998999 stwcx. r0,0,r6
9991000 bne 41b
1000− lwsync
1001+ isync /* order stwcx. vs. reading napping_threads */
10011002
10021003 /*
10031004 * At this point we have an interrupt that we have to pass
@@ -1030,6 +1031,8 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_201) · 26 unmodified lines
10301031 sld r0,r0,r4
10311032 andc. r3,r3,r0 /* no sense IPI'ing ourselves */
10321033 beq 43f
1034+ /* Order entry/exit update vs. IPIs */
1035+ sync
10331036 mulli r4,r4,PACA_SIZE /* get paca for thread 0 */
10341037 subf r6,r4,r13
10351038 42: andi. r0,r3,1
@@ -1638,10 +1641,10 @@ END_FTR_SECTION_IFCLR(CPU_FTR_ARCH_206) · 602 unmodified lines
16381641 bge kvm_cede_exit
16391642 stwcx. r4,0,r6
16401643 bne 31b
1644+ /* order napping_threads update vs testing entry_exit_count */
1645+ isync
16411646 li r0,1
16421647 stb r0,HSTATE_NAPPING(r13)
1643− /* order napping_threads update vs testing entry_exit_count */
1644− lwsync
16451648 mr r4,r3
16461649 lwz r7,VCORE_ENTRY_EXIT(r5)
16471650 cmpwi r7,0x100
arch/powerpc/kvm/book3s_interrupts.S+11−8
@@ -129,29 +129,32 @@ kvm_start_lightweight: · 128 unmodified lines
129129 * R12 = exit handler id
130130 * R13 = PACA
131131 * SVCPU.* = guest *
132+ * MSR.EE = 1
132133 *
133134 */
134135
136+ PPC_LL r3, GPR4(r1) /* vcpu pointer */
137+
138+ /*
139+ * kvmppc_copy_from_svcpu can clobber volatile registers, save
140+ * the exit handler id to the vcpu and restore it from there later.
141+ */
142+ stw r12, VCPU_TRAP(r3)
143+
135144 /* Transfer reg values from shadow vcpu back to vcpu struct */
136145 /* On 64-bit, interrupts are still off at this point */
137− PPC_LL r3, GPR4(r1) /* vcpu pointer */
146+
138147 GET_SHADOW_VCPU(r4)
139148 bl FUNC(kvmppc_copy_from_svcpu)
140149 nop
141150
142151 #ifdef CONFIG_PPC_BOOK3S_64
143− /* Re-enable interrupts */
144− ld r3, HSTATE_HOST_MSR(r13)
145− ori r3, r3, MSR_EE
146− MTMSR_EERI(r3)
147−
148152 /*
149153 * Reload kernel SPRG3 value.
150154 * No need to save guest value as usermode can't modify SPRG3.
151155 */
152156 ld r3, PACA_SPRG3(r13)
153157 mtspr SPRN_SPRG3, r3
154−
155158 #endif /* CONFIG_PPC_BOOK3S_64 */
156159
157160 /* R7 = vcpu */
@@ -177,7 +180,7 @@ kvm_start_lightweight: · 19 unmodified lines
177180 PPC_STL r31, VCPU_GPR(R31)(r7)
178181
179182 /* Pass the exit number as 3rd argument to kvmppc_handle_exit */
180− mr r5, r12
183+ lwz r5, VCPU_TRAP(r7)
181184
182185 /* Restore r3 (kvm_run) and r4 (vcpu) */
183186 REST_2GPRS(3, r1)
arch/powerpc/kvm/book3s_pr.c+22−0
@@ -66,6 +66,7 @@ static void kvmppc_core_vcpu_load_pr(struct kvm_vcpu *vcpu, int cpu) · 65 unmodified lines
6666 struct kvmppc_book3s_shadow_vcpu *svcpu = svcpu_get(vcpu);
6767 memcpy(svcpu->slb, to_book3s(vcpu)->slb_shadow, sizeof(svcpu->slb));
6868 svcpu->slb_max = to_book3s(vcpu)->slb_shadow_max;
69+ svcpu->in_use = 0;
6970 svcpu_put(svcpu);
7071 #endif
7172 vcpu->cpu = smp_processor_id();
@@ -78,6 +79,9 @@ static void kvmppc_core_vcpu_put_pr(struct kvm_vcpu *vcpu) · 6 unmodified lines
7879 {
7980 #ifdef CONFIG_PPC_BOOK3S_64
8081 struct kvmppc_book3s_shadow_vcpu *svcpu = svcpu_get(vcpu);
82+ if (svcpu->in_use) {
83+ kvmppc_copy_from_svcpu(vcpu, svcpu);
84+ }
8185 memcpy(to_book3s(vcpu)->slb_shadow, svcpu->slb, sizeof(svcpu->slb));
8286 to_book3s(vcpu)->slb_shadow_max = svcpu->slb_max;
8387 svcpu_put(svcpu);
@@ -110,12 +114,26 @@ void kvmppc_copy_to_svcpu(struct kvmppc_book3s_shadow_vcpu *svcpu, · 26 unmodified lines
110114 svcpu->ctr = vcpu->arch.ctr;
111115 svcpu->lr = vcpu->arch.lr;
112116 svcpu->pc = vcpu->arch.pc;
117+ svcpu->in_use = true;
113118 }
114119
115120 /* Copy data touched by real-mode code from shadow vcpu back to vcpu */
116121 void kvmppc_copy_from_svcpu(struct kvm_vcpu *vcpu,
117122 struct kvmppc_book3s_shadow_vcpu *svcpu)
118123 {
124+ /*
125+ * vcpu_put would just call us again because in_use hasn't
126+ * been updated yet.
127+ */
128+ preempt_disable();
129+
130+ /*
131+ * Maybe we were already preempted and synced the svcpu from
132+ * our preempt notifiers. Don't bother touching this svcpu then.
133+ */
134+ if (!svcpu->in_use)
135+ goto out;
136+
119137 vcpu->arch.gpr[0] = svcpu->gpr[0];
120138 vcpu->arch.gpr[1] = svcpu->gpr[1];
121139 vcpu->arch.gpr[2] = svcpu->gpr[2];
@@ -139,6 +157,10 @@ void kvmppc_copy_from_svcpu(struct kvm_vcpu *vcpu, · 17 unmodified lines
139157 vcpu->arch.fault_dar = svcpu->fault_dar;
140158 vcpu->arch.fault_dsisr = svcpu->fault_dsisr;
141159 vcpu->arch.last_inst = svcpu->last_inst;
160+ svcpu->in_use = false;
161+
162+out:
163+ preempt_enable();
142164 }
143165
144166 static int kvmppc_core_check_requests_pr(struct kvm_vcpu *vcpu)
arch/powerpc/kvm/book3s_rmhandlers.S+1−5
@@ -153,15 +153,11 @@ _GLOBAL(kvmppc_entry_trampoline) · 152 unmodified lines
153153
154154 li r6, MSR_IR | MSR_DR
155155 andc r6, r5, r6 /* Clear DR and IR in MSR value */
156−#ifdef CONFIG_PPC_BOOK3S_32
157156 /*
158157 * Set EE in HOST_MSR so that it's enabled when we get into our
159− * C exit handler function. On 64-bit we delay enabling
160− * interrupts until we have finished transferring stuff
161− * to or from the PACA.
158+ * C exit handler function.
162159 */
163160 ori r5, r5, MSR_EE
164−#endif
165161 mtsrr0 r7
166162 mtsrr1 r6
167163 RFI
arch/powerpc/kvm/booke.c+6−6
@@ -681,7 +681,7 @@ int kvmppc_core_check_requests(struct kvm_vcpu *vcpu) · 680 unmodified lines
681681 int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
682682 {
683683 int ret, s;
684− struct thread_struct thread;
684+ struct debug_reg debug;
685685 #ifdef CONFIG_PPC_FPU
686686 struct thread_fp_state fp;
687687 int fpexc_mode;
@@ -723,9 +723,9 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu) · 35 unmodified lines
723723 #endif
724724
725725 /* Switch to guest debug context */
726− thread.debug = vcpu->arch.shadow_dbg_reg;
727− switch_booke_debug_regs(&thread);
728− thread.debug = current->thread.debug;
726+ debug = vcpu->arch.shadow_dbg_reg;
727+ switch_booke_debug_regs(&debug);
728+ debug = current->thread.debug;
729729 current->thread.debug = vcpu->arch.shadow_dbg_reg;
730730
731731 kvmppc_fix_ee_before_entry();
@@ -736,8 +736,8 @@ int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu) · 4 unmodified lines
736736 We also get here with interrupts enabled. */
737737
738738 /* Switch back to user space debug context */
739− switch_booke_debug_regs(&thread);
740− current->thread.debug = thread.debug;
739+ switch_booke_debug_regs(&debug);
740+ current->thread.debug = debug;
741741
742742 #ifdef CONFIG_PPC_FPU
743743 kvmppc_save_guest_fp(vcpu);
arch/powerpc/platforms/powernv/opal-lpc.c+6−6
@@ -24,25 +24,25 @@ static int opal_lpc_chip_id = -1; · 23 unmodified lines
2424 static u8 opal_lpc_inb(unsigned long port)
2525 {
2626 int64_t rc;
27− uint32_t data;
27+ __be32 data;
2828
2929 if (opal_lpc_chip_id < 0 || port > 0xffff)
3030 return 0xff;
3131 rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port, &data, 1);
32− return rc ? 0xff : data;
32+ return rc ? 0xff : be32_to_cpu(data);
3333 }
3434
3535 static __le16 __opal_lpc_inw(unsigned long port)
3636 {
3737 int64_t rc;
38− uint32_t data;
38+ __be32 data;
3939
4040 if (opal_lpc_chip_id < 0 || port > 0xfffe)
4141 return 0xffff;
4242 if (port & 1)
4343 return (__le16)opal_lpc_inb(port) << 8 | opal_lpc_inb(port + 1);
4444 rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port, &data, 2);
45− return rc ? 0xffff : data;
45+ return rc ? 0xffff : be32_to_cpu(data);
4646 }
4747 static u16 opal_lpc_inw(unsigned long port)
4848 {
@@ -52,7 +52,7 @@ static u16 opal_lpc_inw(unsigned long port) · 3 unmodified lines
5252 static __le32 __opal_lpc_inl(unsigned long port)
5353 {
5454 int64_t rc;
55− uint32_t data;
55+ __be32 data;
5656
5757 if (opal_lpc_chip_id < 0 || port > 0xfffc)
5858 return 0xffffffff;
@@ -62,7 +62,7 @@ static __le32 __opal_lpc_inl(unsigned long port) · 3 unmodified lines
6262 (__le32)opal_lpc_inb(port + 2) << 8 |
6363 opal_lpc_inb(port + 3);
6464 rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port, &data, 4);
65− return rc ? 0xffffffff : data;
65+ return rc ? 0xffffffff : be32_to_cpu(data);
6666 }
6767
6868 static u32 opal_lpc_inl(unsigned long port)
arch/powerpc/platforms/powernv/opal-xscom.c+3−1
@@ -96,9 +96,11 @@ static int opal_scom_read(scom_map_t map, u64 reg, u64 *value) · 95 unmodified lines
9696 {
9797 struct opal_scom_map *m = map;
9898 int64_t rc;
99+ __be64 v;
99100
100101 reg = opal_scom_unmangle(reg);
101− rc = opal_xscom_read(m->chip, m->addr + reg, (uint64_t *)__pa(value));
102+ rc = opal_xscom_read(m->chip, m->addr + reg, (__be64 *)__pa(&v));
103+ *value = be64_to_cpu(v);
102104 return opal_xscom_err_xlate(rc);
103105 }
104106
arch/powerpc/platforms/pseries/lparcfg.c+6−6
@@ -157,7 +157,7 @@ static void parse_ppp_data(struct seq_file *m) · 156 unmodified lines
157157 {
158158 struct hvcall_ppp_data ppp_data;
159159 struct device_node *root;
160− const int *perf_level;
160+ const __be32 *perf_level;
161161 int rc;
162162
163163 rc = h_get_ppp(&ppp_data);
@@ -201,7 +201,7 @@ static void parse_ppp_data(struct seq_file *m) · 37 unmodified lines
201201 perf_level = of_get_property(root,
202202 "ibm,partition-performance-parameters-level",
203203 NULL);
204− if (perf_level && (*perf_level >= 1)) {
204+ if (perf_level && (be32_to_cpup(perf_level) >= 1)) {
205205 seq_printf(m,
206206 "physical_procs_allocated_to_virtualization=%d\n",
207207 ppp_data.phys_platform_procs);
@@ -435,7 +435,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v) · 227 unmodified lines
435435 int partition_potential_processors;
436436 int partition_active_processors;
437437 struct device_node *rtas_node;
438− const int *lrdrp = NULL;
438+ const __be32 *lrdrp = NULL;
439439
440440 rtas_node = of_find_node_by_path("/rtas");
441441 if (rtas_node)
@@ -444,7 +444,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v) · 2 unmodified lines
444444 if (lrdrp == NULL) {
445445 partition_potential_processors = vdso_data->processorCount;
446446 } else {
447− partition_potential_processors = *(lrdrp + 4);
447+ partition_potential_processors = be32_to_cpup(lrdrp + 4);
448448 }
449449 of_node_put(rtas_node);
450450
@@ -654,7 +654,7 @@ static int lparcfg_data(struct seq_file *m, void *v) · 203 unmodified lines
654654 const char *model = "";
655655 const char *system_id = "";
656656 const char *tmp;
657− const unsigned int *lp_index_ptr;
657+ const __be32 *lp_index_ptr;
658658 unsigned int lp_index = 0;
659659
660660 seq_printf(m, "%s %s\n", MODULE_NAME, MODULE_VERS);
@@ -670,7 +670,7 @@ static int lparcfg_data(struct seq_file *m, void *v) · 9 unmodified lines
670670 lp_index_ptr = of_get_property(rootdn, "ibm,partition-no",
671671 NULL);
672672 if (lp_index_ptr)
673− lp_index = *lp_index_ptr;
673+ lp_index = be32_to_cpup(lp_index_ptr);
674674 of_node_put(rootdn);
675675 }
676676 seq_printf(m, "serial_number=%s\n", system_id);
arch/powerpc/platforms/pseries/msi.c+15−13
@@ -130,7 +130,8 @@ static int check_req(struct pci_dev *pdev, int nvec, char *prop_name) · 129 unmodified lines
130130 {
131131 struct device_node *dn;
132132 struct pci_dn *pdn;
133− const u32 *req_msi;
133+ const __be32 *p;
134+ u32 req_msi;
134135
135136 pdn = pci_get_pdn(pdev);
136137 if (!pdn)
@@ -138,19 +139,20 @@ static int check_req(struct pci_dev *pdev, int nvec, char *prop_name) · 1 unmodified line
138139
139140 dn = pdn->node;
140141
141− req_msi = of_get_property(dn, prop_name, NULL);
142− if (!req_msi) {
142+ p = of_get_property(dn, prop_name, NULL);
143+ if (!p) {
143144 pr_debug("rtas_msi: No %s on %s\n", prop_name, dn->full_name);
144145 return -ENOENT;
145146 }
146147
147− if (*req_msi < nvec) {
148+ req_msi = be32_to_cpup(p);
149+ if (req_msi < nvec) {
148150 pr_debug("rtas_msi: %s requests < %d MSIs\n", prop_name, nvec);
149151
150− if (*req_msi == 0) /* Be paranoid */
152+ if (req_msi == 0) /* Be paranoid */
151153 return -ENOSPC;
152154
153− return *req_msi;
155+ return req_msi;
154156 }
155157
156158 return 0;
@@ -171,7 +173,7 @@ static int check_req_msix(struct pci_dev *pdev, int nvec) · 14 unmodified lines
171173 static struct device_node *find_pe_total_msi(struct pci_dev *dev, int *total)
172174 {
173175 struct device_node *dn;
174− const u32 *p;
176+ const __be32 *p;
175177
176178 dn = of_node_get(pci_device_to_OF_node(dev));
177179 while (dn) {
@@ -179,7 +181,7 @@ static struct device_node *find_pe_total_msi(struct pci_dev *dev, int *total) · 1 unmodified line
179181 if (p) {
180182 pr_debug("rtas_msi: found prop on dn %s\n",
181183 dn->full_name);
182− *total = *p;
184+ *total = be32_to_cpup(p);
183185 return dn;
184186 }
185187
@@ -232,13 +234,13 @@ struct msi_counts { · 46 unmodified lines
232234 static void *count_non_bridge_devices(struct device_node *dn, void *data)
233235 {
234236 struct msi_counts *counts = data;
235− const u32 *p;
237+ const __be32 *p;
236238 u32 class;
237239
238240 pr_debug("rtas_msi: counting %s\n", dn->full_name);
239241
240242 p = of_get_property(dn, "class-code", NULL);
241− class = p ? *p : 0;
243+ class = p ? be32_to_cpup(p) : 0;
242244
243245 if ((class >> 8) != PCI_CLASS_BRIDGE_PCI)
244246 counts->num_devices++;
@@ -249,7 +251,7 @@ static void *count_non_bridge_devices(struct device_node *dn, void *data) · 4 unmodified lines
249251 static void *count_spare_msis(struct device_node *dn, void *data)
250252 {
251253 struct msi_counts *counts = data;
252− const u32 *p;
254+ const __be32 *p;
253255 int req;
254256
255257 if (dn == counts->requestor)
@@ -260,11 +262,11 @@ static void *count_spare_msis(struct device_node *dn, void *data) · 4 unmodified lines
260262 req = 0;
261263 p = of_get_property(dn, "ibm,req#msi", NULL);
262264 if (p)
263− req = *p;
265+ req = be32_to_cpup(p);
264266
265267 p = of_get_property(dn, "ibm,req#msi-x", NULL);
266268 if (p)
267− req = max(req, (int)*p);
269+ req = max(req, (int)be32_to_cpup(p));
268270 }
269271
270272 if (req < counts->quota)
arch/powerpc/platforms/pseries/nvram.c+23−23
@@ -43,8 +43,8 @@ static char nvram_buf[NVRW_CNT]; /* assume this is in the first 4GB */ · 42 unmodified lines
4343 static DEFINE_SPINLOCK(nvram_lock);
4444
4545 struct err_log_info {
46− int error_type;
47− unsigned int seq_num;
46+ __be32 error_type;
47+ __be32 seq_num;
4848 };
4949
5050 struct nvram_os_partition {
@@ -79,9 +79,9 @@ static const char *pseries_nvram_os_partitions[] = { · 28 unmodified lines
7979 };
8080
8181 struct oops_log_info {
82− u16 version;
83− u16 report_length;
84− u64 timestamp;
82+ __be16 version;
83+ __be16 report_length;
84+ __be64 timestamp;
8585 } __attribute__((packed));
8686
8787 static void oops_to_nvram(struct kmsg_dumper *dumper,
@@ -291,8 +291,8 @@ int nvram_write_os_partition(struct nvram_os_partition *part, char * buff, · 203 unmodified lines
291291 length = part->size;
292292 }
293293
294− info.error_type = err_type;
295− info.seq_num = error_log_cnt;
294+ info.error_type = cpu_to_be32(err_type);
295+ info.seq_num = cpu_to_be32(error_log_cnt);
296296
297297 tmp_index = part->index;
298298
@@ -364,8 +364,8 @@ int nvram_read_partition(struct nvram_os_partition *part, char *buff, · 65 unmodified lines
364364 }
365365
366366 if (part->os_partition) {
367− *error_log_cnt = info.seq_num;
368− *err_type = info.error_type;
367+ *error_log_cnt = be32_to_cpu(info.seq_num);
368+ *err_type = be32_to_cpu(info.error_type);
369369 }
370370
371371 return 0;
@@ -529,9 +529,9 @@ static int zip_oops(size_t text_len) · 157 unmodified lines
529529 pr_err("nvram: logging uncompressed oops/panic report\n");
530530 return -1;
531531 }
532− oops_hdr->version = OOPS_HDR_VERSION;
533− oops_hdr->report_length = (u16) zipped_len;
534− oops_hdr->timestamp = get_seconds();
532+ oops_hdr->version = cpu_to_be16(OOPS_HDR_VERSION);
533+ oops_hdr->report_length = cpu_to_be16(zipped_len);
534+ oops_hdr->timestamp = cpu_to_be64(get_seconds());
535535 return 0;
536536 }
537537
@@ -574,9 +574,9 @@ static int nvram_pstore_write(enum pstore_type_id type, · 36 unmodified lines
574574 clobbering_unread_rtas_event())
575575 return -1;
576576
577− oops_hdr->version = OOPS_HDR_VERSION;
578− oops_hdr->report_length = (u16) size;
579− oops_hdr->timestamp = get_seconds();
577+ oops_hdr->version = cpu_to_be16(OOPS_HDR_VERSION);
578+ oops_hdr->report_length = cpu_to_be16(size);
579+ oops_hdr->timestamp = cpu_to_be64(get_seconds());
580580
581581 if (compressed)
582582 err_type = ERR_TYPE_KERNEL_PANIC_GZ;
@@ -670,16 +670,16 @@ static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type, · 87 unmodified lines
670670 size_t length, hdr_size;
671671
672672 oops_hdr = (struct oops_log_info *)buff;
673− if (oops_hdr->version < OOPS_HDR_VERSION) {
673+ if (be16_to_cpu(oops_hdr->version) < OOPS_HDR_VERSION) {
674674 /* Old format oops header had 2-byte record size */
675675 hdr_size = sizeof(u16);
676− length = oops_hdr->version;
676+ length = be16_to_cpu(oops_hdr->version);
677677 time->tv_sec = 0;
678678 time->tv_nsec = 0;
679679 } else {
680680 hdr_size = sizeof(*oops_hdr);
681− length = oops_hdr->report_length;
682− time->tv_sec = oops_hdr->timestamp;
681+ length = be16_to_cpu(oops_hdr->report_length);
682+ time->tv_sec = be64_to_cpu(oops_hdr->timestamp);
683683 time->tv_nsec = 0;
684684 }
685685 *buf = kmalloc(length, GFP_KERNEL);
@@ -889,13 +889,13 @@ static void oops_to_nvram(struct kmsg_dumper *dumper, · 203 unmodified lines
889889 kmsg_dump_get_buffer(dumper, false,
890890 oops_data, oops_data_sz, &text_len);
891891 err_type = ERR_TYPE_KERNEL_PANIC;
892− oops_hdr->version = OOPS_HDR_VERSION;
893− oops_hdr->report_length = (u16) text_len;
894− oops_hdr->timestamp = get_seconds();
892+ oops_hdr->version = cpu_to_be16(OOPS_HDR_VERSION);
893+ oops_hdr->report_length = cpu_to_be16(text_len);
894+ oops_hdr->timestamp = cpu_to_be64(get_seconds());
895895 }
896896
897897 (void) nvram_write_os_partition(&oops_log_partition, oops_buf,
898− (int) (sizeof(*oops_hdr) + oops_hdr->report_length), err_type,
898+ (int) (sizeof(*oops_hdr) + text_len), err_type,
899899 ++oops_count);
900900
901901 spin_unlock_irqrestore(&lock, flags);
arch/powerpc/platforms/pseries/pci.c+4−4
@@ -113,7 +113,7 @@ int pseries_root_bridge_prepare(struct pci_host_bridge *bridge) · 112 unmodified lines
113113 {
114114 struct device_node *dn, *pdn;
115115 struct pci_bus *bus;
116− const uint32_t *pcie_link_speed_stats;
116+ const __be32 *pcie_link_speed_stats;
117117
118118 bus = bridge->bus;
119119
@@ -122,7 +122,7 @@ int pseries_root_bridge_prepare(struct pci_host_bridge *bridge) · 2 unmodified lines
122122 return 0;
123123
124124 for (pdn = dn; pdn != NULL; pdn = of_get_next_parent(pdn)) {
125− pcie_link_speed_stats = (const uint32_t *) of_get_property(pdn,
125+ pcie_link_speed_stats = of_get_property(pdn,
126126 "ibm,pcie-link-speed-stats", NULL);
127127 if (pcie_link_speed_stats)
128128 break;
@@ -135,7 +135,7 @@ int pseries_root_bridge_prepare(struct pci_host_bridge *bridge) · 6 unmodified lines
135135 return 0;
136136 }
137137
138− switch (pcie_link_speed_stats[0]) {
138+ switch (be32_to_cpup(pcie_link_speed_stats)) {
139139 case 0x01:
140140 bus->max_bus_speed = PCIE_SPEED_2_5GT;
141141 break;
@@ -147,7 +147,7 @@ int pseries_root_bridge_prepare(struct pci_host_bridge *bridge) · 5 unmodified lines
147147 break;
148148 }
149149
150− switch (pcie_link_speed_stats[1]) {
150+ switch (be32_to_cpup(pcie_link_speed_stats)) {
151151 case 0x01:
152152 bus->cur_bus_speed = PCIE_SPEED_2_5GT;
153153 break;
arch/sh/lib/Makefile+1−1
@@ -6,7 +6,7 @@ lib-y = delay.o memmove.o memchr.o \ · 5 unmodified lines
66 checksum.o strlen.o div64.o div64-generic.o
77
88 # Extracted from libgcc
9−lib-y += movmem.o ashldi3.o ashrdi3.o lshrdi3.o \
9+obj-y += movmem.o ashldi3.o ashrdi3.o lshrdi3.o \
1010 ashlsi3.o ashrsi3.o ashiftrt.o lshrsi3.o \
1111 udiv_qrnnd.o
1212
arch/sparc/include/asm/pgtable_64.h+2−2
@@ -619,7 +619,7 @@ static inline unsigned long pte_present(pte_t pte) · 618 unmodified lines
619619 }
620620
621621 #define pte_accessible pte_accessible
622−static inline unsigned long pte_accessible(pte_t a)
622+static inline unsigned long pte_accessible(struct mm_struct *mm, pte_t a)
623623 {
624624 return pte_val(a) & _PAGE_VALID;
625625 }
@@ -847,7 +847,7 @@ static inline void __set_pte_at(struct mm_struct *mm, unsigned long addr, · 221 unmodified lines
847847 * SUN4V NOTE: _PAGE_VALID is the same value in both the SUN4U
848848 * and SUN4V pte layout, so this inline test is fine.
849849 */
850− if (likely(mm != &init_mm) && pte_accessible(orig))
850+ if (likely(mm != &init_mm) && pte_accessible(mm, orig))
851851 tlb_batch_add(mm, addr, ptep, orig, fullmm);
852852 }
853853
arch/x86/Kconfig+1−0
@@ -26,6 +26,7 @@ config X86 · 25 unmodified lines
2626 select HAVE_AOUT if X86_32
2727 select HAVE_UNSTABLE_SCHED_CLOCK
2828 select ARCH_SUPPORTS_NUMA_BALANCING
29+ select ARCH_SUPPORTS_INT128 if X86_64
2930 select ARCH_WANTS_PROT_NUMA_PROT_NONE
3031 select HAVE_IDE
3132 select HAVE_OPROFILE
arch/x86/include/asm/pgtable.h+9−2
@@ -452,9 +452,16 @@ static inline int pte_present(pte_t a) · 451 unmodified lines
452452 }
453453
454454 #define pte_accessible pte_accessible
455−static inline int pte_accessible(pte_t a)
455+static inline bool pte_accessible(struct mm_struct *mm, pte_t a)
456456 {
457− return pte_flags(a) & _PAGE_PRESENT;
457+ if (pte_flags(a) & _PAGE_PRESENT)
458+ return true;
459+
460+ if ((pte_flags(a) & (_PAGE_PROTNONE | _PAGE_NUMA)) &&
461+ mm_tlb_flush_pending(mm))
462+ return true;
463+
464+ return false;
458465 }
459466
460467 static inline int pte_hidden(pte_t pte)
arch/x86/include/asm/preempt.h+11−0
@@ -7,6 +7,12 @@ · 6 unmodified lines
77
88 DECLARE_PER_CPU(int, __preempt_count);
99
10+/*
11+ * We use the PREEMPT_NEED_RESCHED bit as an inverted NEED_RESCHED such
12+ * that a decrement hitting 0 means we can and should reschedule.
13+ */
14+#define PREEMPT_ENABLED (0 + PREEMPT_NEED_RESCHED)
15+
1016 /*
1117 * We mask the PREEMPT_NEED_RESCHED bit so as not to confuse all current users
1218 * that think a non-zero value indicates we cannot preempt.
@@ -74,6 +80,11 @@ static __always_inline void __preempt_count_sub(int val) · 61 unmodified lines
7480 __this_cpu_add_4(__preempt_count, -val);
7581 }
7682
83+/*
84+ * Because we keep PREEMPT_NEED_RESCHED set when we do _not_ need to reschedule
85+ * a decrement which hits zero means we have no preempt_count and should
86+ * reschedule.
87+ */
7788 static __always_inline bool __preempt_count_dec_and_test(void)
7889 {
7990 GEN_UNARY_RMWcc("decl", __preempt_count, __percpu_arg(0), "e");
arch/x86/kernel/cpu/intel.c+2−1
@@ -387,7 +387,8 @@ static void init_intel(struct cpuinfo_x86 *c) · 386 unmodified lines
387387 set_cpu_cap(c, X86_FEATURE_PEBS);
388388 }
389389
390− if (c->x86 == 6 && c->x86_model == 29 && cpu_has_clflush)
390+ if (c->x86 == 6 && cpu_has_clflush &&
391+ (c->x86_model == 29 || c->x86_model == 46 || c->x86_model == 47))
391392 set_cpu_cap(c, X86_FEATURE_CLFLUSH_MONITOR);
392393
393394 #ifdef CONFIG_X86_64
arch/x86/kernel/cpu/perf_event.h+12−3
@@ -262,11 +262,20 @@ struct cpu_hw_events { · 261 unmodified lines
262262 __EVENT_CONSTRAINT(c, n, INTEL_ARCH_EVENT_MASK, \
263263 HWEIGHT(n), 0, PERF_X86_EVENT_PEBS_ST_HSW)
264264
265−#define EVENT_CONSTRAINT_END \
266− EVENT_CONSTRAINT(0, 0, 0)
265+/*
266+ * We define the end marker as having a weight of -1
267+ * to enable blacklisting of events using a counter bitmask
268+ * of zero and thus a weight of zero.
269+ * The end marker has a weight that cannot possibly be
270+ * obtained from counting the bits in the bitmask.
271+ */
272+#define EVENT_CONSTRAINT_END { .weight = -1 }
267273
274+/*
275+ * Check for end marker with weight == -1
276+ */
268277 #define for_each_event_constraint(e, c) \
269− for ((e) = (c); (e)->weight; (e)++)
278+ for ((e) = (c); (e)->weight != -1; (e)++)
270279
271280 /*
272281 * Extra registers for specific events.
arch/x86/mm/gup.c+13−0
@@ -83,6 +83,12 @@ static noinline int gup_pte_range(pmd_t pmd, unsigned long addr, · 82 unmodified lines
8383 pte_t pte = gup_get_pte(ptep);
8484 struct page *page;
8585
86+ /* Similar to the PMD case, NUMA hinting must take slow path */
87+ if (pte_numa(pte)) {
88+ pte_unmap(ptep);
89+ return 0;
90+ }
91+
8692 if ((pte_flags(pte) & (mask | _PAGE_SPECIAL)) != mask) {
8793 pte_unmap(ptep);
8894 return 0;
@@ -167,6 +173,13 @@ static int gup_pmd_range(pud_t pud, unsigned long addr, unsigned long end, · 78 unmodified lines
167173 if (pmd_none(pmd) || pmd_trans_splitting(pmd))
168174 return 0;
169175 if (unlikely(pmd_large(pmd))) {
176+ /*
177+ * NUMA hinting faults need to be handled in the GUP
178+ * slowpath for accounting purposes and so that they
179+ * can be serialised against THP migration.
180+ */
181+ if (pmd_numa(pmd))
182+ return 0;
170183 if (!gup_huge_pmd(pmd, addr, next, write, pages, nr))
171184 return 0;
172185 } else {
block/blk-mq-sysfs.c+13−0
@@ -335,9 +335,22 @@ static struct kobj_type blk_mq_hw_ktype = { · 334 unmodified lines
335335 void blk_mq_unregister_disk(struct gendisk *disk)
336336 {
337337 struct request_queue *q = disk->queue;
338+ struct blk_mq_hw_ctx *hctx;
339+ struct blk_mq_ctx *ctx;
340+ int i, j;
341+
342+ queue_for_each_hw_ctx(q, hctx, i) {
343+ hctx_for_each_ctx(hctx, ctx, j) {
344+ kobject_del(&ctx->kobj);
345+ kobject_put(&ctx->kobj);
346+ }
347+ kobject_del(&hctx->kobj);
348+ kobject_put(&hctx->kobj);
349+ }
338350
339351 kobject_uevent(&q->mq_kobj, KOBJ_REMOVE);
340352 kobject_del(&q->mq_kobj);
353+ kobject_put(&q->mq_kobj);
341354
342355 kobject_put(&disk_to_dev(disk)->kobj);
343356 }
drivers/acpi/Kconfig+0−1
@@ -348,7 +348,6 @@ source "drivers/acpi/apei/Kconfig" · 347 unmodified lines
348348 config ACPI_EXTLOG
349349 tristate "Extended Error Log support"
350350 depends on X86_MCE && X86_LOCAL_APIC
351− select EFI
352351 select UEFI_CPER
353352 default n
354353 help
drivers/acpi/acpi_lpss.c+1−0
@@ -162,6 +162,7 @@ static const struct acpi_device_id acpi_lpss_device_ids[] = { · 161 unmodified lines
162162 { "80860F14", (unsigned long)&byt_sdio_dev_desc },
163163 { "80860F41", (unsigned long)&byt_i2c_dev_desc },
164164 { "INT33B2", },
165+ { "INT33FC", },
165166
166167 { "INT3430", (unsigned long)&lpt_dev_desc },
167168 { "INT3431", (unsigned long)&lpt_dev_desc },
drivers/acpi/apei/Kconfig+0−1
@@ -2,7 +2,6 @@ config ACPI_APEI · 1 unmodified line
22 bool "ACPI Platform Error Interface (APEI)"
33 select MISC_FILESYSTEMS
44 select PSTORE
5− select EFI
65 select UEFI_CPER
76 depends on X86
87 help
drivers/acpi/apei/erst.c+1−0
@@ -942,6 +942,7 @@ static int erst_clearer(enum pstore_type_id type, u64 id, int count, · 941 unmodified lines
942942 static struct pstore_info erst_info = {
943943 .owner = THIS_MODULE,
944944 .name = "erst",
945+ .flags = PSTORE_FLAGS_FRAGILE,
945946 .open = erst_open_pstore,
946947 .close = erst_close_pstore,
947948 .read = erst_reader,
drivers/ata/ahci.c+9−9
@@ -1238,15 +1238,6 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) · 1237 unmodified lines
12381238 if (rc)
12391239 return rc;
12401240
1241− /* AHCI controllers often implement SFF compatible interface.
1242− * Grab all PCI BARs just in case.
1243− */
1244− rc = pcim_iomap_regions_request_all(pdev, 1 << ahci_pci_bar, DRV_NAME);
1245− if (rc == -EBUSY)
1246− pcim_pin_device(pdev);
1247− if (rc)
1248− return rc;
1249−
12501241 if (pdev->vendor == PCI_VENDOR_ID_INTEL &&
12511242 (pdev->device == 0x2652 || pdev->device == 0x2653)) {
12521243 u8 map;
@@ -1263,6 +1254,15 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) · 10 unmodified lines
12631254 }
12641255 }
12651256
1257+ /* AHCI controllers often implement SFF compatible interface.
1258+ * Grab all PCI BARs just in case.
1259+ */
1260+ rc = pcim_iomap_regions_request_all(pdev, 1 << ahci_pci_bar, DRV_NAME);
1261+ if (rc == -EBUSY)
1262+ pcim_pin_device(pdev);
1263+ if (rc)
1264+ return rc;
1265+
12661266 hpriv = devm_kzalloc(dev, sizeof(*hpriv), GFP_KERNEL);
12671267 if (!hpriv)
12681268 return -ENOMEM;
drivers/ata/ahci_imx.c+2−1
@@ -113,7 +113,7 @@ static int imx6q_sata_init(struct device *dev, void __iomem *mmio) · 112 unmodified lines
113113 /*
114114 * set PHY Paremeters, two steps to configure the GPR13,
115115 * one write for rest of parameters, mask of first write
116− * is 0x07fffffd, and the other one write for setting
116+ * is 0x07ffffff, and the other one write for setting
117117 * the mpll_clk_en.
118118 */
119119 regmap_update_bits(imxpriv->gpr, 0x34, IMX6Q_GPR13_SATA_RX_EQ_VAL_MASK
@@ -124,6 +124,7 @@ static int imx6q_sata_init(struct device *dev, void __iomem *mmio) · 4 unmodified lines
124124 | IMX6Q_GPR13_SATA_TX_ATTEN_MASK
125125 | IMX6Q_GPR13_SATA_TX_BOOST_MASK
126126 | IMX6Q_GPR13_SATA_TX_LVL_MASK
127+ | IMX6Q_GPR13_SATA_MPLL_CLK_EN
127128 | IMX6Q_GPR13_SATA_TX_EDGE_RATE
128129 , IMX6Q_GPR13_SATA_RX_EQ_VAL_3_0_DB
129130 | IMX6Q_GPR13_SATA_RX_LOS_LVL_SATA2M
drivers/ata/libata-core.c+17−2
@@ -2149,9 +2149,16 @@ static int ata_dev_config_ncq(struct ata_device *dev, · 2148 unmodified lines
21492149 "failed to get NCQ Send/Recv Log Emask 0x%x\n",
21502150 err_mask);
21512151 } else {
2152+ u8 *cmds = dev->ncq_send_recv_cmds;
2153+
21522154 dev->flags |= ATA_DFLAG_NCQ_SEND_RECV;
2153− memcpy(dev->ncq_send_recv_cmds, ap->sector_buf,
2154− ATA_LOG_NCQ_SEND_RECV_SIZE);
2155+ memcpy(cmds, ap->sector_buf, ATA_LOG_NCQ_SEND_RECV_SIZE);
2156+
2157+ if (dev->horkage & ATA_HORKAGE_NO_NCQ_TRIM) {
2158+ ata_dev_dbg(dev, "disabling queued TRIM support\n");
2159+ cmds[ATA_LOG_NCQ_SEND_RECV_DSM_OFFSET] &=
2160+ ~ATA_LOG_NCQ_SEND_RECV_DSM_TRIM;
2161+ }
21552162 }
21562163 }
21572164
@@ -4156,6 +4163,9 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { · 1998 unmodified lines
41564163 { "ST3320[68]13AS", "SD1[5-9]", ATA_HORKAGE_NONCQ |
41574164 ATA_HORKAGE_FIRMWARE_WARN },
41584165
4166+ /* Seagate Momentus SpinPoint M8 seem to have FPMDA_AA issues */
4167+ { "ST1000LM024 HN-M101MBB", "2AR10001", ATA_HORKAGE_BROKEN_FPDMA_AA },
4168+
41594169 /* Blacklist entries taken from Silicon Image 3124/3132
41604170 Windows driver .inf file - also several Linux problem reports */
41614171 { "HTS541060G9SA00", "MB3OC60D", ATA_HORKAGE_NONCQ, },
@@ -4202,6 +4212,10 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { · 40 unmodified lines
42024212 { "PIONEER DVD-RW DVR-212D", NULL, ATA_HORKAGE_NOSETXFER },
42034213 { "PIONEER DVD-RW DVR-216D", NULL, ATA_HORKAGE_NOSETXFER },
42044214
4215+ /* devices that don't properly handle queued TRIM commands */
4216+ { "Micron_M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
4217+ { "Crucial_CT???M500SSD1", NULL, ATA_HORKAGE_NO_NCQ_TRIM, },
4218+
42054219 /* End Marker */
42064220 { }
42074221 };
@@ -6519,6 +6533,7 @@ static int __init ata_parse_force_one(char **cur, · 2311 unmodified lines
65196533 { "norst", .lflags = ATA_LFLAG_NO_HRST | ATA_LFLAG_NO_SRST },
65206534 { "rstonce", .lflags = ATA_LFLAG_RST_ONCE },
65216535 { "atapi_dmadir", .horkage_on = ATA_HORKAGE_ATAPI_DMADIR },
6536+ { "disable", .horkage_on = ATA_HORKAGE_DISABLE },
65226537 };
65236538 char *start = *cur, *p = *cur;
65246539 char *id, *val, *endp;
drivers/ata/libata-scsi.c+21−0
@@ -3872,6 +3872,27 @@ void ata_scsi_hotplug(struct work_struct *work) · 3871 unmodified lines
38723872 return;
38733873 }
38743874
3875+ /*
3876+ * XXX - UGLY HACK
3877+ *
3878+ * The block layer suspend/resume path is fundamentally broken due
3879+ * to freezable kthreads and workqueue and may deadlock if a block
3880+ * device gets removed while resume is in progress. I don't know
3881+ * what the solution is short of removing freezable kthreads and
3882+ * workqueues altogether.
3883+ *
3884+ * The following is an ugly hack to avoid kicking off device
3885+ * removal while freezer is active. This is a joke but does avoid
3886+ * this particular deadlock scenario.
3887+ *
3888+ * https://bugzilla.kernel.org/show_bug.cgi?id=62801
3889+ * http://marc.info/?l=linux-kernel&m=138695698516487
3890+ */
3891+#ifdef CONFIG_FREEZER
3892+ while (pm_freezing)
3893+ msleep(10);
3894+#endif
3895+
38753896 DPRINTK("ENTER\n");
38763897 mutex_lock(&ap->scsi_scan_mutex);
38773898
drivers/block/null_blk.c+76−26
@@ -1,4 +1,5 @@
11 #include <linux/module.h>
2+
23 #include <linux/moduleparam.h>
34 #include <linux/sched.h>
45 #include <linux/fs.h>
@@ -65,7 +66,7 @@ enum { · 60 unmodified lines
6566 NULL_Q_MQ = 2,
6667 };
6768
68−static int submit_queues = 1;
69+static int submit_queues;
6970 module_param(submit_queues, int, S_IRUGO);
7071 MODULE_PARM_DESC(submit_queues, "Number of submission queues");
7172
@@ -101,9 +102,9 @@ static int hw_queue_depth = 64; · 29 unmodified lines
101102 module_param(hw_queue_depth, int, S_IRUGO);
102103 MODULE_PARM_DESC(hw_queue_depth, "Queue depth for each hardware queue. Default: 64");
103104
104−static bool use_per_node_hctx = true;
105+static bool use_per_node_hctx = false;
105106 module_param(use_per_node_hctx, bool, S_IRUGO);
106−MODULE_PARM_DESC(use_per_node_hctx, "Use per-node allocation for hardware context queues. Default: true");
107+MODULE_PARM_DESC(use_per_node_hctx, "Use per-node allocation for hardware context queues. Default: false");
107108
108109 static void put_tag(struct nullb_queue *nq, unsigned int tag)
109110 {
@@ -346,8 +347,37 @@ static int null_queue_rq(struct blk_mq_hw_ctx *hctx, struct request *rq) · 236 unmodified lines
346347
347348 static struct blk_mq_hw_ctx *null_alloc_hctx(struct blk_mq_reg *reg, unsigned int hctx_index)
348349 {
349− return kzalloc_node(sizeof(struct blk_mq_hw_ctx), GFP_KERNEL,
350− hctx_index);
350+ int b_size = DIV_ROUND_UP(reg->nr_hw_queues, nr_online_nodes);
351+ int tip = (reg->nr_hw_queues % nr_online_nodes);
352+ int node = 0, i, n;
353+
354+ /*
355+ * Split submit queues evenly wrt to the number of nodes. If uneven,
356+ * fill the first buckets with one extra, until the rest is filled with
357+ * no extra.
358+ */
359+ for (i = 0, n = 1; i < hctx_index; i++, n++) {
360+ if (n % b_size == 0) {
361+ n = 0;
362+ node++;
363+
364+ tip--;
365+ if (!tip)
366+ b_size = reg->nr_hw_queues / nr_online_nodes;
367+ }
368+ }
369+
370+ /*
371+ * A node might not be online, therefore map the relative node id to the
372+ * real node id.
373+ */
374+ for_each_online_node(n) {
375+ if (!node)
376+ break;
377+ node--;
378+ }
379+
380+ return kzalloc_node(sizeof(struct blk_mq_hw_ctx), GFP_KERNEL, n);
351381 }
352382
353383 static void null_free_hctx(struct blk_mq_hw_ctx *hctx, unsigned int hctx_index)
@@ -355,16 +385,24 @@ static void null_free_hctx(struct blk_mq_hw_ctx *hctx, unsigned int hctx_index) · 1 unmodified line
355385 kfree(hctx);
356386 }
357387
388+static void null_init_queue(struct nullb *nullb, struct nullb_queue *nq)
389+{
390+ BUG_ON(!nullb);
391+ BUG_ON(!nq);
392+
393+ init_waitqueue_head(&nq->wait);
394+ nq->queue_depth = nullb->queue_depth;
395+}
396+
358397 static int null_init_hctx(struct blk_mq_hw_ctx *hctx, void *data,
359398 unsigned int index)
360399 {
361400 struct nullb *nullb = data;
362401 struct nullb_queue *nq = &nullb->queues[index];
363402
364− init_waitqueue_head(&nq->wait);
365− nq->queue_depth = nullb->queue_depth;
366− nullb->nr_queues++;
367403 hctx->driver_data = nq;
404+ null_init_queue(nullb, nq);
405+ nullb->nr_queues++;
368406
369407 return 0;
370408 }
@@ -417,13 +455,13 @@ static int setup_commands(struct nullb_queue *nq) · 46 unmodified lines
417455
418456 nq->cmds = kzalloc(nq->queue_depth * sizeof(*cmd), GFP_KERNEL);
419457 if (!nq->cmds)
420− return 1;
458+ return -ENOMEM;
421459
422460 tag_size = ALIGN(nq->queue_depth, BITS_PER_LONG) / BITS_PER_LONG;
423461 nq->tag_map = kzalloc(tag_size * sizeof(unsigned long), GFP_KERNEL);
424462 if (!nq->tag_map) {
425463 kfree(nq->cmds);
426− return 1;
464+ return -ENOMEM;
427465 }
428466
429467 for (i = 0; i < nq->queue_depth; i++) {
@@ -454,33 +492,37 @@ static void cleanup_queues(struct nullb *nullb) · 24 unmodified lines
454492
455493 static int setup_queues(struct nullb *nullb)
456494 {
457− struct nullb_queue *nq;
458− int i;
459−
460− nullb->queues = kzalloc(submit_queues * sizeof(*nq), GFP_KERNEL);
495+ nullb->queues = kzalloc(submit_queues * sizeof(struct nullb_queue),
496+ GFP_KERNEL);
461497 if (!nullb->queues)
462− return 1;
498+ return -ENOMEM;
463499
464500 nullb->nr_queues = 0;
465501 nullb->queue_depth = hw_queue_depth;
466502
467− if (queue_mode == NULL_Q_MQ)
468− return 0;
503+ return 0;
504+}
505+
506+static int init_driver_queues(struct nullb *nullb)
507+{
508+ struct nullb_queue *nq;
509+ int i, ret = 0;
469510
470511 for (i = 0; i < submit_queues; i++) {
471512 nq = &nullb->queues[i];
472− init_waitqueue_head(&nq->wait);
473− nq->queue_depth = hw_queue_depth;
474− if (setup_commands(nq))
475− break;
513+
514+ null_init_queue(nullb, nq);
515+
516+ ret = setup_commands(nq);
517+ if (ret)
518+ goto err_queue;
476519 nullb->nr_queues++;
477520 }
478521
479− if (i == submit_queues)
480− return 0;
481−
522+ return 0;
523+err_queue:
482524 cleanup_queues(nullb);
483− return 1;
525+ return ret;
484526 }
485527
486528 static int null_add_dev(void)
@@ -518,11 +560,13 @@ static int null_add_dev(void) · 31 unmodified lines
518560 } else if (queue_mode == NULL_Q_BIO) {
519561 nullb->q = blk_alloc_queue_node(GFP_KERNEL, home_node);
520562 blk_queue_make_request(nullb->q, null_queue_bio);
563+ init_driver_queues(nullb);
521564 } else {
522565 nullb->q = blk_init_queue_node(null_request_fn, &nullb->lock, home_node);
523566 blk_queue_prep_rq(nullb->q, null_rq_prep_fn);
524567 if (nullb->q)
525568 blk_queue_softirq_done(nullb->q, null_softirq_done_fn);
569+ init_driver_queues(nullb);
526570 }
527571
528572 if (!nullb->q)
@@ -579,7 +623,13 @@ static int __init null_init(void) · 50 unmodified lines
579623 }
580624 #endif
581625
582− if (submit_queues > nr_cpu_ids)
626+ if (queue_mode == NULL_Q_MQ && use_per_node_hctx) {
627+ if (submit_queues < nr_online_nodes) {
628+ pr_warn("null_blk: submit_queues param is set to %u.",
629+ nr_online_nodes);
630+ submit_queues = nr_online_nodes;
631+ }
632+ } else if (submit_queues > nr_cpu_ids)
583633 submit_queues = nr_cpu_ids;
584634 else if (!submit_queues)
585635 submit_queues = 1;
drivers/block/skd_main.c+2−2
@@ -5269,7 +5269,7 @@ const char *skd_skdev_state_to_str(enum skd_drvr_state state) · 5268 unmodified lines
52695269 }
52705270 }
52715271
5272−const char *skd_skmsg_state_to_str(enum skd_fit_msg_state state)
5272+static const char *skd_skmsg_state_to_str(enum skd_fit_msg_state state)
52735273 {
52745274 switch (state) {
52755275 case SKD_MSG_STATE_IDLE:
@@ -5281,7 +5281,7 @@ const char *skd_skmsg_state_to_str(enum skd_fit_msg_state state) · 5 unmodified lines
52815281 }
52825282 }
52835283
5284−const char *skd_skreq_state_to_str(enum skd_req_state state)
5284+static const char *skd_skreq_state_to_str(enum skd_req_state state)
52855285 {
52865286 switch (state) {
52875287 case SKD_REQ_STATE_IDLE:
drivers/clk/clk-s2mps11.c+3−3
@@ -60,7 +60,7 @@ static int s2mps11_clk_prepare(struct clk_hw *hw) · 59 unmodified lines
6060 struct s2mps11_clk *s2mps11 = to_s2mps11_clk(hw);
6161 int ret;
6262
63− ret = regmap_update_bits(s2mps11->iodev->regmap,
63+ ret = regmap_update_bits(s2mps11->iodev->regmap_pmic,
6464 S2MPS11_REG_RTC_CTRL,
6565 s2mps11->mask, s2mps11->mask);
6666 if (!ret)
@@ -74,7 +74,7 @@ static void s2mps11_clk_unprepare(struct clk_hw *hw) · 7 unmodified lines
7474 struct s2mps11_clk *s2mps11 = to_s2mps11_clk(hw);
7575 int ret;
7676
77− ret = regmap_update_bits(s2mps11->iodev->regmap, S2MPS11_REG_RTC_CTRL,
77+ ret = regmap_update_bits(s2mps11->iodev->regmap_pmic, S2MPS11_REG_RTC_CTRL,
7878 s2mps11->mask, ~s2mps11->mask);
7979
8080 if (!ret)
@@ -174,7 +174,7 @@ static int s2mps11_clk_probe(struct platform_device *pdev) · 93 unmodified lines
174174 s2mps11_clk->hw.init = &s2mps11_clks_init[i];
175175 s2mps11_clk->mask = 1 << i;
176176
177− ret = regmap_read(s2mps11_clk->iodev->regmap,
177+ ret = regmap_read(s2mps11_clk->iodev->regmap_pmic,
178178 S2MPS11_REG_RTC_CTRL, &val);
179179 if (ret < 0)
180180 goto err_reg;
drivers/clocksource/Kconfig+1−0
@@ -75,6 +75,7 @@ config CLKSRC_DBX500_PRCMU_SCHED_CLOCK · 74 unmodified lines
7575 config CLKSRC_EFM32
7676 bool "Clocksource for Energy Micro's EFM32 SoCs" if !ARCH_EFM32
7777 depends on OF && ARM && (ARCH_EFM32 || COMPILE_TEST)
78+ select CLKSRC_MMIO
7879 default ARCH_EFM32
7980 help
8081 Support to use the timers of EFM32 SoCs as clock source and clock
drivers/clocksource/clksrc-of.c+0−1
@@ -35,6 +35,5 @@ void __init clocksource_of_init(void) · 34 unmodified lines
3535
3636 init_func = match->data;
3737 init_func(np);
38− of_node_put(np);
3938 }
4039 }
drivers/clocksource/dw_apb_timer_of.c+4−3
@@ -108,12 +108,11 @@ static void __init add_clocksource(struct device_node *source_timer) · 107 unmodified lines
108108
109109 static u64 read_sched_clock(void)
110110 {
111− return __raw_readl(sched_io_base);
111+ return ~__raw_readl(sched_io_base);
112112 }
113113
114114 static const struct of_device_id sptimer_ids[] __initconst = {
115115 { .compatible = "picochip,pc3x2-rtc" },
116− { .compatible = "snps,dw-apb-timer-sp" },
117116 { /* Sentinel */ },
118117 };
119118
@@ -151,4 +150,6 @@ static void __init dw_apb_timer_init(struct device_node *timer) · 31 unmodified lines
151150 num_called++;
152151 }
153152 CLOCKSOURCE_OF_DECLARE(pc3x2_timer, "picochip,pc3x2-timer", dw_apb_timer_init);
154−CLOCKSOURCE_OF_DECLARE(apb_timer, "snps,dw-apb-timer-osc", dw_apb_timer_init);
153+CLOCKSOURCE_OF_DECLARE(apb_timer_osc, "snps,dw-apb-timer-osc", dw_apb_timer_init);
154+CLOCKSOURCE_OF_DECLARE(apb_timer_sp, "snps,dw-apb-timer-sp", dw_apb_timer_init);
155+CLOCKSOURCE_OF_DECLARE(apb_timer, "snps,dw-apb-timer", dw_apb_timer_init);
drivers/clocksource/sun4i_timer.c+3−0
@@ -179,6 +179,9 @@ static void __init sun4i_timer_init(struct device_node *node) · 178 unmodified lines
179179 writel(TIMER_CTL_CLK_SRC(TIMER_CTL_CLK_SRC_OSC24M),
180180 timer_base + TIMER_CTL_REG(0));
181181
182+ /* Make sure timer is stopped before playing with interrupts */
183+ sun4i_clkevt_time_stop(0);
184+
182185 ret = setup_irq(irq, &sun4i_timer_irq);
183186 if (ret)
184187 pr_warn("failed to setup irq %d\n", irq);
drivers/clocksource/time-armada-370-xp.c+5−5
@@ -255,11 +255,6 @@ static void __init armada_370_xp_timer_common_init(struct device_node *np) · 254 unmodified lines
255255
256256 ticks_per_jiffy = (timer_clk + HZ / 2) / HZ;
257257
258− /*
259− * Set scale and timer for sched_clock.
260− */
261− sched_clock_register(armada_370_xp_read_sched_clock, 32, timer_clk);
262−
263258 /*
264259 * Setup free-running clocksource timer (interrupts
265260 * disabled).
@@ -270,6 +265,11 @@ static void __init armada_370_xp_timer_common_init(struct device_node *np) · 4 unmodified lines
270265 timer_ctrl_clrset(0, TIMER0_EN | TIMER0_RELOAD_EN |
271266 TIMER0_DIV(TIMER_DIVIDER_SHIFT));
272267
268+ /*
269+ * Set scale and timer for sched_clock.
270+ */
271+ sched_clock_register(armada_370_xp_read_sched_clock, 32, timer_clk);
272+
273273 clocksource_mmio_init(timer_base + TIMER0_VAL_OFF,
274274 "armada_370_xp_clocksource",
275275 timer_clk, 300, 32, clocksource_mmio_readl_down);
drivers/cpufreq/cpufreq.c+37−32
@@ -828,6 +828,12 @@ static void cpufreq_init_policy(struct cpufreq_policy *policy) · 827 unmodified lines
828828 int ret = 0;
829829
830830 memcpy(&new_policy, policy, sizeof(*policy));
831+
832+ /* Use the default policy if its valid. */
833+ if (cpufreq_driver->setpolicy)
834+ cpufreq_parse_governor(policy->governor->name,
835+ &new_policy.policy, NULL);
836+
831837 /* assure that the starting sequence is run in cpufreq_set_policy */
832838 policy->governor = NULL;
833839
@@ -845,8 +851,7 @@ static void cpufreq_init_policy(struct cpufreq_policy *policy) · 11 unmodified lines
845851
846852 #ifdef CONFIG_HOTPLUG_CPU
847853 static int cpufreq_add_policy_cpu(struct cpufreq_policy *policy,
848− unsigned int cpu, struct device *dev,
849− bool frozen)
854+ unsigned int cpu, struct device *dev)
850855 {
851856 int ret = 0;
852857 unsigned long flags;
@@ -877,11 +882,7 @@ static int cpufreq_add_policy_cpu(struct cpufreq_policy *policy, · 24 unmodified lines
877882 }
878883 }
879884
880− /* Don't touch sysfs links during light-weight init */
881− if (!frozen)
882− ret = sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq");
883−
884− return ret;
885+ return sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq");
885886 }
886887 #endif
887888
@@ -926,6 +927,27 @@ err_free_policy: · 38 unmodified lines
926927 return NULL;
927928 }
928929
930+static void cpufreq_policy_put_kobj(struct cpufreq_policy *policy)
931+{
932+ struct kobject *kobj;
933+ struct completion *cmp;
934+
935+ down_read(&policy->rwsem);
936+ kobj = &policy->kobj;
937+ cmp = &policy->kobj_unregister;
938+ up_read(&policy->rwsem);
939+ kobject_put(kobj);
940+
941+ /*
942+ * We need to make sure that the underlying kobj is
943+ * actually not referenced anymore by anybody before we
944+ * proceed with unloading.
945+ */
946+ pr_debug("waiting for dropping of refcount\n");
947+ wait_for_completion(cmp);
948+ pr_debug("wait complete\n");
949+}
950+
929951 static void cpufreq_policy_free(struct cpufreq_policy *policy)
930952 {
931953 free_cpumask_var(policy->related_cpus);
@@ -986,7 +1008,7 @@ static int __cpufreq_add_dev(struct device *dev, struct subsys_interface *sif, · 54 unmodified lines
9861008 list_for_each_entry(tpolicy, &cpufreq_policy_list, policy_list) {
9871009 if (cpumask_test_cpu(cpu, tpolicy->related_cpus)) {
9881010 read_unlock_irqrestore(&cpufreq_driver_lock, flags);
989− ret = cpufreq_add_policy_cpu(tpolicy, cpu, dev, frozen);
1011+ ret = cpufreq_add_policy_cpu(tpolicy, cpu, dev);
9901012 up_read(&cpufreq_rwsem);
9911013 return ret;
9921014 }
@@ -1096,7 +1118,10 @@ err_get_freq: · 103 unmodified lines
10961118 if (cpufreq_driver->exit)
10971119 cpufreq_driver->exit(policy);
10981120 err_set_policy_cpu:
1121+ if (frozen)
1122+ cpufreq_policy_put_kobj(policy);
10991123 cpufreq_policy_free(policy);
1124+
11001125 nomem_out:
11011126 up_read(&cpufreq_rwsem);
11021127
@@ -1118,7 +1143,7 @@ static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif) · 15 unmodified lines
11181143 }
11191144
11201145 static int cpufreq_nominate_new_policy_cpu(struct cpufreq_policy *policy,
1121− unsigned int old_cpu, bool frozen)
1146+ unsigned int old_cpu)
11221147 {
11231148 struct device *cpu_dev;
11241149 int ret;
@@ -1126,10 +1151,6 @@ static int cpufreq_nominate_new_policy_cpu(struct cpufreq_policy *policy, · 1 unmodified line
11261151 /* first sibling now owns the new sysfs dir */
11271152 cpu_dev = get_cpu_device(cpumask_any_but(policy->cpus, old_cpu));
11281153
1129− /* Don't touch sysfs files during light-weight tear-down */
1130− if (frozen)
1131− return cpu_dev->id;
1132−
11331154 sysfs_remove_link(&cpu_dev->kobj, "cpufreq");
11341155 ret = kobject_move(&policy->kobj, &cpu_dev->kobj);
11351156 if (ret) {
@@ -1196,7 +1217,7 @@ static int __cpufreq_remove_dev_prepare(struct device *dev, · 60 unmodified lines
11961217 if (!frozen)
11971218 sysfs_remove_link(&dev->kobj, "cpufreq");
11981219 } else if (cpus > 1) {
1199− new_cpu = cpufreq_nominate_new_policy_cpu(policy, cpu, frozen);
1220+ new_cpu = cpufreq_nominate_new_policy_cpu(policy, cpu);
12001221 if (new_cpu >= 0) {
12011222 update_policy_cpu(policy, new_cpu);
12021223
@@ -1218,8 +1239,6 @@ static int __cpufreq_remove_dev_finish(struct device *dev, · 15 unmodified lines
12181239 int ret;
12191240 unsigned long flags;
12201241 struct cpufreq_policy *policy;
1221− struct kobject *kobj;
1222− struct completion *cmp;
12231242
12241243 read_lock_irqsave(&cpufreq_driver_lock, flags);
12251244 policy = per_cpu(cpufreq_cpu_data, cpu);
@@ -1249,22 +1268,8 @@ static int __cpufreq_remove_dev_finish(struct device *dev, · 23 unmodified lines
12491268 }
12501269 }
12511270
1252− if (!frozen) {
1253− down_read(&policy->rwsem);
1254− kobj = &policy->kobj;
1255− cmp = &policy->kobj_unregister;
1256− up_read(&policy->rwsem);
1257− kobject_put(kobj);
1258−
1259− /*
1260− * We need to make sure that the underlying kobj is
1261− * actually not referenced anymore by anybody before we
1262− * proceed with unloading.
1263− */
1264− pr_debug("waiting for dropping of refcount\n");
1265− wait_for_completion(cmp);
1266− pr_debug("wait complete\n");
1267− }
1271+ if (!frozen)
1272+ cpufreq_policy_put_kobj(policy);
12681273
12691274 /*
12701275 * Perform the ->exit() even during light-weight tear-down,
drivers/dma/Kconfig+7−0
@@ -62,6 +62,7 @@ config INTEL_IOATDMA · 61 unmodified lines
6262 tristate "Intel I/OAT DMA support"
6363 depends on PCI && X86
6464 select DMA_ENGINE
65+ select DMA_ENGINE_RAID
6566 select DCA
6667 help
6768 Enable support for the Intel(R) I/OAT DMA engine present
@@ -112,6 +113,7 @@ config MV_XOR · 44 unmodified lines
112113 bool "Marvell XOR engine support"
113114 depends on PLAT_ORION
114115 select DMA_ENGINE
116+ select DMA_ENGINE_RAID
115117 select ASYNC_TX_ENABLE_CHANNEL_SWITCH
116118 ---help---
117119 Enable support for the Marvell XOR engine.
@@ -187,6 +189,7 @@ config AMCC_PPC440SPE_ADMA · 69 unmodified lines
187189 tristate "AMCC PPC440SPe ADMA support"
188190 depends on 440SPe || 440SP
189191 select DMA_ENGINE
192+ select DMA_ENGINE_RAID
190193 select ARCH_HAS_ASYNC_TX_FIND_CHANNEL
191194 select ASYNC_TX_ENABLE_CHANNEL_SWITCH
192195 help
@@ -352,6 +355,7 @@ config NET_DMA · 159 unmodified lines
352355 bool "Network: TCP receive copy offload"
353356 depends on DMA_ENGINE && NET
354357 default (INTEL_IOATDMA || FSL_DMA)
358+ depends on BROKEN
355359 help
356360 This enables the use of DMA engines in the network stack to
357361 offload receive copy-to-user operations, freeing CPU cycles.
@@ -377,4 +381,7 @@ config DMATEST · 19 unmodified lines
377381 Simple DMA test client. Say N unless you're debugging a
378382 DMA Device driver.
379383
384+config DMA_ENGINE_RAID
385+ bool
386+
380387 endif
drivers/dma/at_hdmac_regs.h+0−4
@@ -347,10 +347,6 @@ static struct device *chan2dev(struct dma_chan *chan) · 346 unmodified lines
347347 {
348348 return &chan->dev->device;
349349 }
350−static struct device *chan2parent(struct dma_chan *chan)
351−{
352− return chan->dev->device.parent;
353−}
354350
355351 #if defined(VERBOSE_DEBUG)
356352 static void vdbg_dump_regs(struct at_dma_chan *atchan)
drivers/dma/dmaengine.c+2−2
@@ -912,7 +912,7 @@ struct dmaengine_unmap_pool { · 911 unmodified lines
912912 #define __UNMAP_POOL(x) { .size = x, .name = "dmaengine-unmap-" __stringify(x) }
913913 static struct dmaengine_unmap_pool unmap_pool[] = {
914914 __UNMAP_POOL(2),
915− #if IS_ENABLED(CONFIG_ASYNC_TX_DMA)
915+ #if IS_ENABLED(CONFIG_DMA_ENGINE_RAID)
916916 __UNMAP_POOL(16),
917917 __UNMAP_POOL(128),
918918 __UNMAP_POOL(256),
@@ -1054,7 +1054,7 @@ dma_async_memcpy_pg_to_pg(struct dma_chan *chan, struct page *dest_pg, · 135 unmodified lines
10541054 dma_cookie_t cookie;
10551055 unsigned long flags;
10561056
1057− unmap = dmaengine_get_unmap_data(dev->dev, 2, GFP_NOIO);
1057+ unmap = dmaengine_get_unmap_data(dev->dev, 2, GFP_NOWAIT);
10581058 if (!unmap)
10591059 return -ENOMEM;
10601060
drivers/dma/dmatest.c+4−4
@@ -539,9 +539,9 @@ static int dmatest_func(void *data) · 538 unmodified lines
539539
540540 um->len = params->buf_size;
541541 for (i = 0; i < src_cnt; i++) {
542− unsigned long buf = (unsigned long) thread->srcs[i];
542+ void *buf = thread->srcs[i];
543543 struct page *pg = virt_to_page(buf);
544− unsigned pg_off = buf & ~PAGE_MASK;
544+ unsigned pg_off = (unsigned long) buf & ~PAGE_MASK;
545545
546546 um->addr[i] = dma_map_page(dev->dev, pg, pg_off,
547547 um->len, DMA_TO_DEVICE);
@@ -559,9 +559,9 @@ static int dmatest_func(void *data) · 11 unmodified lines
559559 /* map with DMA_BIDIRECTIONAL to force writeback/invalidate */
560560 dsts = &um->addr[src_cnt];
561561 for (i = 0; i < dst_cnt; i++) {
562− unsigned long buf = (unsigned long) thread->dsts[i];
562+ void *buf = thread->dsts[i];
563563 struct page *pg = virt_to_page(buf);
564− unsigned pg_off = buf & ~PAGE_MASK;
564+ unsigned pg_off = (unsigned long) buf & ~PAGE_MASK;
565565
566566 dsts[i] = dma_map_page(dev->dev, pg, pg_off, um->len,
567567 DMA_BIDIRECTIONAL);
drivers/dma/fsldma.c+1−30
@@ -86,11 +86,6 @@ static void set_desc_cnt(struct fsldma_chan *chan, · 85 unmodified lines
8686 hw->count = CPU_TO_DMA(chan, count, 32);
8787 }
8888
89−static u32 get_desc_cnt(struct fsldma_chan *chan, struct fsl_desc_sw *desc)
90−{
91− return DMA_TO_CPU(chan, desc->hw.count, 32);
92−}
93−
9489 static void set_desc_src(struct fsldma_chan *chan,
9590 struct fsl_dma_ld_hw *hw, dma_addr_t src)
9691 {
@@ -101,16 +96,6 @@ static void set_desc_src(struct fsldma_chan *chan, · 4 unmodified lines
10196 hw->src_addr = CPU_TO_DMA(chan, snoop_bits | src, 64);
10297 }
10398
104−static dma_addr_t get_desc_src(struct fsldma_chan *chan,
105− struct fsl_desc_sw *desc)
106−{
107− u64 snoop_bits;
108−
109− snoop_bits = ((chan->feature & FSL_DMA_IP_MASK) == FSL_DMA_IP_85XX)
110− ? ((u64)FSL_DMA_SATR_SREADTYPE_SNOOP_READ << 32) : 0;
111− return DMA_TO_CPU(chan, desc->hw.src_addr, 64) & ~snoop_bits;
112−}
113−
11499 static void set_desc_dst(struct fsldma_chan *chan,
115100 struct fsl_dma_ld_hw *hw, dma_addr_t dst)
116101 {
@@ -121,16 +106,6 @@ static void set_desc_dst(struct fsldma_chan *chan, · 4 unmodified lines
121106 hw->dst_addr = CPU_TO_DMA(chan, snoop_bits | dst, 64);
122107 }
123108
124−static dma_addr_t get_desc_dst(struct fsldma_chan *chan,
125− struct fsl_desc_sw *desc)
126−{
127− u64 snoop_bits;
128−
129− snoop_bits = ((chan->feature & FSL_DMA_IP_MASK) == FSL_DMA_IP_85XX)
130− ? ((u64)FSL_DMA_DATR_DWRITETYPE_SNOOP_WRITE << 32) : 0;
131− return DMA_TO_CPU(chan, desc->hw.dst_addr, 64) & ~snoop_bits;
132−}
133−
134109 static void set_desc_next(struct fsldma_chan *chan,
135110 struct fsl_dma_ld_hw *hw, dma_addr_t next)
136111 {
@@ -408,7 +383,7 @@ static dma_cookie_t fsl_dma_tx_submit(struct dma_async_tx_descriptor *tx) · 271 unmodified lines
408383 struct fsl_desc_sw *desc = tx_to_fsl_desc(tx);
409384 struct fsl_desc_sw *child;
410385 unsigned long flags;
411− dma_cookie_t cookie;
386+ dma_cookie_t cookie = -EINVAL;
412387
413388 spin_lock_irqsave(&chan->desc_lock, flags);
414389
@@ -854,10 +829,6 @@ static void fsldma_cleanup_descriptor(struct fsldma_chan *chan, · 439 unmodified lines
854829 struct fsl_desc_sw *desc)
855830 {
856831 struct dma_async_tx_descriptor *txd = &desc->async_tx;
857− struct device *dev = chan->common.device->dev;
858− dma_addr_t src = get_desc_src(chan, desc);
859− dma_addr_t dst = get_desc_dst(chan, desc);
860− u32 len = get_desc_cnt(chan, desc);
861832
862833 /* Run the link descriptor callback function */
863834 if (txd->callback) {
drivers/dma/mv_xor.c+63−38
@@ -54,12 +54,6 @@ static void mv_desc_init(struct mv_xor_desc_slot *desc, unsigned long flags) · 53 unmodified lines
5454 hw_desc->desc_command = (1 << 31);
5555 }
5656
57−static u32 mv_desc_get_dest_addr(struct mv_xor_desc_slot *desc)
58−{
59− struct mv_xor_desc *hw_desc = desc->hw_desc;
60− return hw_desc->phy_dest_addr;
61−}
62−
6357 static void mv_desc_set_byte_count(struct mv_xor_desc_slot *desc,
6458 u32 byte_count)
6559 {
@@ -787,7 +781,6 @@ static void mv_xor_issue_pending(struct dma_chan *chan) · 721 unmodified lines
787781 /*
788782 * Perform a transaction to verify the HW works.
789783 */
790−#define MV_XOR_TEST_SIZE 2000
791784
792785 static int mv_xor_memcpy_self_test(struct mv_xor_chan *mv_chan)
793786 {
@@ -797,20 +790,21 @@ static int mv_xor_memcpy_self_test(struct mv_xor_chan *mv_chan) · 3 unmodified lines
797790 struct dma_chan *dma_chan;
798791 dma_cookie_t cookie;
799792 struct dma_async_tx_descriptor *tx;
793+ struct dmaengine_unmap_data *unmap;
800794 int err = 0;
801795
802− src = kmalloc(sizeof(u8) * MV_XOR_TEST_SIZE, GFP_KERNEL);
796+ src = kmalloc(sizeof(u8) * PAGE_SIZE, GFP_KERNEL);
803797 if (!src)
804798 return -ENOMEM;
805799
806− dest = kzalloc(sizeof(u8) * MV_XOR_TEST_SIZE, GFP_KERNEL);
800+ dest = kzalloc(sizeof(u8) * PAGE_SIZE, GFP_KERNEL);
807801 if (!dest) {
808802 kfree(src);
809803 return -ENOMEM;
810804 }
811805
812806 /* Fill in src buffer */
813− for (i = 0; i < MV_XOR_TEST_SIZE; i++)
807+ for (i = 0; i < PAGE_SIZE; i++)
814808 ((u8 *) src)[i] = (u8)i;
815809
816810 dma_chan = &mv_chan->dmachan;
@@ -819,14 +813,26 @@ static int mv_xor_memcpy_self_test(struct mv_xor_chan *mv_chan) · 2 unmodified lines
819813 goto out;
820814 }
821815
822− dest_dma = dma_map_single(dma_chan->device->dev, dest,
823− MV_XOR_TEST_SIZE, DMA_FROM_DEVICE);
816+ unmap = dmaengine_get_unmap_data(dma_chan->device->dev, 2, GFP_KERNEL);
817+ if (!unmap) {
818+ err = -ENOMEM;
819+ goto free_resources;
820+ }
821+
822+ src_dma = dma_map_page(dma_chan->device->dev, virt_to_page(src), 0,
823+ PAGE_SIZE, DMA_TO_DEVICE);
824+ unmap->to_cnt = 1;
825+ unmap->addr[0] = src_dma;
824826
825− src_dma = dma_map_single(dma_chan->device->dev, src,
826− MV_XOR_TEST_SIZE, DMA_TO_DEVICE);
827+ dest_dma = dma_map_page(dma_chan->device->dev, virt_to_page(dest), 0,
828+ PAGE_SIZE, DMA_FROM_DEVICE);
829+ unmap->from_cnt = 1;
830+ unmap->addr[1] = dest_dma;
831+
832+ unmap->len = PAGE_SIZE;
827833
828834 tx = mv_xor_prep_dma_memcpy(dma_chan, dest_dma, src_dma,
829− MV_XOR_TEST_SIZE, 0);
835+ PAGE_SIZE, 0);
830836 cookie = mv_xor_tx_submit(tx);
831837 mv_xor_issue_pending(dma_chan);
832838 async_tx_ack(tx);
@@ -841,8 +847,8 @@ static int mv_xor_memcpy_self_test(struct mv_xor_chan *mv_chan) · 8 unmodified lines
841847 }
842848
843849 dma_sync_single_for_cpu(dma_chan->device->dev, dest_dma,
844− MV_XOR_TEST_SIZE, DMA_FROM_DEVICE);
845− if (memcmp(src, dest, MV_XOR_TEST_SIZE)) {
850+ PAGE_SIZE, DMA_FROM_DEVICE);
851+ if (memcmp(src, dest, PAGE_SIZE)) {
846852 dev_err(dma_chan->device->dev,
847853 "Self-test copy failed compare, disabling\n");
848854 err = -ENODEV;
@@ -850,6 +856,7 @@ static int mv_xor_memcpy_self_test(struct mv_xor_chan *mv_chan) · 1 unmodified line
850856 }
851857
852858 free_resources:
859+ dmaengine_unmap_put(unmap);
853860 mv_xor_free_chan_resources(dma_chan);
854861 out:
855862 kfree(src);
@@ -867,13 +874,15 @@ mv_xor_xor_self_test(struct mv_xor_chan *mv_chan) · 11 unmodified lines
867874 dma_addr_t dma_srcs[MV_XOR_NUM_SRC_TEST];
868875 dma_addr_t dest_dma;
869876 struct dma_async_tx_descriptor *tx;
877+ struct dmaengine_unmap_data *unmap;
870878 struct dma_chan *dma_chan;
871879 dma_cookie_t cookie;
872880 u8 cmp_byte = 0;
873881 u32 cmp_word;
874882 int err = 0;
883+ int src_count = MV_XOR_NUM_SRC_TEST;
875884
876− for (src_idx = 0; src_idx < MV_XOR_NUM_SRC_TEST; src_idx++) {
885+ for (src_idx = 0; src_idx < src_count; src_idx++) {
877886 xor_srcs[src_idx] = alloc_page(GFP_KERNEL);
878887 if (!xor_srcs[src_idx]) {
879888 while (src_idx--)
@@ -890,13 +899,13 @@ mv_xor_xor_self_test(struct mv_xor_chan *mv_chan) · 10 unmodified lines
890899 }
891900
892901 /* Fill in src buffers */
893− for (src_idx = 0; src_idx < MV_XOR_NUM_SRC_TEST; src_idx++) {
902+ for (src_idx = 0; src_idx < src_count; src_idx++) {
894903 u8 *ptr = page_address(xor_srcs[src_idx]);
895904 for (i = 0; i < PAGE_SIZE; i++)
896905 ptr[i] = (1 << src_idx);
897906 }
898907
899− for (src_idx = 0; src_idx < MV_XOR_NUM_SRC_TEST; src_idx++)
908+ for (src_idx = 0; src_idx < src_count; src_idx++)
900909 cmp_byte ^= (u8) (1 << src_idx);
901910
902911 cmp_word = (cmp_byte << 24) | (cmp_byte << 16) |
@@ -910,16 +919,29 @@ mv_xor_xor_self_test(struct mv_xor_chan *mv_chan) · 7 unmodified lines
910919 goto out;
911920 }
912921
922+ unmap = dmaengine_get_unmap_data(dma_chan->device->dev, src_count + 1,
923+ GFP_KERNEL);
924+ if (!unmap) {
925+ err = -ENOMEM;
926+ goto free_resources;
927+ }
928+
913929 /* test xor */
914− dest_dma = dma_map_page(dma_chan->device->dev, dest, 0, PAGE_SIZE,
915− DMA_FROM_DEVICE);
930+ for (i = 0; i < src_count; i++) {
931+ unmap->addr[i] = dma_map_page(dma_chan->device->dev, xor_srcs[i],
932+ 0, PAGE_SIZE, DMA_TO_DEVICE);
933+ dma_srcs[i] = unmap->addr[i];
934+ unmap->to_cnt++;
935+ }
916936
917− for (i = 0; i < MV_XOR_NUM_SRC_TEST; i++)
918− dma_srcs[i] = dma_map_page(dma_chan->device->dev, xor_srcs[i],
919− 0, PAGE_SIZE, DMA_TO_DEVICE);
937+ unmap->addr[src_count] = dma_map_page(dma_chan->device->dev, dest, 0, PAGE_SIZE,
938+ DMA_FROM_DEVICE);
939+ dest_dma = unmap->addr[src_count];
940+ unmap->from_cnt = 1;
941+ unmap->len = PAGE_SIZE;
920942
921943 tx = mv_xor_prep_dma_xor(dma_chan, dest_dma, dma_srcs,
922− MV_XOR_NUM_SRC_TEST, PAGE_SIZE, 0);
944+ src_count, PAGE_SIZE, 0);
923945
924946 cookie = mv_xor_tx_submit(tx);
925947 mv_xor_issue_pending(dma_chan);
@@ -948,9 +970,10 @@ mv_xor_xor_self_test(struct mv_xor_chan *mv_chan) · 22 unmodified lines
948970 }
949971
950972 free_resources:
973+ dmaengine_unmap_put(unmap);
951974 mv_xor_free_chan_resources(dma_chan);
952975 out:
953− src_idx = MV_XOR_NUM_SRC_TEST;
976+ src_idx = src_count;
954977 while (src_idx--)
955978 __free_page(xor_srcs[src_idx]);
956979 __free_page(dest);
@@ -1176,6 +1199,7 @@ static int mv_xor_probe(struct platform_device *pdev) · 219 unmodified lines
11761199 int i = 0;
11771200
11781201 for_each_child_of_node(pdev->dev.of_node, np) {
1202+ struct mv_xor_chan *chan;
11791203 dma_cap_mask_t cap_mask;
11801204 int irq;
11811205
@@ -1193,21 +1217,21 @@ static int mv_xor_probe(struct platform_device *pdev) · 11 unmodified lines
11931217 goto err_channel_add;
11941218 }
11951219
1196− xordev->channels[i] =
1197− mv_xor_channel_add(xordev, pdev, i,
1198− cap_mask, irq);
1199− if (IS_ERR(xordev->channels[i])) {
1200− ret = PTR_ERR(xordev->channels[i]);
1201− xordev->channels[i] = NULL;
1220+ chan = mv_xor_channel_add(xordev, pdev, i,
1221+ cap_mask, irq);
1222+ if (IS_ERR(chan)) {
1223+ ret = PTR_ERR(chan);
12021224 irq_dispose_mapping(irq);
12031225 goto err_channel_add;
12041226 }
12051227
1228+ xordev->channels[i] = chan;
12061229 i++;
12071230 }
12081231 } else if (pdata && pdata->channels) {
12091232 for (i = 0; i < MV_XOR_MAX_CHANNELS; i++) {
12101233 struct mv_xor_channel_data *cd;
1234+ struct mv_xor_chan *chan;
12111235 int irq;
12121236
12131237 cd = &pdata->channels[i];
@@ -1222,13 +1246,14 @@ static int mv_xor_probe(struct platform_device *pdev) · 8 unmodified lines
12221246 goto err_channel_add;
12231247 }
12241248
1225− xordev->channels[i] =
1226− mv_xor_channel_add(xordev, pdev, i,
1227− cd->cap_mask, irq);
1228− if (IS_ERR(xordev->channels[i])) {
1229− ret = PTR_ERR(xordev->channels[i]);
1249+ chan = mv_xor_channel_add(xordev, pdev, i,
1250+ cd->cap_mask, irq);
1251+ if (IS_ERR(chan)) {
1252+ ret = PTR_ERR(chan);
12301253 goto err_channel_add;
12311254 }
1255+
1256+ xordev->channels[i] = chan;
12321257 }
12331258 }
12341259
drivers/dma/pl330.c+1−4
@@ -2492,12 +2492,9 @@ static dma_cookie_t pl330_tx_submit(struct dma_async_tx_descriptor *tx) · 2491 unmodified lines
24922492
24932493 static inline void _init_desc(struct dma_pl330_desc *desc)
24942494 {
2495− desc->pchan = NULL;
24962495 desc->req.x = &desc->px;
24972496 desc->req.token = desc;
24982497 desc->rqcfg.swap = SWAP_NO;
2499− desc->rqcfg.privileged = 0;
2500− desc->rqcfg.insnaccess = 0;
25012498 desc->rqcfg.scctl = SCCTRL0;
25022499 desc->rqcfg.dcctl = DCCTRL0;
25032500 desc->req.cfg = &desc->rqcfg;
@@ -2517,7 +2514,7 @@ static int add_desc(struct dma_pl330_dmac *pdmac, gfp_t flg, int count) · 13 unmodified lines
25172514 if (!pdmac)
25182515 return 0;
25192516
2520− desc = kmalloc(count * sizeof(*desc), flg);
2517+ desc = kcalloc(count, sizeof(*desc), flg);
25212518 if (!desc)
25222519 return 0;
25232520
drivers/dma/ppc4xx/adma.c+1−26
@@ -532,29 +532,6 @@ static void ppc440spe_desc_init_memcpy(struct ppc440spe_adma_desc_slot *desc, · 531 unmodified lines
532532 hw_desc->opc = DMA_CDB_OPC_MV_SG1_SG2;
533533 }
534534
535−/**
536− * ppc440spe_desc_init_memset - initialize the descriptor for MEMSET operation
537− */
538−static void ppc440spe_desc_init_memset(struct ppc440spe_adma_desc_slot *desc,
539− int value, unsigned long flags)
540−{
541− struct dma_cdb *hw_desc = desc->hw_desc;
542−
543− memset(desc->hw_desc, 0, sizeof(struct dma_cdb));
544− desc->hw_next = NULL;
545− desc->src_cnt = 1;
546− desc->dst_cnt = 1;
547−
548− if (flags & DMA_PREP_INTERRUPT)
549− set_bit(PPC440SPE_DESC_INT, &desc->flags);
550− else
551− clear_bit(PPC440SPE_DESC_INT, &desc->flags);
552−
553− hw_desc->sg1u = hw_desc->sg1l = cpu_to_le32((u32)value);
554− hw_desc->sg3u = hw_desc->sg3l = cpu_to_le32((u32)value);
555− hw_desc->opc = DMA_CDB_OPC_DFILL128;
556−}
557−
558535 /**
559536 * ppc440spe_desc_set_src_addr - set source address into the descriptor
560537 */
@@ -1504,8 +1481,6 @@ static dma_cookie_t ppc440spe_adma_run_tx_complete_actions( · 943 unmodified lines
15041481 struct ppc440spe_adma_chan *chan,
15051482 dma_cookie_t cookie)
15061483 {
1507− int i;
1508−
15091484 BUG_ON(desc->async_tx.cookie < 0);
15101485 if (desc->async_tx.cookie > 0) {
15111486 cookie = desc->async_tx.cookie;
@@ -3898,7 +3873,7 @@ static void ppc440spe_adma_init_capabilities(struct ppc440spe_adma_device *adev) · 2386 unmodified lines
38983873 ppc440spe_adma_prep_dma_interrupt;
38993874 }
39003875 pr_info("%s: AMCC(R) PPC440SP(E) ADMA Engine: "
3901− "( %s%s%s%s%s%s%s)\n",
3876+ "( %s%s%s%s%s%s)\n",
39023877 dev_name(adev->dev),
39033878 dma_has_cap(DMA_PQ, adev->common.cap_mask) ? "pq " : "",
39043879 dma_has_cap(DMA_PQ_VAL, adev->common.cap_mask) ? "pq_val " : "",
drivers/dma/txx9dmac.c+0−1
@@ -406,7 +406,6 @@ txx9dmac_descriptor_complete(struct txx9dmac_chan *dc, · 405 unmodified lines
406406 dma_async_tx_callback callback;
407407 void *param;
408408 struct dma_async_tx_descriptor *txd = &desc->txd;
409− struct txx9dmac_slave *ds = dc->chan.private;
410409
411410 dev_vdbg(chan2dev(&dc->chan), "descriptor %u %p complete\n",
412411 txd->cookie, desc);
drivers/firewire/sbp2.c+0−1
@@ -1623,7 +1623,6 @@ static struct scsi_host_template scsi_driver_template = { · 1622 unmodified lines
16231623 .cmd_per_lun = 1,
16241624 .can_queue = 1,
16251625 .sdev_attrs = sbp2_scsi_sysfs_attrs,
1626− .no_write_same = 1,
16271626 };
16281627
16291628 MODULE_AUTHOR("Kristian Hoegsberg <krh@bitplanet.net>");
drivers/firmware/Makefile+1−0
@@ -14,3 +14,4 @@ obj-$(CONFIG_FIRMWARE_MEMMAP) += memmap.o · 13 unmodified lines
1414
1515 obj-$(CONFIG_GOOGLE_FIRMWARE) += google/
1616 obj-$(CONFIG_EFI) += efi/
17+obj-$(CONFIG_UEFI_CPER) += efi/
drivers/firmware/efi/Kconfig+3−3
@@ -36,7 +36,7 @@ config EFI_VARS_PSTORE_DEFAULT_DISABLE · 35 unmodified lines
3636 backend for pstore by default. This setting can be overridden
3737 using the efivars module's pstore_disable parameter.
3838
39−config UEFI_CPER
40− def_bool n
41−
4239 endmenu
40+
41+config UEFI_CPER
42+ bool
drivers/firmware/efi/Makefile+1−1
@@ -1,7 +1,7 @@
11 #
22 # Makefile for linux kernel
33 #
4−obj-y += efi.o vars.o
4+obj-$(CONFIG_EFI) += efi.o vars.o
55 obj-$(CONFIG_EFI_VARS) += efivars.o
66 obj-$(CONFIG_EFI_VARS_PSTORE) += efi-pstore.o
77 obj-$(CONFIG_UEFI_CPER) += cper.o
drivers/firmware/efi/efi-pstore.c+1−0
@@ -356,6 +356,7 @@ static int efi_pstore_erase(enum pstore_type_id type, u64 id, int count, · 355 unmodified lines
356356 static struct pstore_info efi_pstore_info = {
357357 .owner = THIS_MODULE,
358358 .name = "efi",
359+ .flags = PSTORE_FLAGS_FRAGILE,
359360 .open = efi_pstore_open,
360361 .close = efi_pstore_close,
361362 .read = efi_pstore_read,
drivers/gpio/gpio-msm-v2.c+2−2
@@ -252,7 +252,7 @@ static void msm_gpio_irq_mask(struct irq_data *d) · 251 unmodified lines
252252
253253 spin_lock_irqsave(&tlmm_lock, irq_flags);
254254 writel(TARGET_PROC_NONE, GPIO_INTR_CFG_SU(gpio));
255− clear_gpio_bits(INTR_RAW_STATUS_EN | INTR_ENABLE, GPIO_INTR_CFG(gpio));
255+ clear_gpio_bits(BIT(INTR_RAW_STATUS_EN) | BIT(INTR_ENABLE), GPIO_INTR_CFG(gpio));
256256 __clear_bit(gpio, msm_gpio.enabled_irqs);
257257 spin_unlock_irqrestore(&tlmm_lock, irq_flags);
258258 }
@@ -264,7 +264,7 @@ static void msm_gpio_irq_unmask(struct irq_data *d) · 5 unmodified lines
264264
265265 spin_lock_irqsave(&tlmm_lock, irq_flags);
266266 __set_bit(gpio, msm_gpio.enabled_irqs);
267− set_gpio_bits(INTR_RAW_STATUS_EN | INTR_ENABLE, GPIO_INTR_CFG(gpio));
267+ set_gpio_bits(BIT(INTR_RAW_STATUS_EN) | BIT(INTR_ENABLE), GPIO_INTR_CFG(gpio));
268268 writel(TARGET_PROC_SCORPION, GPIO_INTR_CFG_SU(gpio));
269269 spin_unlock_irqrestore(&tlmm_lock, irq_flags);
270270 }
drivers/gpio/gpio-rcar.c+2−1
@@ -169,7 +169,8 @@ static irqreturn_t gpio_rcar_irq_handler(int irq, void *dev_id) · 168 unmodified lines
169169 u32 pending;
170170 unsigned int offset, irqs_handled = 0;
171171
172− while ((pending = gpio_rcar_read(p, INTDT))) {
172+ while ((pending = gpio_rcar_read(p, INTDT) &
173+ gpio_rcar_read(p, INTMSK))) {
173174 offset = __ffs(pending);
174175 gpio_rcar_write(p, INTCLR, BIT(offset));
175176 generic_handle_irq(irq_find_mapping(p->irq_domain, offset));
drivers/gpio/gpio-twl4030.c+12−3
@@ -300,7 +300,7 @@ static int twl_direction_in(struct gpio_chip *chip, unsigned offset) · 299 unmodified lines
300300 if (offset < TWL4030_GPIO_MAX)
301301 ret = twl4030_set_gpio_direction(offset, 1);
302302 else
303− ret = -EINVAL;
303+ ret = -EINVAL; /* LED outputs can't be set as input */
304304
305305 if (!ret)
306306 priv->direction &= ~BIT(offset);
@@ -354,11 +354,20 @@ static void twl_set(struct gpio_chip *chip, unsigned offset, int value) · 47 unmodified lines
354354 static int twl_direction_out(struct gpio_chip *chip, unsigned offset, int value)
355355 {
356356 struct gpio_twl4030_priv *priv = to_gpio_twl4030(chip);
357− int ret = -EINVAL;
357+ int ret = 0;
358358
359359 mutex_lock(&priv->mutex);
360− if (offset < TWL4030_GPIO_MAX)
360+ if (offset < TWL4030_GPIO_MAX) {
361361 ret = twl4030_set_gpio_direction(offset, 0);
362+ if (ret) {
363+ mutex_unlock(&priv->mutex);
364+ return ret;
365+ }
366+ }
367+
368+ /*
369+ * LED gpios i.e. offset >= TWL4030_GPIO_MAX are always output
370+ */
362371
363372 priv->direction |= BIT(offset);
364373 mutex_unlock(&priv->mutex);
drivers/gpu/drm/armada/armada_drm.h+1−0
@@ -103,6 +103,7 @@ void armada_drm_queue_unref_work(struct drm_device *, · 102 unmodified lines
103103 extern const struct drm_mode_config_funcs armada_drm_mode_config_funcs;
104104
105105 int armada_fbdev_init(struct drm_device *);
106+void armada_fbdev_lastclose(struct drm_device *);
106107 void armada_fbdev_fini(struct drm_device *);
107108
108109 int armada_overlay_plane_create(struct drm_device *, unsigned long);
drivers/gpu/drm/armada/armada_drv.c+6−1
@@ -321,6 +321,11 @@ static struct drm_ioctl_desc armada_ioctls[] = { · 320 unmodified lines
321321 DRM_UNLOCKED),
322322 };
323323
324+static void armada_drm_lastclose(struct drm_device *dev)
325+{
326+ armada_fbdev_lastclose(dev);
327+}
328+
324329 static const struct file_operations armada_drm_fops = {
325330 .owner = THIS_MODULE,
326331 .llseek = no_llseek,
@@ -337,7 +342,7 @@ static struct drm_driver armada_drm_driver = { · 10 unmodified lines
337342 .open = NULL,
338343 .preclose = NULL,
339344 .postclose = NULL,
340− .lastclose = NULL,
345+ .lastclose = armada_drm_lastclose,
341346 .unload = armada_drm_unload,
342347 .get_vblank_counter = drm_vblank_count,
343348 .enable_vblank = armada_drm_enable_vblank,
drivers/gpu/drm/armada/armada_fbdev.c+15−5
@@ -105,9 +105,9 @@ static int armada_fb_create(struct drm_fb_helper *fbh, · 104 unmodified lines
105105 drm_fb_helper_fill_fix(info, dfb->fb.pitches[0], dfb->fb.depth);
106106 drm_fb_helper_fill_var(info, fbh, sizes->fb_width, sizes->fb_height);
107107
108− DRM_DEBUG_KMS("allocated %dx%d %dbpp fb: 0x%08x\n",
109− dfb->fb.width, dfb->fb.height,
110− dfb->fb.bits_per_pixel, obj->phys_addr);
108+ DRM_DEBUG_KMS("allocated %dx%d %dbpp fb: 0x%08llx\n",
109+ dfb->fb.width, dfb->fb.height, dfb->fb.bits_per_pixel,
110+ (unsigned long long)obj->phys_addr);
111111
112112 return 0;
113113
@@ -177,6 +177,16 @@ int armada_fbdev_init(struct drm_device *dev) · 63 unmodified lines
177177 return ret;
178178 }
179179
180+void armada_fbdev_lastclose(struct drm_device *dev)
181+{
182+ struct armada_private *priv = dev->dev_private;
183+
184+ drm_modeset_lock_all(dev);
185+ if (priv->fbdev)
186+ drm_fb_helper_restore_fbdev_mode(priv->fbdev);
187+ drm_modeset_unlock_all(dev);
188+}
189+
180190 void armada_fbdev_fini(struct drm_device *dev)
181191 {
182192 struct armada_private *priv = dev->dev_private;
@@ -192,11 +202,11 @@ void armada_fbdev_fini(struct drm_device *dev) · 9 unmodified lines
192202 framebuffer_release(info);
193203 }
194204
205+ drm_fb_helper_fini(fbh);
206+
195207 if (fbh->fb)
196208 fbh->fb->funcs->destroy(fbh->fb);
197209
198− drm_fb_helper_fini(fbh);
199−
200210 priv->fbdev = NULL;
201211 }
202212 }
drivers/gpu/drm/armada/armada_gem.c+4−3
@@ -172,8 +172,9 @@ armada_gem_linear_back(struct drm_device *dev, struct armada_gem_object *obj) · 171 unmodified lines
172172 obj->dev_addr = obj->linear->start;
173173 }
174174
175− DRM_DEBUG_DRIVER("obj %p phys %#x dev %#x\n",
176− obj, obj->phys_addr, obj->dev_addr);
175+ DRM_DEBUG_DRIVER("obj %p phys %#llx dev %#llx\n", obj,
176+ (unsigned long long)obj->phys_addr,
177+ (unsigned long long)obj->dev_addr);
177178
178179 return 0;
179180 }
@@ -557,7 +558,6 @@ armada_gem_prime_import(struct drm_device *dev, struct dma_buf *buf) · 377 unmodified lines
557558 * refcount on the gem object itself.
558559 */
559560 drm_gem_object_reference(obj);
560− dma_buf_put(buf);
561561 return obj;
562562 }
563563 }
@@ -573,6 +573,7 @@ armada_gem_prime_import(struct drm_device *dev, struct dma_buf *buf) · 9 unmodified lines
573573 }
574574
575575 dobj->obj.import_attach = attach;
576+ get_dma_buf(buf);
576577
577578 /*
578579 * Don't call dma_buf_map_attachment() here - it maps the
drivers/gpu/drm/drm_edid.c+8−0
@@ -68,6 +68,8 @@ · 67 unmodified lines
6868 #define EDID_QUIRK_DETAILED_SYNC_PP (1 << 6)
6969 /* Force reduced-blanking timings for detailed modes */
7070 #define EDID_QUIRK_FORCE_REDUCED_BLANKING (1 << 7)
71+/* Force 8bpc */
72+#define EDID_QUIRK_FORCE_8BPC (1 << 8)
7173
7274 struct detailed_mode_closure {
7375 struct drm_connector *connector;
@@ -128,6 +130,9 @@ static struct edid_quirk { · 54 unmodified lines
128130
129131 /* Medion MD 30217 PG */
130132 { "MED", 0x7b8, EDID_QUIRK_PREFER_LARGE_75 },
133+
134+ /* Panel in Samsung NP700G7A-S01PL notebook reports 6bpc */
135+ { "SEC", 0xd033, EDID_QUIRK_FORCE_8BPC },
131136 };
132137
133138 /*
@@ -3435,6 +3440,9 @@ int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid) · 3301 unmodified lines
34353440
34363441 drm_add_display_info(edid, &connector->display_info);
34373442
3443+ if (quirks & EDID_QUIRK_FORCE_8BPC)
3444+ connector->display_info.bpc = 8;
3445+
34383446 return num_modes;
34393447 }
34403448 EXPORT_SYMBOL(drm_add_edid_modes);
drivers/gpu/drm/drm_stub.c+3−3
@@ -566,11 +566,11 @@ err_unload: · 565 unmodified lines
566566 if (dev->driver->unload)
567567 dev->driver->unload(dev);
568568 err_primary_node:
569− drm_put_minor(dev->primary);
569+ drm_unplug_minor(dev->primary);
570570 err_render_node:
571− drm_put_minor(dev->render);
571+ drm_unplug_minor(dev->render);
572572 err_control_node:
573− drm_put_minor(dev->control);
573+ drm_unplug_minor(dev->control);
574574 err_agp:
575575 if (dev->driver->bus->agp_destroy)
576576 dev->driver->bus->agp_destroy(dev);
drivers/gpu/drm/i915/i915_dma.c+11−9
@@ -83,6 +83,14 @@ void i915_update_dri1_breadcrumb(struct drm_device *dev) · 82 unmodified lines
8383 drm_i915_private_t *dev_priv = dev->dev_private;
8484 struct drm_i915_master_private *master_priv;
8585
86+ /*
87+ * The dri breadcrumb update races against the drm master disappearing.
88+ * Instead of trying to fix this (this is by far not the only ums issue)
89+ * just don't do the update in kms mode.
90+ */
91+ if (drm_core_check_feature(dev, DRIVER_MODESET))
92+ return;
93+
8694 if (dev->primary->master) {
8795 master_priv = dev->primary->master->driver_priv;
8896 if (master_priv->sarea_priv)
@@ -1490,16 +1498,9 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) · 1401 unmodified lines
14901498 spin_lock_init(&dev_priv->uncore.lock);
14911499 spin_lock_init(&dev_priv->mm.object_stat_lock);
14921500 mutex_init(&dev_priv->dpio_lock);
1493− mutex_init(&dev_priv->rps.hw_lock);
14941501 mutex_init(&dev_priv->modeset_restore_lock);
14951502
1496− mutex_init(&dev_priv->pc8.lock);
1497− dev_priv->pc8.requirements_met = false;
1498− dev_priv->pc8.gpu_idle = false;
1499− dev_priv->pc8.irqs_disabled = false;
1500− dev_priv->pc8.enabled = false;
1501− dev_priv->pc8.disable_count = 2; /* requirements_met + gpu_idle */
1502− INIT_DELAYED_WORK(&dev_priv->pc8.enable_work, hsw_enable_pc8_work);
1503+ intel_pm_setup(dev);
15031504
15041505 intel_display_crc_init(dev);
15051506
@@ -1603,7 +1604,6 @@ int i915_driver_load(struct drm_device *dev, unsigned long flags) · 97 unmodified lines
16031604 }
16041605
16051606 intel_irq_init(dev);
1606− intel_pm_init(dev);
16071607 intel_uncore_sanitize(dev);
16081608
16091609 /* Try to make sure MCHBAR is enabled before poking at it */
@@ -1848,8 +1848,10 @@ void i915_driver_lastclose(struct drm_device * dev) · 238 unmodified lines
18481848
18491849 void i915_driver_preclose(struct drm_device * dev, struct drm_file *file_priv)
18501850 {
1851+ mutex_lock(&dev->struct_mutex);
18511852 i915_gem_context_close(dev, file_priv);
18521853 i915_gem_release(dev, file_priv);
1854+ mutex_unlock(&dev->struct_mutex);
18531855 }
18541856
18551857 void i915_driver_postclose(struct drm_device *dev, struct drm_file *file)
drivers/gpu/drm/i915/i915_drv.c+1−0
@@ -651,6 +651,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool restore_gtt_mappings) · 650 unmodified lines
651651 intel_modeset_init_hw(dev);
652652
653653 drm_modeset_lock_all(dev);
654+ drm_mode_config_reset(dev);
654655 intel_modeset_setup_hw_state(dev, true);
655656 drm_modeset_unlock_all(dev);
656657
drivers/gpu/drm/i915/i915_drv.h+6−3
@@ -1755,8 +1755,13 @@ struct drm_i915_file_private { · 1754 unmodified lines
17551755 #define IS_MOBILE(dev) (INTEL_INFO(dev)->is_mobile)
17561756 #define IS_HSW_EARLY_SDV(dev) (IS_HASWELL(dev) && \
17571757 ((dev)->pdev->device & 0xFF00) == 0x0C00)
1758−#define IS_ULT(dev) (IS_HASWELL(dev) && \
1758+#define IS_BDW_ULT(dev) (IS_BROADWELL(dev) && \
1759+ (((dev)->pdev->device & 0xf) == 0x2 || \
1760+ ((dev)->pdev->device & 0xf) == 0x6 || \
1761+ ((dev)->pdev->device & 0xf) == 0xe))
1762+#define IS_HSW_ULT(dev) (IS_HASWELL(dev) && \
17591763 ((dev)->pdev->device & 0xFF00) == 0x0A00)
1764+#define IS_ULT(dev) (IS_HSW_ULT(dev) || IS_BDW_ULT(dev))
17601765 #define IS_HSW_GT3(dev) (IS_HASWELL(dev) && \
17611766 ((dev)->pdev->device & 0x00F0) == 0x0020)
17621767 #define IS_PRELIMINARY_HW(intel_info) ((intel_info)->is_preliminary)
@@ -1901,9 +1906,7 @@ void i915_queue_hangcheck(struct drm_device *dev); · 138 unmodified lines
19011906 void i915_handle_error(struct drm_device *dev, bool wedged);
19021907
19031908 extern void intel_irq_init(struct drm_device *dev);
1904−extern void intel_pm_init(struct drm_device *dev);
19051909 extern void intel_hpd_init(struct drm_device *dev);
1906−extern void intel_pm_init(struct drm_device *dev);
19071910
19081911 extern void intel_uncore_sanitize(struct drm_device *dev);
19091912 extern void intel_uncore_early_sanitize(struct drm_device *dev);
drivers/gpu/drm/i915/i915_gem.c+24−10
@@ -2343,15 +2343,24 @@ static void i915_gem_free_request(struct drm_i915_gem_request *request) · 2342 unmodified lines
23432343 kfree(request);
23442344 }
23452345
2346−static void i915_gem_reset_ring_lists(struct drm_i915_private *dev_priv,
2347− struct intel_ring_buffer *ring)
2346+static void i915_gem_reset_ring_status(struct drm_i915_private *dev_priv,
2347+ struct intel_ring_buffer *ring)
23482348 {
2349− u32 completed_seqno;
2350− u32 acthd;
2349+ u32 completed_seqno = ring->get_seqno(ring, false);
2350+ u32 acthd = intel_ring_get_active_head(ring);
2351+ struct drm_i915_gem_request *request;
2352+
2353+ list_for_each_entry(request, &ring->request_list, list) {
2354+ if (i915_seqno_passed(completed_seqno, request->seqno))
2355+ continue;
23512356
2352− acthd = intel_ring_get_active_head(ring);
2353− completed_seqno = ring->get_seqno(ring, false);
2357+ i915_set_reset_status(ring, request, acthd);
2358+ }
2359+}
23542360
2361+static void i915_gem_reset_ring_cleanup(struct drm_i915_private *dev_priv,
2362+ struct intel_ring_buffer *ring)
2363+{
23552364 while (!list_empty(&ring->request_list)) {
23562365 struct drm_i915_gem_request *request;
23572366
@@ -2359,9 +2368,6 @@ static void i915_gem_reset_ring_lists(struct drm_i915_private *dev_priv, · 1 unmodified line
23592368 struct drm_i915_gem_request,
23602369 list);
23612370
2362− if (request->seqno > completed_seqno)
2363− i915_set_reset_status(ring, request, acthd);
2364−
23652371 i915_gem_free_request(request);
23662372 }
23672373
@@ -2403,8 +2409,16 @@ void i915_gem_reset(struct drm_device *dev) · 35 unmodified lines
24032409 struct intel_ring_buffer *ring;
24042410 int i;
24052411
2412+ /*
2413+ * Before we free the objects from the requests, we need to inspect
2414+ * them for finding the guilty party. As the requests only borrow
2415+ * their reference to the objects, the inspection must be done first.
2416+ */
2417+ for_each_ring(ring, dev_priv, i)
2418+ i915_gem_reset_ring_status(dev_priv, ring);
2419+
24062420 for_each_ring(ring, dev_priv, i)
2407− i915_gem_reset_ring_lists(dev_priv, ring);
2421+ i915_gem_reset_ring_cleanup(dev_priv, ring);
24082422
24092423 i915_gem_cleanup_ringbuffer(dev);
24102424
drivers/gpu/drm/i915/i915_gem_context.c+12−4
@@ -347,10 +347,8 @@ void i915_gem_context_close(struct drm_device *dev, struct drm_file *file) · 346 unmodified lines
347347 {
348348 struct drm_i915_file_private *file_priv = file->driver_priv;
349349
350− mutex_lock(&dev->struct_mutex);
351350 idr_for_each(&file_priv->context_idr, context_idr_cleanup, NULL);
352351 idr_destroy(&file_priv->context_idr);
353− mutex_unlock(&dev->struct_mutex);
354352 }
355353
356354 static struct i915_hw_context *
@@ -423,11 +421,21 @@ static int do_switch(struct i915_hw_context *to) · 66 unmodified lines
423421 if (ret)
424422 return ret;
425423
426− /* Clear this page out of any CPU caches for coherent swap-in/out. Note
424+ /*
425+ * Pin can switch back to the default context if we end up calling into
426+ * evict_everything - as a last ditch gtt defrag effort that also
427+ * switches to the default context. Hence we need to reload from here.
428+ */
429+ from = ring->last_context;
430+
431+ /*
432+ * Clear this page out of any CPU caches for coherent swap-in/out. Note
427433 * that thanks to write = false in this call and us not setting any gpu
428434 * write domains when putting a context object onto the active list
429435 * (when switching away from it), this won't block.
430− * XXX: We need a real interface to do this instead of trickery. */
436+ *
437+ * XXX: We need a real interface to do this instead of trickery.
438+ */
431439 ret = i915_gem_object_set_to_gtt_domain(to->obj, false);
432440 if (ret) {
433441 i915_gem_object_unpin(to->obj);
drivers/gpu/drm/i915/i915_gem_evict.c+11−3
@@ -88,6 +88,7 @@ i915_gem_evict_something(struct drm_device *dev, struct i915_address_space *vm, · 87 unmodified lines
8888 } else
8989 drm_mm_init_scan(&vm->mm, min_size, alignment, cache_level);
9090
91+search_again:
9192 /* First see if there is a large enough contiguous idle region... */
9293 list_for_each_entry(vma, &vm->inactive_list, mm_list) {
9394 if (mark_free(vma, &unwind_list))
@@ -115,10 +116,17 @@ none: · 21 unmodified lines
115116 list_del_init(&vma->exec_list);
116117 }
117118
118− /* We expect the caller to unpin, evict all and try again, or give up.
119− * So calling i915_gem_evict_vm() is unnecessary.
119+ /* Can we unpin some objects such as idle hw contents,
120+ * or pending flips?
120121 */
121− return -ENOSPC;
122+ ret = nonblocking ? -ENOSPC : i915_gpu_idle(dev);
123+ if (ret)
124+ return ret;
125+
126+ /* Only idle the GPU and repeat the search once */
127+ i915_gem_retire_requests(dev);
128+ nonblocking = true;
129+ goto search_again;
122130
123131 found:
124132 /* drm_mm doesn't allow any other other operations while
drivers/gpu/drm/i915/i915_gem_execbuffer.c+20−8
@@ -93,7 +93,7 @@ eb_lookup_vmas(struct eb_vmas *eb, · 92 unmodified lines
9393 {
9494 struct drm_i915_gem_object *obj;
9595 struct list_head objects;
96− int i, ret = 0;
96+ int i, ret;
9797
9898 INIT_LIST_HEAD(&objects);
9999 spin_lock(&file->table_lock);
@@ -106,7 +106,7 @@ eb_lookup_vmas(struct eb_vmas *eb, · 6 unmodified lines
106106 DRM_DEBUG("Invalid object handle %d at index %d\n",
107107 exec[i].handle, i);
108108 ret = -ENOENT;
109− goto out;
109+ goto err;
110110 }
111111
112112 if (!list_empty(&obj->obj_exec_link)) {
@@ -114,7 +114,7 @@ eb_lookup_vmas(struct eb_vmas *eb, · 1 unmodified line
114114 DRM_DEBUG("Object %p [handle %d, index %d] appears more than once in object list\n",
115115 obj, exec[i].handle, i);
116116 ret = -EINVAL;
117− goto out;
117+ goto err;
118118 }
119119
120120 drm_gem_object_reference(&obj->base);
@@ -123,9 +123,13 @@ eb_lookup_vmas(struct eb_vmas *eb, · 2 unmodified lines
123123 spin_unlock(&file->table_lock);
124124
125125 i = 0;
126− list_for_each_entry(obj, &objects, obj_exec_link) {
126+ while (!list_empty(&objects)) {
127127 struct i915_vma *vma;
128128
129+ obj = list_first_entry(&objects,
130+ struct drm_i915_gem_object,
131+ obj_exec_link);
132+
129133 /*
130134 * NOTE: We can leak any vmas created here when something fails
131135 * later on. But that's no issue since vma_unbind can deal with
@@ -138,10 +142,12 @@ eb_lookup_vmas(struct eb_vmas *eb, · 6 unmodified lines
138142 if (IS_ERR(vma)) {
139143 DRM_DEBUG("Failed to lookup VMA\n");
140144 ret = PTR_ERR(vma);
141− goto out;
145+ goto err;
142146 }
143147
148+ /* Transfer ownership from the objects list to the vmas list. */
144149 list_add_tail(&vma->exec_list, &eb->vmas);
150+ list_del_init(&obj->obj_exec_link);
145151
146152 vma->exec_entry = &exec[i];
147153 if (eb->and < 0) {
@@ -155,16 +161,22 @@ eb_lookup_vmas(struct eb_vmas *eb, · 7 unmodified lines
155161 ++i;
156162 }
157163
164+ return 0;
165+
158166
159−out:
167+err:
160168 while (!list_empty(&objects)) {
161169 obj = list_first_entry(&objects,
162170 struct drm_i915_gem_object,
163171 obj_exec_link);
164172 list_del_init(&obj->obj_exec_link);
165− if (ret)
166− drm_gem_object_unreference(&obj->base);
173+ drm_gem_object_unreference(&obj->base);
167174 }
175+ /*
176+ * Objects already transfered to the vmas list will be unreferenced by
177+ * eb_destroy.
178+ */
179+
168180 return ret;
169181 }
170182
drivers/gpu/drm/i915/i915_gem_gtt.c+7−2
@@ -337,8 +337,8 @@ static void gen8_ppgtt_cleanup(struct i915_address_space *vm) · 336 unmodified lines
337337 kfree(ppgtt->gen8_pt_dma_addr[i]);
338338 }
339339
340− __free_pages(ppgtt->gen8_pt_pages, ppgtt->num_pt_pages << PAGE_SHIFT);
341− __free_pages(ppgtt->pd_pages, ppgtt->num_pd_pages << PAGE_SHIFT);
340+ __free_pages(ppgtt->gen8_pt_pages, get_order(ppgtt->num_pt_pages << PAGE_SHIFT));
341+ __free_pages(ppgtt->pd_pages, get_order(ppgtt->num_pd_pages << PAGE_SHIFT));
342342 }
343343
344344 /**
@@ -1241,6 +1241,11 @@ static inline unsigned int gen8_get_total_gtt_size(u16 bdw_gmch_ctl) · 896 unmodified lines
12411241 bdw_gmch_ctl &= BDW_GMCH_GGMS_MASK;
12421242 if (bdw_gmch_ctl)
12431243 bdw_gmch_ctl = 1 << bdw_gmch_ctl;
1244+ if (bdw_gmch_ctl > 4) {
1245+ WARN_ON(!i915_preliminary_hw_support);
1246+ return 4<<20;
1247+ }
1248+
12441249 return bdw_gmch_ctl << 20;
12451250 }
12461251
drivers/gpu/drm/i915/intel_display.c+8−6
@@ -6303,7 +6303,7 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv) · 6302 unmodified lines
63036303 uint32_t val;
63046304
63056305 list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head)
6306− WARN(crtc->base.enabled, "CRTC for pipe %c enabled\n",
6306+ WARN(crtc->active, "CRTC for pipe %c enabled\n",
63076307 pipe_name(crtc->pipe));
63086308
63096309 WARN(I915_READ(HSW_PWR_WELL_DRIVER), "Power well on\n");
@@ -9135,7 +9135,7 @@ intel_pipe_config_compare(struct drm_device *dev, · 2825 unmodified lines
91359135 if (IS_G4X(dev) || INTEL_INFO(dev)->gen >= 5)
91369136 PIPE_CONF_CHECK_I(pipe_bpp);
91379137
9138− if (!IS_HASWELL(dev)) {
9138+ if (!HAS_DDI(dev)) {
91399139 PIPE_CONF_CHECK_CLOCK_FUZZY(adjusted_mode.crtc_clock);
91409140 PIPE_CONF_CHECK_CLOCK_FUZZY(port_clock);
91419141 }
@@ -11036,8 +11036,6 @@ void intel_modeset_setup_hw_state(struct drm_device *dev, · 1894 unmodified lines
1103611036 }
1103711037
1103811038 intel_modeset_check_state(dev);
11039−
11040− drm_mode_config_reset(dev);
1104111039 }
1104211040
1104311041 void intel_modeset_gem_init(struct drm_device *dev)
@@ -11046,7 +11044,10 @@ void intel_modeset_gem_init(struct drm_device *dev) · 2 unmodified lines
1104611044
1104711045 intel_setup_overlay(dev);
1104811046
11047+ drm_modeset_lock_all(dev);
11048+ drm_mode_config_reset(dev);
1104911049 intel_modeset_setup_hw_state(dev, false);
11050+ drm_modeset_unlock_all(dev);
1105011051 }
1105111052
1105211053 void intel_modeset_cleanup(struct drm_device *dev)
@@ -11125,14 +11126,15 @@ void intel_connector_attach_encoder(struct intel_connector *connector, · 72 unmodified lines
1112511126 int intel_modeset_vga_set_state(struct drm_device *dev, bool state)
1112611127 {
1112711128 struct drm_i915_private *dev_priv = dev->dev_private;
11129+ unsigned reg = INTEL_INFO(dev)->gen >= 6 ? SNB_GMCH_CTRL : INTEL_GMCH_CTRL;
1112811130 u16 gmch_ctrl;
1112911131
11130− pci_read_config_word(dev_priv->bridge_dev, INTEL_GMCH_CTRL, &gmch_ctrl);
11132+ pci_read_config_word(dev_priv->bridge_dev, reg, &gmch_ctrl);
1113111133 if (state)
1113211134 gmch_ctrl &= ~INTEL_GMCH_VGA_DISABLE;
1113311135 else
1113411136 gmch_ctrl |= INTEL_GMCH_VGA_DISABLE;
11135− pci_write_config_word(dev_priv->bridge_dev, INTEL_GMCH_CTRL, gmch_ctrl);
11137+ pci_write_config_word(dev_priv->bridge_dev, reg, gmch_ctrl);
1113611138 return 0;
1113711139 }
1113811140
drivers/gpu/drm/i915/intel_drv.h+1−0
@@ -821,6 +821,7 @@ void intel_update_sprite_watermarks(struct drm_plane *plane, · 820 unmodified lines
821821 uint32_t sprite_width, int pixel_size,
822822 bool enabled, bool scaled);
823823 void intel_init_pm(struct drm_device *dev);
824+void intel_pm_setup(struct drm_device *dev);
824825 bool intel_fbc_enabled(struct drm_device *dev);
825826 void intel_update_fbc(struct drm_device *dev);
826827 void intel_gpu_ips_init(struct drm_i915_private *dev_priv);
drivers/gpu/drm/i915/intel_panel.c+23−3
@@ -451,7 +451,9 @@ static u32 intel_panel_get_backlight(struct drm_device *dev, · 450 unmodified lines
451451
452452 spin_lock_irqsave(&dev_priv->backlight.lock, flags);
453453
454− if (HAS_PCH_SPLIT(dev)) {
454+ if (IS_BROADWELL(dev)) {
455+ val = I915_READ(BLC_PWM_PCH_CTL2) & BACKLIGHT_DUTY_CYCLE_MASK;
456+ } else if (HAS_PCH_SPLIT(dev)) {
455457 val = I915_READ(BLC_PWM_CPU_CTL) & BACKLIGHT_DUTY_CYCLE_MASK;
456458 } else {
457459 if (IS_VALLEYVIEW(dev))
@@ -479,6 +481,13 @@ static u32 intel_panel_get_backlight(struct drm_device *dev, · 21 unmodified lines
479481 return val;
480482 }
481483
484+static void intel_bdw_panel_set_backlight(struct drm_device *dev, u32 level)
485+{
486+ struct drm_i915_private *dev_priv = dev->dev_private;
487+ u32 val = I915_READ(BLC_PWM_PCH_CTL2) & ~BACKLIGHT_DUTY_CYCLE_MASK;
488+ I915_WRITE(BLC_PWM_PCH_CTL2, val | level);
489+}
490+
482491 static void intel_pch_panel_set_backlight(struct drm_device *dev, u32 level)
483492 {
484493 struct drm_i915_private *dev_priv = dev->dev_private;
@@ -496,7 +505,9 @@ static void intel_panel_actually_set_backlight(struct drm_device *dev, · 11 unmodified lines
496505 DRM_DEBUG_DRIVER("set backlight PWM = %d\n", level);
497506 level = intel_panel_compute_brightness(dev, pipe, level);
498507
499− if (HAS_PCH_SPLIT(dev))
508+ if (IS_BROADWELL(dev))
509+ return intel_bdw_panel_set_backlight(dev, level);
510+ else if (HAS_PCH_SPLIT(dev))
500511 return intel_pch_panel_set_backlight(dev, level);
501512
502513 if (is_backlight_combination_mode(dev)) {
@@ -666,7 +677,16 @@ void intel_panel_enable_backlight(struct intel_connector *connector) · 163 unmodified lines
666677 POSTING_READ(reg);
667678 I915_WRITE(reg, tmp | BLM_PWM_ENABLE);
668679
669− if (HAS_PCH_SPLIT(dev) &&
680+ if (IS_BROADWELL(dev)) {
681+ /*
682+ * Broadwell requires PCH override to drive the PCH
683+ * backlight pin. The above will configure the CPU
684+ * backlight pin, which we don't plan to use.
685+ */
686+ tmp = I915_READ(BLC_PWM_PCH_CTL1);
687+ tmp |= BLM_PCH_OVERRIDE_ENABLE | BLM_PCH_PWM_ENABLE;
688+ I915_WRITE(BLC_PWM_PCH_CTL1, tmp);
689+ } else if (HAS_PCH_SPLIT(dev) &&
670690 !(dev_priv->quirks & QUIRK_NO_PCH_PWM_ENABLE)) {
671691 tmp = I915_READ(BLC_PWM_PCH_CTL1);
672692 tmp |= BLM_PCH_PWM_ENABLE;
drivers/gpu/drm/i915/intel_pm.c+39−4
@@ -5685,8 +5685,11 @@ static void __intel_set_power_well(struct drm_device *dev, bool enable) · 5684 unmodified lines
56855685 {
56865686 struct drm_i915_private *dev_priv = dev->dev_private;
56875687 bool is_enabled, enable_requested;
5688+ unsigned long irqflags;
56885689 uint32_t tmp;
56895690
5691+ WARN_ON(dev_priv->pc8.enabled);
5692+
56905693 tmp = I915_READ(HSW_PWR_WELL_DRIVER);
56915694 is_enabled = tmp & HSW_PWR_WELL_STATE_ENABLED;
56925695 enable_requested = tmp & HSW_PWR_WELL_ENABLE_REQUEST;
@@ -5702,9 +5705,24 @@ static void __intel_set_power_well(struct drm_device *dev, bool enable) · 9 unmodified lines
57025705 HSW_PWR_WELL_STATE_ENABLED), 20))
57035706 DRM_ERROR("Timeout enabling power well\n");
57045707 }
5708+
5709+ if (IS_BROADWELL(dev)) {
5710+ spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
5711+ I915_WRITE(GEN8_DE_PIPE_IMR(PIPE_B),
5712+ dev_priv->de_irq_mask[PIPE_B]);
5713+ I915_WRITE(GEN8_DE_PIPE_IER(PIPE_B),
5714+ ~dev_priv->de_irq_mask[PIPE_B] |
5715+ GEN8_PIPE_VBLANK);
5716+ I915_WRITE(GEN8_DE_PIPE_IMR(PIPE_C),
5717+ dev_priv->de_irq_mask[PIPE_C]);
5718+ I915_WRITE(GEN8_DE_PIPE_IER(PIPE_C),
5719+ ~dev_priv->de_irq_mask[PIPE_C] |
5720+ GEN8_PIPE_VBLANK);
5721+ POSTING_READ(GEN8_DE_PIPE_IER(PIPE_C));
5722+ spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
5723+ }
57055724 } else {
57065725 if (enable_requested) {
5707− unsigned long irqflags;
57085726 enum pipe p;
57095727
57105728 I915_WRITE(HSW_PWR_WELL_DRIVER, 0);
@@ -5731,16 +5749,24 @@ static void __intel_set_power_well(struct drm_device *dev, bool enable) · 20 unmodified lines
57315749 static void __intel_power_well_get(struct drm_device *dev,
57325750 struct i915_power_well *power_well)
57335751 {
5734− if (!power_well->count++)
5752+ struct drm_i915_private *dev_priv = dev->dev_private;
5753+
5754+ if (!power_well->count++) {
5755+ hsw_disable_package_c8(dev_priv);
57355756 __intel_set_power_well(dev, true);
5757+ }
57365758 }
57375759
57385760 static void __intel_power_well_put(struct drm_device *dev,
57395761 struct i915_power_well *power_well)
57405762 {
5763+ struct drm_i915_private *dev_priv = dev->dev_private;
5764+
57415765 WARN_ON(!power_well->count);
5742− if (!--power_well->count && i915_disable_power_well)
5766+ if (!--power_well->count && i915_disable_power_well) {
57435767 __intel_set_power_well(dev, false);
5768+ hsw_enable_package_c8(dev_priv);
5769+ }
57445770 }
57455771
57465772 void intel_display_power_get(struct drm_device *dev,
@@ -6130,10 +6156,19 @@ int vlv_freq_opcode(int ddr_freq, int val) · 383 unmodified lines
61306156 return val;
61316157 }
61326158
6133−void intel_pm_init(struct drm_device *dev)
6159+void intel_pm_setup(struct drm_device *dev)
61346160 {
61356161 struct drm_i915_private *dev_priv = dev->dev_private;
61366162
6163+ mutex_init(&dev_priv->rps.hw_lock);
6164+
6165+ mutex_init(&dev_priv->pc8.lock);
6166+ dev_priv->pc8.requirements_met = false;
6167+ dev_priv->pc8.gpu_idle = false;
6168+ dev_priv->pc8.irqs_disabled = false;
6169+ dev_priv->pc8.enabled = false;
6170+ dev_priv->pc8.disable_count = 2; /* requirements_met + gpu_idle */
6171+ INIT_DELAYED_WORK(&dev_priv->pc8.enable_work, hsw_enable_pc8_work);
61376172 INIT_DELAYED_WORK(&dev_priv->rps.delayed_resume_work,
61386173 intel_gen6_powersave_work);
61396174 }
drivers/gpu/drm/i915/intel_ringbuffer.c+1−0
@@ -965,6 +965,7 @@ void intel_ring_setup_status_page(struct intel_ring_buffer *ring) · 964 unmodified lines
965965 } else if (IS_GEN6(ring->dev)) {
966966 mmio = RING_HWS_PGA_GEN6(ring->mmio_base);
967967 } else {
968+ /* XXX: gen8 returns to sanity */
968969 mmio = RING_HWS_PGA(ring->mmio_base);
969970 }
970971
drivers/gpu/drm/i915/intel_uncore.c+1−0
@@ -784,6 +784,7 @@ static int gen6_do_reset(struct drm_device *dev) · 783 unmodified lines
784784 int intel_gpu_reset(struct drm_device *dev)
785785 {
786786 switch (INTEL_INFO(dev)->gen) {
787+ case 8:
787788 case 7:
788789 case 6: return gen6_do_reset(dev);
789790 case 5: return ironlake_do_reset(dev);
drivers/gpu/drm/nouveau/nouveau_drm.c+6−0
@@ -858,6 +858,12 @@ static int nouveau_pmops_runtime_suspend(struct device *dev) · 857 unmodified lines
858858 if (nouveau_runtime_pm == 0)
859859 return -EINVAL;
860860
861+ /* are we optimus enabled? */
862+ if (nouveau_runtime_pm == -1 && !nouveau_is_optimus() && !nouveau_is_v1_dsm()) {
863+ DRM_DEBUG_DRIVER("failing to power off - not optimus\n");
864+ return -EINVAL;
865+ }
866+
861867 nv_debug_level(SILENT);
862868 drm_kms_helper_poll_disable(drm_dev);
863869 vga_switcheroo_set_dynamic_switch(pdev, VGA_SWITCHEROO_OFF);
drivers/gpu/drm/qxl/Kconfig+1−0
@@ -8,5 +8,6 @@ config DRM_QXL · 7 unmodified lines
88 select DRM_KMS_HELPER
99 select DRM_KMS_FB_HELPER
1010 select DRM_TTM
11+ select CRC32
1112 help
1213 QXL virtual GPU for Spice virtualization desktop integration. Do not enable this driver unless your distro ships a corresponding X.org QXL driver that can handle kernel modesetting.
drivers/gpu/drm/qxl/qxl_display.c+1−1
@@ -24,7 +24,7 @@ · 23 unmodified lines
2424 */
2525
2626
27−#include "linux/crc32.h"
27+#include <linux/crc32.h>
2828
2929 #include "qxl_drv.h"
3030 #include "qxl_object.h"
drivers/gpu/drm/radeon/atombios_crtc.c+3−1
@@ -1196,7 +1196,9 @@ static int dce4_crtc_do_set_base(struct drm_crtc *crtc, · 1195 unmodified lines
11961196 } else if ((rdev->family == CHIP_TAHITI) ||
11971197 (rdev->family == CHIP_PITCAIRN))
11981198 fb_format |= SI_GRPH_PIPE_CONFIG(SI_ADDR_SURF_P8_32x32_8x16);
1199− else if (rdev->family == CHIP_VERDE)
1199+ else if ((rdev->family == CHIP_VERDE) ||
1200+ (rdev->family == CHIP_OLAND) ||
1201+ (rdev->family == CHIP_HAINAN)) /* for completeness. HAINAN has no display hw */
12001202 fb_format |= SI_GRPH_PIPE_CONFIG(SI_ADDR_SURF_P4_8x16);
12011203
12021204 switch (radeon_crtc->crtc_id) {
drivers/gpu/drm/radeon/cik_sdma.c+1−1
@@ -458,7 +458,7 @@ int cik_copy_dma(struct radeon_device *rdev, · 457 unmodified lines
458458 radeon_ring_write(ring, 0); /* src/dst endian swap */
459459 radeon_ring_write(ring, src_offset & 0xffffffff);
460460 radeon_ring_write(ring, upper_32_bits(src_offset) & 0xffffffff);
461− radeon_ring_write(ring, dst_offset & 0xfffffffc);
461+ radeon_ring_write(ring, dst_offset & 0xffffffff);
462462 radeon_ring_write(ring, upper_32_bits(dst_offset) & 0xffffffff);
463463 src_offset += cur_size_in_bytes;
464464 dst_offset += cur_size_in_bytes;
drivers/gpu/drm/radeon/dce6_afmt.c+5−3
@@ -174,7 +174,7 @@ void dce6_afmt_write_speaker_allocation(struct drm_encoder *encoder) · 173 unmodified lines
174174 }
175175
176176 sad_count = drm_edid_to_speaker_allocation(radeon_connector->edid, &sadb);
177− if (sad_count < 0) {
177+ if (sad_count <= 0) {
178178 DRM_ERROR("Couldn't read Speaker Allocation Data Block: %d\n", sad_count);
179179 return;
180180 }
@@ -235,7 +235,7 @@ void dce6_afmt_write_sad_regs(struct drm_encoder *encoder) · 54 unmodified lines
235235 }
236236
237237 sad_count = drm_edid_to_sad(radeon_connector->edid, &sads);
238− if (sad_count < 0) {
238+ if (sad_count <= 0) {
239239 DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
240240 return;
241241 }
@@ -308,7 +308,9 @@ int dce6_audio_init(struct radeon_device *rdev) · 66 unmodified lines
308308 rdev->audio.enabled = true;
309309
310310 if (ASIC_IS_DCE8(rdev))
311− rdev->audio.num_pins = 7;
311+ rdev->audio.num_pins = 6;
312+ else if (ASIC_IS_DCE61(rdev))
313+ rdev->audio.num_pins = 4;
312314 else
313315 rdev->audio.num_pins = 6;
314316
drivers/gpu/drm/radeon/evergreen_hdmi.c+2−2
@@ -118,7 +118,7 @@ static void dce4_afmt_write_speaker_allocation(struct drm_encoder *encoder) · 117 unmodified lines
118118 }
119119
120120 sad_count = drm_edid_to_speaker_allocation(radeon_connector->edid, &sadb);
121− if (sad_count < 0) {
121+ if (sad_count <= 0) {
122122 DRM_ERROR("Couldn't read Speaker Allocation Data Block: %d\n", sad_count);
123123 return;
124124 }
@@ -173,7 +173,7 @@ static void evergreen_hdmi_write_sad_regs(struct drm_encoder *encoder) · 48 unmodified lines
173173 }
174174
175175 sad_count = drm_edid_to_sad(radeon_connector->edid, &sads);
176− if (sad_count < 0) {
176+ if (sad_count <= 0) {
177177 DRM_ERROR("Couldn't read SADs: %d\n", sad_count);
178178 return;
179179 }
drivers/gpu/drm/radeon/ni.c+16−4
@@ -895,6 +895,10 @@ static void cayman_gpu_init(struct radeon_device *rdev) · 894 unmodified lines
895895 (rdev->pdev->device == 0x999C)) {
896896 rdev->config.cayman.max_simds_per_se = 6;
897897 rdev->config.cayman.max_backends_per_se = 2;
898+ rdev->config.cayman.max_hw_contexts = 8;
899+ rdev->config.cayman.sx_max_export_size = 256;
900+ rdev->config.cayman.sx_max_export_pos_size = 64;
901+ rdev->config.cayman.sx_max_export_smx_size = 192;
898902 } else if ((rdev->pdev->device == 0x9903) ||
899903 (rdev->pdev->device == 0x9904) ||
900904 (rdev->pdev->device == 0x990A) ||
@@ -905,6 +909,10 @@ static void cayman_gpu_init(struct radeon_device *rdev) · 4 unmodified lines
905909 (rdev->pdev->device == 0x999D)) {
906910 rdev->config.cayman.max_simds_per_se = 4;
907911 rdev->config.cayman.max_backends_per_se = 2;
912+ rdev->config.cayman.max_hw_contexts = 8;
913+ rdev->config.cayman.sx_max_export_size = 256;
914+ rdev->config.cayman.sx_max_export_pos_size = 64;
915+ rdev->config.cayman.sx_max_export_smx_size = 192;
908916 } else if ((rdev->pdev->device == 0x9919) ||
909917 (rdev->pdev->device == 0x9990) ||
910918 (rdev->pdev->device == 0x9991) ||
@@ -915,9 +923,17 @@ static void cayman_gpu_init(struct radeon_device *rdev) · 4 unmodified lines
915923 (rdev->pdev->device == 0x99A0)) {
916924 rdev->config.cayman.max_simds_per_se = 3;
917925 rdev->config.cayman.max_backends_per_se = 1;
926+ rdev->config.cayman.max_hw_contexts = 4;
927+ rdev->config.cayman.sx_max_export_size = 128;
928+ rdev->config.cayman.sx_max_export_pos_size = 32;
929+ rdev->config.cayman.sx_max_export_smx_size = 96;
918930 } else {
919931 rdev->config.cayman.max_simds_per_se = 2;
920932 rdev->config.cayman.max_backends_per_se = 1;
933+ rdev->config.cayman.max_hw_contexts = 4;
934+ rdev->config.cayman.sx_max_export_size = 128;
935+ rdev->config.cayman.sx_max_export_pos_size = 32;
936+ rdev->config.cayman.sx_max_export_smx_size = 96;
921937 }
922938 rdev->config.cayman.max_texture_channel_caches = 2;
923939 rdev->config.cayman.max_gprs = 256;
@@ -925,10 +941,6 @@ static void cayman_gpu_init(struct radeon_device *rdev) · 1 unmodified line
925941 rdev->config.cayman.max_gs_threads = 32;
926942 rdev->config.cayman.max_stack_entries = 512;
927943 rdev->config.cayman.sx_num_of_sets = 8;
928− rdev->config.cayman.sx_max_export_size = 256;
929− rdev->config.cayman.sx_max_export_pos_size = 64;
930− rdev->config.cayman.sx_max_export_smx_size = 192;
931− rdev->config.cayman.max_hw_contexts = 8;
932944 rdev->config.cayman.sq_num_cf_insts = 2;
933945
934946 rdev->config.cayman.sc_prim_fifo_size = 0x40;
drivers/gpu/drm/radeon/radeon_asic.c+2−2
@@ -2021,7 +2021,7 @@ static struct radeon_asic ci_asic = { · 2020 unmodified lines
20212021 .hdmi_setmode = &evergreen_hdmi_setmode,
20222022 },
20232023 .copy = {
2024− .blit = NULL,
2024+ .blit = &cik_copy_cpdma,
20252025 .blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
20262026 .dma = &cik_copy_dma,
20272027 .dma_ring_index = R600_RING_TYPE_DMA_INDEX,
@@ -2122,7 +2122,7 @@ static struct radeon_asic kv_asic = { · 94 unmodified lines
21222122 .hdmi_setmode = &evergreen_hdmi_setmode,
21232123 },
21242124 .copy = {
2125− .blit = NULL,
2125+ .blit = &cik_copy_cpdma,
21262126 .blit_ring_index = RADEON_RING_TYPE_GFX_INDEX,
21272127 .dma = &cik_copy_dma,
21282128 .dma_ring_index = R600_RING_TYPE_DMA_INDEX,
drivers/gpu/drm/radeon/radeon_drv.c+0−10
@@ -508,15 +508,6 @@ static const struct file_operations radeon_driver_kms_fops = { · 507 unmodified lines
508508 #endif
509509 };
510510
511−
512−static void
513−radeon_pci_shutdown(struct pci_dev *pdev)
514−{
515− struct drm_device *dev = pci_get_drvdata(pdev);
516−
517− radeon_driver_unload_kms(dev);
518−}
519−
520511 static struct drm_driver kms_driver = {
521512 .driver_features =
522513 DRIVER_USE_AGP |
@@ -586,7 +577,6 @@ static struct pci_driver radeon_kms_pci_driver = { · 63 unmodified lines
586577 .probe = radeon_pci_probe,
587578 .remove = radeon_pci_remove,
588579 .driver.pm = &radeon_pm_ops,
589− .shutdown = radeon_pci_shutdown,
590580 };
591581
592582 static int __init radeon_init(void)
drivers/gpu/drm/radeon/rs690.c+10−0
@@ -162,6 +162,16 @@ static void rs690_mc_init(struct radeon_device *rdev) · 161 unmodified lines
162162 base = RREG32_MC(R_000100_MCCFG_FB_LOCATION);
163163 base = G_000100_MC_FB_START(base) << 16;
164164 rdev->mc.igp_sideport_enabled = radeon_atombios_sideport_present(rdev);
165+ /* Some boards seem to be configured for 128MB of sideport memory,
166+ * but really only have 64MB. Just skip the sideport and use
167+ * UMA memory.
168+ */
169+ if (rdev->mc.igp_sideport_enabled &&
170+ (rdev->mc.real_vram_size == (384 * 1024 * 1024))) {
171+ base += 128 * 1024 * 1024;
172+ rdev->mc.real_vram_size -= 128 * 1024 * 1024;
173+ rdev->mc.mc_vram_size = rdev->mc.real_vram_size;
174+ }
165175
166176 /* Use K8 direct mapping for fast fb access. */
167177 rdev->fastfb_working = false;
drivers/gpu/drm/radeon/rv770_dpm.c+6−0
@@ -2328,6 +2328,12 @@ void rv770_get_engine_memory_ss(struct radeon_device *rdev) · 2327 unmodified lines
23282328 pi->mclk_ss = radeon_atombios_get_asic_ss_info(rdev, &ss,
23292329 ASIC_INTERNAL_MEMORY_SS, 0);
23302330
2331+ /* disable ss, causes hangs on some cayman boards */
2332+ if (rdev->family == CHIP_CAYMAN) {
2333+ pi->sclk_ss = false;
2334+ pi->mclk_ss = false;
2335+ }
2336+
23312337 if (pi->sclk_ss || pi->mclk_ss)
23322338 pi->dynamic_ss = true;
23332339 else
drivers/gpu/drm/ttm/ttm_bo_util.c+2−1
@@ -353,7 +353,8 @@ int ttm_bo_move_memcpy(struct ttm_buffer_object *bo, · 352 unmodified lines
353353 * Don't move nonexistent data. Clear destination instead.
354354 */
355355 if (old_iomap == NULL &&
356− (ttm == NULL || ttm->state == tt_unpopulated)) {
356+ (ttm == NULL || (ttm->state == tt_unpopulated &&
357+ !(ttm->page_flags & TTM_PAGE_FLAG_SWAPPED)))) {
357358 memset_io(new_iomap, 0, new_mem->num_pages*PAGE_SIZE);
358359 goto out2;
359360 }
drivers/gpu/drm/ttm/ttm_bo_vm.c+3−3
@@ -169,9 +169,9 @@ static int ttm_bo_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf) · 168 unmodified lines
169169 }
170170
171171 page_offset = ((address - vma->vm_start) >> PAGE_SHIFT) +
172− drm_vma_node_start(&bo->vma_node) - vma->vm_pgoff;
173− page_last = vma_pages(vma) +
174− drm_vma_node_start(&bo->vma_node) - vma->vm_pgoff;
172+ vma->vm_pgoff - drm_vma_node_start(&bo->vma_node);
173+ page_last = vma_pages(vma) + vma->vm_pgoff -
174+ drm_vma_node_start(&bo->vma_node);
175175
176176 if (unlikely(page_offset >= bo->num_pages)) {
177177 retval = VM_FAULT_SIGBUS;
drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c+3−0
@@ -68,6 +68,9 @@ int vmw_getparam_ioctl(struct drm_device *dev, void *data, · 67 unmodified lines
6868 SVGA_FIFO_3D_HWVERSION));
6969 break;
7070 }
71+ case DRM_VMW_PARAM_MAX_SURF_MEMORY:
72+ param->value = dev_priv->memory_size;
73+ break;
7174 default:
7275 DRM_ERROR("Illegal vmwgfx get param request: %d\n",
7376 param->param);
drivers/idle/intel_idle.c+3−0
@@ -377,6 +377,9 @@ static int intel_idle(struct cpuidle_device *dev, · 376 unmodified lines
377377
378378 if (!current_set_polling_and_test()) {
379379
380+ if (this_cpu_has(X86_FEATURE_CLFLUSH_MONITOR))
381+ clflush((void *)&current_thread_info()->flags);
382+
380383 __monitor((void *)&current_thread_info()->flags, 0, 0);
381384 smp_mb();
382385 if (!need_resched())
drivers/iio/adc/ad7887.c+14−2
@@ -200,7 +200,13 @@ static const struct ad7887_chip_info ad7887_chip_info_tbl[] = { · 199 unmodified lines
200200 .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
201201 .address = 1,
202202 .scan_index = 1,
203− .scan_type = IIO_ST('u', 12, 16, 0),
203+ .scan_type = {
204+ .sign = 'u',
205+ .realbits = 12,
206+ .storagebits = 16,
207+ .shift = 0,
208+ .endianness = IIO_BE,
209+ },
204210 },
205211 .channel[1] = {
206212 .type = IIO_VOLTAGE,
@@ -210,7 +216,13 @@ static const struct ad7887_chip_info ad7887_chip_info_tbl[] = { · 3 unmodified lines
210216 .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
211217 .address = 0,
212218 .scan_index = 0,
213− .scan_type = IIO_ST('u', 12, 16, 0),
219+ .scan_type = {
220+ .sign = 'u',
221+ .realbits = 12,
222+ .storagebits = 16,
223+ .shift = 0,
224+ .endianness = IIO_BE,
225+ },
214226 },
215227 .channel[2] = IIO_CHAN_SOFT_TIMESTAMP(2),
216228 .int_vref_mv = 2500,
drivers/iio/imu/adis16400_core.c+6−1
@@ -651,7 +651,12 @@ static const struct iio_chan_spec adis16448_channels[] = { · 650 unmodified lines
651651 .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE),
652652 .address = ADIS16448_BARO_OUT,
653653 .scan_index = ADIS16400_SCAN_BARO,
654− .scan_type = IIO_ST('s', 16, 16, 0),
654+ .scan_type = {
655+ .sign = 's',
656+ .realbits = 16,
657+ .storagebits = 16,
658+ .endianness = IIO_BE,
659+ },
655660 },
656661 ADIS16400_TEMP_CHAN(ADIS16448_TEMP_OUT, 12),
657662 IIO_CHAN_SOFT_TIMESTAMP(11)
drivers/iio/light/cm36651.c+1−1
@@ -387,7 +387,7 @@ static int cm36651_read_int_time(struct cm36651_data *cm36651, · 386 unmodified lines
387387 return -EINVAL;
388388 }
389389
390− return IIO_VAL_INT_PLUS_MICRO;
390+ return IIO_VAL_INT;
391391 }
392392
393393 static int cm36651_write_int_time(struct cm36651_data *cm36651,
drivers/infiniband/core/iwcm.c+9−2
@@ -181,9 +181,16 @@ static void add_ref(struct iw_cm_id *cm_id) · 180 unmodified lines
181181 static void rem_ref(struct iw_cm_id *cm_id)
182182 {
183183 struct iwcm_id_private *cm_id_priv;
184+ int cb_destroy;
185+
184186 cm_id_priv = container_of(cm_id, struct iwcm_id_private, id);
185− if (iwcm_deref_id(cm_id_priv) &&
186− test_bit(IWCM_F_CALLBACK_DESTROY, &cm_id_priv->flags)) {
187+
188+ /*
189+ * Test bit before deref in case the cm_id gets freed on another
190+ * thread.
191+ */
192+ cb_destroy = test_bit(IWCM_F_CALLBACK_DESTROY, &cm_id_priv->flags);
193+ if (iwcm_deref_id(cm_id_priv) && cb_destroy) {
187194 BUG_ON(!list_empty(&cm_id_priv->work_list));
188195 free_cm_id(cm_id_priv);
189196 }
drivers/infiniband/core/uverbs.h+9−1
@@ -49,12 +49,20 @@ · 48 unmodified lines
4949
5050 #define INIT_UDATA(udata, ibuf, obuf, ilen, olen) \
5151 do { \
52− (udata)->inbuf = (void __user *) (ibuf); \
52+ (udata)->inbuf = (const void __user *) (ibuf); \
5353 (udata)->outbuf = (void __user *) (obuf); \
5454 (udata)->inlen = (ilen); \
5555 (udata)->outlen = (olen); \
5656 } while (0)
5757
58+#define INIT_UDATA_BUF_OR_NULL(udata, ibuf, obuf, ilen, olen) \
59+ do { \
60+ (udata)->inbuf = (ilen) ? (const void __user *) (ibuf) : NULL; \
61+ (udata)->outbuf = (olen) ? (void __user *) (obuf) : NULL; \
62+ (udata)->inlen = (ilen); \
63+ (udata)->outlen = (olen); \
64+ } while (0)
65+
5866 /*
5967 * Our lifetime rules for these structs are the following:
6068 *
drivers/infiniband/core/uverbs_cmd.c+17−0
@@ -2593,6 +2593,9 @@ out_put: · 2592 unmodified lines
25932593 static int kern_spec_to_ib_spec(struct ib_uverbs_flow_spec *kern_spec,
25942594 union ib_flow_spec *ib_spec)
25952595 {
2596+ if (kern_spec->reserved)
2597+ return -EINVAL;
2598+
25962599 ib_spec->type = kern_spec->type;
25972600
25982601 switch (ib_spec->type) {
@@ -2646,6 +2649,9 @@ int ib_uverbs_ex_create_flow(struct ib_uverbs_file *file, · 47 unmodified lines
26462649 void *ib_spec;
26472650 int i;
26482651
2652+ if (ucore->inlen < sizeof(cmd))
2653+ return -EINVAL;
2654+
26492655 if (ucore->outlen < sizeof(resp))
26502656 return -ENOSPC;
26512657
@@ -2671,6 +2677,10 @@ int ib_uverbs_ex_create_flow(struct ib_uverbs_file *file, · 19 unmodified lines
26712677 (cmd.flow_attr.num_of_specs * sizeof(struct ib_uverbs_flow_spec)))
26722678 return -EINVAL;
26732679
2680+ if (cmd.flow_attr.reserved[0] ||
2681+ cmd.flow_attr.reserved[1])
2682+ return -EINVAL;
2683+
26742684 if (cmd.flow_attr.num_of_specs) {
26752685 kern_flow_attr = kmalloc(sizeof(*kern_flow_attr) + cmd.flow_attr.size,
26762686 GFP_KERNEL);
@@ -2731,6 +2741,7 @@ int ib_uverbs_ex_create_flow(struct ib_uverbs_file *file, · 54 unmodified lines
27312741 if (cmd.flow_attr.size || (i != flow_attr->num_of_specs)) {
27322742 pr_warn("create flow failed, flow %d: %d bytes left from uverb cmd\n",
27332743 i, cmd.flow_attr.size);
2744+ err = -EINVAL;
27342745 goto err_free;
27352746 }
27362747 flow_id = ib_create_flow(qp, flow_attr, IB_FLOW_DOMAIN_USER);
@@ -2791,10 +2802,16 @@ int ib_uverbs_ex_destroy_flow(struct ib_uverbs_file *file, · 54 unmodified lines
27912802 struct ib_uobject *uobj;
27922803 int ret;
27932804
2805+ if (ucore->inlen < sizeof(cmd))
2806+ return -EINVAL;
2807+
27942808 ret = ib_copy_from_udata(&cmd, ucore, sizeof(cmd));
27952809 if (ret)
27962810 return ret;
27972811
2812+ if (cmd.comp_mask)
2813+ return -EINVAL;
2814+
27982815 uobj = idr_write_uobj(&ib_uverbs_rule_idr, cmd.flow_handle,
27992816 file->ucontext);
28002817 if (!uobj)
drivers/infiniband/core/uverbs_main.c+16−11
@@ -668,25 +668,30 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf, · 667 unmodified lines
668668 if ((hdr.in_words + ex_hdr.provider_in_words) * 8 != count)
669669 return -EINVAL;
670670
671+ if (ex_hdr.cmd_hdr_reserved)
672+ return -EINVAL;
673+
671674 if (ex_hdr.response) {
672675 if (!hdr.out_words && !ex_hdr.provider_out_words)
673676 return -EINVAL;
677+
678+ if (!access_ok(VERIFY_WRITE,
679+ (void __user *) (unsigned long) ex_hdr.response,
680+ (hdr.out_words + ex_hdr.provider_out_words) * 8))
681+ return -EFAULT;
674682 } else {
675683 if (hdr.out_words || ex_hdr.provider_out_words)
676684 return -EINVAL;
677685 }
678686
679− INIT_UDATA(&ucore,
680− (hdr.in_words) ? buf : 0,
681− (unsigned long)ex_hdr.response,
682− hdr.in_words * 8,
683− hdr.out_words * 8);
684−
685− INIT_UDATA(&uhw,
686− (ex_hdr.provider_in_words) ? buf + ucore.inlen : 0,
687− (ex_hdr.provider_out_words) ? (unsigned long)ex_hdr.response + ucore.outlen : 0,
688− ex_hdr.provider_in_words * 8,
689− ex_hdr.provider_out_words * 8);
687+ INIT_UDATA_BUF_OR_NULL(&ucore, buf, (unsigned long) ex_hdr.response,
688+ hdr.in_words * 8, hdr.out_words * 8);
689+
690+ INIT_UDATA_BUF_OR_NULL(&uhw,
691+ buf + ucore.inlen,
692+ (unsigned long) ex_hdr.response + ucore.outlen,
693+ ex_hdr.provider_in_words * 8,
694+ ex_hdr.provider_out_words * 8);
690695
691696 err = uverbs_ex_cmd_table[command](file,
692697 &ucore,
drivers/infiniband/hw/cxgb4/mem.c+1−1
@@ -173,7 +173,7 @@ static int _c4iw_write_mem_inline(struct c4iw_rdev *rdev, u32 addr, u32 len, · 172 unmodified lines
173173 return ret;
174174 }
175175
176−int _c4iw_write_mem_dma(struct c4iw_rdev *rdev, u32 addr, u32 len, void *data)
176+static int _c4iw_write_mem_dma(struct c4iw_rdev *rdev, u32 addr, u32 len, void *data)
177177 {
178178 u32 remain = len;
179179 u32 dmalen;
drivers/infiniband/ulp/isert/ib_isert.c+16−6
@@ -207,7 +207,9 @@ isert_free_rx_descriptors(struct isert_conn *isert_conn) · 206 unmodified lines
207207 isert_conn->conn_rx_descs = NULL;
208208 }
209209
210+static void isert_cq_tx_work(struct work_struct *);
210211 static void isert_cq_tx_callback(struct ib_cq *, void *);
212+static void isert_cq_rx_work(struct work_struct *);
211213 static void isert_cq_rx_callback(struct ib_cq *, void *);
212214
213215 static int
@@ -259,26 +261,36 @@ isert_create_device_ib_res(struct isert_device *device) · 45 unmodified lines
259261 cq_desc[i].device = device;
260262 cq_desc[i].cq_index = i;
261263
264+ INIT_WORK(&cq_desc[i].cq_rx_work, isert_cq_rx_work);
262265 device->dev_rx_cq[i] = ib_create_cq(device->ib_device,
263266 isert_cq_rx_callback,
264267 isert_cq_event_callback,
265268 (void *)&cq_desc[i],
266269 ISER_MAX_RX_CQ_LEN, i);
267− if (IS_ERR(device->dev_rx_cq[i]))
270+ if (IS_ERR(device->dev_rx_cq[i])) {
271+ ret = PTR_ERR(device->dev_rx_cq[i]);
272+ device->dev_rx_cq[i] = NULL;
268273 goto out_cq;
274+ }
269275
276+ INIT_WORK(&cq_desc[i].cq_tx_work, isert_cq_tx_work);
270277 device->dev_tx_cq[i] = ib_create_cq(device->ib_device,
271278 isert_cq_tx_callback,
272279 isert_cq_event_callback,
273280 (void *)&cq_desc[i],
274281 ISER_MAX_TX_CQ_LEN, i);
275− if (IS_ERR(device->dev_tx_cq[i]))
282+ if (IS_ERR(device->dev_tx_cq[i])) {
283+ ret = PTR_ERR(device->dev_tx_cq[i]);
284+ device->dev_tx_cq[i] = NULL;
276285 goto out_cq;
286+ }
277287
278− if (ib_req_notify_cq(device->dev_rx_cq[i], IB_CQ_NEXT_COMP))
288+ ret = ib_req_notify_cq(device->dev_rx_cq[i], IB_CQ_NEXT_COMP);
289+ if (ret)
279290 goto out_cq;
280291
281− if (ib_req_notify_cq(device->dev_tx_cq[i], IB_CQ_NEXT_COMP))
292+ ret = ib_req_notify_cq(device->dev_tx_cq[i], IB_CQ_NEXT_COMP);
293+ if (ret)
282294 goto out_cq;
283295 }
284296
@@ -1724,7 +1736,6 @@ isert_cq_tx_callback(struct ib_cq *cq, void *context) · 1439 unmodified lines
17241736 {
17251737 struct isert_cq_desc *cq_desc = (struct isert_cq_desc *)context;
17261738
1727− INIT_WORK(&cq_desc->cq_tx_work, isert_cq_tx_work);
17281739 queue_work(isert_comp_wq, &cq_desc->cq_tx_work);
17291740 }
17301741
@@ -1768,7 +1779,6 @@ isert_cq_rx_callback(struct ib_cq *cq, void *context) · 37 unmodified lines
17681779 {
17691780 struct isert_cq_desc *cq_desc = (struct isert_cq_desc *)context;
17701781
1771− INIT_WORK(&cq_desc->cq_rx_work, isert_cq_rx_work);
17721782 queue_work(isert_rx_wq, &cq_desc->cq_rx_work);
17731783 }
17741784
drivers/irqchip/irq-renesas-intc-irqpin.c+5−3
@@ -149,8 +149,9 @@ static void intc_irqpin_read_modify_write(struct intc_irqpin_priv *p, · 148 unmodified lines
149149 static void intc_irqpin_mask_unmask_prio(struct intc_irqpin_priv *p,
150150 int irq, int do_mask)
151151 {
152− int bitfield_width = 4; /* PRIO assumed to have fixed bitfield width */
153− int shift = (7 - irq) * bitfield_width; /* PRIO assumed to be 32-bit */
152+ /* The PRIO register is assumed to be 32-bit with fixed 4-bit fields. */
153+ int bitfield_width = 4;
154+ int shift = 32 - (irq + 1) * bitfield_width;
154155
155156 intc_irqpin_read_modify_write(p, INTC_IRQPIN_REG_PRIO,
156157 shift, bitfield_width,
@@ -159,8 +160,9 @@ static void intc_irqpin_mask_unmask_prio(struct intc_irqpin_priv *p, · 2 unmodified lines
159160
160161 static int intc_irqpin_set_sense(struct intc_irqpin_priv *p, int irq, int value)
161162 {
163+ /* The SENSE register is assumed to be 32-bit. */
162164 int bitfield_width = p->config.sense_bitfield_width;
163− int shift = (7 - irq) * bitfield_width; /* SENSE assumed to be 32-bit */
165+ int shift = 32 - (irq + 1) * bitfield_width;
164166
165167 dev_dbg(&p->pdev->dev, "sense irq = %d, mode = %d\n", irq, value);
166168
drivers/md/bcache/alloc.c+2−0
@@ -421,9 +421,11 @@ out: · 420 unmodified lines
421421
422422 if (watermark <= WATERMARK_METADATA) {
423423 SET_GC_MARK(b, GC_MARK_METADATA);
424+ SET_GC_MOVE(b, 0);
424425 b->prio = BTREE_PRIO;
425426 } else {
426427 SET_GC_MARK(b, GC_MARK_RECLAIMABLE);
428+ SET_GC_MOVE(b, 0);
427429 b->prio = INITIAL_PRIO;
428430 }
429431
drivers/md/bcache/bcache.h+6−6
@@ -197,7 +197,7 @@ struct bucket { · 196 unmodified lines
197197 uint8_t disk_gen;
198198 uint8_t last_gc; /* Most out of date gen in the btree */
199199 uint8_t gc_gen;
200− uint16_t gc_mark;
200+ uint16_t gc_mark; /* Bitfield used by GC. See below for field */
201201 };
202202
203203 /*
@@ -209,7 +209,8 @@ BITMASK(GC_MARK, struct bucket, gc_mark, 0, 2); · 5 unmodified lines
209209 #define GC_MARK_RECLAIMABLE 0
210210 #define GC_MARK_DIRTY 1
211211 #define GC_MARK_METADATA 2
212−BITMASK(GC_SECTORS_USED, struct bucket, gc_mark, 2, 14);
212+BITMASK(GC_SECTORS_USED, struct bucket, gc_mark, 2, 13);
213+BITMASK(GC_MOVE, struct bucket, gc_mark, 15, 1);
213214
214215 #include "journal.h"
215216 #include "stats.h"
@@ -372,14 +373,14 @@ struct cached_dev { · 156 unmodified lines
372373 unsigned char writeback_percent;
373374 unsigned writeback_delay;
374375
375− int writeback_rate_change;
376− int64_t writeback_rate_derivative;
377376 uint64_t writeback_rate_target;
377+ int64_t writeback_rate_proportional;
378+ int64_t writeback_rate_derivative;
379+ int64_t writeback_rate_change;
378380
379381 unsigned writeback_rate_update_seconds;
380382 unsigned writeback_rate_d_term;
381383 unsigned writeback_rate_p_term_inverse;
382− unsigned writeback_rate_d_smooth;
383384 };
384385
385386 enum alloc_watermarks {
@@ -445,7 +446,6 @@ struct cache { · 59 unmodified lines
445446 * call prio_write() to keep gens from wrapping.
446447 */
447448 uint8_t need_save_prio;
448− unsigned gc_move_threshold;
449449
450450 /*
451451 * If nonzero, we know we aren't going to find any buckets to invalidate
drivers/md/bcache/btree.c+25−2
@@ -1561,6 +1561,28 @@ size_t bch_btree_gc_finish(struct cache_set *c) · 1560 unmodified lines
15611561 SET_GC_MARK(PTR_BUCKET(c, &c->uuid_bucket, i),
15621562 GC_MARK_METADATA);
15631563
1564+ /* don't reclaim buckets to which writeback keys point */
1565+ rcu_read_lock();
1566+ for (i = 0; i < c->nr_uuids; i++) {
1567+ struct bcache_device *d = c->devices[i];
1568+ struct cached_dev *dc;
1569+ struct keybuf_key *w, *n;
1570+ unsigned j;
1571+
1572+ if (!d || UUID_FLASH_ONLY(&c->uuids[i]))
1573+ continue;
1574+ dc = container_of(d, struct cached_dev, disk);
1575+
1576+ spin_lock(&dc->writeback_keys.lock);
1577+ rbtree_postorder_for_each_entry_safe(w, n,
1578+ &dc->writeback_keys.keys, node)
1579+ for (j = 0; j < KEY_PTRS(&w->key); j++)
1580+ SET_GC_MARK(PTR_BUCKET(c, &w->key, j),
1581+ GC_MARK_DIRTY);
1582+ spin_unlock(&dc->writeback_keys.lock);
1583+ }
1584+ rcu_read_unlock();
1585+
15641586 for_each_cache(ca, c, i) {
15651587 uint64_t *i;
15661588
@@ -1817,7 +1839,8 @@ static bool fix_overlapping_extents(struct btree *b, struct bkey *insert, · 250 unmodified lines
18171839 if (KEY_START(k) > KEY_START(insert) + sectors_found)
18181840 goto check_failed;
18191841
1820− if (KEY_PTRS(replace_key) != KEY_PTRS(k))
1842+ if (KEY_PTRS(k) != KEY_PTRS(replace_key) ||
1843+ KEY_DIRTY(k) != KEY_DIRTY(replace_key))
18211844 goto check_failed;
18221845
18231846 /* skip past gen */
@@ -2217,7 +2240,7 @@ struct btree_insert_op { · 393 unmodified lines
22172240 struct bkey *replace_key;
22182241 };
22192242
2220−int btree_insert_fn(struct btree_op *b_op, struct btree *b)
2243+static int btree_insert_fn(struct btree_op *b_op, struct btree *b)
22212244 {
22222245 struct btree_insert_op *op = container_of(b_op,
22232246 struct btree_insert_op, op);
drivers/md/bcache/movinggc.c+15−6
@@ -25,10 +25,9 @@ static bool moving_pred(struct keybuf *buf, struct bkey *k) · 24 unmodified lines
2525 unsigned i;
2626
2727 for (i = 0; i < KEY_PTRS(k); i++) {
28− struct cache *ca = PTR_CACHE(c, k, i);
2928 struct bucket *g = PTR_BUCKET(c, k, i);
3029
31− if (GC_SECTORS_USED(g) < ca->gc_move_threshold)
30+ if (GC_MOVE(g))
3231 return true;
3332 }
3433
@@ -65,11 +64,16 @@ static void write_moving_finish(struct closure *cl) · 30 unmodified lines
6564
6665 static void read_moving_endio(struct bio *bio, int error)
6766 {
67+ struct bbio *b = container_of(bio, struct bbio, bio);
6868 struct moving_io *io = container_of(bio->bi_private,
6969 struct moving_io, cl);
7070
7171 if (error)
7272 io->op.error = error;
73+ else if (!KEY_DIRTY(&b->key) &&
74+ ptr_stale(io->op.c, &b->key, 0)) {
75+ io->op.error = -EINTR;
76+ }
7377
7478 bch_bbio_endio(io->op.c, bio, error, "reading data to move");
7579 }
@@ -141,6 +145,11 @@ static void read_moving(struct cache_set *c) · 65 unmodified lines
141145 if (!w)
142146 break;
143147
148+ if (ptr_stale(c, &w->key, 0)) {
149+ bch_keybuf_del(&c->moving_gc_keys, w);
150+ continue;
151+ }
152+
144153 io = kzalloc(sizeof(struct moving_io) + sizeof(struct bio_vec)
145154 * DIV_ROUND_UP(KEY_SIZE(&w->key), PAGE_SECTORS),
146155 GFP_KERNEL);
@@ -184,7 +193,8 @@ static bool bucket_cmp(struct bucket *l, struct bucket *r) · 37 unmodified lines
184193
185194 static unsigned bucket_heap_top(struct cache *ca)
186195 {
187− return GC_SECTORS_USED(heap_peek(&ca->heap));
196+ struct bucket *b;
197+ return (b = heap_peek(&ca->heap)) ? GC_SECTORS_USED(b) : 0;
188198 }
189199
190200 void bch_moving_gc(struct cache_set *c)
@@ -226,9 +236,8 @@ void bch_moving_gc(struct cache_set *c) · 35 unmodified lines
226236 sectors_to_move -= GC_SECTORS_USED(b);
227237 }
228238
229− ca->gc_move_threshold = bucket_heap_top(ca);
230−
231− pr_debug("threshold %u", ca->gc_move_threshold);
239+ while (heap_pop(&ca->heap, b, bucket_cmp))
240+ SET_GC_MOVE(b, 1);
232241 }
233242
234243 mutex_unlock(&c->bucket_lock);
drivers/md/bcache/super.c+1−1
@@ -1676,7 +1676,7 @@ err: · 1675 unmodified lines
16761676 static bool can_attach_cache(struct cache *ca, struct cache_set *c)
16771677 {
16781678 return ca->sb.block_size == c->sb.block_size &&
1679− ca->sb.bucket_size == c->sb.block_size &&
1679+ ca->sb.bucket_size == c->sb.bucket_size &&
16801680 ca->sb.nr_in_set == c->sb.nr_in_set;
16811681 }
16821682
drivers/md/bcache/sysfs.c+29−21
@@ -83,7 +83,6 @@ rw_attribute(writeback_rate); · 82 unmodified lines
8383 rw_attribute(writeback_rate_update_seconds);
8484 rw_attribute(writeback_rate_d_term);
8585 rw_attribute(writeback_rate_p_term_inverse);
86−rw_attribute(writeback_rate_d_smooth);
8786 read_attribute(writeback_rate_debug);
8887
8988 read_attribute(stripe_size);
@@ -129,31 +128,41 @@ SHOW(__bch_cached_dev) · 39 unmodified lines
129128 var_printf(writeback_running, "%i");
130129 var_print(writeback_delay);
131130 var_print(writeback_percent);
132− sysfs_print(writeback_rate, dc->writeback_rate.rate);
131+ sysfs_hprint(writeback_rate, dc->writeback_rate.rate << 9);
133132
134133 var_print(writeback_rate_update_seconds);
135134 var_print(writeback_rate_d_term);
136135 var_print(writeback_rate_p_term_inverse);
137− var_print(writeback_rate_d_smooth);
138136
139137 if (attr == &sysfs_writeback_rate_debug) {
138+ char rate[20];
140139 char dirty[20];
141− char derivative[20];
142140 char target[20];
143− bch_hprint(dirty,
144− bcache_dev_sectors_dirty(&dc->disk) << 9);
145− bch_hprint(derivative, dc->writeback_rate_derivative << 9);
141+ char proportional[20];
142+ char derivative[20];
143+ char change[20];
144+ s64 next_io;
145+
146+ bch_hprint(rate, dc->writeback_rate.rate << 9);
147+ bch_hprint(dirty, bcache_dev_sectors_dirty(&dc->disk) << 9);
146148 bch_hprint(target, dc->writeback_rate_target << 9);
149+ bch_hprint(proportional,dc->writeback_rate_proportional << 9);
150+ bch_hprint(derivative, dc->writeback_rate_derivative << 9);
151+ bch_hprint(change, dc->writeback_rate_change << 9);
152+
153+ next_io = div64_s64(dc->writeback_rate.next - local_clock(),
154+ NSEC_PER_MSEC);
147155
148156 return sprintf(buf,
149− "rate:\t\t%u\n"
150− "change:\t\t%i\n"
157+ "rate:\t\t%s/sec\n"
151158 "dirty:\t\t%s\n"
159+ "target:\t\t%s\n"
160+ "proportional:\t%s\n"
152161 "derivative:\t%s\n"
153− "target:\t\t%s\n",
154− dc->writeback_rate.rate,
155− dc->writeback_rate_change,
156− dirty, derivative, target);
162+ "change:\t\t%s/sec\n"
163+ "next io:\t%llims\n",
164+ rate, dirty, target, proportional,
165+ derivative, change, next_io);
157166 }
158167
159168 sysfs_hprint(dirty_data,
@@ -189,6 +198,7 @@ STORE(__cached_dev) · 29 unmodified lines
189198 struct kobj_uevent_env *env;
190199
191200 #define d_strtoul(var) sysfs_strtoul(var, dc->var)
201+#define d_strtoul_nonzero(var) sysfs_strtoul_clamp(var, dc->var, 1, INT_MAX)
192202 #define d_strtoi_h(var) sysfs_hatoi(var, dc->var)
193203
194204 sysfs_strtoul(data_csum, dc->disk.data_csum);
@@ -197,16 +207,15 @@ STORE(__cached_dev) · 2 unmodified lines
197207 d_strtoul(writeback_metadata);
198208 d_strtoul(writeback_running);
199209 d_strtoul(writeback_delay);
200− sysfs_strtoul_clamp(writeback_rate,
201− dc->writeback_rate.rate, 1, 1000000);
210+
202211 sysfs_strtoul_clamp(writeback_percent, dc->writeback_percent, 0, 40);
203212
204− d_strtoul(writeback_rate_update_seconds);
213+ sysfs_strtoul_clamp(writeback_rate,
214+ dc->writeback_rate.rate, 1, INT_MAX);
215+
216+ d_strtoul_nonzero(writeback_rate_update_seconds);
205217 d_strtoul(writeback_rate_d_term);
206− d_strtoul(writeback_rate_p_term_inverse);
207− sysfs_strtoul_clamp(writeback_rate_p_term_inverse,
208− dc->writeback_rate_p_term_inverse, 1, INT_MAX);
209− d_strtoul(writeback_rate_d_smooth);
218+ d_strtoul_nonzero(writeback_rate_p_term_inverse);
210219
211220 d_strtoi_h(sequential_cutoff);
212221 d_strtoi_h(readahead);
@@ -313,7 +322,6 @@ static struct attribute *bch_cached_dev_files[] = { · 100 unmodified lines
313322 &sysfs_writeback_rate_update_seconds,
314323 &sysfs_writeback_rate_d_term,
315324 &sysfs_writeback_rate_p_term_inverse,
316− &sysfs_writeback_rate_d_smooth,
317325 &sysfs_writeback_rate_debug,
318326 &sysfs_dirty_data,
319327 &sysfs_stripe_size,
drivers/md/bcache/util.c+7−1
@@ -209,7 +209,13 @@ uint64_t bch_next_delay(struct bch_ratelimit *d, uint64_t done) · 208 unmodified lines
209209 {
210210 uint64_t now = local_clock();
211211
212− d->next += div_u64(done, d->rate);
212+ d->next += div_u64(done * NSEC_PER_SEC, d->rate);
213+
214+ if (time_before64(now + NSEC_PER_SEC, d->next))
215+ d->next = now + NSEC_PER_SEC;
216+
217+ if (time_after64(now - NSEC_PER_SEC * 2, d->next))
218+ d->next = now - NSEC_PER_SEC * 2;
213219
214220 return time_after64(d->next, now)
215221 ? div_u64(d->next - now, NSEC_PER_SEC / HZ)
drivers/md/bcache/util.h+1−1
@@ -110,7 +110,7 @@ do { \ · 109 unmodified lines
110110 _r; \
111111 })
112112
113−#define heap_peek(h) ((h)->size ? (h)->data[0] : NULL)
113+#define heap_peek(h) ((h)->used ? (h)->data[0] : NULL)
114114
115115 #define heap_full(h) ((h)->used == (h)->size)
116116
drivers/md/bcache/writeback.c+25−28
@@ -30,38 +30,40 @@ static void __update_writeback_rate(struct cached_dev *dc) · 29 unmodified lines
3030
3131 /* PD controller */
3232
33− int change = 0;
34− int64_t error;
3533 int64_t dirty = bcache_dev_sectors_dirty(&dc->disk);
3634 int64_t derivative = dirty - dc->disk.sectors_dirty_last;
35+ int64_t proportional = dirty - target;
36+ int64_t change;
3737
3838 dc->disk.sectors_dirty_last = dirty;
3939
40− derivative *= dc->writeback_rate_d_term;
41− derivative = clamp(derivative, -dirty, dirty);
40+ /* Scale to sectors per second */
4241
43− derivative = ewma_add(dc->disk.sectors_dirty_derivative, derivative,
44− dc->writeback_rate_d_smooth, 0);
42+ proportional *= dc->writeback_rate_update_seconds;
43+ proportional = div_s64(proportional, dc->writeback_rate_p_term_inverse);
4544
46− /* Avoid divide by zero */
47− if (!target)
48− goto out;
45+ derivative = div_s64(derivative, dc->writeback_rate_update_seconds);
4946
50− error = div64_s64((dirty + derivative - target) << 8, target);
47+ derivative = ewma_add(dc->disk.sectors_dirty_derivative, derivative,
48+ (dc->writeback_rate_d_term /
49+ dc->writeback_rate_update_seconds) ?: 1, 0);
50+
51+ derivative *= dc->writeback_rate_d_term;
52+ derivative = div_s64(derivative, dc->writeback_rate_p_term_inverse);
5153
52− change = div_s64((dc->writeback_rate.rate * error) >> 8,
53− dc->writeback_rate_p_term_inverse);
54+ change = proportional + derivative;
5455
5556 /* Don't increase writeback rate if the device isn't keeping up */
5657 if (change > 0 &&
5758 time_after64(local_clock(),
58− dc->writeback_rate.next + 10 * NSEC_PER_MSEC))
59+ dc->writeback_rate.next + NSEC_PER_MSEC))
5960 change = 0;
6061
6162 dc->writeback_rate.rate =
62− clamp_t(int64_t, dc->writeback_rate.rate + change,
63+ clamp_t(int64_t, (int64_t) dc->writeback_rate.rate + change,
6364 1, NSEC_PER_MSEC);
64−out:
65+
66+ dc->writeback_rate_proportional = proportional;
6567 dc->writeback_rate_derivative = derivative;
6668 dc->writeback_rate_change = change;
6769 dc->writeback_rate_target = target;
@@ -87,15 +89,11 @@ static void update_writeback_rate(struct work_struct *work) · 19 unmodified lines
8789
8890 static unsigned writeback_delay(struct cached_dev *dc, unsigned sectors)
8991 {
90− uint64_t ret;
91−
9292 if (test_bit(BCACHE_DEV_DETACHING, &dc->disk.flags) ||
9393 !dc->writeback_percent)
9494 return 0;
9595
96− ret = bch_next_delay(&dc->writeback_rate, sectors * 10000000ULL);
97−
98− return min_t(uint64_t, ret, HZ);
96+ return bch_next_delay(&dc->writeback_rate, sectors);
9997 }
10098
10199 struct dirty_io {
@@ -241,7 +239,7 @@ static void read_dirty(struct cached_dev *dc) · 139 unmodified lines
241239 if (KEY_START(&w->key) != dc->last_read ||
242240 jiffies_to_msecs(delay) > 50)
243241 while (!kthread_should_stop() && delay)
244− delay = schedule_timeout_interruptible(delay);
242+ delay = schedule_timeout_uninterruptible(delay);
245243
246244 dc->last_read = KEY_OFFSET(&w->key);
247245
@@ -438,7 +436,7 @@ static int bch_writeback_thread(void *arg) · 190 unmodified lines
438436 while (delay &&
439437 !kthread_should_stop() &&
440438 !test_bit(BCACHE_DEV_DETACHING, &dc->disk.flags))
441− delay = schedule_timeout_interruptible(delay);
439+ delay = schedule_timeout_uninterruptible(delay);
442440 }
443441 }
444442
@@ -476,6 +474,8 @@ void bch_sectors_dirty_init(struct cached_dev *dc) · 31 unmodified lines
476474
477475 bch_btree_map_keys(&op.op, dc->disk.c, &KEY(op.inode, 0, 0),
478476 sectors_dirty_init_fn, 0);
477+
478+ dc->disk.sectors_dirty_last = bcache_dev_sectors_dirty(&dc->disk);
479479 }
480480
481481 int bch_cached_dev_writeback_init(struct cached_dev *dc)
@@ -490,18 +490,15 @@ int bch_cached_dev_writeback_init(struct cached_dev *dc) · 8 unmodified lines
490490 dc->writeback_delay = 30;
491491 dc->writeback_rate.rate = 1024;
492492
493− dc->writeback_rate_update_seconds = 30;
494− dc->writeback_rate_d_term = 16;
495− dc->writeback_rate_p_term_inverse = 64;
496− dc->writeback_rate_d_smooth = 8;
493+ dc->writeback_rate_update_seconds = 5;
494+ dc->writeback_rate_d_term = 30;
495+ dc->writeback_rate_p_term_inverse = 6000;
497496
498497 dc->writeback_thread = kthread_create(bch_writeback_thread, dc,
499498 "bcache_writeback");
500499 if (IS_ERR(dc->writeback_thread))
501500 return PTR_ERR(dc->writeback_thread);
502501
503− set_task_state(dc->writeback_thread, TASK_INTERRUPTIBLE);
504−
505502 INIT_DELAYED_WORK(&dc->writeback_rate_update, update_writeback_rate);
506503 schedule_delayed_work(&dc->writeback_rate_update,
507504 dc->writeback_rate_update_seconds * HZ);
drivers/net/can/usb/ems_usb.c+2−1
@@ -625,6 +625,7 @@ static int ems_usb_start(struct ems_usb *dev) · 624 unmodified lines
625625 usb_unanchor_urb(urb);
626626 usb_free_coherent(dev->udev, RX_BUFFER_SIZE, buf,
627627 urb->transfer_dma);
628+ usb_free_urb(urb);
628629 break;
629630 }
630631
@@ -798,8 +799,8 @@ static netdev_tx_t ems_usb_start_xmit(struct sk_buff *skb, struct net_device *ne · 167 unmodified lines
798799 * allowed (MAX_TX_URBS).
799800 */
800801 if (!context) {
801− usb_unanchor_urb(urb);
802802 usb_free_coherent(dev->udev, size, buf, urb->transfer_dma);
803+ usb_free_urb(urb);
803804
804805 netdev_warn(netdev, "couldn't find free context\n");
805806
drivers/net/can/usb/peak_usb/pcan_usb_pro.c+3−0
@@ -927,6 +927,9 @@ static int pcan_usb_pro_init(struct peak_usb_device *dev) · 926 unmodified lines
927927 /* set LED in default state (end of init phase) */
928928 pcan_usb_pro_set_led(dev, 0, 1);
929929
930+ kfree(bi);
931+ kfree(fi);
932+
930933 return 0;
931934
932935 err_out:
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c+21−26
@@ -447,8 +447,9 @@ irqreturn_t qlcnic_83xx_intr(int irq, void *data) · 446 unmodified lines
447447
448448 qlcnic_83xx_poll_process_aen(adapter);
449449
450− if (ahw->diag_test == QLCNIC_INTERRUPT_TEST) {
451− ahw->diag_cnt++;
450+ if (ahw->diag_test) {
451+ if (ahw->diag_test == QLCNIC_INTERRUPT_TEST)
452+ ahw->diag_cnt++;
452453 qlcnic_83xx_enable_legacy_msix_mbx_intr(adapter);
453454 return IRQ_HANDLED;
454455 }
@@ -1345,11 +1346,6 @@ static int qlcnic_83xx_diag_alloc_res(struct net_device *netdev, int test, · 890 unmodified lines
13451346 }
13461347
13471348 if (adapter->ahw->diag_test == QLCNIC_LOOPBACK_TEST) {
1348− /* disable and free mailbox interrupt */
1349− if (!(adapter->flags & QLCNIC_MSIX_ENABLED)) {
1350− qlcnic_83xx_enable_mbx_poll(adapter);
1351− qlcnic_83xx_free_mbx_intr(adapter);
1352− }
13531349 adapter->ahw->loopback_state = 0;
13541350 adapter->ahw->hw_ops->setup_link_event(adapter, 1);
13551351 }
@@ -1363,33 +1359,20 @@ static void qlcnic_83xx_diag_free_res(struct net_device *netdev, · 7 unmodified lines
13631359 {
13641360 struct qlcnic_adapter *adapter = netdev_priv(netdev);
13651361 struct qlcnic_host_sds_ring *sds_ring;
1366− int ring, err;
1362+ int ring;
13671363
13681364 clear_bit(__QLCNIC_DEV_UP, &adapter->state);
13691365 if (adapter->ahw->diag_test == QLCNIC_INTERRUPT_TEST) {
13701366 for (ring = 0; ring < adapter->drv_sds_rings; ring++) {
13711367 sds_ring = &adapter->recv_ctx->sds_rings[ring];
1372− qlcnic_83xx_disable_intr(adapter, sds_ring);
1373− if (!(adapter->flags & QLCNIC_MSIX_ENABLED))
1374− qlcnic_83xx_enable_mbx_poll(adapter);
1368+ if (adapter->flags & QLCNIC_MSIX_ENABLED)
1369+ qlcnic_83xx_disable_intr(adapter, sds_ring);
13751370 }
13761371 }
13771372
13781373 qlcnic_fw_destroy_ctx(adapter);
13791374 qlcnic_detach(adapter);
13801375
1381− if (adapter->ahw->diag_test == QLCNIC_LOOPBACK_TEST) {
1382− if (!(adapter->flags & QLCNIC_MSIX_ENABLED)) {
1383− err = qlcnic_83xx_setup_mbx_intr(adapter);
1384− qlcnic_83xx_disable_mbx_poll(adapter);
1385− if (err) {
1386− dev_err(&adapter->pdev->dev,
1387− "%s: failed to setup mbx interrupt\n",
1388− __func__);
1389− goto out;
1390− }
1391− }
1392− }
13931376 adapter->ahw->diag_test = 0;
13941377 adapter->drv_sds_rings = drv_sds_rings;
13951378
@@ -1399,9 +1382,6 @@ static void qlcnic_83xx_diag_free_res(struct net_device *netdev, · 3 unmodified lines
13991382 if (netif_running(netdev))
14001383 __qlcnic_up(adapter, netdev);
14011384
1402− if (adapter->ahw->diag_test == QLCNIC_INTERRUPT_TEST &&
1403− !(adapter->flags & QLCNIC_MSIX_ENABLED))
1404− qlcnic_83xx_disable_mbx_poll(adapter);
14051385 out:
14061386 netif_device_attach(netdev);
14071387 }
@@ -3754,6 +3734,19 @@ static void qlcnic_83xx_decode_mbx_rsp(struct qlcnic_adapter *adapter, · 2346 unmodified lines
37543734 return;
37553735 }
37563736
3737+static inline void qlcnic_dump_mailbox_registers(struct qlcnic_adapter *adapter)
3738+{
3739+ struct qlcnic_hardware_context *ahw = adapter->ahw;
3740+ u32 offset;
3741+
3742+ offset = QLCRDX(ahw, QLCNIC_DEF_INT_MASK);
3743+ dev_info(&adapter->pdev->dev, "Mbx interrupt mask=0x%x, Mbx interrupt enable=0x%x, Host mbx control=0x%x, Fw mbx control=0x%x",
3744+ readl(ahw->pci_base0 + offset),
3745+ QLCRDX(ahw, QLCNIC_MBX_INTR_ENBL),
3746+ QLCRDX(ahw, QLCNIC_HOST_MBX_CTRL),
3747+ QLCRDX(ahw, QLCNIC_FW_MBX_CTRL));
3748+}
3749+
37573750 static void qlcnic_83xx_mailbox_worker(struct work_struct *work)
37583751 {
37593752 struct qlcnic_mailbox *mbx = container_of(work, struct qlcnic_mailbox,
@@ -3798,6 +3791,8 @@ static void qlcnic_83xx_mailbox_worker(struct work_struct *work) · 38 unmodified lines
37983791 __func__, cmd->cmd_op, cmd->type, ahw->pci_func,
37993792 ahw->op_mode);
38003793 clear_bit(QLC_83XX_MBX_READY, &mbx->status);
3794+ qlcnic_dump_mailbox_registers(adapter);
3795+ qlcnic_83xx_get_mbx_data(adapter, cmd);
38013796 qlcnic_dump_mbx(adapter, cmd);
38023797 qlcnic_83xx_idc_request_reset(adapter,
38033798 QLCNIC_FORCE_FW_DUMP_KEY);
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_hw.h+1−0
@@ -662,4 +662,5 @@ pci_ers_result_t qlcnic_83xx_io_error_detected(struct pci_dev *, · 661 unmodified lines
662662 pci_channel_state_t);
663663 pci_ers_result_t qlcnic_83xx_io_slot_reset(struct pci_dev *);
664664 void qlcnic_83xx_io_resume(struct pci_dev *);
665+void qlcnic_83xx_stop_hw(struct qlcnic_adapter *);
665666 #endif
drivers/net/ethernet/qlogic/qlcnic/qlcnic_83xx_init.c+40−25
@@ -740,6 +740,7 @@ static int qlcnic_83xx_idc_unknown_state(struct qlcnic_adapter *adapter) · 739 unmodified lines
740740 adapter->ahw->idc.err_code = -EIO;
741741 dev_err(&adapter->pdev->dev,
742742 "%s: Device in unknown state\n", __func__);
743+ clear_bit(__QLCNIC_RESETTING, &adapter->state);
743744 return 0;
744745 }
745746
@@ -818,7 +819,6 @@ static int qlcnic_83xx_idc_ready_state(struct qlcnic_adapter *adapter) · 72 unmodified lines
818819 struct qlcnic_hardware_context *ahw = adapter->ahw;
819820 struct qlcnic_mailbox *mbx = ahw->mailbox;
820821 int ret = 0;
821− u32 owner;
822822 u32 val;
823823
824824 /* Perform NIC configuration based ready state entry actions */
@@ -848,9 +848,9 @@ static int qlcnic_83xx_idc_ready_state(struct qlcnic_adapter *adapter) · 23 unmodified lines
848848 set_bit(__QLCNIC_RESETTING, &adapter->state);
849849 qlcnic_83xx_idc_enter_need_reset_state(adapter, 1);
850850 } else {
851− owner = qlcnic_83xx_idc_find_reset_owner_id(adapter);
852− if (ahw->pci_func == owner)
853− qlcnic_dump_fw(adapter);
851+ netdev_info(adapter->netdev, "%s: Auto firmware recovery is disabled\n",
852+ __func__);
853+ qlcnic_83xx_idc_enter_failed_state(adapter, 1);
854854 }
855855 return -EIO;
856856 }
@@ -948,13 +948,26 @@ static int qlcnic_83xx_idc_need_quiesce_state(struct qlcnic_adapter *adapter) · 91 unmodified lines
948948 return 0;
949949 }
950950
951−static int qlcnic_83xx_idc_failed_state(struct qlcnic_adapter *adapter)
951+static void qlcnic_83xx_idc_failed_state(struct qlcnic_adapter *adapter)
952952 {
953− dev_err(&adapter->pdev->dev, "%s: please restart!!\n", __func__);
953+ struct qlcnic_hardware_context *ahw = adapter->ahw;
954+ u32 val, owner;
955+
956+ val = QLCRDX(adapter->ahw, QLC_83XX_IDC_CTRL);
957+ if (val & QLC_83XX_IDC_DISABLE_FW_RESET_RECOVERY) {
958+ owner = qlcnic_83xx_idc_find_reset_owner_id(adapter);
959+ if (ahw->pci_func == owner) {
960+ qlcnic_83xx_stop_hw(adapter);
961+ qlcnic_dump_fw(adapter);
962+ }
963+ }
964+
965+ netdev_warn(adapter->netdev, "%s: Reboot will be required to recover the adapter!!\n",
966+ __func__);
954967 clear_bit(__QLCNIC_RESETTING, &adapter->state);
955− adapter->ahw->idc.err_code = -EIO;
968+ ahw->idc.err_code = -EIO;
956969
957− return 0;
970+ return;
958971 }
959972
960973 static int qlcnic_83xx_idc_quiesce_state(struct qlcnic_adapter *adapter)
@@ -1063,12 +1076,6 @@ void qlcnic_83xx_idc_poll_dev_state(struct work_struct *work) · 102 unmodified lines
10631076 adapter->ahw->idc.prev_state = adapter->ahw->idc.curr_state;
10641077 qlcnic_83xx_periodic_tasks(adapter);
10651078
1066− /* Do not reschedule if firmaware is in hanged state and auto
1067− * recovery is disabled
1068− */
1069− if ((adapter->flags & QLCNIC_FW_HANG) && !qlcnic_auto_fw_reset)
1070− return;
1071−
10721079 /* Re-schedule the function */
10731080 if (test_bit(QLC_83XX_MODULE_LOADED, &adapter->ahw->idc.status))
10741081 qlcnic_schedule_work(adapter, qlcnic_83xx_idc_poll_dev_state,
@@ -1219,10 +1226,10 @@ void qlcnic_83xx_idc_request_reset(struct qlcnic_adapter *adapter, u32 key) · 144 unmodified lines
12191226 }
12201227
12211228 val = QLCRDX(adapter->ahw, QLC_83XX_IDC_CTRL);
1222− if ((val & QLC_83XX_IDC_DISABLE_FW_RESET_RECOVERY) ||
1223− !qlcnic_auto_fw_reset) {
1224− dev_err(&adapter->pdev->dev,
1225− "%s:failed, device in non reset mode\n", __func__);
1229+ if (val & QLC_83XX_IDC_DISABLE_FW_RESET_RECOVERY) {
1230+ netdev_info(adapter->netdev, "%s: Auto firmware recovery is disabled\n",
1231+ __func__);
1232+ qlcnic_83xx_idc_enter_failed_state(adapter, 0);
12261233 qlcnic_83xx_unlock_driver(adapter);
12271234 return;
12281235 }
@@ -1254,24 +1261,24 @@ static int qlcnic_83xx_copy_bootloader(struct qlcnic_adapter *adapter) · 25 unmodified lines
12541261 if (size & 0xF)
12551262 size = (size + 16) & ~0xF;
12561263
1257− p_cache = kzalloc(size, GFP_KERNEL);
1264+ p_cache = vzalloc(size);
12581265 if (p_cache == NULL)
12591266 return -ENOMEM;
12601267
12611268 ret = qlcnic_83xx_lockless_flash_read32(adapter, src, p_cache,
12621269 size / sizeof(u32));
12631270 if (ret) {
1264− kfree(p_cache);
1271+ vfree(p_cache);
12651272 return ret;
12661273 }
12671274 /* 16 byte write to MS memory */
12681275 ret = qlcnic_83xx_ms_mem_write128(adapter, dest, (u32 *)p_cache,
12691276 size / 16);
12701277 if (ret) {
1271− kfree(p_cache);
1278+ vfree(p_cache);
12721279 return ret;
12731280 }
1274− kfree(p_cache);
1281+ vfree(p_cache);
12751282
12761283 return ret;
12771284 }
@@ -1939,7 +1946,7 @@ static void qlcnic_83xx_exec_template_cmd(struct qlcnic_adapter *p_dev, · 661 unmodified lines
19391946 p_dev->ahw->reset.seq_index = index;
19401947 }
19411948
1942−static void qlcnic_83xx_stop_hw(struct qlcnic_adapter *p_dev)
1949+void qlcnic_83xx_stop_hw(struct qlcnic_adapter *p_dev)
19431950 {
19441951 p_dev->ahw->reset.seq_index = 0;
19451952
@@ -1994,6 +2001,14 @@ static int qlcnic_83xx_restart_hw(struct qlcnic_adapter *adapter) · 48 unmodified lines
19942001 val = QLCRDX(adapter->ahw, QLC_83XX_IDC_CTRL);
19952002 if (!(val & QLC_83XX_IDC_GRACEFULL_RESET))
19962003 qlcnic_dump_fw(adapter);
2004+
2005+ if (val & QLC_83XX_IDC_DISABLE_FW_RESET_RECOVERY) {
2006+ netdev_info(adapter->netdev, "%s: Auto firmware recovery is disabled\n",
2007+ __func__);
2008+ qlcnic_83xx_idc_enter_failed_state(adapter, 1);
2009+ return err;
2010+ }
2011+
19972012 qlcnic_83xx_init_hw(adapter);
19982013
19992014 if (qlcnic_83xx_copy_bootloader(adapter))
@@ -2073,8 +2088,8 @@ int qlcnic_83xx_configure_opmode(struct qlcnic_adapter *adapter) · 73 unmodified lines
20732088 ahw->nic_mode = QLCNIC_DEFAULT_MODE;
20742089 adapter->nic_ops->init_driver = qlcnic_83xx_init_default_driver;
20752090 ahw->idc.state_entry = qlcnic_83xx_idc_ready_state_entry;
2076− adapter->max_sds_rings = ahw->max_rx_ques;
2077− adapter->max_tx_rings = ahw->max_tx_ques;
2091+ adapter->max_sds_rings = QLCNIC_MAX_SDS_RINGS;
2092+ adapter->max_tx_rings = QLCNIC_MAX_TX_RINGS;
20782093 } else {
20792094 return -EIO;
20802095 }
drivers/net/ethernet/qlogic/qlcnic/qlcnic_ethtool.c+8−11
@@ -667,30 +667,25 @@ qlcnic_set_ringparam(struct net_device *dev, · 666 unmodified lines
667667 static int qlcnic_validate_ring_count(struct qlcnic_adapter *adapter,
668668 u8 rx_ring, u8 tx_ring)
669669 {
670+ if (rx_ring == 0 || tx_ring == 0)
671+ return -EINVAL;
672+
670673 if (rx_ring != 0) {
671674 if (rx_ring > adapter->max_sds_rings) {
672− netdev_err(adapter->netdev, "Invalid ring count, SDS ring count %d should not be greater than max %d driver sds rings.\n",
675+ netdev_err(adapter->netdev,
676+ "Invalid ring count, SDS ring count %d should not be greater than max %d driver sds rings.\n",
673677 rx_ring, adapter->max_sds_rings);
674678 return -EINVAL;
675679 }
676680 }
677681
678682 if (tx_ring != 0) {
679− if (qlcnic_82xx_check(adapter) &&
680− (tx_ring > adapter->max_tx_rings)) {
683+ if (tx_ring > adapter->max_tx_rings) {
681684 netdev_err(adapter->netdev,
682685 "Invalid ring count, Tx ring count %d should not be greater than max %d driver Tx rings.\n",
683686 tx_ring, adapter->max_tx_rings);
684687 return -EINVAL;
685688 }
686−
687− if (qlcnic_83xx_check(adapter) &&
688− (tx_ring > QLCNIC_SINGLE_RING)) {
689− netdev_err(adapter->netdev,
690− "Invalid ring count, Tx ring count %d should not be greater than %d driver Tx rings.\n",
691− tx_ring, QLCNIC_SINGLE_RING);
692− return -EINVAL;
693− }
694689 }
695690
696691 return 0;
@@ -948,6 +943,7 @@ static int qlcnic_irq_test(struct net_device *netdev) · 251 unmodified lines
948943 struct qlcnic_hardware_context *ahw = adapter->ahw;
949944 struct qlcnic_cmd_args cmd;
950945 int ret, drv_sds_rings = adapter->drv_sds_rings;
946+ int drv_tx_rings = adapter->drv_tx_rings;
951947
952948 if (qlcnic_83xx_check(adapter))
953949 return qlcnic_83xx_interrupt_test(netdev);
@@ -980,6 +976,7 @@ free_diag_res: · 26 unmodified lines
980976
981977 clear_diag_irq:
982978 adapter->drv_sds_rings = drv_sds_rings;
979+ adapter->drv_tx_rings = drv_tx_rings;
983980 clear_bit(__QLCNIC_RESETTING, &adapter->state);
984981
985982 return ret;
drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c+2−8
@@ -687,17 +687,11 @@ void qlcnic_advert_link_change(struct qlcnic_adapter *adapter, int linkup) · 686 unmodified lines
687687 if (adapter->ahw->linkup && !linkup) {
688688 netdev_info(netdev, "NIC Link is down\n");
689689 adapter->ahw->linkup = 0;
690− if (netif_running(netdev)) {
691− netif_carrier_off(netdev);
692− netif_tx_stop_all_queues(netdev);
693− }
690+ netif_carrier_off(netdev);
694691 } else if (!adapter->ahw->linkup && linkup) {
695692 netdev_info(netdev, "NIC Link is up\n");
696693 adapter->ahw->linkup = 1;
697− if (netif_running(netdev)) {
698− netif_carrier_on(netdev);
699− netif_wake_queue(netdev);
700− }
694+ netif_carrier_on(netdev);
701695 }
702696 }
703697
drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c+1−1
@@ -1178,6 +1178,7 @@ qlcnic_initialize_nic(struct qlcnic_adapter *adapter) · 1177 unmodified lines
11781178 } else {
11791179 adapter->ahw->nic_mode = QLCNIC_DEFAULT_MODE;
11801180 adapter->max_tx_rings = QLCNIC_MAX_HW_TX_RINGS;
1181+ adapter->max_sds_rings = QLCNIC_MAX_SDS_RINGS;
11811182 adapter->flags &= ~QLCNIC_ESWITCH_ENABLED;
11821183 }
11831184
@@ -1940,7 +1941,6 @@ int qlcnic_diag_alloc_res(struct net_device *netdev, int test) · 756 unmodified lines
19401941 qlcnic_detach(adapter);
19411942
19421943 adapter->drv_sds_rings = QLCNIC_SINGLE_RING;
1943− adapter->drv_tx_rings = QLCNIC_SINGLE_RING;
19441944 adapter->ahw->diag_test = test;
19451945 adapter->ahw->linkup = 0;
19461946
drivers/net/hyperv/netvsc_drv.c+0−1
@@ -327,7 +327,6 @@ static int netvsc_change_mtu(struct net_device *ndev, int mtu) · 326 unmodified lines
327327 return -EINVAL;
328328
329329 nvdev->start_remove = true;
330− cancel_delayed_work_sync(&ndevctx->dwork);
331330 cancel_work_sync(&ndevctx->work);
332331 netif_tx_disable(ndev);
333332 rndis_filter_device_remove(hdev);
drivers/net/xen-netback/netback.c+3−0
@@ -1197,6 +1197,9 @@ static int checksum_setup_ip(struct xenvif *vif, struct sk_buff *skb, · 1196 unmodified lines
11971197
11981198 err = -EPROTO;
11991199
1200+ if (fragment)
1201+ goto out;
1202+
12001203 switch (ip_hdr(skb)->protocol) {
12011204 case IPPROTO_TCP:
12021205 err = maybe_pull_tail(skb,
drivers/phy/Kconfig+2−2
@@ -24,8 +24,8 @@ config PHY_EXYNOS_MIPI_VIDEO · 23 unmodified lines
2424 config OMAP_USB2
2525 tristate "OMAP USB2 PHY Driver"
2626 depends on ARCH_OMAP2PLUS
27+ depends on USB_PHY
2728 select GENERIC_PHY
28− select USB_PHY
2929 select OMAP_CONTROL_USB
3030 help
3131 Enable this to support the transceiver that is part of SOC. This
@@ -36,8 +36,8 @@ config OMAP_USB2 · 4 unmodified lines
3636 config TWL4030_USB
3737 tristate "TWL4030 USB Transceiver Driver"
3838 depends on TWL4030_CORE && REGULATOR_TWL4030 && USB_MUSB_OMAP2PLUS
39+ depends on USB_PHY
3940 select GENERIC_PHY
40− select USB_PHY
4141 help
4242 Enable this to support the USB OTG transceiver on TWL4030
4343 family chips (including the TWL5030 and TPS659x0 devices).
drivers/phy/phy-core.c+10−16
@@ -437,23 +437,18 @@ struct phy *phy_create(struct device *dev, const struct phy_ops *ops, · 436 unmodified lines
437437 int id;
438438 struct phy *phy;
439439
440− if (!dev) {
441− dev_WARN(dev, "no device provided for PHY\n");
442− ret = -EINVAL;
443− goto err0;
444− }
440+ if (WARN_ON(!dev))
441+ return ERR_PTR(-EINVAL);
445442
446443 phy = kzalloc(sizeof(*phy), GFP_KERNEL);
447− if (!phy) {
448− ret = -ENOMEM;
449− goto err0;
450− }
444+ if (!phy)
445+ return ERR_PTR(-ENOMEM);
451446
452447 id = ida_simple_get(&phy_ida, 0, 0, GFP_KERNEL);
453448 if (id < 0) {
454449 dev_err(dev, "unable to get id\n");
455450 ret = id;
456− goto err0;
451+ goto free_phy;
457452 }
458453
459454 device_initialize(&phy->dev);
@@ -468,11 +463,11 @@ struct phy *phy_create(struct device *dev, const struct phy_ops *ops, · 8 unmodified lines
468463
469464 ret = dev_set_name(&phy->dev, "phy-%s.%d", dev_name(dev), id);
470465 if (ret)
471− goto err1;
466+ goto put_dev;
472467
473468 ret = device_add(&phy->dev);
474469 if (ret)
475− goto err1;
470+ goto put_dev;
476471
477472 if (pm_runtime_enabled(dev)) {
478473 pm_runtime_enable(&phy->dev);
@@ -481,12 +476,11 @@ struct phy *phy_create(struct device *dev, const struct phy_ops *ops, · 2 unmodified lines
481476
482477 return phy;
483478
484−err1:
485− ida_remove(&phy_ida, phy->id);
479+put_dev:
486480 put_device(&phy->dev);
481+ ida_remove(&phy_ida, phy->id);
482+free_phy:
487483 kfree(phy);
488−
489−err0:
490484 return ERR_PTR(ret);
491485 }
492486 EXPORT_SYMBOL_GPL(phy_create);
drivers/pinctrl/pinctrl-baytrail.c+1−0
@@ -512,6 +512,7 @@ static const struct dev_pm_ops byt_gpio_pm_ops = { · 511 unmodified lines
512512
513513 static const struct acpi_device_id byt_gpio_acpi_match[] = {
514514 { "INT33B2", 0 },
515+ { "INT33FC", 0 },
515516 { }
516517 };
517518 MODULE_DEVICE_TABLE(acpi, byt_gpio_acpi_match);
drivers/pinctrl/sh-pfc/sh_pfc.h+1−1
@@ -254,7 +254,7 @@ struct sh_pfc_soc_info { · 253 unmodified lines
254254 #define PINMUX_GPIO(_pin) \
255255 [GPIO_##_pin] = { \
256256 .pin = (u16)-1, \
257− .name = __stringify(name), \
257+ .name = __stringify(GPIO_##_pin), \
258258 .enum_id = _pin##_DATA, \
259259 }
260260
drivers/powercap/intel_rapl.c+11−2
@@ -833,6 +833,11 @@ static int rapl_write_data_raw(struct rapl_domain *rd, · 832 unmodified lines
833833 return 0;
834834 }
835835
836+static const struct x86_cpu_id energy_unit_quirk_ids[] = {
837+ { X86_VENDOR_INTEL, 6, 0x37},/* VLV */
838+ {}
839+};
840+
836841 static int rapl_check_unit(struct rapl_package *rp, int cpu)
837842 {
838843 u64 msr_val;
@@ -853,8 +858,11 @@ static int rapl_check_unit(struct rapl_package *rp, int cpu) · 14 unmodified lines
853858 * time unit: 1/time_unit_divisor Seconds
854859 */
855860 value = (msr_val & ENERGY_UNIT_MASK) >> ENERGY_UNIT_OFFSET;
856− rp->energy_unit_divisor = 1 << value;
857−
861+ /* some CPUs have different way to calculate energy unit */
862+ if (x86_match_cpu(energy_unit_quirk_ids))
863+ rp->energy_unit_divisor = 1000000 / (1 << value);
864+ else
865+ rp->energy_unit_divisor = 1 << value;
858866
859867 value = (msr_val & POWER_UNIT_MASK) >> POWER_UNIT_OFFSET;
860868 rp->power_unit_divisor = 1 << value;
@@ -941,6 +949,7 @@ static void package_power_limit_irq_restore(int package_id) · 80 unmodified lines
941949 static const struct x86_cpu_id rapl_ids[] = {
942950 { X86_VENDOR_INTEL, 6, 0x2a},/* SNB */
943951 { X86_VENDOR_INTEL, 6, 0x2d},/* SNB EP */
952+ { X86_VENDOR_INTEL, 6, 0x37},/* VLV */
944953 { X86_VENDOR_INTEL, 6, 0x3a},/* IVB */
945954 { X86_VENDOR_INTEL, 6, 0x45},/* HSW */
946955 /* TODO: Add more CPU IDs after testing */
drivers/regulator/s2mps11.c+1−1
@@ -438,7 +438,7 @@ common_reg: · 437 unmodified lines
438438 platform_set_drvdata(pdev, s2mps11);
439439
440440 config.dev = &pdev->dev;
441− config.regmap = iodev->regmap;
441+ config.regmap = iodev->regmap_pmic;
442442 config.driver_data = s2mps11;
443443 for (i = 0; i < S2MPS11_REGULATOR_MAX; i++) {
444444 if (!reg_np) {
drivers/scsi/qla2xxx/qla_target.c+6−4
@@ -471,7 +471,7 @@ static void qlt_schedule_sess_for_deletion(struct qla_tgt_sess *sess, · 470 unmodified lines
471471 schedule_delayed_work(&tgt->sess_del_work, 0);
472472 else
473473 schedule_delayed_work(&tgt->sess_del_work,
474− jiffies - sess->expires);
474+ sess->expires - jiffies);
475475 }
476476
477477 /* ha->hardware_lock supposed to be held on entry */
@@ -550,13 +550,14 @@ static void qlt_del_sess_work_fn(struct delayed_work *work) · 72 unmodified lines
550550 struct scsi_qla_host *vha = tgt->vha;
551551 struct qla_hw_data *ha = vha->hw;
552552 struct qla_tgt_sess *sess;
553− unsigned long flags;
553+ unsigned long flags, elapsed;
554554
555555 spin_lock_irqsave(&ha->hardware_lock, flags);
556556 while (!list_empty(&tgt->del_sess_list)) {
557557 sess = list_entry(tgt->del_sess_list.next, typeof(*sess),
558558 del_list_entry);
559− if (time_after_eq(jiffies, sess->expires)) {
559+ elapsed = jiffies;
560+ if (time_after_eq(elapsed, sess->expires)) {
560561 qlt_undelete_sess(sess);
561562
562563 ql_dbg(ql_dbg_tgt_mgt, vha, 0xf004,
@@ -566,7 +567,7 @@ static void qlt_del_sess_work_fn(struct delayed_work *work) · 3 unmodified lines
566567 ha->tgt.tgt_ops->put_sess(sess);
567568 } else {
568569 schedule_delayed_work(&tgt->sess_del_work,
569− jiffies - sess->expires);
570+ sess->expires - elapsed);
570571 break;
571572 }
572573 }
@@ -4290,6 +4291,7 @@ int qlt_lport_register(struct qla_tgt_func_tmpl *qla_tgt_ops, u64 wwpn, · 3717 unmodified lines
42904291 if (rc != 0) {
42914292 ha->tgt.tgt_ops = NULL;
42924293 ha->tgt.target_lport_ptr = NULL;
4294+ scsi_host_put(host);
42934295 }
42944296 mutex_unlock(&qla_tgt_mutex);
42954297 return rc;
drivers/staging/comedi/drivers.c+1−1
@@ -446,7 +446,7 @@ int comedi_load_firmware(struct comedi_device *dev, · 445 unmodified lines
446446 release_firmware(fw);
447447 }
448448
449− return ret;
449+ return ret < 0 ? ret : 0;
450450 }
451451 EXPORT_SYMBOL_GPL(comedi_load_firmware);
452452
drivers/staging/comedi/drivers/8255_pci.c+12−3
@@ -63,7 +63,8 @@ enum pci_8255_boardid { · 62 unmodified lines
6363 BOARD_ADLINK_PCI7296,
6464 BOARD_CB_PCIDIO24,
6565 BOARD_CB_PCIDIO24H,
66− BOARD_CB_PCIDIO48H,
66+ BOARD_CB_PCIDIO48H_OLD,
67+ BOARD_CB_PCIDIO48H_NEW,
6768 BOARD_CB_PCIDIO96H,
6869 BOARD_NI_PCIDIO96,
6970 BOARD_NI_PCIDIO96B,
@@ -106,11 +107,16 @@ static const struct pci_8255_boardinfo pci_8255_boards[] = { · 36 unmodified lines
106107 .dio_badr = 2,
107108 .n_8255 = 1,
108109 },
109− [BOARD_CB_PCIDIO48H] = {
110+ [BOARD_CB_PCIDIO48H_OLD] = {
110111 .name = "cb_pci-dio48h",
111112 .dio_badr = 1,
112113 .n_8255 = 2,
113114 },
115+ [BOARD_CB_PCIDIO48H_NEW] = {
116+ .name = "cb_pci-dio48h",
117+ .dio_badr = 2,
118+ .n_8255 = 2,
119+ },
114120 [BOARD_CB_PCIDIO96H] = {
115121 .name = "cb_pci-dio96h",
116122 .dio_badr = 2,
@@ -263,7 +269,10 @@ static DEFINE_PCI_DEVICE_TABLE(pci_8255_pci_table) = { · 146 unmodified lines
263269 { PCI_VDEVICE(ADLINK, 0x7296), BOARD_ADLINK_PCI7296 },
264270 { PCI_VDEVICE(CB, 0x0028), BOARD_CB_PCIDIO24 },
265271 { PCI_VDEVICE(CB, 0x0014), BOARD_CB_PCIDIO24H },
266− { PCI_VDEVICE(CB, 0x000b), BOARD_CB_PCIDIO48H },
272+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_CB, 0x000b, 0x0000, 0x0000),
273+ .driver_data = BOARD_CB_PCIDIO48H_OLD },
274+ { PCI_DEVICE_SUB(PCI_VENDOR_ID_CB, 0x000b, PCI_VENDOR_ID_CB, 0x000b),
275+ .driver_data = BOARD_CB_PCIDIO48H_NEW },
267276 { PCI_VDEVICE(CB, 0x0017), BOARD_CB_PCIDIO96H },
268277 { PCI_VDEVICE(NI, 0x0160), BOARD_NI_PCIDIO96 },
269278 { PCI_VDEVICE(NI, 0x1630), BOARD_NI_PCIDIO96B },
drivers/staging/iio/magnetometer/hmc5843.c+6−1
@@ -451,7 +451,12 @@ done: · 450 unmodified lines
451451 .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE) | \
452452 BIT(IIO_CHAN_INFO_SAMP_FREQ), \
453453 .scan_index = idx, \
454− .scan_type = IIO_ST('s', 16, 16, IIO_BE), \
454+ .scan_type = { \
455+ .sign = 's', \
456+ .realbits = 16, \
457+ .storagebits = 16, \
458+ .endianness = IIO_BE, \
459+ }, \
455460 }
456461
457462 static const struct iio_chan_spec hmc5843_channels[] = {
drivers/staging/imx-drm/imx-drm-core.c+29−10
@@ -88,8 +88,9 @@ static int imx_drm_driver_unload(struct drm_device *drm) · 87 unmodified lines
8888
8989 imx_drm_device_put();
9090
91− drm_mode_config_cleanup(imxdrm->drm);
91+ drm_vblank_cleanup(imxdrm->drm);
9292 drm_kms_helper_poll_fini(imxdrm->drm);
93+ drm_mode_config_cleanup(imxdrm->drm);
9394
9495 return 0;
9596 }
@@ -199,8 +200,8 @@ static void imx_drm_driver_preclose(struct drm_device *drm, · 103 unmodified lines
199200 if (!file->is_master)
200201 return;
201202
202− for (i = 0; i < 4; i++)
203− imx_drm_disable_vblank(drm , i);
203+ for (i = 0; i < MAX_CRTC; i++)
204+ imx_drm_disable_vblank(drm, i);
204205 }
205206
206207 static const struct file_operations imx_drm_driver_fops = {
@@ -376,8 +377,6 @@ static int imx_drm_crtc_register(struct imx_drm_crtc *imx_drm_crtc) · 169 unmodified lines
376377 struct imx_drm_device *imxdrm = __imx_drm_device();
377378 int ret;
378379
379− drm_crtc_init(imxdrm->drm, imx_drm_crtc->crtc,
380− imx_drm_crtc->imx_drm_helper_funcs.crtc_funcs);
381380 ret = drm_mode_crtc_set_gamma_size(imx_drm_crtc->crtc, 256);
382381 if (ret)
383382 return ret;
@@ -385,6 +384,9 @@ static int imx_drm_crtc_register(struct imx_drm_crtc *imx_drm_crtc) · 1 unmodified line
385384 drm_crtc_helper_add(imx_drm_crtc->crtc,
386385 imx_drm_crtc->imx_drm_helper_funcs.crtc_helper_funcs);
387386
387+ drm_crtc_init(imxdrm->drm, imx_drm_crtc->crtc,
388+ imx_drm_crtc->imx_drm_helper_funcs.crtc_funcs);
389+
388390 drm_mode_group_reinit(imxdrm->drm);
389391
390392 return 0;
@@ -428,11 +430,11 @@ static int imx_drm_driver_load(struct drm_device *drm, unsigned long flags) · 37 unmodified lines
428430 ret = drm_mode_group_init_legacy_group(imxdrm->drm,
429431 &imxdrm->drm->primary->mode_group);
430432 if (ret)
431− goto err_init;
433+ goto err_kms;
432434
433435 ret = drm_vblank_init(imxdrm->drm, MAX_CRTC);
434436 if (ret)
435− goto err_init;
437+ goto err_kms;
436438
437439 /*
438440 * with vblank_disable_allowed = true, vblank interrupt will be disabled
@@ -441,12 +443,19 @@ static int imx_drm_driver_load(struct drm_device *drm, unsigned long flags) · 2 unmodified lines
441443 */
442444 imxdrm->drm->vblank_disable_allowed = true;
443445
444− if (!imx_drm_device_get())
446+ if (!imx_drm_device_get()) {
445447 ret = -EINVAL;
448+ goto err_vblank;
449+ }
446450
447− ret = 0;
451+ mutex_unlock(&imxdrm->mutex);
452+ return 0;
448453
449−err_init:
454+err_vblank:
455+ drm_vblank_cleanup(drm);
456+err_kms:
457+ drm_kms_helper_poll_fini(drm);
458+ drm_mode_config_cleanup(drm);
450459 mutex_unlock(&imxdrm->mutex);
451460
452461 return ret;
@@ -492,6 +501,15 @@ int imx_drm_add_crtc(struct drm_crtc *crtc, · 39 unmodified lines
492501
493502 mutex_lock(&imxdrm->mutex);
494503
504+ /*
505+ * The vblank arrays are dimensioned by MAX_CRTC - we can't
506+ * pass IDs greater than this to those functions.
507+ */
508+ if (imxdrm->pipes >= MAX_CRTC) {
509+ ret = -EINVAL;
510+ goto err_busy;
511+ }
512+
495513 if (imxdrm->drm->open_count) {
496514 ret = -EBUSY;
497515 goto err_busy;
@@ -528,6 +546,7 @@ int imx_drm_add_crtc(struct drm_crtc *crtc, · 30 unmodified lines
528546 return 0;
529547
530548 err_register:
549+ list_del(&imx_drm_crtc->list);
531550 kfree(imx_drm_crtc);
532551 err_alloc:
533552 err_busy:
drivers/staging/imx-drm/imx-tve.c+0−9
@@ -114,7 +114,6 @@ struct imx_tve { · 113 unmodified lines
114114 struct drm_encoder encoder;
115115 struct imx_drm_encoder *imx_drm_encoder;
116116 struct device *dev;
117− spinlock_t enable_lock; /* serializes tve_enable/disable */
118117 spinlock_t lock; /* register lock */
119118 bool enabled;
120119 int mode;
@@ -146,10 +145,8 @@ __releases(&tve->lock) · 25 unmodified lines
146145
147146 static void tve_enable(struct imx_tve *tve)
148147 {
149− unsigned long flags;
150148 int ret;
151149
152− spin_lock_irqsave(&tve->enable_lock, flags);
153150 if (!tve->enabled) {
154151 tve->enabled = true;
155152 clk_prepare_enable(tve->clk);
@@ -169,23 +166,18 @@ static void tve_enable(struct imx_tve *tve) · 13 unmodified lines
169166 TVE_CD_SM_IEN |
170167 TVE_CD_LM_IEN |
171168 TVE_CD_MON_END_IEN);
172−
173− spin_unlock_irqrestore(&tve->enable_lock, flags);
174169 }
175170
176171 static void tve_disable(struct imx_tve *tve)
177172 {
178− unsigned long flags;
179173 int ret;
180174
181− spin_lock_irqsave(&tve->enable_lock, flags);
182175 if (tve->enabled) {
183176 tve->enabled = false;
184177 ret = regmap_update_bits(tve->regmap, TVE_COM_CONF_REG,
185178 TVE_IPU_CLK_EN | TVE_EN, 0);
186179 clk_disable_unprepare(tve->clk);
187180 }
188− spin_unlock_irqrestore(&tve->enable_lock, flags);
189181 }
190182
191183 static int tve_setup_tvout(struct imx_tve *tve)
@@ -601,7 +593,6 @@ static int imx_tve_probe(struct platform_device *pdev) · 409 unmodified lines
601593
602594 tve->dev = &pdev->dev;
603595 spin_lock_init(&tve->lock);
604− spin_lock_init(&tve->enable_lock);
605596
606597 ddc_node = of_parse_phandle(np, "ddc", 0);
607598 if (ddc_node) {
drivers/staging/imx-drm/ipu-v3/ipu-common.c+16−16
@@ -996,35 +996,35 @@ static const struct ipu_platform_reg client_reg[] = { · 995 unmodified lines
996996 },
997997 };
998998
999+static DEFINE_MUTEX(ipu_client_id_mutex);
9991000 static int ipu_client_id;
10001001
1001−static int ipu_add_subdevice_pdata(struct device *dev,
1002− const struct ipu_platform_reg *reg)
1003−{
1004− struct platform_device *pdev;
1005−
1006− pdev = platform_device_register_data(dev, reg->name, ipu_client_id++,
1007− &reg->pdata, sizeof(struct ipu_platform_reg));
1008−
1009− return PTR_ERR_OR_ZERO(pdev);
1010−}
1011−
10121002 static int ipu_add_client_devices(struct ipu_soc *ipu)
10131003 {
1014− int ret;
1015− int i;
1004+ struct device *dev = ipu->dev;
1005+ unsigned i;
1006+ int id, ret;
1007+
1008+ mutex_lock(&ipu_client_id_mutex);
1009+ id = ipu_client_id;
1010+ ipu_client_id += ARRAY_SIZE(client_reg);
1011+ mutex_unlock(&ipu_client_id_mutex);
10161012
10171013 for (i = 0; i < ARRAY_SIZE(client_reg); i++) {
10181014 const struct ipu_platform_reg *reg = &client_reg[i];
1019− ret = ipu_add_subdevice_pdata(ipu->dev, reg);
1020− if (ret)
1015+ struct platform_device *pdev;
1016+
1017+ pdev = platform_device_register_data(dev, reg->name,
1018+ id++, &reg->pdata, sizeof(reg->pdata));
1019+
1020+ if (IS_ERR(pdev))
10211021 goto err_register;
10221022 }
10231023
10241024 return 0;
10251025
10261026 err_register:
1027− platform_device_unregister_children(to_platform_device(ipu->dev));
1027+ platform_device_unregister_children(to_platform_device(dev));
10281028
10291029 return ret;
10301030 }
drivers/target/iscsi/iscsi_target.c+13−14
@@ -465,6 +465,7 @@ int iscsit_del_np(struct iscsi_np *np) · 464 unmodified lines
465465 */
466466 send_sig(SIGINT, np->np_thread, 1);
467467 kthread_stop(np->np_thread);
468+ np->np_thread = NULL;
468469 }
469470
470471 np->np_transport->iscsit_free_np(np);
@@ -823,24 +824,22 @@ int iscsit_setup_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd, · 352 unmodified lines
823824 if (((hdr->flags & ISCSI_FLAG_CMD_READ) ||
824825 (hdr->flags & ISCSI_FLAG_CMD_WRITE)) && !hdr->data_length) {
825826 /*
826− * Vmware ESX v3.0 uses a modified Cisco Initiator (v3.4.2)
827− * that adds support for RESERVE/RELEASE. There is a bug
828− * add with this new functionality that sets R/W bits when
829− * neither CDB carries any READ or WRITE datapayloads.
827+ * From RFC-3720 Section 10.3.1:
828+ *
829+ * "Either or both of R and W MAY be 1 when either the
830+ * Expected Data Transfer Length and/or Bidirectional Read
831+ * Expected Data Transfer Length are 0"
832+ *
833+ * For this case, go ahead and clear the unnecssary bits
834+ * to avoid any confusion with ->data_direction.
830835 */
831− if ((hdr->cdb[0] == 0x16) || (hdr->cdb[0] == 0x17)) {
832− hdr->flags &= ~ISCSI_FLAG_CMD_READ;
833− hdr->flags &= ~ISCSI_FLAG_CMD_WRITE;
834− goto done;
835− }
836+ hdr->flags &= ~ISCSI_FLAG_CMD_READ;
837+ hdr->flags &= ~ISCSI_FLAG_CMD_WRITE;
836838
837− pr_err("ISCSI_FLAG_CMD_READ or ISCSI_FLAG_CMD_WRITE"
839+ pr_warn("ISCSI_FLAG_CMD_READ or ISCSI_FLAG_CMD_WRITE"
838840 " set when Expected Data Transfer Length is 0 for"
839− " CDB: 0x%02x. Bad iSCSI Initiator.\n", hdr->cdb[0]);
840− return iscsit_add_reject_cmd(cmd,
841− ISCSI_REASON_BOOKMARK_INVALID, buf);
841+ " CDB: 0x%02x, Fixing up flags\n", hdr->cdb[0]);
842842 }
843−done:
844843
845844 if (!(hdr->flags & ISCSI_FLAG_CMD_READ) &&
846845 !(hdr->flags & ISCSI_FLAG_CMD_WRITE) && (hdr->data_length != 0)) {
drivers/target/iscsi/iscsi_target_configfs.c+2−1
@@ -474,7 +474,8 @@ static ssize_t __iscsi_##prefix##_store_##name( \ · 473 unmodified lines
474474 \
475475 if (!capable(CAP_SYS_ADMIN)) \
476476 return -EPERM; \
477− \
477+ if (count >= sizeof(auth->name)) \
478+ return -EINVAL; \
478479 snprintf(auth->name, sizeof(auth->name), "%s", page); \
479480 if (!strncmp("NULL", auth->name, 4)) \
480481 auth->naf_flags &= ~flags; \
drivers/target/iscsi/iscsi_target_login.c+0−6
@@ -1403,11 +1403,6 @@ old_sess_out: · 1402 unmodified lines
14031403
14041404 out:
14051405 stop = kthread_should_stop();
1406− if (!stop && signal_pending(current)) {
1407− spin_lock_bh(&np->np_thread_lock);
1408− stop = (np->np_thread_state == ISCSI_NP_THREAD_SHUTDOWN);
1409− spin_unlock_bh(&np->np_thread_lock);
1410− }
14111406 /* Wait for another socket.. */
14121407 if (!stop)
14131408 return 1;
@@ -1415,7 +1410,6 @@ exit: · 1 unmodified line
14151410 iscsi_stop_login_thread_timer(np);
14161411 spin_lock_bh(&np->np_thread_lock);
14171412 np->np_thread_state = ISCSI_NP_THREAD_EXIT;
1418− np->np_thread = NULL;
14191413 spin_unlock_bh(&np->np_thread_lock);
14201414
14211415 return 0;
drivers/target/target_core_device.c+5−0
@@ -1106,6 +1106,11 @@ int se_dev_set_block_size(struct se_device *dev, u32 block_size) · 1105 unmodified lines
11061106 dev->dev_attrib.block_size = block_size;
11071107 pr_debug("dev[%p]: SE Device block_size changed to %u\n",
11081108 dev, block_size);
1109+
1110+ if (dev->dev_attrib.max_bytes_per_io)
1111+ dev->dev_attrib.hw_max_sectors =
1112+ dev->dev_attrib.max_bytes_per_io / block_size;
1113+
11091114 return 0;
11101115 }
11111116
drivers/target/target_core_file.c+4−4
@@ -66,9 +66,8 @@ static int fd_attach_hba(struct se_hba *hba, u32 host_id) · 65 unmodified lines
6666 pr_debug("CORE_HBA[%d] - TCM FILEIO HBA Driver %s on Generic"
6767 " Target Core Stack %s\n", hba->hba_id, FD_VERSION,
6868 TARGET_CORE_MOD_VERSION);
69− pr_debug("CORE_HBA[%d] - Attached FILEIO HBA: %u to Generic"
70− " MaxSectors: %u\n",
71− hba->hba_id, fd_host->fd_host_id, FD_MAX_SECTORS);
69+ pr_debug("CORE_HBA[%d] - Attached FILEIO HBA: %u to Generic\n",
70+ hba->hba_id, fd_host->fd_host_id);
7271
7372 return 0;
7473 }
@@ -220,7 +219,8 @@ static int fd_configure_device(struct se_device *dev) · 145 unmodified lines
220219 }
221220
222221 dev->dev_attrib.hw_block_size = fd_dev->fd_block_size;
223− dev->dev_attrib.hw_max_sectors = FD_MAX_SECTORS;
222+ dev->dev_attrib.max_bytes_per_io = FD_MAX_BYTES;
223+ dev->dev_attrib.hw_max_sectors = FD_MAX_BYTES / fd_dev->fd_block_size;
224224 dev->dev_attrib.hw_queue_depth = FD_MAX_DEVICE_QUEUE_DEPTH;
225225
226226 if (fd_dev->fbd_flags & FDBD_HAS_BUFFERED_IO_WCE) {
drivers/target/target_core_file.h+4−1
@@ -7,7 +7,10 @@ · 6 unmodified lines
77 #define FD_DEVICE_QUEUE_DEPTH 32
88 #define FD_MAX_DEVICE_QUEUE_DEPTH 128
99 #define FD_BLOCKSIZE 512
10−#define FD_MAX_SECTORS 2048
10+/*
11+ * Limited by the number of iovecs (2048) per vfs_[writev,readv] call
12+ */
13+#define FD_MAX_BYTES 8388608
1114
1215 #define RRF_EMULATE_CDB 0x01
1316 #define RRF_GOT_LBA 0x02
drivers/target/target_core_tpg.c+1−9
@@ -278,7 +278,6 @@ struct se_node_acl *core_tpg_check_initiator_node_acl( · 277 unmodified lines
278278 snprintf(acl->initiatorname, TRANSPORT_IQN_LEN, "%s", initiatorname);
279279 acl->se_tpg = tpg;
280280 acl->acl_index = scsi_get_new_index(SCSI_AUTH_INTR_INDEX);
281− spin_lock_init(&acl->stats_lock);
282281 acl->dynamic_node_acl = 1;
283282
284283 tpg->se_tpg_tfo->set_default_node_attributes(acl);
@@ -406,7 +405,6 @@ struct se_node_acl *core_tpg_add_initiator_node_acl( · 121 unmodified lines
406405 snprintf(acl->initiatorname, TRANSPORT_IQN_LEN, "%s", initiatorname);
407406 acl->se_tpg = tpg;
408407 acl->acl_index = scsi_get_new_index(SCSI_AUTH_INTR_INDEX);
409− spin_lock_init(&acl->stats_lock);
410408
411409 tpg->se_tpg_tfo->set_default_node_attributes(acl);
412410
@@ -658,15 +656,9 @@ static int core_tpg_setup_virtual_lun0(struct se_portal_group *se_tpg) · 245 unmodified lines
658656 spin_lock_init(&lun->lun_sep_lock);
659657 init_completion(&lun->lun_ref_comp);
660658
661− ret = percpu_ref_init(&lun->lun_ref, core_tpg_lun_ref_release);
662− if (ret < 0)
663− return ret;
664−
665659 ret = core_tpg_post_addlun(se_tpg, lun, lun_access, dev);
666− if (ret < 0) {
667− percpu_ref_cancel_init(&lun->lun_ref);
660+ if (ret < 0)
668661 return ret;
669− }
670662
671663 return 0;
672664 }
drivers/tty/n_tty.c+6−1
@@ -93,6 +93,7 @@ struct n_tty_data { · 92 unmodified lines
9393 size_t canon_head;
9494 size_t echo_head;
9595 size_t echo_commit;
96+ size_t echo_mark;
9697 DECLARE_BITMAP(char_map, 256);
9798
9899 /* private to n_tty_receive_overrun (single-threaded) */
@@ -336,6 +337,7 @@ static void reset_buffer_flags(struct n_tty_data *ldata) · 237 unmodified lines
336337 {
337338 ldata->read_head = ldata->canon_head = ldata->read_tail = 0;
338339 ldata->echo_head = ldata->echo_tail = ldata->echo_commit = 0;
340+ ldata->echo_mark = 0;
339341 ldata->line_start = 0;
340342
341343 ldata->erasing = 0;
@@ -787,6 +789,7 @@ static void commit_echoes(struct tty_struct *tty) · 445 unmodified lines
787789 size_t head;
788790
789791 head = ldata->echo_head;
792+ ldata->echo_mark = head;
790793 old = ldata->echo_commit - ldata->echo_tail;
791794
792795 /* Process committed echoes if the accumulated # of bytes
@@ -811,10 +814,11 @@ static void process_echoes(struct tty_struct *tty) · 18 unmodified lines
811814 size_t echoed;
812815
813816 if ((!L_ECHO(tty) && !L_ECHONL(tty)) ||
814− ldata->echo_commit == ldata->echo_tail)
817+ ldata->echo_mark == ldata->echo_tail)
815818 return;
816819
817820 mutex_lock(&ldata->output_lock);
821+ ldata->echo_commit = ldata->echo_mark;
818822 echoed = __process_echoes(tty);
819823 mutex_unlock(&ldata->output_lock);
820824
@@ -822,6 +826,7 @@ static void process_echoes(struct tty_struct *tty) · 1 unmodified line
822826 tty->ops->flush_chars(tty);
823827 }
824828
829+/* NB: echo_mark and echo_head should be equivalent here */
825830 static void flush_echoes(struct tty_struct *tty)
826831 {
827832 struct n_tty_data *ldata = tty->disc_data;
drivers/tty/serial/8250/8250_dw.c+6−2
@@ -96,7 +96,8 @@ static void dw8250_serial_out(struct uart_port *p, int offset, int value) · 95 unmodified lines
9696 if (offset == UART_LCR) {
9797 int tries = 1000;
9898 while (tries--) {
99− if (value == p->serial_in(p, UART_LCR))
99+ unsigned int lcr = p->serial_in(p, UART_LCR);
100+ if ((value & ~UART_LCR_SPAR) == (lcr & ~UART_LCR_SPAR))
100101 return;
101102 dw8250_force_idle(p);
102103 writeb(value, p->membase + (UART_LCR << p->regshift));
@@ -132,7 +133,8 @@ static void dw8250_serial_out32(struct uart_port *p, int offset, int value) · 29 unmodified lines
132133 if (offset == UART_LCR) {
133134 int tries = 1000;
134135 while (tries--) {
135− if (value == p->serial_in(p, UART_LCR))
136+ unsigned int lcr = p->serial_in(p, UART_LCR);
137+ if ((value & ~UART_LCR_SPAR) == (lcr & ~UART_LCR_SPAR))
136138 return;
137139 dw8250_force_idle(p);
138140 writel(value, p->membase + (UART_LCR << p->regshift));
@@ -455,6 +457,8 @@ MODULE_DEVICE_TABLE(of, dw8250_of_match); · 316 unmodified lines
455457 static const struct acpi_device_id dw8250_acpi_match[] = {
456458 { "INT33C4", 0 },
457459 { "INT33C5", 0 },
460+ { "INT3434", 0 },
461+ { "INT3435", 0 },
458462 { "80860F0A", 0 },
459463 { },
460464 };
drivers/tty/serial/xilinx_uartps.c+2−0
@@ -240,6 +240,7 @@ static irqreturn_t xuartps_isr(int irq, void *dev_id) · 239 unmodified lines
240240 continue;
241241 }
242242
243+#ifdef SUPPORT_SYSRQ
243244 /*
244245 * uart_handle_sysrq_char() doesn't work if
245246 * spinlocked, for some reason
@@ -253,6 +254,7 @@ static irqreturn_t xuartps_isr(int irq, void *dev_id) · 7 unmodified lines
253254 }
254255 spin_lock(&port->lock);
255256 }
257+#endif
256258
257259 port->icount.rx++;
258260
drivers/tty/tty_ldsem.c+13−3
@@ -86,11 +86,21 @@ static inline long ldsem_atomic_update(long delta, struct ld_semaphore *sem) · 85 unmodified lines
8686 return atomic_long_add_return(delta, (atomic_long_t *)&sem->count);
8787 }
8888
89+/*
90+ * ldsem_cmpxchg() updates @*old with the last-known sem->count value.
91+ * Returns 1 if count was successfully changed; @*old will have @new value.
92+ * Returns 0 if count was not changed; @*old will have most recent sem->count
93+ */
8994 static inline int ldsem_cmpxchg(long *old, long new, struct ld_semaphore *sem)
9095 {
91− long tmp = *old;
92− *old = atomic_long_cmpxchg(&sem->count, *old, new);
93− return *old == tmp;
96+ long tmp = atomic_long_cmpxchg(&sem->count, *old, new);
97+ if (tmp == *old) {
98+ *old = new;
99+ return 1;
100+ } else {
101+ *old = tmp;
102+ return 0;
103+ }
94104 }
95105
96106 /*
drivers/usb/chipidea/core.c+4−0
@@ -642,6 +642,10 @@ static int ci_hdrc_probe(struct platform_device *pdev) · 641 unmodified lines
642642 : CI_ROLE_GADGET;
643643 }
644644
645+ /* only update vbus status for peripheral */
646+ if (ci->role == CI_ROLE_GADGET)
647+ ci_handle_vbus_change(ci);
648+
645649 ret = ci_role_start(ci, ci->role);
646650 if (ret) {
647651 dev_err(dev, "can't start %s role\n", ci_role(ci)->name);
drivers/usb/chipidea/host.c+2−1
@@ -88,7 +88,8 @@ static int host_start(struct ci_hdrc *ci) · 87 unmodified lines
8888 return ret;
8989
9090 disable_reg:
91− regulator_disable(ci->platdata->reg_vbus);
91+ if (ci->platdata->reg_vbus)
92+ regulator_disable(ci->platdata->reg_vbus);
9293
9394 put_hcd:
9495 usb_put_hcd(hcd);
drivers/usb/chipidea/udc.c+0−3
@@ -1795,9 +1795,6 @@ static int udc_start(struct ci_hdrc *ci) · 1794 unmodified lines
17951795 pm_runtime_no_callbacks(&ci->gadget.dev);
17961796 pm_runtime_enable(&ci->gadget.dev);
17971797
1798− /* Update ci->vbus_active */
1799− ci_handle_vbus_change(ci);
1800−
18011798 return retval;
18021799
18031800 destroy_eps:
drivers/usb/class/cdc-wdm.c+3−5
@@ -854,13 +854,11 @@ static int wdm_manage_power(struct usb_interface *intf, int on) · 853 unmodified lines
854854 {
855855 /* need autopm_get/put here to ensure the usbcore sees the new value */
856856 int rv = usb_autopm_get_interface(intf);
857− if (rv < 0)
858− goto err;
859857
860858 intf->needs_remote_wakeup = on;
861− usb_autopm_put_interface(intf);
862−err:
863− return rv;
859+ if (!rv)
860+ usb_autopm_put_interface(intf);
861+ return 0;
864862 }
865863
866864 static int wdm_probe(struct usb_interface *intf, const struct usb_device_id *id)
drivers/usb/dwc3/core.c+5−3
@@ -455,9 +455,6 @@ static int dwc3_probe(struct platform_device *pdev) · 454 unmodified lines
455455 if (IS_ERR(regs))
456456 return PTR_ERR(regs);
457457
458− usb_phy_set_suspend(dwc->usb2_phy, 0);
459− usb_phy_set_suspend(dwc->usb3_phy, 0);
460−
461458 spin_lock_init(&dwc->lock);
462459 platform_set_drvdata(pdev, dwc);
463460
@@ -488,6 +485,9 @@ static int dwc3_probe(struct platform_device *pdev) · 24 unmodified lines
488485 goto err0;
489486 }
490487
488+ usb_phy_set_suspend(dwc->usb2_phy, 0);
489+ usb_phy_set_suspend(dwc->usb3_phy, 0);
490+
491491 ret = dwc3_event_buffers_setup(dwc);
492492 if (ret) {
493493 dev_err(dwc->dev, "failed to setup event buffers\n");
@@ -569,6 +569,8 @@ err2: · 75 unmodified lines
569569 dwc3_event_buffers_cleanup(dwc);
570570
571571 err1:
572+ usb_phy_set_suspend(dwc->usb2_phy, 1);
573+ usb_phy_set_suspend(dwc->usb3_phy, 1);
572574 dwc3_core_exit(dwc);
573575
574576 err0:
drivers/usb/host/ohci-at91.c+15−11
@@ -136,23 +136,27 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver, · 135 unmodified lines
136136 struct ohci_hcd *ohci;
137137 int retval;
138138 struct usb_hcd *hcd = NULL;
139−
140− if (pdev->num_resources != 2) {
141− pr_debug("hcd probe: invalid num_resources");
142− return -ENODEV;
139+ struct device *dev = &pdev->dev;
140+ struct resource *res;
141+ int irq;
142+
143+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
144+ if (!res) {
145+ dev_dbg(dev, "hcd probe: missing memory resource\n");
146+ return -ENXIO;
143147 }
144148
145− if ((pdev->resource[0].flags != IORESOURCE_MEM)
146− || (pdev->resource[1].flags != IORESOURCE_IRQ)) {
147− pr_debug("hcd probe: invalid resource type\n");
148− return -ENODEV;
149+ irq = platform_get_irq(pdev, 0);
150+ if (irq < 0) {
151+ dev_dbg(dev, "hcd probe: missing irq resource\n");
152+ return irq;
149153 }
150154
151155 hcd = usb_create_hcd(driver, &pdev->dev, "at91");
152156 if (!hcd)
153157 return -ENOMEM;
154− hcd->rsrc_start = pdev->resource[0].start;
155− hcd->rsrc_len = resource_size(&pdev->resource[0]);
158+ hcd->rsrc_start = res->start;
159+ hcd->rsrc_len = resource_size(res);
156160
157161 if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) {
158162 pr_debug("request_mem_region failed\n");
@@ -199,7 +203,7 @@ static int usb_hcd_at91_probe(const struct hc_driver *driver, · 40 unmodified lines
199203 ohci->num_ports = board->ports;
200204 at91_start_hc(pdev);
201205
202− retval = usb_add_hcd(hcd, pdev->resource[1].start, IRQF_SHARED);
206+ retval = usb_add_hcd(hcd, irq, IRQF_SHARED);
203207 if (retval == 0)
204208 return retval;
205209
drivers/usb/host/xhci-pci.c+6−1
@@ -128,7 +128,12 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) · 127 unmodified lines
128128 * any other sleep) on Haswell machines with LPT and LPT-LP
129129 * with the new Intel BIOS
130130 */
131− xhci->quirks |= XHCI_SPURIOUS_WAKEUP;
131+ /* Limit the quirk to only known vendors, as this triggers
132+ * yet another BIOS bug on some other machines
133+ * https://bugzilla.kernel.org/show_bug.cgi?id=66171
134+ */
135+ if (pdev->subsystem_vendor == PCI_VENDOR_ID_HP)
136+ xhci->quirks |= XHCI_SPURIOUS_WAKEUP;
132137 }
133138 if (pdev->vendor == PCI_VENDOR_ID_ETRON &&
134139 pdev->device == PCI_DEVICE_ID_ASROCK_P67) {
drivers/usb/phy/Kconfig+3−1
@@ -19,8 +19,9 @@ config AB8500_USB · 18 unmodified lines
1919 in host mode, low speed.
2020
2121 config FSL_USB2_OTG
22− bool "Freescale USB OTG Transceiver Driver"
22+ tristate "Freescale USB OTG Transceiver Driver"
2323 depends on USB_EHCI_FSL && USB_FSL_USB2 && PM_RUNTIME
24+ depends on USB
2425 select USB_OTG
2526 select USB_PHY
2627 help
@@ -29,6 +30,7 @@ config FSL_USB2_OTG · 2 unmodified lines
2930 config ISP1301_OMAP
3031 tristate "Philips ISP1301 with OMAP OTG"
3132 depends on I2C && ARCH_OMAP_OTG
33+ depends on USB
3234 select USB_PHY
3335 help
3436 If you say yes here you get support for the Philips ISP1301
drivers/usb/phy/phy-tegra-usb.c+1−1
@@ -876,7 +876,7 @@ static int utmi_phy_probe(struct tegra_usb_phy *tegra_phy, · 875 unmodified lines
876876
877877 tegra_phy->pad_regs = devm_ioremap(&pdev->dev, res->start,
878878 resource_size(res));
879− if (!tegra_phy->regs) {
879+ if (!tegra_phy->pad_regs) {
880880 dev_err(&pdev->dev, "Failed to remap UTMI Pad regs\n");
881881 return -ENOMEM;
882882 }
drivers/usb/phy/phy-twl6030-usb.c+2−1
@@ -127,7 +127,8 @@ static inline int twl6030_writeb(struct twl6030_usb *twl, u8 module, · 126 unmodified lines
127127
128128 static inline u8 twl6030_readb(struct twl6030_usb *twl, u8 module, u8 address)
129129 {
130− u8 data, ret = 0;
130+ u8 data;
131+ int ret;
131132
132133 ret = twl_i2c_read_u8(module, &data, address);
133134 if (ret >= 0)
drivers/usb/serial/option.c+2−0
@@ -251,6 +251,7 @@ static void option_instat_callback(struct urb *urb); · 250 unmodified lines
251251 #define ZTE_PRODUCT_MF628 0x0015
252252 #define ZTE_PRODUCT_MF626 0x0031
253253 #define ZTE_PRODUCT_MC2718 0xffe8
254+#define ZTE_PRODUCT_AC2726 0xfff1
254255
255256 #define BENQ_VENDOR_ID 0x04a5
256257 #define BENQ_PRODUCT_H10 0x4068
@@ -1453,6 +1454,7 @@ static const struct usb_device_id option_ids[] = { · 1196 unmodified lines
14531454 { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x01) },
14541455 { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x02, 0x05) },
14551456 { USB_VENDOR_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0xff, 0x86, 0x10) },
1457+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC2726, 0xff, 0xff, 0xff) },
14561458
14571459 { USB_DEVICE(BENQ_VENDOR_ID, BENQ_PRODUCT_H10) },
14581460 { USB_DEVICE(DLINK_VENDOR_ID, DLINK_PRODUCT_DWM_652) },
drivers/usb/serial/zte_ev.c+1−2
@@ -281,8 +281,7 @@ static const struct usb_device_id id_table[] = { · 280 unmodified lines
281281 { USB_DEVICE(0x19d2, 0xfffd) },
282282 { USB_DEVICE(0x19d2, 0xfffc) },
283283 { USB_DEVICE(0x19d2, 0xfffb) },
284− /* AC2726, AC8710_V3 */
285− { USB_DEVICE_AND_INTERFACE_INFO(0x19d2, 0xfff1, 0xff, 0xff, 0xff) },
284+ /* AC8710_V3 */
286285 { USB_DEVICE(0x19d2, 0xfff6) },
287286 { USB_DEVICE(0x19d2, 0xfff7) },
288287 { USB_DEVICE(0x19d2, 0xfff8) },
drivers/virtio/virtio_balloon.c+1−1
@@ -285,7 +285,7 @@ static void update_balloon_size(struct virtio_balloon *vb) · 284 unmodified lines
285285 {
286286 __le32 actual = cpu_to_le32(vb->num_pages);
287287
288− virtio_cwrite(vb->vdev, struct virtio_balloon_config, num_pages,
288+ virtio_cwrite(vb->vdev, struct virtio_balloon_config, actual,
289289 &actual);
290290 }
291291
drivers/xen/balloon.c+34−29
@@ -350,17 +350,19 @@ static enum bp_state increase_reservation(unsigned long nr_pages) · 349 unmodified lines
350350
351351 pfn = page_to_pfn(page);
352352
353− set_phys_to_machine(pfn, frame_list[i]);
354−
355353 #ifdef CONFIG_XEN_HAVE_PVMMU
356− /* Link back into the page tables if not highmem. */
357− if (xen_pv_domain() && !PageHighMem(page)) {
358− int ret;
359− ret = HYPERVISOR_update_va_mapping(
360− (unsigned long)__va(pfn << PAGE_SHIFT),
361− mfn_pte(frame_list[i], PAGE_KERNEL),
362− 0);
363− BUG_ON(ret);
354+ if (!xen_feature(XENFEAT_auto_translated_physmap)) {
355+ set_phys_to_machine(pfn, frame_list[i]);
356+
357+ /* Link back into the page tables if not highmem. */
358+ if (!PageHighMem(page)) {
359+ int ret;
360+ ret = HYPERVISOR_update_va_mapping(
361+ (unsigned long)__va(pfn << PAGE_SHIFT),
362+ mfn_pte(frame_list[i], PAGE_KERNEL),
363+ 0);
364+ BUG_ON(ret);
365+ }
364366 }
365367 #endif
366368
@@ -378,7 +380,6 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp) · 11 unmodified lines
378380 enum bp_state state = BP_DONE;
379381 unsigned long pfn, i;
380382 struct page *page;
381− struct page *scratch_page;
382383 int ret;
383384 struct xen_memory_reservation reservation = {
384385 .address_bits = 0,
@@ -411,27 +412,29 @@ static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp) · 26 unmodified lines
411412
412413 scrub_page(page);
413414
415+#ifdef CONFIG_XEN_HAVE_PVMMU
414416 /*
415417 * Ballooned out frames are effectively replaced with
416418 * a scratch frame. Ensure direct mappings and the
417419 * p2m are consistent.
418420 */
419− scratch_page = get_balloon_scratch_page();
420−#ifdef CONFIG_XEN_HAVE_PVMMU
421− if (xen_pv_domain() && !PageHighMem(page)) {
422− ret = HYPERVISOR_update_va_mapping(
423− (unsigned long)__va(pfn << PAGE_SHIFT),
424− pfn_pte(page_to_pfn(scratch_page),
425− PAGE_KERNEL_RO), 0);
426− BUG_ON(ret);
427− }
428−#endif
429421 if (!xen_feature(XENFEAT_auto_translated_physmap)) {
430422 unsigned long p;
423+ struct page *scratch_page = get_balloon_scratch_page();
424+
425+ if (!PageHighMem(page)) {
426+ ret = HYPERVISOR_update_va_mapping(
427+ (unsigned long)__va(pfn << PAGE_SHIFT),
428+ pfn_pte(page_to_pfn(scratch_page),
429+ PAGE_KERNEL_RO), 0);
430+ BUG_ON(ret);
431+ }
431432 p = page_to_pfn(scratch_page);
432433 __set_phys_to_machine(pfn, pfn_to_mfn(p));
434+
435+ put_balloon_scratch_page();
433436 }
434− put_balloon_scratch_page();
437+#endif
435438
436439 balloon_append(pfn_to_page(pfn));
437440 }
@@ -627,15 +630,17 @@ static int __init balloon_init(void) · 189 unmodified lines
627630 if (!xen_domain())
628631 return -ENODEV;
629632
630− for_each_online_cpu(cpu)
631− {
632− per_cpu(balloon_scratch_page, cpu) = alloc_page(GFP_KERNEL);
633− if (per_cpu(balloon_scratch_page, cpu) == NULL) {
634− pr_warn("Failed to allocate balloon_scratch_page for cpu %d\n", cpu);
635− return -ENOMEM;
633+ if (!xen_feature(XENFEAT_auto_translated_physmap)) {
634+ for_each_online_cpu(cpu)
635+ {
636+ per_cpu(balloon_scratch_page, cpu) = alloc_page(GFP_KERNEL);
637+ if (per_cpu(balloon_scratch_page, cpu) == NULL) {
638+ pr_warn("Failed to allocate balloon_scratch_page for cpu %d\n", cpu);
639+ return -ENOMEM;
640+ }
636641 }
642+ register_cpu_notifier(&balloon_cpu_notifier);
637643 }
638− register_cpu_notifier(&balloon_cpu_notifier);
639644
640645 pr_info("Initialising balloon driver\n");
641646
drivers/xen/grant-table.c+2−1
@@ -1176,7 +1176,8 @@ static int gnttab_setup(void) · 1175 unmodified lines
11761176 gnttab_shared.addr = xen_remap(xen_hvm_resume_frames,
11771177 PAGE_SIZE * max_nr_gframes);
11781178 if (gnttab_shared.addr == NULL) {
1179− pr_warn("Failed to ioremap gnttab share frames!\n");
1179+ pr_warn("Failed to ioremap gnttab share frames (addr=0x%08lx)!\n",
1180+ xen_hvm_resume_frames);
11801181 return -ENOMEM;
11811182 }
11821183 }
drivers/xen/privcmd.c+7−2
@@ -533,12 +533,17 @@ static void privcmd_close(struct vm_area_struct *vma) · 532 unmodified lines
533533 {
534534 struct page **pages = vma->vm_private_data;
535535 int numpgs = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
536+ int rc;
536537
537538 if (!xen_feature(XENFEAT_auto_translated_physmap) || !numpgs || !pages)
538539 return;
539540
540− xen_unmap_domain_mfn_range(vma, numpgs, pages);
541− free_xenballooned_pages(numpgs, pages);
541+ rc = xen_unmap_domain_mfn_range(vma, numpgs, pages);
542+ if (rc == 0)
543+ free_xenballooned_pages(numpgs, pages);
544+ else
545+ pr_crit("unable to unmap MFN range: leaking %d pages. rc=%d\n",
546+ numpgs, rc);
542547 kfree(pages);
543548 }
544549
fs/aio.c+69−44
@@ -244,9 +244,14 @@ static void aio_free_ring(struct kioctx *ctx) · 243 unmodified lines
244244 int i;
245245
246246 for (i = 0; i < ctx->nr_pages; i++) {
247+ struct page *page;
247248 pr_debug("pid(%d) [%d] page->count=%d\n", current->pid, i,
248249 page_count(ctx->ring_pages[i]));
249− put_page(ctx->ring_pages[i]);
250+ page = ctx->ring_pages[i];
251+ if (!page)
252+ continue;
253+ ctx->ring_pages[i] = NULL;
254+ put_page(page);
250255 }
251256
252257 put_aio_ring_file(ctx);
@@ -280,18 +285,38 @@ static int aio_migratepage(struct address_space *mapping, struct page *new, · 27 unmodified lines
280285 unsigned long flags;
281286 int rc;
282287
288+ rc = 0;
289+
290+ /* Make sure the old page hasn't already been changed */
291+ spin_lock(&mapping->private_lock);
292+ ctx = mapping->private_data;
293+ if (ctx) {
294+ pgoff_t idx;
295+ spin_lock_irqsave(&ctx->completion_lock, flags);
296+ idx = old->index;
297+ if (idx < (pgoff_t)ctx->nr_pages) {
298+ if (ctx->ring_pages[idx] != old)
299+ rc = -EAGAIN;
300+ } else
301+ rc = -EINVAL;
302+ spin_unlock_irqrestore(&ctx->completion_lock, flags);
303+ } else
304+ rc = -EINVAL;
305+ spin_unlock(&mapping->private_lock);
306+
307+ if (rc != 0)
308+ return rc;
309+
283310 /* Writeback must be complete */
284311 BUG_ON(PageWriteback(old));
285− put_page(old);
312+ get_page(new);
286313
287− rc = migrate_page_move_mapping(mapping, new, old, NULL, mode);
314+ rc = migrate_page_move_mapping(mapping, new, old, NULL, mode, 1);
288315 if (rc != MIGRATEPAGE_SUCCESS) {
289− get_page(old);
316+ put_page(new);
290317 return rc;
291318 }
292319
293− get_page(new);
294−
295320 /* We can potentially race against kioctx teardown here. Use the
296321 * address_space's private data lock to protect the mapping's
297322 * private_data.
@@ -303,13 +328,24 @@ static int aio_migratepage(struct address_space *mapping, struct page *new, · 5 unmodified lines
303328 spin_lock_irqsave(&ctx->completion_lock, flags);
304329 migrate_page_copy(new, old);
305330 idx = old->index;
306− if (idx < (pgoff_t)ctx->nr_pages)
307− ctx->ring_pages[idx] = new;
331+ if (idx < (pgoff_t)ctx->nr_pages) {
332+ /* And only do the move if things haven't changed */
333+ if (ctx->ring_pages[idx] == old)
334+ ctx->ring_pages[idx] = new;
335+ else
336+ rc = -EAGAIN;
337+ } else
338+ rc = -EINVAL;
308339 spin_unlock_irqrestore(&ctx->completion_lock, flags);
309340 } else
310341 rc = -EBUSY;
311342 spin_unlock(&mapping->private_lock);
312343
344+ if (rc == MIGRATEPAGE_SUCCESS)
345+ put_page(old);
346+ else
347+ put_page(new);
348+
313349 return rc;
314350 }
315351 #endif
@@ -326,7 +362,7 @@ static int aio_setup_ring(struct kioctx *ctx) · 10 unmodified lines
326362 struct aio_ring *ring;
327363 unsigned nr_events = ctx->max_reqs;
328364 struct mm_struct *mm = current->mm;
329− unsigned long size, populate;
365+ unsigned long size, unused;
330366 int nr_pages;
331367 int i;
332368 struct file *file;
@@ -347,6 +383,20 @@ static int aio_setup_ring(struct kioctx *ctx) · 14 unmodified lines
347383 return -EAGAIN;
348384 }
349385
386+ ctx->aio_ring_file = file;
387+ nr_events = (PAGE_SIZE * nr_pages - sizeof(struct aio_ring))
388+ / sizeof(struct io_event);
389+
390+ ctx->ring_pages = ctx->internal_pages;
391+ if (nr_pages > AIO_RING_PAGES) {
392+ ctx->ring_pages = kcalloc(nr_pages, sizeof(struct page *),
393+ GFP_KERNEL);
394+ if (!ctx->ring_pages) {
395+ put_aio_ring_file(ctx);
396+ return -ENOMEM;
397+ }
398+ }
399+
350400 for (i = 0; i < nr_pages; i++) {
351401 struct page *page;
352402 page = find_or_create_page(file->f_inode->i_mapping,
@@ -358,19 +408,14 @@ static int aio_setup_ring(struct kioctx *ctx) · 5 unmodified lines
358408 SetPageUptodate(page);
359409 SetPageDirty(page);
360410 unlock_page(page);
411+
412+ ctx->ring_pages[i] = page;
361413 }
362− ctx->aio_ring_file = file;
363− nr_events = (PAGE_SIZE * nr_pages - sizeof(struct aio_ring))
364− / sizeof(struct io_event);
414+ ctx->nr_pages = i;
365415
366− ctx->ring_pages = ctx->internal_pages;
367− if (nr_pages > AIO_RING_PAGES) {
368− ctx->ring_pages = kcalloc(nr_pages, sizeof(struct page *),
369− GFP_KERNEL);
370− if (!ctx->ring_pages) {
371− put_aio_ring_file(ctx);
372− return -ENOMEM;
373− }
416+ if (unlikely(i != nr_pages)) {
417+ aio_free_ring(ctx);
418+ return -EAGAIN;
374419 }
375420
376421 ctx->mmap_size = nr_pages * PAGE_SIZE;
@@ -379,9 +424,9 @@ static int aio_setup_ring(struct kioctx *ctx) · 2 unmodified lines
379424 down_write(&mm->mmap_sem);
380425 ctx->mmap_base = do_mmap_pgoff(ctx->aio_ring_file, 0, ctx->mmap_size,
381426 PROT_READ | PROT_WRITE,
382− MAP_SHARED | MAP_POPULATE, 0, &populate);
427+ MAP_SHARED, 0, &unused);
428+ up_write(&mm->mmap_sem);
383429 if (IS_ERR((void *)ctx->mmap_base)) {
384− up_write(&mm->mmap_sem);
385430 ctx->mmap_size = 0;
386431 aio_free_ring(ctx);
387432 return -EAGAIN;
@@ -389,27 +434,6 @@ static int aio_setup_ring(struct kioctx *ctx) · 1 unmodified line
389434
390435 pr_debug("mmap address: 0x%08lx\n", ctx->mmap_base);
391436
392− /* We must do this while still holding mmap_sem for write, as we
393− * need to be protected against userspace attempting to mremap()
394− * or munmap() the ring buffer.
395− */
396− ctx->nr_pages = get_user_pages(current, mm, ctx->mmap_base, nr_pages,
397− 1, 0, ctx->ring_pages, NULL);
398−
399− /* Dropping the reference here is safe as the page cache will hold
400− * onto the pages for us. It is also required so that page migration
401− * can unmap the pages and get the right reference count.
402− */
403− for (i = 0; i < ctx->nr_pages; i++)
404− put_page(ctx->ring_pages[i]);
405−
406− up_write(&mm->mmap_sem);
407−
408− if (unlikely(ctx->nr_pages != nr_pages)) {
409− aio_free_ring(ctx);
410− return -EAGAIN;
411− }
412−
413437 ctx->user_id = ctx->mmap_base;
414438 ctx->nr_events = nr_events; /* trusted copy */
415439
@@ -652,7 +676,8 @@ static struct kioctx *ioctx_alloc(unsigned nr_events) · 236 unmodified lines
652676 aio_nr += ctx->max_reqs;
653677 spin_unlock(&aio_nr_lock);
654678
655− percpu_ref_get(&ctx->users); /* io_setup() will drop this ref */
679+ percpu_ref_get(&ctx->users); /* io_setup() will drop this ref */
680+ percpu_ref_get(&ctx->reqs); /* free_ioctx_users() will drop this */
656681
657682 err = ioctx_add_table(ctx, mm);
658683 if (err)
fs/ceph/addr.c+6−2
@@ -210,9 +210,13 @@ static int readpage_nounlock(struct file *filp, struct page *page) · 209 unmodified lines
210210 if (err < 0) {
211211 SetPageError(page);
212212 goto out;
213− } else if (err < PAGE_CACHE_SIZE) {
213+ } else {
214+ if (err < PAGE_CACHE_SIZE) {
214215 /* zero fill remainder of page */
215− zero_user_segment(page, err, PAGE_CACHE_SIZE);
216+ zero_user_segment(page, err, PAGE_CACHE_SIZE);
217+ } else {
218+ flush_dcache_page(page);
219+ }
216220 }
217221 SetPageUptodate(page);
218222
fs/ceph/inode.c+58−78
@@ -978,7 +978,6 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req, · 977 unmodified lines
978978 struct ceph_mds_reply_inode *ininfo;
979979 struct ceph_vino vino;
980980 struct ceph_fs_client *fsc = ceph_sb_to_client(sb);
981− int i = 0;
982981 int err = 0;
983982
984983 dout("fill_trace %p is_dentry %d is_target %d\n", req,
@@ -1039,6 +1038,29 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req, · 54 unmodified lines
10391038 }
10401039 }
10411040
1041+ if (rinfo->head->is_target) {
1042+ vino.ino = le64_to_cpu(rinfo->targeti.in->ino);
1043+ vino.snap = le64_to_cpu(rinfo->targeti.in->snapid);
1044+
1045+ in = ceph_get_inode(sb, vino);
1046+ if (IS_ERR(in)) {
1047+ err = PTR_ERR(in);
1048+ goto done;
1049+ }
1050+ req->r_target_inode = in;
1051+
1052+ err = fill_inode(in, &rinfo->targeti, NULL,
1053+ session, req->r_request_started,
1054+ (le32_to_cpu(rinfo->head->result) == 0) ?
1055+ req->r_fmode : -1,
1056+ &req->r_caps_reservation);
1057+ if (err < 0) {
1058+ pr_err("fill_inode badness %p %llx.%llx\n",
1059+ in, ceph_vinop(in));
1060+ goto done;
1061+ }
1062+ }
1063+
10421064 /*
10431065 * ignore null lease/binding on snapdir ENOENT, or else we
10441066 * will have trouble splicing in the virtual snapdir later
@@ -1108,7 +1130,6 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req, · 63 unmodified lines
11081130 ceph_dentry(req->r_old_dentry)->offset);
11091131
11101132 dn = req->r_old_dentry; /* use old_dentry */
1111− in = dn->d_inode;
11121133 }
11131134
11141135 /* null dentry? */
@@ -1130,44 +1151,28 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req, · 15 unmodified lines
11301151 }
11311152
11321153 /* attach proper inode */
1133− ininfo = rinfo->targeti.in;
1134− vino.ino = le64_to_cpu(ininfo->ino);
1135− vino.snap = le64_to_cpu(ininfo->snapid);
1136− in = dn->d_inode;
1137− if (!in) {
1138− in = ceph_get_inode(sb, vino);
1139− if (IS_ERR(in)) {
1140− pr_err("fill_trace bad get_inode "
1141− "%llx.%llx\n", vino.ino, vino.snap);
1142− err = PTR_ERR(in);
1143− d_drop(dn);
1144− goto done;
1145− }
1154+ if (!dn->d_inode) {
1155+ ihold(in);
11461156 dn = splice_dentry(dn, in, &have_lease, true);
11471157 if (IS_ERR(dn)) {
11481158 err = PTR_ERR(dn);
11491159 goto done;
11501160 }
11511161 req->r_dentry = dn; /* may have spliced */
1152− ihold(in);
1153− } else if (ceph_ino(in) == vino.ino &&
1154− ceph_snap(in) == vino.snap) {
1155− ihold(in);
1156− } else {
1162+ } else if (dn->d_inode && dn->d_inode != in) {
11571163 dout(" %p links to %p %llx.%llx, not %llx.%llx\n",
1158− dn, in, ceph_ino(in), ceph_snap(in),
1159− vino.ino, vino.snap);
1164+ dn, dn->d_inode, ceph_vinop(dn->d_inode),
1165+ ceph_vinop(in));
11601166 have_lease = false;
1161− in = NULL;
11621167 }
11631168
11641169 if (have_lease)
11651170 update_dentry_lease(dn, rinfo->dlease, session,
11661171 req->r_request_started);
11671172 dout(" final dn %p\n", dn);
1168− i++;
1169− } else if ((req->r_op == CEPH_MDS_OP_LOOKUPSNAP ||
1170− req->r_op == CEPH_MDS_OP_MKSNAP) && !req->r_aborted) {
1173+ } else if (!req->r_aborted &&
1174+ (req->r_op == CEPH_MDS_OP_LOOKUPSNAP ||
1175+ req->r_op == CEPH_MDS_OP_MKSNAP)) {
11711176 struct dentry *dn = req->r_dentry;
11721177
11731178 /* fill out a snapdir LOOKUPSNAP dentry */
@@ -1177,52 +1182,15 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req, · 3 unmodified lines
11771182 ininfo = rinfo->targeti.in;
11781183 vino.ino = le64_to_cpu(ininfo->ino);
11791184 vino.snap = le64_to_cpu(ininfo->snapid);
1180− in = ceph_get_inode(sb, vino);
1181− if (IS_ERR(in)) {
1182− pr_err("fill_inode get_inode badness %llx.%llx\n",
1183− vino.ino, vino.snap);
1184− err = PTR_ERR(in);
1185− d_delete(dn);
1186− goto done;
1187− }
11881185 dout(" linking snapped dir %p to dn %p\n", in, dn);
1186+ ihold(in);
11891187 dn = splice_dentry(dn, in, NULL, true);
11901188 if (IS_ERR(dn)) {
11911189 err = PTR_ERR(dn);
11921190 goto done;
11931191 }
11941192 req->r_dentry = dn; /* may have spliced */
1195− ihold(in);
1196− rinfo->head->is_dentry = 1; /* fool notrace handlers */
1197− }
1198−
1199− if (rinfo->head->is_target) {
1200− vino.ino = le64_to_cpu(rinfo->targeti.in->ino);
1201− vino.snap = le64_to_cpu(rinfo->targeti.in->snapid);
1202−
1203− if (in == NULL || ceph_ino(in) != vino.ino ||
1204− ceph_snap(in) != vino.snap) {
1205− in = ceph_get_inode(sb, vino);
1206− if (IS_ERR(in)) {
1207− err = PTR_ERR(in);
1208− goto done;
1209− }
1210− }
1211− req->r_target_inode = in;
1212−
1213− err = fill_inode(in,
1214− &rinfo->targeti, NULL,
1215− session, req->r_request_started,
1216− (le32_to_cpu(rinfo->head->result) == 0) ?
1217− req->r_fmode : -1,
1218− &req->r_caps_reservation);
1219− if (err < 0) {
1220− pr_err("fill_inode badness %p %llx.%llx\n",
1221− in, ceph_vinop(in));
1222− goto done;
1223− }
12241193 }
1225−
12261194 done:
12271195 dout("fill_trace done err=%d\n", err);
12281196 return err;
@@ -1272,7 +1240,7 @@ int ceph_readdir_prepopulate(struct ceph_mds_request *req, · 43 unmodified lines
12721240 struct qstr dname;
12731241 struct dentry *dn;
12741242 struct inode *in;
1275− int err = 0, i;
1243+ int err = 0, ret, i;
12761244 struct inode *snapdir = NULL;
12771245 struct ceph_mds_request_head *rhead = req->r_request->front.iov_base;
12781246 struct ceph_dentry_info *di;
@@ -1305,6 +1273,7 @@ int ceph_readdir_prepopulate(struct ceph_mds_request *req, · 26 unmodified lines
13051273 ceph_fill_dirfrag(parent->d_inode, rinfo->dir_dir);
13061274 }
13071275
1276+ /* FIXME: release caps/leases if error occurs */
13081277 for (i = 0; i < rinfo->dir_nr; i++) {
13091278 struct ceph_vino vino;
13101279
@@ -1329,9 +1298,10 @@ retry_lookup: · 18 unmodified lines
13291298 err = -ENOMEM;
13301299 goto out;
13311300 }
1332− err = ceph_init_dentry(dn);
1333− if (err < 0) {
1301+ ret = ceph_init_dentry(dn);
1302+ if (ret < 0) {
13341303 dput(dn);
1304+ err = ret;
13351305 goto out;
13361306 }
13371307 } else if (dn->d_inode &&
@@ -1351,9 +1321,6 @@ retry_lookup: · 13 unmodified lines
13511321 spin_unlock(&parent->d_lock);
13521322 }
13531323
1354− di = dn->d_fsdata;
1355− di->offset = ceph_make_fpos(frag, i + r_readdir_offset);
1356−
13571324 /* inode */
13581325 if (dn->d_inode) {
13591326 in = dn->d_inode;
@@ -1366,26 +1333,39 @@ retry_lookup: · 6 unmodified lines
13661333 err = PTR_ERR(in);
13671334 goto out;
13681335 }
1369− dn = splice_dentry(dn, in, NULL, false);
1370− if (IS_ERR(dn))
1371− dn = NULL;
13721336 }
13731337
13741338 if (fill_inode(in, &rinfo->dir_in[i], NULL, session,
13751339 req->r_request_started, -1,
13761340 &req->r_caps_reservation) < 0) {
13771341 pr_err("fill_inode badness on %p\n", in);
1342+ if (!dn->d_inode)
1343+ iput(in);
1344+ d_drop(dn);
13781345 goto next_item;
13791346 }
1380− if (dn)
1381− update_dentry_lease(dn, rinfo->dir_dlease[i],
1382− req->r_session,
1383− req->r_request_started);
1347+
1348+ if (!dn->d_inode) {
1349+ dn = splice_dentry(dn, in, NULL, false);
1350+ if (IS_ERR(dn)) {
1351+ err = PTR_ERR(dn);
1352+ dn = NULL;
1353+ goto next_item;
1354+ }
1355+ }
1356+
1357+ di = dn->d_fsdata;
1358+ di->offset = ceph_make_fpos(frag, i + r_readdir_offset);
1359+
1360+ update_dentry_lease(dn, rinfo->dir_dlease[i],
1361+ req->r_session,
1362+ req->r_request_started);
13841363 next_item:
13851364 if (dn)
13861365 dput(dn);
13871366 }
1388− req->r_did_prepopulate = true;
1367+ if (err == 0)
1368+ req->r_did_prepopulate = true;
13891369
13901370 out:
13911371 if (snapdir) {
fs/ext2/super.c+1−0
@@ -1493,6 +1493,7 @@ static ssize_t ext2_quota_write(struct super_block *sb, int type, · 1492 unmodified lines
14931493 sb->s_blocksize - offset : towrite;
14941494
14951495 tmp_bh.b_state = 0;
1496+ tmp_bh.b_size = sb->s_blocksize;
14961497 err = ext2_get_block(inode, blk, &tmp_bh, 1);
14971498 if (err < 0)
14981499 goto out;
fs/ext4/ext4.h+10−0
@@ -268,6 +268,16 @@ struct ext4_io_submit { · 267 unmodified lines
268268 /* Translate # of blks to # of clusters */
269269 #define EXT4_NUM_B2C(sbi, blks) (((blks) + (sbi)->s_cluster_ratio - 1) >> \
270270 (sbi)->s_cluster_bits)
271+/* Mask out the low bits to get the starting block of the cluster */
272+#define EXT4_PBLK_CMASK(s, pblk) ((pblk) & \
273+ ~((ext4_fsblk_t) (s)->s_cluster_ratio - 1))
274+#define EXT4_LBLK_CMASK(s, lblk) ((lblk) & \
275+ ~((ext4_lblk_t) (s)->s_cluster_ratio - 1))
276+/* Get the cluster offset */
277+#define EXT4_PBLK_COFF(s, pblk) ((pblk) & \
278+ ((ext4_fsblk_t) (s)->s_cluster_ratio - 1))
279+#define EXT4_LBLK_COFF(s, lblk) ((lblk) & \
280+ ((ext4_lblk_t) (s)->s_cluster_ratio - 1))
271281
272282 /*
273283 * Structure of a blocks group descriptor
fs/ext4/ext4_jbd2.c+9−0
@@ -259,6 +259,15 @@ int __ext4_handle_dirty_metadata(const char *where, unsigned int line, · 258 unmodified lines
259259 if (WARN_ON_ONCE(err)) {
260260 ext4_journal_abort_handle(where, line, __func__, bh,
261261 handle, err);
262+ ext4_error_inode(inode, where, line,
263+ bh->b_blocknr,
264+ "journal_dirty_metadata failed: "
265+ "handle type %u started at line %u, "
266+ "credits %u/%u, errcode %d",
267+ handle->h_type,
268+ handle->h_line_no,
269+ handle->h_requested_credits,
270+ handle->h_buffer_credits, err);
262271 }
263272 } else {
264273 if (inode)
fs/ext4/extents.c+30−15
@@ -360,8 +360,10 @@ static int ext4_valid_extent(struct inode *inode, struct ext4_extent *ext) · 359 unmodified lines
360360 {
361361 ext4_fsblk_t block = ext4_ext_pblock(ext);
362362 int len = ext4_ext_get_actual_len(ext);
363+ ext4_lblk_t lblock = le32_to_cpu(ext->ee_block);
364+ ext4_lblk_t last = lblock + len - 1;
363365
364− if (len == 0)
366+ if (lblock > last)
365367 return 0;
366368 return ext4_data_block_valid(EXT4_SB(inode->i_sb), block, len);
367369 }
@@ -387,11 +389,26 @@ static int ext4_valid_extent_entries(struct inode *inode, · 19 unmodified lines
387389 if (depth == 0) {
388390 /* leaf entries */
389391 struct ext4_extent *ext = EXT_FIRST_EXTENT(eh);
392+ struct ext4_super_block *es = EXT4_SB(inode->i_sb)->s_es;
393+ ext4_fsblk_t pblock = 0;
394+ ext4_lblk_t lblock = 0;
395+ ext4_lblk_t prev = 0;
396+ int len = 0;
390397 while (entries) {
391398 if (!ext4_valid_extent(inode, ext))
392399 return 0;
400+
401+ /* Check for overlapping extents */
402+ lblock = le32_to_cpu(ext->ee_block);
403+ len = ext4_ext_get_actual_len(ext);
404+ if ((lblock <= prev) && prev) {
405+ pblock = ext4_ext_pblock(ext);
406+ es->s_last_error_block = cpu_to_le64(pblock);
407+ return 0;
408+ }
393409 ext++;
394410 entries--;
411+ prev = lblock + len - 1;
395412 }
396413 } else {
397414 struct ext4_extent_idx *ext_idx = EXT_FIRST_INDEX(eh);
@@ -1834,8 +1851,7 @@ static unsigned int ext4_ext_check_overlap(struct ext4_sb_info *sbi, · 1436 unmodified lines
18341851 depth = ext_depth(inode);
18351852 if (!path[depth].p_ext)
18361853 goto out;
1837− b2 = le32_to_cpu(path[depth].p_ext->ee_block);
1838− b2 &= ~(sbi->s_cluster_ratio - 1);
1854+ b2 = EXT4_LBLK_CMASK(sbi, le32_to_cpu(path[depth].p_ext->ee_block));
18391855
18401856 /*
18411857 * get the next allocated block if the extent in the path
@@ -1845,7 +1861,7 @@ static unsigned int ext4_ext_check_overlap(struct ext4_sb_info *sbi, · 3 unmodified lines
18451861 b2 = ext4_ext_next_allocated_block(path);
18461862 if (b2 == EXT_MAX_BLOCKS)
18471863 goto out;
1848− b2 &= ~(sbi->s_cluster_ratio - 1);
1864+ b2 = EXT4_LBLK_CMASK(sbi, b2);
18491865 }
18501866
18511867 /* check for wrap through zero on extent logical start block*/
@@ -2504,7 +2520,7 @@ static int ext4_remove_blocks(handle_t *handle, struct inode *inode, · 652 unmodified lines
25042520 * extent, we have to mark the cluster as used (store negative
25052521 * cluster number in partial_cluster).
25062522 */
2507− unaligned = pblk & (sbi->s_cluster_ratio - 1);
2523+ unaligned = EXT4_PBLK_COFF(sbi, pblk);
25082524 if (unaligned && (ee_len == num) &&
25092525 (*partial_cluster != -((long long)EXT4_B2C(sbi, pblk))))
25102526 *partial_cluster = EXT4_B2C(sbi, pblk);
@@ -2598,7 +2614,7 @@ ext4_ext_rm_leaf(handle_t *handle, struct inode *inode, · 87 unmodified lines
25982614 * accidentally freeing it later on
25992615 */
26002616 pblk = ext4_ext_pblock(ex);
2601− if (pblk & (sbi->s_cluster_ratio - 1))
2617+ if (EXT4_PBLK_COFF(sbi, pblk))
26022618 *partial_cluster =
26032619 -((long long)EXT4_B2C(sbi, pblk));
26042620 ex--;
@@ -3753,7 +3769,7 @@ int ext4_find_delalloc_cluster(struct inode *inode, ext4_lblk_t lblk) · 1148 unmodified lines
37533769 {
37543770 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
37553771 ext4_lblk_t lblk_start, lblk_end;
3756− lblk_start = lblk & (~(sbi->s_cluster_ratio - 1));
3772+ lblk_start = EXT4_LBLK_CMASK(sbi, lblk);
37573773 lblk_end = lblk_start + sbi->s_cluster_ratio - 1;
37583774
37593775 return ext4_find_delalloc_range(inode, lblk_start, lblk_end);
@@ -3812,9 +3828,9 @@ get_reserved_cluster_alloc(struct inode *inode, ext4_lblk_t lblk_start, · 52 unmodified lines
38123828 trace_ext4_get_reserved_cluster_alloc(inode, lblk_start, num_blks);
38133829
38143830 /* Check towards left side */
3815− c_offset = lblk_start & (sbi->s_cluster_ratio - 1);
3831+ c_offset = EXT4_LBLK_COFF(sbi, lblk_start);
38163832 if (c_offset) {
3817− lblk_from = lblk_start & (~(sbi->s_cluster_ratio - 1));
3833+ lblk_from = EXT4_LBLK_CMASK(sbi, lblk_start);
38183834 lblk_to = lblk_from + c_offset - 1;
38193835
38203836 if (ext4_find_delalloc_range(inode, lblk_from, lblk_to))
@@ -3822,7 +3838,7 @@ get_reserved_cluster_alloc(struct inode *inode, ext4_lblk_t lblk_start, · 1 unmodified line
38223838 }
38233839
38243840 /* Now check towards right. */
3825− c_offset = (lblk_start + num_blks) & (sbi->s_cluster_ratio - 1);
3841+ c_offset = EXT4_LBLK_COFF(sbi, lblk_start + num_blks);
38263842 if (allocated_clusters && c_offset) {
38273843 lblk_from = lblk_start + num_blks;
38283844 lblk_to = lblk_from + (sbi->s_cluster_ratio - c_offset) - 1;
@@ -4030,7 +4046,7 @@ static int get_implied_cluster_alloc(struct super_block *sb, · 201 unmodified lines
40304046 struct ext4_ext_path *path)
40314047 {
40324048 struct ext4_sb_info *sbi = EXT4_SB(sb);
4033− ext4_lblk_t c_offset = map->m_lblk & (sbi->s_cluster_ratio-1);
4049+ ext4_lblk_t c_offset = EXT4_LBLK_COFF(sbi, map->m_lblk);
40344050 ext4_lblk_t ex_cluster_start, ex_cluster_end;
40354051 ext4_lblk_t rr_cluster_start;
40364052 ext4_lblk_t ee_block = le32_to_cpu(ex->ee_block);
@@ -4048,8 +4064,7 @@ static int get_implied_cluster_alloc(struct super_block *sb, · 11 unmodified lines
40484064 (rr_cluster_start == ex_cluster_start)) {
40494065 if (rr_cluster_start == ex_cluster_end)
40504066 ee_start += ee_len - 1;
4051− map->m_pblk = (ee_start & ~(sbi->s_cluster_ratio - 1)) +
4052− c_offset;
4067+ map->m_pblk = EXT4_PBLK_CMASK(sbi, ee_start) + c_offset;
40534068 map->m_len = min(map->m_len,
40544069 (unsigned) sbi->s_cluster_ratio - c_offset);
40554070 /*
@@ -4203,7 +4218,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, · 147 unmodified lines
42034218 */
42044219 map->m_flags &= ~EXT4_MAP_FROM_CLUSTER;
42054220 newex.ee_block = cpu_to_le32(map->m_lblk);
4206− cluster_offset = map->m_lblk & (sbi->s_cluster_ratio-1);
4221+ cluster_offset = EXT4_LBLK_CMASK(sbi, map->m_lblk);
42074222
42084223 /*
42094224 * If we are doing bigalloc, check to see if the extent returned
@@ -4271,7 +4286,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, · 61 unmodified lines
42714286 * needed so that future calls to get_implied_cluster_alloc()
42724287 * work correctly.
42734288 */
4274− offset = map->m_lblk & (sbi->s_cluster_ratio - 1);
4289+ offset = EXT4_LBLK_COFF(sbi, map->m_lblk);
42754290 ar.len = EXT4_NUM_B2C(sbi, offset+allocated);
42764291 ar.goal -= offset;
42774292 ar.logical -= offset;
fs/ext4/inode.c+0−12
@@ -1206,7 +1206,6 @@ static int ext4_journalled_write_end(struct file *file, · 1205 unmodified lines
12061206 */
12071207 static int ext4_da_reserve_metadata(struct inode *inode, ext4_lblk_t lblock)
12081208 {
1209− int retries = 0;
12101209 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
12111210 struct ext4_inode_info *ei = EXT4_I(inode);
12121211 unsigned int md_needed;
@@ -1218,7 +1217,6 @@ static int ext4_da_reserve_metadata(struct inode *inode, ext4_lblk_t lblock) · 5 unmodified lines
12181217 * in order to allocate nrblocks
12191218 * worse case is one extent per block
12201219 */
1221−repeat:
12221220 spin_lock(&ei->i_block_reservation_lock);
12231221 /*
12241222 * ext4_calc_metadata_amount() has side effects, which we have
@@ -1238,10 +1236,6 @@ repeat: · 13 unmodified lines
12381236 ei->i_da_metadata_calc_len = save_len;
12391237 ei->i_da_metadata_calc_last_lblock = save_last_lblock;
12401238 spin_unlock(&ei->i_block_reservation_lock);
1241− if (ext4_should_retry_alloc(inode->i_sb, &retries)) {
1242− cond_resched();
1243− goto repeat;
1244− }
12451239 return -ENOSPC;
12461240 }
12471241 ei->i_reserved_meta_blocks += md_needed;
@@ -1255,7 +1249,6 @@ repeat: · 7 unmodified lines
12551249 */
12561250 static int ext4_da_reserve_space(struct inode *inode, ext4_lblk_t lblock)
12571251 {
1258− int retries = 0;
12591252 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
12601253 struct ext4_inode_info *ei = EXT4_I(inode);
12611254 unsigned int md_needed;
@@ -1277,7 +1270,6 @@ static int ext4_da_reserve_space(struct inode *inode, ext4_lblk_t lblock) · 15 unmodified lines
12771270 * in order to allocate nrblocks
12781271 * worse case is one extent per block
12791272 */
1280−repeat:
12811273 spin_lock(&ei->i_block_reservation_lock);
12821274 /*
12831275 * ext4_calc_metadata_amount() has side effects, which we have
@@ -1297,10 +1289,6 @@ repeat: · 13 unmodified lines
12971289 ei->i_da_metadata_calc_len = save_len;
12981290 ei->i_da_metadata_calc_last_lblock = save_last_lblock;
12991291 spin_unlock(&ei->i_block_reservation_lock);
1300− if (ext4_should_retry_alloc(inode->i_sb, &retries)) {
1301− cond_resched();
1302− goto repeat;
1303− }
13041292 dquot_release_reservation_block(inode, EXT4_C2B(sbi, 1));
13051293 return -ENOSPC;
13061294 }
fs/ext4/mballoc.c+11−6
@@ -3442,6 +3442,9 @@ static void ext4_mb_pa_callback(struct rcu_head *head) · 3441 unmodified lines
34423442 {
34433443 struct ext4_prealloc_space *pa;
34443444 pa = container_of(head, struct ext4_prealloc_space, u.pa_rcu);
3445+
3446+ BUG_ON(atomic_read(&pa->pa_count));
3447+ BUG_ON(pa->pa_deleted == 0);
34453448 kmem_cache_free(ext4_pspace_cachep, pa);
34463449 }
34473450
@@ -3455,11 +3458,13 @@ static void ext4_mb_put_pa(struct ext4_allocation_context *ac, · 7 unmodified lines
34553458 ext4_group_t grp;
34563459 ext4_fsblk_t grp_blk;
34573460
3458− if (!atomic_dec_and_test(&pa->pa_count) || pa->pa_free != 0)
3459− return;
3460−
34613461 /* in this short window concurrent discard can set pa_deleted */
34623462 spin_lock(&pa->pa_lock);
3463+ if (!atomic_dec_and_test(&pa->pa_count) || pa->pa_free != 0) {
3464+ spin_unlock(&pa->pa_lock);
3465+ return;
3466+ }
3467+
34633468 if (pa->pa_deleted == 1) {
34643469 spin_unlock(&pa->pa_lock);
34653470 return;
@@ -4121,7 +4126,7 @@ ext4_mb_initialize_context(struct ext4_allocation_context *ac, · 655 unmodified lines
41214126 ext4_get_group_no_and_offset(sb, goal, &group, &block);
41224127
41234128 /* set up allocation goals */
4124− ac->ac_b_ex.fe_logical = ar->logical & ~(sbi->s_cluster_ratio - 1);
4129+ ac->ac_b_ex.fe_logical = EXT4_LBLK_CMASK(sbi, ar->logical);
41254130 ac->ac_status = AC_STATUS_CONTINUE;
41264131 ac->ac_sb = sb;
41274132 ac->ac_inode = ar->inode;
@@ -4663,7 +4668,7 @@ void ext4_free_blocks(handle_t *handle, struct inode *inode, · 535 unmodified lines
46634668 * blocks at the beginning or the end unless we are explicitly
46644669 * requested to avoid doing so.
46654670 */
4666− overflow = block & (sbi->s_cluster_ratio - 1);
4671+ overflow = EXT4_PBLK_COFF(sbi, block);
46674672 if (overflow) {
46684673 if (flags & EXT4_FREE_BLOCKS_NOFREE_FIRST_CLUSTER) {
46694674 overflow = sbi->s_cluster_ratio - overflow;
@@ -4677,7 +4682,7 @@ void ext4_free_blocks(handle_t *handle, struct inode *inode, · 7 unmodified lines
46774682 count += overflow;
46784683 }
46794684 }
4680− overflow = count & (sbi->s_cluster_ratio - 1);
4685+ overflow = EXT4_LBLK_COFF(sbi, count);
46814686 if (overflow) {
46824687 if (flags & EXT4_FREE_BLOCKS_NOFREE_LAST_CLUSTER) {
46834688 if (count > overflow)
fs/ext4/super.c+15−6
@@ -792,7 +792,7 @@ static void ext4_put_super(struct super_block *sb) · 791 unmodified lines
792792 }
793793
794794 ext4_es_unregister_shrinker(sbi);
795− del_timer(&sbi->s_err_report);
795+ del_timer_sync(&sbi->s_err_report);
796796 ext4_release_system_zone(sb);
797797 ext4_mb_release(sb);
798798 ext4_ext_release(sb);
@@ -3316,10 +3316,18 @@ int ext4_calculate_overhead(struct super_block *sb) · 2517 unmodified lines
33163316 }
33173317
33183318
3319−static ext4_fsblk_t ext4_calculate_resv_clusters(struct ext4_sb_info *sbi)
3319+static ext4_fsblk_t ext4_calculate_resv_clusters(struct super_block *sb)
33203320 {
33213321 ext4_fsblk_t resv_clusters;
33223322
3323+ /*
3324+ * There's no need to reserve anything when we aren't using extents.
3325+ * The space estimates are exact, there are no unwritten extents,
3326+ * hole punching doesn't need new metadata... This is needed especially
3327+ * to keep ext2/3 backward compatibility.
3328+ */
3329+ if (!EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_EXTENTS))
3330+ return 0;
33233331 /*
33243332 * By default we reserve 2% or 4096 clusters, whichever is smaller.
33253333 * This should cover the situations where we can not afford to run
@@ -3328,7 +3336,8 @@ static ext4_fsblk_t ext4_calculate_resv_clusters(struct ext4_sb_info *sbi) · 2 unmodified lines
33283336 * allocation would require 1, or 2 blocks, higher numbers are
33293337 * very rare.
33303338 */
3331− resv_clusters = ext4_blocks_count(sbi->s_es) >> sbi->s_cluster_bits;
3339+ resv_clusters = ext4_blocks_count(EXT4_SB(sb)->s_es) >>
3340+ EXT4_SB(sb)->s_cluster_bits;
33323341
33333342 do_div(resv_clusters, 50);
33343343 resv_clusters = min_t(ext4_fsblk_t, resv_clusters, 4096);
@@ -4071,10 +4080,10 @@ no_journal: · 736 unmodified lines
40714080 "available");
40724081 }
40734082
4074− err = ext4_reserve_clusters(sbi, ext4_calculate_resv_clusters(sbi));
4083+ err = ext4_reserve_clusters(sbi, ext4_calculate_resv_clusters(sb));
40754084 if (err) {
40764085 ext4_msg(sb, KERN_ERR, "failed to reserve %llu clusters for "
4077− "reserved pool", ext4_calculate_resv_clusters(sbi));
4086+ "reserved pool", ext4_calculate_resv_clusters(sb));
40784087 goto failed_mount4a;
40794088 }
40804089
@@ -4184,7 +4193,7 @@ failed_mount_wq: · 103 unmodified lines
41844193 }
41854194 failed_mount3:
41864195 ext4_es_unregister_shrinker(sbi);
4187− del_timer(&sbi->s_err_report);
4196+ del_timer_sync(&sbi->s_err_report);
41884197 if (sbi->s_flex_groups)
41894198 ext4_kvfree(sbi->s_flex_groups);
41904199 percpu_counter_destroy(&sbi->s_freeclusters_counter);
fs/jbd2/journal.c+8−10
@@ -702,7 +702,7 @@ int jbd2_log_wait_commit(journal_t *journal, tid_t tid) · 701 unmodified lines
702702 read_lock(&journal->j_state_lock);
703703 #ifdef CONFIG_JBD2_DEBUG
704704 if (!tid_geq(journal->j_commit_request, tid)) {
705− printk(KERN_EMERG
705+ printk(KERN_ERR
706706 "%s: error: j_commit_request=%d, tid=%d\n",
707707 __func__, journal->j_commit_request, tid);
708708 }
@@ -718,10 +718,8 @@ int jbd2_log_wait_commit(journal_t *journal, tid_t tid) · 9 unmodified lines
718718 }
719719 read_unlock(&journal->j_state_lock);
720720
721− if (unlikely(is_journal_aborted(journal))) {
722− printk(KERN_EMERG "journal commit I/O error\n");
721+ if (unlikely(is_journal_aborted(journal)))
723722 err = -EIO;
724− }
725723 return err;
726724 }
727725
@@ -1527,13 +1525,13 @@ static int journal_get_superblock(journal_t *journal) · 799 unmodified lines
15271525 if (JBD2_HAS_COMPAT_FEATURE(journal, JBD2_FEATURE_COMPAT_CHECKSUM) &&
15281526 JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_CSUM_V2)) {
15291527 /* Can't have checksum v1 and v2 on at the same time! */
1530− printk(KERN_ERR "JBD: Can't enable checksumming v1 and v2 "
1528+ printk(KERN_ERR "JBD2: Can't enable checksumming v1 and v2 "
15311529 "at the same time!\n");
15321530 goto out;
15331531 }
15341532
15351533 if (!jbd2_verify_csum_type(journal, sb)) {
1536− printk(KERN_ERR "JBD: Unknown checksum type\n");
1534+ printk(KERN_ERR "JBD2: Unknown checksum type\n");
15371535 goto out;
15381536 }
15391537
@@ -1541,7 +1539,7 @@ static int journal_get_superblock(journal_t *journal) · 1 unmodified line
15411539 if (JBD2_HAS_INCOMPAT_FEATURE(journal, JBD2_FEATURE_INCOMPAT_CSUM_V2)) {
15421540 journal->j_chksum_driver = crypto_alloc_shash("crc32c", 0, 0);
15431541 if (IS_ERR(journal->j_chksum_driver)) {
1544− printk(KERN_ERR "JBD: Cannot load crc32c driver.\n");
1542+ printk(KERN_ERR "JBD2: Cannot load crc32c driver.\n");
15451543 err = PTR_ERR(journal->j_chksum_driver);
15461544 journal->j_chksum_driver = NULL;
15471545 goto out;
@@ -1550,7 +1548,7 @@ static int journal_get_superblock(journal_t *journal) · 2 unmodified lines
15501548
15511549 /* Check superblock checksum */
15521550 if (!jbd2_superblock_csum_verify(journal, sb)) {
1553− printk(KERN_ERR "JBD: journal checksum error\n");
1551+ printk(KERN_ERR "JBD2: journal checksum error\n");
15541552 goto out;
15551553 }
15561554
@@ -1836,7 +1834,7 @@ int jbd2_journal_set_features (journal_t *journal, unsigned long compat, · 279 unmodified lines
18361834 journal->j_chksum_driver = crypto_alloc_shash("crc32c",
18371835 0, 0);
18381836 if (IS_ERR(journal->j_chksum_driver)) {
1839− printk(KERN_ERR "JBD: Cannot load crc32c "
1837+ printk(KERN_ERR "JBD2: Cannot load crc32c "
18401838 "driver.\n");
18411839 journal->j_chksum_driver = NULL;
18421840 return 0;
@@ -2645,7 +2643,7 @@ static void __exit journal_exit(void) · 802 unmodified lines
26452643 #ifdef CONFIG_JBD2_DEBUG
26462644 int n = atomic_read(&nr_journal_heads);
26472645 if (n)
2648− printk(KERN_EMERG "JBD2: leaked %d journal_heads!\n", n);
2646+ printk(KERN_ERR "JBD2: leaked %d journal_heads!\n", n);
26492647 #endif
26502648 jbd2_remove_jbd_stats_proc_entry();
26512649 jbd2_journal_destroy_caches();
fs/jbd2/recovery.c+1−1
@@ -594,7 +594,7 @@ static int do_one_pass(journal_t *journal, · 593 unmodified lines
594594 be32_to_cpu(tmp->h_sequence))) {
595595 brelse(obh);
596596 success = -EIO;
597− printk(KERN_ERR "JBD: Invalid "
597+ printk(KERN_ERR "JBD2: Invalid "
598598 "checksum recovering "
599599 "block %llu in log\n",
600600 blocknr);
fs/jbd2/transaction.c+9−7
@@ -932,7 +932,7 @@ repeat: · 931 unmodified lines
932932 jbd2_alloc(jh2bh(jh)->b_size,
933933 GFP_NOFS);
934934 if (!frozen_buffer) {
935− printk(KERN_EMERG
935+ printk(KERN_ERR
936936 "%s: OOM for frozen_buffer\n",
937937 __func__);
938938 JBUFFER_TRACE(jh, "oom!");
@@ -1166,7 +1166,7 @@ repeat: · 227 unmodified lines
11661166 if (!jh->b_committed_data) {
11671167 committed_data = jbd2_alloc(jh2bh(jh)->b_size, GFP_NOFS);
11681168 if (!committed_data) {
1169− printk(KERN_EMERG "%s: No memory for committed data\n",
1169+ printk(KERN_ERR "%s: No memory for committed data\n",
11701170 __func__);
11711171 err = -ENOMEM;
11721172 goto out;
@@ -1290,7 +1290,10 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) · 117 unmodified lines
12901290 * once a transaction -bzzz
12911291 */
12921292 jh->b_modified = 1;
1293− J_ASSERT_JH(jh, handle->h_buffer_credits > 0);
1293+ if (handle->h_buffer_credits <= 0) {
1294+ ret = -ENOSPC;
1295+ goto out_unlock_bh;
1296+ }
12941297 handle->h_buffer_credits--;
12951298 }
12961299
@@ -1305,7 +1308,7 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) · 8 unmodified lines
13051308 JBUFFER_TRACE(jh, "fastpath");
13061309 if (unlikely(jh->b_transaction !=
13071310 journal->j_running_transaction)) {
1308− printk(KERN_EMERG "JBD: %s: "
1311+ printk(KERN_ERR "JBD2: %s: "
13091312 "jh->b_transaction (%llu, %p, %u) != "
13101313 "journal->j_running_transaction (%p, %u)",
13111314 journal->j_devname,
@@ -1332,7 +1335,7 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) · 20 unmodified lines
13321335 JBUFFER_TRACE(jh, "already on other transaction");
13331336 if (unlikely(jh->b_transaction !=
13341337 journal->j_committing_transaction)) {
1335− printk(KERN_EMERG "JBD: %s: "
1338+ printk(KERN_ERR "JBD2: %s: "
13361339 "jh->b_transaction (%llu, %p, %u) != "
13371340 "journal->j_committing_transaction (%p, %u)",
13381341 journal->j_devname,
@@ -1345,7 +1348,7 @@ int jbd2_journal_dirty_metadata(handle_t *handle, struct buffer_head *bh) · 6 unmodified lines
13451348 ret = -EINVAL;
13461349 }
13471350 if (unlikely(jh->b_next_transaction != transaction)) {
1348− printk(KERN_EMERG "JBD: %s: "
1351+ printk(KERN_ERR "JBD2: %s: "
13491352 "jh->b_next_transaction (%llu, %p, %u) != "
13501353 "transaction (%p, %u)",
13511354 journal->j_devname,
@@ -1373,7 +1376,6 @@ out_unlock_bh: · 21 unmodified lines
13731376 jbd2_journal_put_journal_head(jh);
13741377 out:
13751378 JBUFFER_TRACE(jh, "exit");
1376− WARN_ON(ret); /* All errors are bugs, so dump the stack */
13771379 return ret;
13781380 }
13791381
fs/pstore/platform.c+5−2
@@ -443,8 +443,11 @@ int pstore_register(struct pstore_info *psi) · 442 unmodified lines
443443 pstore_get_records(0);
444444
445445 kmsg_dump_register(&pstore_dumper);
446− pstore_register_console();
447− pstore_register_ftrace();
446+
447+ if ((psi->flags & PSTORE_FLAGS_FRAGILE) == 0) {
448+ pstore_register_console();
449+ pstore_register_ftrace();
450+ }
448451
449452 if (pstore_update_ms >= 0) {
450453 pstore_timer.expires = jiffies +
fs/sysfs/file.c+3−5
@@ -609,7 +609,7 @@ static int sysfs_open_file(struct inode *inode, struct file *file) · 608 unmodified lines
609609 struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata;
610610 struct kobject *kobj = attr_sd->s_parent->s_dir.kobj;
611611 struct sysfs_open_file *of;
612− bool has_read, has_write, has_mmap;
612+ bool has_read, has_write;
613613 int error = -EACCES;
614614
615615 /* need attr_sd for attr and ops, its parent for kobj */
@@ -621,7 +621,6 @@ static int sysfs_open_file(struct inode *inode, struct file *file) · 5 unmodified lines
621621
622622 has_read = battr->read || battr->mmap;
623623 has_write = battr->write || battr->mmap;
624− has_mmap = battr->mmap;
625624 } else {
626625 const struct sysfs_ops *ops = sysfs_file_ops(attr_sd);
627626
@@ -633,7 +632,6 @@ static int sysfs_open_file(struct inode *inode, struct file *file) · 5 unmodified lines
633632
634633 has_read = ops->show;
635634 has_write = ops->store;
636− has_mmap = false;
637635 }
638636
639637 /* check perms and supported operations */
@@ -661,9 +659,9 @@ static int sysfs_open_file(struct inode *inode, struct file *file) · 21 unmodified lines
661659 * open file has a separate mutex, it's okay as long as those don't
662660 * happen on the same file. At this point, we can't easily give
663661 * each file a separate locking class. Let's differentiate on
664− * whether the file has mmap or not for now.
662+ * whether the file is bin or not for now.
665663 */
666− if (has_mmap)
664+ if (sysfs_is_bin(attr_sd))
667665 mutex_init(&of->mutex);
668666 else
669667 mutex_init(&of->mutex);
fs/xfs/xfs_bmap.c+24−8
@@ -1635,7 +1635,7 @@ xfs_bmap_last_extent( · 1634 unmodified lines
16351635 * blocks at the end of the file which do not start at the previous data block,
16361636 * we will try to align the new blocks at stripe unit boundaries.
16371637 *
1638− * Returns 0 in bma->aeof if the file (fork) is empty as any new write will be
1638+ * Returns 1 in bma->aeof if the file (fork) is empty as any new write will be
16391639 * at, or past the EOF.
16401640 */
16411641 STATIC int
@@ -1650,9 +1650,14 @@ xfs_bmap_isaeof( · 8 unmodified lines
16501650 bma->aeof = 0;
16511651 error = xfs_bmap_last_extent(NULL, bma->ip, whichfork, &rec,
16521652 &is_empty);
1653− if (error || is_empty)
1653+ if (error)
16541654 return error;
16551655
1656+ if (is_empty) {
1657+ bma->aeof = 1;
1658+ return 0;
1659+ }
1660+
16561661 /*
16571662 * Check if we are allocation or past the last extent, or at least into
16581663 * the last delayed allocated extent.
@@ -3643,10 +3648,19 @@ xfs_bmap_btalloc( · 1984 unmodified lines
36433648 int isaligned;
36443649 int tryagain;
36453650 int error;
3651+ int stripe_align;
36463652
36473653 ASSERT(ap->length);
36483654
36493655 mp = ap->ip->i_mount;
3656+
3657+ /* stripe alignment for allocation is determined by mount parameters */
3658+ stripe_align = 0;
3659+ if (mp->m_swidth && (mp->m_flags & XFS_MOUNT_SWALLOC))
3660+ stripe_align = mp->m_swidth;
3661+ else if (mp->m_dalign)
3662+ stripe_align = mp->m_dalign;
3663+
36503664 align = ap->userdata ? xfs_get_extsz_hint(ap->ip) : 0;
36513665 if (unlikely(align)) {
36523666 error = xfs_bmap_extsize_align(mp, &ap->got, &ap->prev,
@@ -3655,6 +3669,8 @@ xfs_bmap_btalloc( · 2 unmodified lines
36553669 ASSERT(!error);
36563670 ASSERT(ap->length);
36573671 }
3672+
3673+
36583674 nullfb = *ap->firstblock == NULLFSBLOCK;
36593675 fb_agno = nullfb ? NULLAGNUMBER : XFS_FSB_TO_AGNO(mp, *ap->firstblock);
36603676 if (nullfb) {
@@ -3730,7 +3746,7 @@ xfs_bmap_btalloc( · 69 unmodified lines
37303746 */
37313747 if (!ap->flist->xbf_low && ap->aeof) {
37323748 if (!ap->offset) {
3733− args.alignment = mp->m_dalign;
3749+ args.alignment = stripe_align;
37343750 atype = args.type;
37353751 isaligned = 1;
37363752 /*
@@ -3755,13 +3771,13 @@ xfs_bmap_btalloc( · 18 unmodified lines
37553771 * of minlen+alignment+slop doesn't go up
37563772 * between the calls.
37573773 */
3758− if (blen > mp->m_dalign && blen <= args.maxlen)
3759− nextminlen = blen - mp->m_dalign;
3774+ if (blen > stripe_align && blen <= args.maxlen)
3775+ nextminlen = blen - stripe_align;
37603776 else
37613777 nextminlen = args.minlen;
3762− if (nextminlen + mp->m_dalign > args.minlen + 1)
3778+ if (nextminlen + stripe_align > args.minlen + 1)
37633779 args.minalignslop =
3764− nextminlen + mp->m_dalign -
3780+ nextminlen + stripe_align -
37653781 args.minlen - 1;
37663782 else
37673783 args.minalignslop = 0;
@@ -3783,7 +3799,7 @@ xfs_bmap_btalloc( · 15 unmodified lines
37833799 */
37843800 args.type = atype;
37853801 args.fsbno = ap->blkno;
3786− args.alignment = mp->m_dalign;
3802+ args.alignment = stripe_align;
37873803 args.minlen = nextminlen;
37883804 args.minalignslop = 0;
37893805 isaligned = 1;
fs/xfs/xfs_bmap_util.c+12−2
@@ -1187,7 +1187,12 @@ xfs_zero_remaining_bytes( · 1186 unmodified lines
11871187 XFS_BUF_UNWRITE(bp);
11881188 XFS_BUF_READ(bp);
11891189 XFS_BUF_SET_ADDR(bp, xfs_fsb_to_db(ip, imap.br_startblock));
1190− xfsbdstrat(mp, bp);
1190+
1191+ if (XFS_FORCED_SHUTDOWN(mp)) {
1192+ error = XFS_ERROR(EIO);
1193+ break;
1194+ }
1195+ xfs_buf_iorequest(bp);
11911196 error = xfs_buf_iowait(bp);
11921197 if (error) {
11931198 xfs_buf_ioerror_alert(bp,
@@ -1200,7 +1205,12 @@ xfs_zero_remaining_bytes( · 6 unmodified lines
12001205 XFS_BUF_UNDONE(bp);
12011206 XFS_BUF_UNREAD(bp);
12021207 XFS_BUF_WRITE(bp);
1203− xfsbdstrat(mp, bp);
1208+
1209+ if (XFS_FORCED_SHUTDOWN(mp)) {
1210+ error = XFS_ERROR(EIO);
1211+ break;
1212+ }
1213+ xfs_buf_iorequest(bp);
12041214 error = xfs_buf_iowait(bp);
12051215 if (error) {
12061216 xfs_buf_ioerror_alert(bp,
fs/xfs/xfs_buf.c+14−23
@@ -698,7 +698,11 @@ xfs_buf_read_uncached( · 697 unmodified lines
698698 bp->b_flags |= XBF_READ;
699699 bp->b_ops = ops;
700700
701− xfsbdstrat(target->bt_mount, bp);
701+ if (XFS_FORCED_SHUTDOWN(target->bt_mount)) {
702+ xfs_buf_relse(bp);
703+ return NULL;
704+ }
705+ xfs_buf_iorequest(bp);
702706 xfs_buf_iowait(bp);
703707 return bp;
704708 }
@@ -1089,7 +1093,7 @@ xfs_bioerror( · 384 unmodified lines
10891093 * This is meant for userdata errors; metadata bufs come with
10901094 * iodone functions attached, so that we can track down errors.
10911095 */
1092−STATIC int
1096+int
10931097 xfs_bioerror_relse(
10941098 struct xfs_buf *bp)
10951099 {
@@ -1152,7 +1156,7 @@ xfs_bwrite( · 56 unmodified lines
11521156 ASSERT(xfs_buf_islocked(bp));
11531157
11541158 bp->b_flags |= XBF_WRITE;
1155− bp->b_flags &= ~(XBF_ASYNC | XBF_READ | _XBF_DELWRI_Q);
1159+ bp->b_flags &= ~(XBF_ASYNC | XBF_READ | _XBF_DELWRI_Q | XBF_WRITE_FAIL);
11561160
11571161 xfs_bdstrat_cb(bp);
11581162
@@ -1164,25 +1168,6 @@ xfs_bwrite( · 5 unmodified lines
11641168 return error;
11651169 }
11661170
1167−/*
1168− * Wrapper around bdstrat so that we can stop data from going to disk in case
1169− * we are shutting down the filesystem. Typically user data goes thru this
1170− * path; one of the exceptions is the superblock.
1171− */
1172−void
1173−xfsbdstrat(
1174− struct xfs_mount *mp,
1175− struct xfs_buf *bp)
1176−{
1177− if (XFS_FORCED_SHUTDOWN(mp)) {
1178− trace_xfs_bdstrat_shut(bp, _RET_IP_);
1179− xfs_bioerror_relse(bp);
1180− return;
1181− }
1182−
1183− xfs_buf_iorequest(bp);
1184−}
1185−
11861171 STATIC void
11871172 _xfs_buf_ioend(
11881173 xfs_buf_t *bp,
@@ -1516,6 +1501,12 @@ xfs_wait_buftarg( · 327 unmodified lines
15161501 struct xfs_buf *bp;
15171502 bp = list_first_entry(&dispose, struct xfs_buf, b_lru);
15181503 list_del_init(&bp->b_lru);
1504+ if (bp->b_flags & XBF_WRITE_FAIL) {
1505+ xfs_alert(btp->bt_mount,
1506+"Corruption Alert: Buffer at block 0x%llx had permanent write failures!\n"
1507+"Please run xfs_repair to determine the extent of the problem.",
1508+ (long long)bp->b_bn);
1509+ }
15191510 xfs_buf_rele(bp);
15201511 }
15211512 if (loop++ != 0)
@@ -1799,7 +1790,7 @@ __xfs_buf_delwri_submit( · 277 unmodified lines
17991790
18001791 blk_start_plug(&plug);
18011792 list_for_each_entry_safe(bp, n, io_list, b_list) {
1802− bp->b_flags &= ~(_XBF_DELWRI_Q | XBF_ASYNC);
1793+ bp->b_flags &= ~(_XBF_DELWRI_Q | XBF_ASYNC | XBF_WRITE_FAIL);
18031794 bp->b_flags |= XBF_WRITE;
18041795
18051796 if (!wait) {
fs/xfs/xfs_buf.h+7−4
@@ -45,6 +45,7 @@ typedef enum { · 44 unmodified lines
4545 #define XBF_ASYNC (1 << 4) /* initiator will not wait for completion */
4646 #define XBF_DONE (1 << 5) /* all pages in the buffer uptodate */
4747 #define XBF_STALE (1 << 6) /* buffer has been staled, do not find it */
48+#define XBF_WRITE_FAIL (1 << 24)/* async writes have failed on this buffer */
4849
4950 /* I/O hints for the BIO layer */
5051 #define XBF_SYNCIO (1 << 10)/* treat this buffer as synchronous I/O */
@@ -70,6 +71,7 @@ typedef unsigned int xfs_buf_flags_t; · 19 unmodified lines
7071 { XBF_ASYNC, "ASYNC" }, \
7172 { XBF_DONE, "DONE" }, \
7273 { XBF_STALE, "STALE" }, \
74+ { XBF_WRITE_FAIL, "WRITE_FAIL" }, \
7375 { XBF_SYNCIO, "SYNCIO" }, \
7476 { XBF_FUA, "FUA" }, \
7577 { XBF_FLUSH, "FLUSH" }, \
@@ -80,6 +82,7 @@ typedef unsigned int xfs_buf_flags_t; · 4 unmodified lines
8082 { _XBF_DELWRI_Q, "DELWRI_Q" }, \
8183 { _XBF_COMPOUND, "COMPOUND" }
8284
85+
8386 /*
8487 * Internal state flags.
8588 */
@@ -269,9 +272,6 @@ extern void xfs_buf_unlock(xfs_buf_t *); · 183 unmodified lines
269272
270273 /* Buffer Read and Write Routines */
271274 extern int xfs_bwrite(struct xfs_buf *bp);
272−
273−extern void xfsbdstrat(struct xfs_mount *, struct xfs_buf *);
274−
275275 extern void xfs_buf_ioend(xfs_buf_t *, int);
276276 extern void xfs_buf_ioerror(xfs_buf_t *, int);
277277 extern void xfs_buf_ioerror_alert(struct xfs_buf *, const char *func);
@@ -282,6 +282,8 @@ extern void xfs_buf_iomove(xfs_buf_t *, size_t, size_t, void *, · 4 unmodified lines
282282 #define xfs_buf_zero(bp, off, len) \
283283 xfs_buf_iomove((bp), (off), (len), NULL, XBRW_ZERO)
284284
285+extern int xfs_bioerror_relse(struct xfs_buf *);
286+
285287 static inline int xfs_buf_geterror(xfs_buf_t *bp)
286288 {
287289 return bp ? bp->b_error : ENOMEM;
@@ -301,7 +303,8 @@ extern void xfs_buf_terminate(void); · 13 unmodified lines
301303
302304 #define XFS_BUF_ZEROFLAGS(bp) \
303305 ((bp)->b_flags &= ~(XBF_READ|XBF_WRITE|XBF_ASYNC| \
304− XBF_SYNCIO|XBF_FUA|XBF_FLUSH))
306+ XBF_SYNCIO|XBF_FUA|XBF_FLUSH| \
307+ XBF_WRITE_FAIL))
305308
306309 void xfs_buf_stale(struct xfs_buf *bp);
307310 #define XFS_BUF_UNSTALE(bp) ((bp)->b_flags &= ~XBF_STALE)
fs/xfs/xfs_buf_item.c+19−2
@@ -496,6 +496,14 @@ xfs_buf_item_unpin( · 495 unmodified lines
496496 }
497497 }
498498
499+/*
500+ * Buffer IO error rate limiting. Limit it to no more than 10 messages per 30
501+ * seconds so as to not spam logs too much on repeated detection of the same
502+ * buffer being bad..
503+ */
504+
505+DEFINE_RATELIMIT_STATE(xfs_buf_write_fail_rl_state, 30 * HZ, 10);
506+
499507 STATIC uint
500508 xfs_buf_item_push(
501509 struct xfs_log_item *lip,
@@ -524,6 +532,14 @@ xfs_buf_item_push( · 22 unmodified lines
524532
525533 trace_xfs_buf_item_push(bip);
526534
535+ /* has a previous flush failed due to IO errors? */
536+ if ((bp->b_flags & XBF_WRITE_FAIL) &&
537+ ___ratelimit(&xfs_buf_write_fail_rl_state, "XFS:")) {
538+ xfs_warn(bp->b_target->bt_mount,
539+"Detected failing async write on buffer block 0x%llx. Retrying async write.\n",
540+ (long long)bp->b_bn);
541+ }
542+
527543 if (!xfs_buf_delwri_queue(bp, buffer_list))
528544 rval = XFS_ITEM_FLUSHING;
529545 xfs_buf_unlock(bp);
@@ -1096,8 +1112,9 @@ xfs_buf_iodone_callbacks( · 566 unmodified lines
10961112
10971113 xfs_buf_ioerror(bp, 0); /* errno of 0 unsets the flag */
10981114
1099− if (!XFS_BUF_ISSTALE(bp)) {
1100− bp->b_flags |= XBF_WRITE | XBF_ASYNC | XBF_DONE;
1115+ if (!(bp->b_flags & (XBF_STALE|XBF_WRITE_FAIL))) {
1116+ bp->b_flags |= XBF_WRITE | XBF_ASYNC |
1117+ XBF_DONE | XBF_WRITE_FAIL;
11011118 xfs_buf_iorequest(bp);
11021119 } else {
11031120 xfs_buf_relse(bp);
fs/xfs/xfs_dir2_node.c+13−13
@@ -2067,12 +2067,12 @@ xfs_dir2_node_lookup( · 2066 unmodified lines
20672067 */
20682068 int /* error */
20692069 xfs_dir2_node_removename(
2070− xfs_da_args_t *args) /* operation arguments */
2070+ struct xfs_da_args *args) /* operation arguments */
20712071 {
2072− xfs_da_state_blk_t *blk; /* leaf block */
2072+ struct xfs_da_state_blk *blk; /* leaf block */
20732073 int error; /* error return value */
20742074 int rval; /* operation return value */
2075− xfs_da_state_t *state; /* btree cursor */
2075+ struct xfs_da_state *state; /* btree cursor */
20762076
20772077 trace_xfs_dir2_node_removename(args);
20782078
@@ -2084,19 +2084,18 @@ xfs_dir2_node_removename( · 5 unmodified lines
20842084 state->mp = args->dp->i_mount;
20852085 state->blocksize = state->mp->m_dirblksize;
20862086 state->node_ents = state->mp->m_dir_node_ents;
2087− /*
2088− * Look up the entry we're deleting, set up the cursor.
2089− */
2087+
2088+ /* Look up the entry we're deleting, set up the cursor. */
20902089 error = xfs_da3_node_lookup_int(state, &rval);
20912090 if (error)
2092− rval = error;
2093− /*
2094− * Didn't find it, upper layer screwed up.
2095− */
2091+ goto out_free;
2092+
2093+ /* Didn't find it, upper layer screwed up. */
20962094 if (rval != EEXIST) {
2097− xfs_da_state_free(state);
2098− return rval;
2095+ error = rval;
2096+ goto out_free;
20992097 }
2098+
21002099 blk = &state->path.blk[state->path.active - 1];
21012100 ASSERT(blk->magic == XFS_DIR2_LEAFN_MAGIC);
21022101 ASSERT(state->extravalid);
@@ -2107,7 +2106,7 @@ xfs_dir2_node_removename( · 4 unmodified lines
21072106 error = xfs_dir2_leafn_remove(args, blk->bp, blk->index,
21082107 &state->extrablk, &rval);
21092108 if (error)
2110− return error;
2109+ goto out_free;
21112110 /*
21122111 * Fix the hash values up the btree.
21132112 */
@@ -2122,6 +2121,7 @@ xfs_dir2_node_removename( · 8 unmodified lines
21222121 */
21232122 if (!error)
21242123 error = xfs_dir2_node_to_leaf(state);
2124+out_free:
21252125 xfs_da_state_free(state);
21262126 return error;
21272127 }
fs/xfs/xfs_iops.c+2−1
@@ -618,7 +618,8 @@ xfs_setattr_nonsize( · 617 unmodified lines
618618 }
619619 if (!gid_eq(igid, gid)) {
620620 if (XFS_IS_QUOTA_RUNNING(mp) && XFS_IS_GQUOTA_ON(mp)) {
621− ASSERT(!XFS_IS_PQUOTA_ON(mp));
621+ ASSERT(xfs_sb_version_has_pquotino(&mp->m_sb) ||
622+ !XFS_IS_PQUOTA_ON(mp));
622623 ASSERT(mask & ATTR_GID);
623624 ASSERT(gdqp);
624625 olddquot2 = xfs_qm_vop_chown(tp, ip,
fs/xfs/xfs_log_recover.c+11−2
@@ -193,7 +193,10 @@ xlog_bread_noalign( · 192 unmodified lines
193193 bp->b_io_length = nbblks;
194194 bp->b_error = 0;
195195
196− xfsbdstrat(log->l_mp, bp);
196+ if (XFS_FORCED_SHUTDOWN(log->l_mp))
197+ return XFS_ERROR(EIO);
198+
199+ xfs_buf_iorequest(bp);
197200 error = xfs_buf_iowait(bp);
198201 if (error)
199202 xfs_buf_ioerror_alert(bp, __func__);
@@ -4397,7 +4400,13 @@ xlog_do_recover( · 4197 unmodified lines
43974400 XFS_BUF_READ(bp);
43984401 XFS_BUF_UNASYNC(bp);
43994402 bp->b_ops = &xfs_sb_buf_ops;
4400− xfsbdstrat(log->l_mp, bp);
4403+
4404+ if (XFS_FORCED_SHUTDOWN(log->l_mp)) {
4405+ xfs_buf_relse(bp);
4406+ return XFS_ERROR(EIO);
4407+ }
4408+
4409+ xfs_buf_iorequest(bp);
44014410 error = xfs_buf_iowait(bp);
44024411 if (error) {
44034412 xfs_buf_ioerror_alert(bp, __func__);
fs/xfs/xfs_qm.c+53−27
@@ -134,8 +134,6 @@ xfs_qm_dqpurge( · 133 unmodified lines
134134 {
135135 struct xfs_mount *mp = dqp->q_mount;
136136 struct xfs_quotainfo *qi = mp->m_quotainfo;
137− struct xfs_dquot *gdqp = NULL;
138− struct xfs_dquot *pdqp = NULL;
139137
140138 xfs_dqlock(dqp);
141139 if ((dqp->dq_flags & XFS_DQ_FREEING) || dqp->q_nrefs != 0) {
@@ -143,21 +141,6 @@ xfs_qm_dqpurge( · 1 unmodified line
143141 return EAGAIN;
144142 }
145143
146− /*
147− * If this quota has a hint attached, prepare for releasing it now.
148− */
149− gdqp = dqp->q_gdquot;
150− if (gdqp) {
151− xfs_dqlock(gdqp);
152− dqp->q_gdquot = NULL;
153− }
154−
155− pdqp = dqp->q_pdquot;
156− if (pdqp) {
157− xfs_dqlock(pdqp);
158− dqp->q_pdquot = NULL;
159− }
160−
161144 dqp->dq_flags |= XFS_DQ_FREEING;
162145
163146 xfs_dqflock(dqp);
@@ -206,11 +189,47 @@ xfs_qm_dqpurge( · 42 unmodified lines
206189 XFS_STATS_DEC(xs_qm_dquot_unused);
207190
208191 xfs_qm_dqdestroy(dqp);
192+ return 0;
193+}
194+
195+/*
196+ * Release the group or project dquot pointers the user dquots maybe carrying
197+ * around as a hint, and proceed to purge the user dquot cache if requested.
198+*/
199+STATIC int
200+xfs_qm_dqpurge_hints(
201+ struct xfs_dquot *dqp,
202+ void *data)
203+{
204+ struct xfs_dquot *gdqp = NULL;
205+ struct xfs_dquot *pdqp = NULL;
206+ uint flags = *((uint *)data);
207+
208+ xfs_dqlock(dqp);
209+ if (dqp->dq_flags & XFS_DQ_FREEING) {
210+ xfs_dqunlock(dqp);
211+ return EAGAIN;
212+ }
213+
214+ /* If this quota has a hint attached, prepare for releasing it now */
215+ gdqp = dqp->q_gdquot;
216+ if (gdqp)
217+ dqp->q_gdquot = NULL;
218+
219+ pdqp = dqp->q_pdquot;
220+ if (pdqp)
221+ dqp->q_pdquot = NULL;
222+
223+ xfs_dqunlock(dqp);
209224
210225 if (gdqp)
211− xfs_qm_dqput(gdqp);
226+ xfs_qm_dqrele(gdqp);
212227 if (pdqp)
213− xfs_qm_dqput(pdqp);
228+ xfs_qm_dqrele(pdqp);
229+
230+ if (flags & XFS_QMOPT_UQUOTA)
231+ return xfs_qm_dqpurge(dqp, NULL);
232+
214233 return 0;
215234 }
216235
@@ -222,8 +241,18 @@ xfs_qm_dqpurge_all( · 5 unmodified lines
222241 struct xfs_mount *mp,
223242 uint flags)
224243 {
225− if (flags & XFS_QMOPT_UQUOTA)
226− xfs_qm_dquot_walk(mp, XFS_DQ_USER, xfs_qm_dqpurge, NULL);
244+ /*
245+ * We have to release group/project dquot hint(s) from the user dquot
246+ * at first if they are there, otherwise we would run into an infinite
247+ * loop while walking through radix tree to purge other type of dquots
248+ * since their refcount is not zero if the user dquot refers to them
249+ * as hint.
250+ *
251+ * Call the special xfs_qm_dqpurge_hints() will end up go through the
252+ * general xfs_qm_dqpurge() against user dquot cache if requested.
253+ */
254+ xfs_qm_dquot_walk(mp, XFS_DQ_USER, xfs_qm_dqpurge_hints, &flags);
255+
227256 if (flags & XFS_QMOPT_GQUOTA)
228257 xfs_qm_dquot_walk(mp, XFS_DQ_GROUP, xfs_qm_dqpurge, NULL);
229258 if (flags & XFS_QMOPT_PQUOTA)
@@ -2082,24 +2111,21 @@ xfs_qm_vop_create_dqattach( · 1852 unmodified lines
20822111 ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));
20832112 ASSERT(XFS_IS_QUOTA_RUNNING(mp));
20842113
2085− if (udqp) {
2114+ if (udqp && XFS_IS_UQUOTA_ON(mp)) {
20862115 ASSERT(ip->i_udquot == NULL);
2087− ASSERT(XFS_IS_UQUOTA_ON(mp));
20882116 ASSERT(ip->i_d.di_uid == be32_to_cpu(udqp->q_core.d_id));
20892117
20902118 ip->i_udquot = xfs_qm_dqhold(udqp);
20912119 xfs_trans_mod_dquot(tp, udqp, XFS_TRANS_DQ_ICOUNT, 1);
20922120 }
2093− if (gdqp) {
2121+ if (gdqp && XFS_IS_GQUOTA_ON(mp)) {
20942122 ASSERT(ip->i_gdquot == NULL);
2095− ASSERT(XFS_IS_GQUOTA_ON(mp));
20962123 ASSERT(ip->i_d.di_gid == be32_to_cpu(gdqp->q_core.d_id));
20972124 ip->i_gdquot = xfs_qm_dqhold(gdqp);
20982125 xfs_trans_mod_dquot(tp, gdqp, XFS_TRANS_DQ_ICOUNT, 1);
20992126 }
2100− if (pdqp) {
2127+ if (pdqp && XFS_IS_PQUOTA_ON(mp)) {
21012128 ASSERT(ip->i_pdquot == NULL);
2102− ASSERT(XFS_IS_PQUOTA_ON(mp));
21032129 ASSERT(xfs_get_projid(ip) == be32_to_cpu(pdqp->q_core.d_id));
21042130
21052131 ip->i_pdquot = xfs_qm_dqhold(pdqp);
fs/xfs/xfs_trans_buf.c+12−1
@@ -314,7 +314,18 @@ xfs_trans_read_buf_map( · 313 unmodified lines
314314 ASSERT(bp->b_iodone == NULL);
315315 XFS_BUF_READ(bp);
316316 bp->b_ops = ops;
317− xfsbdstrat(tp->t_mountp, bp);
317+
318+ /*
319+ * XXX(hch): clean up the error handling here to be less
320+ * of a mess..
321+ */
322+ if (XFS_FORCED_SHUTDOWN(mp)) {
323+ trace_xfs_bdstrat_shut(bp, _RET_IP_);
324+ xfs_bioerror_relse(bp);
325+ } else {
326+ xfs_buf_iorequest(bp);
327+ }
328+
318329 error = xfs_buf_iowait(bp);
319330 if (error) {
320331 xfs_buf_ioerror_alert(bp, __func__);
include/asm-generic/pgtable.h+3−4
@@ -217,7 +217,7 @@ static inline int pmd_same(pmd_t pmd_a, pmd_t pmd_b) · 216 unmodified lines
217217 #endif
218218
219219 #ifndef pte_accessible
220−# define pte_accessible(pte) ((void)(pte),1)
220+# define pte_accessible(mm, pte) ((void)(pte), 1)
221221 #endif
222222
223223 #ifndef flush_tlb_fix_spurious_fault
@@ -599,11 +599,10 @@ static inline int pmd_none_or_trans_huge_or_clear_bad(pmd_t *pmd) · 375 unmodified lines
599599 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
600600 barrier();
601601 #endif
602− if (pmd_none(pmdval))
602+ if (pmd_none(pmdval) || pmd_trans_huge(pmdval))
603603 return 1;
604604 if (unlikely(pmd_bad(pmdval))) {
605− if (!pmd_trans_huge(pmdval))
606− pmd_clear_bad(pmd);
605+ pmd_clear_bad(pmd);
607606 return 1;
608607 }
609608 return 0;
include/asm-generic/preempt.h+11−24
@@ -3,13 +3,11 @@ · 2 unmodified lines
33
44 #include <linux/thread_info.h>
55
6−/*
7− * We mask the PREEMPT_NEED_RESCHED bit so as not to confuse all current users
8− * that think a non-zero value indicates we cannot preempt.
9− */
6+#define PREEMPT_ENABLED (0)
7+
108 static __always_inline int preempt_count(void)
119 {
12− return current_thread_info()->preempt_count & ~PREEMPT_NEED_RESCHED;
10+ return current_thread_info()->preempt_count;
1311 }
1412
1513 static __always_inline int *preempt_count_ptr(void)
@@ -17,11 +15,6 @@ static __always_inline int *preempt_count_ptr(void) · 1 unmodified line
1715 return &current_thread_info()->preempt_count;
1816 }
1917
20−/*
21− * We now loose PREEMPT_NEED_RESCHED and cause an extra reschedule; however the
22− * alternative is loosing a reschedule. Better schedule too often -- also this
23− * should be a very rare operation.
24− */
2518 static __always_inline void preempt_count_set(int pc)
2619 {
2720 *preempt_count_ptr() = pc;
@@ -41,28 +34,17 @@ static __always_inline void preempt_count_set(int pc) · 13 unmodified lines
4134 task_thread_info(p)->preempt_count = PREEMPT_ENABLED; \
4235 } while (0)
4336
44−/*
45− * We fold the NEED_RESCHED bit into the preempt count such that
46− * preempt_enable() can decrement and test for needing to reschedule with a
47− * single instruction.
48− *
49− * We invert the actual bit, so that when the decrement hits 0 we know we both
50− * need to resched (the bit is cleared) and can resched (no preempt count).
51− */
52−
5337 static __always_inline void set_preempt_need_resched(void)
5438 {
55− *preempt_count_ptr() &= ~PREEMPT_NEED_RESCHED;
5639 }
5740
5841 static __always_inline void clear_preempt_need_resched(void)
5942 {
60− *preempt_count_ptr() |= PREEMPT_NEED_RESCHED;
6143 }
6244
6345 static __always_inline bool test_preempt_need_resched(void)
6446 {
65− return !(*preempt_count_ptr() & PREEMPT_NEED_RESCHED);
47+ return false;
6648 }
6749
6850 /*
@@ -81,7 +63,12 @@ static __always_inline void __preempt_count_sub(int val) · 12 unmodified lines
8163
8264 static __always_inline bool __preempt_count_dec_and_test(void)
8365 {
84− return !--*preempt_count_ptr();
66+ /*
67+ * Because of load-store architectures cannot do per-cpu atomic
68+ * operations; we cannot use PREEMPT_NEED_RESCHED because it might get
69+ * lost.
70+ */
71+ return !--*preempt_count_ptr() && tif_need_resched();
8572 }
8673
8774 /*
@@ -89,7 +76,7 @@ static __always_inline bool __preempt_count_dec_and_test(void) · 1 unmodified line
8976 */
9077 static __always_inline bool should_resched(void)
9178 {
92− return unlikely(!*preempt_count_ptr());
79+ return unlikely(!preempt_count() && tif_need_resched());
9380 }
9481
9582 #ifdef CONFIG_PREEMPT
include/linux/auxvec.h+1−1
@@ -3,6 +3,6 @@ · 2 unmodified lines
33
44 #include <uapi/linux/auxvec.h>
55
6−#define AT_VECTOR_SIZE_BASE 19 /* NEW_AUX_ENT entries in auxiliary table */
6+#define AT_VECTOR_SIZE_BASE 20 /* NEW_AUX_ENT entries in auxiliary table */
77 /* number of "#define AT_.*" above, minus {AT_NULL, AT_IGNORE, AT_NOTELF} */
88 #endif /* _LINUX_AUXVEC_H */
include/linux/libata.h+1−0
@@ -418,6 +418,7 @@ enum { · 417 unmodified lines
418418 ATA_HORKAGE_DUMP_ID = (1 << 16), /* dump IDENTIFY data */
419419 ATA_HORKAGE_MAX_SEC_LBA48 = (1 << 17), /* Set max sects to 65535 */
420420 ATA_HORKAGE_ATAPI_DMADIR = (1 << 18), /* device requires dmadir */
421+ ATA_HORKAGE_NO_NCQ_TRIM = (1 << 19), /* don't use queued TRIM */
421422
422423 /* DMA mask for user DMA control: User visible values; DO NOT
423424 renumber */
include/linux/lockref.h+1−1
@@ -19,7 +19,7 @@ · 18 unmodified lines
1919
2020 #define USE_CMPXCHG_LOCKREF \
2121 (IS_ENABLED(CONFIG_ARCH_USE_CMPXCHG_LOCKREF) && \
22− IS_ENABLED(CONFIG_SMP) && !BLOATED_SPINLOCKS)
22+ IS_ENABLED(CONFIG_SMP) && SPINLOCK_SIZE <= 4)
2323
2424 struct lockref {
2525 union {
include/linux/math64.h+30−0
@@ -133,4 +133,34 @@ __iter_div_u64_rem(u64 dividend, u32 divisor, u64 *remainder) · 132 unmodified lines
133133 return ret;
134134 }
135135
136+#if defined(CONFIG_ARCH_SUPPORTS_INT128) && defined(__SIZEOF_INT128__)
137+
138+#ifndef mul_u64_u32_shr
139+static inline u64 mul_u64_u32_shr(u64 a, u32 mul, unsigned int shift)
140+{
141+ return (u64)(((unsigned __int128)a * mul) >> shift);
142+}
143+#endif /* mul_u64_u32_shr */
144+
145+#else
146+
147+#ifndef mul_u64_u32_shr
148+static inline u64 mul_u64_u32_shr(u64 a, u32 mul, unsigned int shift)
149+{
150+ u32 ah, al;
151+ u64 ret;
152+
153+ al = a;
154+ ah = a >> 32;
155+
156+ ret = ((u64)al * mul) >> shift;
157+ if (ah)
158+ ret += ((u64)ah * mul) << (32 - shift);
159+
160+ return ret;
161+}
162+#endif /* mul_u64_u32_shr */
163+
164+#endif
165+
136166 #endif /* _LINUX_MATH64_H */
include/linux/migrate.h+11−1
@@ -55,7 +55,8 @@ extern int migrate_huge_page_move_mapping(struct address_space *mapping, · 54 unmodified lines
5555 struct page *newpage, struct page *page);
5656 extern int migrate_page_move_mapping(struct address_space *mapping,
5757 struct page *newpage, struct page *page,
58− struct buffer_head *head, enum migrate_mode mode);
58+ struct buffer_head *head, enum migrate_mode mode,
59+ int extra_count);
5960 #else
6061
6162 static inline void putback_lru_pages(struct list_head *l) {}
@@ -90,10 +91,19 @@ static inline int migrate_huge_page_move_mapping(struct address_space *mapping, · 28 unmodified lines
9091 #endif /* CONFIG_MIGRATION */
9192
9293 #ifdef CONFIG_NUMA_BALANCING
94+extern bool pmd_trans_migrating(pmd_t pmd);
95+extern void wait_migrate_huge_page(struct anon_vma *anon_vma, pmd_t *pmd);
9396 extern int migrate_misplaced_page(struct page *page,
9497 struct vm_area_struct *vma, int node);
9598 extern bool migrate_ratelimited(int node);
9699 #else
100+static inline bool pmd_trans_migrating(pmd_t pmd)
101+{
102+ return false;
103+}
104+static inline void wait_migrate_huge_page(struct anon_vma *anon_vma, pmd_t *pmd)
105+{
106+}
97107 static inline int migrate_misplaced_page(struct page *page,
98108 struct vm_area_struct *vma, int node)
99109 {
include/linux/mm.h+3−3
@@ -1317,7 +1317,7 @@ static inline pmd_t *pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long a · 1316 unmodified lines
13171317 #endif /* CONFIG_MMU && !__ARCH_HAS_4LEVEL_HACK */
13181318
13191319 #if USE_SPLIT_PTE_PTLOCKS
1320−#if BLOATED_SPINLOCKS
1320+#if ALLOC_SPLIT_PTLOCKS
13211321 extern bool ptlock_alloc(struct page *page);
13221322 extern void ptlock_free(struct page *page);
13231323
@@ -1325,7 +1325,7 @@ static inline spinlock_t *ptlock_ptr(struct page *page) · 1 unmodified line
13251325 {
13261326 return page->ptl;
13271327 }
1328−#else /* BLOATED_SPINLOCKS */
1328+#else /* ALLOC_SPLIT_PTLOCKS */
13291329 static inline bool ptlock_alloc(struct page *page)
13301330 {
13311331 return true;
@@ -1339,7 +1339,7 @@ static inline spinlock_t *ptlock_ptr(struct page *page) · 7 unmodified lines
13391339 {
13401340 return &page->ptl;
13411341 }
1342−#endif /* BLOATED_SPINLOCKS */
1342+#endif /* ALLOC_SPLIT_PTLOCKS */
13431343
13441344 static inline spinlock_t *pte_lockptr(struct mm_struct *mm, pmd_t *pmd)
13451345 {
include/linux/mm_types.h+51−1
@@ -26,6 +26,7 @@ struct address_space; · 25 unmodified lines
2626 #define USE_SPLIT_PTE_PTLOCKS (NR_CPUS >= CONFIG_SPLIT_PTLOCK_CPUS)
2727 #define USE_SPLIT_PMD_PTLOCKS (USE_SPLIT_PTE_PTLOCKS && \
2828 IS_ENABLED(CONFIG_ARCH_ENABLE_SPLIT_PMD_PTLOCK))
29+#define ALLOC_SPLIT_PTLOCKS (SPINLOCK_SIZE > BITS_PER_LONG/8)
2930
3031 /*
3132 * Each physical page in the system has a struct page associated with
@@ -155,7 +156,7 @@ struct page { · 123 unmodified lines
155156 * system if PG_buddy is set.
156157 */
157158 #if USE_SPLIT_PTE_PTLOCKS
158−#if BLOATED_SPINLOCKS
159+#if ALLOC_SPLIT_PTLOCKS
159160 spinlock_t *ptl;
160161 #else
161162 spinlock_t ptl;
@@ -442,6 +443,14 @@ struct mm_struct { · 280 unmodified lines
442443
443444 /* numa_scan_seq prevents two threads setting pte_numa */
444445 int numa_scan_seq;
446+#endif
447+#if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
448+ /*
449+ * An operation with batched TLB flushing is going on. Anything that
450+ * can move process memory needs to flush the TLB when moving a
451+ * PROT_NONE or PROT_NUMA mapped page.
452+ */
453+ bool tlb_flush_pending;
445454 #endif
446455 struct uprobes_state uprobes_state;
447456 };
@@ -459,4 +468,45 @@ static inline cpumask_t *mm_cpumask(struct mm_struct *mm) · 11 unmodified lines
459468 return mm->cpu_vm_mask_var;
460469 }
461470
471+#if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
472+/*
473+ * Memory barriers to keep this state in sync are graciously provided by
474+ * the page table locks, outside of which no page table modifications happen.
475+ * The barriers below prevent the compiler from re-ordering the instructions
476+ * around the memory barriers that are already present in the code.
477+ */
478+static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
479+{
480+ barrier();
481+ return mm->tlb_flush_pending;
482+}
483+static inline void set_tlb_flush_pending(struct mm_struct *mm)
484+{
485+ mm->tlb_flush_pending = true;
486+
487+ /*
488+ * Guarantee that the tlb_flush_pending store does not leak into the
489+ * critical section updating the page tables
490+ */
491+ smp_mb__before_spinlock();
492+}
493+/* Clearing is done after a TLB flush, which also provides a barrier. */
494+static inline void clear_tlb_flush_pending(struct mm_struct *mm)
495+{
496+ barrier();
497+ mm->tlb_flush_pending = false;
498+}
499+#else
500+static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
501+{
502+ return false;
503+}
504+static inline void set_tlb_flush_pending(struct mm_struct *mm)
505+{
506+}
507+static inline void clear_tlb_flush_pending(struct mm_struct *mm)
508+{
509+}
510+#endif
511+
462512 #endif /* _LINUX_MM_TYPES_H */
include/linux/percpu-defs.h+1−0
@@ -69,6 +69,7 @@ · 68 unmodified lines
6969 __PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \
7070 extern __PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \
7171 __PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \
72+ extern __PCPU_ATTRS(sec) __typeof__(type) name; \
7273 __PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES __weak \
7374 __typeof__(type) name
7475 #else
include/linux/pstore.h+3−0
@@ -51,6 +51,7 @@ struct pstore_info { · 50 unmodified lines
5151 char *buf;
5252 size_t bufsize;
5353 struct mutex read_mutex; /* serialize open/read/close */
54+ int flags;
5455 int (*open)(struct pstore_info *psi);
5556 int (*close)(struct pstore_info *psi);
5657 ssize_t (*read)(u64 *id, enum pstore_type_id *type,
@@ -70,6 +71,8 @@ struct pstore_info { · 13 unmodified lines
7071 void *data;
7172 };
7273
74+#define PSTORE_FLAGS_FRAGILE 1
75+
7376 #ifdef CONFIG_PSTORE
7477 extern int pstore_register(struct pstore_info *);
7578 extern bool pstore_cannot_block_path(enum kmsg_dump_reason reason);
include/linux/reboot.h+1−0
@@ -43,6 +43,7 @@ extern int unregister_reboot_notifier(struct notifier_block *); · 42 unmodified lines
4343 * Architecture-specific implementations of sys_reboot commands.
4444 */
4545
46+extern void migrate_to_reboot_cpu(void);
4647 extern void machine_restart(char *cmd);
4748 extern void machine_halt(void);
4849 extern void machine_power_off(void);
include/linux/sched.h+2−3
@@ -440,8 +440,6 @@ struct task_cputime { · 439 unmodified lines
440440 .sum_exec_runtime = 0, \
441441 }
442442
443−#define PREEMPT_ENABLED (PREEMPT_NEED_RESCHED)
444−
445443 #ifdef CONFIG_PREEMPT_COUNT
446444 #define PREEMPT_DISABLED (1 + PREEMPT_ENABLED)
447445 #else
@@ -932,7 +930,8 @@ struct pipe_inode_info; · 484 unmodified lines
932930 struct uts_namespace;
933931
934932 struct load_weight {
935− unsigned long weight, inv_weight;
933+ unsigned long weight;
934+ u32 inv_weight;
936935 };
937936
938937 struct sched_avg {
include/rdma/ib_verbs.h+1−1
@@ -978,7 +978,7 @@ struct ib_uobject { · 977 unmodified lines
978978 };
979979
980980 struct ib_udata {
981− void __user *inbuf;
981+ const void __user *inbuf;
982982 void __user *outbuf;
983983 size_t inlen;
984984 size_t outlen;
include/target/target_core_base.h+1−4
@@ -517,10 +517,6 @@ struct se_node_acl { · 516 unmodified lines
517517 u32 acl_index;
518518 #define MAX_ACL_TAG_SIZE 64
519519 char acl_tag[MAX_ACL_TAG_SIZE];
520− u64 num_cmds;
521− u64 read_bytes;
522− u64 write_bytes;
523− spinlock_t stats_lock;
524520 /* Used for PR SPEC_I_PT=1 and REGISTER_AND_MOVE */
525521 atomic_t acl_pr_ref_count;
526522 struct se_dev_entry **device_list;
@@ -624,6 +620,7 @@ struct se_dev_attrib { · 97 unmodified lines
624620 u32 unmap_granularity;
625621 u32 unmap_granularity_alignment;
626622 u32 max_write_same_len;
623+ u32 max_bytes_per_io;
627624 struct se_device *da_dev;
628625 struct config_group da_group;
629626 };
include/uapi/drm/vmwgfx_drm.h+1−0
@@ -75,6 +75,7 @@ · 74 unmodified lines
7575 #define DRM_VMW_PARAM_FIFO_CAPS 4
7676 #define DRM_VMW_PARAM_MAX_FB_SIZE 5
7777 #define DRM_VMW_PARAM_FIFO_HW_VERSION 6
78+#define DRM_VMW_PARAM_MAX_SURF_MEMORY 7
7879
7980 /**
8081 * struct drm_vmw_getparam_arg
include/uapi/linux/perf_event.h+1−0
@@ -679,6 +679,7 @@ enum perf_event_type { · 678 unmodified lines
679679 *
680680 * { u64 weight; } && PERF_SAMPLE_WEIGHT
681681 * { u64 data_src; } && PERF_SAMPLE_DATA_SRC
682+ * { u64 transaction; } && PERF_SAMPLE_TRANSACTION
682683 * };
683684 */
684685 PERF_RECORD_SAMPLE = 9,
include/xen/interface/io/blkif.h+5−5
@@ -146,7 +146,7 @@ struct blkif_request_segment_aligned { · 145 unmodified lines
146146 struct blkif_request_rw {
147147 uint8_t nr_segments; /* number of segments */
148148 blkif_vdev_t handle; /* only for read/write requests */
149−#ifdef CONFIG_X86_64
149+#ifndef CONFIG_X86_32
150150 uint32_t _pad1; /* offsetof(blkif_request,u.rw.id) == 8 */
151151 #endif
152152 uint64_t id; /* private guest value, echoed in resp */
@@ -163,7 +163,7 @@ struct blkif_request_discard { · 10 unmodified lines
163163 uint8_t flag; /* BLKIF_DISCARD_SECURE or zero. */
164164 #define BLKIF_DISCARD_SECURE (1<<0) /* ignored if discard-secure=0 */
165165 blkif_vdev_t _pad1; /* only for read/write requests */
166−#ifdef CONFIG_X86_64
166+#ifndef CONFIG_X86_32
167167 uint32_t _pad2; /* offsetof(blkif_req..,u.discard.id)==8*/
168168 #endif
169169 uint64_t id; /* private guest value, echoed in resp */
@@ -175,7 +175,7 @@ struct blkif_request_discard { · 5 unmodified lines
175175 struct blkif_request_other {
176176 uint8_t _pad1;
177177 blkif_vdev_t _pad2; /* only for read/write requests */
178−#ifdef CONFIG_X86_64
178+#ifndef CONFIG_X86_32
179179 uint32_t _pad3; /* offsetof(blkif_req..,u.other.id)==8*/
180180 #endif
181181 uint64_t id; /* private guest value, echoed in resp */
@@ -184,7 +184,7 @@ struct blkif_request_other { · 2 unmodified lines
184184 struct blkif_request_indirect {
185185 uint8_t indirect_op;
186186 uint16_t nr_segments;
187−#ifdef CONFIG_X86_64
187+#ifndef CONFIG_X86_32
188188 uint32_t _pad1; /* offsetof(blkif_...,u.indirect.id) == 8 */
189189 #endif
190190 uint64_t id;
@@ -192,7 +192,7 @@ struct blkif_request_indirect { · 1 unmodified line
192192 blkif_vdev_t handle;
193193 uint16_t _pad2;
194194 grant_ref_t indirect_grefs[BLKIF_MAX_INDIRECT_PAGES_PER_REQUEST];
195−#ifdef CONFIG_X86_64
195+#ifndef CONFIG_X86_32
196196 uint32_t _pad3; /* make it 64 byte aligned */
197197 #else
198198 uint64_t _pad3; /* make it 64 byte aligned */
init/Kconfig+6−0
@@ -809,6 +809,12 @@ config GENERIC_SCHED_CLOCK · 808 unmodified lines
809809 config ARCH_SUPPORTS_NUMA_BALANCING
810810 bool
811811
812+#
813+# For architectures that know their GCC __int128 support is sound
814+#
815+config ARCH_SUPPORTS_INT128
816+ bool
817+
812818 # For architectures that (ab)use NUMA to represent different memory regions
813819 # all cpu-local but of different latencies, such as SuperH.
814820 #
kernel/Makefile+4−3
@@ -137,9 +137,10 @@ $(obj)/timeconst.h: $(obj)/hz.bc $(src)/timeconst.bc FORCE · 136 unmodified lines
137137 ###############################################################################
138138 ifeq ($(CONFIG_SYSTEM_TRUSTED_KEYRING),y)
139139 X509_CERTIFICATES-y := $(wildcard *.x509) $(wildcard $(srctree)/*.x509)
140−X509_CERTIFICATES-$(CONFIG_MODULE_SIG) += signing_key.x509
141−X509_CERTIFICATES := $(sort $(foreach CERT,$(X509_CERTIFICATES-y), \
140+X509_CERTIFICATES-$(CONFIG_MODULE_SIG) += $(objtree)/signing_key.x509
141+X509_CERTIFICATES-raw := $(sort $(foreach CERT,$(X509_CERTIFICATES-y), \
142142 $(or $(realpath $(CERT)),$(CERT))))
143+X509_CERTIFICATES := $(subst $(realpath $(objtree))/,,$(X509_CERTIFICATES-raw))
143144
144145 ifeq ($(X509_CERTIFICATES),)
145146 $(warning *** No X.509 certificates found ***)
@@ -164,9 +165,9 @@ $(obj)/x509_certificate_list: $(X509_CERTIFICATES) $(obj)/.x509.list · 18 unmodified lines
164165 targets += $(obj)/.x509.list
165166 $(obj)/.x509.list:
166167 @echo $(X509_CERTIFICATES) >$@
168+endif
167169
168170 clean-files := x509_certificate_list .x509.list
169−endif
170171
171172 ifeq ($(CONFIG_MODULE_SIG),y)
172173 ###############################################################################
kernel/bounds.c+1−1
@@ -22,6 +22,6 @@ void foo(void) · 21 unmodified lines
2222 #ifdef CONFIG_SMP
2323 DEFINE(NR_CPUS_BITS, ilog2(CONFIG_NR_CPUS));
2424 #endif
25− DEFINE(BLOATED_SPINLOCKS, sizeof(spinlock_t) > sizeof(int));
25+ DEFINE(SPINLOCK_SIZE, sizeof(spinlock_t));
2626 /* End of constants */
2727 }
kernel/cgroup.c+32−18
@@ -890,6 +890,16 @@ static void cgroup_diput(struct dentry *dentry, struct inode *inode) · 889 unmodified lines
890890 struct cgroup *cgrp = dentry->d_fsdata;
891891
892892 BUG_ON(!(cgroup_is_dead(cgrp)));
893+
894+ /*
895+ * XXX: cgrp->id is only used to look up css's. As cgroup
896+ * and css's lifetimes will be decoupled, it should be made
897+ * per-subsystem and moved to css->id so that lookups are
898+ * successful until the target css is released.
899+ */
900+ idr_remove(&cgrp->root->cgroup_idr, cgrp->id);
901+ cgrp->id = -1;
902+
893903 call_rcu(&cgrp->rcu_head, cgroup_free_rcu);
894904 } else {
895905 struct cfent *cfe = __d_cfe(dentry);
@@ -4268,6 +4278,7 @@ static void css_release(struct percpu_ref *ref) · 3372 unmodified lines
42684278 struct cgroup_subsys_state *css =
42694279 container_of(ref, struct cgroup_subsys_state, refcnt);
42704280
4281+ rcu_assign_pointer(css->cgroup->subsys[css->ss->subsys_id], NULL);
42714282 call_rcu(&css->rcu_head, css_free_rcu_fn);
42724283 }
42734284
@@ -4426,14 +4437,6 @@ static long cgroup_create(struct cgroup *parent, struct dentry *dentry, · 152 unmodified lines
44264437 list_add_tail_rcu(&cgrp->sibling, &cgrp->parent->children);
44274438 root->number_of_cgroups++;
44284439
4429− /* each css holds a ref to the cgroup's dentry and the parent css */
4430− for_each_root_subsys(root, ss) {
4431− struct cgroup_subsys_state *css = css_ar[ss->subsys_id];
4432−
4433− dget(dentry);
4434− css_get(css->parent);
4435− }
4436−
44374440 /* hold a ref to the parent's dentry */
44384441 dget(parent->dentry);
44394442
@@ -4445,6 +4448,13 @@ static long cgroup_create(struct cgroup *parent, struct dentry *dentry, · 5 unmodified lines
44454448 if (err)
44464449 goto err_destroy;
44474450
4451+ /* each css holds a ref to the cgroup's dentry and parent css */
4452+ dget(dentry);
4453+ css_get(css->parent);
4454+
4455+ /* mark it consumed for error path */
4456+ css_ar[ss->subsys_id] = NULL;
4457+
44484458 if (ss->broken_hierarchy && !ss->warned_broken_hierarchy &&
44494459 parent->parent) {
44504460 pr_warning("cgroup: %s (%d) created nested cgroup for controller \"%s\" which has incomplete hierarchy support. Nested cgroups may change behavior in the future.\n",
@@ -4491,6 +4501,14 @@ err_free_cgrp: · 40 unmodified lines
44914501 return err;
44924502
44934503 err_destroy:
4504+ for_each_root_subsys(root, ss) {
4505+ struct cgroup_subsys_state *css = css_ar[ss->subsys_id];
4506+
4507+ if (css) {
4508+ percpu_ref_cancel_init(&css->refcnt);
4509+ ss->css_free(css);
4510+ }
4511+ }
44944512 cgroup_destroy_locked(cgrp);
44954513 mutex_unlock(&cgroup_mutex);
44964514 mutex_unlock(&dentry->d_inode->i_mutex);
@@ -4652,8 +4670,12 @@ static int cgroup_destroy_locked(struct cgroup *cgrp) · 155 unmodified lines
46524670 * will be invoked to perform the rest of destruction once the
46534671 * percpu refs of all css's are confirmed to be killed.
46544672 */
4655− for_each_root_subsys(cgrp->root, ss)
4656− kill_css(cgroup_css(cgrp, ss));
4673+ for_each_root_subsys(cgrp->root, ss) {
4674+ struct cgroup_subsys_state *css = cgroup_css(cgrp, ss);
4675+
4676+ if (css)
4677+ kill_css(css);
4678+ }
46574679
46584680 /*
46594681 * Mark @cgrp dead. This prevents further task migration and child
@@ -4722,14 +4744,6 @@ static void cgroup_destroy_css_killed(struct cgroup *cgrp) · 62 unmodified lines
47224744 /* delete this cgroup from parent->children */
47234745 list_del_rcu(&cgrp->sibling);
47244746
4725− /*
4726− * We should remove the cgroup object from idr before its grace
4727− * period starts, so we won't be looking up a cgroup while the
4728− * cgroup is being freed.
4729− */
4730− idr_remove(&cgrp->root->cgroup_idr, cgrp->id);
4731− cgrp->id = -1;
4732−
47334747 dput(d);
47344748
47354749 set_bit(CGRP_RELEASABLE, &parent->flags);
kernel/events/core.c+18−3
@@ -1396,6 +1396,8 @@ event_sched_out(struct perf_event *event, · 1395 unmodified lines
13961396 if (event->state != PERF_EVENT_STATE_ACTIVE)
13971397 return;
13981398
1399+ perf_pmu_disable(event->pmu);
1400+
13991401 event->state = PERF_EVENT_STATE_INACTIVE;
14001402 if (event->pending_disable) {
14011403 event->pending_disable = 0;
@@ -1412,6 +1414,8 @@ event_sched_out(struct perf_event *event, · 10 unmodified lines
14121414 ctx->nr_freq--;
14131415 if (event->attr.exclusive || !cpuctx->active_oncpu)
14141416 cpuctx->exclusive = 0;
1417+
1418+ perf_pmu_enable(event->pmu);
14151419 }
14161420
14171421 static void
@@ -1652,6 +1656,7 @@ event_sched_in(struct perf_event *event, · 234 unmodified lines
16521656 struct perf_event_context *ctx)
16531657 {
16541658 u64 tstamp = perf_event_time(event);
1659+ int ret = 0;
16551660
16561661 if (event->state <= PERF_EVENT_STATE_OFF)
16571662 return 0;
@@ -1674,10 +1679,13 @@ event_sched_in(struct perf_event *event, · 16 unmodified lines
16741679 */
16751680 smp_wmb();
16761681
1682+ perf_pmu_disable(event->pmu);
1683+
16771684 if (event->pmu->add(event, PERF_EF_START)) {
16781685 event->state = PERF_EVENT_STATE_INACTIVE;
16791686 event->oncpu = -1;
1680− return -EAGAIN;
1687+ ret = -EAGAIN;
1688+ goto out;
16811689 }
16821690
16831691 event->tstamp_running += tstamp - event->tstamp_stopped;
@@ -1693,7 +1701,10 @@ event_sched_in(struct perf_event *event, · 9 unmodified lines
16931701 if (event->attr.exclusive)
16941702 cpuctx->exclusive = 1;
16951703
1696− return 0;
1704+out:
1705+ perf_pmu_enable(event->pmu);
1706+
1707+ return ret;
16971708 }
16981709
16991710 static int
@@ -2743,6 +2754,8 @@ static void perf_adjust_freq_unthr_context(struct perf_event_context *ctx, · 1043 unmodified lines
27432754 if (!event_filter_match(event))
27442755 continue;
27452756
2757+ perf_pmu_disable(event->pmu);
2758+
27462759 hwc = &event->hw;
27472760
27482761 if (hwc->interrupts == MAX_INTERRUPTS) {
@@ -2752,7 +2765,7 @@ static void perf_adjust_freq_unthr_context(struct perf_event_context *ctx, · 3 unmodified lines
27522765 }
27532766
27542767 if (!event->attr.freq || !event->attr.sample_freq)
2755− continue;
2768+ goto next;
27562769
27572770 /*
27582771 * stop the event and update event->count
@@ -2774,6 +2787,8 @@ static void perf_adjust_freq_unthr_context(struct perf_event_context *ctx, · 15 unmodified lines
27742787 perf_adjust_period(event, period, delta, false);
27752788
27762789 event->pmu->start(event, delta > 0 ? PERF_EF_RELOAD : 0);
2790+ next:
2791+ perf_pmu_enable(event->pmu);
27772792 }
27782793
27792794 perf_pmu_enable(ctx->pmu);
kernel/fork.c+1−0
@@ -537,6 +537,7 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p) · 536 unmodified lines
537537 spin_lock_init(&mm->page_table_lock);
538538 mm_init_aio(mm);
539539 mm_init_owner(mm, p);
540+ clear_tlb_flush_pending(mm);
540541
541542 if (likely(!mm_alloc_pgd(mm))) {
542543 mm->def_flags = 0;
kernel/freezer.c+6−0
@@ -19,6 +19,12 @@ EXPORT_SYMBOL(system_freezing_cnt); · 18 unmodified lines
1919 bool pm_freezing;
2020 bool pm_nosig_freezing;
2121
22+/*
23+ * Temporary export for the deadlock workaround in ata_scsi_hotplug().
24+ * Remove once the hack becomes unnecessary.
25+ */
26+EXPORT_SYMBOL_GPL(pm_freezing);
27+
2228 /* protects freezing and frozen transitions */
2329 static DEFINE_SPINLOCK(freezer_lock);
2430
kernel/kexec.c+1−0
@@ -1680,6 +1680,7 @@ int kernel_kexec(void) · 1679 unmodified lines
16801680 {
16811681 kexec_in_progress = true;
16821682 kernel_restart_prepare(NULL);
1683+ migrate_to_reboot_cpu();
16831684 printk(KERN_EMERG "Starting new kernel\n");
16841685 machine_shutdown();
16851686 }
kernel/power/console.c+1−0
@@ -81,6 +81,7 @@ void pm_vt_switch_unregister(struct device *dev) · 80 unmodified lines
8181 list_for_each_entry(tmp, &pm_vt_switch_list, head) {
8282 if (tmp->dev == dev) {
8383 list_del(&tmp->head);
84+ kfree(tmp);
8485 break;
8586 }
8687 }
kernel/reboot.c+1−1
@@ -104,7 +104,7 @@ int unregister_reboot_notifier(struct notifier_block *nb) · 103 unmodified lines
104104 }
105105 EXPORT_SYMBOL(unregister_reboot_notifier);
106106
107−static void migrate_to_reboot_cpu(void)
107+void migrate_to_reboot_cpu(void)
108108 {
109109 /* The boot cpu is always logical cpu 0 */
110110 int cpu = reboot_cpu;
kernel/sched/core.c+4−2
@@ -4902,6 +4902,7 @@ DEFINE_PER_CPU(struct sched_domain *, sd_asym); · 4901 unmodified lines
49024902 static void update_top_cache_domain(int cpu)
49034903 {
49044904 struct sched_domain *sd;
4905+ struct sched_domain *busy_sd = NULL;
49054906 int id = cpu;
49064907 int size = 1;
49074908
@@ -4909,9 +4910,9 @@ static void update_top_cache_domain(int cpu) · 1 unmodified line
49094910 if (sd) {
49104911 id = cpumask_first(sched_domain_span(sd));
49114912 size = cpumask_weight(sched_domain_span(sd));
4912− sd = sd->parent; /* sd_busy */
4913+ busy_sd = sd->parent; /* sd_busy */
49134914 }
4914− rcu_assign_pointer(per_cpu(sd_busy, cpu), sd);
4915+ rcu_assign_pointer(per_cpu(sd_busy, cpu), busy_sd);
49154916
49164917 rcu_assign_pointer(per_cpu(sd_llc, cpu), sd);
49174918 per_cpu(sd_llc_size, cpu) = size;
@@ -5112,6 +5113,7 @@ build_overlap_sched_groups(struct sched_domain *sd, int cpu) · 194 unmodified lines
51125113 * die on a /0 trap.
51135114 */
51145115 sg->sgp->power = SCHED_POWER_SCALE * cpumask_weight(sg_span);
5116+ sg->sgp->power_orig = sg->sgp->power;
51155117
51165118 /*
51175119 * Make sure the first group of this domain contains the
kernel/sched/fair.c+71−80
@@ -178,59 +178,61 @@ void sched_init_granularity(void) · 177 unmodified lines
178178 update_sysctl();
179179 }
180180
181−#if BITS_PER_LONG == 32
182−# define WMULT_CONST (~0UL)
183−#else
184−# define WMULT_CONST (1UL << 32)
185−#endif
186−
181+#define WMULT_CONST (~0U)
187182 #define WMULT_SHIFT 32
188183
189−/*
190− * Shift right and round:
191− */
192−#define SRR(x, y) (((x) + (1UL << ((y) - 1))) >> (y))
184+static void __update_inv_weight(struct load_weight *lw)
185+{
186+ unsigned long w;
187+
188+ if (likely(lw->inv_weight))
189+ return;
190+
191+ w = scale_load_down(lw->weight);
192+
193+ if (BITS_PER_LONG > 32 && unlikely(w >= WMULT_CONST))
194+ lw->inv_weight = 1;
195+ else if (unlikely(!w))
196+ lw->inv_weight = WMULT_CONST;
197+ else
198+ lw->inv_weight = WMULT_CONST / w;
199+}
193200
194201 /*
195− * delta *= weight / lw
202+ * delta_exec * weight / lw.weight
203+ * OR
204+ * (delta_exec * (weight * lw->inv_weight)) >> WMULT_SHIFT
205+ *
206+ * Either weight := NICE_0_LOAD and lw \e prio_to_wmult[], in which case
207+ * we're guaranteed shift stays positive because inv_weight is guaranteed to
208+ * fit 32 bits, and NICE_0_LOAD gives another 10 bits; therefore shift >= 22.
209+ *
210+ * Or, weight =< lw.weight (because lw.weight is the runqueue weight), thus
211+ * weight/lw.weight <= 1, and therefore our shift will also be positive.
196212 */
197−static unsigned long
198−calc_delta_mine(unsigned long delta_exec, unsigned long weight,
199− struct load_weight *lw)
213+static u64 __calc_delta(u64 delta_exec, unsigned long weight, struct load_weight *lw)
200214 {
201− u64 tmp;
202−
203− /*
204− * weight can be less than 2^SCHED_LOAD_RESOLUTION for task group sched
205− * entities since MIN_SHARES = 2. Treat weight as 1 if less than
206− * 2^SCHED_LOAD_RESOLUTION.
207− */
208− if (likely(weight > (1UL << SCHED_LOAD_RESOLUTION)))
209− tmp = (u64)delta_exec * scale_load_down(weight);
210− else
211− tmp = (u64)delta_exec;
215+ u64 fact = scale_load_down(weight);
216+ int shift = WMULT_SHIFT;
212217
213− if (!lw->inv_weight) {
214− unsigned long w = scale_load_down(lw->weight);
218+ __update_inv_weight(lw);
215219
216− if (BITS_PER_LONG > 32 && unlikely(w >= WMULT_CONST))
217− lw->inv_weight = 1;
218− else if (unlikely(!w))
219− lw->inv_weight = WMULT_CONST;
220− else
221− lw->inv_weight = WMULT_CONST / w;
220+ if (unlikely(fact >> 32)) {
221+ while (fact >> 32) {
222+ fact >>= 1;
223+ shift--;
224+ }
222225 }
223226
224− /*
225− * Check whether we'd overflow the 64-bit multiplication:
226− */
227− if (unlikely(tmp > WMULT_CONST))
228− tmp = SRR(SRR(tmp, WMULT_SHIFT/2) * lw->inv_weight,
229− WMULT_SHIFT/2);
230− else
231− tmp = SRR(tmp * lw->inv_weight, WMULT_SHIFT);
227+ /* hint to use a 32x32->64 mul */
228+ fact = (u64)(u32)fact * lw->inv_weight;
229+
230+ while (fact >> 32) {
231+ fact >>= 1;
232+ shift--;
233+ }
232234
233− return (unsigned long)min(tmp, (u64)(unsigned long)LONG_MAX);
235+ return mul_u64_u32_shr(delta_exec, fact, shift);
234236 }
235237
236238
@@ -443,7 +445,7 @@ find_matching_se(struct sched_entity **se, struct sched_entity **pse) · 206 unmodified lines
443445 #endif /* CONFIG_FAIR_GROUP_SCHED */
444446
445447 static __always_inline
446−void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, unsigned long delta_exec);
448+void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec);
447449
448450 /**************************************************************
449451 * Scheduling class tree data structure manipulation methods:
@@ -612,11 +614,10 @@ int sched_proc_update_handler(struct ctl_table *table, int write, · 162 unmodified lines
612614 /*
613615 * delta /= w
614616 */
615−static inline unsigned long
616−calc_delta_fair(unsigned long delta, struct sched_entity *se)
617+static inline u64 calc_delta_fair(u64 delta, struct sched_entity *se)
617618 {
618619 if (unlikely(se->load.weight != NICE_0_LOAD))
619− delta = calc_delta_mine(delta, NICE_0_LOAD, &se->load);
620+ delta = __calc_delta(delta, NICE_0_LOAD, &se->load);
620621
621622 return delta;
622623 }
@@ -665,7 +666,7 @@ static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) · 42 unmodified lines
665666 update_load_add(&lw, se->load.weight);
666667 load = &lw;
667668 }
668− slice = calc_delta_mine(slice, se->load.weight, load);
669+ slice = __calc_delta(slice, se->load.weight, load);
669670 }
670671 return slice;
671672 }
@@ -703,47 +704,32 @@ void init_task_runnable_average(struct task_struct *p) · 31 unmodified lines
703704 #endif
704705
705706 /*
706− * Update the current task's runtime statistics. Skip current tasks that
707− * are not in our scheduling class.
707+ * Update the current task's runtime statistics.
708708 */
709−static inline void
710−__update_curr(struct cfs_rq *cfs_rq, struct sched_entity *curr,
711− unsigned long delta_exec)
712−{
713− unsigned long delta_exec_weighted;
714−
715− schedstat_set(curr->statistics.exec_max,
716− max((u64)delta_exec, curr->statistics.exec_max));
717−
718− curr->sum_exec_runtime += delta_exec;
719− schedstat_add(cfs_rq, exec_clock, delta_exec);
720− delta_exec_weighted = calc_delta_fair(delta_exec, curr);
721−
722− curr->vruntime += delta_exec_weighted;
723− update_min_vruntime(cfs_rq);
724−}
725−
726709 static void update_curr(struct cfs_rq *cfs_rq)
727710 {
728711 struct sched_entity *curr = cfs_rq->curr;
729712 u64 now = rq_clock_task(rq_of(cfs_rq));
730− unsigned long delta_exec;
713+ u64 delta_exec;
731714
732715 if (unlikely(!curr))
733716 return;
734717
735− /*
736− * Get the amount of time the current task was running
737− * since the last time we changed load (this cannot
738− * overflow on 32 bits):
739− */
740− delta_exec = (unsigned long)(now - curr->exec_start);
741− if (!delta_exec)
718+ delta_exec = now - curr->exec_start;
719+ if (unlikely((s64)delta_exec <= 0))
742720 return;
743721
744− __update_curr(cfs_rq, curr, delta_exec);
745722 curr->exec_start = now;
746723
724+ schedstat_set(curr->statistics.exec_max,
725+ max(delta_exec, curr->statistics.exec_max));
726+
727+ curr->sum_exec_runtime += delta_exec;
728+ schedstat_add(cfs_rq, exec_clock, delta_exec);
729+
730+ curr->vruntime += calc_delta_fair(delta_exec, curr);
731+ update_min_vruntime(cfs_rq);
732+
747733 if (entity_is_task(curr)) {
748734 struct task_struct *curtask = task_of(curr);
749735
@@ -1752,6 +1738,13 @@ void task_numa_work(struct callback_head *work) · 1002 unmodified lines
17521738 (vma->vm_file && (vma->vm_flags & (VM_READ|VM_WRITE)) == (VM_READ)))
17531739 continue;
17541740
1741+ /*
1742+ * Skip inaccessible VMAs to avoid any confusion between
1743+ * PROT_NONE and NUMA hinting ptes
1744+ */
1745+ if (!(vma->vm_flags & (VM_READ | VM_EXEC | VM_WRITE)))
1746+ continue;
1747+
17551748 do {
17561749 start = max(start, vma->vm_start);
17571750 end = ALIGN(start + (pages << PAGE_SHIFT), HPAGE_SIZE);
@@ -3015,8 +3008,7 @@ static void expire_cfs_rq_runtime(struct cfs_rq *cfs_rq) · 1257 unmodified lines
30153008 }
30163009 }
30173010
3018−static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq,
3019− unsigned long delta_exec)
3011+static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec)
30203012 {
30213013 /* dock delta_exec before expiring quota (as it could span periods) */
30223014 cfs_rq->runtime_remaining -= delta_exec;
@@ -3034,7 +3026,7 @@ static void __account_cfs_rq_runtime(struct cfs_rq *cfs_rq, · 11 unmodified lines
30343026 }
30353027
30363028 static __always_inline
3037−void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, unsigned long delta_exec)
3029+void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec)
30383030 {
30393031 if (!cfs_bandwidth_used() || !cfs_rq->runtime_enabled)
30403032 return;
@@ -3574,8 +3566,7 @@ static inline u64 cfs_rq_clock_task(struct cfs_rq *cfs_rq) · 533 unmodified lines
35743566 return rq_clock_task(rq_of(cfs_rq));
35753567 }
35763568
3577−static void account_cfs_rq_runtime(struct cfs_rq *cfs_rq,
3578− unsigned long delta_exec) {}
3569+static void account_cfs_rq_runtime(struct cfs_rq *cfs_rq, u64 delta_exec) {}
35793570 static void check_cfs_rq_runtime(struct cfs_rq *cfs_rq) {}
35803571 static void check_enqueue_throttle(struct cfs_rq *cfs_rq) {}
35813572 static __always_inline void return_cfs_rq_runtime(struct cfs_rq *cfs_rq) {}
kernel/sched/rt.c+14−0
@@ -901,6 +901,13 @@ inc_rt_prio_smp(struct rt_rq *rt_rq, int prio, int prev_prio) · 900 unmodified lines
901901 {
902902 struct rq *rq = rq_of_rt_rq(rt_rq);
903903
904+#ifdef CONFIG_RT_GROUP_SCHED
905+ /*
906+ * Change rq's cpupri only if rt_rq is the top queue.
907+ */
908+ if (&rq->rt != rt_rq)
909+ return;
910+#endif
904911 if (rq->online && prio < prev_prio)
905912 cpupri_set(&rq->rd->cpupri, rq->cpu, prio);
906913 }
@@ -910,6 +917,13 @@ dec_rt_prio_smp(struct rt_rq *rt_rq, int prio, int prev_prio) · 3 unmodified lines
910917 {
911918 struct rq *rq = rq_of_rt_rq(rt_rq);
912919
920+#ifdef CONFIG_RT_GROUP_SCHED
921+ /*
922+ * Change rq's cpupri only if rt_rq is the top queue.
923+ */
924+ if (&rq->rt != rt_rq)
925+ return;
926+#endif
913927 if (rq->online && rt_rq->highest_prio.curr != prev_prio)
914928 cpupri_set(&rq->rd->cpupri, rq->cpu, rt_rq->highest_prio.curr);
915929 }
kernel/trace/ftrace.c+1−1
@@ -775,7 +775,7 @@ static int ftrace_profile_init(void) · 774 unmodified lines
775775 int cpu;
776776 int ret = 0;
777777
778− for_each_online_cpu(cpu) {
778+ for_each_possible_cpu(cpu) {
779779 ret = ftrace_profile_init_cpu(cpu);
780780 if (ret)
781781 break;
kernel/user.c+3−3
@@ -51,9 +51,9 @@ struct user_namespace init_user_ns = { · 50 unmodified lines
5151 .owner = GLOBAL_ROOT_UID,
5252 .group = GLOBAL_ROOT_GID,
5353 .proc_inum = PROC_USER_INIT_INO,
54−#ifdef CONFIG_KEYS_KERBEROS_CACHE
55− .krb_cache_register_sem =
56− __RWSEM_INITIALIZER(init_user_ns.krb_cache_register_sem),
54+#ifdef CONFIG_PERSISTENT_KEYRINGS
55+ .persistent_keyring_register_sem =
56+ __RWSEM_INITIALIZER(init_user_ns.persistent_keyring_register_sem),
5757 #endif
5858 };
5959 EXPORT_SYMBOL_GPL(init_user_ns);
mm/Kconfig+1−1
@@ -543,7 +543,7 @@ config ZSWAP · 542 unmodified lines
543543
544544 config MEM_SOFT_DIRTY
545545 bool "Track memory changes"
546− depends on CHECKPOINT_RESTORE && HAVE_ARCH_SOFT_DIRTY
546+ depends on CHECKPOINT_RESTORE && HAVE_ARCH_SOFT_DIRTY && PROC_FS
547547 select PROC_PAGE_MONITOR
548548 help
549549 This option enables memory changes tracking by introducing a
mm/compaction.c+4−0
@@ -134,6 +134,10 @@ static void update_pageblock_skip(struct compact_control *cc, · 133 unmodified lines
134134 bool migrate_scanner)
135135 {
136136 struct zone *zone = cc->zone;
137+
138+ if (cc->ignore_skip_hint)
139+ return;
140+
137141 if (!page)
138142 return;
139143
mm/huge_memory.c+36−9
@@ -882,6 +882,10 @@ int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm, · 881 unmodified lines
882882 ret = 0;
883883 goto out_unlock;
884884 }
885+
886+ /* mmap_sem prevents this happening but warn if that changes */
887+ WARN_ON(pmd_trans_migrating(pmd));
888+
885889 if (unlikely(pmd_trans_splitting(pmd))) {
886890 /* split huge page running from under us */
887891 spin_unlock(src_ptl);
@@ -1243,6 +1247,10 @@ struct page *follow_trans_huge_pmd(struct vm_area_struct *vma, · 355 unmodified lines
12431247 if ((flags & FOLL_DUMP) && is_huge_zero_pmd(*pmd))
12441248 return ERR_PTR(-EFAULT);
12451249
1250+ /* Full NUMA hinting faults to serialise migration in fault paths */
1251+ if ((flags & FOLL_NUMA) && pmd_numa(*pmd))
1252+ goto out;
1253+
12461254 page = pmd_page(*pmd);
12471255 VM_BUG_ON(!PageHead(page));
12481256 if (flags & FOLL_TOUCH) {
@@ -1295,6 +1303,17 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma, · 46 unmodified lines
12951303 if (unlikely(!pmd_same(pmd, *pmdp)))
12961304 goto out_unlock;
12971305
1306+ /*
1307+ * If there are potential migrations, wait for completion and retry
1308+ * without disrupting NUMA hinting information. Do not relock and
1309+ * check_same as the page may no longer be mapped.
1310+ */
1311+ if (unlikely(pmd_trans_migrating(*pmdp))) {
1312+ spin_unlock(ptl);
1313+ wait_migrate_huge_page(vma->anon_vma, pmdp);
1314+ goto out;
1315+ }
1316+
12981317 page = pmd_page(pmd);
12991318 BUG_ON(is_huge_zero_page(page));
13001319 page_nid = page_to_nid(page);
@@ -1323,23 +1342,22 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma, · 22 unmodified lines
13231342 /* If the page was locked, there are no parallel migrations */
13241343 if (page_locked)
13251344 goto clear_pmdnuma;
1345+ }
13261346
1327− /*
1328− * Otherwise wait for potential migrations and retry. We do
1329− * relock and check_same as the page may no longer be mapped.
1330− * As the fault is being retried, do not account for it.
1331− */
1347+ /* Migration could have started since the pmd_trans_migrating check */
1348+ if (!page_locked) {
13321349 spin_unlock(ptl);
13331350 wait_on_page_locked(page);
13341351 page_nid = -1;
13351352 goto out;
13361353 }
13371354
1338− /* Page is misplaced, serialise migrations and parallel THP splits */
1355+ /*
1356+ * Page is misplaced. Page lock serialises migrations. Acquire anon_vma
1357+ * to serialises splits
1358+ */
13391359 get_page(page);
13401360 spin_unlock(ptl);
1341− if (!page_locked)
1342− lock_page(page);
13431361 anon_vma = page_lock_anon_vma_read(page);
13441362
13451363 /* Confirm the PMD did not change while page_table_lock was released */
@@ -1351,6 +1369,13 @@ int do_huge_pmd_numa_page(struct mm_struct *mm, struct vm_area_struct *vma, · 5 unmodified lines
13511369 goto out_unlock;
13521370 }
13531371
1372+ /* Bail if we fail to protect against THP splits for any reason */
1373+ if (unlikely(!anon_vma)) {
1374+ put_page(page);
1375+ page_nid = -1;
1376+ goto clear_pmdnuma;
1377+ }
1378+
13541379 /*
13551380 * Migrate the THP to the requested node, returns with page unlocked
13561381 * and pmd_numa cleared.
@@ -1517,6 +1542,8 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, · 160 unmodified lines
15171542 ret = 1;
15181543 if (!prot_numa) {
15191544 entry = pmdp_get_and_clear(mm, addr, pmd);
1545+ if (pmd_numa(entry))
1546+ entry = pmd_mknonnuma(entry);
15201547 entry = pmd_modify(entry, newprot);
15211548 ret = HPAGE_PMD_NR;
15221549 BUG_ON(pmd_write(entry));
@@ -1531,7 +1558,7 @@ int change_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd, · 8 unmodified lines
15311558 */
15321559 if (!is_huge_zero_page(page) &&
15331560 !pmd_numa(*pmd)) {
1534− entry = pmdp_get_and_clear(mm, addr, pmd);
1561+ entry = *pmd;
15351562 entry = pmd_mknuma(entry);
15361563 ret = HPAGE_PMD_NR;
15371564 }
mm/memory-failure.c+10−4
@@ -1505,10 +1505,16 @@ static int soft_offline_huge_page(struct page *page, int flags) · 1504 unmodified lines
15051505 if (ret > 0)
15061506 ret = -EIO;
15071507 } else {
1508− set_page_hwpoison_huge_page(hpage);
1509− dequeue_hwpoisoned_huge_page(hpage);
1510− atomic_long_add(1 << compound_order(hpage),
1511− &num_poisoned_pages);
1508+ /* overcommit hugetlb page will be freed to buddy */
1509+ if (PageHuge(page)) {
1510+ set_page_hwpoison_huge_page(hpage);
1511+ dequeue_hwpoisoned_huge_page(hpage);
1512+ atomic_long_add(1 << compound_order(hpage),
1513+ &num_poisoned_pages);
1514+ } else {
1515+ SetPageHWPoison(page);
1516+ atomic_long_inc(&num_poisoned_pages);
1517+ }
15121518 }
15131519 return ret;
15141520 }
mm/memory.c+1−1
@@ -4271,7 +4271,7 @@ void copy_user_huge_page(struct page *dst, struct page *src, · 4270 unmodified lines
42714271 }
42724272 #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_HUGETLBFS */
42734273
4274−#if USE_SPLIT_PTE_PTLOCKS && BLOATED_SPINLOCKS
4274+#if USE_SPLIT_PTE_PTLOCKS && ALLOC_SPLIT_PTLOCKS
42754275 bool ptlock_alloc(struct page *page)
42764276 {
42774277 spinlock_t *ptl;
mm/mempolicy.c+9−7
@@ -1197,14 +1197,16 @@ static struct page *new_vma_page(struct page *page, unsigned long private, int * · 1196 unmodified lines
11971197 break;
11981198 vma = vma->vm_next;
11991199 }
1200+
1201+ if (PageHuge(page)) {
1202+ if (vma)
1203+ return alloc_huge_page_noerr(vma, address, 1);
1204+ else
1205+ return NULL;
1206+ }
12001207 /*
1201− * queue_pages_range() confirms that @page belongs to some vma,
1202− * so vma shouldn't be NULL.
1208+ * if !vma, alloc_page_vma() will use task or system default policy
12031209 */
1204− BUG_ON(!vma);
1205−
1206− if (PageHuge(page))
1207− return alloc_huge_page_noerr(vma, address, 1);
12081210 return alloc_page_vma(GFP_HIGHUSER_MOVABLE, vma, address);
12091211 }
12101212 #else
@@ -1318,7 +1320,7 @@ static long do_mbind(unsigned long start, unsigned long len, · 107 unmodified lines
13181320 if (nr_failed && (flags & MPOL_MF_STRICT))
13191321 err = -EIO;
13201322 } else
1321− putback_lru_pages(&pagelist);
1323+ putback_movable_pages(&pagelist);
13221324
13231325 up_write(&mm->mmap_sem);
13241326 mpol_out:
mm/migrate.c+65−17
@@ -36,6 +36,7 @@ · 35 unmodified lines
3636 #include <linux/hugetlb_cgroup.h>
3737 #include <linux/gfp.h>
3838 #include <linux/balloon_compaction.h>
39+#include <linux/mmu_notifier.h>
3940
4041 #include <asm/tlbflush.h>
4142
@@ -316,14 +317,15 @@ static inline bool buffer_migrate_lock_buffers(struct buffer_head *head, · 274 unmodified lines
316317 */
317318 int migrate_page_move_mapping(struct address_space *mapping,
318319 struct page *newpage, struct page *page,
319− struct buffer_head *head, enum migrate_mode mode)
320+ struct buffer_head *head, enum migrate_mode mode,
321+ int extra_count)
320322 {
321− int expected_count = 0;
323+ int expected_count = 1 + extra_count;
322324 void **pslot;
323325
324326 if (!mapping) {
325327 /* Anonymous page without mapping */
326− if (page_count(page) != 1)
328+ if (page_count(page) != expected_count)
327329 return -EAGAIN;
328330 return MIGRATEPAGE_SUCCESS;
329331 }
@@ -333,7 +335,7 @@ int migrate_page_move_mapping(struct address_space *mapping, · 3 unmodified lines
333335 pslot = radix_tree_lookup_slot(&mapping->page_tree,
334336 page_index(page));
335337
336− expected_count = 2 + page_has_private(page);
338+ expected_count += 1 + page_has_private(page);
337339 if (page_count(page) != expected_count ||
338340 radix_tree_deref_slot_protected(pslot, &mapping->tree_lock) != page) {
339341 spin_unlock_irq(&mapping->tree_lock);
@@ -583,7 +585,7 @@ int migrate_page(struct address_space *mapping, · 243 unmodified lines
583585
584586 BUG_ON(PageWriteback(page)); /* Writeback must be complete */
585587
586− rc = migrate_page_move_mapping(mapping, newpage, page, NULL, mode);
588+ rc = migrate_page_move_mapping(mapping, newpage, page, NULL, mode, 0);
587589
588590 if (rc != MIGRATEPAGE_SUCCESS)
589591 return rc;
@@ -610,7 +612,7 @@ int buffer_migrate_page(struct address_space *mapping, · 20 unmodified lines
610612
611613 head = page_buffers(page);
612614
613− rc = migrate_page_move_mapping(mapping, newpage, page, head, mode);
615+ rc = migrate_page_move_mapping(mapping, newpage, page, head, mode, 0);
614616
615617 if (rc != MIGRATEPAGE_SUCCESS)
616618 return rc;
@@ -1654,6 +1656,18 @@ int numamigrate_isolate_page(pg_data_t *pgdat, struct page *page) · 1037 unmodified lines
16541656 return 1;
16551657 }
16561658
1659+bool pmd_trans_migrating(pmd_t pmd)
1660+{
1661+ struct page *page = pmd_page(pmd);
1662+ return PageLocked(page);
1663+}
1664+
1665+void wait_migrate_huge_page(struct anon_vma *anon_vma, pmd_t *pmd)
1666+{
1667+ struct page *page = pmd_page(*pmd);
1668+ wait_on_page_locked(page);
1669+}
1670+
16571671 /*
16581672 * Attempt to migrate a misplaced page to the specified destination
16591673 * node. Caller is expected to have an elevated reference count on
@@ -1716,12 +1730,14 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm, · 56 unmodified lines
17161730 struct page *page, int node)
17171731 {
17181732 spinlock_t *ptl;
1719− unsigned long haddr = address & HPAGE_PMD_MASK;
17201733 pg_data_t *pgdat = NODE_DATA(node);
17211734 int isolated = 0;
17221735 struct page *new_page = NULL;
17231736 struct mem_cgroup *memcg = NULL;
17241737 int page_lru = page_is_file_cache(page);
1738+ unsigned long mmun_start = address & HPAGE_PMD_MASK;
1739+ unsigned long mmun_end = mmun_start + HPAGE_PMD_SIZE;
1740+ pmd_t orig_entry;
17251741
17261742 /*
17271743 * Rate-limit the amount of data that is being migrated to a node.
@@ -1744,6 +1760,9 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm, · 16 unmodified lines
17441760 goto out_fail;
17451761 }
17461762
1763+ if (mm_tlb_flush_pending(mm))
1764+ flush_tlb_range(vma, mmun_start, mmun_end);
1765+
17471766 /* Prepare a page as a migration target */
17481767 __set_page_locked(new_page);
17491768 SetPageSwapBacked(new_page);
@@ -1755,9 +1774,12 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm, · 5 unmodified lines
17551774 WARN_ON(PageLRU(new_page));
17561775
17571776 /* Recheck the target PMD */
1777+ mmu_notifier_invalidate_range_start(mm, mmun_start, mmun_end);
17581778 ptl = pmd_lock(mm, pmd);
1759− if (unlikely(!pmd_same(*pmd, entry))) {
1779+ if (unlikely(!pmd_same(*pmd, entry) || page_count(page) != 2)) {
1780+fail_putback:
17601781 spin_unlock(ptl);
1782+ mmu_notifier_invalidate_range_end(mm, mmun_start, mmun_end);
17611783
17621784 /* Reverse changes made by migrate_page_copy() */
17631785 if (TestClearPageActive(new_page))
@@ -1774,7 +1796,8 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm, · 10 unmodified lines
17741796 putback_lru_page(page);
17751797 mod_zone_page_state(page_zone(page),
17761798 NR_ISOLATED_ANON + page_lru, -HPAGE_PMD_NR);
1777− goto out_fail;
1799+
1800+ goto out_unlock;
17781801 }
17791802
17801803 /*
@@ -1786,16 +1809,35 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm, · 5 unmodified lines
17861809 */
17871810 mem_cgroup_prepare_migration(page, new_page, &memcg);
17881811
1812+ orig_entry = *pmd;
17891813 entry = mk_pmd(new_page, vma->vm_page_prot);
1790− entry = pmd_mknonnuma(entry);
1791− entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
17921814 entry = pmd_mkhuge(entry);
1815+ entry = maybe_pmd_mkwrite(pmd_mkdirty(entry), vma);
17931816
1794− pmdp_clear_flush(vma, haddr, pmd);
1795− set_pmd_at(mm, haddr, pmd, entry);
1796− page_add_new_anon_rmap(new_page, vma, haddr);
1817+ /*
1818+ * Clear the old entry under pagetable lock and establish the new PTE.
1819+ * Any parallel GUP will either observe the old page blocking on the
1820+ * page lock, block on the page table lock or observe the new page.
1821+ * The SetPageUptodate on the new page and page_add_new_anon_rmap
1822+ * guarantee the copy is visible before the pagetable update.
1823+ */
1824+ flush_cache_range(vma, mmun_start, mmun_end);
1825+ page_add_new_anon_rmap(new_page, vma, mmun_start);
1826+ pmdp_clear_flush(vma, mmun_start, pmd);
1827+ set_pmd_at(mm, mmun_start, pmd, entry);
1828+ flush_tlb_range(vma, mmun_start, mmun_end);
17971829 update_mmu_cache_pmd(vma, address, &entry);
1830+
1831+ if (page_count(page) != 2) {
1832+ set_pmd_at(mm, mmun_start, pmd, orig_entry);
1833+ flush_tlb_range(vma, mmun_start, mmun_end);
1834+ update_mmu_cache_pmd(vma, address, &entry);
1835+ page_remove_rmap(new_page);
1836+ goto fail_putback;
1837+ }
1838+
17981839 page_remove_rmap(page);
1840+
17991841 /*
18001842 * Finish the charge transaction under the page table lock to
18011843 * prevent split_huge_page() from dividing up the charge
@@ -1803,6 +1845,7 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm, · 1 unmodified line
18031845 */
18041846 mem_cgroup_end_migration(memcg, page, new_page, true);
18051847 spin_unlock(ptl);
1848+ mmu_notifier_invalidate_range_end(mm, mmun_start, mmun_end);
18061849
18071850 unlock_page(new_page);
18081851 unlock_page(page);
@@ -1820,10 +1863,15 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm, · 11 unmodified lines
18201863 out_fail:
18211864 count_vm_events(PGMIGRATE_FAIL, HPAGE_PMD_NR);
18221865 out_dropref:
1823− entry = pmd_mknonnuma(entry);
1824− set_pmd_at(mm, haddr, pmd, entry);
1825− update_mmu_cache_pmd(vma, address, &entry);
1866+ ptl = pmd_lock(mm, pmd);
1867+ if (pmd_same(*pmd, entry)) {
1868+ entry = pmd_mknonnuma(entry);
1869+ set_pmd_at(mm, mmun_start, pmd, entry);
1870+ update_mmu_cache_pmd(vma, address, &entry);
1871+ }
1872+ spin_unlock(ptl);
18261873
1874+out_unlock:
18271875 unlock_page(page);
18281876 put_page(page);
18291877 return 0;
mm/mprotect.c+11−2
@@ -52,17 +52,21 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd, · 51 unmodified lines
5252 pte_t ptent;
5353 bool updated = false;
5454
55− ptent = ptep_modify_prot_start(mm, addr, pte);
5655 if (!prot_numa) {
56+ ptent = ptep_modify_prot_start(mm, addr, pte);
57+ if (pte_numa(ptent))
58+ ptent = pte_mknonnuma(ptent);
5759 ptent = pte_modify(ptent, newprot);
5860 updated = true;
5961 } else {
6062 struct page *page;
6163
64+ ptent = *pte;
6265 page = vm_normal_page(vma, addr, oldpte);
6366 if (page) {
6467 if (!pte_numa(oldpte)) {
6568 ptent = pte_mknuma(ptent);
69+ set_pte_at(mm, addr, pte, ptent);
6670 updated = true;
6771 }
6872 }
@@ -79,7 +83,10 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd, · 10 unmodified lines
7983
8084 if (updated)
8185 pages++;
82− ptep_modify_prot_commit(mm, addr, pte, ptent);
86+
87+ /* Only !prot_numa always clears the pte */
88+ if (!prot_numa)
89+ ptep_modify_prot_commit(mm, addr, pte, ptent);
8390 } else if (IS_ENABLED(CONFIG_MIGRATION) && !pte_file(oldpte)) {
8491 swp_entry_t entry = pte_to_swp_entry(oldpte);
8592
@@ -181,6 +188,7 @@ static unsigned long change_protection_range(struct vm_area_struct *vma, · 95 unmodified lines
181188 BUG_ON(addr >= end);
182189 pgd = pgd_offset(mm, addr);
183190 flush_cache_range(vma, addr, end);
191+ set_tlb_flush_pending(mm);
184192 do {
185193 next = pgd_addr_end(addr, end);
186194 if (pgd_none_or_clear_bad(pgd))
@@ -192,6 +200,7 @@ static unsigned long change_protection_range(struct vm_area_struct *vma, · 5 unmodified lines
192200 /* Only flush the TLB if we actually modified any entries: */
193201 if (pages)
194202 flush_tlb_range(vma, start, end);
203+ clear_tlb_flush_pending(mm);
195204
196205 return pages;
197206 }
mm/page_alloc.c+9−10
@@ -1816,7 +1816,7 @@ static void zlc_clear_zones_full(struct zonelist *zonelist) · 1815 unmodified lines
18161816
18171817 static bool zone_local(struct zone *local_zone, struct zone *zone)
18181818 {
1819− return node_distance(local_zone->node, zone->node) == LOCAL_DISTANCE;
1819+ return local_zone->node == zone->node;
18201820 }
18211821
18221822 static bool zone_allows_reclaim(struct zone *local_zone, struct zone *zone)
@@ -1913,18 +1913,17 @@ zonelist_scan: · 90 unmodified lines
19131913 * page was allocated in should have no effect on the
19141914 * time the page has in memory before being reclaimed.
19151915 *
1916− * When zone_reclaim_mode is enabled, try to stay in
1917− * local zones in the fastpath. If that fails, the
1918− * slowpath is entered, which will do another pass
1919− * starting with the local zones, but ultimately fall
1920− * back to remote zones that do not partake in the
1921− * fairness round-robin cycle of this zonelist.
1916+ * Try to stay in local zones in the fastpath. If
1917+ * that fails, the slowpath is entered, which will do
1918+ * another pass starting with the local zones, but
1919+ * ultimately fall back to remote zones that do not
1920+ * partake in the fairness round-robin cycle of this
1921+ * zonelist.
19221922 */
19231923 if (alloc_flags & ALLOC_WMARK_LOW) {
19241924 if (zone_page_state(zone, NR_ALLOC_BATCH) <= 0)
19251925 continue;
1926− if (zone_reclaim_mode &&
1927− !zone_local(preferred_zone, zone))
1926+ if (!zone_local(preferred_zone, zone))
19281927 continue;
19291928 }
19301929 /*
@@ -2390,7 +2389,7 @@ static void prepare_slowpath(gfp_t gfp_mask, unsigned int order, · 459 unmodified lines
23902389 * thrash fairness information for zones that are not
23912390 * actually part of this zonelist's round-robin cycle.
23922391 */
2393− if (zone_reclaim_mode && !zone_local(preferred_zone, zone))
2392+ if (!zone_local(preferred_zone, zone))
23942393 continue;
23952394 mod_zone_page_state(zone, NR_ALLOC_BATCH,
23962395 high_wmark_pages(zone) -
mm/pgtable-generic.c+6−2
@@ -110,9 +110,10 @@ int pmdp_clear_flush_young(struct vm_area_struct *vma, · 109 unmodified lines
110110 pte_t ptep_clear_flush(struct vm_area_struct *vma, unsigned long address,
111111 pte_t *ptep)
112112 {
113+ struct mm_struct *mm = (vma)->vm_mm;
113114 pte_t pte;
114− pte = ptep_get_and_clear((vma)->vm_mm, address, ptep);
115− if (pte_accessible(pte))
115+ pte = ptep_get_and_clear(mm, address, ptep);
116+ if (pte_accessible(mm, pte))
116117 flush_tlb_page(vma, address);
117118 return pte;
118119 }
@@ -191,6 +192,9 @@ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp) · 72 unmodified lines
191192 void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
192193 pmd_t *pmdp)
193194 {
195+ pmd_t entry = *pmdp;
196+ if (pmd_numa(entry))
197+ entry = pmd_mknonnuma(entry);
194198 set_pmd_at(vma->vm_mm, address, pmdp, pmd_mknotpresent(*pmdp));
195199 flush_tlb_range(vma, address, address + HPAGE_PMD_SIZE);
196200 }
mm/rmap.c+4−0
@@ -600,7 +600,11 @@ pte_t *__page_check_address(struct page *page, struct mm_struct *mm, · 599 unmodified lines
600600 spinlock_t *ptl;
601601
602602 if (unlikely(PageHuge(page))) {
603+ /* when pud is not present, pte will be NULL */
603604 pte = huge_pte_offset(mm, address);
605+ if (!pte)
606+ return NULL;
607+
604608 ptl = huge_pte_lockptr(page_hstate(page), mm, pte);
605609 goto check;
606610 }
net/core/neighbour.c+1−0
@@ -1161,6 +1161,7 @@ int neigh_update(struct neighbour *neigh, const u8 *lladdr, u8 new, · 1160 unmodified lines
11611161 neigh->parms->reachable_time :
11621162 0)));
11631163 neigh->nud_state = new;
1164+ notify = 1;
11641165 }
11651166
11661167 if (lladdr != neigh->ha) {
net/ipv4/netfilter/ipt_SYNPROXY.c+1−0
@@ -423,6 +423,7 @@ static void synproxy_tg4_destroy(const struct xt_tgdtor_param *par) · 422 unmodified lines
423423 static struct xt_target synproxy_tg4_reg __read_mostly = {
424424 .name = "SYNPROXY",
425425 .family = NFPROTO_IPV4,
426+ .hooks = (1 << NF_INET_LOCAL_IN) | (1 << NF_INET_FORWARD),
426427 .target = synproxy_tg4,
427428 .targetsize = sizeof(struct xt_synproxy_info),
428429 .checkentry = synproxy_tg4_check,
net/ipv4/netfilter/nft_reject_ipv4.c+1−1
@@ -72,7 +72,7 @@ static int nft_reject_dump(struct sk_buff *skb, const struct nft_expr *expr) · 71 unmodified lines
7272 {
7373 const struct nft_reject *priv = nft_expr_priv(expr);
7474
75− if (nla_put_be32(skb, NFTA_REJECT_TYPE, priv->type))
75+ if (nla_put_be32(skb, NFTA_REJECT_TYPE, htonl(priv->type)))
7676 goto nla_put_failure;
7777
7878 switch (priv->type) {
net/ipv4/udp.c+4−9
@@ -1600,20 +1600,15 @@ static void flush_stack(struct sock **stack, unsigned int count, · 1599 unmodified lines
16001600 }
16011601
16021602 /* For TCP sockets, sk_rx_dst is protected by socket lock
1603− * For UDP, we use sk_dst_lock to guard against concurrent changes.
1603+ * For UDP, we use xchg() to guard against concurrent changes.
16041604 */
16051605 static void udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst)
16061606 {
16071607 struct dst_entry *old;
16081608
1609− spin_lock(&sk->sk_dst_lock);
1610− old = sk->sk_rx_dst;
1611− if (likely(old != dst)) {
1612− dst_hold(dst);
1613− sk->sk_rx_dst = dst;
1614− dst_release(old);
1615− }
1616− spin_unlock(&sk->sk_dst_lock);
1609+ dst_hold(dst);
1610+ old = xchg(&sk->sk_rx_dst, dst);
1611+ dst_release(old);
16171612 }
16181613
16191614 /*
net/ipv6/netfilter/ip6t_SYNPROXY.c+1−0
@@ -446,6 +446,7 @@ static void synproxy_tg6_destroy(const struct xt_tgdtor_param *par) · 445 unmodified lines
446446 static struct xt_target synproxy_tg6_reg __read_mostly = {
447447 .name = "SYNPROXY",
448448 .family = NFPROTO_IPV6,
449+ .hooks = (1 << NF_INET_LOCAL_IN) | (1 << NF_INET_FORWARD),
449450 .target = synproxy_tg6,
450451 .targetsize = sizeof(struct xt_synproxy_info),
451452 .checkentry = synproxy_tg6_check,
net/sctp/probe.c+16−1
@@ -38,6 +38,7 @@ · 37 unmodified lines
3838 #include <net/sctp/sctp.h>
3939 #include <net/sctp/sm.h>
4040
41+MODULE_SOFTDEP("pre: sctp");
4142 MODULE_AUTHOR("Wei Yongjun <yjwei@cn.fujitsu.com>");
4243 MODULE_DESCRIPTION("SCTP snooper");
4344 MODULE_LICENSE("GPL");
@@ -182,6 +183,20 @@ static struct jprobe sctp_recv_probe = { · 138 unmodified lines
182183 .entry = jsctp_sf_eat_sack,
183184 };
184185
186+static __init int sctp_setup_jprobe(void)
187+{
188+ int ret = register_jprobe(&sctp_recv_probe);
189+
190+ if (ret) {
191+ if (request_module("sctp"))
192+ goto out;
193+ ret = register_jprobe(&sctp_recv_probe);
194+ }
195+
196+out:
197+ return ret;
198+}
199+
185200 static __init int sctpprobe_init(void)
186201 {
187202 int ret = -ENOMEM;
@@ -202,7 +217,7 @@ static __init int sctpprobe_init(void) · 14 unmodified lines
202217 &sctpprobe_fops))
203218 goto free_kfifo;
204219
205− ret = register_jprobe(&sctp_recv_probe);
220+ ret = sctp_setup_jprobe();
206221 if (ret)
207222 goto remove_proc;
208223
net/unix/af_unix.c+6−2
@@ -718,7 +718,9 @@ static int unix_autobind(struct socket *sock) · 717 unmodified lines
718718 int err;
719719 unsigned int retries = 0;
720720
721− mutex_lock(&u->readlock);
721+ err = mutex_lock_interruptible(&u->readlock);
722+ if (err)
723+ return err;
722724
723725 err = 0;
724726 if (u->addr)
@@ -877,7 +879,9 @@ static int unix_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) · 152 unmodified lines
877879 goto out;
878880 addr_len = err;
879881
880− mutex_lock(&u->readlock);
882+ err = mutex_lock_interruptible(&u->readlock);
883+ if (err)
884+ goto out;
881885
882886 err = -EINVAL;
883887 if (u->addr)
scripts/link-vmlinux.sh+3−1
@@ -82,7 +82,9 @@ kallsyms() · 81 unmodified lines
8282 kallsymopt="${kallsymopt} --all-symbols"
8383 fi
8484
85− kallsymopt="${kallsymopt} --page-offset=$CONFIG_PAGE_OFFSET"
85+ if [ -n "${CONFIG_ARM}" ] && [ -n "${CONFIG_PAGE_OFFSET}" ]; then
86+ kallsymopt="${kallsymopt} --page-offset=$CONFIG_PAGE_OFFSET"
87+ fi
8688
8789 local aflags="${KBUILD_AFLAGS} ${KBUILD_AFLAGS_KERNEL} \
8890 ${NOSTDINC_FLAGS} ${LINUXINCLUDE} ${KBUILD_CPPFLAGS}"
security/selinux/hooks.c+5−3
@@ -4334,8 +4334,10 @@ static int selinux_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb) · 4333 unmodified lines
43344334 }
43354335 err = avc_has_perm(sk_sid, peer_sid, SECCLASS_PEER,
43364336 PEER__RECV, &ad);
4337− if (err)
4337+ if (err) {
43384338 selinux_netlbl_err(skb, err, 0);
4339+ return err;
4340+ }
43394341 }
43404342
43414343 if (secmark_active) {
@@ -5586,11 +5588,11 @@ static int selinux_setprocattr(struct task_struct *p, · 1244 unmodified lines
55865588 /* Check for ptracing, and update the task SID if ok.
55875589 Otherwise, leave SID unchanged and fail. */
55885590 ptsid = 0;
5589− task_lock(p);
5591+ rcu_read_lock();
55905592 tracer = ptrace_parent(p);
55915593 if (tracer)
55925594 ptsid = task_sid(tracer);
5593− task_unlock(p);
5595+ rcu_read_unlock();
55945596
55955597 if (tracer) {
55965598 error = avc_has_perm(ptsid, sid, SECCLASS_PROCESS,
sound/core/pcm_lib.c+2−0
@@ -1937,6 +1937,8 @@ static int wait_for_avail(struct snd_pcm_substream *substream, · 1936 unmodified lines
19371937 case SNDRV_PCM_STATE_DISCONNECTED:
19381938 err = -EBADFD;
19391939 goto _endloop;
1940+ case SNDRV_PCM_STATE_PAUSED:
1941+ continue;
19401942 }
19411943 if (!tout) {
19421944 snd_printd("%s write error (DMA or IRQ trouble?)\n",
sound/pci/hda/hda_intel.c+4−0
@@ -3433,6 +3433,10 @@ static void check_probe_mask(struct azx *chip, int dev) · 3432 unmodified lines
34333433 * white/black-list for enable_msi
34343434 */
34353435 static struct snd_pci_quirk msi_black_list[] = {
3436+ SND_PCI_QUIRK(0x103c, 0x2191, "HP", 0), /* AMD Hudson */
3437+ SND_PCI_QUIRK(0x103c, 0x2192, "HP", 0), /* AMD Hudson */
3438+ SND_PCI_QUIRK(0x103c, 0x21f7, "HP", 0), /* AMD Hudson */
3439+ SND_PCI_QUIRK(0x103c, 0x21fa, "HP", 0), /* AMD Hudson */
34363440 SND_PCI_QUIRK(0x1043, 0x81f2, "ASUS", 0), /* Athlon64 X2 + nvidia */
34373441 SND_PCI_QUIRK(0x1043, 0x81f6, "ASUS", 0), /* nvidia */
34383442 SND_PCI_QUIRK(0x1043, 0x822d, "ASUS", 0), /* Athlon64 X2 + nvidia MCP55 */
sound/pci/hda/patch_realtek.c+4−0
@@ -4247,12 +4247,16 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { · 4246 unmodified lines
42474247 SND_PCI_QUIRK(0x1028, 0x0606, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
42484248 SND_PCI_QUIRK(0x1028, 0x0608, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
42494249 SND_PCI_QUIRK(0x1028, 0x0609, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
4250+ SND_PCI_QUIRK(0x1028, 0x0610, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
42504251 SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
42514252 SND_PCI_QUIRK(0x1028, 0x0614, "Dell Inspiron 3135", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
42524253 SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS),
42534254 SND_PCI_QUIRK(0x1028, 0x061f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE),
4255+ SND_PCI_QUIRK(0x1028, 0x0629, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
42544256 SND_PCI_QUIRK(0x1028, 0x0638, "Dell Inspiron 5439", ALC290_FIXUP_MONO_SPEAKERS),
4257+ SND_PCI_QUIRK(0x1028, 0x063e, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
42554258 SND_PCI_QUIRK(0x1028, 0x063f, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE),
4259+ SND_PCI_QUIRK(0x1028, 0x0640, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE),
42564260 SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
42574261 SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
42584262 SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),
sound/soc/atmel/atmel_ssc_dai.c+29−1
@@ -648,7 +648,7 @@ static int atmel_ssc_prepare(struct snd_pcm_substream *substream, · 647 unmodified lines
648648
649649 dma_params = ssc_p->dma_params[dir];
650650
651− ssc_writel(ssc_p->ssc->regs, CR, dma_params->mask->ssc_enable);
651+ ssc_writel(ssc_p->ssc->regs, CR, dma_params->mask->ssc_disable);
652652 ssc_writel(ssc_p->ssc->regs, IDR, dma_params->mask->ssc_error);
653653
654654 pr_debug("%s enabled SSC_SR=0x%08x\n",
@@ -657,6 +657,33 @@ static int atmel_ssc_prepare(struct snd_pcm_substream *substream, · 2 unmodified lines
657657 return 0;
658658 }
659659
660+static int atmel_ssc_trigger(struct snd_pcm_substream *substream,
661+ int cmd, struct snd_soc_dai *dai)
662+{
663+ struct atmel_ssc_info *ssc_p = &ssc_info[dai->id];
664+ struct atmel_pcm_dma_params *dma_params;
665+ int dir;
666+
667+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
668+ dir = 0;
669+ else
670+ dir = 1;
671+
672+ dma_params = ssc_p->dma_params[dir];
673+
674+ switch (cmd) {
675+ case SNDRV_PCM_TRIGGER_START:
676+ case SNDRV_PCM_TRIGGER_RESUME:
677+ case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
678+ ssc_writel(ssc_p->ssc->regs, CR, dma_params->mask->ssc_enable);
679+ break;
680+ default:
681+ ssc_writel(ssc_p->ssc->regs, CR, dma_params->mask->ssc_disable);
682+ break;
683+ }
684+
685+ return 0;
686+}
660687
661688 #ifdef CONFIG_PM
662689 static int atmel_ssc_suspend(struct snd_soc_dai *cpu_dai)
@@ -731,6 +758,7 @@ static const struct snd_soc_dai_ops atmel_ssc_dai_ops = { · 68 unmodified lines
731758 .startup = atmel_ssc_startup,
732759 .shutdown = atmel_ssc_shutdown,
733760 .prepare = atmel_ssc_prepare,
761+ .trigger = atmel_ssc_trigger,
734762 .hw_params = atmel_ssc_hw_params,
735763 .set_fmt = atmel_ssc_set_dai_fmt,
736764 .set_clkdiv = atmel_ssc_set_dai_clkdiv,
sound/soc/atmel/sam9x5_wm8731.c+1−1
@@ -109,7 +109,7 @@ static int sam9x5_wm8731_driver_probe(struct platform_device *pdev) · 108 unmodified lines
109109 dai->stream_name = "WM8731 PCM";
110110 dai->codec_dai_name = "wm8731-hifi";
111111 dai->init = sam9x5_wm8731_init;
112− dai->dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
112+ dai->dai_fmt = SND_SOC_DAIFMT_DSP_A | SND_SOC_DAIFMT_NB_NF
113113 | SND_SOC_DAIFMT_CBM_CFM;
114114
115115 ret = snd_soc_of_parse_card_name(card, "atmel,model");
sound/soc/codecs/wm5110.c+1−1
@@ -1012,7 +1012,7 @@ static const struct snd_soc_dapm_route wm5110_dapm_routes[] = { · 1011 unmodified lines
10121012 { "AEC Loopback", "HPOUT3L", "OUT3L" },
10131013 { "AEC Loopback", "HPOUT3R", "OUT3R" },
10141014 { "HPOUT3L", NULL, "OUT3L" },
1015− { "HPOUT3R", NULL, "OUT3L" },
1015+ { "HPOUT3R", NULL, "OUT3R" },
10161016
10171017 { "AEC Loopback", "SPKOUTL", "OUT4L" },
10181018 { "SPKOUTLN", NULL, "OUT4L" },
sound/soc/codecs/wm8904.c+1−1
@@ -1444,7 +1444,7 @@ static int wm8904_set_fmt(struct snd_soc_dai *dai, unsigned int fmt) · 1443 unmodified lines
14441444
14451445 switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
14461446 case SND_SOC_DAIFMT_DSP_B:
1447− aif1 |= WM8904_AIF_LRCLK_INV;
1447+ aif1 |= 0x3 | WM8904_AIF_LRCLK_INV;
14481448 case SND_SOC_DAIFMT_DSP_A:
14491449 aif1 |= 0x3;
14501450 break;
sound/soc/codecs/wm8962.c+13−0
@@ -2439,7 +2439,20 @@ static void wm8962_configure_bclk(struct snd_soc_codec *codec) · 2438 unmodified lines
24392439 snd_soc_update_bits(codec, WM8962_CLOCKING_4,
24402440 WM8962_SYSCLK_RATE_MASK, clocking4);
24412441
2442+ /* DSPCLK_DIV can be only generated correctly after enabling SYSCLK.
2443+ * So we here provisionally enable it and then disable it afterward
2444+ * if current bias_level hasn't reached SND_SOC_BIAS_ON.
2445+ */
2446+ if (codec->dapm.bias_level != SND_SOC_BIAS_ON)
2447+ snd_soc_update_bits(codec, WM8962_CLOCKING2,
2448+ WM8962_SYSCLK_ENA_MASK, WM8962_SYSCLK_ENA);
2449+
24422450 dspclk = snd_soc_read(codec, WM8962_CLOCKING1);
2451+
2452+ if (codec->dapm.bias_level != SND_SOC_BIAS_ON)
2453+ snd_soc_update_bits(codec, WM8962_CLOCKING2,
2454+ WM8962_SYSCLK_ENA_MASK, 0);
2455+
24432456 if (dspclk < 0) {
24442457 dev_err(codec->dev, "Failed to read DSPCLK: %d\n", dspclk);
24452458 return;
sound/soc/codecs/wm_adsp.c+7−3
@@ -1474,13 +1474,17 @@ static int wm_adsp2_ena(struct wm_adsp *dsp) · 1473 unmodified lines
14741474 return ret;
14751475
14761476 /* Wait for the RAM to start, should be near instantaneous */
1477− count = 0;
1478− do {
1477+ for (count = 0; count < 10; ++count) {
14791478 ret = regmap_read(dsp->regmap, dsp->base + ADSP2_STATUS1,
14801479 &val);
14811480 if (ret != 0)
14821481 return ret;
1483− } while (!(val & ADSP2_RAM_RDY) && ++count < 10);
1482+
1483+ if (val & ADSP2_RAM_RDY)
1484+ break;
1485+
1486+ msleep(1);
1487+ }
14841488
14851489 if (!(val & ADSP2_RAM_RDY)) {
14861490 adsp_err(dsp, "Failed to start DSP RAM\n");
sound/soc/fsl/imx-wm8962.c+0−2
@@ -130,8 +130,6 @@ static int imx_wm8962_set_bias_level(struct snd_soc_card *card, · 129 unmodified lines
130130 break;
131131 }
132132
133− dapm->bias_level = level;
134−
135133 return 0;
136134 }
137135
sound/soc/kirkwood/kirkwood-i2s.c+12−12
@@ -473,17 +473,17 @@ static struct snd_soc_dai_driver kirkwood_i2s_dai_extclk[2] = { · 472 unmodified lines
473473 .playback = {
474474 .channels_min = 1,
475475 .channels_max = 2,
476− .rates = SNDRV_PCM_RATE_8000_192000 |
477− SNDRV_PCM_RATE_CONTINUOUS |
478− SNDRV_PCM_RATE_KNOT,
476+ .rates = SNDRV_PCM_RATE_CONTINUOUS,
477+ .rate_min = 5512,
478+ .rate_max = 192000,
479479 .formats = KIRKWOOD_I2S_FORMATS,
480480 },
481481 .capture = {
482482 .channels_min = 1,
483483 .channels_max = 2,
484− .rates = SNDRV_PCM_RATE_8000_192000 |
485− SNDRV_PCM_RATE_CONTINUOUS |
486− SNDRV_PCM_RATE_KNOT,
484+ .rates = SNDRV_PCM_RATE_CONTINUOUS,
485+ .rate_min = 5512,
486+ .rate_max = 192000,
487487 .formats = KIRKWOOD_I2S_FORMATS,
488488 },
489489 .ops = &kirkwood_i2s_dai_ops,
@@ -494,17 +494,17 @@ static struct snd_soc_dai_driver kirkwood_i2s_dai_extclk[2] = { · 4 unmodified lines
494494 .playback = {
495495 .channels_min = 1,
496496 .channels_max = 2,
497− .rates = SNDRV_PCM_RATE_8000_192000 |
498− SNDRV_PCM_RATE_CONTINUOUS |
499− SNDRV_PCM_RATE_KNOT,
497+ .rates = SNDRV_PCM_RATE_CONTINUOUS,
498+ .rate_min = 5512,
499+ .rate_max = 192000,
500500 .formats = KIRKWOOD_SPDIF_FORMATS,
501501 },
502502 .capture = {
503503 .channels_min = 1,
504504 .channels_max = 2,
505− .rates = SNDRV_PCM_RATE_8000_192000 |
506− SNDRV_PCM_RATE_CONTINUOUS |
507− SNDRV_PCM_RATE_KNOT,
505+ .rates = SNDRV_PCM_RATE_CONTINUOUS,
506+ .rate_min = 5512,
507+ .rate_max = 192000,
508508 .formats = KIRKWOOD_SPDIF_FORMATS,
509509 },
510510 .ops = &kirkwood_i2s_dai_ops,
sound/soc/soc-generic-dmaengine-pcm.c+27−11
@@ -305,6 +305,20 @@ static void dmaengine_pcm_request_chan_of(struct dmaengine_pcm *pcm, · 304 unmodified lines
305305 }
306306 }
307307
308+static void dmaengine_pcm_release_chan(struct dmaengine_pcm *pcm)
309+{
310+ unsigned int i;
311+
312+ for (i = SNDRV_PCM_STREAM_PLAYBACK; i <= SNDRV_PCM_STREAM_CAPTURE;
313+ i++) {
314+ if (!pcm->chan[i])
315+ continue;
316+ dma_release_channel(pcm->chan[i]);
317+ if (pcm->flags & SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX)
318+ break;
319+ }
320+}
321+
308322 /**
309323 * snd_dmaengine_pcm_register - Register a dmaengine based PCM device
310324 * @dev: The parent device for the PCM device
@@ -315,6 +329,7 @@ int snd_dmaengine_pcm_register(struct device *dev, · 4 unmodified lines
315329 const struct snd_dmaengine_pcm_config *config, unsigned int flags)
316330 {
317331 struct dmaengine_pcm *pcm;
332+ int ret;
318333
319334 pcm = kzalloc(sizeof(*pcm), GFP_KERNEL);
320335 if (!pcm)
@@ -326,11 +341,20 @@ int snd_dmaengine_pcm_register(struct device *dev, · 5 unmodified lines
326341 dmaengine_pcm_request_chan_of(pcm, dev);
327342
328343 if (flags & SND_DMAENGINE_PCM_FLAG_NO_RESIDUE)
329− return snd_soc_add_platform(dev, &pcm->platform,
344+ ret = snd_soc_add_platform(dev, &pcm->platform,
330345 &dmaengine_no_residue_pcm_platform);
331346 else
332− return snd_soc_add_platform(dev, &pcm->platform,
347+ ret = snd_soc_add_platform(dev, &pcm->platform,
333348 &dmaengine_pcm_platform);
349+ if (ret)
350+ goto err_free_dma;
351+
352+ return 0;
353+
354+err_free_dma:
355+ dmaengine_pcm_release_chan(pcm);
356+ kfree(pcm);
357+ return ret;
334358 }
335359 EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_register);
336360
@@ -345,7 +369,6 @@ void snd_dmaengine_pcm_unregister(struct device *dev) · 8 unmodified lines
345369 {
346370 struct snd_soc_platform *platform;
347371 struct dmaengine_pcm *pcm;
348− unsigned int i;
349372
350373 platform = snd_soc_lookup_platform(dev);
351374 if (!platform)
@@ -353,15 +376,8 @@ void snd_dmaengine_pcm_unregister(struct device *dev) · 1 unmodified line
353376
354377 pcm = soc_platform_to_pcm(platform);
355378
356− for (i = SNDRV_PCM_STREAM_PLAYBACK; i <= SNDRV_PCM_STREAM_CAPTURE; i++) {
357− if (pcm->chan[i]) {
358− dma_release_channel(pcm->chan[i]);
359− if (pcm->flags & SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX)
360− break;
361− }
362− }
363−
364379 snd_soc_remove_platform(platform);
380+ dmaengine_pcm_release_chan(pcm);
365381 kfree(pcm);
366382 }
367383 EXPORT_SYMBOL_GPL(snd_dmaengine_pcm_unregister);
sound/soc/soc-pcm.c+3−2
@@ -600,12 +600,13 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream) · 599 unmodified lines
600600 struct snd_soc_platform *platform = rtd->platform;
601601 struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
602602 struct snd_soc_dai *codec_dai = rtd->codec_dai;
603− struct snd_soc_codec *codec = rtd->codec;
603+ bool playback = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
604604
605605 mutex_lock_nested(&rtd->pcm_mutex, rtd->pcm_subclass);
606606
607607 /* apply codec digital mute */
608− if (!codec->active)
608+ if ((playback && codec_dai->playback_active == 1) ||
609+ (!playback && codec_dai->capture_active == 1))
609610 snd_soc_dai_digital_mute(codec_dai, 1, substream->stream);
610611
611612 /* free any machine hw params */
sound/soc/tegra/tegra20_i2s.c+3−3
@@ -74,7 +74,7 @@ static int tegra20_i2s_set_fmt(struct snd_soc_dai *dai, · 73 unmodified lines
7474 unsigned int fmt)
7575 {
7676 struct tegra20_i2s *i2s = snd_soc_dai_get_drvdata(dai);
77− unsigned int mask, val;
77+ unsigned int mask = 0, val = 0;
7878
7979 switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
8080 case SND_SOC_DAIFMT_NB_NF:
@@ -83,10 +83,10 @@ static int tegra20_i2s_set_fmt(struct snd_soc_dai *dai, · 2 unmodified lines
8383 return -EINVAL;
8484 }
8585
86− mask = TEGRA20_I2S_CTRL_MASTER_ENABLE;
86+ mask |= TEGRA20_I2S_CTRL_MASTER_ENABLE;
8787 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
8888 case SND_SOC_DAIFMT_CBS_CFS:
89− val = TEGRA20_I2S_CTRL_MASTER_ENABLE;
89+ val |= TEGRA20_I2S_CTRL_MASTER_ENABLE;
9090 break;
9191 case SND_SOC_DAIFMT_CBM_CFM:
9292 break;
sound/soc/tegra/tegra20_spdif.c+5−5
@@ -67,15 +67,15 @@ static int tegra20_spdif_hw_params(struct snd_pcm_substream *substream, · 66 unmodified lines
6767 {
6868 struct device *dev = dai->dev;
6969 struct tegra20_spdif *spdif = snd_soc_dai_get_drvdata(dai);
70− unsigned int mask, val;
70+ unsigned int mask = 0, val = 0;
7171 int ret, spdifclock;
7272
73− mask = TEGRA20_SPDIF_CTRL_PACK |
74− TEGRA20_SPDIF_CTRL_BIT_MODE_MASK;
73+ mask |= TEGRA20_SPDIF_CTRL_PACK |
74+ TEGRA20_SPDIF_CTRL_BIT_MODE_MASK;
7575 switch (params_format(params)) {
7676 case SNDRV_PCM_FORMAT_S16_LE:
77− val = TEGRA20_SPDIF_CTRL_PACK |
78− TEGRA20_SPDIF_CTRL_BIT_MODE_16BIT;
77+ val |= TEGRA20_SPDIF_CTRL_PACK |
78+ TEGRA20_SPDIF_CTRL_BIT_MODE_16BIT;
7979 break;
8080 default:
8181 return -EINVAL;
sound/soc/tegra/tegra30_i2s.c+3−3
@@ -118,7 +118,7 @@ static int tegra30_i2s_set_fmt(struct snd_soc_dai *dai, · 117 unmodified lines
118118 unsigned int fmt)
119119 {
120120 struct tegra30_i2s *i2s = snd_soc_dai_get_drvdata(dai);
121− unsigned int mask, val;
121+ unsigned int mask = 0, val = 0;
122122
123123 switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
124124 case SND_SOC_DAIFMT_NB_NF:
@@ -127,10 +127,10 @@ static int tegra30_i2s_set_fmt(struct snd_soc_dai *dai, · 2 unmodified lines
127127 return -EINVAL;
128128 }
129129
130− mask = TEGRA30_I2S_CTRL_MASTER_ENABLE;
130+ mask |= TEGRA30_I2S_CTRL_MASTER_ENABLE;
131131 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
132132 case SND_SOC_DAIFMT_CBS_CFS:
133− val = TEGRA30_I2S_CTRL_MASTER_ENABLE;
133+ val |= TEGRA30_I2S_CTRL_MASTER_ENABLE;
134134 break;
135135 case SND_SOC_DAIFMT_CBM_CFM:
136136 break;
tools/power/cpupower/utils/cpupower-set.c+3−3
@@ -18,9 +18,9 @@ · 17 unmodified lines
1818 #include "helpers/bitmask.h"
1919
2020 static struct option set_opts[] = {
21− { .name = "perf-bias", .has_arg = optional_argument, .flag = NULL, .val = 'b'},
22− { .name = "sched-mc", .has_arg = optional_argument, .flag = NULL, .val = 'm'},
23− { .name = "sched-smt", .has_arg = optional_argument, .flag = NULL, .val = 's'},
21+ { .name = "perf-bias", .has_arg = required_argument, .flag = NULL, .val = 'b'},
22+ { .name = "sched-mc", .has_arg = required_argument, .flag = NULL, .val = 'm'},
23+ { .name = "sched-smt", .has_arg = required_argument, .flag = NULL, .val = 's'},
2424 { },
2525 };
2626