History

ASoC: adau1372: fixes after debugging custom board

Merge series from Maarten Zanders <maarten.zanders@mind.be>: A collection of fixes and improvements for the adau1372 driver.

Mark Brown committed 3 years ago

Commit 79dfd9d2 parents d067b33 cd887a7378 files · +39940 −38203Browse files

Unified · Split

378 files
  1. CREDITS +5 −0
  2. Documentation/dev-tools/kmsan.rst +1 −0
  3. Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml +21 −8
  4. Documentation/devicetree/bindings/net/engleder,tsnep.yaml +1 −1
  5. Documentation/virt/kvm/devices/vm.rst +3 −0
  6. MAINTAINERS +2 −5
  7. Makefile +1 −1
  8. arch/arm64/include/asm/cputype.h +1 −1
  9. arch/arm64/include/asm/syscall_wrapper.h +1 −1
  10. arch/arm64/kernel/efi.c +34 −18
  11. arch/arm64/mm/pageattr.c +3 −2
  12. arch/mips/alchemy/common/gpiolib.c +1 −1
  13. arch/mips/boot/compressed/decompress.c +1 −0
  14. arch/mips/include/asm/fw/fw.h +1 −1
  15. arch/mips/kernel/jump_label.c +1 −1
  16. arch/mips/kernel/relocate_kernel.S +5 −10
  17. arch/mips/loongson64/reset.c +10 −0
  18. arch/mips/pic32/pic32mzda/early_console.c +6 −7
  19. arch/mips/pic32/pic32mzda/init.c +1 −1
  20. arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts +38 −0
  21. arch/riscv/kernel/process.c +2 −0
  22. arch/riscv/kernel/setup.c +1 −0
  23. arch/riscv/kernel/vdso/Makefile +4 −1
  24. arch/riscv/kernel/vdso/vdso.lds.S +2 −0
  25. arch/riscv/mm/init.c +0 −1
  26. arch/s390/Kconfig +3 −3
  27. arch/s390/Makefile +0 −2
  28. arch/s390/boot/Makefile +1 −2
  29. arch/s390/boot/startup.c +1 −2
  30. arch/s390/configs/btf.config +1 −0
  31. arch/s390/configs/debug_defconfig +32 −33
  32. arch/s390/configs/defconfig +33 −34
  33. arch/s390/configs/kasan.config +3 −0
  34. arch/s390/configs/zfcpdump_defconfig +0 −1
  35. arch/s390/kvm/kvm-s390.c +17 −9
  36. arch/s390/kvm/kvm-s390.h +0 −1
  37. arch/s390/kvm/pci.c +1 −1
  38. arch/x86/hyperv/hv_init.c +10 −9
  39. arch/x86/include/asm/kvm_host.h +6 −1
  40. arch/x86/include/asm/spec-ctrl.h +5 −5
  41. arch/x86/kernel/asm-offsets.c +0 −6
  42. arch/x86/kernel/cpu/bugs.c +4 −11
  43. arch/x86/kernel/traps.c +7 −0
  44. arch/x86/kvm/.gitignore +2 −0
  45. arch/x86/kvm/Makefile +12 −0
  46. arch/x86/kvm/kvm-asm-offsets.c +29 −0
  47. arch/x86/kvm/mmu/mmu.c +2 −2
  48. arch/x86/kvm/pmu.c +1 −1
  49. arch/x86/kvm/svm/pmu.c +4 −3
  50. arch/x86/kvm/svm/sev.c +3 −3
  51. arch/x86/kvm/svm/svm.c +36 −69
  52. arch/x86/kvm/svm/svm.h +5 −6
  53. arch/x86/kvm/svm/svm_ops.h +0 −5
  54. arch/x86/kvm/svm/vmenter.S +209 −51
  55. arch/x86/kvm/vmx/pmu_intel.c +2 −2
  56. arch/x86/kvm/vmx/vmenter.S +1 −1
  57. arch/x86/kvm/x86.c +10 −15
  58. arch/x86/lib/usercopy.c +3 −0
  59. arch/x86/mm/hugetlbpage.c +4 −0
  60. block/bfq-cgroup.c +4 −0
  61. block/sed-opal.c +28 −4
  62. drivers/acpi/video_detect.c +32 −9
  63. drivers/ata/libata-scsi.c +13 −0
  64. drivers/ata/libata-transport.c +15 −4
  65. drivers/clocksource/hyperv_timer.c +15 −14
  66. drivers/dma/apple-admac.c +1 −1
  67. drivers/dma/at_hdmac.c +60 −93
  68. drivers/dma/at_hdmac_regs.h +5 −5
  69. drivers/dma/idxd/cdev.c +18 −0
  70. drivers/dma/idxd/device.c +17 −9
  71. drivers/dma/idxd/idxd.h +32 −0
  72. drivers/dma/idxd/init.c +2 −2
  73. drivers/dma/idxd/sysfs.c +1 −1
  74. drivers/dma/mv_xor_v2.c +1 −0
  75. drivers/dma/pxa_dma.c +2 −2
  76. drivers/dma/stm32-dma.c +6 −8
  77. drivers/dma/stm32-mdma.c +1 −0
  78. drivers/dma/ti/k3-udma-glue.c +3 −0
  79. drivers/firmware/efi/libstub/Makefile +1 −1
  80. drivers/firmware/efi/libstub/arm64-stub.c +16 −1
  81. drivers/firmware/efi/libstub/efistub.h +28 −0
  82. drivers/firmware/efi/libstub/smbios.c +48 −0
  83. drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c +1 −0
  84. drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +0 −26
  85. drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +41 −0
  86. drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c +2 −0
  87. drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c +1 −1
  88. drivers/gpu/drm/amd/amdkfd/kfd_chardev.c +15 −19
  89. drivers/gpu/drm/amd/amdkfd/kfd_events.c +1 −2
  90. drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +4 −3
  91. drivers/gpu/drm/amd/display/dc/clk_mgr/dcn314/dcn314_clk_mgr.c +16 −16
  92. drivers/gpu/drm/amd/display/dc/dc.h +1 −0
  93. drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dio_stream_encoder.c +18 −6
  94. drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c +1 −0
  95. drivers/gpu/drm/amd/display/dc/dcn321/dcn321_resource.c +1 −0
  96. drivers/gpu/drm/amd/display/dc/dml/dcn314/dcn314_fpu.c +2 −2
  97. drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c +2 −0
  98. drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c +5 −0
  99. drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.h +3 −0
  100. drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c +11 −3
  101. drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h +2 −1
  102. drivers/gpu/drm/amd/display/dc/dml/dcn321/dcn321_fpu.c +2 −0
  103. drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h +1 −0
  104. drivers/gpu/drm/amd/display/dc/gpio/dcn32/hw_factory_dcn32.c +14 −0
  105. drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c +6 −3
  106. drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c +12 −13
  107. drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu_v13_0_4_ppsmc.h +7 −8
  108. drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c +3 −1
  109. drivers/gpu/drm/drm_panel_orientation_quirks.c +12 −0
  110. drivers/gpu/drm/i915/display/intel_psr.c +4 −1
  111. drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c +2 −2
  112. drivers/gpu/drm/i915/gem/i915_gem_shmem.c +2 −2
  113. drivers/gpu/drm/i915/gem/i915_gem_userptr.c +3 −2
  114. drivers/gpu/drm/panfrost/panfrost_mmu.c +10 −1
  115. drivers/gpu/drm/rcar-du/Kconfig +9 −4
  116. drivers/gpu/drm/vc4/vc4_drv.c +6 −1
  117. drivers/gpu/drm/vc4/vc4_hdmi.c +36 −11
  118. drivers/gpu/drm/vc4/vc4_hdmi.h +1 −0
  119. drivers/hid/hid-asus.c +1 −3
  120. drivers/hid/hid-hyperv.c +1 −1
  121. drivers/hid/wacom_wac.c +6 −5
  122. drivers/hv/hv_balloon.c +1 −1
  123. drivers/hwspinlock/qcom_hwspinlock.c +32 −10
  124. drivers/mmc/host/sdhci-brcmstb.c +2 −1
  125. drivers/mmc/host/sdhci-cqhci.h +24 −0
  126. drivers/mmc/host/sdhci-esdhc-imx.c +4 −3
  127. drivers/mmc/host/sdhci-of-arasan.c +2 −1
  128. drivers/mmc/host/sdhci-tegra.c +2 −1
  129. drivers/mmc/host/sdhci_am654.c +4 −3
  130. drivers/net/can/at91_can.c +1 −1
  131. drivers/net/can/c_can/c_can_main.c +1 −1
  132. drivers/net/can/can327.c +1 −1
  133. drivers/net/can/cc770/cc770.c +1 −1
  134. drivers/net/can/ctucanfd/ctucanfd_base.c +1 −1
  135. drivers/net/can/dev/skb.c +1 −9
  136. drivers/net/can/flexcan/flexcan-core.c +1 −1
  137. drivers/net/can/grcan.c +1 −1
  138. drivers/net/can/ifi_canfd/ifi_canfd.c +1 −1
  139. drivers/net/can/janz-ican3.c +1 −1
  140. drivers/net/can/kvaser_pciefd.c +1 −1
  141. drivers/net/can/m_can/m_can.c +1 −1
  142. drivers/net/can/mscan/mscan.c +1 −1
  143. drivers/net/can/pch_can.c +1 −1
  144. drivers/net/can/peak_canfd/peak_canfd.c +1 −1
  145. drivers/net/can/rcar/rcar_can.c +1 −1
  146. drivers/net/can/rcar/rcar_canfd.c +5 −10
  147. drivers/net/can/sja1000/sja1000.c +1 −1
  148. drivers/net/can/slcan/slcan-core.c +1 −1
  149. drivers/net/can/softing/softing_main.c +1 −1
  150. drivers/net/can/spi/hi311x.c +1 −1
  151. drivers/net/can/spi/mcp251x.c +1 −1
  152. drivers/net/can/spi/mcp251xfd/mcp251xfd-tx.c +1 −1
  153. drivers/net/can/sun4i_can.c +1 −1
  154. drivers/net/can/ti_hecc.c +1 −1
  155. drivers/net/can/usb/ems_usb.c +1 −1
  156. drivers/net/can/usb/esd_usb.c +1 −1
  157. drivers/net/can/usb/etas_es58x/es58x_core.c +1 −1
  158. drivers/net/can/usb/gs_usb.c +1 −1
  159. drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c +1 −1
  160. drivers/net/can/usb/mcba_usb.c +1 −1
  161. drivers/net/can/usb/peak_usb/pcan_usb_core.c +1 −1
  162. drivers/net/can/usb/ucan.c +1 −1
  163. drivers/net/can/usb/usb_8dev.c +1 −1
  164. drivers/net/can/xilinx_can.c +1 −1
  165. drivers/net/ethernet/apm/xgene/xgene_enet_main.c +3 −1
  166. drivers/net/ethernet/aquantia/atlantic/aq_macsec.c +2 −0
  167. drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c +11 −7
  168. drivers/net/ethernet/broadcom/Kconfig +1 −1
  169. drivers/net/ethernet/broadcom/bnxt/bnxt.c +45 −9
  170. drivers/net/ethernet/broadcom/bnxt/bnxt.h +1 −0
  171. drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +1 −1
  172. drivers/net/ethernet/broadcom/bnxt/bnxt_hwrm.c +2 −1
  173. drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c +1 −0
  174. drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c +1 −1
  175. drivers/net/ethernet/freescale/fman/mac.c +9 −0
  176. drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c +5 −3
  177. drivers/net/ethernet/ibm/ibmveth.c +2 −1
  178. drivers/net/ethernet/ibm/ibmveth.h +1 −0
  179. drivers/net/ethernet/intel/iavf/iavf_virtchnl.c +2 −0
  180. drivers/net/ethernet/intel/ice/ice_base.c +1 −1
  181. drivers/net/ethernet/intel/ice/ice_lib.c +25 −0
  182. drivers/net/ethernet/intel/ice/ice_lib.h +1 −0
  183. drivers/net/ethernet/intel/ice/ice_vf_lib.c +4 −1
  184. drivers/net/ethernet/marvell/mv643xx_eth.c +1 −0
  185. drivers/net/ethernet/marvell/octeontx2/Kconfig +2 −0
  186. drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c +1 −0
  187. drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c +105 −30
  188. drivers/net/ethernet/marvell/octeontx2/nic/otx2_struct.h +57 −0
  189. drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c +19 −13
  190. drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.h +1 −0
  191. drivers/net/ethernet/marvell/prestera/prestera_rxtx.c +6 −1
  192. drivers/net/ethernet/mediatek/mtk_star_emac.c +2 −0
  193. drivers/net/ethernet/mellanox/mlx5/core/cmd.c +8 −3
  194. drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c +31 −0
  195. drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.c +32 −60
  196. drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h +23 −1
  197. drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c +2 −2
  198. drivers/net/ethernet/mellanox/mlx5/core/en_main.c +7 −0
  199. drivers/net/ethernet/mellanox/mlx5/core/en_rx.c +14 −13
  200. drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +6 −8
  201. drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +5 −0
  202. drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +8 −6
  203. drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +3 −15
  204. drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c +8 −6
  205. drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c +2 −1
  206. drivers/net/ethernet/neterion/s2io.c +20 −9
  207. drivers/net/ethernet/ni/nixge.c +1 −0
  208. drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c +9 −2
  209. drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c +31 −8
  210. drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c +3 −5
  211. drivers/net/ethernet/sunplus/spl2sw_driver.c +0 −1
  212. drivers/net/ethernet/ti/am65-cpsw-nuss.c +1 −1
  213. drivers/net/ethernet/ti/cpsw.c +2 −0
  214. drivers/net/ethernet/tundra/tsi108_eth.c +4 −1
  215. drivers/net/hamradio/bpqether.c +1 −1
  216. drivers/net/macsec.c +17 −33
  217. drivers/net/macvlan.c +3 −1
  218. drivers/net/phy/mscc/mscc_macsec.c +1 −0
  219. drivers/net/tun.c +13 −5
  220. drivers/net/wan/lapbether.c +2 −1
  221. drivers/net/wireless/ath/ath11k/qmi.h +1 −1
  222. drivers/net/wireless/ath/ath11k/reg.c +1 −5
  223. drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c +4 −0
  224. drivers/net/wireless/cisco/airo.c +14 −4
  225. drivers/net/wireless/mac80211_hwsim.c +5 −0
  226. drivers/net/wireless/ralink/rt2x00/rt2400pci.c +4 −4
  227. drivers/net/wireless/ralink/rt2x00/rt2400pci.h +1 −1
  228. drivers/net/wireless/ralink/rt2x00/rt2500pci.c +4 −4
  229. drivers/net/wireless/ralink/rt2x00/rt2500pci.h +1 −1
  230. drivers/net/wireless/ralink/rt2x00/rt2500usb.c +4 −4
  231. drivers/net/wireless/ralink/rt2x00/rt2500usb.h +1 −1
  232. drivers/net/wireless/ralink/rt2x00/rt2800lib.c +30 −30
  233. drivers/net/wireless/ralink/rt2x00/rt2800lib.h +4 −4
  234. drivers/net/wireless/ralink/rt2x00/rt2x00usb.c +3 −3
  235. drivers/net/wireless/ralink/rt2x00/rt61pci.c +2 −2
  236. drivers/net/wireless/ralink/rt2x00/rt61pci.h +1 −1
  237. drivers/net/wireless/ralink/rt2x00/rt73usb.c +2 −2
  238. drivers/net/wireless/ralink/rt2x00/rt73usb.h +1 −1
  239. drivers/net/wwan/Kconfig +1 −1
  240. drivers/net/wwan/iosm/iosm_ipc_coredump.c +1 −0
  241. drivers/net/wwan/iosm/iosm_ipc_devlink.c +1 −0
  242. drivers/net/wwan/iosm/iosm_ipc_imem_ops.c +8 −0
  243. drivers/net/wwan/iosm/iosm_ipc_mux.h +1 −0
  244. drivers/net/wwan/iosm/iosm_ipc_pcie.c +15 −3
  245. drivers/net/wwan/iosm/iosm_ipc_wwan.c +7 −36
  246. drivers/net/wwan/mhi_wwan_mbim.c +1 −0
  247. drivers/nvme/host/core.c +1 −2
  248. drivers/nvme/host/pci.c +0 −2
  249. drivers/nvme/target/configfs.c +6 −2
  250. drivers/pci/controller/pci-hyperv.c +16 −6
  251. drivers/phy/qualcomm/phy-qcom-qmp-combo.c +1 −1
  252. drivers/phy/ralink/phy-mt7621-pci.c +2 −1
  253. drivers/phy/st/phy-stm32-usbphyc.c +2 −0
  254. drivers/phy/sunplus/phy-sunplus-usb2.c +2 −2
  255. drivers/phy/tegra/xusb.c +16 −4
  256. drivers/platform/x86/hp-wmi.c +10 −2
  257. drivers/platform/x86/ideapad-laptop.c +24 −1
  258. drivers/platform/x86/intel/hid.c +3 −0
  259. drivers/platform/x86/intel/pmt/class.c +30 −1
  260. drivers/platform/x86/p2sb.c +6 −9
  261. drivers/platform/x86/touchscreen_dmi.c +25 −0
  262. drivers/s390/crypto/zcrypt_msgtype6.c +15 −6
  263. drivers/scsi/ibmvscsi/ibmvfc.c +11 −3
  264. drivers/scsi/scsi_debug.c +7 −0
  265. drivers/scsi/scsi_transport_sas.c +9 −4
  266. drivers/soundwire/intel.c +1 −0
  267. drivers/soundwire/qcom.c +9 −0
  268. drivers/spi/spi-amd.c +1 −1
  269. drivers/spi/spi-intel.c +4 −4
  270. drivers/spi/spi-meson-spicc.c +22 −2
  271. drivers/spi/spi-mt65xx.c +13 −10
  272. drivers/spi/spi-stm32.c +2 −1
  273. drivers/spi/spi-tegra210-quad.c +6 −0
  274. fs/btrfs/compression.c +8 −6
  275. fs/btrfs/ctree.c +16 −0
  276. fs/btrfs/ctree.h +7 −4
  277. fs/btrfs/disk-io.c +3 −1
  278. fs/btrfs/scrub.c +1 −8
  279. fs/btrfs/tests/btrfs-tests.c +1 −1
  280. fs/btrfs/volumes.c +29 −10
  281. fs/btrfs/volumes.h +1 −1
  282. fs/btrfs/zoned.c +40 −0
  283. fs/btrfs/zoned.h +11 −0
  284. fs/erofs/zdata.c +11 −7
  285. fs/hugetlbfs/inode.c +6 −7
  286. fs/nfsd/filecache.c +1 −0
  287. fs/nfsd/nfs4state.c +1 −0
  288. fs/nilfs2/segment.c +8 −7
  289. fs/nilfs2/super.c +0 −2
  290. fs/nilfs2/the_nilfs.c +0 −2
  291. fs/udf/namei.c +1 −1
  292. fs/userfaultfd.c +3 −0
  293. include/asm-generic/hyperv-tlfs.h +9 −0
  294. include/asm-generic/vmlinux.lds.h +1 −1
  295. include/linux/can/dev.h +16 −0
  296. include/linux/efi.h +1 −0
  297. include/linux/maple_tree.h +7 −0
  298. include/linux/skmsg.h +1 −1
  299. include/linux/slab.h +0 −23
  300. include/uapi/drm/panfrost_drm.h +1 −1
  301. include/uapi/linux/audit.h +1 −1
  302. include/uapi/linux/capability.h +1 −1
  303. include/uapi/linux/idxd.h +1 −0
  304. include/uapi/linux/in.h +1 −0
  305. include/uapi/linux/io_uring.h +1 −1
  306. io_uring/io_uring.c +8 −2
  307. io_uring/kbuf.c +2 −0
  308. io_uring/poll.c +19 −12
  309. kernel/bpf/verifier.c +13 −4
  310. lib/Kconfig.debug +5 −1
  311. lib/Kconfig.kmsan +1 −0
  312. lib/Makefile +1 −0
  313. lib/maple_tree.c +40 −18
  314. lib/test_maple_tree.c +1193 −36733
  315. mm/damon/dbgfs.c +7 −0
  316. mm/huge_memory.c +6 −3
  317. mm/hugetlb.c +4 −0
  318. mm/hugetlb_vmemmap.c +1 −0
  319. mm/kmsan/kmsan.h +2 −0
  320. mm/memory-failure.c +4 −1
  321. mm/memremap.c +1 −0
  322. mm/mmap.c +5 −1
  323. mm/slab_common.c +4 −20
  324. mm/userfaultfd.c +1 −1
  325. net/can/af_can.c +2 −1
  326. net/can/isotp.c +38 −33
  327. net/can/j1939/main.c +3 −0
  328. net/core/skbuff.c +19 −17
  329. net/core/skmsg.c +2 −5
  330. net/core/sock_map.c +4 −3
  331. net/ipv4/tcp.c +1 −1
  332. net/ipv4/tcp_bpf.c +5 −3
  333. net/ipv6/addrlabel.c +1 −0
  334. net/mac80211/main.c +6 −2
  335. net/mac80211/mesh_pathtbl.c +1 −1
  336. net/mac80211/s1g.c +3 −0
  337. net/mac80211/tx.c +5 −0
  338. net/mctp/af_mctp.c +3 −1
  339. net/mctp/route.c +1 −1
  340. net/netfilter/nf_tables_api.c +2 −1
  341. net/netfilter/nfnetlink.c +1 −0
  342. net/sctp/outqueue.c +8 −5
  343. net/tipc/netlink_compat.c +1 −1
  344. net/wireless/reg.c +9 −3
  345. net/wireless/scan.c +3 −1
  346. net/wireless/util.c +4 −2
  347. scripts/min-tool-version.sh +1 −1
  348. sound/arm/pxa2xx-ac97-lib.c +3 −1
  349. sound/core/memalloc.c +8 −7
  350. sound/hda/hdac_sysfs.c +3 −1
  351. sound/pci/hda/hda_intel.c +7 −4
  352. sound/pci/hda/patch_ca0132.c +1 −0
  353. sound/pci/hda/patch_realtek.c +2 −0
  354. sound/soc/codecs/adau1372.c +17 −14
  355. sound/usb/card.c +20 −9
  356. sound/usb/endpoint.c +2 −1
  357. sound/usb/quirks-table.h +4 −0
  358. sound/usb/quirks.c +6 −41
  359. sound/usb/usbaudio.h +3 −0
  360. tools/bpf/bpftool/common.c +3 −0
  361. tools/include/uapi/linux/in.h +1 −0
  362. tools/include/uapi/linux/stddef.h +47 −0
  363. tools/kvm/kvm_stat/kvm_stat +83 −15
  364. tools/perf/.gitignore +1 −0
  365. tools/perf/tests/shell/test_brstack.sh +4 −1
  366. tools/perf/util/parse-branch-options.c +3 −1
  367. tools/perf/util/stat-display.c +4 −2
  368. tools/testing/radix-tree/.gitignore +1 −0
  369. tools/testing/radix-tree/Makefile +16 −3
  370. tools/testing/radix-tree/generated/autoconf.h +1 −1
  371. tools/testing/radix-tree/linux.c +4 −0
  372. tools/testing/radix-tree/maple.c +35770 −0
  373. tools/testing/selftests/bpf/verifier/ref_tracking.c +36 −0
  374. tools/testing/selftests/net/io_uring_zerocopy_tx.sh +1 −1
  375. tools/testing/selftests/net/udpgro.sh +2 −2
  376. tools/testing/selftests/net/udpgro_bench.sh +1 −1
  377. tools/testing/selftests/net/udpgro_frglist.sh +1 −1
  378. tools/testing/selftests/netfilter/rpath.sh +8 −6
CREDITS+5−0
@@ -918,6 +918,11 @@ S: Ottawa, Ontario · 917 unmodified lines
918S: K1N 6Z9918S: K1N 6Z9
919S: CANADA919S: CANADA
920 920
921N: Vivien Didelot
922E: vivien.didelot@gmail.com
923D: DSA framework and MV88E6XXX driver
924S: Montreal, Quebec, Canada
925
921N: Jeff Dike926N: Jeff Dike
922E: jdike@karaya.com927E: jdike@karaya.com
923W: http://user-mode-linux.sourceforge.net928W: http://user-mode-linux.sourceforge.net
Documentation/dev-tools/kmsan.rst+1−0
@@ -67,6 +67,7 @@ uninitialized in the local variable, as well as the stack where the value was · 66 unmodified lines
67copied to another memory location before use.67copied to another memory location before use.
68 68
69A use of uninitialized value ``v`` is reported by KMSAN in the following cases:69A use of uninitialized value ``v`` is reported by KMSAN in the following cases:
70
70 - in a condition, e.g. ``if (v) { ... }``;71 - in a condition, e.g. ``if (v) { ... }``;
71 - in an indexing or pointer dereferencing, e.g. ``array[v]`` or ``*v``;72 - in an indexing or pointer dereferencing, e.g. ``array[v]`` or ``*v``;
72 - when it is copied to userspace or hardware, e.g. ``copy_to_user(..., &v, ...)``;73 - when it is copied to userspace or hardware, e.g. ``copy_to_user(..., &v, ...)``;
Documentation/devicetree/bindings/hwlock/qcom-hwspinlock.yaml+21−8
@@ -15,9 +15,22 @@ description: · 14 unmodified lines
15 15
16properties:16properties:
17 compatible:17 compatible:
18 enum:18 oneOf:
19 - qcom,sfpb-mutex19 - enum:
20 - qcom,tcsr-mutex20 - qcom,sfpb-mutex
21 - qcom,tcsr-mutex
22 - items:
23 - enum:
24 - qcom,apq8084-tcsr-mutex
25 - qcom,ipq6018-tcsr-mutex
26 - qcom,msm8226-tcsr-mutex
27 - qcom,msm8994-tcsr-mutex
28 - const: qcom,tcsr-mutex
29 - items:
30 - enum:
31 - qcom,msm8974-tcsr-mutex
32 - const: qcom,tcsr-mutex
33 - const: syscon
21 34
22 reg:35 reg:
23 maxItems: 136 maxItems: 1
@@ -34,9 +47,9 @@ additionalProperties: false · 10 unmodified lines
34 47
35examples:48examples:
36 - |49 - |
37 tcsr_mutex: hwlock@1f40000 {50 hwlock@1f40000 {
38 compatible = "qcom,tcsr-mutex";51 compatible = "qcom,tcsr-mutex";
39 reg = <0x01f40000 0x40000>;52 reg = <0x01f40000 0x40000>;
40 #hwlock-cells = <1>;53 #hwlock-cells = <1>;
41 };54 };
42...55...
Documentation/devicetree/bindings/net/engleder,tsnep.yaml+1−1
@@ -47,7 +47,7 @@ properties: · 46 unmodified lines
47 47
48 nvmem-cells: true48 nvmem-cells: true
49 49
50 nvmem-cells-names: true50 nvmem-cell-names: true
51 51
52 phy-connection-type:52 phy-connection-type:
53 enum:53 enum:
Documentation/virt/kvm/devices/vm.rst+3−0
@@ -215,6 +215,7 @@ KVM_S390_VM_TOD_EXT). · 214 unmodified lines
215:Parameters: address of a buffer in user space to store the data (u8) to215:Parameters: address of a buffer in user space to store the data (u8) to
216:Returns: -EFAULT if the given address is not accessible from kernel space;216:Returns: -EFAULT if the given address is not accessible from kernel space;
217 -EINVAL if setting the TOD clock extension to != 0 is not supported217 -EINVAL if setting the TOD clock extension to != 0 is not supported
218 -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor)
218 219
2193.2. ATTRIBUTE: KVM_S390_VM_TOD_LOW2203.2. ATTRIBUTE: KVM_S390_VM_TOD_LOW
220-----------------------------------221-----------------------------------
@@ -224,6 +225,7 @@ the POP (u64). · 3 unmodified lines
224 225
225:Parameters: address of a buffer in user space to store the data (u64) to226:Parameters: address of a buffer in user space to store the data (u64) to
226:Returns: -EFAULT if the given address is not accessible from kernel space227:Returns: -EFAULT if the given address is not accessible from kernel space
228 -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor)
227 229
2283.3. ATTRIBUTE: KVM_S390_VM_TOD_EXT2303.3. ATTRIBUTE: KVM_S390_VM_TOD_EXT
229-----------------------------------231-----------------------------------
@@ -237,6 +239,7 @@ it, it is stored as 0 and not allowed to be set to a value != 0. · 7 unmodified lines
237 (kvm_s390_vm_tod_clock) to239 (kvm_s390_vm_tod_clock) to
238:Returns: -EFAULT if the given address is not accessible from kernel space;240:Returns: -EFAULT if the given address is not accessible from kernel space;
239 -EINVAL if setting the TOD clock extension to != 0 is not supported241 -EINVAL if setting the TOD clock extension to != 0 is not supported
242 -EOPNOTSUPP for a PV guest (TOD managed by the ultravisor)
240 243
2414. GROUP: KVM_S390_VM_CRYPTO2444. GROUP: KVM_S390_VM_CRYPTO
242============================245============================
MAINTAINERS+2−5
@@ -8602,8 +8602,8 @@ F: include/asm-generic/ · 8601 unmodified lines
8602F: include/uapi/asm-generic/8602F: include/uapi/asm-generic/
8603 8603
8604GENERIC PHY FRAMEWORK8604GENERIC PHY FRAMEWORK
8605M: Kishon Vijay Abraham I <kishon@ti.com>
8606M: Vinod Koul <vkoul@kernel.org>8605M: Vinod Koul <vkoul@kernel.org>
8606M: Kishon Vijay Abraham I <kishon@kernel.org>
8607L: linux-phy@lists.infradead.org8607L: linux-phy@lists.infradead.org
8608S: Supported8608S: Supported
8609Q: https://patchwork.kernel.org/project/linux-phy/list/8609Q: https://patchwork.kernel.org/project/linux-phy/list/
@@ -9341,7 +9341,7 @@ S: Maintained · 731 unmodified lines
9341F: drivers/crypto/hisilicon/trng/trng.c9341F: drivers/crypto/hisilicon/trng/trng.c
9342 9342
9343HISILICON V3XX SPI NOR FLASH Controller Driver9343HISILICON V3XX SPI NOR FLASH Controller Driver
9344M: John Garry <john.garry@huawei.com>9344M: Jay Fang <f.fangjian@huawei.com>
9345S: Maintained9345S: Maintained
9346W: http://www.hisilicon.com9346W: http://www.hisilicon.com
9347F: drivers/spi/spi-hisi-sfc-v3xx.c9347F: drivers/spi/spi-hisi-sfc-v3xx.c
@@ -9507,7 +9507,6 @@ F: drivers/media/i2c/hi847.c · 159 unmodified lines
9507Hyper-V/Azure CORE AND DRIVERS9507Hyper-V/Azure CORE AND DRIVERS
9508M: "K. Y. Srinivasan" <kys@microsoft.com>9508M: "K. Y. Srinivasan" <kys@microsoft.com>
9509M: Haiyang Zhang <haiyangz@microsoft.com>9509M: Haiyang Zhang <haiyangz@microsoft.com>
9510M: Stephen Hemminger <sthemmin@microsoft.com>
9511M: Wei Liu <wei.liu@kernel.org>9510M: Wei Liu <wei.liu@kernel.org>
9512M: Dexuan Cui <decui@microsoft.com>9511M: Dexuan Cui <decui@microsoft.com>
9513L: linux-hyperv@vger.kernel.org9512L: linux-hyperv@vger.kernel.org
@@ -12226,7 +12225,6 @@ F: arch/mips/boot/dts/img/pistachio* · 2712 unmodified lines
12226 12225
12227MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER12226MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER
12228M: Andrew Lunn <andrew@lunn.ch>12227M: Andrew Lunn <andrew@lunn.ch>
12229M: Vivien Didelot <vivien.didelot@gmail.com>
12230L: netdev@vger.kernel.org12228L: netdev@vger.kernel.org
12231S: Maintained12229S: Maintained
12232F: Documentation/devicetree/bindings/net/dsa/marvell.txt12230F: Documentation/devicetree/bindings/net/dsa/marvell.txt
@@ -14324,7 +14322,6 @@ F: drivers/net/wireless/ · 2091 unmodified lines
14324 14322
14325NETWORKING [DSA]14323NETWORKING [DSA]
14326M: Andrew Lunn <andrew@lunn.ch>14324M: Andrew Lunn <andrew@lunn.ch>
14327M: Vivien Didelot <vivien.didelot@gmail.com>
14328M: Florian Fainelli <f.fainelli@gmail.com>14325M: Florian Fainelli <f.fainelli@gmail.com>
14329M: Vladimir Oltean <olteanv@gmail.com>14326M: Vladimir Oltean <olteanv@gmail.com>
14330S: Maintained14327S: Maintained
Makefile+1−1
@@ -2,7 +2,7 @@ · 1 unmodified line
2VERSION = 62VERSION = 6
3PATCHLEVEL = 13PATCHLEVEL = 1
4SUBLEVEL = 04SUBLEVEL = 0
5EXTRAVERSION = -rc45EXTRAVERSION = -rc5
6NAME = Hurr durr I'ma ninja sloth6NAME = Hurr durr I'ma ninja sloth
7 7
8# *DOCUMENTATION*8# *DOCUMENTATION*
arch/arm64/include/asm/cputype.h+1−1
@@ -41,7 +41,7 @@ · 40 unmodified lines
41 (((midr) & MIDR_IMPLEMENTOR_MASK) >> MIDR_IMPLEMENTOR_SHIFT)41 (((midr) & MIDR_IMPLEMENTOR_MASK) >> MIDR_IMPLEMENTOR_SHIFT)
42 42
43#define MIDR_CPU_MODEL(imp, partnum) \43#define MIDR_CPU_MODEL(imp, partnum) \
44 (((imp) << MIDR_IMPLEMENTOR_SHIFT) | \44 ((_AT(u32, imp) << MIDR_IMPLEMENTOR_SHIFT) | \
45 (0xf << MIDR_ARCHITECTURE_SHIFT) | \45 (0xf << MIDR_ARCHITECTURE_SHIFT) | \
46 ((partnum) << MIDR_PARTNUM_SHIFT))46 ((partnum) << MIDR_PARTNUM_SHIFT))
47 47
arch/arm64/include/asm/syscall_wrapper.h+1−1
@@ -8,7 +8,7 @@ · 7 unmodified lines
8#ifndef __ASM_SYSCALL_WRAPPER_H8#ifndef __ASM_SYSCALL_WRAPPER_H
9#define __ASM_SYSCALL_WRAPPER_H9#define __ASM_SYSCALL_WRAPPER_H
10 10
11struct pt_regs;11#include <asm/ptrace.h>
12 12
13#define SC_ARM64_REGS_TO_ARGS(x, ...) \13#define SC_ARM64_REGS_TO_ARGS(x, ...) \
14 __MAP(x,__SC_ARGS \14 __MAP(x,__SC_ARGS \
arch/arm64/kernel/efi.c+34−18
@@ -13,6 +13,14 @@ · 12 unmodified lines
13 13
14#include <asm/efi.h>14#include <asm/efi.h>
15 15
16static bool region_is_misaligned(const efi_memory_desc_t *md)
17{
18 if (PAGE_SIZE == EFI_PAGE_SIZE)
19 return false;
20 return !PAGE_ALIGNED(md->phys_addr) ||
21 !PAGE_ALIGNED(md->num_pages << EFI_PAGE_SHIFT);
22}
23
16/*24/*
17 * Only regions of type EFI_RUNTIME_SERVICES_CODE need to be25 * Only regions of type EFI_RUNTIME_SERVICES_CODE need to be
18 * executable, everything else can be mapped with the XN bits26 * executable, everything else can be mapped with the XN bits
@@ -26,14 +34,22 @@ static __init pteval_t create_mapping_protection(efi_memory_desc_t *md) · 7 unmodified lines
26 if (type == EFI_MEMORY_MAPPED_IO)34 if (type == EFI_MEMORY_MAPPED_IO)
27 return PROT_DEVICE_nGnRE;35 return PROT_DEVICE_nGnRE;
28 36
29 if (WARN_ONCE(!PAGE_ALIGNED(md->phys_addr),37 if (region_is_misaligned(md)) {
30 "UEFI Runtime regions are not aligned to 64 KB -- buggy firmware?"))38 static bool __initdata code_is_misaligned;
39
31 /*40 /*
32 * If the region is not aligned to the page size of the OS, we41 * Regions that are not aligned to the OS page size cannot be
33 * can not use strict permissions, since that would also affect42 * mapped with strict permissions, as those might interfere
34 * the mapping attributes of the adjacent regions.43 * with the permissions that are needed by the adjacent
44 * region's mapping. However, if we haven't encountered any
45 * misaligned runtime code regions so far, we can safely use
46 * non-executable permissions for non-code regions.
35 */47 */
36 return pgprot_val(PAGE_KERNEL_EXEC);48 code_is_misaligned |= (type == EFI_RUNTIME_SERVICES_CODE);
49
50 return code_is_misaligned ? pgprot_val(PAGE_KERNEL_EXEC)
51 : pgprot_val(PAGE_KERNEL);
52 }
37 53
38 /* R-- */54 /* R-- */
39 if ((attr & (EFI_MEMORY_XP | EFI_MEMORY_RO)) ==55 if ((attr & (EFI_MEMORY_XP | EFI_MEMORY_RO)) ==
@@ -64,19 +80,16 @@ int __init efi_create_mapping(struct mm_struct *mm, efi_memory_desc_t *md) · 24 unmodified lines
64 bool page_mappings_only = (md->type == EFI_RUNTIME_SERVICES_CODE ||80 bool page_mappings_only = (md->type == EFI_RUNTIME_SERVICES_CODE ||
65 md->type == EFI_RUNTIME_SERVICES_DATA);81 md->type == EFI_RUNTIME_SERVICES_DATA);
66 82
67 if (!PAGE_ALIGNED(md->phys_addr) ||83 /*
68 !PAGE_ALIGNED(md->num_pages << EFI_PAGE_SHIFT)) {84 * If this region is not aligned to the page size used by the OS, the
69 /*85 * mapping will be rounded outwards, and may end up sharing a page
70 * If the end address of this region is not aligned to page86 * frame with an adjacent runtime memory region. Given that the page
71 * size, the mapping is rounded up, and may end up sharing a87 * table descriptor covering the shared page will be rewritten when the
72 * page frame with the next UEFI memory region. If we create88 * adjacent region gets mapped, we must avoid block mappings here so we
73 * a block entry now, we may need to split it again when mapping89 * don't have to worry about splitting them when that happens.
74 * the next region, and support for that is going to be removed90 */
75 * from the MMU routines. So avoid block mappings altogether in91 if (region_is_misaligned(md))
76 * that case.
77 */
78 page_mappings_only = true;92 page_mappings_only = true;
79 }
80 93
81 create_pgd_mapping(mm, md->phys_addr, md->virt_addr,94 create_pgd_mapping(mm, md->phys_addr, md->virt_addr,
82 md->num_pages << EFI_PAGE_SHIFT,95 md->num_pages << EFI_PAGE_SHIFT,
@@ -103,6 +116,9 @@ int __init efi_set_mapping_permissions(struct mm_struct *mm, · 20 unmodified lines
103 BUG_ON(md->type != EFI_RUNTIME_SERVICES_CODE &&116 BUG_ON(md->type != EFI_RUNTIME_SERVICES_CODE &&
104 md->type != EFI_RUNTIME_SERVICES_DATA);117 md->type != EFI_RUNTIME_SERVICES_DATA);
105 118
119 if (region_is_misaligned(md))
120 return 0;
121
106 /*122 /*
107 * Calling apply_to_page_range() is only safe on regions that are123 * Calling apply_to_page_range() is only safe on regions that are
108 * guaranteed to be mapped down to pages. Since we are only called124 * guaranteed to be mapped down to pages. Since we are only called
arch/arm64/mm/pageattr.c+3−2
@@ -26,7 +26,7 @@ bool can_set_direct_map(void) · 25 unmodified lines
26 * mapped at page granularity, so that it is possible to26 * mapped at page granularity, so that it is possible to
27 * protect/unprotect single pages.27 * protect/unprotect single pages.
28 */28 */
29 return rodata_full || debug_pagealloc_enabled() ||29 return (rodata_enabled && rodata_full) || debug_pagealloc_enabled() ||
30 IS_ENABLED(CONFIG_KFENCE);30 IS_ENABLED(CONFIG_KFENCE);
31}31}
32 32
@@ -102,7 +102,8 @@ static int change_memory_common(unsigned long addr, int numpages, · 69 unmodified lines
102 * If we are manipulating read-only permissions, apply the same102 * If we are manipulating read-only permissions, apply the same
103 * change to the linear mapping of the pages that back this VM area.103 * change to the linear mapping of the pages that back this VM area.
104 */104 */
105 if (rodata_full && (pgprot_val(set_mask) == PTE_RDONLY ||105 if (rodata_enabled &&
106 rodata_full && (pgprot_val(set_mask) == PTE_RDONLY ||
106 pgprot_val(clear_mask) == PTE_RDONLY)) {107 pgprot_val(clear_mask) == PTE_RDONLY)) {
107 for (i = 0; i < area->nr_pages; i++) {108 for (i = 0; i < area->nr_pages; i++) {
108 __change_memory_common((u64)page_address(area->pages[i]),109 __change_memory_common((u64)page_address(area->pages[i]),
arch/mips/alchemy/common/gpiolib.c+1−1
@@ -31,7 +31,7 @@ · 30 unmodified lines
31#include <linux/init.h>31#include <linux/init.h>
32#include <linux/kernel.h>32#include <linux/kernel.h>
33#include <linux/types.h>33#include <linux/types.h>
34#include <linux/gpio.h>34#include <linux/gpio/driver.h>
35#include <asm/mach-au1x00/gpio-au1000.h>35#include <asm/mach-au1x00/gpio-au1000.h>
36#include <asm/mach-au1x00/gpio-au1300.h>36#include <asm/mach-au1x00/gpio-au1300.h>
37 37
arch/mips/boot/compressed/decompress.c+1−0
@@ -9,6 +9,7 @@ · 8 unmodified lines
9 9
10#define DISABLE_BRANCH_PROFILING10#define DISABLE_BRANCH_PROFILING
11 11
12#define __NO_FORTIFY
12#include <linux/types.h>13#include <linux/types.h>
13#include <linux/kernel.h>14#include <linux/kernel.h>
14#include <linux/string.h>15#include <linux/string.h>
arch/mips/include/asm/fw/fw.h+1−1
@@ -26,6 +26,6 @@ extern char *fw_getcmdline(void); · 25 unmodified lines
26extern void fw_meminit(void);26extern void fw_meminit(void);
27extern char *fw_getenv(char *name);27extern char *fw_getenv(char *name);
28extern unsigned long fw_getenvl(char *name);28extern unsigned long fw_getenvl(char *name);
29extern void fw_init_early_console(char port);29extern void fw_init_early_console(void);
30 30
31#endif /* __ASM_FW_H_ */31#endif /* __ASM_FW_H_ */
arch/mips/kernel/jump_label.c+1−1
@@ -56,7 +56,7 @@ void arch_jump_label_transform(struct jump_entry *e, · 55 unmodified lines
56 * The branch offset must fit in the instruction's 2656 * The branch offset must fit in the instruction's 26
57 * bit field.57 * bit field.
58 */58 */
59 WARN_ON((offset >= BIT(25)) ||59 WARN_ON((offset >= (long)BIT(25)) ||
60 (offset < -(long)BIT(25)));60 (offset < -(long)BIT(25)));
61 61
62 insn.j_format.opcode = bc6_op;62 insn.j_format.opcode = bc6_op;
arch/mips/kernel/relocate_kernel.S+5−10
@@ -145,8 +145,7 @@ LEAF(kexec_smp_wait) · 144 unmodified lines
145 * kexec_args[0..3] are used to prepare register values.145 * kexec_args[0..3] are used to prepare register values.
146 */146 */
147 147
148kexec_args:148EXPORT(kexec_args)
149 EXPORT(kexec_args)
150arg0: PTR_WD 0x0149arg0: PTR_WD 0x0
151arg1: PTR_WD 0x0150arg1: PTR_WD 0x0
152arg2: PTR_WD 0x0151arg2: PTR_WD 0x0
@@ -159,8 +158,7 @@ arg3: PTR_WD 0x0 · 6 unmodified lines
159 * their registers a0-a3. secondary_kexec_args[0..3] are used158 * their registers a0-a3. secondary_kexec_args[0..3] are used
160 * to prepare register values.159 * to prepare register values.
161 */160 */
162secondary_kexec_args:161EXPORT(secondary_kexec_args)
163 EXPORT(secondary_kexec_args)
164s_arg0: PTR_WD 0x0162s_arg0: PTR_WD 0x0
165s_arg1: PTR_WD 0x0163s_arg1: PTR_WD 0x0
166s_arg2: PTR_WD 0x0164s_arg2: PTR_WD 0x0
@@ -171,19 +169,16 @@ kexec_flag: · 4 unmodified lines
171 169
172#endif170#endif
173 171
174kexec_start_address:172EXPORT(kexec_start_address)
175 EXPORT(kexec_start_address)
176 PTR_WD 0x0173 PTR_WD 0x0
177 .size kexec_start_address, PTRSIZE174 .size kexec_start_address, PTRSIZE
178 175
179kexec_indirection_page:176EXPORT(kexec_indirection_page)
180 EXPORT(kexec_indirection_page)
181 PTR_WD 0177 PTR_WD 0
182 .size kexec_indirection_page, PTRSIZE178 .size kexec_indirection_page, PTRSIZE
183 179
184relocate_new_kernel_end:180relocate_new_kernel_end:
185 181
186relocate_new_kernel_size:182EXPORT(relocate_new_kernel_size)
187 EXPORT(relocate_new_kernel_size)
188 PTR_WD relocate_new_kernel_end - relocate_new_kernel183 PTR_WD relocate_new_kernel_end - relocate_new_kernel
189 .size relocate_new_kernel_size, PTRSIZE184 .size relocate_new_kernel_size, PTRSIZE
arch/mips/loongson64/reset.c+10−0
@@ -16,6 +16,7 @@ · 15 unmodified lines
16#include <asm/bootinfo.h>16#include <asm/bootinfo.h>
17#include <asm/idle.h>17#include <asm/idle.h>
18#include <asm/reboot.h>18#include <asm/reboot.h>
19#include <asm/bug.h>
19 20
20#include <loongson.h>21#include <loongson.h>
21#include <boot_param.h>22#include <boot_param.h>
@@ -159,8 +160,17 @@ static int __init mips_reboot_setup(void) · 137 unmodified lines
159 160
160#ifdef CONFIG_KEXEC161#ifdef CONFIG_KEXEC
161 kexec_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);162 kexec_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
163 if (WARN_ON(!kexec_argv))
164 return -ENOMEM;
165
162 kdump_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);166 kdump_argv = kmalloc(KEXEC_ARGV_SIZE, GFP_KERNEL);
167 if (WARN_ON(!kdump_argv))
168 return -ENOMEM;
169
163 kexec_envp = kmalloc(KEXEC_ENVP_SIZE, GFP_KERNEL);170 kexec_envp = kmalloc(KEXEC_ENVP_SIZE, GFP_KERNEL);
171 if (WARN_ON(!kexec_envp))
172 return -ENOMEM;
173
164 fw_arg1 = KEXEC_ARGV_ADDR;174 fw_arg1 = KEXEC_ARGV_ADDR;
165 memcpy(kexec_envp, (void *)fw_arg2, KEXEC_ENVP_SIZE);175 memcpy(kexec_envp, (void *)fw_arg2, KEXEC_ENVP_SIZE);
166 176
arch/mips/pic32/pic32mzda/early_console.c+6−7
@@ -27,7 +27,7 @@ · 26 unmodified lines
27#define U_BRG(x) (UART_BASE(x) + 0x40)27#define U_BRG(x) (UART_BASE(x) + 0x40)
28 28
29static void __iomem *uart_base;29static void __iomem *uart_base;
30static char console_port = -1;30static int console_port = -1;
31 31
32static int __init configure_uart_pins(int port)32static int __init configure_uart_pins(int port)
33{33{
@@ -47,7 +47,7 @@ static int __init configure_uart_pins(int port) · 13 unmodified lines
47 return 0;47 return 0;
48}48}
49 49
50static void __init configure_uart(char port, int baud)50static void __init configure_uart(int port, int baud)
51{51{
52 u32 pbclk;52 u32 pbclk;
53 53
@@ -60,7 +60,7 @@ static void __init configure_uart(char port, int baud) · 6 unmodified lines
60 uart_base + PIC32_SET(U_STA(port)));60 uart_base + PIC32_SET(U_STA(port)));
61}61}
62 62
63static void __init setup_early_console(char port, int baud)63static void __init setup_early_console(int port, int baud)
64{64{
65 if (configure_uart_pins(port))65 if (configure_uart_pins(port))
66 return;66 return;
@@ -130,16 +130,15 @@ _out: · 63 unmodified lines
130 return baud;130 return baud;
131}131}
132 132
133void __init fw_init_early_console(char port)133void __init fw_init_early_console(void)
134{134{
135 char *arch_cmdline = pic32_getcmdline();135 char *arch_cmdline = pic32_getcmdline();
136 int baud = -1;136 int baud, port;
137 137
138 uart_base = ioremap(PIC32_BASE_UART, 0xc00);138 uart_base = ioremap(PIC32_BASE_UART, 0xc00);
139 139
140 baud = get_baud_from_cmdline(arch_cmdline);140 baud = get_baud_from_cmdline(arch_cmdline);
141 if (port == -1)141 port = get_port_from_cmdline(arch_cmdline);
142 port = get_port_from_cmdline(arch_cmdline);
143 142
144 if (port == -1)143 if (port == -1)
145 port = EARLY_CONSOLE_PORT;144 port = EARLY_CONSOLE_PORT;
arch/mips/pic32/pic32mzda/init.c+1−1
@@ -47,7 +47,7 @@ void __init plat_mem_setup(void) · 46 unmodified lines
47 strscpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE);47 strscpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE);
48 48
49#ifdef CONFIG_EARLY_PRINTK49#ifdef CONFIG_EARLY_PRINTK
50 fw_init_early_console(-1);50 fw_init_early_console();
51#endif51#endif
52 pic32_config_init();52 pic32_config_init();
53}53}
arch/riscv/boot/dts/sifive/hifive-unleashed-a00.dts+38−0
@@ -3,6 +3,8 @@ · 2 unmodified lines
3 3
4#include "fu540-c000.dtsi"4#include "fu540-c000.dtsi"
5#include <dt-bindings/gpio/gpio.h>5#include <dt-bindings/gpio/gpio.h>
6#include <dt-bindings/leds/common.h>
7#include <dt-bindings/pwm/pwm.h>
6 8
7/* Clock frequency (in Hz) of the PCB crystal for rtcclk */9/* Clock frequency (in Hz) of the PCB crystal for rtcclk */
8#define RTCCLK_FREQ 100000010#define RTCCLK_FREQ 1000000
@@ -42,6 +44,42 @@ · 33 unmodified lines
42 compatible = "gpio-restart";44 compatible = "gpio-restart";
43 gpios = <&gpio 10 GPIO_ACTIVE_LOW>;45 gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
44 };46 };
47
48 led-controller {
49 compatible = "pwm-leds";
50
51 led-d1 {
52 pwms = <&pwm0 0 7812500 PWM_POLARITY_INVERTED>;
53 active-low;
54 color = <LED_COLOR_ID_GREEN>;
55 max-brightness = <255>;
56 label = "d1";
57 };
58
59 led-d2 {
60 pwms = <&pwm0 1 7812500 PWM_POLARITY_INVERTED>;
61 active-low;
62 color = <LED_COLOR_ID_GREEN>;
63 max-brightness = <255>;
64 label = "d2";
65 };
66
67 led-d3 {
68 pwms = <&pwm0 2 7812500 PWM_POLARITY_INVERTED>;
69 active-low;
70 color = <LED_COLOR_ID_GREEN>;
71 max-brightness = <255>;
72 label = "d3";
73 };
74
75 led-d4 {
76 pwms = <&pwm0 3 7812500 PWM_POLARITY_INVERTED>;
77 active-low;
78 color = <LED_COLOR_ID_GREEN>;
79 max-brightness = <255>;
80 label = "d4";
81 };
82 };
45};83};
46 84
47&uart0 {85&uart0 {
arch/riscv/kernel/process.c+2−0
@@ -164,6 +164,8 @@ int copy_thread(struct task_struct *p, const struct kernel_clone_args *args) · 163 unmodified lines
164 unsigned long tls = args->tls;164 unsigned long tls = args->tls;
165 struct pt_regs *childregs = task_pt_regs(p);165 struct pt_regs *childregs = task_pt_regs(p);
166 166
167 memset(&p->thread.s, 0, sizeof(p->thread.s));
168
167 /* p->thread holds context to be restored by __switch_to() */169 /* p->thread holds context to be restored by __switch_to() */
168 if (unlikely(args->fn)) {170 if (unlikely(args->fn)) {
169 /* Kernel thread */171 /* Kernel thread */
arch/riscv/kernel/setup.c+1−0
@@ -283,6 +283,7 @@ void __init setup_arch(char **cmdline_p) · 282 unmodified lines
283 else283 else
284 pr_err("No DTB found in kernel mappings\n");284 pr_err("No DTB found in kernel mappings\n");
285#endif285#endif
286 early_init_fdt_scan_reserved_mem();
286 misc_mem_init();287 misc_mem_init();
287 288
288 init_resources();289 init_resources();
arch/riscv/kernel/vdso/Makefile+4−1
@@ -28,9 +28,12 @@ obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) · 27 unmodified lines
28 28
29obj-y += vdso.o29obj-y += vdso.o
30CPPFLAGS_vdso.lds += -P -C -U$(ARCH)30CPPFLAGS_vdso.lds += -P -C -U$(ARCH)
31ifneq ($(filter vgettimeofday, $(vdso-syms)),)
32CPPFLAGS_vdso.lds += -DHAS_VGETTIMEOFDAY
33endif
31 34
32# Disable -pg to prevent insert call site35# Disable -pg to prevent insert call site
33CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE) -Os36CFLAGS_REMOVE_vgettimeofday.o = $(CC_FLAGS_FTRACE)
34 37
35# Disable profiling and instrumentation for VDSO code38# Disable profiling and instrumentation for VDSO code
36GCOV_PROFILE := n39GCOV_PROFILE := n
arch/riscv/kernel/vdso/vdso.lds.S+2−0
@@ -68,9 +68,11 @@ VERSION · 67 unmodified lines
68 LINUX_4.15 {68 LINUX_4.15 {
69 global:69 global:
70 __vdso_rt_sigreturn;70 __vdso_rt_sigreturn;
71#ifdef HAS_VGETTIMEOFDAY
71 __vdso_gettimeofday;72 __vdso_gettimeofday;
72 __vdso_clock_gettime;73 __vdso_clock_gettime;
73 __vdso_clock_getres;74 __vdso_clock_getres;
75#endif
74 __vdso_getcpu;76 __vdso_getcpu;
75 __vdso_flush_icache;77 __vdso_flush_icache;
76 local: *;78 local: *;
arch/riscv/mm/init.c+0−1
@@ -262,7 +262,6 @@ static void __init setup_bootmem(void) · 261 unmodified lines
262 memblock_reserve(dtb_early_pa, fdt_totalsize(dtb_early_va));262 memblock_reserve(dtb_early_pa, fdt_totalsize(dtb_early_va));
263 }263 }
264 264
265 early_init_fdt_scan_reserved_mem();
266 dma_contiguous_reserve(dma32_phys_limit);265 dma_contiguous_reserve(dma32_phys_limit);
267 if (IS_ENABLED(CONFIG_64BIT))266 if (IS_ENABLED(CONFIG_64BIT))
268 hugetlb_cma_reserve(PUD_SHIFT - PAGE_SHIFT);267 hugetlb_cma_reserve(PUD_SHIFT - PAGE_SHIFT);
arch/s390/Kconfig+3−3
@@ -568,8 +568,7 @@ config EXPOLINE_FULL · 567 unmodified lines
568endchoice568endchoice
569 569
570config RELOCATABLE570config RELOCATABLE
571 bool "Build a relocatable kernel"571 def_bool y
572 default y
573 help572 help
574 This builds a kernel image that retains relocation information573 This builds a kernel image that retains relocation information
575 so it can be loaded at an arbitrary address.574 so it can be loaded at an arbitrary address.
@@ -578,10 +577,11 @@ config RELOCATABLE · 2 unmodified lines
578 bootup process.577 bootup process.
579 The relocations make the kernel image about 15% larger (compressed578 The relocations make the kernel image about 15% larger (compressed
580 10%), but are discarded at runtime.579 10%), but are discarded at runtime.
580 Note: this option exists only for documentation purposes, please do
581 not remove it.
581 582
582config RANDOMIZE_BASE583config RANDOMIZE_BASE
583 bool "Randomize the address of the kernel image (KASLR)"584 bool "Randomize the address of the kernel image (KASLR)"
584 depends on RELOCATABLE
585 default y585 default y
586 help586 help
587 In support of Kernel Address Space Layout Randomization (KASLR),587 In support of Kernel Address Space Layout Randomization (KASLR),
arch/s390/Makefile+0−2
@@ -14,10 +14,8 @@ KBUILD_AFLAGS_MODULE += -fPIC · 13 unmodified lines
14KBUILD_CFLAGS_MODULE += -fPIC14KBUILD_CFLAGS_MODULE += -fPIC
15KBUILD_AFLAGS += -m6415KBUILD_AFLAGS += -m64
16KBUILD_CFLAGS += -m6416KBUILD_CFLAGS += -m64
17ifeq ($(CONFIG_RELOCATABLE),y)
18KBUILD_CFLAGS += -fPIE17KBUILD_CFLAGS += -fPIE
19LDFLAGS_vmlinux := -pie18LDFLAGS_vmlinux := -pie
20endif
21aflags_dwarf := -Wa,-gdwarf-219aflags_dwarf := -Wa,-gdwarf-2
22KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__20KBUILD_AFLAGS_DECOMPRESSOR := $(CLANG_FLAGS) -m64 -D__ASSEMBLY__
23ifndef CONFIG_AS_IS_LLVM21ifndef CONFIG_AS_IS_LLVM
arch/s390/boot/Makefile+1−2
@@ -37,9 +37,8 @@ CFLAGS_sclp_early_core.o += -I$(srctree)/drivers/s390/char · 36 unmodified lines
37 37
38obj-y := head.o als.o startup.o mem_detect.o ipl_parm.o ipl_report.o38obj-y := head.o als.o startup.o mem_detect.o ipl_parm.o ipl_report.o
39obj-y += string.o ebcdic.o sclp_early_core.o mem.o ipl_vmparm.o cmdline.o39obj-y += string.o ebcdic.o sclp_early_core.o mem.o ipl_vmparm.o cmdline.o
40obj-y += version.o pgm_check_info.o ctype.o ipl_data.o40obj-y += version.o pgm_check_info.o ctype.o ipl_data.o machine_kexec_reloc.o
41obj-$(findstring y, $(CONFIG_PROTECTED_VIRTUALIZATION_GUEST) $(CONFIG_PGSTE)) += uv.o41obj-$(findstring y, $(CONFIG_PROTECTED_VIRTUALIZATION_GUEST) $(CONFIG_PGSTE)) += uv.o
42obj-$(CONFIG_RELOCATABLE) += machine_kexec_reloc.o
43obj-$(CONFIG_RANDOMIZE_BASE) += kaslr.o42obj-$(CONFIG_RANDOMIZE_BASE) += kaslr.o
44obj-y += $(if $(CONFIG_KERNEL_UNCOMPRESSED),,decompressor.o) info.o43obj-y += $(if $(CONFIG_KERNEL_UNCOMPRESSED),,decompressor.o) info.o
45obj-$(CONFIG_KERNEL_ZSTD) += clz_ctz.o44obj-$(CONFIG_KERNEL_ZSTD) += clz_ctz.o
arch/s390/boot/startup.c+1−2
@@ -291,8 +291,7 @@ void startup_kernel(void) · 290 unmodified lines
291 291
292 clear_bss_section();292 clear_bss_section();
293 copy_bootdata();293 copy_bootdata();
294 if (IS_ENABLED(CONFIG_RELOCATABLE))294 handle_relocs(__kaslr_offset);
295 handle_relocs(__kaslr_offset);
296 295
297 if (__kaslr_offset) {296 if (__kaslr_offset) {
298 /*297 /*
arch/s390/configs/btf.config+1−0
@@ -0,0 +1 @@
1CONFIG_DEBUG_INFO_BTF=y
arch/s390/configs/debug_defconfig+32−33
@@ -723,52 +723,42 @@ CONFIG_CRYPTO_ECDSA=m · 722 unmodified lines
723CONFIG_CRYPTO_ECRDSA=m723CONFIG_CRYPTO_ECRDSA=m
724CONFIG_CRYPTO_SM2=m724CONFIG_CRYPTO_SM2=m
725CONFIG_CRYPTO_CURVE25519=m725CONFIG_CRYPTO_CURVE25519=m
726CONFIG_CRYPTO_GCM=y
727CONFIG_CRYPTO_CHACHA20POLY1305=m
728CONFIG_CRYPTO_AEGIS128=m
729CONFIG_CRYPTO_SEQIV=y
730CONFIG_CRYPTO_CFB=m
731CONFIG_CRYPTO_LRW=m
732CONFIG_CRYPTO_PCBC=m
733CONFIG_CRYPTO_KEYWRAP=m
734CONFIG_CRYPTO_ADIANTUM=m
735CONFIG_CRYPTO_HCTR2=m
736CONFIG_CRYPTO_XCBC=m
737CONFIG_CRYPTO_VMAC=m
738CONFIG_CRYPTO_CRC32=m
739CONFIG_CRYPTO_CRC32_S390=y
740CONFIG_CRYPTO_MD4=m
741CONFIG_CRYPTO_MD5=y
742CONFIG_CRYPTO_MICHAEL_MIC=m
743CONFIG_CRYPTO_RMD160=m
744CONFIG_CRYPTO_SHA512_S390=m
745CONFIG_CRYPTO_SHA1_S390=m
746CONFIG_CRYPTO_SHA256_S390=m
747CONFIG_CRYPTO_SHA3=m
748CONFIG_CRYPTO_SHA3_256_S390=m
749CONFIG_CRYPTO_SHA3_512_S390=m
750CONFIG_CRYPTO_SM3_GENERIC=m
751CONFIG_CRYPTO_WP512=m
752CONFIG_CRYPTO_GHASH_S390=m
753CONFIG_CRYPTO_AES_TI=m726CONFIG_CRYPTO_AES_TI=m
754CONFIG_CRYPTO_AES_S390=m
755CONFIG_CRYPTO_ANUBIS=m727CONFIG_CRYPTO_ANUBIS=m
756CONFIG_CRYPTO_ARC4=m728CONFIG_CRYPTO_ARIA=m
757CONFIG_CRYPTO_BLOWFISH=m729CONFIG_CRYPTO_BLOWFISH=m
758CONFIG_CRYPTO_CAMELLIA=m730CONFIG_CRYPTO_CAMELLIA=m
759CONFIG_CRYPTO_CAST5=m731CONFIG_CRYPTO_CAST5=m
760CONFIG_CRYPTO_CAST6=m732CONFIG_CRYPTO_CAST6=m
761CONFIG_CRYPTO_DES=m733CONFIG_CRYPTO_DES=m
762CONFIG_CRYPTO_DES_S390=m
763CONFIG_CRYPTO_FCRYPT=m734CONFIG_CRYPTO_FCRYPT=m
764CONFIG_CRYPTO_KHAZAD=m735CONFIG_CRYPTO_KHAZAD=m
765CONFIG_CRYPTO_CHACHA_S390=m
766CONFIG_CRYPTO_SEED=m736CONFIG_CRYPTO_SEED=m
767CONFIG_CRYPTO_ARIA=m
768CONFIG_CRYPTO_SERPENT=m737CONFIG_CRYPTO_SERPENT=m
769CONFIG_CRYPTO_SM4_GENERIC=m738CONFIG_CRYPTO_SM4_GENERIC=m
770CONFIG_CRYPTO_TEA=m739CONFIG_CRYPTO_TEA=m
771CONFIG_CRYPTO_TWOFISH=m740CONFIG_CRYPTO_TWOFISH=m
741CONFIG_CRYPTO_ADIANTUM=m
742CONFIG_CRYPTO_ARC4=m
743CONFIG_CRYPTO_CFB=m
744CONFIG_CRYPTO_HCTR2=m
745CONFIG_CRYPTO_KEYWRAP=m
746CONFIG_CRYPTO_LRW=m
747CONFIG_CRYPTO_PCBC=m
748CONFIG_CRYPTO_AEGIS128=m
749CONFIG_CRYPTO_CHACHA20POLY1305=m
750CONFIG_CRYPTO_GCM=y
751CONFIG_CRYPTO_SEQIV=y
752CONFIG_CRYPTO_MD4=m
753CONFIG_CRYPTO_MD5=y
754CONFIG_CRYPTO_MICHAEL_MIC=m
755CONFIG_CRYPTO_RMD160=m
756CONFIG_CRYPTO_SHA3=m
757CONFIG_CRYPTO_SM3_GENERIC=m
758CONFIG_CRYPTO_VMAC=m
759CONFIG_CRYPTO_WP512=m
760CONFIG_CRYPTO_XCBC=m
761CONFIG_CRYPTO_CRC32=m
772CONFIG_CRYPTO_842=m762CONFIG_CRYPTO_842=m
773CONFIG_CRYPTO_LZ4=m763CONFIG_CRYPTO_LZ4=m
774CONFIG_CRYPTO_LZ4HC=m764CONFIG_CRYPTO_LZ4HC=m
@@ -779,6 +769,16 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m · 4 unmodified lines
779CONFIG_CRYPTO_USER_API_RNG=m769CONFIG_CRYPTO_USER_API_RNG=m
780CONFIG_CRYPTO_USER_API_AEAD=m770CONFIG_CRYPTO_USER_API_AEAD=m
781CONFIG_CRYPTO_STATS=y771CONFIG_CRYPTO_STATS=y
772CONFIG_CRYPTO_CRC32_S390=y
773CONFIG_CRYPTO_SHA512_S390=m
774CONFIG_CRYPTO_SHA1_S390=m
775CONFIG_CRYPTO_SHA256_S390=m
776CONFIG_CRYPTO_SHA3_256_S390=m
777CONFIG_CRYPTO_SHA3_512_S390=m
778CONFIG_CRYPTO_GHASH_S390=m
779CONFIG_CRYPTO_AES_S390=m
780CONFIG_CRYPTO_DES_S390=m
781CONFIG_CRYPTO_CHACHA_S390=m
782CONFIG_ZCRYPT=m782CONFIG_ZCRYPT=m
783CONFIG_PKEY=m783CONFIG_PKEY=m
784CONFIG_CRYPTO_PAES_S390=m784CONFIG_CRYPTO_PAES_S390=m
@@ -797,7 +797,6 @@ CONFIG_CMA_SIZE_MBYTES=0 · 12 unmodified lines
797CONFIG_PRINTK_TIME=y797CONFIG_PRINTK_TIME=y
798CONFIG_DYNAMIC_DEBUG=y798CONFIG_DYNAMIC_DEBUG=y
799CONFIG_DEBUG_INFO_DWARF4=y799CONFIG_DEBUG_INFO_DWARF4=y
800CONFIG_DEBUG_INFO_BTF=y
801CONFIG_GDB_SCRIPTS=y800CONFIG_GDB_SCRIPTS=y
802CONFIG_HEADERS_INSTALL=y801CONFIG_HEADERS_INSTALL=y
803CONFIG_DEBUG_SECTION_MISMATCH=y802CONFIG_DEBUG_SECTION_MISMATCH=y
arch/s390/configs/defconfig+33−34
@@ -707,53 +707,43 @@ CONFIG_CRYPTO_ECDSA=m · 706 unmodified lines
707CONFIG_CRYPTO_ECRDSA=m707CONFIG_CRYPTO_ECRDSA=m
708CONFIG_CRYPTO_SM2=m708CONFIG_CRYPTO_SM2=m
709CONFIG_CRYPTO_CURVE25519=m709CONFIG_CRYPTO_CURVE25519=m
710CONFIG_CRYPTO_GCM=y
711CONFIG_CRYPTO_CHACHA20POLY1305=m
712CONFIG_CRYPTO_AEGIS128=m
713CONFIG_CRYPTO_SEQIV=y
714CONFIG_CRYPTO_CFB=m
715CONFIG_CRYPTO_LRW=m
716CONFIG_CRYPTO_OFB=m
717CONFIG_CRYPTO_PCBC=m
718CONFIG_CRYPTO_KEYWRAP=m
719CONFIG_CRYPTO_ADIANTUM=m
720CONFIG_CRYPTO_HCTR2=m
721CONFIG_CRYPTO_XCBC=m
722CONFIG_CRYPTO_VMAC=m
723CONFIG_CRYPTO_CRC32=m
724CONFIG_CRYPTO_CRC32_S390=y
725CONFIG_CRYPTO_MD4=m
726CONFIG_CRYPTO_MD5=y
727CONFIG_CRYPTO_MICHAEL_MIC=m
728CONFIG_CRYPTO_RMD160=m
729CONFIG_CRYPTO_SHA512_S390=m
730CONFIG_CRYPTO_SHA1_S390=m
731CONFIG_CRYPTO_SHA256_S390=m
732CONFIG_CRYPTO_SHA3=m
733CONFIG_CRYPTO_SHA3_256_S390=m
734CONFIG_CRYPTO_SHA3_512_S390=m
735CONFIG_CRYPTO_SM3_GENERIC=m
736CONFIG_CRYPTO_WP512=m
737CONFIG_CRYPTO_GHASH_S390=m
738CONFIG_CRYPTO_AES_TI=m710CONFIG_CRYPTO_AES_TI=m
739CONFIG_CRYPTO_AES_S390=m
740CONFIG_CRYPTO_ANUBIS=m711CONFIG_CRYPTO_ANUBIS=m
741CONFIG_CRYPTO_ARC4=m712CONFIG_CRYPTO_ARIA=m
742CONFIG_CRYPTO_BLOWFISH=m713CONFIG_CRYPTO_BLOWFISH=m
743CONFIG_CRYPTO_CAMELLIA=m714CONFIG_CRYPTO_CAMELLIA=m
744CONFIG_CRYPTO_CAST5=m715CONFIG_CRYPTO_CAST5=m
745CONFIG_CRYPTO_CAST6=m716CONFIG_CRYPTO_CAST6=m
746CONFIG_CRYPTO_DES=m717CONFIG_CRYPTO_DES=m
747CONFIG_CRYPTO_DES_S390=m
748CONFIG_CRYPTO_FCRYPT=m718CONFIG_CRYPTO_FCRYPT=m
749CONFIG_CRYPTO_KHAZAD=m719CONFIG_CRYPTO_KHAZAD=m
750CONFIG_CRYPTO_CHACHA_S390=m
751CONFIG_CRYPTO_SEED=m720CONFIG_CRYPTO_SEED=m
752CONFIG_CRYPTO_ARIA=m
753CONFIG_CRYPTO_SERPENT=m721CONFIG_CRYPTO_SERPENT=m
754CONFIG_CRYPTO_SM4_GENERIC=m722CONFIG_CRYPTO_SM4_GENERIC=m
755CONFIG_CRYPTO_TEA=m723CONFIG_CRYPTO_TEA=m
756CONFIG_CRYPTO_TWOFISH=m724CONFIG_CRYPTO_TWOFISH=m
725CONFIG_CRYPTO_ADIANTUM=m
726CONFIG_CRYPTO_ARC4=m
727CONFIG_CRYPTO_CFB=m
728CONFIG_CRYPTO_HCTR2=m
729CONFIG_CRYPTO_KEYWRAP=m
730CONFIG_CRYPTO_LRW=m
731CONFIG_CRYPTO_OFB=m
732CONFIG_CRYPTO_PCBC=m
733CONFIG_CRYPTO_AEGIS128=m
734CONFIG_CRYPTO_CHACHA20POLY1305=m
735CONFIG_CRYPTO_GCM=y
736CONFIG_CRYPTO_SEQIV=y
737CONFIG_CRYPTO_MD4=m
738CONFIG_CRYPTO_MD5=y
739CONFIG_CRYPTO_MICHAEL_MIC=m
740CONFIG_CRYPTO_RMD160=m
741CONFIG_CRYPTO_SHA3=m
742CONFIG_CRYPTO_SM3_GENERIC=m
743CONFIG_CRYPTO_VMAC=m
744CONFIG_CRYPTO_WP512=m
745CONFIG_CRYPTO_XCBC=m
746CONFIG_CRYPTO_CRC32=m
757CONFIG_CRYPTO_842=m747CONFIG_CRYPTO_842=m
758CONFIG_CRYPTO_LZ4=m748CONFIG_CRYPTO_LZ4=m
759CONFIG_CRYPTO_LZ4HC=m749CONFIG_CRYPTO_LZ4HC=m
@@ -764,6 +754,16 @@ CONFIG_CRYPTO_USER_API_SKCIPHER=m · 4 unmodified lines
764CONFIG_CRYPTO_USER_API_RNG=m754CONFIG_CRYPTO_USER_API_RNG=m
765CONFIG_CRYPTO_USER_API_AEAD=m755CONFIG_CRYPTO_USER_API_AEAD=m
766CONFIG_CRYPTO_STATS=y756CONFIG_CRYPTO_STATS=y
757CONFIG_CRYPTO_CRC32_S390=y
758CONFIG_CRYPTO_SHA512_S390=m
759CONFIG_CRYPTO_SHA1_S390=m
760CONFIG_CRYPTO_SHA256_S390=m
761CONFIG_CRYPTO_SHA3_256_S390=m
762CONFIG_CRYPTO_SHA3_512_S390=m
763CONFIG_CRYPTO_GHASH_S390=m
764CONFIG_CRYPTO_AES_S390=m
765CONFIG_CRYPTO_DES_S390=m
766CONFIG_CRYPTO_CHACHA_S390=m
767CONFIG_ZCRYPT=m767CONFIG_ZCRYPT=m
768CONFIG_PKEY=m768CONFIG_PKEY=m
769CONFIG_CRYPTO_PAES_S390=m769CONFIG_CRYPTO_PAES_S390=m
@@ -781,7 +781,6 @@ CONFIG_CMA_SIZE_MBYTES=0 · 11 unmodified lines
781CONFIG_PRINTK_TIME=y781CONFIG_PRINTK_TIME=y
782CONFIG_DYNAMIC_DEBUG=y782CONFIG_DYNAMIC_DEBUG=y
783CONFIG_DEBUG_INFO_DWARF4=y783CONFIG_DEBUG_INFO_DWARF4=y
784CONFIG_DEBUG_INFO_BTF=y
785CONFIG_GDB_SCRIPTS=y784CONFIG_GDB_SCRIPTS=y
786CONFIG_DEBUG_SECTION_MISMATCH=y785CONFIG_DEBUG_SECTION_MISMATCH=y
787CONFIG_MAGIC_SYSRQ=y786CONFIG_MAGIC_SYSRQ=y
arch/s390/configs/kasan.config+3−0
@@ -0,0 +1,3 @@
1CONFIG_KASAN=y
2CONFIG_KASAN_INLINE=y
3CONFIG_KASAN_VMALLOC=y
arch/s390/configs/zfcpdump_defconfig+0−1
@@ -74,7 +74,6 @@ CONFIG_PRINTK_TIME=y · 73 unmodified lines
74# CONFIG_SYMBOLIC_ERRNAME is not set74# CONFIG_SYMBOLIC_ERRNAME is not set
75CONFIG_DEBUG_KERNEL=y75CONFIG_DEBUG_KERNEL=y
76CONFIG_DEBUG_INFO_DWARF4=y76CONFIG_DEBUG_INFO_DWARF4=y
77CONFIG_DEBUG_INFO_BTF=y
78CONFIG_DEBUG_FS=y77CONFIG_DEBUG_FS=y
79CONFIG_PANIC_ON_OOPS=y78CONFIG_PANIC_ON_OOPS=y
80# CONFIG_SCHED_DEBUG is not set79# CONFIG_SCHED_DEBUG is not set
arch/s390/kvm/kvm-s390.c+17−9
@@ -1207,6 +1207,8 @@ static int kvm_s390_vm_get_migration(struct kvm *kvm, · 1206 unmodified lines
1207 return 0;1207 return 0;
1208}1208}
1209 1209
1210static void __kvm_s390_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod);
1211
1210static int kvm_s390_set_tod_ext(struct kvm *kvm, struct kvm_device_attr *attr)1212static int kvm_s390_set_tod_ext(struct kvm *kvm, struct kvm_device_attr *attr)
1211{1213{
1212 struct kvm_s390_vm_tod_clock gtod;1214 struct kvm_s390_vm_tod_clock gtod;
@@ -1216,7 +1218,7 @@ static int kvm_s390_set_tod_ext(struct kvm *kvm, struct kvm_device_attr *attr) · 3 unmodified lines
1216 1218
1217 if (!test_kvm_facility(kvm, 139) && gtod.epoch_idx)1219 if (!test_kvm_facility(kvm, 139) && gtod.epoch_idx)
1218 return -EINVAL;1220 return -EINVAL;
1219 kvm_s390_set_tod_clock(kvm, &gtod);1221 __kvm_s390_set_tod_clock(kvm, &gtod);
1220 1222
1221 VM_EVENT(kvm, 3, "SET: TOD extension: 0x%x, TOD base: 0x%llx",1223 VM_EVENT(kvm, 3, "SET: TOD extension: 0x%x, TOD base: 0x%llx",
1222 gtod.epoch_idx, gtod.tod);1224 gtod.epoch_idx, gtod.tod);
@@ -1247,7 +1249,7 @@ static int kvm_s390_set_tod_low(struct kvm *kvm, struct kvm_device_attr *attr) · 24 unmodified lines
1247 sizeof(gtod.tod)))1249 sizeof(gtod.tod)))
1248 return -EFAULT;1250 return -EFAULT;
1249 1251
1250 kvm_s390_set_tod_clock(kvm, &gtod);1252 __kvm_s390_set_tod_clock(kvm, &gtod);
1251 VM_EVENT(kvm, 3, "SET: TOD base: 0x%llx", gtod.tod);1253 VM_EVENT(kvm, 3, "SET: TOD base: 0x%llx", gtod.tod);
1252 return 0;1254 return 0;
1253}1255}
@@ -1259,6 +1261,16 @@ static int kvm_s390_set_tod(struct kvm *kvm, struct kvm_device_attr *attr) · 5 unmodified lines
1259 if (attr->flags)1261 if (attr->flags)
1260 return -EINVAL;1262 return -EINVAL;
1261 1263
1264 mutex_lock(&kvm->lock);
1265 /*
1266 * For protected guests, the TOD is managed by the ultravisor, so trying
1267 * to change it will never bring the expected results.
1268 */
1269 if (kvm_s390_pv_is_protected(kvm)) {
1270 ret = -EOPNOTSUPP;
1271 goto out_unlock;
1272 }
1273
1262 switch (attr->attr) {1274 switch (attr->attr) {
1263 case KVM_S390_VM_TOD_EXT:1275 case KVM_S390_VM_TOD_EXT:
1264 ret = kvm_s390_set_tod_ext(kvm, attr);1276 ret = kvm_s390_set_tod_ext(kvm, attr);
@@ -1273,6 +1285,9 @@ static int kvm_s390_set_tod(struct kvm *kvm, struct kvm_device_attr *attr) · 8 unmodified lines
1273 ret = -ENXIO;1285 ret = -ENXIO;
1274 break;1286 break;
1275 }1287 }
1288
1289out_unlock:
1290 mutex_unlock(&kvm->lock);
1276 return ret;1291 return ret;
1277}1292}
1278 1293
@@ -4377,13 +4392,6 @@ static void __kvm_s390_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_t · 3098 unmodified lines
4377 preempt_enable();4392 preempt_enable();
4378}4393}
4379 4394
4380void kvm_s390_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod)
4381{
4382 mutex_lock(&kvm->lock);
4383 __kvm_s390_set_tod_clock(kvm, gtod);
4384 mutex_unlock(&kvm->lock);
4385}
4386
4387int kvm_s390_try_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod)4395int kvm_s390_try_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod)
4388{4396{
4389 if (!mutex_trylock(&kvm->lock))4397 if (!mutex_trylock(&kvm->lock))
arch/s390/kvm/kvm-s390.h+0−1
@@ -363,7 +363,6 @@ int kvm_s390_handle_sigp(struct kvm_vcpu *vcpu); · 362 unmodified lines
363int kvm_s390_handle_sigp_pei(struct kvm_vcpu *vcpu);363int kvm_s390_handle_sigp_pei(struct kvm_vcpu *vcpu);
364 364
365/* implemented in kvm-s390.c */365/* implemented in kvm-s390.c */
366void kvm_s390_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod);
367int kvm_s390_try_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod);366int kvm_s390_try_set_tod_clock(struct kvm *kvm, const struct kvm_s390_vm_tod_clock *gtod);
368long kvm_arch_fault_in_page(struct kvm_vcpu *vcpu, gpa_t gpa, int writable);367long kvm_arch_fault_in_page(struct kvm_vcpu *vcpu, gpa_t gpa, int writable);
369int kvm_s390_store_status_unloaded(struct kvm_vcpu *vcpu, unsigned long addr);368int kvm_s390_store_status_unloaded(struct kvm_vcpu *vcpu, unsigned long addr);
arch/s390/kvm/pci.c+1−1
@@ -126,7 +126,7 @@ int kvm_s390_pci_aen_init(u8 nisc) · 125 unmodified lines
126 return -EPERM;126 return -EPERM;
127 127
128 mutex_lock(&aift->aift_lock);128 mutex_lock(&aift->aift_lock);
129 aift->kzdev = kcalloc(ZPCI_NR_DEVICES, sizeof(struct kvm_zdev),129 aift->kzdev = kcalloc(ZPCI_NR_DEVICES, sizeof(struct kvm_zdev *),
130 GFP_KERNEL);130 GFP_KERNEL);
131 if (!aift->kzdev) {131 if (!aift->kzdev) {
132 rc = -ENOMEM;132 rc = -ENOMEM;
arch/x86/hyperv/hv_init.c+10−9
@@ -444,7 +444,7 @@ void __init hyperv_init(void) · 443 unmodified lines
444 444
445 if (hv_root_partition) {445 if (hv_root_partition) {
446 struct page *pg;446 struct page *pg;
447 void *src, *dst;447 void *src;
448 448
449 /*449 /*
450 * For the root partition, the hypervisor will set up its450 * For the root partition, the hypervisor will set up its
@@ -459,13 +459,11 @@ void __init hyperv_init(void) · 8 unmodified lines
459 wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);459 wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
460 460
461 pg = vmalloc_to_page(hv_hypercall_pg);461 pg = vmalloc_to_page(hv_hypercall_pg);
462 dst = kmap_local_page(pg);
463 src = memremap(hypercall_msr.guest_physical_address << PAGE_SHIFT, PAGE_SIZE,462 src = memremap(hypercall_msr.guest_physical_address << PAGE_SHIFT, PAGE_SIZE,
464 MEMREMAP_WB);463 MEMREMAP_WB);
465 BUG_ON(!(src && dst));464 BUG_ON(!src);
466 memcpy(dst, src, HV_HYP_PAGE_SIZE);465 memcpy_to_page(pg, 0, src, HV_HYP_PAGE_SIZE);
467 memunmap(src);466 memunmap(src);
468 kunmap_local(dst);
469 } else {467 } else {
470 hypercall_msr.guest_physical_address = vmalloc_to_pfn(hv_hypercall_pg);468 hypercall_msr.guest_physical_address = vmalloc_to_pfn(hv_hypercall_pg);
471 wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);469 wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
@@ -537,6 +535,7 @@ common_free: · 65 unmodified lines
537void hyperv_cleanup(void)535void hyperv_cleanup(void)
538{536{
539 union hv_x64_msr_hypercall_contents hypercall_msr;537 union hv_x64_msr_hypercall_contents hypercall_msr;
538 union hv_reference_tsc_msr tsc_msr;
540 539
541 unregister_syscore_ops(&hv_syscore_ops);540 unregister_syscore_ops(&hv_syscore_ops);
542 541
@@ -552,12 +551,14 @@ void hyperv_cleanup(void) · 9 unmodified lines
552 hv_hypercall_pg = NULL;551 hv_hypercall_pg = NULL;
553 552
554 /* Reset the hypercall page */553 /* Reset the hypercall page */
555 hypercall_msr.as_uint64 = 0;554 hypercall_msr.as_uint64 = hv_get_register(HV_X64_MSR_HYPERCALL);
556 wrmsrl(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);555 hypercall_msr.enable = 0;
556 hv_set_register(HV_X64_MSR_HYPERCALL, hypercall_msr.as_uint64);
557 557
558 /* Reset the TSC page */558 /* Reset the TSC page */
559 hypercall_msr.as_uint64 = 0;559 tsc_msr.as_uint64 = hv_get_register(HV_X64_MSR_REFERENCE_TSC);
560 wrmsrl(HV_X64_MSR_REFERENCE_TSC, hypercall_msr.as_uint64);560 tsc_msr.enable = 0;
561 hv_set_register(HV_X64_MSR_REFERENCE_TSC, tsc_msr.as_uint64);
561}562}
562 563
563void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die)564void hyperv_report_panic(struct pt_regs *regs, long err, bool in_die)
arch/x86/include/asm/kvm_host.h+6−1
@@ -501,7 +501,12 @@ struct kvm_pmc { · 500 unmodified lines
501 bool intr;501 bool intr;
502};502};
503 503
504/* More counters may conflict with other existing Architectural MSRs */
505#define KVM_INTEL_PMC_MAX_GENERIC 8
506#define MSR_ARCH_PERFMON_PERFCTR_MAX (MSR_ARCH_PERFMON_PERFCTR0 + KVM_INTEL_PMC_MAX_GENERIC - 1)
507#define MSR_ARCH_PERFMON_EVENTSEL_MAX (MSR_ARCH_PERFMON_EVENTSEL0 + KVM_INTEL_PMC_MAX_GENERIC - 1)
504#define KVM_PMC_MAX_FIXED 3508#define KVM_PMC_MAX_FIXED 3
509#define KVM_AMD_PMC_MAX_GENERIC 6
505struct kvm_pmu {510struct kvm_pmu {
506 unsigned nr_arch_gp_counters;511 unsigned nr_arch_gp_counters;
507 unsigned nr_arch_fixed_counters;512 unsigned nr_arch_fixed_counters;
@@ -516,7 +521,7 @@ struct kvm_pmu { · 8 unmodified lines
516 u64 reserved_bits;521 u64 reserved_bits;
517 u64 raw_event_mask;522 u64 raw_event_mask;
518 u8 version;523 u8 version;
519 struct kvm_pmc gp_counters[INTEL_PMC_MAX_GENERIC];524 struct kvm_pmc gp_counters[KVM_INTEL_PMC_MAX_GENERIC];
520 struct kvm_pmc fixed_counters[KVM_PMC_MAX_FIXED];525 struct kvm_pmc fixed_counters[KVM_PMC_MAX_FIXED];
521 struct irq_work irq_work;526 struct irq_work irq_work;
522 DECLARE_BITMAP(reprogram_pmi, X86_PMC_IDX_MAX);527 DECLARE_BITMAP(reprogram_pmi, X86_PMC_IDX_MAX);
arch/x86/include/asm/spec-ctrl.h+5−5
@@ -13,7 +13,7 @@ · 12 unmodified lines
13 * Takes the guest view of SPEC_CTRL MSR as a parameter and also13 * Takes the guest view of SPEC_CTRL MSR as a parameter and also
14 * the guest's version of VIRT_SPEC_CTRL, if emulated.14 * the guest's version of VIRT_SPEC_CTRL, if emulated.
15 */15 */
16extern void x86_virt_spec_ctrl(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl, bool guest);16extern void x86_virt_spec_ctrl(u64 guest_virt_spec_ctrl, bool guest);
17 17
18/**18/**
19 * x86_spec_ctrl_set_guest - Set speculation control registers for the guest19 * x86_spec_ctrl_set_guest - Set speculation control registers for the guest
@@ -24,9 +24,9 @@ extern void x86_virt_spec_ctrl(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl, bo · 4 unmodified lines
24 * Avoids writing to the MSR if the content/bits are the same24 * Avoids writing to the MSR if the content/bits are the same
25 */25 */
26static inline26static inline
27void x86_spec_ctrl_set_guest(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl)27void x86_spec_ctrl_set_guest(u64 guest_virt_spec_ctrl)
28{28{
29 x86_virt_spec_ctrl(guest_spec_ctrl, guest_virt_spec_ctrl, true);29 x86_virt_spec_ctrl(guest_virt_spec_ctrl, true);
30}30}
31 31
32/**32/**
@@ -38,9 +38,9 @@ void x86_spec_ctrl_set_guest(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl) · 5 unmodified lines
38 * Avoids writing to the MSR if the content/bits are the same38 * Avoids writing to the MSR if the content/bits are the same
39 */39 */
40static inline40static inline
41void x86_spec_ctrl_restore_host(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl)41void x86_spec_ctrl_restore_host(u64 guest_virt_spec_ctrl)
42{42{
43 x86_virt_spec_ctrl(guest_spec_ctrl, guest_virt_spec_ctrl, false);43 x86_virt_spec_ctrl(guest_virt_spec_ctrl, false);
44}44}
45 45
46/* AMD specific Speculative Store Bypass MSR data */46/* AMD specific Speculative Store Bypass MSR data */
arch/x86/kernel/asm-offsets.c+0−6
@@ -19,7 +19,6 @@ · 18 unmodified lines
19#include <asm/suspend.h>19#include <asm/suspend.h>
20#include <asm/tlbflush.h>20#include <asm/tlbflush.h>
21#include <asm/tdx.h>21#include <asm/tdx.h>
22#include "../kvm/vmx/vmx.h"
23 22
24#ifdef CONFIG_XEN23#ifdef CONFIG_XEN
25#include <xen/interface/xen.h>24#include <xen/interface/xen.h>
@@ -108,9 +107,4 @@ static void __used common(void) · 82 unmodified lines
108 OFFSET(TSS_sp0, tss_struct, x86_tss.sp0);107 OFFSET(TSS_sp0, tss_struct, x86_tss.sp0);
109 OFFSET(TSS_sp1, tss_struct, x86_tss.sp1);108 OFFSET(TSS_sp1, tss_struct, x86_tss.sp1);
110 OFFSET(TSS_sp2, tss_struct, x86_tss.sp2);109 OFFSET(TSS_sp2, tss_struct, x86_tss.sp2);
111
112 if (IS_ENABLED(CONFIG_KVM_INTEL)) {
113 BLANK();
114 OFFSET(VMX_spec_ctrl, vcpu_vmx, spec_ctrl);
115 }
116}110}
arch/x86/kernel/cpu/bugs.c+4−11
@@ -196,22 +196,15 @@ void __init check_bugs(void) · 195 unmodified lines
196}196}
197 197
198/*198/*
199 * NOTE: This function is *only* called for SVM. VMX spec_ctrl handling is199 * NOTE: This function is *only* called for SVM, since Intel uses
200 * done in vmenter.S.200 * MSR_IA32_SPEC_CTRL for SSBD.
201 */201 */
202void202void
203x86_virt_spec_ctrl(u64 guest_spec_ctrl, u64 guest_virt_spec_ctrl, bool setguest)203x86_virt_spec_ctrl(u64 guest_virt_spec_ctrl, bool setguest)
204{204{
205 u64 msrval, guestval = guest_spec_ctrl, hostval = spec_ctrl_current();205 u64 guestval, hostval;
206 struct thread_info *ti = current_thread_info();206 struct thread_info *ti = current_thread_info();
207 207
208 if (static_cpu_has(X86_FEATURE_MSR_SPEC_CTRL)) {
209 if (hostval != guestval) {
210 msrval = setguest ? guestval : hostval;
211 wrmsrl(MSR_IA32_SPEC_CTRL, msrval);
212 }
213 }
214
215 /*208 /*
216 * If SSBD is not handled in MSR_SPEC_CTRL on AMD, update209 * If SSBD is not handled in MSR_SPEC_CTRL on AMD, update
217 * MSR_AMD64_L2_CFG or MSR_VIRT_SPEC_CTRL if supported.210 * MSR_AMD64_L2_CFG or MSR_VIRT_SPEC_CTRL if supported.
arch/x86/kernel/traps.c+7−0
@@ -15,6 +15,7 @@ · 14 unmodified lines
15#include <linux/context_tracking.h>15#include <linux/context_tracking.h>
16#include <linux/interrupt.h>16#include <linux/interrupt.h>
17#include <linux/kallsyms.h>17#include <linux/kallsyms.h>
18#include <linux/kmsan.h>
18#include <linux/spinlock.h>19#include <linux/spinlock.h>
19#include <linux/kprobes.h>20#include <linux/kprobes.h>
20#include <linux/uaccess.h>21#include <linux/uaccess.h>
@@ -301,6 +302,12 @@ static noinstr bool handle_bug(struct pt_regs *regs) · 280 unmodified lines
301{302{
302 bool handled = false;303 bool handled = false;
303 304
305 /*
306 * Normally @regs are unpoisoned by irqentry_enter(), but handle_bug()
307 * is a rare case that uses @regs without passing them to
308 * irqentry_enter().
309 */
310 kmsan_unpoison_entry_regs(regs);
304 if (!is_valid_bugaddr(regs->ip))311 if (!is_valid_bugaddr(regs->ip))
305 return handled;312 return handled;
306 313
arch/x86/kvm/.gitignore+2−0
@@ -0,0 +1,2 @@
1/kvm-asm-offsets.s
2/kvm-asm-offsets.h
arch/x86/kvm/Makefile+12−0
@@ -34,3 +34,15 @@ endif · 33 unmodified lines
34obj-$(CONFIG_KVM) += kvm.o34obj-$(CONFIG_KVM) += kvm.o
35obj-$(CONFIG_KVM_INTEL) += kvm-intel.o35obj-$(CONFIG_KVM_INTEL) += kvm-intel.o
36obj-$(CONFIG_KVM_AMD) += kvm-amd.o36obj-$(CONFIG_KVM_AMD) += kvm-amd.o
37
38AFLAGS_svm/vmenter.o := -iquote $(obj)
39$(obj)/svm/vmenter.o: $(obj)/kvm-asm-offsets.h
40
41AFLAGS_vmx/vmenter.o := -iquote $(obj)
42$(obj)/vmx/vmenter.o: $(obj)/kvm-asm-offsets.h
43
44$(obj)/kvm-asm-offsets.h: $(obj)/kvm-asm-offsets.s FORCE
45 $(call filechk,offsets,__KVM_ASM_OFFSETS_H__)
46
47targets += kvm-asm-offsets.s
48clean-files += kvm-asm-offsets.h
arch/x86/kvm/kvm-asm-offsets.c+29−0
@@ -0,0 +1,29 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Generate definitions needed by assembly language modules.
4 * This code generates raw asm output which is post-processed to extract
5 * and format the required data.
6 */
7#define COMPILE_OFFSETS
8
9#include <linux/kbuild.h>
10#include "vmx/vmx.h"
11#include "svm/svm.h"
12
13static void __used common(void)
14{
15 if (IS_ENABLED(CONFIG_KVM_AMD)) {
16 BLANK();
17 OFFSET(SVM_vcpu_arch_regs, vcpu_svm, vcpu.arch.regs);
18 OFFSET(SVM_current_vmcb, vcpu_svm, current_vmcb);
19 OFFSET(SVM_spec_ctrl, vcpu_svm, spec_ctrl);
20 OFFSET(SVM_vmcb01, vcpu_svm, vmcb01);
21 OFFSET(KVM_VMCB_pa, kvm_vmcb_info, pa);
22 OFFSET(SD_save_area_pa, svm_cpu_data, save_area_pa);
23 }
24
25 if (IS_ENABLED(CONFIG_KVM_INTEL)) {
26 BLANK();
27 OFFSET(VMX_spec_ctrl, vcpu_vmx, spec_ctrl);
28 }
29}
arch/x86/kvm/mmu/mmu.c+2−2
@@ -6056,7 +6056,7 @@ void kvm_zap_gfn_range(struct kvm *kvm, gfn_t gfn_start, gfn_t gfn_end) · 6055 unmodified lines
6056 6056
6057 write_lock(&kvm->mmu_lock);6057 write_lock(&kvm->mmu_lock);
6058 6058
6059 kvm_mmu_invalidate_begin(kvm, gfn_start, gfn_end);6059 kvm_mmu_invalidate_begin(kvm, 0, -1ul);
6060 6060
6061 flush = kvm_rmap_zap_gfn_range(kvm, gfn_start, gfn_end);6061 flush = kvm_rmap_zap_gfn_range(kvm, gfn_start, gfn_end);
6062 6062
@@ -6070,7 +6070,7 @@ void kvm_zap_gfn_range(struct kvm *kvm, gfn_t gfn_start, gfn_t gfn_end) · 7 unmodified lines
6070 kvm_flush_remote_tlbs_with_address(kvm, gfn_start,6070 kvm_flush_remote_tlbs_with_address(kvm, gfn_start,
6071 gfn_end - gfn_start);6071 gfn_end - gfn_start);
6072 6072
6073 kvm_mmu_invalidate_end(kvm, gfn_start, gfn_end);6073 kvm_mmu_invalidate_end(kvm, 0, -1ul);
6074 6074
6075 write_unlock(&kvm->mmu_lock);6075 write_unlock(&kvm->mmu_lock);
6076}6076}
arch/x86/kvm/pmu.c+1−1
@@ -56,7 +56,7 @@ static const struct x86_cpu_id vmx_icl_pebs_cpu[] = { · 55 unmodified lines
56 * code. Each pmc, stored in kvm_pmc.idx field, is unique across56 * code. Each pmc, stored in kvm_pmc.idx field, is unique across
57 * all perf counters (both gp and fixed). The mapping relationship57 * all perf counters (both gp and fixed). The mapping relationship
58 * between pmc and perf counters is as the following:58 * between pmc and perf counters is as the following:
59 * * Intel: [0 .. INTEL_PMC_MAX_GENERIC-1] <=> gp counters59 * * Intel: [0 .. KVM_INTEL_PMC_MAX_GENERIC-1] <=> gp counters
60 * [INTEL_PMC_IDX_FIXED .. INTEL_PMC_IDX_FIXED + 2] <=> fixed60 * [INTEL_PMC_IDX_FIXED .. INTEL_PMC_IDX_FIXED + 2] <=> fixed
61 * * AMD: [0 .. AMD64_NUM_COUNTERS-1] and, for families 15H61 * * AMD: [0 .. AMD64_NUM_COUNTERS-1] and, for families 15H
62 * and later, [0 .. AMD64_NUM_COUNTERS_CORE-1] <=> gp counters62 * and later, [0 .. AMD64_NUM_COUNTERS_CORE-1] <=> gp counters
arch/x86/kvm/svm/pmu.c+4−3
@@ -192,9 +192,10 @@ static void amd_pmu_init(struct kvm_vcpu *vcpu) · 191 unmodified lines
192 struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);192 struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);
193 int i;193 int i;
194 194
195 BUILD_BUG_ON(AMD64_NUM_COUNTERS_CORE > INTEL_PMC_MAX_GENERIC);195 BUILD_BUG_ON(KVM_AMD_PMC_MAX_GENERIC > AMD64_NUM_COUNTERS_CORE);
196 BUILD_BUG_ON(KVM_AMD_PMC_MAX_GENERIC > INTEL_PMC_MAX_GENERIC);
196 197
197 for (i = 0; i < AMD64_NUM_COUNTERS_CORE ; i++) {198 for (i = 0; i < KVM_AMD_PMC_MAX_GENERIC ; i++) {
198 pmu->gp_counters[i].type = KVM_PMC_GP;199 pmu->gp_counters[i].type = KVM_PMC_GP;
199 pmu->gp_counters[i].vcpu = vcpu;200 pmu->gp_counters[i].vcpu = vcpu;
200 pmu->gp_counters[i].idx = i;201 pmu->gp_counters[i].idx = i;
@@ -207,7 +208,7 @@ static void amd_pmu_reset(struct kvm_vcpu *vcpu) · 6 unmodified lines
207 struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);208 struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);
208 int i;209 int i;
209 210
210 for (i = 0; i < AMD64_NUM_COUNTERS_CORE; i++) {211 for (i = 0; i < KVM_AMD_PMC_MAX_GENERIC; i++) {
211 struct kvm_pmc *pmc = &pmu->gp_counters[i];212 struct kvm_pmc *pmc = &pmu->gp_counters[i];
212 213
213 pmc_stop_counter(pmc);214 pmc_stop_counter(pmc);
arch/x86/kvm/svm/sev.c+3−3
@@ -196,7 +196,7 @@ static void sev_asid_free(struct kvm_sev_info *sev) · 195 unmodified lines
196 __set_bit(sev->asid, sev_reclaim_asid_bitmap);196 __set_bit(sev->asid, sev_reclaim_asid_bitmap);
197 197
198 for_each_possible_cpu(cpu) {198 for_each_possible_cpu(cpu) {
199 sd = per_cpu(svm_data, cpu);199 sd = per_cpu_ptr(&svm_data, cpu);
200 sd->sev_vmcbs[sev->asid] = NULL;200 sd->sev_vmcbs[sev->asid] = NULL;
201 }201 }
202 202
@@ -605,7 +605,7 @@ static int sev_es_sync_vmsa(struct vcpu_svm *svm) · 402 unmodified lines
605 save->dr6 = svm->vcpu.arch.dr6;605 save->dr6 = svm->vcpu.arch.dr6;
606 606
607 pr_debug("Virtual Machine Save Area (VMSA):\n");607 pr_debug("Virtual Machine Save Area (VMSA):\n");
608 print_hex_dump(KERN_CONT, "", DUMP_PREFIX_NONE, 16, 1, save, sizeof(*save), false);608 print_hex_dump_debug("", DUMP_PREFIX_NONE, 16, 1, save, sizeof(*save), false);
609 609
610 return 0;610 return 0;
611}611}
@@ -2600,7 +2600,7 @@ void sev_es_unmap_ghcb(struct vcpu_svm *svm) · 1988 unmodified lines
2600 2600
2601void pre_sev_run(struct vcpu_svm *svm, int cpu)2601void pre_sev_run(struct vcpu_svm *svm, int cpu)
2602{2602{
2603 struct svm_cpu_data *sd = per_cpu(svm_data, cpu);2603 struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, cpu);
2604 int asid = sev_get_asid(svm->vcpu.kvm);2604 int asid = sev_get_asid(svm->vcpu.kvm);
2605 2605
2606 /* Assign the asid allocated with this SEV guest */2606 /* Assign the asid allocated with this SEV guest */
arch/x86/kvm/svm/svm.c+36−69
@@ -245,7 +245,7 @@ struct kvm_ldttss_desc { · 244 unmodified lines
245 u32 zero1;245 u32 zero1;
246} __attribute__((packed));246} __attribute__((packed));
247 247
248DEFINE_PER_CPU(struct svm_cpu_data *, svm_data);248DEFINE_PER_CPU(struct svm_cpu_data, svm_data);
249 249
250/*250/*
251 * Only MSR_TSC_AUX is switched via the user return hook. EFER is switched via251 * Only MSR_TSC_AUX is switched via the user return hook. EFER is switched via
@@ -581,12 +581,7 @@ static int svm_hardware_enable(void) · 329 unmodified lines
581 pr_err("%s: err EOPNOTSUPP on %d\n", __func__, me);581 pr_err("%s: err EOPNOTSUPP on %d\n", __func__, me);
582 return -EINVAL;582 return -EINVAL;
583 }583 }
584 sd = per_cpu(svm_data, me);584 sd = per_cpu_ptr(&svm_data, me);
585 if (!sd) {
586 pr_err("%s: svm_data is NULL on %d\n", __func__, me);
587 return -EINVAL;
588 }
589
590 sd->asid_generation = 1;585 sd->asid_generation = 1;
591 sd->max_asid = cpuid_ebx(SVM_CPUID_FUNC) - 1;586 sd->max_asid = cpuid_ebx(SVM_CPUID_FUNC) - 1;
592 sd->next_asid = sd->max_asid + 1;587 sd->next_asid = sd->max_asid + 1;
@@ -597,7 +592,7 @@ static int svm_hardware_enable(void) · 4 unmodified lines
597 592
598 wrmsrl(MSR_EFER, efer | EFER_SVME);593 wrmsrl(MSR_EFER, efer | EFER_SVME);
599 594
600 wrmsrl(MSR_VM_HSAVE_PA, __sme_page_pa(sd->save_area));595 wrmsrl(MSR_VM_HSAVE_PA, sd->save_area_pa);
601 596
602 if (static_cpu_has(X86_FEATURE_TSCRATEMSR)) {597 if (static_cpu_has(X86_FEATURE_TSCRATEMSR)) {
603 /*598 /*
@@ -646,42 +641,37 @@ static int svm_hardware_enable(void) · 42 unmodified lines
646 641
647static void svm_cpu_uninit(int cpu)642static void svm_cpu_uninit(int cpu)
648{643{
649 struct svm_cpu_data *sd = per_cpu(svm_data, cpu);644 struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, cpu);
650 645
651 if (!sd)646 if (!sd->save_area)
652 return;647 return;
653 648
654 per_cpu(svm_data, cpu) = NULL;
655 kfree(sd->sev_vmcbs);649 kfree(sd->sev_vmcbs);
656 __free_page(sd->save_area);650 __free_page(sd->save_area);
657 kfree(sd);651 sd->save_area_pa = 0;
652 sd->save_area = NULL;
658}653}
659 654
660static int svm_cpu_init(int cpu)655static int svm_cpu_init(int cpu)
661{656{
662 struct svm_cpu_data *sd;657 struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, cpu);
663 int ret = -ENOMEM;658 int ret = -ENOMEM;
664 659
665 sd = kzalloc(sizeof(struct svm_cpu_data), GFP_KERNEL);660 memset(sd, 0, sizeof(struct svm_cpu_data));
666 if (!sd)
667 return ret;
668 sd->cpu = cpu;
669 sd->save_area = alloc_page(GFP_KERNEL | __GFP_ZERO);661 sd->save_area = alloc_page(GFP_KERNEL | __GFP_ZERO);
670 if (!sd->save_area)662 if (!sd->save_area)
671 goto free_cpu_data;663 return ret;
672 664
673 ret = sev_cpu_init(sd);665 ret = sev_cpu_init(sd);
674 if (ret)666 if (ret)
675 goto free_save_area;667 goto free_save_area;
676 668
677 per_cpu(svm_data, cpu) = sd;669 sd->save_area_pa = __sme_page_pa(sd->save_area);
678
679 return 0;670 return 0;
680 671
681free_save_area:672free_save_area:
682 __free_page(sd->save_area);673 __free_page(sd->save_area);
683free_cpu_data:674 sd->save_area = NULL;
684 kfree(sd);
685 return ret;675 return ret;
686 676
687}677}
@@ -730,6 +720,15 @@ static bool msr_write_intercepted(struct kvm_vcpu *vcpu, u32 msr) · 42 unmodified lines
730 u32 offset;720 u32 offset;
731 u32 *msrpm;721 u32 *msrpm;
732 722
723 /*
724 * For non-nested case:
725 * If the L01 MSR bitmap does not intercept the MSR, then we need to
726 * save it.
727 *
728 * For nested case:
729 * If the L02 MSR bitmap does not intercept the MSR, then we need to
730 * save it.
731 */
733 msrpm = is_guest_mode(vcpu) ? to_svm(vcpu)->nested.msrpm:732 msrpm = is_guest_mode(vcpu) ? to_svm(vcpu)->nested.msrpm:
734 to_svm(vcpu)->msrpm;733 to_svm(vcpu)->msrpm;
735 734
@@ -1425,7 +1424,7 @@ static void svm_clear_current_vmcb(struct vmcb *vmcb) · 689 unmodified lines
1425 int i;1424 int i;
1426 1425
1427 for_each_online_cpu(i)1426 for_each_online_cpu(i)
1428 cmpxchg(&per_cpu(svm_data, i)->current_vmcb, vmcb, NULL);1427 cmpxchg(per_cpu_ptr(&svm_data.current_vmcb, i), vmcb, NULL);
1429}1428}
1430 1429
1431static void svm_vcpu_free(struct kvm_vcpu *vcpu)1430static void svm_vcpu_free(struct kvm_vcpu *vcpu)
@@ -1450,7 +1449,7 @@ static void svm_vcpu_free(struct kvm_vcpu *vcpu) · 18 unmodified lines
1450static void svm_prepare_switch_to_guest(struct kvm_vcpu *vcpu)1449static void svm_prepare_switch_to_guest(struct kvm_vcpu *vcpu)
1451{1450{
1452 struct vcpu_svm *svm = to_svm(vcpu);1451 struct vcpu_svm *svm = to_svm(vcpu);
1453 struct svm_cpu_data *sd = per_cpu(svm_data, vcpu->cpu);1452 struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, vcpu->cpu);
1454 1453
1455 if (sev_es_guest(vcpu->kvm))1454 if (sev_es_guest(vcpu->kvm))
1456 sev_es_unmap_ghcb(svm);1455 sev_es_unmap_ghcb(svm);
@@ -1462,7 +1461,7 @@ static void svm_prepare_switch_to_guest(struct kvm_vcpu *vcpu) · 5 unmodified lines
1462 * Save additional host state that will be restored on VMEXIT (sev-es)1461 * Save additional host state that will be restored on VMEXIT (sev-es)
1463 * or subsequent vmload of host save area.1462 * or subsequent vmload of host save area.
1464 */1463 */
1465 vmsave(__sme_page_pa(sd->save_area));1464 vmsave(sd->save_area_pa);
1466 if (sev_es_guest(vcpu->kvm)) {1465 if (sev_es_guest(vcpu->kvm)) {
1467 struct sev_es_save_area *hostsa;1466 struct sev_es_save_area *hostsa;
1468 hostsa = (struct sev_es_save_area *)(page_address(sd->save_area) + 0x400);1467 hostsa = (struct sev_es_save_area *)(page_address(sd->save_area) + 0x400);
@@ -1487,7 +1486,7 @@ static void svm_prepare_host_switch(struct kvm_vcpu *vcpu) · 18 unmodified lines
1487static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu)1486static void svm_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
1488{1487{
1489 struct vcpu_svm *svm = to_svm(vcpu);1488 struct vcpu_svm *svm = to_svm(vcpu);
1490 struct svm_cpu_data *sd = per_cpu(svm_data, cpu);1489 struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, cpu);
1491 1490
1492 if (sd->current_vmcb != svm->vmcb) {1491 if (sd->current_vmcb != svm->vmcb) {
1493 sd->current_vmcb = svm->vmcb;1492 sd->current_vmcb = svm->vmcb;
@@ -3443,7 +3442,7 @@ static int svm_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath) · 1949 unmodified lines
3443 3442
3444static void reload_tss(struct kvm_vcpu *vcpu)3443static void reload_tss(struct kvm_vcpu *vcpu)
3445{3444{
3446 struct svm_cpu_data *sd = per_cpu(svm_data, vcpu->cpu);3445 struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, vcpu->cpu);
3447 3446
3448 sd->tss_desc->type = 9; /* available 32/64-bit TSS */3447 sd->tss_desc->type = 9; /* available 32/64-bit TSS */
3449 load_TR_desc();3448 load_TR_desc();
@@ -3451,7 +3450,7 @@ static void reload_tss(struct kvm_vcpu *vcpu) · 1 unmodified line
3451 3450
3452static void pre_svm_run(struct kvm_vcpu *vcpu)3451static void pre_svm_run(struct kvm_vcpu *vcpu)
3453{3452{
3454 struct svm_cpu_data *sd = per_cpu(svm_data, vcpu->cpu);3453 struct svm_cpu_data *sd = per_cpu_ptr(&svm_data, vcpu->cpu);
3455 struct vcpu_svm *svm = to_svm(vcpu);3454 struct vcpu_svm *svm = to_svm(vcpu);
3456 3455
3457 /*3456 /*
@@ -3911,30 +3910,16 @@ static fastpath_t svm_exit_handlers_fastpath(struct kvm_vcpu *vcpu) · 453 unmodified lines
3911 return EXIT_FASTPATH_NONE;3910 return EXIT_FASTPATH_NONE;
3912}3911}
3913 3912
3914static noinstr void svm_vcpu_enter_exit(struct kvm_vcpu *vcpu)3913static noinstr void svm_vcpu_enter_exit(struct kvm_vcpu *vcpu, bool spec_ctrl_intercepted)
3915{3914{
3916 struct vcpu_svm *svm = to_svm(vcpu);3915 struct vcpu_svm *svm = to_svm(vcpu);
3917 unsigned long vmcb_pa = svm->current_vmcb->pa;
3918 3916
3919 guest_state_enter_irqoff();3917 guest_state_enter_irqoff();
3920 3918
3921 if (sev_es_guest(vcpu->kvm)) {3919 if (sev_es_guest(vcpu->kvm))
3922 __svm_sev_es_vcpu_run(vmcb_pa);3920 __svm_sev_es_vcpu_run(svm, spec_ctrl_intercepted);
3923 } else {3921 else
3924 struct svm_cpu_data *sd = per_cpu(svm_data, vcpu->cpu);3922 __svm_vcpu_run(svm, spec_ctrl_intercepted);
3925
3926 /*
3927 * Use a single vmcb (vmcb01 because it's always valid) for
3928 * context switching guest state via VMLOAD/VMSAVE, that way
3929 * the state doesn't need to be copied between vmcb01 and
3930 * vmcb02 when switching vmcbs for nested virtualization.
3931 */
3932 vmload(svm->vmcb01.pa);
3933 __svm_vcpu_run(vmcb_pa, (unsigned long *)&vcpu->arch.regs);
3934 vmsave(svm->vmcb01.pa);
3935
3936 vmload(__sme_page_pa(sd->save_area));
3937 }
3938 3923
3939 guest_state_exit_irqoff();3924 guest_state_exit_irqoff();
3940}3925}
@@ -3942,6 +3927,7 @@ static noinstr void svm_vcpu_enter_exit(struct kvm_vcpu *vcpu) · 1 unmodified line
3942static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu)3927static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu)
3943{3928{
3944 struct vcpu_svm *svm = to_svm(vcpu);3929 struct vcpu_svm *svm = to_svm(vcpu);
3930 bool spec_ctrl_intercepted = msr_write_intercepted(vcpu, MSR_IA32_SPEC_CTRL);
3945 3931
3946 trace_kvm_entry(vcpu);3932 trace_kvm_entry(vcpu);
3947 3933
@@ -3998,34 +3984,15 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu) · 50 unmodified lines
3998 * being speculatively taken.3984 * being speculatively taken.
3999 */3985 */
4000 if (!static_cpu_has(X86_FEATURE_V_SPEC_CTRL))3986 if (!static_cpu_has(X86_FEATURE_V_SPEC_CTRL))
4001 x86_spec_ctrl_set_guest(svm->spec_ctrl, svm->virt_spec_ctrl);3987 x86_spec_ctrl_set_guest(svm->virt_spec_ctrl);
4002 3988
4003 svm_vcpu_enter_exit(vcpu);3989 svm_vcpu_enter_exit(vcpu, spec_ctrl_intercepted);
4004
4005 /*
4006 * We do not use IBRS in the kernel. If this vCPU has used the
4007 * SPEC_CTRL MSR it may have left it on; save the value and
4008 * turn it off. This is much more efficient than blindly adding
4009 * it to the atomic save/restore list. Especially as the former
4010 * (Saving guest MSRs on vmexit) doesn't even exist in KVM.
4011 *
4012 * For non-nested case:
4013 * If the L01 MSR bitmap does not intercept the MSR, then we need to
4014 * save it.
4015 *
4016 * For nested case:
4017 * If the L02 MSR bitmap does not intercept the MSR, then we need to
4018 * save it.
4019 */
4020 if (!static_cpu_has(X86_FEATURE_V_SPEC_CTRL) &&
4021 unlikely(!msr_write_intercepted(vcpu, MSR_IA32_SPEC_CTRL)))
4022 svm->spec_ctrl = native_read_msr(MSR_IA32_SPEC_CTRL);
4023 3990
4024 if (!sev_es_guest(vcpu->kvm))3991 if (!sev_es_guest(vcpu->kvm))
4025 reload_tss(vcpu);3992 reload_tss(vcpu);
4026 3993
4027 if (!static_cpu_has(X86_FEATURE_V_SPEC_CTRL))3994 if (!static_cpu_has(X86_FEATURE_V_SPEC_CTRL))
4028 x86_spec_ctrl_restore_host(svm->spec_ctrl, svm->virt_spec_ctrl);3995 x86_spec_ctrl_restore_host(svm->virt_spec_ctrl);
4029 3996
4030 if (!sev_es_guest(vcpu->kvm)) {3997 if (!sev_es_guest(vcpu->kvm)) {
4031 vcpu->arch.cr2 = svm->vmcb->save.cr2;3998 vcpu->arch.cr2 = svm->vmcb->save.cr2;
arch/x86/kvm/svm/svm.h+5−6
@@ -209,7 +209,6 @@ struct vcpu_svm { · 208 unmodified lines
209 struct vmcb *vmcb;209 struct vmcb *vmcb;
210 struct kvm_vmcb_info vmcb01;210 struct kvm_vmcb_info vmcb01;
211 struct kvm_vmcb_info *current_vmcb;211 struct kvm_vmcb_info *current_vmcb;
212 struct svm_cpu_data *svm_data;
213 u32 asid;212 u32 asid;
214 u32 sysenter_esp_hi;213 u32 sysenter_esp_hi;
215 u32 sysenter_eip_hi;214 u32 sysenter_eip_hi;
@@ -281,8 +280,6 @@ struct vcpu_svm { · 65 unmodified lines
281};280};
282 281
283struct svm_cpu_data {282struct svm_cpu_data {
284 int cpu;
285
286 u64 asid_generation;283 u64 asid_generation;
287 u32 max_asid;284 u32 max_asid;
288 u32 next_asid;285 u32 next_asid;
@@ -290,13 +287,15 @@ struct svm_cpu_data { · 1 unmodified line
290 struct kvm_ldttss_desc *tss_desc;287 struct kvm_ldttss_desc *tss_desc;
291 288
292 struct page *save_area;289 struct page *save_area;
290 unsigned long save_area_pa;
291
293 struct vmcb *current_vmcb;292 struct vmcb *current_vmcb;
294 293
295 /* index = sev_asid, value = vmcb pointer */294 /* index = sev_asid, value = vmcb pointer */
296 struct vmcb **sev_vmcbs;295 struct vmcb **sev_vmcbs;
297};296};
298 297
299DECLARE_PER_CPU(struct svm_cpu_data *, svm_data);298DECLARE_PER_CPU(struct svm_cpu_data, svm_data);
300 299
301void recalc_intercepts(struct vcpu_svm *svm);300void recalc_intercepts(struct vcpu_svm *svm);
302 301
@@ -683,7 +682,7 @@ void sev_es_unmap_ghcb(struct vcpu_svm *svm); · 380 unmodified lines
683 682
684/* vmenter.S */683/* vmenter.S */
685 684
686void __svm_sev_es_vcpu_run(unsigned long vmcb_pa);685void __svm_sev_es_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted);
687void __svm_vcpu_run(unsigned long vmcb_pa, unsigned long *regs);686void __svm_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted);
688 687
689#endif688#endif
arch/x86/kvm/svm/svm_ops.h+0−5
@@ -61,9 +61,4 @@ static __always_inline void vmsave(unsigned long pa) · 60 unmodified lines
61 svm_asm1(vmsave, "a" (pa), "memory");61 svm_asm1(vmsave, "a" (pa), "memory");
62}62}
63 63
64static __always_inline void vmload(unsigned long pa)
65{
66 svm_asm1(vmload, "a" (pa), "memory");
67}
68
69#endif /* __KVM_X86_SVM_OPS_H */64#endif /* __KVM_X86_SVM_OPS_H */
arch/x86/kvm/svm/vmenter.S+209−51
@@ -4,35 +4,97 @@ · 3 unmodified lines
4#include <asm/bitsperlong.h>4#include <asm/bitsperlong.h>
5#include <asm/kvm_vcpu_regs.h>5#include <asm/kvm_vcpu_regs.h>
6#include <asm/nospec-branch.h>6#include <asm/nospec-branch.h>
7#include "kvm-asm-offsets.h"
7 8
8#define WORD_SIZE (BITS_PER_LONG / 8)9#define WORD_SIZE (BITS_PER_LONG / 8)
9 10
10/* Intentionally omit RAX as it's context switched by hardware */11/* Intentionally omit RAX as it's context switched by hardware */
11#define VCPU_RCX __VCPU_REGS_RCX * WORD_SIZE12#define VCPU_RCX (SVM_vcpu_arch_regs + __VCPU_REGS_RCX * WORD_SIZE)
12#define VCPU_RDX __VCPU_REGS_RDX * WORD_SIZE13#define VCPU_RDX (SVM_vcpu_arch_regs + __VCPU_REGS_RDX * WORD_SIZE)
13#define VCPU_RBX __VCPU_REGS_RBX * WORD_SIZE14#define VCPU_RBX (SVM_vcpu_arch_regs + __VCPU_REGS_RBX * WORD_SIZE)
14/* Intentionally omit RSP as it's context switched by hardware */15/* Intentionally omit RSP as it's context switched by hardware */
15#define VCPU_RBP __VCPU_REGS_RBP * WORD_SIZE16#define VCPU_RBP (SVM_vcpu_arch_regs + __VCPU_REGS_RBP * WORD_SIZE)
16#define VCPU_RSI __VCPU_REGS_RSI * WORD_SIZE17#define VCPU_RSI (SVM_vcpu_arch_regs + __VCPU_REGS_RSI * WORD_SIZE)
17#define VCPU_RDI __VCPU_REGS_RDI * WORD_SIZE18#define VCPU_RDI (SVM_vcpu_arch_regs + __VCPU_REGS_RDI * WORD_SIZE)
18 19
19#ifdef CONFIG_X86_6420#ifdef CONFIG_X86_64
20#define VCPU_R8 __VCPU_REGS_R8 * WORD_SIZE21#define VCPU_R8 (SVM_vcpu_arch_regs + __VCPU_REGS_R8 * WORD_SIZE)
21#define VCPU_R9 __VCPU_REGS_R9 * WORD_SIZE22#define VCPU_R9 (SVM_vcpu_arch_regs + __VCPU_REGS_R9 * WORD_SIZE)
22#define VCPU_R10 __VCPU_REGS_R10 * WORD_SIZE23#define VCPU_R10 (SVM_vcpu_arch_regs + __VCPU_REGS_R10 * WORD_SIZE)
23#define VCPU_R11 __VCPU_REGS_R11 * WORD_SIZE24#define VCPU_R11 (SVM_vcpu_arch_regs + __VCPU_REGS_R11 * WORD_SIZE)
24#define VCPU_R12 __VCPU_REGS_R12 * WORD_SIZE25#define VCPU_R12 (SVM_vcpu_arch_regs + __VCPU_REGS_R12 * WORD_SIZE)
25#define VCPU_R13 __VCPU_REGS_R13 * WORD_SIZE26#define VCPU_R13 (SVM_vcpu_arch_regs + __VCPU_REGS_R13 * WORD_SIZE)
26#define VCPU_R14 __VCPU_REGS_R14 * WORD_SIZE27#define VCPU_R14 (SVM_vcpu_arch_regs + __VCPU_REGS_R14 * WORD_SIZE)
27#define VCPU_R15 __VCPU_REGS_R15 * WORD_SIZE28#define VCPU_R15 (SVM_vcpu_arch_regs + __VCPU_REGS_R15 * WORD_SIZE)
28#endif29#endif
29 30
31#define SVM_vmcb01_pa (SVM_vmcb01 + KVM_VMCB_pa)
32
30.section .noinstr.text, "ax"33.section .noinstr.text, "ax"
31 34
35.macro RESTORE_GUEST_SPEC_CTRL
36 /* No need to do anything if SPEC_CTRL is unset or V_SPEC_CTRL is set */
37 ALTERNATIVE_2 "", \
38 "jmp 800f", X86_FEATURE_MSR_SPEC_CTRL, \
39 "", X86_FEATURE_V_SPEC_CTRL
40801:
41.endm
42.macro RESTORE_GUEST_SPEC_CTRL_BODY
43800:
44 /*
45 * SPEC_CTRL handling: if the guest's SPEC_CTRL value differs from the
46 * host's, write the MSR. This is kept out-of-line so that the common
47 * case does not have to jump.
48 *
49 * IMPORTANT: To avoid RSB underflow attacks and any other nastiness,
50 * there must not be any returns or indirect branches between this code
51 * and vmentry.
52 */
53 movl SVM_spec_ctrl(%_ASM_DI), %eax
54 cmp PER_CPU_VAR(x86_spec_ctrl_current), %eax
55 je 801b
56 mov $MSR_IA32_SPEC_CTRL, %ecx
57 xor %edx, %edx
58 wrmsr
59 jmp 801b
60.endm
61
62.macro RESTORE_HOST_SPEC_CTRL
63 /* No need to do anything if SPEC_CTRL is unset or V_SPEC_CTRL is set */
64 ALTERNATIVE_2 "", \
65 "jmp 900f", X86_FEATURE_MSR_SPEC_CTRL, \
66 "", X86_FEATURE_V_SPEC_CTRL
67901:
68.endm
69.macro RESTORE_HOST_SPEC_CTRL_BODY
70900:
71 /* Same for after vmexit. */
72 mov $MSR_IA32_SPEC_CTRL, %ecx
73
74 /*
75 * Load the value that the guest had written into MSR_IA32_SPEC_CTRL,
76 * if it was not intercepted during guest execution.
77 */
78 cmpb $0, (%_ASM_SP)
79 jnz 998f
80 rdmsr
81 movl %eax, SVM_spec_ctrl(%_ASM_DI)
82998:
83
84 /* Now restore the host value of the MSR if different from the guest's. */
85 movl PER_CPU_VAR(x86_spec_ctrl_current), %eax
86 cmp SVM_spec_ctrl(%_ASM_DI), %eax
87 je 901b
88 xor %edx, %edx
89 wrmsr
90 jmp 901b
91.endm
92
93
32/**94/**
33 * __svm_vcpu_run - Run a vCPU via a transition to SVM guest mode95 * __svm_vcpu_run - Run a vCPU via a transition to SVM guest mode
34 * @vmcb_pa: unsigned long96 * @svm: struct vcpu_svm *
35 * @regs: unsigned long * (to guest registers)97 * @spec_ctrl_intercepted: bool
36 */98 */
37SYM_FUNC_START(__svm_vcpu_run)99SYM_FUNC_START(__svm_vcpu_run)
38 push %_ASM_BP100 push %_ASM_BP
@@ -47,49 +109,71 @@ SYM_FUNC_START(__svm_vcpu_run) · 8 unmodified lines
47#endif109#endif
48 push %_ASM_BX110 push %_ASM_BX
49 111
50 /* Save @regs. */112 /*
113 * Save variables needed after vmexit on the stack, in inverse
114 * order compared to when they are needed.
115 */
116
117 /* Accessed directly from the stack in RESTORE_HOST_SPEC_CTRL. */
51 push %_ASM_ARG2118 push %_ASM_ARG2
52 119
53 /* Save @vmcb. */120 /* Needed to restore access to percpu variables. */
121 __ASM_SIZE(push) PER_CPU_VAR(svm_data + SD_save_area_pa)
122
123 /* Finally save @svm. */
54 push %_ASM_ARG1124 push %_ASM_ARG1
55 125
56 /* Move @regs to RAX. */126.ifnc _ASM_ARG1, _ASM_DI
57 mov %_ASM_ARG2, %_ASM_AX127 /*
128 * Stash @svm in RDI early. On 32-bit, arguments are in RAX, RCX
129 * and RDX which are clobbered by RESTORE_GUEST_SPEC_CTRL.
130 */
131 mov %_ASM_ARG1, %_ASM_DI
132.endif
133
134 /* Clobbers RAX, RCX, RDX. */
135 RESTORE_GUEST_SPEC_CTRL
136
137 /*
138 * Use a single vmcb (vmcb01 because it's always valid) for
139 * context switching guest state via VMLOAD/VMSAVE, that way
140 * the state doesn't need to be copied between vmcb01 and
141 * vmcb02 when switching vmcbs for nested virtualization.
142 */
143 mov SVM_vmcb01_pa(%_ASM_DI), %_ASM_AX
1441: vmload %_ASM_AX
1452:
146
147 /* Get svm->current_vmcb->pa into RAX. */
148 mov SVM_current_vmcb(%_ASM_DI), %_ASM_AX
149 mov KVM_VMCB_pa(%_ASM_AX), %_ASM_AX
58 150
59 /* Load guest registers. */151 /* Load guest registers. */
60 mov VCPU_RCX(%_ASM_AX), %_ASM_CX152 mov VCPU_RCX(%_ASM_DI), %_ASM_CX
61 mov VCPU_RDX(%_ASM_AX), %_ASM_DX153 mov VCPU_RDX(%_ASM_DI), %_ASM_DX
62 mov VCPU_RBX(%_ASM_AX), %_ASM_BX154 mov VCPU_RBX(%_ASM_DI), %_ASM_BX
63 mov VCPU_RBP(%_ASM_AX), %_ASM_BP155 mov VCPU_RBP(%_ASM_DI), %_ASM_BP
64 mov VCPU_RSI(%_ASM_AX), %_ASM_SI156 mov VCPU_RSI(%_ASM_DI), %_ASM_SI
65 mov VCPU_RDI(%_ASM_AX), %_ASM_DI
66#ifdef CONFIG_X86_64157#ifdef CONFIG_X86_64
67 mov VCPU_R8 (%_ASM_AX), %r8158 mov VCPU_R8 (%_ASM_DI), %r8
68 mov VCPU_R9 (%_ASM_AX), %r9159 mov VCPU_R9 (%_ASM_DI), %r9
69 mov VCPU_R10(%_ASM_AX), %r10160 mov VCPU_R10(%_ASM_DI), %r10
70 mov VCPU_R11(%_ASM_AX), %r11161 mov VCPU_R11(%_ASM_DI), %r11
71 mov VCPU_R12(%_ASM_AX), %r12162 mov VCPU_R12(%_ASM_DI), %r12
72 mov VCPU_R13(%_ASM_AX), %r13163 mov VCPU_R13(%_ASM_DI), %r13
73 mov VCPU_R14(%_ASM_AX), %r14164 mov VCPU_R14(%_ASM_DI), %r14
74 mov VCPU_R15(%_ASM_AX), %r15165 mov VCPU_R15(%_ASM_DI), %r15
75#endif166#endif
76 167 mov VCPU_RDI(%_ASM_DI), %_ASM_DI
77 /* "POP" @vmcb to RAX. */
78 pop %_ASM_AX
79 168
80 /* Enter guest mode */169 /* Enter guest mode */
81 sti170 sti
82 171
831: vmrun %_ASM_AX1723: vmrun %_ASM_AX
84 1734:
852: cli174 cli
86
87#ifdef CONFIG_RETPOLINE
88 /* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */
89 FILL_RETURN_BUFFER %_ASM_AX, RSB_CLEAR_LOOPS, X86_FEATURE_RETPOLINE
90#endif
91 175
92 /* "POP" @regs to RAX. */176 /* Pop @svm to RAX while it's the only available register. */
93 pop %_ASM_AX177 pop %_ASM_AX
94 178
95 /* Save all guest registers. */179 /* Save all guest registers. */
@@ -110,6 +194,26 @@ SYM_FUNC_START(__svm_vcpu_run) · 14 unmodified lines
110 mov %r15, VCPU_R15(%_ASM_AX)194 mov %r15, VCPU_R15(%_ASM_AX)
111#endif195#endif
112 196
197 /* @svm can stay in RDI from now on. */
198 mov %_ASM_AX, %_ASM_DI
199
200 mov SVM_vmcb01_pa(%_ASM_DI), %_ASM_AX
2015: vmsave %_ASM_AX
2026:
203
204 /* Restores GSBASE among other things, allowing access to percpu data. */
205 pop %_ASM_AX
2067: vmload %_ASM_AX
2078:
208
209#ifdef CONFIG_RETPOLINE
210 /* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */
211 FILL_RETURN_BUFFER %_ASM_AX, RSB_CLEAR_LOOPS, X86_FEATURE_RETPOLINE
212#endif
213
214 /* Clobbers RAX, RCX, RDX. */
215 RESTORE_HOST_SPEC_CTRL
216
113 /*217 /*
114 * Mitigate RETBleed for AMD/Hygon Zen uarch. RET should be218 * Mitigate RETBleed for AMD/Hygon Zen uarch. RET should be
115 * untrained as soon as we exit the VM and are back to the219 * untrained as soon as we exit the VM and are back to the
@@ -145,6 +249,9 @@ SYM_FUNC_START(__svm_vcpu_run) · 29 unmodified lines
145 xor %r15d, %r15d249 xor %r15d, %r15d
146#endif250#endif
147 251
252 /* "Pop" @spec_ctrl_intercepted. */
253 pop %_ASM_BX
254
148 pop %_ASM_BX255 pop %_ASM_BX
149 256
150#ifdef CONFIG_X86_64257#ifdef CONFIG_X86_64
@@ -159,17 +266,33 @@ SYM_FUNC_START(__svm_vcpu_run) · 8 unmodified lines
159 pop %_ASM_BP266 pop %_ASM_BP
160 RET267 RET
161 268
1623: cmpb $0, kvm_rebooting269 RESTORE_GUEST_SPEC_CTRL_BODY
270 RESTORE_HOST_SPEC_CTRL_BODY
271
27210: cmpb $0, kvm_rebooting
163 jne 2b273 jne 2b
164 ud2274 ud2
27530: cmpb $0, kvm_rebooting
276 jne 4b
277 ud2
27850: cmpb $0, kvm_rebooting
279 jne 6b
280 ud2
28170: cmpb $0, kvm_rebooting
282 jne 8b
283 ud2
165 284
166 _ASM_EXTABLE(1b, 3b)285 _ASM_EXTABLE(1b, 10b)
286 _ASM_EXTABLE(3b, 30b)
287 _ASM_EXTABLE(5b, 50b)
288 _ASM_EXTABLE(7b, 70b)
167 289
168SYM_FUNC_END(__svm_vcpu_run)290SYM_FUNC_END(__svm_vcpu_run)
169 291
170/**292/**
171 * __svm_sev_es_vcpu_run - Run a SEV-ES vCPU via a transition to SVM guest mode293 * __svm_sev_es_vcpu_run - Run a SEV-ES vCPU via a transition to SVM guest mode
172 * @vmcb_pa: unsigned long294 * @svm: struct vcpu_svm *
295 * @spec_ctrl_intercepted: bool
173 */296 */
174SYM_FUNC_START(__svm_sev_es_vcpu_run)297SYM_FUNC_START(__svm_sev_es_vcpu_run)
175 push %_ASM_BP298 push %_ASM_BP
@@ -184,8 +307,31 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) · 8 unmodified lines
184#endif307#endif
185 push %_ASM_BX308 push %_ASM_BX
186 309
187 /* Move @vmcb to RAX. */310 /*
188 mov %_ASM_ARG1, %_ASM_AX311 * Save variables needed after vmexit on the stack, in inverse
312 * order compared to when they are needed.
313 */
314
315 /* Accessed directly from the stack in RESTORE_HOST_SPEC_CTRL. */
316 push %_ASM_ARG2
317
318 /* Save @svm. */
319 push %_ASM_ARG1
320
321.ifnc _ASM_ARG1, _ASM_DI
322 /*
323 * Stash @svm in RDI early. On 32-bit, arguments are in RAX, RCX
324 * and RDX which are clobbered by RESTORE_GUEST_SPEC_CTRL.
325 */
326 mov %_ASM_ARG1, %_ASM_DI
327.endif
328
329 /* Clobbers RAX, RCX, RDX. */
330 RESTORE_GUEST_SPEC_CTRL
331
332 /* Get svm->current_vmcb->pa into RAX. */
333 mov SVM_current_vmcb(%_ASM_DI), %_ASM_AX
334 mov KVM_VMCB_pa(%_ASM_AX), %_ASM_AX
189 335
190 /* Enter guest mode */336 /* Enter guest mode */
191 sti337 sti
@@ -194,11 +340,17 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) · 2 unmodified lines
194 340
1952: cli3412: cli
196 342
343 /* Pop @svm to RDI, guest registers have been saved already. */
344 pop %_ASM_DI
345
197#ifdef CONFIG_RETPOLINE346#ifdef CONFIG_RETPOLINE
198 /* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */347 /* IMPORTANT: Stuff the RSB immediately after VM-Exit, before RET! */
199 FILL_RETURN_BUFFER %_ASM_AX, RSB_CLEAR_LOOPS, X86_FEATURE_RETPOLINE348 FILL_RETURN_BUFFER %_ASM_AX, RSB_CLEAR_LOOPS, X86_FEATURE_RETPOLINE
200#endif349#endif
201 350
351 /* Clobbers RAX, RCX, RDX. */
352 RESTORE_HOST_SPEC_CTRL
353
202 /*354 /*
203 * Mitigate RETBleed for AMD/Hygon Zen uarch. RET should be355 * Mitigate RETBleed for AMD/Hygon Zen uarch. RET should be
204 * untrained as soon as we exit the VM and are back to the356 * untrained as soon as we exit the VM and are back to the
@@ -208,6 +360,9 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) · 3 unmodified lines
208 */360 */
209 UNTRAIN_RET361 UNTRAIN_RET
210 362
363 /* "Pop" @spec_ctrl_intercepted. */
364 pop %_ASM_BX
365
211 pop %_ASM_BX366 pop %_ASM_BX
212 367
213#ifdef CONFIG_X86_64368#ifdef CONFIG_X86_64
@@ -222,6 +377,9 @@ SYM_FUNC_START(__svm_sev_es_vcpu_run) · 8 unmodified lines
222 pop %_ASM_BP377 pop %_ASM_BP
223 RET378 RET
224 379
380 RESTORE_GUEST_SPEC_CTRL_BODY
381 RESTORE_HOST_SPEC_CTRL_BODY
382
2253: cmpb $0, kvm_rebooting3833: cmpb $0, kvm_rebooting
226 jne 2b384 jne 2b
227 ud2385 ud2
arch/x86/kvm/vmx/pmu_intel.c+2−2
@@ -617,7 +617,7 @@ static void intel_pmu_init(struct kvm_vcpu *vcpu) · 616 unmodified lines
617 struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);617 struct kvm_pmu *pmu = vcpu_to_pmu(vcpu);
618 struct lbr_desc *lbr_desc = vcpu_to_lbr_desc(vcpu);618 struct lbr_desc *lbr_desc = vcpu_to_lbr_desc(vcpu);
619 619
620 for (i = 0; i < INTEL_PMC_MAX_GENERIC; i++) {620 for (i = 0; i < KVM_INTEL_PMC_MAX_GENERIC; i++) {
621 pmu->gp_counters[i].type = KVM_PMC_GP;621 pmu->gp_counters[i].type = KVM_PMC_GP;
622 pmu->gp_counters[i].vcpu = vcpu;622 pmu->gp_counters[i].vcpu = vcpu;
623 pmu->gp_counters[i].idx = i;623 pmu->gp_counters[i].idx = i;
@@ -643,7 +643,7 @@ static void intel_pmu_reset(struct kvm_vcpu *vcpu) · 19 unmodified lines
643 struct kvm_pmc *pmc = NULL;643 struct kvm_pmc *pmc = NULL;
644 int i;644 int i;
645 645
646 for (i = 0; i < INTEL_PMC_MAX_GENERIC; i++) {646 for (i = 0; i < KVM_INTEL_PMC_MAX_GENERIC; i++) {
647 pmc = &pmu->gp_counters[i];647 pmc = &pmu->gp_counters[i];
648 648
649 pmc_stop_counter(pmc);649 pmc_stop_counter(pmc);
arch/x86/kvm/vmx/vmenter.S+1−1
@@ -1,12 +1,12 @@
1/* SPDX-License-Identifier: GPL-2.0 */1/* SPDX-License-Identifier: GPL-2.0 */
2#include <linux/linkage.h>2#include <linux/linkage.h>
3#include <asm/asm.h>3#include <asm/asm.h>
4#include <asm/asm-offsets.h>
5#include <asm/bitsperlong.h>4#include <asm/bitsperlong.h>
6#include <asm/kvm_vcpu_regs.h>5#include <asm/kvm_vcpu_regs.h>
7#include <asm/nospec-branch.h>6#include <asm/nospec-branch.h>
8#include <asm/percpu.h>7#include <asm/percpu.h>
9#include <asm/segment.h>8#include <asm/segment.h>
9#include "kvm-asm-offsets.h"
10#include "run_flags.h"10#include "run_flags.h"
11 11
12#define WORD_SIZE (BITS_PER_LONG / 8)12#define WORD_SIZE (BITS_PER_LONG / 8)
arch/x86/kvm/x86.c+10−15
@@ -1438,32 +1438,27 @@ static const u32 msrs_to_save_all[] = { · 1437 unmodified lines
1438 MSR_ARCH_PERFMON_FIXED_CTR0 + 2,1438 MSR_ARCH_PERFMON_FIXED_CTR0 + 2,
1439 MSR_CORE_PERF_FIXED_CTR_CTRL, MSR_CORE_PERF_GLOBAL_STATUS,1439 MSR_CORE_PERF_FIXED_CTR_CTRL, MSR_CORE_PERF_GLOBAL_STATUS,
1440 MSR_CORE_PERF_GLOBAL_CTRL, MSR_CORE_PERF_GLOBAL_OVF_CTRL,1440 MSR_CORE_PERF_GLOBAL_CTRL, MSR_CORE_PERF_GLOBAL_OVF_CTRL,
1441 MSR_IA32_PEBS_ENABLE, MSR_IA32_DS_AREA, MSR_PEBS_DATA_CFG,
1442
1443 /* This part of MSRs should match KVM_INTEL_PMC_MAX_GENERIC. */
1441 MSR_ARCH_PERFMON_PERFCTR0, MSR_ARCH_PERFMON_PERFCTR1,1444 MSR_ARCH_PERFMON_PERFCTR0, MSR_ARCH_PERFMON_PERFCTR1,
1442 MSR_ARCH_PERFMON_PERFCTR0 + 2, MSR_ARCH_PERFMON_PERFCTR0 + 3,1445 MSR_ARCH_PERFMON_PERFCTR0 + 2, MSR_ARCH_PERFMON_PERFCTR0 + 3,
1443 MSR_ARCH_PERFMON_PERFCTR0 + 4, MSR_ARCH_PERFMON_PERFCTR0 + 5,1446 MSR_ARCH_PERFMON_PERFCTR0 + 4, MSR_ARCH_PERFMON_PERFCTR0 + 5,
1444 MSR_ARCH_PERFMON_PERFCTR0 + 6, MSR_ARCH_PERFMON_PERFCTR0 + 7,1447 MSR_ARCH_PERFMON_PERFCTR0 + 6, MSR_ARCH_PERFMON_PERFCTR0 + 7,
1445 MSR_ARCH_PERFMON_PERFCTR0 + 8, MSR_ARCH_PERFMON_PERFCTR0 + 9,
1446 MSR_ARCH_PERFMON_PERFCTR0 + 10, MSR_ARCH_PERFMON_PERFCTR0 + 11,
1447 MSR_ARCH_PERFMON_PERFCTR0 + 12, MSR_ARCH_PERFMON_PERFCTR0 + 13,
1448 MSR_ARCH_PERFMON_PERFCTR0 + 14, MSR_ARCH_PERFMON_PERFCTR0 + 15,
1449 MSR_ARCH_PERFMON_PERFCTR0 + 16, MSR_ARCH_PERFMON_PERFCTR0 + 17,
1450 MSR_ARCH_PERFMON_EVENTSEL0, MSR_ARCH_PERFMON_EVENTSEL1,1448 MSR_ARCH_PERFMON_EVENTSEL0, MSR_ARCH_PERFMON_EVENTSEL1,
1451 MSR_ARCH_PERFMON_EVENTSEL0 + 2, MSR_ARCH_PERFMON_EVENTSEL0 + 3,1449 MSR_ARCH_PERFMON_EVENTSEL0 + 2, MSR_ARCH_PERFMON_EVENTSEL0 + 3,
1452 MSR_ARCH_PERFMON_EVENTSEL0 + 4, MSR_ARCH_PERFMON_EVENTSEL0 + 5,1450 MSR_ARCH_PERFMON_EVENTSEL0 + 4, MSR_ARCH_PERFMON_EVENTSEL0 + 5,
1453 MSR_ARCH_PERFMON_EVENTSEL0 + 6, MSR_ARCH_PERFMON_EVENTSEL0 + 7,1451 MSR_ARCH_PERFMON_EVENTSEL0 + 6, MSR_ARCH_PERFMON_EVENTSEL0 + 7,
1454 MSR_ARCH_PERFMON_EVENTSEL0 + 8, MSR_ARCH_PERFMON_EVENTSEL0 + 9,
1455 MSR_ARCH_PERFMON_EVENTSEL0 + 10, MSR_ARCH_PERFMON_EVENTSEL0 + 11,
1456 MSR_ARCH_PERFMON_EVENTSEL0 + 12, MSR_ARCH_PERFMON_EVENTSEL0 + 13,
1457 MSR_ARCH_PERFMON_EVENTSEL0 + 14, MSR_ARCH_PERFMON_EVENTSEL0 + 15,
1458 MSR_ARCH_PERFMON_EVENTSEL0 + 16, MSR_ARCH_PERFMON_EVENTSEL0 + 17,
1459 MSR_IA32_PEBS_ENABLE, MSR_IA32_DS_AREA, MSR_PEBS_DATA_CFG,
1460 1452
1461 MSR_K7_EVNTSEL0, MSR_K7_EVNTSEL1, MSR_K7_EVNTSEL2, MSR_K7_EVNTSEL3,1453 MSR_K7_EVNTSEL0, MSR_K7_EVNTSEL1, MSR_K7_EVNTSEL2, MSR_K7_EVNTSEL3,
1462 MSR_K7_PERFCTR0, MSR_K7_PERFCTR1, MSR_K7_PERFCTR2, MSR_K7_PERFCTR3,1454 MSR_K7_PERFCTR0, MSR_K7_PERFCTR1, MSR_K7_PERFCTR2, MSR_K7_PERFCTR3,
1455
1456 /* This part of MSRs should match KVM_AMD_PMC_MAX_GENERIC. */
1463 MSR_F15H_PERF_CTL0, MSR_F15H_PERF_CTL1, MSR_F15H_PERF_CTL2,1457 MSR_F15H_PERF_CTL0, MSR_F15H_PERF_CTL1, MSR_F15H_PERF_CTL2,
1464 MSR_F15H_PERF_CTL3, MSR_F15H_PERF_CTL4, MSR_F15H_PERF_CTL5,1458 MSR_F15H_PERF_CTL3, MSR_F15H_PERF_CTL4, MSR_F15H_PERF_CTL5,
1465 MSR_F15H_PERF_CTR0, MSR_F15H_PERF_CTR1, MSR_F15H_PERF_CTR2,1459 MSR_F15H_PERF_CTR0, MSR_F15H_PERF_CTR1, MSR_F15H_PERF_CTR2,
1466 MSR_F15H_PERF_CTR3, MSR_F15H_PERF_CTR4, MSR_F15H_PERF_CTR5,1460 MSR_F15H_PERF_CTR3, MSR_F15H_PERF_CTR4, MSR_F15H_PERF_CTR5,
1461
1467 MSR_IA32_XFD, MSR_IA32_XFD_ERR,1462 MSR_IA32_XFD, MSR_IA32_XFD_ERR,
1468};1463};
1469 1464
@@ -7041,14 +7036,14 @@ static void kvm_init_msr_list(void) · 5571 unmodified lines
7041 intel_pt_validate_hw_cap(PT_CAP_num_address_ranges) * 2)7036 intel_pt_validate_hw_cap(PT_CAP_num_address_ranges) * 2)
7042 continue;7037 continue;
7043 break;7038 break;
7044 case MSR_ARCH_PERFMON_PERFCTR0 ... MSR_ARCH_PERFMON_PERFCTR0 + 17:7039 case MSR_ARCH_PERFMON_PERFCTR0 ... MSR_ARCH_PERFMON_PERFCTR_MAX:
7045 if (msrs_to_save_all[i] - MSR_ARCH_PERFMON_PERFCTR0 >=7040 if (msrs_to_save_all[i] - MSR_ARCH_PERFMON_PERFCTR0 >=
7046 min(INTEL_PMC_MAX_GENERIC, kvm_pmu_cap.num_counters_gp))7041 min(KVM_INTEL_PMC_MAX_GENERIC, kvm_pmu_cap.num_counters_gp))
7047 continue;7042 continue;
7048 break;7043 break;
7049 case MSR_ARCH_PERFMON_EVENTSEL0 ... MSR_ARCH_PERFMON_EVENTSEL0 + 17:7044 case MSR_ARCH_PERFMON_EVENTSEL0 ... MSR_ARCH_PERFMON_EVENTSEL_MAX:
7050 if (msrs_to_save_all[i] - MSR_ARCH_PERFMON_EVENTSEL0 >=7045 if (msrs_to_save_all[i] - MSR_ARCH_PERFMON_EVENTSEL0 >=
7051 min(INTEL_PMC_MAX_GENERIC, kvm_pmu_cap.num_counters_gp))7046 min(KVM_INTEL_PMC_MAX_GENERIC, kvm_pmu_cap.num_counters_gp))
7052 continue;7047 continue;
7053 break;7048 break;
7054 case MSR_IA32_XFD:7049 case MSR_IA32_XFD:
arch/x86/lib/usercopy.c+3−0
@@ -6,6 +6,7 @@ · 5 unmodified lines
6 6
7#include <linux/uaccess.h>7#include <linux/uaccess.h>
8#include <linux/export.h>8#include <linux/export.h>
9#include <linux/instrumented.h>
9 10
10#include <asm/tlbflush.h>11#include <asm/tlbflush.h>
11 12
@@ -44,7 +45,9 @@ copy_from_user_nmi(void *to, const void __user *from, unsigned long n) · 32 unmodified lines
44 * called from other contexts.45 * called from other contexts.
45 */46 */
46 pagefault_disable();47 pagefault_disable();
48 instrument_copy_from_user_before(to, from, n);
47 ret = raw_copy_from_user(to, from, n);49 ret = raw_copy_from_user(to, from, n);
50 instrument_copy_from_user_after(to, from, n, ret);
48 pagefault_enable();51 pagefault_enable();
49 52
50 return ret;53 return ret;
arch/x86/mm/hugetlbpage.c+4−0
@@ -37,8 +37,12 @@ int pmd_huge(pmd_t pmd) · 36 unmodified lines
37 */37 */
38int pud_huge(pud_t pud)38int pud_huge(pud_t pud)
39{39{
40#if CONFIG_PGTABLE_LEVELS > 2
40 return !pud_none(pud) &&41 return !pud_none(pud) &&
41 (pud_val(pud) & (_PAGE_PRESENT|_PAGE_PSE)) != _PAGE_PRESENT;42 (pud_val(pud) & (_PAGE_PRESENT|_PAGE_PSE)) != _PAGE_PRESENT;
43#else
44 return 0;
45#endif
42}46}
43 47
44#ifdef CONFIG_HUGETLB_PAGE48#ifdef CONFIG_HUGETLB_PAGE
block/bfq-cgroup.c+4−0
@@ -610,6 +610,10 @@ struct bfq_group *bfq_bio_bfqg(struct bfq_data *bfqd, struct bio *bio) · 609 unmodified lines
610 struct bfq_group *bfqg;610 struct bfq_group *bfqg;
611 611
612 while (blkg) {612 while (blkg) {
613 if (!blkg->online) {
614 blkg = blkg->parent;
615 continue;
616 }
613 bfqg = blkg_to_bfqg(blkg);617 bfqg = blkg_to_bfqg(blkg);
614 if (bfqg->online) {618 if (bfqg->online) {
615 bio_associate_blkg_from_css(bio, &blkg->blkcg->css);619 bio_associate_blkg_from_css(bio, &blkg->blkcg->css);
block/sed-opal.c+28−4
@@ -87,8 +87,8 @@ struct opal_dev { · 86 unmodified lines
87 u64 lowest_lba;87 u64 lowest_lba;
88 88
89 size_t pos;89 size_t pos;
90 u8 cmd[IO_BUFFER_LENGTH];90 u8 *cmd;
91 u8 resp[IO_BUFFER_LENGTH];91 u8 *resp;
92 92
93 struct parsed_resp parsed;93 struct parsed_resp parsed;
94 size_t prev_d_len;94 size_t prev_d_len;
@@ -2175,6 +2175,8 @@ void free_opal_dev(struct opal_dev *dev) · 2080 unmodified lines
2175 return;2175 return;
2176 2176
2177 clean_opal_dev(dev);2177 clean_opal_dev(dev);
2178 kfree(dev->resp);
2179 kfree(dev->cmd);
2178 kfree(dev);2180 kfree(dev);
2179}2181}
2180EXPORT_SYMBOL(free_opal_dev);2182EXPORT_SYMBOL(free_opal_dev);
@@ -2187,6 +2189,18 @@ struct opal_dev *init_opal_dev(void *data, sec_send_recv *send_recv) · 6 unmodified lines
2187 if (!dev)2189 if (!dev)
2188 return NULL;2190 return NULL;
2189 2191
2192 /*
2193 * Presumably DMA-able buffers must be cache-aligned. Kmalloc makes
2194 * sure the allocated buffer is DMA-safe in that regard.
2195 */
2196 dev->cmd = kmalloc(IO_BUFFER_LENGTH, GFP_KERNEL);
2197 if (!dev->cmd)
2198 goto err_free_dev;
2199
2200 dev->resp = kmalloc(IO_BUFFER_LENGTH, GFP_KERNEL);
2201 if (!dev->resp)
2202 goto err_free_cmd;
2203
2190 INIT_LIST_HEAD(&dev->unlk_lst);2204 INIT_LIST_HEAD(&dev->unlk_lst);
2191 mutex_init(&dev->dev_lock);2205 mutex_init(&dev->dev_lock);
2192 dev->flags = 0;2206 dev->flags = 0;
@@ -2194,11 +2208,21 @@ struct opal_dev *init_opal_dev(void *data, sec_send_recv *send_recv) · 1 unmodified line
2194 dev->send_recv = send_recv;2208 dev->send_recv = send_recv;
2195 if (check_opal_support(dev) != 0) {2209 if (check_opal_support(dev) != 0) {
2196 pr_debug("Opal is not supported on this device\n");2210 pr_debug("Opal is not supported on this device\n");
2197 kfree(dev);2211 goto err_free_resp;
2198 return NULL;
2199 }2212 }
2200 2213
2201 return dev;2214 return dev;
2215
2216err_free_resp:
2217 kfree(dev->resp);
2218
2219err_free_cmd:
2220 kfree(dev->cmd);
2221
2222err_free_dev:
2223 kfree(dev);
2224
2225 return NULL;
2202}2226}
2203EXPORT_SYMBOL(init_opal_dev);2227EXPORT_SYMBOL(init_opal_dev);
2204 2228
drivers/acpi/video_detect.c+32−9
@@ -645,6 +645,20 @@ static const struct dmi_system_id video_detect_dmi_table[] = { · 644 unmodified lines
645 },645 },
646 },646 },
647 647
648 /*
649 * Models which have nvidia-ec-wmi support, but should not use it.
650 * Note this indicates a likely firmware bug on these models and should
651 * be revisited if/when Linux gets support for dynamic mux mode.
652 */
653 {
654 .callback = video_detect_force_native,
655 /* Dell G15 5515 */
656 .matches = {
657 DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
658 DMI_MATCH(DMI_PRODUCT_NAME, "Dell G15 5515"),
659 },
660 },
661
648 /*662 /*
649 * Desktops which falsely report a backlight and which our heuristics663 * Desktops which falsely report a backlight and which our heuristics
650 * for this do not catch.664 * for this do not catch.
@@ -670,7 +684,7 @@ static const struct dmi_system_id video_detect_dmi_table[] = { · 19 unmodified lines
670 684
671static bool google_cros_ec_present(void)685static bool google_cros_ec_present(void)
672{686{
673 return acpi_dev_found("GOOG0004");687 return acpi_dev_found("GOOG0004") || acpi_dev_found("GOOG000C");
674}688}
675 689
676/*690/*
@@ -718,6 +732,10 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) · 41 unmodified lines
718 if (apple_gmux_present())732 if (apple_gmux_present())
719 return acpi_backlight_apple_gmux;733 return acpi_backlight_apple_gmux;
720 734
735 /* Chromebooks should always prefer native backlight control. */
736 if (google_cros_ec_present() && native_available)
737 return acpi_backlight_native;
738
721 /* On systems with ACPI video use either native or ACPI video. */739 /* On systems with ACPI video use either native or ACPI video. */
722 if (video_caps & ACPI_VIDEO_BACKLIGHT) {740 if (video_caps & ACPI_VIDEO_BACKLIGHT) {
723 /*741 /*
@@ -735,13 +753,6 @@ static enum acpi_backlight_type __acpi_video_get_backlight_type(bool native) · 11 unmodified lines
735 return acpi_backlight_video;753 return acpi_backlight_video;
736 }754 }
737 755
738 /*
739 * Chromebooks that don't have backlight handle in ACPI table
740 * are supposed to use native backlight if it's available.
741 */
742 if (google_cros_ec_present() && native_available)
743 return acpi_backlight_native;
744
745 /* No ACPI video (old hw), use vendor specific fw methods. */756 /* No ACPI video (old hw), use vendor specific fw methods. */
746 return acpi_backlight_vendor;757 return acpi_backlight_vendor;
747}758}
@@ -754,6 +765,18 @@ EXPORT_SYMBOL(acpi_video_get_backlight_type); · 6 unmodified lines
754 765
755bool acpi_video_backlight_use_native(void)766bool acpi_video_backlight_use_native(void)
756{767{
757 return __acpi_video_get_backlight_type(true) == acpi_backlight_native;768 /*
769 * Call __acpi_video_get_backlight_type() to let it know that
770 * a native backlight is available.
771 */
772 __acpi_video_get_backlight_type(true);
773
774 /*
775 * For now just always return true. There is a whole bunch of laptop
776 * models where (video_caps & ACPI_VIDEO_BACKLIGHT) is false causing
777 * __acpi_video_get_backlight_type() to return vendor, while these
778 * models only have a native backlight control.
779 */
780 return true;
758}781}
759EXPORT_SYMBOL(acpi_video_backlight_use_native);782EXPORT_SYMBOL(acpi_video_backlight_use_native);
drivers/ata/libata-scsi.c+13−0
@@ -3264,6 +3264,7 @@ static unsigned int ata_scsiop_maint_in(struct ata_scsi_args *args, u8 *rbuf) · 3263 unmodified lines
3264 case REPORT_LUNS:3264 case REPORT_LUNS:
3265 case REQUEST_SENSE:3265 case REQUEST_SENSE:
3266 case SYNCHRONIZE_CACHE:3266 case SYNCHRONIZE_CACHE:
3267 case SYNCHRONIZE_CACHE_16:
3267 case REZERO_UNIT:3268 case REZERO_UNIT:
3268 case SEEK_6:3269 case SEEK_6:
3269 case SEEK_10:3270 case SEEK_10:
@@ -3922,6 +3923,7 @@ static inline ata_xlat_func_t ata_get_xlat_func(struct ata_device *dev, u8 cmd) · 652 unmodified lines
3922 return ata_scsi_write_same_xlat;3923 return ata_scsi_write_same_xlat;
3923 3924
3924 case SYNCHRONIZE_CACHE:3925 case SYNCHRONIZE_CACHE:
3926 case SYNCHRONIZE_CACHE_16:
3925 if (ata_try_flush_cache(dev))3927 if (ata_try_flush_cache(dev))
3926 return ata_scsi_flush_xlat;3928 return ata_scsi_flush_xlat;
3927 break;3929 break;
@@ -3962,9 +3964,19 @@ static inline ata_xlat_func_t ata_get_xlat_func(struct ata_device *dev, u8 cmd) · 34 unmodified lines
3962 3964
3963int __ata_scsi_queuecmd(struct scsi_cmnd *scmd, struct ata_device *dev)3965int __ata_scsi_queuecmd(struct scsi_cmnd *scmd, struct ata_device *dev)
3964{3966{
3967 struct ata_port *ap = dev->link->ap;
3965 u8 scsi_op = scmd->cmnd[0];3968 u8 scsi_op = scmd->cmnd[0];
3966 ata_xlat_func_t xlat_func;3969 ata_xlat_func_t xlat_func;
3967 3970
3971 /*
3972 * scsi_queue_rq() will defer commands if scsi_host_in_recovery().
3973 * However, this check is done without holding the ap->lock (a libata
3974 * specific lock), so we can have received an error irq since then,
3975 * therefore we must check if EH is pending, while holding ap->lock.
3976 */
3977 if (ap->pflags & (ATA_PFLAG_EH_PENDING | ATA_PFLAG_EH_IN_PROGRESS))
3978 return SCSI_MLQUEUE_DEVICE_BUSY;
3979
3968 if (unlikely(!scmd->cmd_len))3980 if (unlikely(!scmd->cmd_len))
3969 goto bad_cdb_len;3981 goto bad_cdb_len;
3970 3982
@@ -4145,6 +4157,7 @@ void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd) · 174 unmodified lines
4145 * turning this into a no-op.4157 * turning this into a no-op.
4146 */4158 */
4147 case SYNCHRONIZE_CACHE:4159 case SYNCHRONIZE_CACHE:
4160 case SYNCHRONIZE_CACHE_16:
4148 fallthrough;4161 fallthrough;
4149 4162
4150 /* no-op's, complete with success */4163 /* no-op's, complete with success */
drivers/ata/libata-transport.c+15−4
@@ -301,7 +301,9 @@ int ata_tport_add(struct device *parent, · 300 unmodified lines
301 pm_runtime_enable(dev);301 pm_runtime_enable(dev);
302 pm_runtime_forbid(dev);302 pm_runtime_forbid(dev);
303 303
304 transport_add_device(dev);304 error = transport_add_device(dev);
305 if (error)
306 goto tport_transport_add_err;
305 transport_configure_device(dev);307 transport_configure_device(dev);
306 308
307 error = ata_tlink_add(&ap->link);309 error = ata_tlink_add(&ap->link);
@@ -312,12 +314,12 @@ int ata_tport_add(struct device *parent, · 4 unmodified lines
312 314
313 tport_link_err:315 tport_link_err:
314 transport_remove_device(dev);316 transport_remove_device(dev);
317 tport_transport_add_err:
315 device_del(dev);318 device_del(dev);
316 319
317 tport_err:320 tport_err:
318 transport_destroy_device(dev);321 transport_destroy_device(dev);
319 put_device(dev);322 put_device(dev);
320 ata_host_put(ap->host);
321 return error;323 return error;
322}324}
323 325
@@ -456,7 +458,9 @@ int ata_tlink_add(struct ata_link *link) · 132 unmodified lines
456 goto tlink_err;458 goto tlink_err;
457 }459 }
458 460
459 transport_add_device(dev);461 error = transport_add_device(dev);
462 if (error)
463 goto tlink_transport_err;
460 transport_configure_device(dev);464 transport_configure_device(dev);
461 465
462 ata_for_each_dev(ata_dev, link, ALL) {466 ata_for_each_dev(ata_dev, link, ALL) {
@@ -471,6 +475,7 @@ int ata_tlink_add(struct ata_link *link) · 8 unmodified lines
471 ata_tdev_delete(ata_dev);475 ata_tdev_delete(ata_dev);
472 }476 }
473 transport_remove_device(dev);477 transport_remove_device(dev);
478 tlink_transport_err:
474 device_del(dev);479 device_del(dev);
475 tlink_err:480 tlink_err:
476 transport_destroy_device(dev);481 transport_destroy_device(dev);
@@ -708,7 +713,13 @@ static int ata_tdev_add(struct ata_device *ata_dev) · 231 unmodified lines
708 return error;713 return error;
709 }714 }
710 715
711 transport_add_device(dev);716 error = transport_add_device(dev);
717 if (error) {
718 device_del(dev);
719 ata_tdev_free(ata_dev);
720 return error;
721 }
722
712 transport_configure_device(dev);723 transport_configure_device(dev);
713 return 0;724 return 0;
714}725}
drivers/clocksource/hyperv_timer.c+15−14
@@ -21,6 +21,7 @@ · 20 unmodified lines
21#include <linux/interrupt.h>21#include <linux/interrupt.h>
22#include <linux/irq.h>22#include <linux/irq.h>
23#include <linux/acpi.h>23#include <linux/acpi.h>
24#include <linux/hyperv.h>
24#include <clocksource/hyperv_timer.h>25#include <clocksource/hyperv_timer.h>
25#include <asm/hyperv-tlfs.h>26#include <asm/hyperv-tlfs.h>
26#include <asm/mshyperv.h>27#include <asm/mshyperv.h>
@@ -395,25 +396,25 @@ static u64 notrace read_hv_sched_clock_tsc(void) · 368 unmodified lines
395 396
396static void suspend_hv_clock_tsc(struct clocksource *arg)397static void suspend_hv_clock_tsc(struct clocksource *arg)
397{398{
398 u64 tsc_msr;399 union hv_reference_tsc_msr tsc_msr;
399 400
400 /* Disable the TSC page */401 /* Disable the TSC page */
401 tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC);402 tsc_msr.as_uint64 = hv_get_register(HV_REGISTER_REFERENCE_TSC);
402 tsc_msr &= ~BIT_ULL(0);403 tsc_msr.enable = 0;
403 hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr);404 hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr.as_uint64);
404}405}
405 406
406 407
407static void resume_hv_clock_tsc(struct clocksource *arg)408static void resume_hv_clock_tsc(struct clocksource *arg)
408{409{
409 phys_addr_t phys_addr = virt_to_phys(&tsc_pg);410 phys_addr_t phys_addr = virt_to_phys(&tsc_pg);
410 u64 tsc_msr;411 union hv_reference_tsc_msr tsc_msr;
411 412
412 /* Re-enable the TSC page */413 /* Re-enable the TSC page */
413 tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC);414 tsc_msr.as_uint64 = hv_get_register(HV_REGISTER_REFERENCE_TSC);
414 tsc_msr &= GENMASK_ULL(11, 0);415 tsc_msr.enable = 1;
415 tsc_msr |= BIT_ULL(0) | (u64)phys_addr;416 tsc_msr.pfn = HVPFN_DOWN(phys_addr);
416 hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr);417 hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr.as_uint64);
417}418}
418 419
419#ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK420#ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK
@@ -495,7 +496,7 @@ static __always_inline void hv_setup_sched_clock(void *sched_clock) {} · 75 unmodified lines
495 496
496static bool __init hv_init_tsc_clocksource(void)497static bool __init hv_init_tsc_clocksource(void)
497{498{
498 u64 tsc_msr;499 union hv_reference_tsc_msr tsc_msr;
499 phys_addr_t phys_addr;500 phys_addr_t phys_addr;
500 501
501 if (!(ms_hyperv.features & HV_MSR_REFERENCE_TSC_AVAILABLE))502 if (!(ms_hyperv.features & HV_MSR_REFERENCE_TSC_AVAILABLE))
@@ -530,10 +531,10 @@ static bool __init hv_init_tsc_clocksource(void) · 28 unmodified lines
530 * (which already has at least the low 12 bits set to zero since531 * (which already has at least the low 12 bits set to zero since
531 * it is page aligned). Also set the "enable" bit, which is bit 0.532 * it is page aligned). Also set the "enable" bit, which is bit 0.
532 */533 */
533 tsc_msr = hv_get_register(HV_REGISTER_REFERENCE_TSC);534 tsc_msr.as_uint64 = hv_get_register(HV_REGISTER_REFERENCE_TSC);
534 tsc_msr &= GENMASK_ULL(11, 0);535 tsc_msr.enable = 1;
535 tsc_msr = tsc_msr | 0x1 | (u64)phys_addr;536 tsc_msr.pfn = HVPFN_DOWN(phys_addr);
536 hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr);537 hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr.as_uint64);
537 538
538 clocksource_register_hz(&hyperv_cs_tsc, NSEC_PER_SEC/100);539 clocksource_register_hz(&hyperv_cs_tsc, NSEC_PER_SEC/100);
539 540
drivers/dma/apple-admac.c+1−1
@@ -493,7 +493,7 @@ static struct dma_chan *admac_dma_of_xlate(struct of_phandle_args *dma_spec, · 492 unmodified lines
493 return NULL;493 return NULL;
494 }494 }
495 495
496 return &ad->channels[index].chan;496 return dma_get_slave_channel(&ad->channels[index].chan);
497}497}
498 498
499static int admac_drain_reports(struct admac_data *ad, int channo)499static int admac_drain_reports(struct admac_data *ad, int channo)
drivers/dma/at_hdmac.c+60−93
@@ -256,6 +256,8 @@ static void atc_dostart(struct at_dma_chan *atchan, struct at_desc *first) · 255 unmodified lines
256 ATC_SPIP_BOUNDARY(first->boundary));256 ATC_SPIP_BOUNDARY(first->boundary));
257 channel_writel(atchan, DPIP, ATC_DPIP_HOLE(first->dst_hole) |257 channel_writel(atchan, DPIP, ATC_DPIP_HOLE(first->dst_hole) |
258 ATC_DPIP_BOUNDARY(first->boundary));258 ATC_DPIP_BOUNDARY(first->boundary));
259 /* Don't allow CPU to reorder channel enable. */
260 wmb();
259 dma_writel(atdma, CHER, atchan->mask);261 dma_writel(atdma, CHER, atchan->mask);
260 262
261 vdbg_dump_regs(atchan);263 vdbg_dump_regs(atchan);
@@ -316,7 +318,8 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie) · 54 unmodified lines
316 struct at_desc *desc_first = atc_first_active(atchan);318 struct at_desc *desc_first = atc_first_active(atchan);
317 struct at_desc *desc;319 struct at_desc *desc;
318 int ret;320 int ret;
319 u32 ctrla, dscr, trials;321 u32 ctrla, dscr;
322 unsigned int i;
320 323
321 /*324 /*
322 * If the cookie doesn't match to the currently running transfer then325 * If the cookie doesn't match to the currently running transfer then
@@ -386,7 +389,7 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie) · 63 unmodified lines
386 dscr = channel_readl(atchan, DSCR);389 dscr = channel_readl(atchan, DSCR);
387 rmb(); /* ensure DSCR is read before CTRLA */390 rmb(); /* ensure DSCR is read before CTRLA */
388 ctrla = channel_readl(atchan, CTRLA);391 ctrla = channel_readl(atchan, CTRLA);
389 for (trials = 0; trials < ATC_MAX_DSCR_TRIALS; ++trials) {392 for (i = 0; i < ATC_MAX_DSCR_TRIALS; ++i) {
390 u32 new_dscr;393 u32 new_dscr;
391 394
392 rmb(); /* ensure DSCR is read after CTRLA */395 rmb(); /* ensure DSCR is read after CTRLA */
@@ -412,7 +415,7 @@ static int atc_get_bytes_left(struct dma_chan *chan, dma_cookie_t cookie) · 19 unmodified lines
412 rmb(); /* ensure DSCR is read before CTRLA */415 rmb(); /* ensure DSCR is read before CTRLA */
413 ctrla = channel_readl(atchan, CTRLA);416 ctrla = channel_readl(atchan, CTRLA);
414 }417 }
415 if (unlikely(trials >= ATC_MAX_DSCR_TRIALS))418 if (unlikely(i == ATC_MAX_DSCR_TRIALS))
416 return -ETIMEDOUT;419 return -ETIMEDOUT;
417 420
418 /* for the first descriptor we can be more accurate */421 /* for the first descriptor we can be more accurate */
@@ -462,18 +465,6 @@ atc_chain_complete(struct at_dma_chan *atchan, struct at_desc *desc) · 43 unmodified lines
462 if (!atc_chan_is_cyclic(atchan))465 if (!atc_chan_is_cyclic(atchan))
463 dma_cookie_complete(txd);466 dma_cookie_complete(txd);
464 467
465 /* If the transfer was a memset, free our temporary buffer */
466 if (desc->memset_buffer) {
467 dma_pool_free(atdma->memset_pool, desc->memset_vaddr,
468 desc->memset_paddr);
469 desc->memset_buffer = false;
470 }
471
472 /* move children to free_list */
473 list_splice_init(&desc->tx_list, &atchan->free_list);
474 /* move myself to free_list */
475 list_move(&desc->desc_node, &atchan->free_list);
476
477 spin_unlock_irqrestore(&atchan->lock, flags);468 spin_unlock_irqrestore(&atchan->lock, flags);
478 469
479 dma_descriptor_unmap(txd);470 dma_descriptor_unmap(txd);
@@ -483,42 +474,20 @@ atc_chain_complete(struct at_dma_chan *atchan, struct at_desc *desc) · 3 unmodified lines
483 dmaengine_desc_get_callback_invoke(txd, NULL);474 dmaengine_desc_get_callback_invoke(txd, NULL);
484 475
485 dma_run_dependencies(txd);476 dma_run_dependencies(txd);
486}
487
488/**
489 * atc_complete_all - finish work for all transactions
490 * @atchan: channel to complete transactions for
491 *
492 * Eventually submit queued descriptors if any
493 *
494 * Assume channel is idle while calling this function
495 * Called with atchan->lock held and bh disabled
496 */
497static void atc_complete_all(struct at_dma_chan *atchan)
498{
499 struct at_desc *desc, *_desc;
500 LIST_HEAD(list);
501 unsigned long flags;
502
503 dev_vdbg(chan2dev(&atchan->chan_common), "complete all\n");
504 477
505 spin_lock_irqsave(&atchan->lock, flags);478 spin_lock_irqsave(&atchan->lock, flags);
506 479 /* move children to free_list */
507 /*480 list_splice_init(&desc->tx_list, &atchan->free_list);
508 * Submit queued descriptors ASAP, i.e. before we go through481 /* add myself to free_list */
509 * the completed ones.482 list_add(&desc->desc_node, &atchan->free_list);
510 */
511 if (!list_empty(&atchan->queue))
512 atc_dostart(atchan, atc_first_queued(atchan));
513 /* empty active_list now it is completed */
514 list_splice_init(&atchan->active_list, &list);
515 /* empty queue list by moving descriptors (if any) to active_list */
516 list_splice_init(&atchan->queue, &atchan->active_list);
517
518 spin_unlock_irqrestore(&atchan->lock, flags);483 spin_unlock_irqrestore(&atchan->lock, flags);
519 484
520 list_for_each_entry_safe(desc, _desc, &list, desc_node)485 /* If the transfer was a memset, free our temporary buffer */
521 atc_chain_complete(atchan, desc);486 if (desc->memset_buffer) {
487 dma_pool_free(atdma->memset_pool, desc->memset_vaddr,
488 desc->memset_paddr);
489 desc->memset_buffer = false;
490 }
522}491}
523 492
524/**493/**
@@ -527,26 +496,28 @@ static void atc_complete_all(struct at_dma_chan *atchan) · 2 unmodified lines
527 */496 */
528static void atc_advance_work(struct at_dma_chan *atchan)497static void atc_advance_work(struct at_dma_chan *atchan)
529{498{
499 struct at_desc *desc;
530 unsigned long flags;500 unsigned long flags;
531 int ret;
532 501
533 dev_vdbg(chan2dev(&atchan->chan_common), "advance_work\n");502 dev_vdbg(chan2dev(&atchan->chan_common), "advance_work\n");
534 503
535 spin_lock_irqsave(&atchan->lock, flags);504 spin_lock_irqsave(&atchan->lock, flags);
536 ret = atc_chan_is_enabled(atchan);505 if (atc_chan_is_enabled(atchan) || list_empty(&atchan->active_list))
537 spin_unlock_irqrestore(&atchan->lock, flags);506 return spin_unlock_irqrestore(&atchan->lock, flags);
538 if (ret)
539 return;
540
541 if (list_empty(&atchan->active_list) ||
542 list_is_singular(&atchan->active_list))
543 return atc_complete_all(atchan);
544 507
545 atc_chain_complete(atchan, atc_first_active(atchan));508 desc = atc_first_active(atchan);
509 /* Remove the transfer node from the active list. */
510 list_del_init(&desc->desc_node);
511 spin_unlock_irqrestore(&atchan->lock, flags);
512 atc_chain_complete(atchan, desc);
546 513
547 /* advance work */514 /* advance work */
548 spin_lock_irqsave(&atchan->lock, flags);515 spin_lock_irqsave(&atchan->lock, flags);
549 atc_dostart(atchan, atc_first_active(atchan));516 if (!list_empty(&atchan->active_list)) {
517 desc = atc_first_queued(atchan);
518 list_move_tail(&desc->desc_node, &atchan->active_list);
519 atc_dostart(atchan, desc);
520 }
550 spin_unlock_irqrestore(&atchan->lock, flags);521 spin_unlock_irqrestore(&atchan->lock, flags);
551}522}
552 523
@@ -558,6 +529,7 @@ static void atc_advance_work(struct at_dma_chan *atchan) · 5 unmodified lines
558static void atc_handle_error(struct at_dma_chan *atchan)529static void atc_handle_error(struct at_dma_chan *atchan)
559{530{
560 struct at_desc *bad_desc;531 struct at_desc *bad_desc;
532 struct at_desc *desc;
561 struct at_desc *child;533 struct at_desc *child;
562 unsigned long flags;534 unsigned long flags;
563 535
@@ -570,13 +542,12 @@ static void atc_handle_error(struct at_dma_chan *atchan) · 6 unmodified lines
570 bad_desc = atc_first_active(atchan);542 bad_desc = atc_first_active(atchan);
571 list_del_init(&bad_desc->desc_node);543 list_del_init(&bad_desc->desc_node);
572 544
573 /* As we are stopped, take advantage to push queued descriptors
574 * in active_list */
575 list_splice_init(&atchan->queue, atchan->active_list.prev);
576
577 /* Try to restart the controller */545 /* Try to restart the controller */
578 if (!list_empty(&atchan->active_list))546 if (!list_empty(&atchan->active_list)) {
579 atc_dostart(atchan, atc_first_active(atchan));547 desc = atc_first_queued(atchan);
548 list_move_tail(&desc->desc_node, &atchan->active_list);
549 atc_dostart(atchan, desc);
550 }
580 551
581 /*552 /*
582 * KERN_CRITICAL may seem harsh, but since this only happens553 * KERN_CRITICAL may seem harsh, but since this only happens
@@ -691,19 +662,11 @@ static dma_cookie_t atc_tx_submit(struct dma_async_tx_descriptor *tx) · 108 unmodified lines
691 spin_lock_irqsave(&atchan->lock, flags);662 spin_lock_irqsave(&atchan->lock, flags);
692 cookie = dma_cookie_assign(tx);663 cookie = dma_cookie_assign(tx);
693 664
694 if (list_empty(&atchan->active_list)) {665 list_add_tail(&desc->desc_node, &atchan->queue);
695 dev_vdbg(chan2dev(tx->chan), "tx_submit: started %u\n",
696 desc->txd.cookie);
697 atc_dostart(atchan, desc);
698 list_add_tail(&desc->desc_node, &atchan->active_list);
699 } else {
700 dev_vdbg(chan2dev(tx->chan), "tx_submit: queued %u\n",
701 desc->txd.cookie);
702 list_add_tail(&desc->desc_node, &atchan->queue);
703 }
704
705 spin_unlock_irqrestore(&atchan->lock, flags);666 spin_unlock_irqrestore(&atchan->lock, flags);
706 667
668 dev_vdbg(chan2dev(tx->chan), "tx_submit: queued %u\n",
669 desc->txd.cookie);
707 return cookie;670 return cookie;
708}671}
709 672
@@ -1445,11 +1408,8 @@ static int atc_terminate_all(struct dma_chan *chan) · 735 unmodified lines
1445 struct at_dma_chan *atchan = to_at_dma_chan(chan);1408 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1446 struct at_dma *atdma = to_at_dma(chan->device);1409 struct at_dma *atdma = to_at_dma(chan->device);
1447 int chan_id = atchan->chan_common.chan_id;1410 int chan_id = atchan->chan_common.chan_id;
1448 struct at_desc *desc, *_desc;
1449 unsigned long flags;1411 unsigned long flags;
1450 1412
1451 LIST_HEAD(list);
1452
1453 dev_vdbg(chan2dev(chan), "%s\n", __func__);1413 dev_vdbg(chan2dev(chan), "%s\n", __func__);
1454 1414
1455 /*1415 /*
@@ -1468,19 +1428,15 @@ static int atc_terminate_all(struct dma_chan *chan) · 12 unmodified lines
1468 cpu_relax();1428 cpu_relax();
1469 1429
1470 /* active_list entries will end up before queued entries */1430 /* active_list entries will end up before queued entries */
1471 list_splice_init(&atchan->queue, &list);1431 list_splice_tail_init(&atchan->queue, &atchan->free_list);
1472 list_splice_init(&atchan->active_list, &list);1432 list_splice_tail_init(&atchan->active_list, &atchan->free_list);
1473
1474 spin_unlock_irqrestore(&atchan->lock, flags);
1475
1476 /* Flush all pending and queued descriptors */
1477 list_for_each_entry_safe(desc, _desc, &list, desc_node)
1478 atc_chain_complete(atchan, desc);
1479 1433
1480 clear_bit(ATC_IS_PAUSED, &atchan->status);1434 clear_bit(ATC_IS_PAUSED, &atchan->status);
1481 /* if channel dedicated to cyclic operations, free it */1435 /* if channel dedicated to cyclic operations, free it */
1482 clear_bit(ATC_IS_CYCLIC, &atchan->status);1436 clear_bit(ATC_IS_CYCLIC, &atchan->status);
1483 1437
1438 spin_unlock_irqrestore(&atchan->lock, flags);
1439
1484 return 0;1440 return 0;
1485}1441}
1486 1442
@@ -1535,20 +1491,26 @@ atc_tx_status(struct dma_chan *chan, · 48 unmodified lines
1535}1491}
1536 1492
1537/**1493/**
1538 * atc_issue_pending - try to finish work1494 * atc_issue_pending - takes the first transaction descriptor in the pending
1495 * queue and starts the transfer.
1539 * @chan: target DMA channel1496 * @chan: target DMA channel
1540 */1497 */
1541static void atc_issue_pending(struct dma_chan *chan)1498static void atc_issue_pending(struct dma_chan *chan)
1542{1499{
1543 struct at_dma_chan *atchan = to_at_dma_chan(chan);1500 struct at_dma_chan *atchan = to_at_dma_chan(chan);
1501 struct at_desc *desc;
1502 unsigned long flags;
1544 1503
1545 dev_vdbg(chan2dev(chan), "issue_pending\n");1504 dev_vdbg(chan2dev(chan), "issue_pending\n");
1546 1505
1547 /* Not needed for cyclic transfers */1506 spin_lock_irqsave(&atchan->lock, flags);
1548 if (atc_chan_is_cyclic(atchan))1507 if (atc_chan_is_enabled(atchan) || list_empty(&atchan->queue))
1549 return;1508 return spin_unlock_irqrestore(&atchan->lock, flags);
1550 1509
1551 atc_advance_work(atchan);1510 desc = atc_first_queued(atchan);
1511 list_move_tail(&desc->desc_node, &atchan->active_list);
1512 atc_dostart(atchan, desc);
1513 spin_unlock_irqrestore(&atchan->lock, flags);
1552}1514}
1553 1515
1554/**1516/**
@@ -1966,7 +1928,11 @@ static int __init at_dma_probe(struct platform_device *pdev) · 411 unmodified lines
1966 dma_has_cap(DMA_SLAVE, atdma->dma_common.cap_mask) ? "slave " : "",1928 dma_has_cap(DMA_SLAVE, atdma->dma_common.cap_mask) ? "slave " : "",
1967 plat_dat->nr_channels);1929 plat_dat->nr_channels);
1968 1930
1969 dma_async_device_register(&atdma->dma_common);1931 err = dma_async_device_register(&atdma->dma_common);
1932 if (err) {
1933 dev_err(&pdev->dev, "Unable to register: %d.\n", err);
1934 goto err_dma_async_device_register;
1935 }
1970 1936
1971 /*1937 /*
1972 * Do not return an error if the dmac node is not present in order to1938 * Do not return an error if the dmac node is not present in order to
@@ -1986,6 +1952,7 @@ static int __init at_dma_probe(struct platform_device *pdev) · 13 unmodified lines
1986 1952
1987err_of_dma_controller_register:1953err_of_dma_controller_register:
1988 dma_async_device_unregister(&atdma->dma_common);1954 dma_async_device_unregister(&atdma->dma_common);
1955err_dma_async_device_register:
1989 dma_pool_destroy(atdma->memset_pool);1956 dma_pool_destroy(atdma->memset_pool);
1990err_memset_pool_create:1957err_memset_pool_create:
1991 dma_pool_destroy(atdma->dma_desc_pool);1958 dma_pool_destroy(atdma->dma_desc_pool);
drivers/dma/at_hdmac_regs.h+5−5
@@ -186,13 +186,13 @@ · 185 unmodified lines
186/* LLI == Linked List Item; aka DMA buffer descriptor */186/* LLI == Linked List Item; aka DMA buffer descriptor */
187struct at_lli {187struct at_lli {
188 /* values that are not changed by hardware */188 /* values that are not changed by hardware */
189 dma_addr_t saddr;189 u32 saddr;
190 dma_addr_t daddr;190 u32 daddr;
191 /* value that may get written back: */191 /* value that may get written back: */
192 u32 ctrla;192 u32 ctrla;
193 /* more values that are not changed by hardware */193 /* more values that are not changed by hardware */
194 u32 ctrlb;194 u32 ctrlb;
195 dma_addr_t dscr; /* chain to next lli */195 u32 dscr; /* chain to next lli */
196};196};
197 197
198/**198/**
drivers/dma/idxd/cdev.c+18−0
@@ -312,6 +312,24 @@ static int idxd_user_drv_probe(struct idxd_dev *idxd_dev) · 311 unmodified lines
312 if (idxd->state != IDXD_DEV_ENABLED)312 if (idxd->state != IDXD_DEV_ENABLED)
313 return -ENXIO;313 return -ENXIO;
314 314
315 /*
316 * User type WQ is enabled only when SVA is enabled for two reasons:
317 * - If no IOMMU or IOMMU Passthrough without SVA, userspace
318 * can directly access physical address through the WQ.
319 * - The IDXD cdev driver does not provide any ways to pin
320 * user pages and translate the address from user VA to IOVA or
321 * PA without IOMMU SVA. Therefore the application has no way
322 * to instruct the device to perform DMA function. This makes
323 * the cdev not usable for normal application usage.
324 */
325 if (!device_user_pasid_enabled(idxd)) {
326 idxd->cmd_status = IDXD_SCMD_WQ_USER_NO_IOMMU;
327 dev_dbg(&idxd->pdev->dev,
328 "User type WQ cannot be enabled without SVA.\n");
329
330 return -EOPNOTSUPP;
331 }
332
315 mutex_lock(&wq->wq_lock);333 mutex_lock(&wq->wq_lock);
316 wq->type = IDXD_WQT_USER;334 wq->type = IDXD_WQT_USER;
317 rc = drv_enable_wq(wq);335 rc = drv_enable_wq(wq);
drivers/dma/idxd/device.c+17−9
@@ -390,7 +390,7 @@ static void idxd_wq_disable_cleanup(struct idxd_wq *wq) · 389 unmodified lines
390 clear_bit(WQ_FLAG_ATS_DISABLE, &wq->flags);390 clear_bit(WQ_FLAG_ATS_DISABLE, &wq->flags);
391 memset(wq->name, 0, WQ_NAME_SIZE);391 memset(wq->name, 0, WQ_NAME_SIZE);
392 wq->max_xfer_bytes = WQ_DEFAULT_MAX_XFER;392 wq->max_xfer_bytes = WQ_DEFAULT_MAX_XFER;
393 wq->max_batch_size = WQ_DEFAULT_MAX_BATCH;393 idxd_wq_set_max_batch_size(idxd->data->type, wq, WQ_DEFAULT_MAX_BATCH);
394 if (wq->opcap_bmap)394 if (wq->opcap_bmap)
395 bitmap_copy(wq->opcap_bmap, idxd->opcap_bmap, IDXD_MAX_OPCAP_BITS);395 bitmap_copy(wq->opcap_bmap, idxd->opcap_bmap, IDXD_MAX_OPCAP_BITS);
396}396}
@@ -730,13 +730,21 @@ static void idxd_device_wqs_clear_state(struct idxd_device *idxd) · 333 unmodified lines
730 730
731void idxd_device_clear_state(struct idxd_device *idxd)731void idxd_device_clear_state(struct idxd_device *idxd)
732{732{
733 if (!test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags))733 /* IDXD is always disabled. Other states are cleared only when IDXD is configurable. */
734 return;734 if (test_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags)) {
735 /*
736 * Clearing wq state is protected by wq lock.
737 * So no need to be protected by device lock.
738 */
739 idxd_device_wqs_clear_state(idxd);
740
741 spin_lock(&idxd->dev_lock);
742 idxd_groups_clear_state(idxd);
743 idxd_engines_clear_state(idxd);
744 } else {
745 spin_lock(&idxd->dev_lock);
746 }
735 747
736 idxd_device_wqs_clear_state(idxd);
737 spin_lock(&idxd->dev_lock);
738 idxd_groups_clear_state(idxd);
739 idxd_engines_clear_state(idxd);
740 idxd->state = IDXD_DEV_DISABLED;748 idxd->state = IDXD_DEV_DISABLED;
741 spin_unlock(&idxd->dev_lock);749 spin_unlock(&idxd->dev_lock);
742}750}
@@ -869,7 +877,7 @@ static int idxd_wq_config_write(struct idxd_wq *wq) · 126 unmodified lines
869 877
870 /* bytes 12-15 */878 /* bytes 12-15 */
871 wq->wqcfg->max_xfer_shift = ilog2(wq->max_xfer_bytes);879 wq->wqcfg->max_xfer_shift = ilog2(wq->max_xfer_bytes);
872 wq->wqcfg->max_batch_shift = ilog2(wq->max_batch_size);880 idxd_wqcfg_set_max_batch_shift(idxd->data->type, wq->wqcfg, ilog2(wq->max_batch_size));
873 881
874 /* bytes 32-63 */882 /* bytes 32-63 */
875 if (idxd->hw.wq_cap.op_config && wq->opcap_bmap) {883 if (idxd->hw.wq_cap.op_config && wq->opcap_bmap) {
@@ -1051,7 +1059,7 @@ static int idxd_wq_load_config(struct idxd_wq *wq) · 175 unmodified lines
1051 wq->priority = wq->wqcfg->priority;1059 wq->priority = wq->wqcfg->priority;
1052 1060
1053 wq->max_xfer_bytes = 1ULL << wq->wqcfg->max_xfer_shift;1061 wq->max_xfer_bytes = 1ULL << wq->wqcfg->max_xfer_shift;
1054 wq->max_batch_size = 1ULL << wq->wqcfg->max_batch_shift;1062 idxd_wq_set_max_batch_size(idxd->data->type, wq, 1U << wq->wqcfg->max_batch_shift);
1055 1063
1056 for (i = 0; i < WQCFG_STRIDES(idxd); i++) {1064 for (i = 0; i < WQCFG_STRIDES(idxd); i++) {
1057 wqcfg_offset = WQCFG_OFFSET(idxd, wq->id, i);1065 wqcfg_offset = WQCFG_OFFSET(idxd, wq->id, i);
drivers/dma/idxd/idxd.h+32−0
@@ -548,6 +548,38 @@ static inline int idxd_wq_refcount(struct idxd_wq *wq) · 547 unmodified lines
548 return wq->client_count;548 return wq->client_count;
549};549};
550 550
551/*
552 * Intel IAA does not support batch processing.
553 * The max batch size of device, max batch size of wq and
554 * max batch shift of wqcfg should be always 0 on IAA.
555 */
556static inline void idxd_set_max_batch_size(int idxd_type, struct idxd_device *idxd,
557 u32 max_batch_size)
558{
559 if (idxd_type == IDXD_TYPE_IAX)
560 idxd->max_batch_size = 0;
561 else
562 idxd->max_batch_size = max_batch_size;
563}
564
565static inline void idxd_wq_set_max_batch_size(int idxd_type, struct idxd_wq *wq,
566 u32 max_batch_size)
567{
568 if (idxd_type == IDXD_TYPE_IAX)
569 wq->max_batch_size = 0;
570 else
571 wq->max_batch_size = max_batch_size;
572}
573
574static inline void idxd_wqcfg_set_max_batch_shift(int idxd_type, union wqcfg *wqcfg,
575 u32 max_batch_shift)
576{
577 if (idxd_type == IDXD_TYPE_IAX)
578 wqcfg->max_batch_shift = 0;
579 else
580 wqcfg->max_batch_shift = max_batch_shift;
581}
582
551int __must_check __idxd_driver_register(struct idxd_device_driver *idxd_drv,583int __must_check __idxd_driver_register(struct idxd_device_driver *idxd_drv,
552 struct module *module, const char *mod_name);584 struct module *module, const char *mod_name);
553#define idxd_driver_register(driver) \585#define idxd_driver_register(driver) \
drivers/dma/idxd/init.c+2−2
@@ -183,7 +183,7 @@ static int idxd_setup_wqs(struct idxd_device *idxd) · 182 unmodified lines
183 init_completion(&wq->wq_dead);183 init_completion(&wq->wq_dead);
184 init_completion(&wq->wq_resurrect);184 init_completion(&wq->wq_resurrect);
185 wq->max_xfer_bytes = WQ_DEFAULT_MAX_XFER;185 wq->max_xfer_bytes = WQ_DEFAULT_MAX_XFER;
186 wq->max_batch_size = WQ_DEFAULT_MAX_BATCH;186 idxd_wq_set_max_batch_size(idxd->data->type, wq, WQ_DEFAULT_MAX_BATCH);
187 wq->enqcmds_retries = IDXD_ENQCMDS_RETRIES;187 wq->enqcmds_retries = IDXD_ENQCMDS_RETRIES;
188 wq->wqcfg = kzalloc_node(idxd->wqcfg_size, GFP_KERNEL, dev_to_node(dev));188 wq->wqcfg = kzalloc_node(idxd->wqcfg_size, GFP_KERNEL, dev_to_node(dev));
189 if (!wq->wqcfg) {189 if (!wq->wqcfg) {
@@ -418,7 +418,7 @@ static void idxd_read_caps(struct idxd_device *idxd) · 228 unmodified lines
418 418
419 idxd->max_xfer_bytes = 1ULL << idxd->hw.gen_cap.max_xfer_shift;419 idxd->max_xfer_bytes = 1ULL << idxd->hw.gen_cap.max_xfer_shift;
420 dev_dbg(dev, "max xfer size: %llu bytes\n", idxd->max_xfer_bytes);420 dev_dbg(dev, "max xfer size: %llu bytes\n", idxd->max_xfer_bytes);
421 idxd->max_batch_size = 1U << idxd->hw.gen_cap.max_batch_shift;421 idxd_set_max_batch_size(idxd->data->type, idxd, 1U << idxd->hw.gen_cap.max_batch_shift);
422 dev_dbg(dev, "max batch size: %u\n", idxd->max_batch_size);422 dev_dbg(dev, "max batch size: %u\n", idxd->max_batch_size);
423 if (idxd->hw.gen_cap.config_en)423 if (idxd->hw.gen_cap.config_en)
424 set_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags);424 set_bit(IDXD_FLAG_CONFIGURABLE, &idxd->flags);
drivers/dma/idxd/sysfs.c+1−1
@@ -1046,7 +1046,7 @@ static ssize_t wq_max_batch_size_store(struct device *dev, struct device_attribu · 1045 unmodified lines
1046 if (batch_size > idxd->max_batch_size)1046 if (batch_size > idxd->max_batch_size)
1047 return -EINVAL;1047 return -EINVAL;
1048 1048
1049 wq->max_batch_size = (u32)batch_size;1049 idxd_wq_set_max_batch_size(idxd->data->type, wq, (u32)batch_size);
1050 1050
1051 return count;1051 return count;
1052}1052}
drivers/dma/mv_xor_v2.c+1−0
@@ -893,6 +893,7 @@ static int mv_xor_v2_remove(struct platform_device *pdev) · 892 unmodified lines
893 tasklet_kill(&xor_dev->irq_tasklet);893 tasklet_kill(&xor_dev->irq_tasklet);
894 894
895 clk_disable_unprepare(xor_dev->clk);895 clk_disable_unprepare(xor_dev->clk);
896 clk_disable_unprepare(xor_dev->reg_clk);
896 897
897 return 0;898 return 0;
898}899}
drivers/dma/pxa_dma.c+2−2
@@ -1247,14 +1247,14 @@ static int pxad_init_phys(struct platform_device *op, · 1246 unmodified lines
1247 return -ENOMEM;1247 return -ENOMEM;
1248 1248
1249 for (i = 0; i < nb_phy_chans; i++)1249 for (i = 0; i < nb_phy_chans; i++)
1250 if (platform_get_irq(op, i) > 0)1250 if (platform_get_irq_optional(op, i) > 0)
1251 nr_irq++;1251 nr_irq++;
1252 1252
1253 for (i = 0; i < nb_phy_chans; i++) {1253 for (i = 0; i < nb_phy_chans; i++) {
1254 phy = &pdev->phys[i];1254 phy = &pdev->phys[i];
1255 phy->base = pdev->base;1255 phy->base = pdev->base;
1256 phy->idx = i;1256 phy->idx = i;
1257 irq = platform_get_irq(op, i);1257 irq = platform_get_irq_optional(op, i);
1258 if ((nr_irq > 1) && (irq > 0))1258 if ((nr_irq > 1) && (irq > 0))
1259 ret = devm_request_irq(&op->dev, irq,1259 ret = devm_request_irq(&op->dev, irq,
1260 pxad_chan_handler,1260 pxad_chan_handler,
drivers/dma/stm32-dma.c+6−8
@@ -675,6 +675,8 @@ static void stm32_dma_handle_chan_paused(struct stm32_dma_chan *chan) · 674 unmodified lines
675 675
676 chan->chan_reg.dma_sndtr = stm32_dma_read(dmadev, STM32_DMA_SNDTR(chan->id));676 chan->chan_reg.dma_sndtr = stm32_dma_read(dmadev, STM32_DMA_SNDTR(chan->id));
677 677
678 chan->status = DMA_PAUSED;
679
678 dev_dbg(chan2dev(chan), "vchan %pK: paused\n", &chan->vchan);680 dev_dbg(chan2dev(chan), "vchan %pK: paused\n", &chan->vchan);
679}681}
680 682
@@ -789,9 +791,7 @@ static irqreturn_t stm32_dma_chan_irq(int irq, void *devid) · 108 unmodified lines
789 if (status & STM32_DMA_TCI) {791 if (status & STM32_DMA_TCI) {
790 stm32_dma_irq_clear(chan, STM32_DMA_TCI);792 stm32_dma_irq_clear(chan, STM32_DMA_TCI);
791 if (scr & STM32_DMA_SCR_TCIE) {793 if (scr & STM32_DMA_SCR_TCIE) {
792 if (chan->status == DMA_PAUSED && !(scr & STM32_DMA_SCR_EN))794 if (chan->status != DMA_PAUSED)
793 stm32_dma_handle_chan_paused(chan);
794 else
795 stm32_dma_handle_chan_done(chan, scr);795 stm32_dma_handle_chan_done(chan, scr);
796 }796 }
797 status &= ~STM32_DMA_TCI;797 status &= ~STM32_DMA_TCI;
@@ -838,13 +838,11 @@ static int stm32_dma_pause(struct dma_chan *c) · 40 unmodified lines
838 return -EPERM;838 return -EPERM;
839 839
840 spin_lock_irqsave(&chan->vchan.lock, flags);840 spin_lock_irqsave(&chan->vchan.lock, flags);
841
841 ret = stm32_dma_disable_chan(chan);842 ret = stm32_dma_disable_chan(chan);
842 /*
843 * A transfer complete flag is set to indicate the end of transfer due to the stream
844 * interruption, so wait for interrupt
845 */
846 if (!ret)843 if (!ret)
847 chan->status = DMA_PAUSED;844 stm32_dma_handle_chan_paused(chan);
845
848 spin_unlock_irqrestore(&chan->vchan.lock, flags);846 spin_unlock_irqrestore(&chan->vchan.lock, flags);
849 847
850 return ret;848 return ret;
drivers/dma/stm32-mdma.c+1−0
@@ -1539,6 +1539,7 @@ static struct dma_chan *stm32_mdma_of_xlate(struct of_phandle_args *dma_spec, · 1538 unmodified lines
1539 return NULL;1539 return NULL;
1540 }1540 }
1541 1541
1542 memset(&config, 0, sizeof(config));
1542 config.request = dma_spec->args[0];1543 config.request = dma_spec->args[0];
1543 config.priority_level = dma_spec->args[1];1544 config.priority_level = dma_spec->args[1];
1544 config.transfer_config = dma_spec->args[2];1545 config.transfer_config = dma_spec->args[2];
drivers/dma/ti/k3-udma-glue.c+3−0
@@ -299,6 +299,7 @@ struct k3_udma_glue_tx_channel *k3_udma_glue_request_tx_chn(struct device *dev, · 298 unmodified lines
299 ret = device_register(&tx_chn->common.chan_dev);299 ret = device_register(&tx_chn->common.chan_dev);
300 if (ret) {300 if (ret) {
301 dev_err(dev, "Channel Device registration failed %d\n", ret);301 dev_err(dev, "Channel Device registration failed %d\n", ret);
302 put_device(&tx_chn->common.chan_dev);
302 tx_chn->common.chan_dev.parent = NULL;303 tx_chn->common.chan_dev.parent = NULL;
303 goto err;304 goto err;
304 }305 }
@@ -917,6 +918,7 @@ k3_udma_glue_request_rx_chn_priv(struct device *dev, const char *name, · 612 unmodified lines
917 ret = device_register(&rx_chn->common.chan_dev);918 ret = device_register(&rx_chn->common.chan_dev);
918 if (ret) {919 if (ret) {
919 dev_err(dev, "Channel Device registration failed %d\n", ret);920 dev_err(dev, "Channel Device registration failed %d\n", ret);
921 put_device(&rx_chn->common.chan_dev);
920 rx_chn->common.chan_dev.parent = NULL;922 rx_chn->common.chan_dev.parent = NULL;
921 goto err;923 goto err;
922 }924 }
@@ -1048,6 +1050,7 @@ k3_udma_glue_request_remote_rx_chn(struct device *dev, const char *name, · 125 unmodified lines
1048 ret = device_register(&rx_chn->common.chan_dev);1050 ret = device_register(&rx_chn->common.chan_dev);
1049 if (ret) {1051 if (ret) {
1050 dev_err(dev, "Channel Device registration failed %d\n", ret);1052 dev_err(dev, "Channel Device registration failed %d\n", ret);
1053 put_device(&rx_chn->common.chan_dev);
1051 rx_chn->common.chan_dev.parent = NULL;1054 rx_chn->common.chan_dev.parent = NULL;
1052 goto err;1055 goto err;
1053 }1056 }
drivers/firmware/efi/libstub/Makefile+1−1
@@ -82,7 +82,7 @@ $(obj)/lib-%.o: $(srctree)/lib/%.c FORCE · 81 unmodified lines
82lib-$(CONFIG_EFI_GENERIC_STUB) += efi-stub.o string.o intrinsics.o systable.o82lib-$(CONFIG_EFI_GENERIC_STUB) += efi-stub.o string.o intrinsics.o systable.o
83 83
84lib-$(CONFIG_ARM) += arm32-stub.o84lib-$(CONFIG_ARM) += arm32-stub.o
85lib-$(CONFIG_ARM64) += arm64-stub.o85lib-$(CONFIG_ARM64) += arm64-stub.o smbios.o
86lib-$(CONFIG_X86) += x86-stub.o86lib-$(CONFIG_X86) += x86-stub.o
87lib-$(CONFIG_RISCV) += riscv-stub.o87lib-$(CONFIG_RISCV) += riscv-stub.o
88lib-$(CONFIG_LOONGARCH) += loongarch-stub.o88lib-$(CONFIG_LOONGARCH) += loongarch-stub.o
drivers/firmware/efi/libstub/arm64-stub.c+16−1
@@ -15,6 +15,21 @@ · 14 unmodified lines
15 15
16#include "efistub.h"16#include "efistub.h"
17 17
18static bool system_needs_vamap(void)
19{
20 const u8 *type1_family = efi_get_smbios_string(1, family);
21
22 /*
23 * Ampere Altra machines crash in SetTime() if SetVirtualAddressMap()
24 * has not been called prior.
25 */
26 if (!type1_family || strcmp(type1_family, "Altra"))
27 return false;
28
29 efi_warn("Working around broken SetVirtualAddressMap()\n");
30 return true;
31}
32
18efi_status_t check_platform_features(void)33efi_status_t check_platform_features(void)
19{34{
20 u64 tg;35 u64 tg;
@@ -24,7 +39,7 @@ efi_status_t check_platform_features(void) · 3 unmodified lines
24 * UEFI runtime regions 1:1 and so calling SetVirtualAddressMap() is39 * UEFI runtime regions 1:1 and so calling SetVirtualAddressMap() is
25 * unnecessary.40 * unnecessary.
26 */41 */
27 if (VA_BITS_MIN >= 48)42 if (VA_BITS_MIN >= 48 && !system_needs_vamap())
28 efi_novamap = true;43 efi_novamap = true;
29 44
30 /* UEFI mandates support for 4 KB granularity, no need to check */45 /* UEFI mandates support for 4 KB granularity, no need to check */
drivers/firmware/efi/libstub/efistub.h+28−0
@@ -975,4 +975,32 @@ efi_enable_reset_attack_mitigation(void) { } · 974 unmodified lines
975 975
976void efi_retrieve_tpm2_eventlog(void);976void efi_retrieve_tpm2_eventlog(void);
977 977
978struct efi_smbios_record {
979 u8 type;
980 u8 length;
981 u16 handle;
982};
983
984struct efi_smbios_type1_record {
985 struct efi_smbios_record header;
986
987 u8 manufacturer;
988 u8 product_name;
989 u8 version;
990 u8 serial_number;
991 efi_guid_t uuid;
992 u8 wakeup_type;
993 u8 sku_number;
994 u8 family;
995};
996
997#define efi_get_smbios_string(__type, __name) ({ \
998 int size = sizeof(struct efi_smbios_type ## __type ## _record); \
999 int off = offsetof(struct efi_smbios_type ## __type ## _record, \
1000 __name); \
1001 __efi_get_smbios_string(__type, off, size); \
1002})
1003
1004const u8 *__efi_get_smbios_string(u8 type, int offset, int recsize);
1005
978#endif1006#endif
drivers/firmware/efi/libstub/smbios.c+48−0
@@ -0,0 +1,48 @@
1// SPDX-License-Identifier: GPL-2.0-only
2// Copyright 2022 Google LLC
3// Author: Ard Biesheuvel <ardb@google.com>
4
5#include <linux/efi.h>
6
7#include "efistub.h"
8
9typedef struct efi_smbios_protocol efi_smbios_protocol_t;
10
11struct efi_smbios_protocol {
12 efi_status_t (__efiapi *add)(efi_smbios_protocol_t *, efi_handle_t,
13 u16 *, struct efi_smbios_record *);
14 efi_status_t (__efiapi *update_string)(efi_smbios_protocol_t *, u16 *,
15 unsigned long *, u8 *);
16 efi_status_t (__efiapi *remove)(efi_smbios_protocol_t *, u16);
17 efi_status_t (__efiapi *get_next)(efi_smbios_protocol_t *, u16 *, u8 *,
18 struct efi_smbios_record **,
19 efi_handle_t *);
20
21 u8 major_version;
22 u8 minor_version;
23};
24
25const u8 *__efi_get_smbios_string(u8 type, int offset, int recsize)
26{
27 struct efi_smbios_record *record;
28 efi_smbios_protocol_t *smbios;
29 efi_status_t status;
30 u16 handle = 0xfffe;
31 const u8 *strtable;
32
33 status = efi_bs_call(locate_protocol, &EFI_SMBIOS_PROTOCOL_GUID, NULL,
34 (void **)&smbios) ?:
35 efi_call_proto(smbios, get_next, &handle, &type, &record, NULL);
36 if (status != EFI_SUCCESS)
37 return NULL;
38
39 strtable = (u8 *)record + recsize;
40 for (int i = 1; i < ((u8 *)record)[offset]; i++) {
41 int len = strlen(strtable);
42
43 if (!len)
44 return NULL;
45 strtable += len + 1;
46 }
47 return strtable;
48}
drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c+1−0
@@ -992,6 +992,7 @@ out_free_user_pages: · 991 unmodified lines
992 kvfree(e->user_pages);992 kvfree(e->user_pages);
993 e->user_pages = NULL;993 e->user_pages = NULL;
994 }994 }
995 mutex_unlock(&p->bo_list->bo_list_mutex);
995 return r;996 return r;
996}997}
997 998
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c+0−26
@@ -143,32 +143,6 @@ int amdgpu_vm_set_pasid(struct amdgpu_device *adev, struct amdgpu_vm *vm, · 142 unmodified lines
143 return 0;143 return 0;
144}144}
145 145
146/*
147 * vm eviction_lock can be taken in MMU notifiers. Make sure no reclaim-FS
148 * happens while holding this lock anywhere to prevent deadlocks when
149 * an MMU notifier runs in reclaim-FS context.
150 */
151static inline void amdgpu_vm_eviction_lock(struct amdgpu_vm *vm)
152{
153 mutex_lock(&vm->eviction_lock);
154 vm->saved_flags = memalloc_noreclaim_save();
155}
156
157static inline int amdgpu_vm_eviction_trylock(struct amdgpu_vm *vm)
158{
159 if (mutex_trylock(&vm->eviction_lock)) {
160 vm->saved_flags = memalloc_noreclaim_save();
161 return 1;
162 }
163 return 0;
164}
165
166static inline void amdgpu_vm_eviction_unlock(struct amdgpu_vm *vm)
167{
168 memalloc_noreclaim_restore(vm->saved_flags);
169 mutex_unlock(&vm->eviction_lock);
170}
171
172/**146/**
173 * amdgpu_vm_bo_evicted - vm_bo is evicted147 * amdgpu_vm_bo_evicted - vm_bo is evicted
174 *148 *
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h+41−0
@@ -492,7 +492,48 @@ void amdgpu_debugfs_vm_bo_info(struct amdgpu_vm *vm, struct seq_file *m); · 491 unmodified lines
492 */492 */
493static inline uint64_t amdgpu_vm_tlb_seq(struct amdgpu_vm *vm)493static inline uint64_t amdgpu_vm_tlb_seq(struct amdgpu_vm *vm)
494{494{
495 unsigned long flags;
496 spinlock_t *lock;
497
498 /*
499 * Workaround to stop racing between the fence signaling and handling
500 * the cb. The lock is static after initially setting it up, just make
501 * sure that the dma_fence structure isn't freed up.
502 */
503 rcu_read_lock();
504 lock = vm->last_tlb_flush->lock;
505 rcu_read_unlock();
506
507 spin_lock_irqsave(lock, flags);
508 spin_unlock_irqrestore(lock, flags);
509
495 return atomic64_read(&vm->tlb_seq);510 return atomic64_read(&vm->tlb_seq);
496}511}
497 512
513/*
514 * vm eviction_lock can be taken in MMU notifiers. Make sure no reclaim-FS
515 * happens while holding this lock anywhere to prevent deadlocks when
516 * an MMU notifier runs in reclaim-FS context.
517 */
518static inline void amdgpu_vm_eviction_lock(struct amdgpu_vm *vm)
519{
520 mutex_lock(&vm->eviction_lock);
521 vm->saved_flags = memalloc_noreclaim_save();
522}
523
524static inline bool amdgpu_vm_eviction_trylock(struct amdgpu_vm *vm)
525{
526 if (mutex_trylock(&vm->eviction_lock)) {
527 vm->saved_flags = memalloc_noreclaim_save();
528 return true;
529 }
530 return false;
531}
532
533static inline void amdgpu_vm_eviction_unlock(struct amdgpu_vm *vm)
534{
535 memalloc_noreclaim_restore(vm->saved_flags);
536 mutex_unlock(&vm->eviction_lock);
537}
538
498#endif539#endif
drivers/gpu/drm/amd/amdgpu/amdgpu_vm_pt.c+2−0
@@ -597,7 +597,9 @@ static int amdgpu_vm_pt_alloc(struct amdgpu_device *adev, · 596 unmodified lines
597 if (entry->bo)597 if (entry->bo)
598 return 0;598 return 0;
599 599
600 amdgpu_vm_eviction_unlock(vm);
600 r = amdgpu_vm_pt_create(adev, vm, cursor->level, immediate, &pt);601 r = amdgpu_vm_pt_create(adev, vm, cursor->level, immediate, &pt);
602 amdgpu_vm_eviction_lock(vm);
601 if (r)603 if (r)
602 return r;604 return r;
603 605
drivers/gpu/drm/amd/amdgpu/amdgpu_vram_mgr.c+1−1
@@ -435,7 +435,7 @@ static int amdgpu_vram_mgr_new(struct ttm_resource_manager *man, · 434 unmodified lines
435 if (place->flags & TTM_PL_FLAG_TOPDOWN)435 if (place->flags & TTM_PL_FLAG_TOPDOWN)
436 vres->flags |= DRM_BUDDY_TOPDOWN_ALLOCATION;436 vres->flags |= DRM_BUDDY_TOPDOWN_ALLOCATION;
437 437
438 if (fpfn || lpfn != man->size)438 if (fpfn || lpfn != mgr->mm.size)
439 /* Allocate blocks in desired range */439 /* Allocate blocks in desired range */
440 vres->flags |= DRM_BUDDY_RANGE_ALLOCATION;440 vres->flags |= DRM_BUDDY_RANGE_ALLOCATION;
441 441
drivers/gpu/drm/amd/amdkfd/kfd_chardev.c+15−19
@@ -1950,7 +1950,7 @@ static int criu_checkpoint(struct file *filep, · 1949 unmodified lines
1950{1950{
1951 int ret;1951 int ret;
1952 uint32_t num_devices, num_bos, num_objects;1952 uint32_t num_devices, num_bos, num_objects;
1953 uint64_t priv_size, priv_offset = 0;1953 uint64_t priv_size, priv_offset = 0, bo_priv_offset;
1954 1954
1955 if (!args->devices || !args->bos || !args->priv_data)1955 if (!args->devices || !args->bos || !args->priv_data)
1956 return -EINVAL;1956 return -EINVAL;
@@ -1994,38 +1994,34 @@ static int criu_checkpoint(struct file *filep, · 37 unmodified lines
1994 if (ret)1994 if (ret)
1995 goto exit_unlock;1995 goto exit_unlock;
1996 1996
1997 ret = criu_checkpoint_bos(p, num_bos, (uint8_t __user *)args->bos,1997 /* Leave room for BOs in the private data. They need to be restored
1998 (uint8_t __user *)args->priv_data, &priv_offset);1998 * before events, but we checkpoint them last to simplify the error
1999 if (ret)1999 * handling.
2000 goto exit_unlock;2000 */
2001 bo_priv_offset = priv_offset;
2002 priv_offset += num_bos * sizeof(struct kfd_criu_bo_priv_data);
2001 2003
2002 if (num_objects) {2004 if (num_objects) {
2003 ret = kfd_criu_checkpoint_queues(p, (uint8_t __user *)args->priv_data,2005 ret = kfd_criu_checkpoint_queues(p, (uint8_t __user *)args->priv_data,
2004 &priv_offset);2006 &priv_offset);
2005 if (ret)2007 if (ret)
2006 goto close_bo_fds;2008 goto exit_unlock;
2007 2009
2008 ret = kfd_criu_checkpoint_events(p, (uint8_t __user *)args->priv_data,2010 ret = kfd_criu_checkpoint_events(p, (uint8_t __user *)args->priv_data,
2009 &priv_offset);2011 &priv_offset);
2010 if (ret)2012 if (ret)
2011 goto close_bo_fds;2013 goto exit_unlock;
2012 2014
2013 ret = kfd_criu_checkpoint_svm(p, (uint8_t __user *)args->priv_data, &priv_offset);2015 ret = kfd_criu_checkpoint_svm(p, (uint8_t __user *)args->priv_data, &priv_offset);
2014 if (ret)2016 if (ret)
2015 goto close_bo_fds;2017 goto exit_unlock;
2016 }2018 }
2017 2019
2018close_bo_fds:2020 /* This must be the last thing in this function that can fail.
2019 if (ret) {2021 * Otherwise we leak dmabuf file descriptors.
2020 /* If IOCTL returns err, user assumes all FDs opened in criu_dump_bos are closed */2022 */
2021 uint32_t i;2023 ret = criu_checkpoint_bos(p, num_bos, (uint8_t __user *)args->bos,
2022 struct kfd_criu_bo_bucket *bo_buckets = (struct kfd_criu_bo_bucket *) args->bos;2024 (uint8_t __user *)args->priv_data, &bo_priv_offset);
2023
2024 for (i = 0; i < num_bos; i++) {
2025 if (bo_buckets[i].alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_VRAM)
2026 close_fd(bo_buckets[i].dmabuf_fd);
2027 }
2028 }
2029 2025
2030exit_unlock:2026exit_unlock:
2031 mutex_unlock(&p->mutex);2027 mutex_unlock(&p->mutex);
drivers/gpu/drm/amd/amdkfd/kfd_events.c+1−2
@@ -506,6 +506,7 @@ int kfd_criu_restore_event(struct file *devkfd, · 505 unmodified lines
506 ret = create_other_event(p, ev, &ev_priv->event_id);506 ret = create_other_event(p, ev, &ev_priv->event_id);
507 break;507 break;
508 }508 }
509 mutex_unlock(&p->event_mutex);
509 510
510exit:511exit:
511 if (ret)512 if (ret)
@@ -513,8 +514,6 @@ exit: · 1 unmodified line
513 514
514 kfree(ev_priv);515 kfree(ev_priv);
515 516
516 mutex_unlock(&p->event_mutex);
517
518 return ret;517 return ret;
519}518}
520 519
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c+4−3
@@ -7622,9 +7622,10 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state, · 7621 unmodified lines
7622 bundle->surface_updates[planes_count].plane_info =7622 bundle->surface_updates[planes_count].plane_info =
7623 &bundle->plane_infos[planes_count];7623 &bundle->plane_infos[planes_count];
7624 7624
7625 fill_dc_dirty_rects(plane, old_plane_state, new_plane_state,7625 if (acrtc_state->stream->link->psr_settings.psr_feature_enabled)
7626 new_crtc_state,7626 fill_dc_dirty_rects(plane, old_plane_state,
7627 &bundle->flip_addrs[planes_count]);7627 new_plane_state, new_crtc_state,
7628 &bundle->flip_addrs[planes_count]);
7628 7629
7629 /*7630 /*
7630 * Only allow immediate flips for fast updates that don't7631 * Only allow immediate flips for fast updates that don't
drivers/gpu/drm/amd/display/dc/clk_mgr/dcn314/dcn314_clk_mgr.c+16−16
@@ -363,32 +363,32 @@ static struct wm_table ddr5_wm_table = { · 362 unmodified lines
363 .wm_inst = WM_A,363 .wm_inst = WM_A,
364 .wm_type = WM_TYPE_PSTATE_CHG,364 .wm_type = WM_TYPE_PSTATE_CHG,
365 .pstate_latency_us = 11.72,365 .pstate_latency_us = 11.72,
366 .sr_exit_time_us = 9,366 .sr_exit_time_us = 12.5,
367 .sr_enter_plus_exit_time_us = 11,367 .sr_enter_plus_exit_time_us = 14.5,
368 .valid = true,368 .valid = true,
369 },369 },
370 {370 {
371 .wm_inst = WM_B,371 .wm_inst = WM_B,
372 .wm_type = WM_TYPE_PSTATE_CHG,372 .wm_type = WM_TYPE_PSTATE_CHG,
373 .pstate_latency_us = 11.72,373 .pstate_latency_us = 11.72,
374 .sr_exit_time_us = 9,374 .sr_exit_time_us = 12.5,
375 .sr_enter_plus_exit_time_us = 11,375 .sr_enter_plus_exit_time_us = 14.5,
376 .valid = true,376 .valid = true,
377 },377 },
378 {378 {
379 .wm_inst = WM_C,379 .wm_inst = WM_C,
380 .wm_type = WM_TYPE_PSTATE_CHG,380 .wm_type = WM_TYPE_PSTATE_CHG,
381 .pstate_latency_us = 11.72,381 .pstate_latency_us = 11.72,
382 .sr_exit_time_us = 9,382 .sr_exit_time_us = 12.5,
383 .sr_enter_plus_exit_time_us = 11,383 .sr_enter_plus_exit_time_us = 14.5,
384 .valid = true,384 .valid = true,
385 },385 },
386 {386 {
387 .wm_inst = WM_D,387 .wm_inst = WM_D,
388 .wm_type = WM_TYPE_PSTATE_CHG,388 .wm_type = WM_TYPE_PSTATE_CHG,
389 .pstate_latency_us = 11.72,389 .pstate_latency_us = 11.72,
390 .sr_exit_time_us = 9,390 .sr_exit_time_us = 12.5,
391 .sr_enter_plus_exit_time_us = 11,391 .sr_enter_plus_exit_time_us = 14.5,
392 .valid = true,392 .valid = true,
393 },393 },
394 }394 }
@@ -400,32 +400,32 @@ static struct wm_table lpddr5_wm_table = { · 5 unmodified lines
400 .wm_inst = WM_A,400 .wm_inst = WM_A,
401 .wm_type = WM_TYPE_PSTATE_CHG,401 .wm_type = WM_TYPE_PSTATE_CHG,
402 .pstate_latency_us = 11.65333,402 .pstate_latency_us = 11.65333,
403 .sr_exit_time_us = 11.5,403 .sr_exit_time_us = 16.5,
404 .sr_enter_plus_exit_time_us = 14.5,404 .sr_enter_plus_exit_time_us = 18.5,
405 .valid = true,405 .valid = true,
406 },406 },
407 {407 {
408 .wm_inst = WM_B,408 .wm_inst = WM_B,
409 .wm_type = WM_TYPE_PSTATE_CHG,409 .wm_type = WM_TYPE_PSTATE_CHG,
410 .pstate_latency_us = 11.65333,410 .pstate_latency_us = 11.65333,
411 .sr_exit_time_us = 11.5,411 .sr_exit_time_us = 16.5,
412 .sr_enter_plus_exit_time_us = 14.5,412 .sr_enter_plus_exit_time_us = 18.5,
413 .valid = true,413 .valid = true,
414 },414 },
415 {415 {
416 .wm_inst = WM_C,416 .wm_inst = WM_C,
417 .wm_type = WM_TYPE_PSTATE_CHG,417 .wm_type = WM_TYPE_PSTATE_CHG,
418 .pstate_latency_us = 11.65333,418 .pstate_latency_us = 11.65333,
419 .sr_exit_time_us = 11.5,419 .sr_exit_time_us = 16.5,
420 .sr_enter_plus_exit_time_us = 14.5,420 .sr_enter_plus_exit_time_us = 18.5,
421 .valid = true,421 .valid = true,
422 },422 },
423 {423 {
424 .wm_inst = WM_D,424 .wm_inst = WM_D,
425 .wm_type = WM_TYPE_PSTATE_CHG,425 .wm_type = WM_TYPE_PSTATE_CHG,
426 .pstate_latency_us = 11.65333,426 .pstate_latency_us = 11.65333,
427 .sr_exit_time_us = 11.5,427 .sr_exit_time_us = 16.5,
428 .sr_enter_plus_exit_time_us = 14.5,428 .sr_enter_plus_exit_time_us = 18.5,
429 .valid = true,429 .valid = true,
430 },430 },
431 }431 }
drivers/gpu/drm/amd/display/dc/dc.h+1−0
@@ -853,6 +853,7 @@ struct dc_debug_options { · 852 unmodified lines
853 bool enable_dp_dig_pixel_rate_div_policy;853 bool enable_dp_dig_pixel_rate_div_policy;
854 enum lttpr_mode lttpr_mode_override;854 enum lttpr_mode lttpr_mode_override;
855 unsigned int dsc_delay_factor_wa_x1000;855 unsigned int dsc_delay_factor_wa_x1000;
856 unsigned int min_prefetch_in_strobe_ns;
856};857};
857 858
858struct gpu_info_soc_bounding_box_v1_0;859struct gpu_info_soc_bounding_box_v1_0;
drivers/gpu/drm/amd/display/dc/dcn314/dcn314_dio_stream_encoder.c+18−6
@@ -49,18 +49,30 @@ · 48 unmodified lines
49#define CTX \49#define CTX \
50 enc1->base.ctx50 enc1->base.ctx
51 51
52static void enc314_reset_fifo(struct stream_encoder *enc, bool reset)
53{
54 struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
55 uint32_t reset_val = reset ? 1 : 0;
56 uint32_t is_symclk_on;
57
58 REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_RESET, reset_val);
59 REG_GET(DIG_FE_CNTL, DIG_SYMCLK_FE_ON, &is_symclk_on);
60
61 if (is_symclk_on)
62 REG_WAIT(DIG_FIFO_CTRL0, DIG_FIFO_RESET_DONE, reset_val, 10, 5000);
63 else
64 udelay(10);
65}
52 66
53static void enc314_enable_fifo(struct stream_encoder *enc)67static void enc314_enable_fifo(struct stream_encoder *enc)
54{68{
55 struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);69 struct dcn10_stream_encoder *enc1 = DCN10STRENC_FROM_STRENC(enc);
56 70
57 /* TODO: Confirm if we need to wait for DIG_SYMCLK_FE_ON */
58 REG_WAIT(DIG_FE_CNTL, DIG_SYMCLK_FE_ON, 1, 10, 5000);
59 REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_READ_START_LEVEL, 0x7);71 REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_READ_START_LEVEL, 0x7);
60 REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_RESET, 1);72
61 REG_WAIT(DIG_FIFO_CTRL0, DIG_FIFO_RESET_DONE, 1, 10, 5000);73 enc314_reset_fifo(enc, true);
62 REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_RESET, 0);74 enc314_reset_fifo(enc, false);
63 REG_WAIT(DIG_FIFO_CTRL0, DIG_FIFO_RESET_DONE, 0, 10, 5000);75
64 REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_ENABLE, 1);76 REG_UPDATE(DIG_FIFO_CTRL0, DIG_FIFO_ENABLE, 1);
65}77}
66 78
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource.c+1−0
@@ -724,6 +724,7 @@ static const struct dc_debug_options debug_defaults_drv = { · 723 unmodified lines
724 .enable_dp_dig_pixel_rate_div_policy = 1,724 .enable_dp_dig_pixel_rate_div_policy = 1,
725 .allow_sw_cursor_fallback = false,725 .allow_sw_cursor_fallback = false,
726 .alloc_extra_way_for_cursor = true,726 .alloc_extra_way_for_cursor = true,
727 .min_prefetch_in_strobe_ns = 60000, // 60us
727};728};
728 729
729static const struct dc_debug_options debug_defaults_diags = {730static const struct dc_debug_options debug_defaults_diags = {
drivers/gpu/drm/amd/display/dc/dcn321/dcn321_resource.c+1−0
@@ -722,6 +722,7 @@ static const struct dc_debug_options debug_defaults_drv = { · 721 unmodified lines
722 .enable_dp_dig_pixel_rate_div_policy = 1,722 .enable_dp_dig_pixel_rate_div_policy = 1,
723 .allow_sw_cursor_fallback = false,723 .allow_sw_cursor_fallback = false,
724 .alloc_extra_way_for_cursor = true,724 .alloc_extra_way_for_cursor = true,
725 .min_prefetch_in_strobe_ns = 60000, // 60us
725};726};
726 727
727static const struct dc_debug_options debug_defaults_diags = {728static const struct dc_debug_options debug_defaults_diags = {
drivers/gpu/drm/amd/display/dc/dml/dcn314/dcn314_fpu.c+2−2
@@ -146,8 +146,8 @@ struct _vcs_dpi_soc_bounding_box_st dcn3_14_soc = { · 145 unmodified lines
146 },146 },
147 },147 },
148 .num_states = 5,148 .num_states = 5,
149 .sr_exit_time_us = 9.0,149 .sr_exit_time_us = 16.5,
150 .sr_enter_plus_exit_time_us = 11.0,150 .sr_enter_plus_exit_time_us = 18.5,
151 .sr_exit_z8_time_us = 442.0,151 .sr_exit_z8_time_us = 442.0,
152 .sr_enter_plus_exit_z8_time_us = 560.0,152 .sr_enter_plus_exit_z8_time_us = 560.0,
153 .writeback_latency_us = 12.0,153 .writeback_latency_us = 12.0,
drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c+2−0
@@ -2364,6 +2364,8 @@ void dcn32_update_bw_bounding_box_fpu(struct dc *dc, struct clk_bw_params *bw_pa · 2363 unmodified lines
2364 /* DML DSC delay factor workaround */2364 /* DML DSC delay factor workaround */
2365 dcn3_2_ip.dsc_delay_factor_wa = dc->debug.dsc_delay_factor_wa_x1000 / 1000.0;2365 dcn3_2_ip.dsc_delay_factor_wa = dc->debug.dsc_delay_factor_wa_x1000 / 1000.0;
2366 2366
2367 dcn3_2_ip.min_prefetch_in_strobe_us = dc->debug.min_prefetch_in_strobe_ns / 1000.0;
2368
2367 /* Override dispclk_dppclk_vco_speed_mhz from Clk Mgr */2369 /* Override dispclk_dppclk_vco_speed_mhz from Clk Mgr */
2368 dcn3_2_soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0;2370 dcn3_2_soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0;
2369 dc->dml.soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0;2371 dc->dml.soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0;
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c+5−0
@@ -786,6 +786,8 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman · 785 unmodified lines
786 v->SwathHeightY[k],786 v->SwathHeightY[k],
787 v->SwathHeightC[k],787 v->SwathHeightC[k],
788 TWait,788 TWait,
789 v->DRAMSpeedPerState[mode_lib->vba.VoltageLevel] <= MEM_STROBE_FREQ_MHZ ?
790 mode_lib->vba.ip.min_prefetch_in_strobe_us : 0,
789 /* Output */791 /* Output */
790 &v->DSTXAfterScaler[k],792 &v->DSTXAfterScaler[k],
791 &v->DSTYAfterScaler[k],793 &v->DSTYAfterScaler[k],
@@ -3192,6 +3194,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l · 2400 unmodified lines
3192 mode_lib->vba.FCLKChangeLatency, mode_lib->vba.UrgLatency[i],3194 mode_lib->vba.FCLKChangeLatency, mode_lib->vba.UrgLatency[i],
3193 mode_lib->vba.SREnterPlusExitTime);3195 mode_lib->vba.SREnterPlusExitTime);
3194 3196
3197 memset(&v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull, 0, sizeof(DmlPipe));
3195 v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dppclk = mode_lib->vba.RequiredDPPCLK[i][j][k];3198 v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dppclk = mode_lib->vba.RequiredDPPCLK[i][j][k];
3196 v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dispclk = mode_lib->vba.RequiredDISPCLK[i][j];3199 v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.Dispclk = mode_lib->vba.RequiredDISPCLK[i][j];
3197 v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.PixelClock = mode_lib->vba.PixelClock[k];3200 v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.myPipe.PixelClock = mode_lib->vba.PixelClock[k];
@@ -3244,6 +3247,8 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l · 46 unmodified lines
3244 v->swath_width_chroma_ub_this_state[k],3247 v->swath_width_chroma_ub_this_state[k],
3245 v->SwathHeightYThisState[k],3248 v->SwathHeightYThisState[k],
3246 v->SwathHeightCThisState[k], v->TWait,3249 v->SwathHeightCThisState[k], v->TWait,
3250 v->DRAMSpeedPerState[i] <= MEM_STROBE_FREQ_MHZ ?
3251 mode_lib->vba.ip.min_prefetch_in_strobe_us : 0,
3247 3252
3248 /* Output */3253 /* Output */
3249 &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.DSTXAfterScaler[k],3254 &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.DSTXAfterScaler[k],
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.h+3−0
@@ -49,6 +49,9 @@ · 48 unmodified lines
49#define BPP_INVALID 049#define BPP_INVALID 0
50#define BPP_BLENDED_PIPE 0xffffffff50#define BPP_BLENDED_PIPE 0xffffffff
51 51
52#define MEM_STROBE_FREQ_MHZ 1600
53#define MEM_STROBE_MAX_DELIVERY_TIME_US 60.0
54
52struct display_mode_lib;55struct display_mode_lib;
53 56
54void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib);57void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib);
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.c+11−3
@@ -3417,6 +3417,7 @@ bool dml32_CalculatePrefetchSchedule( · 3416 unmodified lines
3417 unsigned int SwathHeightY,3417 unsigned int SwathHeightY,
3418 unsigned int SwathHeightC,3418 unsigned int SwathHeightC,
3419 double TWait,3419 double TWait,
3420 double TPreReq,
3420 /* Output */3421 /* Output */
3421 double *DSTXAfterScaler,3422 double *DSTXAfterScaler,
3422 double *DSTYAfterScaler,3423 double *DSTYAfterScaler,
@@ -3474,6 +3475,7 @@ bool dml32_CalculatePrefetchSchedule( · 51 unmodified lines
3474 double min_Lsw;3475 double min_Lsw;
3475 double Tsw_est1 = 0;3476 double Tsw_est1 = 0;
3476 double Tsw_est3 = 0;3477 double Tsw_est3 = 0;
3478 double TPreMargin = 0;
3477 3479
3478 if (v->GPUVMEnable == true && v->HostVMEnable == true)3480 if (v->GPUVMEnable == true && v->HostVMEnable == true)
3479 HostVMDynamicLevelsTrips = v->HostVMMaxNonCachedPageTableLevels;3481 HostVMDynamicLevelsTrips = v->HostVMMaxNonCachedPageTableLevels;
@@ -3699,6 +3701,8 @@ bool dml32_CalculatePrefetchSchedule( · 219 unmodified lines
3699 3701
3700 dst_y_prefetch_equ = dml_floor(4.0 * (dst_y_prefetch_equ + 0.125), 1) / 4.0;3702 dst_y_prefetch_equ = dml_floor(4.0 * (dst_y_prefetch_equ + 0.125), 1) / 4.0;
3701 Tpre_rounded = dst_y_prefetch_equ * LineTime;3703 Tpre_rounded = dst_y_prefetch_equ * LineTime;
3704
3705 TPreMargin = Tpre_rounded - TPreReq;
3702#ifdef __DML_VBA_DEBUG__3706#ifdef __DML_VBA_DEBUG__
3703 dml_print("DML::%s: dst_y_prefetch_equ: %f (after round)\n", __func__, dst_y_prefetch_equ);3707 dml_print("DML::%s: dst_y_prefetch_equ: %f (after round)\n", __func__, dst_y_prefetch_equ);
3704 dml_print("DML::%s: LineTime: %f\n", __func__, LineTime);3708 dml_print("DML::%s: LineTime: %f\n", __func__, LineTime);
@@ -3726,7 +3730,7 @@ bool dml32_CalculatePrefetchSchedule( · 21 unmodified lines
3726 *VRatioPrefetchY = 0;3730 *VRatioPrefetchY = 0;
3727 *VRatioPrefetchC = 0;3731 *VRatioPrefetchC = 0;
3728 *RequiredPrefetchPixDataBWLuma = 0;3732 *RequiredPrefetchPixDataBWLuma = 0;
3729 if (dst_y_prefetch_equ > 1) {3733 if (dst_y_prefetch_equ > 1 && TPreMargin > 0.0) {
3730 double PrefetchBandwidth1;3734 double PrefetchBandwidth1;
3731 double PrefetchBandwidth2;3735 double PrefetchBandwidth2;
3732 double PrefetchBandwidth3;3736 double PrefetchBandwidth3;
@@ -3872,7 +3876,11 @@ bool dml32_CalculatePrefetchSchedule( · 139 unmodified lines
3872 }3876 }
3873 3877
3874 if (dst_y_prefetch_oto < dst_y_prefetch_equ) {3878 if (dst_y_prefetch_oto < dst_y_prefetch_equ) {
3875 *DestinationLinesForPrefetch = dst_y_prefetch_oto;3879 if (dst_y_prefetch_oto * LineTime < TPreReq) {
3880 *DestinationLinesForPrefetch = dst_y_prefetch_equ;
3881 } else {
3882 *DestinationLinesForPrefetch = dst_y_prefetch_oto;
3883 }
3876 TimeForFetchingMetaPTE = Tvm_oto;3884 TimeForFetchingMetaPTE = Tvm_oto;
3877 TimeForFetchingRowInVBlank = Tr0_oto;3885 TimeForFetchingRowInVBlank = Tr0_oto;
3878 *PrefetchBandwidth = prefetch_bw_oto;3886 *PrefetchBandwidth = prefetch_bw_oto;
@@ -4397,7 +4405,7 @@ void dml32_CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport( · 518 unmodified lines
4397 4405
4398 if (v->NumberOfActiveSurfaces > 1) {4406 if (v->NumberOfActiveSurfaces > 1) {
4399 ActiveClockChangeLatencyHidingY = ActiveClockChangeLatencyHidingY4407 ActiveClockChangeLatencyHidingY = ActiveClockChangeLatencyHidingY
4400 - (1 - 1 / v->NumberOfActiveSurfaces) * SwathHeightY[k] * v->HTotal[k]4408 - (1.0 - 1.0 / v->NumberOfActiveSurfaces) * SwathHeightY[k] * v->HTotal[k]
4401 / v->PixelClock[k] / v->VRatio[k];4409 / v->PixelClock[k] / v->VRatio[k];
4402 }4410 }
4403 4411
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_util_32.h+2−1
@@ -30,7 +30,7 @@ · 29 unmodified lines
30#include "os_types.h"30#include "os_types.h"
31#include "../dc_features.h"31#include "../dc_features.h"
32#include "../display_mode_structs.h"32#include "../display_mode_structs.h"
33#include "dml/display_mode_vba.h"33#include "../display_mode_vba.h"
34 34
35unsigned int dml32_dscceComputeDelay(35unsigned int dml32_dscceComputeDelay(
36 unsigned int bpc,36 unsigned int bpc,
@@ -743,6 +743,7 @@ bool dml32_CalculatePrefetchSchedule( · 706 unmodified lines
743 unsigned int SwathHeightY,743 unsigned int SwathHeightY,
744 unsigned int SwathHeightC,744 unsigned int SwathHeightC,
745 double TWait,745 double TWait,
746 double TPreReq,
746 /* Output */747 /* Output */
747 double *DSTXAfterScaler,748 double *DSTXAfterScaler,
748 double *DSTYAfterScaler,749 double *DSTYAfterScaler,
drivers/gpu/drm/amd/display/dc/dml/dcn321/dcn321_fpu.c+2−0
@@ -544,6 +544,8 @@ void dcn321_update_bw_bounding_box_fpu(struct dc *dc, struct clk_bw_params *bw_p · 543 unmodified lines
544 /* DML DSC delay factor workaround */544 /* DML DSC delay factor workaround */
545 dcn3_21_ip.dsc_delay_factor_wa = dc->debug.dsc_delay_factor_wa_x1000 / 1000.0;545 dcn3_21_ip.dsc_delay_factor_wa = dc->debug.dsc_delay_factor_wa_x1000 / 1000.0;
546 546
547 dcn3_21_ip.min_prefetch_in_strobe_us = dc->debug.min_prefetch_in_strobe_ns / 1000.0;
548
547 /* Override dispclk_dppclk_vco_speed_mhz from Clk Mgr */549 /* Override dispclk_dppclk_vco_speed_mhz from Clk Mgr */
548 dcn3_21_soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0;550 dcn3_21_soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0;
549 dc->dml.soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0;551 dc->dml.soc.dispclk_dppclk_vco_speed_mhz = dc->clk_mgr->dentist_vco_freq_khz / 1000.0;
drivers/gpu/drm/amd/display/dc/dml/display_mode_structs.h+1−0
@@ -367,6 +367,7 @@ struct _vcs_dpi_ip_params_st { · 366 unmodified lines
367 367
368 /* DM workarounds */368 /* DM workarounds */
369 double dsc_delay_factor_wa; // TODO: Remove after implementing root cause fix369 double dsc_delay_factor_wa; // TODO: Remove after implementing root cause fix
370 double min_prefetch_in_strobe_us;
370};371};
371 372
372struct _vcs_dpi_display_xfc_params_st {373struct _vcs_dpi_display_xfc_params_st {
drivers/gpu/drm/amd/display/dc/gpio/dcn32/hw_factory_dcn32.c+14−0
@@ -107,6 +107,13 @@ static const struct ddc_registers ddc_data_regs_dcn[] = { · 106 unmodified lines
107 ddc_data_regs_dcn2(3),107 ddc_data_regs_dcn2(3),
108 ddc_data_regs_dcn2(4),108 ddc_data_regs_dcn2(4),
109 ddc_data_regs_dcn2(5),109 ddc_data_regs_dcn2(5),
110 {
111 // add a dummy entry for cases no such port
112 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
113 .ddc_setup = 0,
114 .phy_aux_cntl = 0,
115 .dc_gpio_aux_ctrl_5 = 0
116 },
110 {117 {
111 DDC_GPIO_VGA_REG_LIST(DATA),118 DDC_GPIO_VGA_REG_LIST(DATA),
112 .ddc_setup = 0,119 .ddc_setup = 0,
@@ -121,6 +128,13 @@ static const struct ddc_registers ddc_clk_regs_dcn[] = { · 8 unmodified lines
121 ddc_clk_regs_dcn2(3),128 ddc_clk_regs_dcn2(3),
122 ddc_clk_regs_dcn2(4),129 ddc_clk_regs_dcn2(4),
123 ddc_clk_regs_dcn2(5),130 ddc_clk_regs_dcn2(5),
131 {
132 // add a dummy entry for cases no such port
133 {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,},
134 .ddc_setup = 0,
135 .phy_aux_cntl = 0,
136 .dc_gpio_aux_ctrl_5 = 0
137 },
124 {138 {
125 DDC_GPIO_VGA_REG_LIST(CLK),139 DDC_GPIO_VGA_REG_LIST(CLK),
126 .ddc_setup = 0,140 .ddc_setup = 0,
drivers/gpu/drm/amd/display/dc/gpio/hw_ddc.c+6−3
@@ -94,11 +94,14 @@ static enum gpio_result set_config( · 93 unmodified lines
94 * is required for detection of AUX mode */94 * is required for detection of AUX mode */
95 if (hw_gpio->base.en != GPIO_DDC_LINE_VIP_PAD) {95 if (hw_gpio->base.en != GPIO_DDC_LINE_VIP_PAD) {
96 if (!ddc_data_pd_en || !ddc_clk_pd_en) {96 if (!ddc_data_pd_en || !ddc_clk_pd_en) {
97 97 if (hw_gpio->base.en == GPIO_DDC_LINE_DDC_VGA) {
98 REG_SET_2(gpio.MASK_reg, regval,98 // bit 4 of mask has different usage in some cases
99 REG_SET(gpio.MASK_reg, regval, DC_GPIO_DDC1DATA_PD_EN, 1);
100 } else {
101 REG_SET_2(gpio.MASK_reg, regval,
99 DC_GPIO_DDC1DATA_PD_EN, 1,102 DC_GPIO_DDC1DATA_PD_EN, 1,
100 DC_GPIO_DDC1CLK_PD_EN, 1);103 DC_GPIO_DDC1CLK_PD_EN, 1);
101 104 }
102 if (config_data->type ==105 if (config_data->type ==
103 GPIO_CONFIG_TYPE_I2C_AUX_DUAL_MODE)106 GPIO_CONFIG_TYPE_I2C_AUX_DUAL_MODE)
104 msleep(3);107 msleep(3);
drivers/gpu/drm/amd/pm/powerplay/hwmgr/vega10_thermal.c+12−13
@@ -67,22 +67,21 @@ int vega10_fan_ctrl_get_fan_speed_info(struct pp_hwmgr *hwmgr, · 66 unmodified lines
67int vega10_fan_ctrl_get_fan_speed_pwm(struct pp_hwmgr *hwmgr,67int vega10_fan_ctrl_get_fan_speed_pwm(struct pp_hwmgr *hwmgr,
68 uint32_t *speed)68 uint32_t *speed)
69{69{
70 uint32_t current_rpm;70 struct amdgpu_device *adev = hwmgr->adev;
71 uint32_t percent = 0;71 uint32_t duty100, duty;
72 72 uint64_t tmp64;
73 if (hwmgr->thermal_controller.fanInfo.bNoFan)
74 return 0;
75 73
76 if (vega10_get_current_rpm(hwmgr, &current_rpm))74 duty100 = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_FDO_CTRL1),
77 return -1;75 CG_FDO_CTRL1, FMAX_DUTY100);
76 duty = REG_GET_FIELD(RREG32_SOC15(THM, 0, mmCG_THERMAL_STATUS),
77 CG_THERMAL_STATUS, FDO_PWM_DUTY);
78 78
79 if (hwmgr->thermal_controller.79 if (!duty100)
80 advanceFanControlParameters.usMaxFanRPM != 0)80 return -EINVAL;
81 percent = current_rpm * 255 /
82 hwmgr->thermal_controller.
83 advanceFanControlParameters.usMaxFanRPM;
84 81
85 *speed = MIN(percent, 255);82 tmp64 = (uint64_t)duty * 255;
83 do_div(tmp64, duty100);
84 *speed = MIN((uint32_t)tmp64, 255);
86 85
87 return 0;86 return 0;
88}87}
drivers/gpu/drm/amd/pm/swsmu/inc/pmfw_if/smu_v13_0_4_ppsmc.h+7−8
@@ -54,14 +54,14 @@ · 53 unmodified lines
54#define PPSMC_MSG_TestMessage 0x01 ///< To check if PMFW is alive and responding. Requirement specified by PMFW team54#define PPSMC_MSG_TestMessage 0x01 ///< To check if PMFW is alive and responding. Requirement specified by PMFW team
55#define PPSMC_MSG_GetPmfwVersion 0x02 ///< Get PMFW version55#define PPSMC_MSG_GetPmfwVersion 0x02 ///< Get PMFW version
56#define PPSMC_MSG_GetDriverIfVersion 0x03 ///< Get PMFW_DRIVER_IF version56#define PPSMC_MSG_GetDriverIfVersion 0x03 ///< Get PMFW_DRIVER_IF version
57#define PPSMC_MSG_EnableGfxOff 0x04 ///< Enable GFXOFF57#define PPSMC_MSG_SPARE0 0x04 ///< SPARE
58#define PPSMC_MSG_DisableGfxOff 0x05 ///< Disable GFXOFF58#define PPSMC_MSG_SPARE1 0x05 ///< SPARE
59#define PPSMC_MSG_PowerDownVcn 0x06 ///< Power down VCN59#define PPSMC_MSG_PowerDownVcn 0x06 ///< Power down VCN
60#define PPSMC_MSG_PowerUpVcn 0x07 ///< Power up VCN; VCN is power gated by default60#define PPSMC_MSG_PowerUpVcn 0x07 ///< Power up VCN; VCN is power gated by default
61#define PPSMC_MSG_SetHardMinVcn 0x08 ///< For wireless display61#define PPSMC_MSG_SetHardMinVcn 0x08 ///< For wireless display
62#define PPSMC_MSG_SetSoftMinGfxclk 0x09 ///< Set SoftMin for GFXCLK, argument is frequency in MHz62#define PPSMC_MSG_SetSoftMinGfxclk 0x09 ///< Set SoftMin for GFXCLK, argument is frequency in MHz
63#define PPSMC_MSG_ActiveProcessNotify 0x0A ///< Needs update63#define PPSMC_MSG_SPARE2 0x0A ///< SPARE
64#define PPSMC_MSG_ForcePowerDownGfx 0x0B ///< Force power down GFX, i.e. enter GFXOFF64#define PPSMC_MSG_SPARE3 0x0B ///< SPARE
65#define PPSMC_MSG_PrepareMp1ForUnload 0x0C ///< Prepare PMFW for GFX driver unload65#define PPSMC_MSG_PrepareMp1ForUnload 0x0C ///< Prepare PMFW for GFX driver unload
66#define PPSMC_MSG_SetDriverDramAddrHigh 0x0D ///< Set high 32 bits of DRAM address for Driver table transfer66#define PPSMC_MSG_SetDriverDramAddrHigh 0x0D ///< Set high 32 bits of DRAM address for Driver table transfer
67#define PPSMC_MSG_SetDriverDramAddrLow 0x0E ///< Set low 32 bits of DRAM address for Driver table transfer67#define PPSMC_MSG_SetDriverDramAddrLow 0x0E ///< Set low 32 bits of DRAM address for Driver table transfer
@@ -73,8 +73,7 @@ · 5 unmodified lines
73#define PPSMC_MSG_SetSoftMinFclk 0x14 ///< Set hard min for FCLK73#define PPSMC_MSG_SetSoftMinFclk 0x14 ///< Set hard min for FCLK
74#define PPSMC_MSG_SetSoftMinVcn 0x15 ///< Set soft min for VCN clocks (VCLK and DCLK)74#define PPSMC_MSG_SetSoftMinVcn 0x15 ///< Set soft min for VCN clocks (VCLK and DCLK)
75 75
76 76#define PPSMC_MSG_EnableGfxImu 0x16 ///< Enable GFX IMU
77#define PPSMC_MSG_EnableGfxImu 0x16 ///< Needs update
78 77
79#define PPSMC_MSG_GetGfxclkFrequency 0x17 ///< Get GFX clock frequency78#define PPSMC_MSG_GetGfxclkFrequency 0x17 ///< Get GFX clock frequency
80#define PPSMC_MSG_GetFclkFrequency 0x18 ///< Get FCLK frequency79#define PPSMC_MSG_GetFclkFrequency 0x18 ///< Get FCLK frequency
@@ -102,8 +101,8 @@ · 21 unmodified lines
102#define PPSMC_MSG_SetHardMinIspxclkByFreq 0x2C ///< Set HardMin by frequency for ISPXCLK101#define PPSMC_MSG_SetHardMinIspxclkByFreq 0x2C ///< Set HardMin by frequency for ISPXCLK
103#define PPSMC_MSG_PowerDownUmsch 0x2D ///< Power down VCN.UMSCH (aka VSCH) scheduler102#define PPSMC_MSG_PowerDownUmsch 0x2D ///< Power down VCN.UMSCH (aka VSCH) scheduler
104#define PPSMC_MSG_PowerUpUmsch 0x2E ///< Power up VCN.UMSCH (aka VSCH) scheduler103#define PPSMC_MSG_PowerUpUmsch 0x2E ///< Power up VCN.UMSCH (aka VSCH) scheduler
105#define PPSMC_Message_IspStutterOn_MmhubPgDis 0x2F ///< ISP StutterOn mmHub PgDis104#define PPSMC_MSG_IspStutterOn_MmhubPgDis 0x2F ///< ISP StutterOn mmHub PgDis
106#define PPSMC_Message_IspStutterOff_MmhubPgEn 0x30 ///< ISP StufferOff mmHub PgEn105#define PPSMC_MSG_IspStutterOff_MmhubPgEn 0x30 ///< ISP StufferOff mmHub PgEn
107 106
108#define PPSMC_Message_Count 0x31 ///< Total number of PPSMC messages107#define PPSMC_Message_Count 0x31 ///< Total number of PPSMC messages
109/** @}*/108/** @}*/
drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c+3−1
@@ -377,7 +377,9 @@ static void sienna_cichlid_check_bxco_support(struct smu_context *smu) · 376 unmodified lines
377 if (((adev->pdev->device == 0x73A1) &&377 if (((adev->pdev->device == 0x73A1) &&
378 (adev->pdev->revision == 0x00)) ||378 (adev->pdev->revision == 0x00)) ||
379 ((adev->pdev->device == 0x73BF) &&379 ((adev->pdev->device == 0x73BF) &&
380 (adev->pdev->revision == 0xCF)))380 (adev->pdev->revision == 0xCF)) ||
381 ((adev->pdev->device == 0x7422) &&
382 (adev->pdev->revision == 0x00)))
381 smu_baco->platform_support = false;383 smu_baco->platform_support = false;
382 384
383 }385 }
drivers/gpu/drm/drm_panel_orientation_quirks.c+12−0
@@ -134,6 +134,12 @@ static const struct dmi_system_id orientation_data[] = { · 133 unmodified lines
134 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "One S1003"),134 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "One S1003"),
135 },135 },
136 .driver_data = (void *)&lcd800x1280_rightside_up,136 .driver_data = (void *)&lcd800x1280_rightside_up,
137 }, { /* Acer Switch V 10 (SW5-017) */
138 .matches = {
139 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Acer"),
140 DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "SW5-017"),
141 },
142 .driver_data = (void *)&lcd800x1280_rightside_up,
137 }, { /* Anbernic Win600 */143 }, { /* Anbernic Win600 */
138 .matches = {144 .matches = {
139 DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Anbernic"),145 DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Anbernic"),
@@ -319,6 +325,12 @@ static const struct dmi_system_id orientation_data[] = { · 179 unmodified lines
319 DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"),325 DMI_MATCH(DMI_BIOS_VERSION, "BLADE_21"),
320 },326 },
321 .driver_data = (void *)&lcd1200x1920_rightside_up,327 .driver_data = (void *)&lcd1200x1920_rightside_up,
328 }, { /* Nanote UMPC-01 */
329 .matches = {
330 DMI_MATCH(DMI_SYS_VENDOR, "RWC CO.,LTD"),
331 DMI_MATCH(DMI_PRODUCT_NAME, "UMPC-01"),
332 },
333 .driver_data = (void *)&lcd1200x1920_rightside_up,
322 }, { /* OneGX1 Pro */334 }, { /* OneGX1 Pro */
323 .matches = {335 .matches = {
324 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SYSTEM_MANUFACTURER"),336 DMI_EXACT_MATCH(DMI_SYS_VENDOR, "SYSTEM_MANUFACTURER"),
drivers/gpu/drm/i915/display/intel_psr.c+4−1
@@ -2201,8 +2201,11 @@ static void _psr_invalidate_handle(struct intel_dp *intel_dp) · 2200 unmodified lines
2201 if (intel_dp->psr.psr2_sel_fetch_enabled) {2201 if (intel_dp->psr.psr2_sel_fetch_enabled) {
2202 u32 val;2202 u32 val;
2203 2203
2204 if (intel_dp->psr.psr2_sel_fetch_cff_enabled)2204 if (intel_dp->psr.psr2_sel_fetch_cff_enabled) {
2205 /* Send one update otherwise lag is observed in screen */
2206 intel_de_write(dev_priv, CURSURFLIVE(intel_dp->psr.pipe), 0);
2205 return;2207 return;
2208 }
2206 2209
2207 val = man_trk_ctl_enable_bit_get(dev_priv) |2210 val = man_trk_ctl_enable_bit_get(dev_priv) |
2208 man_trk_ctl_partial_frame_bit_get(dev_priv) |2211 man_trk_ctl_partial_frame_bit_get(dev_priv) |
drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c+2−2
@@ -40,13 +40,13 @@ static struct sg_table *i915_gem_map_dma_buf(struct dma_buf_attachment *attachme · 39 unmodified lines
40 goto err;40 goto err;
41 }41 }
42 42
43 ret = sg_alloc_table(st, obj->mm.pages->nents, GFP_KERNEL);43 ret = sg_alloc_table(st, obj->mm.pages->orig_nents, GFP_KERNEL);
44 if (ret)44 if (ret)
45 goto err_free;45 goto err_free;
46 46
47 src = obj->mm.pages->sgl;47 src = obj->mm.pages->sgl;
48 dst = st->sgl;48 dst = st->sgl;
49 for (i = 0; i < obj->mm.pages->nents; i++) {49 for (i = 0; i < obj->mm.pages->orig_nents; i++) {
50 sg_set_page(dst, sg_page(src), src->length, 0);50 sg_set_page(dst, sg_page(src), src->length, 0);
51 dst = sg_next(dst);51 dst = sg_next(dst);
52 src = sg_next(src);52 src = sg_next(src);
drivers/gpu/drm/i915/gem/i915_gem_shmem.c+2−2
@@ -369,14 +369,14 @@ __i915_gem_object_release_shmem(struct drm_i915_gem_object *obj, · 368 unmodified lines
369 369
370 __start_cpu_write(obj);370 __start_cpu_write(obj);
371 /*371 /*
372 * On non-LLC platforms, force the flush-on-acquire if this is ever372 * On non-LLC igfx platforms, force the flush-on-acquire if this is ever
373 * swapped-in. Our async flush path is not trust worthy enough yet(and373 * swapped-in. Our async flush path is not trust worthy enough yet(and
374 * happens in the wrong order), and with some tricks it's conceivable374 * happens in the wrong order), and with some tricks it's conceivable
375 * for userspace to change the cache-level to I915_CACHE_NONE after the375 * for userspace to change the cache-level to I915_CACHE_NONE after the
376 * pages are swapped-in, and since execbuf binds the object before doing376 * pages are swapped-in, and since execbuf binds the object before doing
377 * the async flush, we have a race window.377 * the async flush, we have a race window.
378 */378 */
379 if (!HAS_LLC(i915))379 if (!HAS_LLC(i915) && !IS_DGFX(i915))
380 obj->cache_dirty = true;380 obj->cache_dirty = true;
381}381}
382 382
drivers/gpu/drm/i915/gem/i915_gem_userptr.c+3−2
@@ -428,9 +428,10 @@ probe_range(struct mm_struct *mm, unsigned long addr, unsigned long len) · 427 unmodified lines
428{428{
429 VMA_ITERATOR(vmi, mm, addr);429 VMA_ITERATOR(vmi, mm, addr);
430 struct vm_area_struct *vma;430 struct vm_area_struct *vma;
431 unsigned long end = addr + len;
431 432
432 mmap_read_lock(mm);433 mmap_read_lock(mm);
433 for_each_vma_range(vmi, vma, addr + len) {434 for_each_vma_range(vmi, vma, end) {
434 /* Check for holes, note that we also update the addr below */435 /* Check for holes, note that we also update the addr below */
435 if (vma->vm_start > addr)436 if (vma->vm_start > addr)
436 break;437 break;
@@ -442,7 +443,7 @@ probe_range(struct mm_struct *mm, unsigned long addr, unsigned long len) · 5 unmodified lines
442 }443 }
443 mmap_read_unlock(mm);444 mmap_read_unlock(mm);
444 445
445 if (vma)446 if (vma || addr < end)
446 return -EFAULT;447 return -EFAULT;
447 return 0;448 return 0;
448}449}
drivers/gpu/drm/panfrost/panfrost_mmu.c+10−1
@@ -250,13 +250,22 @@ void panfrost_mmu_reset(struct panfrost_device *pfdev) · 249 unmodified lines
250 250
251static size_t get_pgsize(u64 addr, size_t size, size_t *count)251static size_t get_pgsize(u64 addr, size_t size, size_t *count)
252{252{
253 /*
254 * io-pgtable only operates on multiple pages within a single table
255 * entry, so we need to split at boundaries of the table size, i.e.
256 * the next block size up. The distance from address A to the next
257 * boundary of block size B is logically B - A % B, but in unsigned
258 * two's complement where B is a power of two we get the equivalence
259 * B - A % B == (B - A) % B == (n * B - A) % B, and choose n = 0 :)
260 */
253 size_t blk_offset = -addr % SZ_2M;261 size_t blk_offset = -addr % SZ_2M;
254 262
255 if (blk_offset || size < SZ_2M) {263 if (blk_offset || size < SZ_2M) {
256 *count = min_not_zero(blk_offset, size) / SZ_4K;264 *count = min_not_zero(blk_offset, size) / SZ_4K;
257 return SZ_4K;265 return SZ_4K;
258 }266 }
259 *count = size / SZ_2M;267 blk_offset = -addr % SZ_1G ?: SZ_1G;
268 *count = min(blk_offset, size) / SZ_2M;
260 return SZ_2M;269 return SZ_2M;
261}270}
262 271
drivers/gpu/drm/rcar-du/Kconfig+9−4
@@ -44,13 +44,18 @@ config DRM_RCAR_LVDS · 43 unmodified lines
44 select OF_FLATTREE44 select OF_FLATTREE
45 select OF_OVERLAY45 select OF_OVERLAY
46 46
47config DRM_RCAR_MIPI_DSI47config DRM_RCAR_USE_MIPI_DSI
48 tristate "R-Car DU MIPI DSI Encoder Support"48 bool "R-Car DU MIPI DSI Encoder Support"
49 depends on DRM && DRM_BRIDGE && OF49 depends on DRM_BRIDGE && OF
50 select DRM_MIPI_DSI50 default DRM_RCAR_DU
51 help51 help
52 Enable support for the R-Car Display Unit embedded MIPI DSI encoders.52 Enable support for the R-Car Display Unit embedded MIPI DSI encoders.
53 53
54config DRM_RCAR_MIPI_DSI
55 def_tristate DRM_RCAR_DU
56 depends on DRM_RCAR_USE_MIPI_DSI
57 select DRM_MIPI_DSI
58
54config DRM_RCAR_VSP59config DRM_RCAR_VSP
55 bool "R-Car DU VSP Compositor Support" if ARM60 bool "R-Car DU VSP Compositor Support" if ARM
56 default y if ARM6461 default y if ARM64
drivers/gpu/drm/vc4/vc4_drv.c+6−1
@@ -476,7 +476,12 @@ static int __init vc4_drm_register(void) · 475 unmodified lines
476 if (ret)476 if (ret)
477 return ret;477 return ret;
478 478
479 return platform_driver_register(&vc4_platform_driver);479 ret = platform_driver_register(&vc4_platform_driver);
480 if (ret)
481 platform_unregister_drivers(component_drivers,
482 ARRAY_SIZE(component_drivers));
483
484 return ret;
480}485}
481 486
482static void __exit vc4_drm_unregister(void)487static void __exit vc4_drm_unregister(void)
drivers/gpu/drm/vc4/vc4_hdmi.c+36−11
@@ -349,27 +349,40 @@ static int vc4_hdmi_reset_link(struct drm_connector *connector, · 348 unmodified lines
349 if (!crtc_state->active)349 if (!crtc_state->active)
350 return 0;350 return 0;
351 351
352 if (!vc4_hdmi_supports_scrambling(encoder))352 mutex_lock(&vc4_hdmi->mutex);
353
354 if (!vc4_hdmi_supports_scrambling(encoder)) {
355 mutex_unlock(&vc4_hdmi->mutex);
353 return 0;356 return 0;
357 }
354 358
355 scrambling_needed = vc4_hdmi_mode_needs_scrambling(&vc4_hdmi->saved_adjusted_mode,359 scrambling_needed = vc4_hdmi_mode_needs_scrambling(&vc4_hdmi->saved_adjusted_mode,
356 vc4_hdmi->output_bpc,360 vc4_hdmi->output_bpc,
357 vc4_hdmi->output_format);361 vc4_hdmi->output_format);
358 if (!scrambling_needed)362 if (!scrambling_needed) {
363 mutex_unlock(&vc4_hdmi->mutex);
359 return 0;364 return 0;
365 }
360 366
361 if (conn_state->commit &&367 if (conn_state->commit &&
362 !try_wait_for_completion(&conn_state->commit->hw_done))368 !try_wait_for_completion(&conn_state->commit->hw_done)) {
369 mutex_unlock(&vc4_hdmi->mutex);
363 return 0;370 return 0;
371 }
364 372
365 ret = drm_scdc_readb(connector->ddc, SCDC_TMDS_CONFIG, &config);373 ret = drm_scdc_readb(connector->ddc, SCDC_TMDS_CONFIG, &config);
366 if (ret < 0) {374 if (ret < 0) {
367 drm_err(drm, "Failed to read TMDS config: %d\n", ret);375 drm_err(drm, "Failed to read TMDS config: %d\n", ret);
376 mutex_unlock(&vc4_hdmi->mutex);
368 return 0;377 return 0;
369 }378 }
370 379
371 if (!!(config & SCDC_SCRAMBLING_ENABLE) == scrambling_needed)380 if (!!(config & SCDC_SCRAMBLING_ENABLE) == scrambling_needed) {
381 mutex_unlock(&vc4_hdmi->mutex);
372 return 0;382 return 0;
383 }
384
385 mutex_unlock(&vc4_hdmi->mutex);
373 386
374 /*387 /*
375 * HDMI 2.0 says that one should not send scrambled data388 * HDMI 2.0 says that one should not send scrambled data
@@ -397,9 +410,8 @@ static void vc4_hdmi_handle_hotplug(struct vc4_hdmi *vc4_hdmi, · 21 unmodified lines
397 * .adap_enable, which leads to that funtion being called with410 * .adap_enable, which leads to that funtion being called with
398 * our mutex held.411 * our mutex held.
399 *412 *
400 * A similar situation occurs with413 * A similar situation occurs with vc4_hdmi_reset_link() that
401 * drm_atomic_helper_connector_hdmi_reset_link() that will call414 * will call into our KMS hooks if the scrambling was enabled.
402 * into our KMS hooks if the scrambling was enabled.
403 *415 *
404 * Concurrency isn't an issue at the moment since we don't share416 * Concurrency isn't an issue at the moment since we don't share
405 * any state with any of the other frameworks so we can ignore417 * any state with any of the other frameworks so we can ignore
@@ -3160,9 +3172,16 @@ static int vc4_hdmi_init_resources(struct drm_device *drm, · 2754 unmodified lines
3160 DRM_ERROR("Failed to get HDMI state machine clock\n");3172 DRM_ERROR("Failed to get HDMI state machine clock\n");
3161 return PTR_ERR(vc4_hdmi->hsm_clock);3173 return PTR_ERR(vc4_hdmi->hsm_clock);
3162 }3174 }
3175
3163 vc4_hdmi->audio_clock = vc4_hdmi->hsm_clock;3176 vc4_hdmi->audio_clock = vc4_hdmi->hsm_clock;
3164 vc4_hdmi->cec_clock = vc4_hdmi->hsm_clock;3177 vc4_hdmi->cec_clock = vc4_hdmi->hsm_clock;
3165 3178
3179 vc4_hdmi->hsm_rpm_clock = devm_clk_get(dev, "hdmi");
3180 if (IS_ERR(vc4_hdmi->hsm_rpm_clock)) {
3181 DRM_ERROR("Failed to get HDMI state machine clock\n");
3182 return PTR_ERR(vc4_hdmi->hsm_rpm_clock);
3183 }
3184
3166 return 0;3185 return 0;
3167}3186}
3168 3187
@@ -3245,6 +3264,12 @@ static int vc5_hdmi_init_resources(struct drm_device *drm, · 76 unmodified lines
3245 return PTR_ERR(vc4_hdmi->hsm_clock);3264 return PTR_ERR(vc4_hdmi->hsm_clock);
3246 }3265 }
3247 3266
3267 vc4_hdmi->hsm_rpm_clock = devm_clk_get(dev, "hdmi");
3268 if (IS_ERR(vc4_hdmi->hsm_rpm_clock)) {
3269 DRM_ERROR("Failed to get HDMI state machine clock\n");
3270 return PTR_ERR(vc4_hdmi->hsm_rpm_clock);
3271 }
3272
3248 vc4_hdmi->pixel_bvb_clock = devm_clk_get(dev, "bvb");3273 vc4_hdmi->pixel_bvb_clock = devm_clk_get(dev, "bvb");
3249 if (IS_ERR(vc4_hdmi->pixel_bvb_clock)) {3274 if (IS_ERR(vc4_hdmi->pixel_bvb_clock)) {
3250 DRM_ERROR("Failed to get pixel bvb clock\n");3275 DRM_ERROR("Failed to get pixel bvb clock\n");
@@ -3308,7 +3333,7 @@ static int vc4_hdmi_runtime_suspend(struct device *dev) · 57 unmodified lines
3308{3333{
3309 struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);3334 struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
3310 3335
3311 clk_disable_unprepare(vc4_hdmi->hsm_clock);3336 clk_disable_unprepare(vc4_hdmi->hsm_rpm_clock);
3312 3337
3313 return 0;3338 return 0;
3314}3339}
@@ -3326,11 +3351,11 @@ static int vc4_hdmi_runtime_resume(struct device *dev) · 11 unmodified lines
3326 * its frequency while the power domain is active so that it3351 * its frequency while the power domain is active so that it
3327 * keeps its rate.3352 * keeps its rate.
3328 */3353 */
3329 ret = clk_set_min_rate(vc4_hdmi->hsm_clock, HSM_MIN_CLOCK_FREQ);3354 ret = clk_set_min_rate(vc4_hdmi->hsm_rpm_clock, HSM_MIN_CLOCK_FREQ);
3330 if (ret)3355 if (ret)
3331 return ret;3356 return ret;
3332 3357
3333 ret = clk_prepare_enable(vc4_hdmi->hsm_clock);3358 ret = clk_prepare_enable(vc4_hdmi->hsm_rpm_clock);
3334 if (ret)3359 if (ret)
3335 return ret;3360 return ret;
3336 3361
@@ -3343,7 +3368,7 @@ static int vc4_hdmi_runtime_resume(struct device *dev) · 6 unmodified lines
3343 * case, it will lead to a silent CPU stall. Let's make sure we3368 * case, it will lead to a silent CPU stall. Let's make sure we
3344 * prevent such a case.3369 * prevent such a case.
3345 */3370 */
3346 rate = clk_get_rate(vc4_hdmi->hsm_clock);3371 rate = clk_get_rate(vc4_hdmi->hsm_rpm_clock);
3347 if (!rate) {3372 if (!rate) {
3348 ret = -EINVAL;3373 ret = -EINVAL;
3349 goto err_disable_clk;3374 goto err_disable_clk;
drivers/gpu/drm/vc4/vc4_hdmi.h+1−0
@@ -172,6 +172,7 @@ struct vc4_hdmi { · 171 unmodified lines
172 struct clk *cec_clock;172 struct clk *cec_clock;
173 struct clk *pixel_clock;173 struct clk *pixel_clock;
174 struct clk *hsm_clock;174 struct clk *hsm_clock;
175 struct clk *hsm_rpm_clock;
175 struct clk *audio_clock;176 struct clk *audio_clock;
176 struct clk *pixel_bvb_clock;177 struct clk *pixel_bvb_clock;
177 178
drivers/hid/hid-asus.c+1−3
@@ -219,14 +219,13 @@ static void asus_report_tool_width(struct asus_drvdata *drvdat) · 218 unmodified lines
219{219{
220 struct input_mt *mt = drvdat->input->mt;220 struct input_mt *mt = drvdat->input->mt;
221 struct input_mt_slot *oldest;221 struct input_mt_slot *oldest;
222 int oldid, count, i;222 int oldid, i;
223 223
224 if (drvdat->tp->contact_size < 5)224 if (drvdat->tp->contact_size < 5)
225 return;225 return;
226 226
227 oldest = NULL;227 oldest = NULL;
228 oldid = mt->trkid;228 oldid = mt->trkid;
229 count = 0;
230 229
231 for (i = 0; i < mt->num_slots; ++i) {230 for (i = 0; i < mt->num_slots; ++i) {
232 struct input_mt_slot *ps = &mt->slots[i];231 struct input_mt_slot *ps = &mt->slots[i];
@@ -238,7 +237,6 @@ static void asus_report_tool_width(struct asus_drvdata *drvdat) · 5 unmodified lines
238 oldest = ps;237 oldest = ps;
239 oldid = id;238 oldid = id;
240 }239 }
241 count++;
242 }240 }
243 241
244 if (oldest) {242 if (oldest) {
drivers/hid/hid-hyperv.c+1−1
@@ -499,7 +499,7 @@ static int mousevsc_probe(struct hv_device *device, · 498 unmodified lines
499 499
500 ret = hid_add_device(hid_dev);500 ret = hid_add_device(hid_dev);
501 if (ret)501 if (ret)
502 goto probe_err1;502 goto probe_err2;
503 503
504 504
505 ret = hid_parse(hid_dev);505 ret = hid_parse(hid_dev);
drivers/hid/wacom_wac.c+6−5
@@ -2520,11 +2520,12 @@ static void wacom_wac_pen_report(struct hid_device *hdev, · 2519 unmodified lines
2520 2520
2521 if (!delay_pen_events(wacom_wac) && wacom_wac->tool[0]) {2521 if (!delay_pen_events(wacom_wac) && wacom_wac->tool[0]) {
2522 int id = wacom_wac->id[0];2522 int id = wacom_wac->id[0];
2523 if (wacom_wac->features.quirks & WACOM_QUIRK_PEN_BUTTON3 &&2523 if (wacom_wac->features.quirks & WACOM_QUIRK_PEN_BUTTON3) {
2524 wacom_wac->hid_data.barrelswitch & wacom_wac->hid_data.barrelswitch2) {2524 int sw_state = wacom_wac->hid_data.barrelswitch |
2525 wacom_wac->hid_data.barrelswitch = 0;2525 (wacom_wac->hid_data.barrelswitch2 << 1);
2526 wacom_wac->hid_data.barrelswitch2 = 0;2526 wacom_wac->hid_data.barrelswitch = sw_state == 1;
2527 wacom_wac->hid_data.barrelswitch3 = 1;2527 wacom_wac->hid_data.barrelswitch2 = sw_state == 2;
2528 wacom_wac->hid_data.barrelswitch3 = sw_state == 3;
2528 }2529 }
2529 input_report_key(input, BTN_STYLUS, wacom_wac->hid_data.barrelswitch);2530 input_report_key(input, BTN_STYLUS, wacom_wac->hid_data.barrelswitch);
2530 input_report_key(input, BTN_STYLUS2, wacom_wac->hid_data.barrelswitch2);2531 input_report_key(input, BTN_STYLUS2, wacom_wac->hid_data.barrelswitch2);
drivers/hv/hv_balloon.c+1−1
@@ -905,7 +905,7 @@ static unsigned long handle_pg_range(unsigned long pg_start, · 904 unmodified lines
905 * We have some residual hot add range905 * We have some residual hot add range
906 * that needs to be hot added; hot add906 * that needs to be hot added; hot add
907 * it now. Hot add a multiple of907 * it now. Hot add a multiple of
908 * of HA_CHUNK that fully covers the pages908 * HA_CHUNK that fully covers the pages
909 * we have.909 * we have.
910 */910 */
911 size = (has->end_pfn - has->ha_end_pfn);911 size = (has->end_pfn - has->ha_end_pfn);
drivers/hwspinlock/qcom_hwspinlock.c+32−10
@@ -22,6 +22,7 @@ · 21 unmodified lines
22struct qcom_hwspinlock_of_data {22struct qcom_hwspinlock_of_data {
23 u32 offset;23 u32 offset;
24 u32 stride;24 u32 stride;
25 const struct regmap_config *regmap_config;
25};26};
26 27
27static int qcom_hwspinlock_trylock(struct hwspinlock *lock)28static int qcom_hwspinlock_trylock(struct hwspinlock *lock)
@@ -73,15 +74,42 @@ static const struct qcom_hwspinlock_of_data of_sfpb_mutex = { · 45 unmodified lines
73 .stride = 0x4,74 .stride = 0x4,
74};75};
75 76
76/* All modern platform has offset 0 and stride of 4k */77static const struct regmap_config tcsr_msm8226_mutex_config = {
78 .reg_bits = 32,
79 .reg_stride = 4,
80 .val_bits = 32,
81 .max_register = 0x1000,
82 .fast_io = true,
83};
84
85static const struct qcom_hwspinlock_of_data of_msm8226_tcsr_mutex = {
86 .offset = 0,
87 .stride = 0x80,
88 .regmap_config = &tcsr_msm8226_mutex_config,
89};
90
91static const struct regmap_config tcsr_mutex_config = {
92 .reg_bits = 32,
93 .reg_stride = 4,
94 .val_bits = 32,
95 .max_register = 0x20000,
96 .fast_io = true,
97};
98
77static const struct qcom_hwspinlock_of_data of_tcsr_mutex = {99static const struct qcom_hwspinlock_of_data of_tcsr_mutex = {
78 .offset = 0,100 .offset = 0,
79 .stride = 0x1000,101 .stride = 0x1000,
102 .regmap_config = &tcsr_mutex_config,
80};103};
81 104
82static const struct of_device_id qcom_hwspinlock_of_match[] = {105static const struct of_device_id qcom_hwspinlock_of_match[] = {
83 { .compatible = "qcom,sfpb-mutex", .data = &of_sfpb_mutex },106 { .compatible = "qcom,sfpb-mutex", .data = &of_sfpb_mutex },
84 { .compatible = "qcom,tcsr-mutex", .data = &of_tcsr_mutex },107 { .compatible = "qcom,tcsr-mutex", .data = &of_tcsr_mutex },
108 { .compatible = "qcom,apq8084-tcsr-mutex", .data = &of_msm8226_tcsr_mutex },
109 { .compatible = "qcom,ipq6018-tcsr-mutex", .data = &of_msm8226_tcsr_mutex },
110 { .compatible = "qcom,msm8226-tcsr-mutex", .data = &of_msm8226_tcsr_mutex },
111 { .compatible = "qcom,msm8974-tcsr-mutex", .data = &of_msm8226_tcsr_mutex },
112 { .compatible = "qcom,msm8994-tcsr-mutex", .data = &of_msm8226_tcsr_mutex },
85 { }113 { }
86};114};
87MODULE_DEVICE_TABLE(of, qcom_hwspinlock_of_match);115MODULE_DEVICE_TABLE(of, qcom_hwspinlock_of_match);
@@ -117,14 +145,6 @@ static struct regmap *qcom_hwspinlock_probe_syscon(struct platform_device *pdev, · 29 unmodified lines
117 return regmap;145 return regmap;
118}146}
119 147
120static const struct regmap_config tcsr_mutex_config = {
121 .reg_bits = 32,
122 .reg_stride = 4,
123 .val_bits = 32,
124 .max_register = 0x40000,
125 .fast_io = true,
126};
127
128static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev,148static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev,
129 u32 *offset, u32 *stride)149 u32 *offset, u32 *stride)
130{150{
@@ -133,6 +153,8 @@ static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev, · 2 unmodified lines
133 void __iomem *base;153 void __iomem *base;
134 154
135 data = of_device_get_match_data(dev);155 data = of_device_get_match_data(dev);
156 if (!data->regmap_config)
157 return ERR_PTR(-EINVAL);
136 158
137 *offset = data->offset;159 *offset = data->offset;
138 *stride = data->stride;160 *stride = data->stride;
@@ -141,7 +163,7 @@ static struct regmap *qcom_hwspinlock_probe_mmio(struct platform_device *pdev, · 2 unmodified lines
141 if (IS_ERR(base))163 if (IS_ERR(base))
142 return ERR_CAST(base);164 return ERR_CAST(base);
143 165
144 return devm_regmap_init_mmio(dev, base, &tcsr_mutex_config);166 return devm_regmap_init_mmio(dev, base, data->regmap_config);
145}167}
146 168
147static int qcom_hwspinlock_probe(struct platform_device *pdev)169static int qcom_hwspinlock_probe(struct platform_device *pdev)
drivers/mmc/host/sdhci-brcmstb.c+2−1
@@ -12,6 +12,7 @@ · 11 unmodified lines
12#include <linux/bitops.h>12#include <linux/bitops.h>
13#include <linux/delay.h>13#include <linux/delay.h>
14 14
15#include "sdhci-cqhci.h"
15#include "sdhci-pltfm.h"16#include "sdhci-pltfm.h"
16#include "cqhci.h"17#include "cqhci.h"
17 18
@@ -55,7 +56,7 @@ static void brcmstb_reset(struct sdhci_host *host, u8 mask) · 37 unmodified lines
55 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);56 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
56 struct sdhci_brcmstb_priv *priv = sdhci_pltfm_priv(pltfm_host);57 struct sdhci_brcmstb_priv *priv = sdhci_pltfm_priv(pltfm_host);
57 58
58 sdhci_reset(host, mask);59 sdhci_and_cqhci_reset(host, mask);
59 60
60 /* Reset will clear this, so re-enable it */61 /* Reset will clear this, so re-enable it */
61 if (priv->flags & BRCMSTB_PRIV_FLAGS_GATE_CLOCK)62 if (priv->flags & BRCMSTB_PRIV_FLAGS_GATE_CLOCK)
drivers/mmc/host/sdhci-cqhci.h+24−0
@@ -0,0 +1,24 @@
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright 2022 The Chromium OS Authors
4 *
5 * Support that applies to the combination of SDHCI and CQHCI, while not
6 * expressing a dependency between the two modules.
7 */
8
9#ifndef __MMC_HOST_SDHCI_CQHCI_H__
10#define __MMC_HOST_SDHCI_CQHCI_H__
11
12#include "cqhci.h"
13#include "sdhci.h"
14
15static inline void sdhci_and_cqhci_reset(struct sdhci_host *host, u8 mask)
16{
17 if ((host->mmc->caps2 & MMC_CAP2_CQE) && (mask & SDHCI_RESET_ALL) &&
18 host->mmc->cqe_private)
19 cqhci_deactivate(host->mmc);
20
21 sdhci_reset(host, mask);
22}
23
24#endif /* __MMC_HOST_SDHCI_CQHCI_H__ */
drivers/mmc/host/sdhci-esdhc-imx.c+4−3
@@ -25,6 +25,7 @@ · 24 unmodified lines
25#include <linux/of_device.h>25#include <linux/of_device.h>
26#include <linux/pinctrl/consumer.h>26#include <linux/pinctrl/consumer.h>
27#include <linux/pm_runtime.h>27#include <linux/pm_runtime.h>
28#include "sdhci-cqhci.h"
28#include "sdhci-pltfm.h"29#include "sdhci-pltfm.h"
29#include "sdhci-esdhc.h"30#include "sdhci-esdhc.h"
30#include "cqhci.h"31#include "cqhci.h"
@@ -1288,7 +1289,7 @@ static void esdhc_set_uhs_signaling(struct sdhci_host *host, unsigned timing) · 1257 unmodified lines
1288 1289
1289static void esdhc_reset(struct sdhci_host *host, u8 mask)1290static void esdhc_reset(struct sdhci_host *host, u8 mask)
1290{1291{
1291 sdhci_reset(host, mask);1292 sdhci_and_cqhci_reset(host, mask);
1292 1293
1293 sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);1294 sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
1294 sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);1295 sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
@@ -1671,14 +1672,14 @@ static int sdhci_esdhc_imx_probe(struct platform_device *pdev) · 376 unmodified lines
1671 if (imx_data->socdata->flags & ESDHC_FLAG_ERR004536)1672 if (imx_data->socdata->flags & ESDHC_FLAG_ERR004536)
1672 host->quirks |= SDHCI_QUIRK_BROKEN_ADMA;1673 host->quirks |= SDHCI_QUIRK_BROKEN_ADMA;
1673 1674
1674 if (host->caps & MMC_CAP_8_BIT_DATA &&1675 if (host->mmc->caps & MMC_CAP_8_BIT_DATA &&
1675 imx_data->socdata->flags & ESDHC_FLAG_HS400)1676 imx_data->socdata->flags & ESDHC_FLAG_HS400)
1676 host->mmc->caps2 |= MMC_CAP2_HS400;1677 host->mmc->caps2 |= MMC_CAP2_HS400;
1677 1678
1678 if (imx_data->socdata->flags & ESDHC_FLAG_BROKEN_AUTO_CMD23)1679 if (imx_data->socdata->flags & ESDHC_FLAG_BROKEN_AUTO_CMD23)
1679 host->quirks2 |= SDHCI_QUIRK2_ACMD23_BROKEN;1680 host->quirks2 |= SDHCI_QUIRK2_ACMD23_BROKEN;
1680 1681
1681 if (host->caps & MMC_CAP_8_BIT_DATA &&1682 if (host->mmc->caps & MMC_CAP_8_BIT_DATA &&
1682 imx_data->socdata->flags & ESDHC_FLAG_HS400_ES) {1683 imx_data->socdata->flags & ESDHC_FLAG_HS400_ES) {
1683 host->mmc->caps2 |= MMC_CAP2_HS400_ES;1684 host->mmc->caps2 |= MMC_CAP2_HS400_ES;
1684 host->mmc_host_ops.hs400_enhanced_strobe =1685 host->mmc_host_ops.hs400_enhanced_strobe =
drivers/mmc/host/sdhci-of-arasan.c+2−1
@@ -25,6 +25,7 @@ · 24 unmodified lines
25#include <linux/firmware/xlnx-zynqmp.h>25#include <linux/firmware/xlnx-zynqmp.h>
26 26
27#include "cqhci.h"27#include "cqhci.h"
28#include "sdhci-cqhci.h"
28#include "sdhci-pltfm.h"29#include "sdhci-pltfm.h"
29 30
30#define SDHCI_ARASAN_VENDOR_REGISTER 0x7831#define SDHCI_ARASAN_VENDOR_REGISTER 0x78
@@ -366,7 +367,7 @@ static void sdhci_arasan_reset(struct sdhci_host *host, u8 mask) · 335 unmodified lines
366 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);367 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
367 struct sdhci_arasan_data *sdhci_arasan = sdhci_pltfm_priv(pltfm_host);368 struct sdhci_arasan_data *sdhci_arasan = sdhci_pltfm_priv(pltfm_host);
368 369
369 sdhci_reset(host, mask);370 sdhci_and_cqhci_reset(host, mask);
370 371
371 if (sdhci_arasan->quirks & SDHCI_ARASAN_QUIRK_FORCE_CDTEST) {372 if (sdhci_arasan->quirks & SDHCI_ARASAN_QUIRK_FORCE_CDTEST) {
372 ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);373 ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
drivers/mmc/host/sdhci-tegra.c+2−1
@@ -28,6 +28,7 @@ · 27 unmodified lines
28 28
29#include <soc/tegra/common.h>29#include <soc/tegra/common.h>
30 30
31#include "sdhci-cqhci.h"
31#include "sdhci-pltfm.h"32#include "sdhci-pltfm.h"
32#include "cqhci.h"33#include "cqhci.h"
33 34
@@ -367,7 +368,7 @@ static void tegra_sdhci_reset(struct sdhci_host *host, u8 mask) · 333 unmodified lines
367 const struct sdhci_tegra_soc_data *soc_data = tegra_host->soc_data;368 const struct sdhci_tegra_soc_data *soc_data = tegra_host->soc_data;
368 u32 misc_ctrl, clk_ctrl, pad_ctrl;369 u32 misc_ctrl, clk_ctrl, pad_ctrl;
369 370
370 sdhci_reset(host, mask);371 sdhci_and_cqhci_reset(host, mask);
371 372
372 if (!(mask & SDHCI_RESET_ALL))373 if (!(mask & SDHCI_RESET_ALL))
373 return;374 return;
drivers/mmc/host/sdhci_am654.c+4−3
@@ -15,6 +15,7 @@ · 14 unmodified lines
15#include <linux/sys_soc.h>15#include <linux/sys_soc.h>
16 16
17#include "cqhci.h"17#include "cqhci.h"
18#include "sdhci-cqhci.h"
18#include "sdhci-pltfm.h"19#include "sdhci-pltfm.h"
19 20
20/* CTL_CFG Registers */21/* CTL_CFG Registers */
@@ -378,7 +379,7 @@ static void sdhci_am654_reset(struct sdhci_host *host, u8 mask) · 357 unmodified lines
378 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);379 struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
379 struct sdhci_am654_data *sdhci_am654 = sdhci_pltfm_priv(pltfm_host);380 struct sdhci_am654_data *sdhci_am654 = sdhci_pltfm_priv(pltfm_host);
380 381
381 sdhci_reset(host, mask);382 sdhci_and_cqhci_reset(host, mask);
382 383
383 if (sdhci_am654->quirks & SDHCI_AM654_QUIRK_FORCE_CDTEST) {384 if (sdhci_am654->quirks & SDHCI_AM654_QUIRK_FORCE_CDTEST) {
384 ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);385 ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
@@ -464,7 +465,7 @@ static struct sdhci_ops sdhci_am654_ops = { · 79 unmodified lines
464 .set_clock = sdhci_am654_set_clock,465 .set_clock = sdhci_am654_set_clock,
465 .write_b = sdhci_am654_write_b,466 .write_b = sdhci_am654_write_b,
466 .irq = sdhci_am654_cqhci_irq,467 .irq = sdhci_am654_cqhci_irq,
467 .reset = sdhci_reset,468 .reset = sdhci_and_cqhci_reset,
468};469};
469 470
470static const struct sdhci_pltfm_data sdhci_am654_pdata = {471static const struct sdhci_pltfm_data sdhci_am654_pdata = {
@@ -494,7 +495,7 @@ static struct sdhci_ops sdhci_j721e_8bit_ops = { · 23 unmodified lines
494 .set_clock = sdhci_am654_set_clock,495 .set_clock = sdhci_am654_set_clock,
495 .write_b = sdhci_am654_write_b,496 .write_b = sdhci_am654_write_b,
496 .irq = sdhci_am654_cqhci_irq,497 .irq = sdhci_am654_cqhci_irq,
497 .reset = sdhci_reset,498 .reset = sdhci_and_cqhci_reset,
498};499};
499 500
500static const struct sdhci_pltfm_data sdhci_j721e_8bit_pdata = {501static const struct sdhci_pltfm_data sdhci_j721e_8bit_pdata = {
drivers/net/can/at91_can.c+1−1
@@ -452,7 +452,7 @@ static netdev_tx_t at91_start_xmit(struct sk_buff *skb, struct net_device *dev) · 451 unmodified lines
452 unsigned int mb, prio;452 unsigned int mb, prio;
453 u32 reg_mid, reg_mcr;453 u32 reg_mid, reg_mcr;
454 454
455 if (can_dropped_invalid_skb(dev, skb))455 if (can_dev_dropped_skb(dev, skb))
456 return NETDEV_TX_OK;456 return NETDEV_TX_OK;
457 457
458 mb = get_tx_next_mb(priv);458 mb = get_tx_next_mb(priv);
drivers/net/can/c_can/c_can_main.c+1−1
@@ -457,7 +457,7 @@ static netdev_tx_t c_can_start_xmit(struct sk_buff *skb, · 456 unmodified lines
457 struct c_can_tx_ring *tx_ring = &priv->tx;457 struct c_can_tx_ring *tx_ring = &priv->tx;
458 u32 idx, obj, cmd = IF_COMM_TX;458 u32 idx, obj, cmd = IF_COMM_TX;
459 459
460 if (can_dropped_invalid_skb(dev, skb))460 if (can_dev_dropped_skb(dev, skb))
461 return NETDEV_TX_OK;461 return NETDEV_TX_OK;
462 462
463 if (c_can_tx_busy(priv, tx_ring))463 if (c_can_tx_busy(priv, tx_ring))
drivers/net/can/can327.c+1−1
@@ -813,7 +813,7 @@ static netdev_tx_t can327_netdev_start_xmit(struct sk_buff *skb, · 812 unmodified lines
813 struct can327 *elm = netdev_priv(dev);813 struct can327 *elm = netdev_priv(dev);
814 struct can_frame *frame = (struct can_frame *)skb->data;814 struct can_frame *frame = (struct can_frame *)skb->data;
815 815
816 if (can_dropped_invalid_skb(dev, skb))816 if (can_dev_dropped_skb(dev, skb))
817 return NETDEV_TX_OK;817 return NETDEV_TX_OK;
818 818
819 /* We shouldn't get here after a hardware fault:819 /* We shouldn't get here after a hardware fault:
drivers/net/can/cc770/cc770.c+1−1
@@ -429,7 +429,7 @@ static netdev_tx_t cc770_start_xmit(struct sk_buff *skb, struct net_device *dev) · 428 unmodified lines
429 struct cc770_priv *priv = netdev_priv(dev);429 struct cc770_priv *priv = netdev_priv(dev);
430 unsigned int mo = obj2msgobj(CC770_OBJ_TX);430 unsigned int mo = obj2msgobj(CC770_OBJ_TX);
431 431
432 if (can_dropped_invalid_skb(dev, skb))432 if (can_dev_dropped_skb(dev, skb))
433 return NETDEV_TX_OK;433 return NETDEV_TX_OK;
434 434
435 netif_stop_queue(dev);435 netif_stop_queue(dev);
drivers/net/can/ctucanfd/ctucanfd_base.c+1−1
@@ -600,7 +600,7 @@ static netdev_tx_t ctucan_start_xmit(struct sk_buff *skb, struct net_device *nde · 599 unmodified lines
600 bool ok;600 bool ok;
601 unsigned long flags;601 unsigned long flags;
602 602
603 if (can_dropped_invalid_skb(ndev, skb))603 if (can_dev_dropped_skb(ndev, skb))
604 return NETDEV_TX_OK;604 return NETDEV_TX_OK;
605 605
606 if (unlikely(!CTU_CAN_FD_TXTNF(priv))) {606 if (unlikely(!CTU_CAN_FD_TXTNF(priv))) {
drivers/net/can/dev/skb.c+1−9
@@ -5,7 +5,6 @@ · 4 unmodified lines
5 */5 */
6 6
7#include <linux/can/dev.h>7#include <linux/can/dev.h>
8#include <linux/can/netlink.h>
9#include <linux/module.h>8#include <linux/module.h>
10 9
11#define MOD_DESC "CAN device driver interface"10#define MOD_DESC "CAN device driver interface"
@@ -337,8 +336,6 @@ static bool can_skb_headroom_valid(struct net_device *dev, struct sk_buff *skb) · 325 unmodified lines
337/* Drop a given socketbuffer if it does not contain a valid CAN frame. */336/* Drop a given socketbuffer if it does not contain a valid CAN frame. */
338bool can_dropped_invalid_skb(struct net_device *dev, struct sk_buff *skb)337bool can_dropped_invalid_skb(struct net_device *dev, struct sk_buff *skb)
339{338{
340 struct can_priv *priv = netdev_priv(dev);
341
342 switch (ntohs(skb->protocol)) {339 switch (ntohs(skb->protocol)) {
343 case ETH_P_CAN:340 case ETH_P_CAN:
344 if (!can_is_can_skb(skb))341 if (!can_is_can_skb(skb))
@@ -359,13 +356,8 @@ bool can_dropped_invalid_skb(struct net_device *dev, struct sk_buff *skb) · 14 unmodified lines
359 goto inval_skb;356 goto inval_skb;
360 }357 }
361 358
362 if (!can_skb_headroom_valid(dev, skb)) {359 if (!can_skb_headroom_valid(dev, skb))
363 goto inval_skb;360 goto inval_skb;
364 } else if (priv->ctrlmode & CAN_CTRLMODE_LISTENONLY) {
365 netdev_info_once(dev,
366 "interface in listen only mode, dropping skb\n");
367 goto inval_skb;
368 }
369 361
370 return false;362 return false;
371 363
drivers/net/can/flexcan/flexcan-core.c+1−1
@@ -742,7 +742,7 @@ static netdev_tx_t flexcan_start_xmit(struct sk_buff *skb, struct net_device *de · 741 unmodified lines
742 u32 ctrl = FLEXCAN_MB_CODE_TX_DATA | ((can_fd_len2dlc(cfd->len)) << 16);742 u32 ctrl = FLEXCAN_MB_CODE_TX_DATA | ((can_fd_len2dlc(cfd->len)) << 16);
743 int i;743 int i;
744 744
745 if (can_dropped_invalid_skb(dev, skb))745 if (can_dev_dropped_skb(dev, skb))
746 return NETDEV_TX_OK;746 return NETDEV_TX_OK;
747 747
748 netif_stop_queue(dev);748 netif_stop_queue(dev);
drivers/net/can/grcan.c+1−1
@@ -1345,7 +1345,7 @@ static netdev_tx_t grcan_start_xmit(struct sk_buff *skb, · 1344 unmodified lines
1345 unsigned long flags;1345 unsigned long flags;
1346 u32 oneshotmode = priv->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT;1346 u32 oneshotmode = priv->can.ctrlmode & CAN_CTRLMODE_ONE_SHOT;
1347 1347
1348 if (can_dropped_invalid_skb(dev, skb))1348 if (can_dev_dropped_skb(dev, skb))
1349 return NETDEV_TX_OK;1349 return NETDEV_TX_OK;
1350 1350
1351 /* Trying to transmit in silent mode will generate error interrupts, but1351 /* Trying to transmit in silent mode will generate error interrupts, but
drivers/net/can/ifi_canfd/ifi_canfd.c+1−1
@@ -860,7 +860,7 @@ static netdev_tx_t ifi_canfd_start_xmit(struct sk_buff *skb, · 859 unmodified lines
860 u32 txst, txid, txdlc;860 u32 txst, txid, txdlc;
861 int i;861 int i;
862 862
863 if (can_dropped_invalid_skb(ndev, skb))863 if (can_dev_dropped_skb(ndev, skb))
864 return NETDEV_TX_OK;864 return NETDEV_TX_OK;
865 865
866 /* Check if the TX buffer is full */866 /* Check if the TX buffer is full */
drivers/net/can/janz-ican3.c+1−1
@@ -1693,7 +1693,7 @@ static netdev_tx_t ican3_xmit(struct sk_buff *skb, struct net_device *ndev) · 1692 unmodified lines
1693 void __iomem *desc_addr;1693 void __iomem *desc_addr;
1694 unsigned long flags;1694 unsigned long flags;
1695 1695
1696 if (can_dropped_invalid_skb(ndev, skb))1696 if (can_dev_dropped_skb(ndev, skb))
1697 return NETDEV_TX_OK;1697 return NETDEV_TX_OK;
1698 1698
1699 spin_lock_irqsave(&mod->lock, flags);1699 spin_lock_irqsave(&mod->lock, flags);
drivers/net/can/kvaser_pciefd.c+1−1
@@ -772,7 +772,7 @@ static netdev_tx_t kvaser_pciefd_start_xmit(struct sk_buff *skb, · 771 unmodified lines
772 int nwords;772 int nwords;
773 u8 count;773 u8 count;
774 774
775 if (can_dropped_invalid_skb(netdev, skb))775 if (can_dev_dropped_skb(netdev, skb))
776 return NETDEV_TX_OK;776 return NETDEV_TX_OK;
777 777
778 nwords = kvaser_pciefd_prepare_tx_packet(&packet, can, skb);778 nwords = kvaser_pciefd_prepare_tx_packet(&packet, can, skb);
drivers/net/can/m_can/m_can.c+1−1
@@ -1721,7 +1721,7 @@ static netdev_tx_t m_can_start_xmit(struct sk_buff *skb, · 1720 unmodified lines
1721{1721{
1722 struct m_can_classdev *cdev = netdev_priv(dev);1722 struct m_can_classdev *cdev = netdev_priv(dev);
1723 1723
1724 if (can_dropped_invalid_skb(dev, skb))1724 if (can_dev_dropped_skb(dev, skb))
1725 return NETDEV_TX_OK;1725 return NETDEV_TX_OK;
1726 1726
1727 if (cdev->is_peripheral) {1727 if (cdev->is_peripheral) {
drivers/net/can/mscan/mscan.c+1−1
@@ -191,7 +191,7 @@ static netdev_tx_t mscan_start_xmit(struct sk_buff *skb, struct net_device *dev) · 190 unmodified lines
191 int i, rtr, buf_id;191 int i, rtr, buf_id;
192 u32 can_id;192 u32 can_id;
193 193
194 if (can_dropped_invalid_skb(dev, skb))194 if (can_dev_dropped_skb(dev, skb))
195 return NETDEV_TX_OK;195 return NETDEV_TX_OK;
196 196
197 out_8(&regs->cantier, 0);197 out_8(&regs->cantier, 0);
drivers/net/can/pch_can.c+1−1
@@ -882,7 +882,7 @@ static netdev_tx_t pch_xmit(struct sk_buff *skb, struct net_device *ndev) · 881 unmodified lines
882 int i;882 int i;
883 u32 id2;883 u32 id2;
884 884
885 if (can_dropped_invalid_skb(ndev, skb))885 if (can_dev_dropped_skb(ndev, skb))
886 return NETDEV_TX_OK;886 return NETDEV_TX_OK;
887 887
888 tx_obj_no = priv->tx_obj;888 tx_obj_no = priv->tx_obj;
drivers/net/can/peak_canfd/peak_canfd.c+1−1
@@ -651,7 +651,7 @@ static netdev_tx_t peak_canfd_start_xmit(struct sk_buff *skb, · 650 unmodified lines
651 int room_left;651 int room_left;
652 u8 len;652 u8 len;
653 653
654 if (can_dropped_invalid_skb(ndev, skb))654 if (can_dev_dropped_skb(ndev, skb))
655 return NETDEV_TX_OK;655 return NETDEV_TX_OK;
656 656
657 msg_size = ALIGN(sizeof(*msg) + cf->len, 4);657 msg_size = ALIGN(sizeof(*msg) + cf->len, 4);
drivers/net/can/rcar/rcar_can.c+1−1
@@ -590,7 +590,7 @@ static netdev_tx_t rcar_can_start_xmit(struct sk_buff *skb, · 589 unmodified lines
590 struct can_frame *cf = (struct can_frame *)skb->data;590 struct can_frame *cf = (struct can_frame *)skb->data;
591 u32 data, i;591 u32 data, i;
592 592
593 if (can_dropped_invalid_skb(ndev, skb))593 if (can_dev_dropped_skb(ndev, skb))
594 return NETDEV_TX_OK;594 return NETDEV_TX_OK;
595 595
596 if (cf->can_id & CAN_EFF_FLAG) /* Extended frame format */596 if (cf->can_id & CAN_EFF_FLAG) /* Extended frame format */
drivers/net/can/rcar/rcar_canfd.c+5−10
@@ -81,8 +81,7 @@ enum rcanfd_chip_id { · 80 unmodified lines
81 81
82/* RSCFDnCFDGERFL / RSCFDnGERFL */82/* RSCFDnCFDGERFL / RSCFDnGERFL */
83#define RCANFD_GERFL_EEF0_7 GENMASK(23, 16)83#define RCANFD_GERFL_EEF0_7 GENMASK(23, 16)
84#define RCANFD_GERFL_EEF1 BIT(17)84#define RCANFD_GERFL_EEF(ch) BIT(16 + (ch))
85#define RCANFD_GERFL_EEF0 BIT(16)
86#define RCANFD_GERFL_CMPOF BIT(3) /* CAN FD only */85#define RCANFD_GERFL_CMPOF BIT(3) /* CAN FD only */
87#define RCANFD_GERFL_THLES BIT(2)86#define RCANFD_GERFL_THLES BIT(2)
88#define RCANFD_GERFL_MES BIT(1)87#define RCANFD_GERFL_MES BIT(1)
@@ -90,7 +89,7 @@ enum rcanfd_chip_id { · 1 unmodified line
90 89
91#define RCANFD_GERFL_ERR(gpriv, x) \90#define RCANFD_GERFL_ERR(gpriv, x) \
92 ((x) & (reg_v3u(gpriv, RCANFD_GERFL_EEF0_7, \91 ((x) & (reg_v3u(gpriv, RCANFD_GERFL_EEF0_7, \
93 RCANFD_GERFL_EEF0 | RCANFD_GERFL_EEF1) | \92 RCANFD_GERFL_EEF(0) | RCANFD_GERFL_EEF(1)) | \
94 RCANFD_GERFL_MES | \93 RCANFD_GERFL_MES | \
95 ((gpriv)->fdmode ? RCANFD_GERFL_CMPOF : 0)))94 ((gpriv)->fdmode ? RCANFD_GERFL_CMPOF : 0)))
96 95
@@ -936,12 +935,8 @@ static void rcar_canfd_global_error(struct net_device *ndev) · 839 unmodified lines
936 u32 ridx = ch + RCANFD_RFFIFO_IDX;935 u32 ridx = ch + RCANFD_RFFIFO_IDX;
937 936
938 gerfl = rcar_canfd_read(priv->base, RCANFD_GERFL);937 gerfl = rcar_canfd_read(priv->base, RCANFD_GERFL);
939 if ((gerfl & RCANFD_GERFL_EEF0) && (ch == 0)) {938 if (gerfl & RCANFD_GERFL_EEF(ch)) {
940 netdev_dbg(ndev, "Ch0: ECC Error flag\n");939 netdev_dbg(ndev, "Ch%u: ECC Error flag\n", ch);
941 stats->tx_dropped++;
942 }
943 if ((gerfl & RCANFD_GERFL_EEF1) && (ch == 1)) {
944 netdev_dbg(ndev, "Ch1: ECC Error flag\n");
945 stats->tx_dropped++;940 stats->tx_dropped++;
946 }941 }
947 if (gerfl & RCANFD_GERFL_MES) {942 if (gerfl & RCANFD_GERFL_MES) {
@@ -1481,7 +1476,7 @@ static netdev_tx_t rcar_canfd_start_xmit(struct sk_buff *skb, · 533 unmodified lines
1481 unsigned long flags;1476 unsigned long flags;
1482 u32 ch = priv->channel;1477 u32 ch = priv->channel;
1483 1478
1484 if (can_dropped_invalid_skb(ndev, skb))1479 if (can_dev_dropped_skb(ndev, skb))
1485 return NETDEV_TX_OK;1480 return NETDEV_TX_OK;
1486 1481
1487 if (cf->can_id & CAN_EFF_FLAG) {1482 if (cf->can_id & CAN_EFF_FLAG) {
drivers/net/can/sja1000/sja1000.c+1−1
@@ -291,7 +291,7 @@ static netdev_tx_t sja1000_start_xmit(struct sk_buff *skb, · 290 unmodified lines
291 u8 cmd_reg_val = 0x00;291 u8 cmd_reg_val = 0x00;
292 int i;292 int i;
293 293
294 if (can_dropped_invalid_skb(dev, skb))294 if (can_dev_dropped_skb(dev, skb))
295 return NETDEV_TX_OK;295 return NETDEV_TX_OK;
296 296
297 netif_stop_queue(dev);297 netif_stop_queue(dev);
drivers/net/can/slcan/slcan-core.c+1−1
@@ -594,7 +594,7 @@ static netdev_tx_t slcan_netdev_xmit(struct sk_buff *skb, · 593 unmodified lines
594{594{
595 struct slcan *sl = netdev_priv(dev);595 struct slcan *sl = netdev_priv(dev);
596 596
597 if (can_dropped_invalid_skb(dev, skb))597 if (can_dev_dropped_skb(dev, skb))
598 return NETDEV_TX_OK;598 return NETDEV_TX_OK;
599 599
600 spin_lock(&sl->lock);600 spin_lock(&sl->lock);
drivers/net/can/softing/softing_main.c+1−1
@@ -60,7 +60,7 @@ static netdev_tx_t softing_netdev_start_xmit(struct sk_buff *skb, · 59 unmodified lines
60 struct can_frame *cf = (struct can_frame *)skb->data;60 struct can_frame *cf = (struct can_frame *)skb->data;
61 uint8_t buf[DPRAM_TX_SIZE];61 uint8_t buf[DPRAM_TX_SIZE];
62 62
63 if (can_dropped_invalid_skb(dev, skb))63 if (can_dev_dropped_skb(dev, skb))
64 return NETDEV_TX_OK;64 return NETDEV_TX_OK;
65 65
66 spin_lock(&card->spin);66 spin_lock(&card->spin);
drivers/net/can/spi/hi311x.c+1−1
@@ -373,7 +373,7 @@ static netdev_tx_t hi3110_hard_start_xmit(struct sk_buff *skb, · 372 unmodified lines
373 return NETDEV_TX_BUSY;373 return NETDEV_TX_BUSY;
374 }374 }
375 375
376 if (can_dropped_invalid_skb(net, skb))376 if (can_dev_dropped_skb(net, skb))
377 return NETDEV_TX_OK;377 return NETDEV_TX_OK;
378 378
379 netif_stop_queue(net);379 netif_stop_queue(net);
drivers/net/can/spi/mcp251x.c+1−1
@@ -789,7 +789,7 @@ static netdev_tx_t mcp251x_hard_start_xmit(struct sk_buff *skb, · 788 unmodified lines
789 return NETDEV_TX_BUSY;789 return NETDEV_TX_BUSY;
790 }790 }
791 791
792 if (can_dropped_invalid_skb(net, skb))792 if (can_dev_dropped_skb(net, skb))
793 return NETDEV_TX_OK;793 return NETDEV_TX_OK;
794 794
795 netif_stop_queue(net);795 netif_stop_queue(net);
drivers/net/can/spi/mcp251xfd/mcp251xfd-tx.c+1−1
@@ -172,7 +172,7 @@ netdev_tx_t mcp251xfd_start_xmit(struct sk_buff *skb, · 171 unmodified lines
172 u8 tx_head;172 u8 tx_head;
173 int err;173 int err;
174 174
175 if (can_dropped_invalid_skb(ndev, skb))175 if (can_dev_dropped_skb(ndev, skb))
176 return NETDEV_TX_OK;176 return NETDEV_TX_OK;
177 177
178 if (mcp251xfd_tx_busy(priv, tx_ring))178 if (mcp251xfd_tx_busy(priv, tx_ring))
drivers/net/can/sun4i_can.c+1−1
@@ -429,7 +429,7 @@ static netdev_tx_t sun4ican_start_xmit(struct sk_buff *skb, struct net_device *d · 428 unmodified lines
429 canid_t id;429 canid_t id;
430 int i;430 int i;
431 431
432 if (can_dropped_invalid_skb(dev, skb))432 if (can_dev_dropped_skb(dev, skb))
433 return NETDEV_TX_OK;433 return NETDEV_TX_OK;
434 434
435 netif_stop_queue(dev);435 netif_stop_queue(dev);
drivers/net/can/ti_hecc.c+1−1
@@ -470,7 +470,7 @@ static netdev_tx_t ti_hecc_xmit(struct sk_buff *skb, struct net_device *ndev) · 469 unmodified lines
470 u32 mbxno, mbx_mask, data;470 u32 mbxno, mbx_mask, data;
471 unsigned long flags;471 unsigned long flags;
472 472
473 if (can_dropped_invalid_skb(ndev, skb))473 if (can_dev_dropped_skb(ndev, skb))
474 return NETDEV_TX_OK;474 return NETDEV_TX_OK;
475 475
476 mbxno = get_tx_head_mb(priv);476 mbxno = get_tx_head_mb(priv);
drivers/net/can/usb/ems_usb.c+1−1
@@ -747,7 +747,7 @@ static netdev_tx_t ems_usb_start_xmit(struct sk_buff *skb, struct net_device *ne · 746 unmodified lines
747 size_t size = CPC_HEADER_SIZE + CPC_MSG_HEADER_LEN747 size_t size = CPC_HEADER_SIZE + CPC_MSG_HEADER_LEN
748 + sizeof(struct cpc_can_msg);748 + sizeof(struct cpc_can_msg);
749 749
750 if (can_dropped_invalid_skb(netdev, skb))750 if (can_dev_dropped_skb(netdev, skb))
751 return NETDEV_TX_OK;751 return NETDEV_TX_OK;
752 752
753 /* create a URB, and a buffer for it, and copy the data to the URB */753 /* create a URB, and a buffer for it, and copy the data to the URB */
drivers/net/can/usb/esd_usb.c+1−1
@@ -725,7 +725,7 @@ static netdev_tx_t esd_usb_start_xmit(struct sk_buff *skb, · 724 unmodified lines
725 int ret = NETDEV_TX_OK;725 int ret = NETDEV_TX_OK;
726 size_t size = sizeof(struct esd_usb_msg);726 size_t size = sizeof(struct esd_usb_msg);
727 727
728 if (can_dropped_invalid_skb(netdev, skb))728 if (can_dev_dropped_skb(netdev, skb))
729 return NETDEV_TX_OK;729 return NETDEV_TX_OK;
730 730
731 /* create a URB, and a buffer for it, and copy the data to the URB */731 /* create a URB, and a buffer for it, and copy the data to the URB */
drivers/net/can/usb/etas_es58x/es58x_core.c+1−1
@@ -1913,7 +1913,7 @@ static netdev_tx_t es58x_start_xmit(struct sk_buff *skb, · 1912 unmodified lines
1913 unsigned int frame_len;1913 unsigned int frame_len;
1914 int ret;1914 int ret;
1915 1915
1916 if (can_dropped_invalid_skb(netdev, skb)) {1916 if (can_dev_dropped_skb(netdev, skb)) {
1917 if (priv->tx_urb)1917 if (priv->tx_urb)
1918 goto xmit_commit;1918 goto xmit_commit;
1919 return NETDEV_TX_OK;1919 return NETDEV_TX_OK;
drivers/net/can/usb/gs_usb.c+1−1
@@ -723,7 +723,7 @@ static netdev_tx_t gs_can_start_xmit(struct sk_buff *skb, · 722 unmodified lines
723 unsigned int idx;723 unsigned int idx;
724 struct gs_tx_context *txc;724 struct gs_tx_context *txc;
725 725
726 if (can_dropped_invalid_skb(netdev, skb))726 if (can_dev_dropped_skb(netdev, skb))
727 return NETDEV_TX_OK;727 return NETDEV_TX_OK;
728 728
729 /* find an empty context to keep track of transmission */729 /* find an empty context to keep track of transmission */
drivers/net/can/usb/kvaser_usb/kvaser_usb_core.c+1−1
@@ -570,7 +570,7 @@ static netdev_tx_t kvaser_usb_start_xmit(struct sk_buff *skb, · 569 unmodified lines
570 unsigned int i;570 unsigned int i;
571 unsigned long flags;571 unsigned long flags;
572 572
573 if (can_dropped_invalid_skb(netdev, skb))573 if (can_dev_dropped_skb(netdev, skb))
574 return NETDEV_TX_OK;574 return NETDEV_TX_OK;
575 575
576 urb = usb_alloc_urb(0, GFP_ATOMIC);576 urb = usb_alloc_urb(0, GFP_ATOMIC);
drivers/net/can/usb/mcba_usb.c+1−1
@@ -311,7 +311,7 @@ static netdev_tx_t mcba_usb_start_xmit(struct sk_buff *skb, · 310 unmodified lines
311 .cmd_id = MBCA_CMD_TRANSMIT_MESSAGE_EV311 .cmd_id = MBCA_CMD_TRANSMIT_MESSAGE_EV
312 };312 };
313 313
314 if (can_dropped_invalid_skb(netdev, skb))314 if (can_dev_dropped_skb(netdev, skb))
315 return NETDEV_TX_OK;315 return NETDEV_TX_OK;
316 316
317 ctx = mcba_usb_get_free_ctx(priv, cf);317 ctx = mcba_usb_get_free_ctx(priv, cf);
drivers/net/can/usb/peak_usb/pcan_usb_core.c+1−1
@@ -351,7 +351,7 @@ static netdev_tx_t peak_usb_ndo_start_xmit(struct sk_buff *skb, · 350 unmodified lines
351 int i, err;351 int i, err;
352 size_t size = dev->adapter->tx_buffer_size;352 size_t size = dev->adapter->tx_buffer_size;
353 353
354 if (can_dropped_invalid_skb(netdev, skb))354 if (can_dev_dropped_skb(netdev, skb))
355 return NETDEV_TX_OK;355 return NETDEV_TX_OK;
356 356
357 for (i = 0; i < PCAN_USB_MAX_TX_URBS; i++)357 for (i = 0; i < PCAN_USB_MAX_TX_URBS; i++)
drivers/net/can/usb/ucan.c+1−1
@@ -1120,7 +1120,7 @@ static netdev_tx_t ucan_start_xmit(struct sk_buff *skb, · 1119 unmodified lines
1120 struct can_frame *cf = (struct can_frame *)skb->data;1120 struct can_frame *cf = (struct can_frame *)skb->data;
1121 1121
1122 /* check skb */1122 /* check skb */
1123 if (can_dropped_invalid_skb(netdev, skb))1123 if (can_dev_dropped_skb(netdev, skb))
1124 return NETDEV_TX_OK;1124 return NETDEV_TX_OK;
1125 1125
1126 /* allocate a context and slow down tx path, if fifo state is low */1126 /* allocate a context and slow down tx path, if fifo state is low */
drivers/net/can/usb/usb_8dev.c+1−1
@@ -602,7 +602,7 @@ static netdev_tx_t usb_8dev_start_xmit(struct sk_buff *skb, · 601 unmodified lines
602 int i, err;602 int i, err;
603 size_t size = sizeof(struct usb_8dev_tx_msg);603 size_t size = sizeof(struct usb_8dev_tx_msg);
604 604
605 if (can_dropped_invalid_skb(netdev, skb))605 if (can_dev_dropped_skb(netdev, skb))
606 return NETDEV_TX_OK;606 return NETDEV_TX_OK;
607 607
608 /* create a URB, and a buffer for it, and copy the data to the URB */608 /* create a URB, and a buffer for it, and copy the data to the URB */
drivers/net/can/xilinx_can.c+1−1
@@ -743,7 +743,7 @@ static netdev_tx_t xcan_start_xmit(struct sk_buff *skb, struct net_device *ndev) · 742 unmodified lines
743 struct xcan_priv *priv = netdev_priv(ndev);743 struct xcan_priv *priv = netdev_priv(ndev);
744 int ret;744 int ret;
745 745
746 if (can_dropped_invalid_skb(ndev, skb))746 if (can_dev_dropped_skb(ndev, skb))
747 return NETDEV_TX_OK;747 return NETDEV_TX_OK;
748 748
749 if (priv->devtype.flags & XCAN_FLAG_TX_MAILBOXES)749 if (priv->devtype.flags & XCAN_FLAG_TX_MAILBOXES)
drivers/net/ethernet/apm/xgene/xgene_enet_main.c+3−1
@@ -1004,8 +1004,10 @@ static int xgene_enet_open(struct net_device *ndev) · 1003 unmodified lines
1004 1004
1005 xgene_enet_napi_enable(pdata);1005 xgene_enet_napi_enable(pdata);
1006 ret = xgene_enet_register_irq(ndev);1006 ret = xgene_enet_register_irq(ndev);
1007 if (ret)1007 if (ret) {
1008 xgene_enet_napi_disable(pdata);
1008 return ret;1009 return ret;
1010 }
1009 1011
1010 if (ndev->phydev) {1012 if (ndev->phydev) {
1011 phy_start(ndev->phydev);1013 phy_start(ndev->phydev);
drivers/net/ethernet/aquantia/atlantic/aq_macsec.c+2−0
@@ -570,6 +570,7 @@ static int aq_update_txsa(struct aq_nic_s *nic, const unsigned int sc_idx, · 569 unmodified lines
570 570
571 ret = aq_mss_set_egress_sakey_record(hw, &key_rec, sa_idx);571 ret = aq_mss_set_egress_sakey_record(hw, &key_rec, sa_idx);
572 572
573 memzero_explicit(&key_rec, sizeof(key_rec));
573 return ret;574 return ret;
574}575}
575 576
@@ -899,6 +900,7 @@ static int aq_update_rxsa(struct aq_nic_s *nic, const unsigned int sc_idx, · 323 unmodified lines
899 900
900 ret = aq_mss_set_ingress_sakey_record(hw, &sa_key_record, sa_idx);901 ret = aq_mss_set_ingress_sakey_record(hw, &sa_key_record, sa_idx);
901 902
903 memzero_explicit(&sa_key_record, sizeof(sa_key_record));
902 return ret;904 return ret;
903}905}
904 906
drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.c+11−7
@@ -757,6 +757,7 @@ set_ingress_sakey_record(struct aq_hw_s *hw, · 756 unmodified lines
757 u16 table_index)757 u16 table_index)
758{758{
759 u16 packed_record[18];759 u16 packed_record[18];
760 int ret;
760 761
761 if (table_index >= NUMROWS_INGRESSSAKEYRECORD)762 if (table_index >= NUMROWS_INGRESSSAKEYRECORD)
762 return -EINVAL;763 return -EINVAL;
@@ -789,9 +790,12 @@ set_ingress_sakey_record(struct aq_hw_s *hw, · 26 unmodified lines
789 790
790 packed_record[16] = rec->key_len & 0x3;791 packed_record[16] = rec->key_len & 0x3;
791 792
792 return set_raw_ingress_record(hw, packed_record, 18, 2,793 ret = set_raw_ingress_record(hw, packed_record, 18, 2,
793 ROWOFFSET_INGRESSSAKEYRECORD +794 ROWOFFSET_INGRESSSAKEYRECORD +
794 table_index);795 table_index);
796
797 memzero_explicit(packed_record, sizeof(packed_record));
798 return ret;
795}799}
796 800
797int aq_mss_set_ingress_sakey_record(struct aq_hw_s *hw,801int aq_mss_set_ingress_sakey_record(struct aq_hw_s *hw,
@@ -1739,14 +1743,14 @@ static int set_egress_sakey_record(struct aq_hw_s *hw, · 941 unmodified lines
1739 ret = set_raw_egress_record(hw, packed_record, 8, 2,1743 ret = set_raw_egress_record(hw, packed_record, 8, 2,
1740 ROWOFFSET_EGRESSSAKEYRECORD + table_index);1744 ROWOFFSET_EGRESSSAKEYRECORD + table_index);
1741 if (unlikely(ret))1745 if (unlikely(ret))
1742 return ret;1746 goto clear_key;
1743 ret = set_raw_egress_record(hw, packed_record + 8, 8, 2,1747 ret = set_raw_egress_record(hw, packed_record + 8, 8, 2,
1744 ROWOFFSET_EGRESSSAKEYRECORD + table_index -1748 ROWOFFSET_EGRESSSAKEYRECORD + table_index -
1745 32);1749 32);
1746 if (unlikely(ret))
1747 return ret;
1748 1750
1749 return 0;1751clear_key:
1752 memzero_explicit(packed_record, sizeof(packed_record));
1753 return ret;
1750}1754}
1751 1755
1752int aq_mss_set_egress_sakey_record(struct aq_hw_s *hw,1756int aq_mss_set_egress_sakey_record(struct aq_hw_s *hw,
drivers/net/ethernet/broadcom/Kconfig+1−1
@@ -77,7 +77,7 @@ config BCMGENET · 76 unmodified lines
77 select BCM7XXX_PHY77 select BCM7XXX_PHY
78 select MDIO_BCM_UNIMAC78 select MDIO_BCM_UNIMAC
79 select DIMLIB79 select DIMLIB
80 select BROADCOM_PHY if ARCH_BCM283580 select BROADCOM_PHY if (ARCH_BCM2835 && PTP_1588_CLOCK_OPTIONAL)
81 help81 help
82 This driver supports the built-in Ethernet MACs found in the82 This driver supports the built-in Ethernet MACs found in the
83 Broadcom BCM7xxx Set Top Box family chipset.83 Broadcom BCM7xxx Set Top Box family chipset.
drivers/net/ethernet/broadcom/bnxt/bnxt.c+45−9
@@ -9983,17 +9983,12 @@ static int bnxt_try_recover_fw(struct bnxt *bp) · 9982 unmodified lines
9983 return -ENODEV;9983 return -ENODEV;
9984}9984}
9985 9985
9986int bnxt_cancel_reservations(struct bnxt *bp, bool fw_reset)9986static void bnxt_clear_reservations(struct bnxt *bp, bool fw_reset)
9987{9987{
9988 struct bnxt_hw_resc *hw_resc = &bp->hw_resc;9988 struct bnxt_hw_resc *hw_resc = &bp->hw_resc;
9989 int rc;
9990 9989
9991 if (!BNXT_NEW_RM(bp))9990 if (!BNXT_NEW_RM(bp))
9992 return 0; /* no resource reservations required */9991 return; /* no resource reservations required */
9993
9994 rc = bnxt_hwrm_func_resc_qcaps(bp, true);
9995 if (rc)
9996 netdev_err(bp->dev, "resc_qcaps failed\n");
9997 9992
9998 hw_resc->resv_cp_rings = 0;9993 hw_resc->resv_cp_rings = 0;
9999 hw_resc->resv_stat_ctxs = 0;9994 hw_resc->resv_stat_ctxs = 0;
@@ -10006,6 +10001,20 @@ int bnxt_cancel_reservations(struct bnxt *bp, bool fw_reset) · 6 unmodified lines
10006 bp->tx_nr_rings = 0;10001 bp->tx_nr_rings = 0;
10007 bp->rx_nr_rings = 0;10002 bp->rx_nr_rings = 0;
10008 }10003 }
10004}
10005
10006int bnxt_cancel_reservations(struct bnxt *bp, bool fw_reset)
10007{
10008 int rc;
10009
10010 if (!BNXT_NEW_RM(bp))
10011 return 0; /* no resource reservations required */
10012
10013 rc = bnxt_hwrm_func_resc_qcaps(bp, true);
10014 if (rc)
10015 netdev_err(bp->dev, "resc_qcaps failed\n");
10016
10017 bnxt_clear_reservations(bp, fw_reset);
10009 10018
10010 return rc;10019 return rc;
10011}10020}
@@ -12894,8 +12903,8 @@ static int bnxt_rx_flow_steer(struct net_device *dev, const struct sk_buff *skb, · 2882 unmodified lines
12894 rcu_read_lock();12903 rcu_read_lock();
12895 hlist_for_each_entry_rcu(fltr, head, hash) {12904 hlist_for_each_entry_rcu(fltr, head, hash) {
12896 if (bnxt_fltr_match(fltr, new_fltr)) {12905 if (bnxt_fltr_match(fltr, new_fltr)) {
12906 rc = fltr->sw_id;
12897 rcu_read_unlock();12907 rcu_read_unlock();
12898 rc = 0;
12899 goto err_free;12908 goto err_free;
12900 }12909 }
12901 }12910 }
@@ -13913,7 +13922,9 @@ static pci_ers_result_t bnxt_io_slot_reset(struct pci_dev *pdev) · 1011 unmodified lines
13913 pci_ers_result_t result = PCI_ERS_RESULT_DISCONNECT;13922 pci_ers_result_t result = PCI_ERS_RESULT_DISCONNECT;
13914 struct net_device *netdev = pci_get_drvdata(pdev);13923 struct net_device *netdev = pci_get_drvdata(pdev);
13915 struct bnxt *bp = netdev_priv(netdev);13924 struct bnxt *bp = netdev_priv(netdev);
13916 int err = 0, off;13925 int retry = 0;
13926 int err = 0;
13927 int off;
13917 13928
13918 netdev_info(bp->dev, "PCI Slot Reset\n");13929 netdev_info(bp->dev, "PCI Slot Reset\n");
13919 13930
@@ -13941,11 +13952,36 @@ static pci_ers_result_t bnxt_io_slot_reset(struct pci_dev *pdev) · 21 unmodified lines
13941 pci_restore_state(pdev);13952 pci_restore_state(pdev);
13942 pci_save_state(pdev);13953 pci_save_state(pdev);
13943 13954
13955 bnxt_inv_fw_health_reg(bp);
13956 bnxt_try_map_fw_health_reg(bp);
13957
13958 /* In some PCIe AER scenarios, firmware may take up to
13959 * 10 seconds to become ready in the worst case.
13960 */
13961 do {
13962 err = bnxt_try_recover_fw(bp);
13963 if (!err)
13964 break;
13965 retry++;
13966 } while (retry < BNXT_FW_SLOT_RESET_RETRY);
13967
13968 if (err) {
13969 dev_err(&pdev->dev, "Firmware not ready\n");
13970 goto reset_exit;
13971 }
13972
13944 err = bnxt_hwrm_func_reset(bp);13973 err = bnxt_hwrm_func_reset(bp);
13945 if (!err)13974 if (!err)
13946 result = PCI_ERS_RESULT_RECOVERED;13975 result = PCI_ERS_RESULT_RECOVERED;
13976
13977 bnxt_ulp_irq_stop(bp);
13978 bnxt_clear_int_mode(bp);
13979 err = bnxt_init_int_mode(bp);
13980 bnxt_ulp_irq_restart(bp, err);
13947 }13981 }
13948 13982
13983reset_exit:
13984 bnxt_clear_reservations(bp, true);
13949 rtnl_unlock();13985 rtnl_unlock();
13950 13986
13951 return result;13987 return result;
drivers/net/ethernet/broadcom/bnxt/bnxt.h+1−0
@@ -1621,6 +1621,7 @@ struct bnxt_fw_health { · 1620 unmodified lines
1621 1621
1622#define BNXT_FW_RETRY 51622#define BNXT_FW_RETRY 5
1623#define BNXT_FW_IF_RETRY 101623#define BNXT_FW_IF_RETRY 10
1624#define BNXT_FW_SLOT_RESET_RETRY 4
1624 1625
1625enum board_idx {1626enum board_idx {
1626 BCM57301,1627 BCM57301,
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c+1−1
@@ -162,7 +162,7 @@ static int bnxt_set_coalesce(struct net_device *dev, · 161 unmodified lines
162 }162 }
163 163
164reset_coalesce:164reset_coalesce:
165 if (netif_running(dev)) {165 if (test_bit(BNXT_STATE_OPEN, &bp->state)) {
166 if (update_stats) {166 if (update_stats) {
167 rc = bnxt_close_nic(bp, true, false);167 rc = bnxt_close_nic(bp, true, false);
168 if (!rc)168 if (!rc)
drivers/net/ethernet/broadcom/bnxt/bnxt_hwrm.c+2−1
@@ -476,7 +476,8 @@ static int __hwrm_send(struct bnxt *bp, struct bnxt_hwrm_ctx *ctx) · 475 unmodified lines
476 memset(ctx->resp, 0, PAGE_SIZE);476 memset(ctx->resp, 0, PAGE_SIZE);
477 477
478 req_type = le16_to_cpu(ctx->req->req_type);478 req_type = le16_to_cpu(ctx->req->req_type);
479 if (BNXT_NO_FW_ACCESS(bp) && req_type != HWRM_FUNC_RESET) {479 if (BNXT_NO_FW_ACCESS(bp) &&
480 (req_type != HWRM_FUNC_RESET && req_type != HWRM_VER_GET)) {
480 netdev_dbg(bp->dev, "hwrm req_type 0x%x skipped, FW channel down\n",481 netdev_dbg(bp->dev, "hwrm req_type 0x%x skipped, FW channel down\n",
481 req_type);482 req_type);
482 goto exit;483 goto exit;
drivers/net/ethernet/chelsio/cxgb3/cxgb3_main.c+1−0
@@ -1301,6 +1301,7 @@ static int cxgb_up(struct adapter *adap) · 1300 unmodified lines
1301 if (ret < 0) {1301 if (ret < 0) {
1302 CH_ERR(adap, "failed to bind qsets, err %d\n", ret);1302 CH_ERR(adap, "failed to bind qsets, err %d\n", ret);
1303 t3_intr_disable(adap);1303 t3_intr_disable(adap);
1304 quiesce_rx(adap);
1304 free_irq_resources(adap);1305 free_irq_resources(adap);
1305 err = ret;1306 err = ret;
1306 goto out;1307 goto out;
drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c+1−1
@@ -858,7 +858,7 @@ static int cxgb4vf_open(struct net_device *dev) · 857 unmodified lines
858 */858 */
859 err = t4vf_update_port_info(pi);859 err = t4vf_update_port_info(pi);
860 if (err < 0)860 if (err < 0)
861 return err;861 goto err_unwind;
862 862
863 /*863 /*
864 * Note that this interface is up and start everything up ...864 * Note that this interface is up and start everything up ...
drivers/net/ethernet/freescale/fman/mac.c+9−0
@@ -487,12 +487,21 @@ _return_of_node_put: · 486 unmodified lines
487 return err;487 return err;
488}488}
489 489
490static int mac_remove(struct platform_device *pdev)
491{
492 struct mac_device *mac_dev = platform_get_drvdata(pdev);
493
494 platform_device_unregister(mac_dev->priv->eth_dev);
495 return 0;
496}
497
490static struct platform_driver mac_driver = {498static struct platform_driver mac_driver = {
491 .driver = {499 .driver = {
492 .name = KBUILD_MODNAME,500 .name = KBUILD_MODNAME,
493 .of_match_table = mac_match,501 .of_match_table = mac_match,
494 },502 },
495 .probe = mac_probe,503 .probe = mac_probe,
504 .remove = mac_remove,
496};505};
497 506
498builtin_platform_driver(mac_driver);507builtin_platform_driver(mac_driver);
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c+5−3
@@ -12984,14 +12984,16 @@ static void hclge_clean_vport_config(struct hnae3_ae_dev *ae_dev, int num_vfs) · 12983 unmodified lines
12984static int hclge_get_dscp_prio(struct hnae3_handle *h, u8 dscp, u8 *tc_mode,12984static int hclge_get_dscp_prio(struct hnae3_handle *h, u8 dscp, u8 *tc_mode,
12985 u8 *priority)12985 u8 *priority)
12986{12986{
12987 struct hclge_vport *vport = hclge_get_vport(h);
12988
12987 if (dscp >= HNAE3_MAX_DSCP)12989 if (dscp >= HNAE3_MAX_DSCP)
12988 return -EINVAL;12990 return -EINVAL;
12989 12991
12990 if (tc_mode)12992 if (tc_mode)
12991 *tc_mode = h->kinfo.tc_map_mode;12993 *tc_mode = vport->nic.kinfo.tc_map_mode;
12992 if (priority)12994 if (priority)
12993 *priority = h->kinfo.dscp_prio[dscp] == HNAE3_PRIO_ID_INVALID ? 0 :12995 *priority = vport->nic.kinfo.dscp_prio[dscp] == HNAE3_PRIO_ID_INVALID ? 0 :
12994 h->kinfo.dscp_prio[dscp];12996 vport->nic.kinfo.dscp_prio[dscp];
12995 12997
12996 return 0;12998 return 0;
12997}12999}
drivers/net/ethernet/ibm/ibmveth.c+2−1
@@ -1757,7 +1757,8 @@ static int ibmveth_probe(struct vio_dev *dev, const struct vio_device_id *id) · 1756 unmodified lines
1757 kobject_uevent(kobj, KOBJ_ADD);1757 kobject_uevent(kobj, KOBJ_ADD);
1758 }1758 }
1759 1759
1760 rc = netif_set_real_num_tx_queues(netdev, ibmveth_real_max_tx_queues());1760 rc = netif_set_real_num_tx_queues(netdev, min(num_online_cpus(),
1761 IBMVETH_DEFAULT_QUEUES));
1761 if (rc) {1762 if (rc) {
1762 netdev_dbg(netdev, "failed to set number of tx queues rc=%d\n",1763 netdev_dbg(netdev, "failed to set number of tx queues rc=%d\n",
1763 rc);1764 rc);
drivers/net/ethernet/ibm/ibmveth.h+1−0
@@ -100,6 +100,7 @@ static inline long h_illan_attributes(unsigned long unit_address, · 99 unmodified lines
100#define IBMVETH_MAX_BUF_SIZE (1024 * 128)100#define IBMVETH_MAX_BUF_SIZE (1024 * 128)
101#define IBMVETH_MAX_TX_BUF_SIZE (1024 * 64)101#define IBMVETH_MAX_TX_BUF_SIZE (1024 * 64)
102#define IBMVETH_MAX_QUEUES 16U102#define IBMVETH_MAX_QUEUES 16U
103#define IBMVETH_DEFAULT_QUEUES 8U
103 104
104static int pool_size[] = { 512, 1024 * 2, 1024 * 16, 1024 * 32, 1024 * 64 };105static int pool_size[] = { 512, 1024 * 2, 1024 * 16, 1024 * 32, 1024 * 64 };
105static int pool_count[] = { 256, 512, 256, 256, 256 };106static int pool_count[] = { 256, 512, 256, 256, 256 };
drivers/net/ethernet/intel/iavf/iavf_virtchnl.c+2−0
@@ -2438,6 +2438,8 @@ void iavf_virtchnl_completion(struct iavf_adapter *adapter, · 2437 unmodified lines
2438 list_for_each_entry(f, &adapter->vlan_filter_list, list) {2438 list_for_each_entry(f, &adapter->vlan_filter_list, list) {
2439 if (f->is_new_vlan) {2439 if (f->is_new_vlan) {
2440 f->is_new_vlan = false;2440 f->is_new_vlan = false;
2441 if (!f->vlan.vid)
2442 continue;
2441 if (f->vlan.tpid == ETH_P_8021Q)2443 if (f->vlan.tpid == ETH_P_8021Q)
2442 set_bit(f->vlan.vid,2444 set_bit(f->vlan.vid,
2443 adapter->vsi.active_cvlans);2445 adapter->vsi.active_cvlans);
drivers/net/ethernet/intel/ice/ice_base.c+1−1
@@ -958,7 +958,7 @@ ice_vsi_stop_tx_ring(struct ice_vsi *vsi, enum ice_disq_rst_src rst_src, · 957 unmodified lines
958 * associated to the queue to schedule NAPI handler958 * associated to the queue to schedule NAPI handler
959 */959 */
960 q_vector = ring->q_vector;960 q_vector = ring->q_vector;
961 if (q_vector)961 if (q_vector && !(vsi->vf && ice_is_vf_disabled(vsi->vf)))
962 ice_trigger_sw_intr(hw, q_vector);962 ice_trigger_sw_intr(hw, q_vector);
963 963
964 status = ice_dis_vsi_txq(vsi->port_info, txq_meta->vsi_idx,964 status = ice_dis_vsi_txq(vsi->port_info, txq_meta->vsi_idx,
drivers/net/ethernet/intel/ice/ice_lib.c+25−0
@@ -2239,6 +2239,31 @@ int ice_vsi_stop_xdp_tx_rings(struct ice_vsi *vsi) · 2238 unmodified lines
2239 return ice_vsi_stop_tx_rings(vsi, ICE_NO_RESET, 0, vsi->xdp_rings, vsi->num_xdp_txq);2239 return ice_vsi_stop_tx_rings(vsi, ICE_NO_RESET, 0, vsi->xdp_rings, vsi->num_xdp_txq);
2240}2240}
2241 2241
2242/**
2243 * ice_vsi_is_rx_queue_active
2244 * @vsi: the VSI being configured
2245 *
2246 * Return true if at least one queue is active.
2247 */
2248bool ice_vsi_is_rx_queue_active(struct ice_vsi *vsi)
2249{
2250 struct ice_pf *pf = vsi->back;
2251 struct ice_hw *hw = &pf->hw;
2252 int i;
2253
2254 ice_for_each_rxq(vsi, i) {
2255 u32 rx_reg;
2256 int pf_q;
2257
2258 pf_q = vsi->rxq_map[i];
2259 rx_reg = rd32(hw, QRX_CTRL(pf_q));
2260 if (rx_reg & QRX_CTRL_QENA_STAT_M)
2261 return true;
2262 }
2263
2264 return false;
2265}
2266
2242/**2267/**
2243 * ice_vsi_is_vlan_pruning_ena - check if VLAN pruning is enabled or not2268 * ice_vsi_is_vlan_pruning_ena - check if VLAN pruning is enabled or not
2244 * @vsi: VSI to check whether or not VLAN pruning is enabled.2269 * @vsi: VSI to check whether or not VLAN pruning is enabled.
drivers/net/ethernet/intel/ice/ice_lib.h+1−0
@@ -129,4 +129,5 @@ u16 ice_vsi_num_non_zero_vlans(struct ice_vsi *vsi); · 128 unmodified lines
129bool ice_is_feature_supported(struct ice_pf *pf, enum ice_feature f);129bool ice_is_feature_supported(struct ice_pf *pf, enum ice_feature f);
130void ice_clear_feature_support(struct ice_pf *pf, enum ice_feature f);130void ice_clear_feature_support(struct ice_pf *pf, enum ice_feature f);
131void ice_init_feature_support(struct ice_pf *pf);131void ice_init_feature_support(struct ice_pf *pf);
132bool ice_vsi_is_rx_queue_active(struct ice_vsi *vsi);
132#endif /* !_ICE_LIB_H_ */133#endif /* !_ICE_LIB_H_ */
drivers/net/ethernet/intel/ice/ice_vf_lib.c+4−1
@@ -576,7 +576,10 @@ int ice_reset_vf(struct ice_vf *vf, u32 flags) · 575 unmodified lines
576 return -EINVAL;576 return -EINVAL;
577 }577 }
578 ice_vsi_stop_lan_tx_rings(vsi, ICE_NO_RESET, vf->vf_id);578 ice_vsi_stop_lan_tx_rings(vsi, ICE_NO_RESET, vf->vf_id);
579 ice_vsi_stop_all_rx_rings(vsi);579
580 if (ice_vsi_is_rx_queue_active(vsi))
581 ice_vsi_stop_all_rx_rings(vsi);
582
580 dev_dbg(dev, "VF is already disabled, there is no need for resetting it, telling VM, all is fine %d\n",583 dev_dbg(dev, "VF is already disabled, there is no need for resetting it, telling VM, all is fine %d\n",
581 vf->vf_id);584 vf->vf_id);
582 return 0;585 return 0;
drivers/net/ethernet/marvell/mv643xx_eth.c+1−0
@@ -2481,6 +2481,7 @@ out_free: · 2480 unmodified lines
2481 for (i = 0; i < mp->rxq_count; i++)2481 for (i = 0; i < mp->rxq_count; i++)
2482 rxq_deinit(mp->rxq + i);2482 rxq_deinit(mp->rxq + i);
2483out:2483out:
2484 napi_disable(&mp->napi);
2484 free_irq(dev->irq, dev);2485 free_irq(dev->irq, dev);
2485 2486
2486 return err;2487 return err;
drivers/net/ethernet/marvell/octeontx2/Kconfig+2−0
@@ -32,10 +32,12 @@ config OCTEONTX2_PF · 31 unmodified lines
32 tristate "Marvell OcteonTX2 NIC Physical Function driver"32 tristate "Marvell OcteonTX2 NIC Physical Function driver"
33 select OCTEONTX2_MBOX33 select OCTEONTX2_MBOX
34 select NET_DEVLINK34 select NET_DEVLINK
35 depends on MACSEC || !MACSEC
35 depends on (64BIT && COMPILE_TEST) || ARM6436 depends on (64BIT && COMPILE_TEST) || ARM64
36 select DIMLIB37 select DIMLIB
37 depends on PCI38 depends on PCI
38 depends on PTP_1588_CLOCK_OPTIONAL39 depends on PTP_1588_CLOCK_OPTIONAL
40 depends on MACSEC || !MACSEC
39 help41 help
40 This driver supports Marvell's OcteonTX2 NIC physical function.42 This driver supports Marvell's OcteonTX2 NIC physical function.
41 43
drivers/net/ethernet/marvell/octeontx2/nic/otx2_common.c+1−0
@@ -898,6 +898,7 @@ static int otx2_sq_init(struct otx2_nic *pfvf, u16 qidx, u16 sqb_aura) · 897 unmodified lines
898 }898 }
899 899
900 sq->head = 0;900 sq->head = 0;
901 sq->cons_head = 0;
901 sq->sqe_per_sqb = (pfvf->hw.sqb_size / sq->sqe_size) - 1;902 sq->sqe_per_sqb = (pfvf->hw.sqb_size / sq->sqe_size) - 1;
902 sq->num_sqbs = (qset->sqe_cnt + sq->sqe_per_sqb) / sq->sqe_per_sqb;903 sq->num_sqbs = (qset->sqe_cnt + sq->sqe_per_sqb) / sq->sqe_per_sqb;
903 /* Set SQE threshold to 10% of total SQEs */904 /* Set SQE threshold to 10% of total SQEs */
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c+105−30
@@ -15,6 +15,7 @@ · 14 unmodified lines
15#include <net/ip.h>15#include <net/ip.h>
16#include <linux/bpf.h>16#include <linux/bpf.h>
17#include <linux/bpf_trace.h>17#include <linux/bpf_trace.h>
18#include <linux/bitfield.h>
18 19
19#include "otx2_reg.h"20#include "otx2_reg.h"
20#include "otx2_common.h"21#include "otx2_common.h"
@@ -1171,6 +1172,59 @@ int otx2_set_real_num_queues(struct net_device *netdev, · 1150 unmodified lines
1171}1172}
1172EXPORT_SYMBOL(otx2_set_real_num_queues);1173EXPORT_SYMBOL(otx2_set_real_num_queues);
1173 1174
1175static char *nix_sqoperr_e_str[NIX_SQOPERR_MAX] = {
1176 "NIX_SQOPERR_OOR",
1177 "NIX_SQOPERR_CTX_FAULT",
1178 "NIX_SQOPERR_CTX_POISON",
1179 "NIX_SQOPERR_DISABLED",
1180 "NIX_SQOPERR_SIZE_ERR",
1181 "NIX_SQOPERR_OFLOW",
1182 "NIX_SQOPERR_SQB_NULL",
1183 "NIX_SQOPERR_SQB_FAULT",
1184 "NIX_SQOPERR_SQE_SZ_ZERO",
1185};
1186
1187static char *nix_mnqerr_e_str[NIX_MNQERR_MAX] = {
1188 "NIX_MNQERR_SQ_CTX_FAULT",
1189 "NIX_MNQERR_SQ_CTX_POISON",
1190 "NIX_MNQERR_SQB_FAULT",
1191 "NIX_MNQERR_SQB_POISON",
1192 "NIX_MNQERR_TOTAL_ERR",
1193 "NIX_MNQERR_LSO_ERR",
1194 "NIX_MNQERR_CQ_QUERY_ERR",
1195 "NIX_MNQERR_MAX_SQE_SIZE_ERR",
1196 "NIX_MNQERR_MAXLEN_ERR",
1197 "NIX_MNQERR_SQE_SIZEM1_ZERO",
1198};
1199
1200static char *nix_snd_status_e_str[NIX_SND_STATUS_MAX] = {
1201 "NIX_SND_STATUS_GOOD",
1202 "NIX_SND_STATUS_SQ_CTX_FAULT",
1203 "NIX_SND_STATUS_SQ_CTX_POISON",
1204 "NIX_SND_STATUS_SQB_FAULT",
1205 "NIX_SND_STATUS_SQB_POISON",
1206 "NIX_SND_STATUS_HDR_ERR",
1207 "NIX_SND_STATUS_EXT_ERR",
1208 "NIX_SND_STATUS_JUMP_FAULT",
1209 "NIX_SND_STATUS_JUMP_POISON",
1210 "NIX_SND_STATUS_CRC_ERR",
1211 "NIX_SND_STATUS_IMM_ERR",
1212 "NIX_SND_STATUS_SG_ERR",
1213 "NIX_SND_STATUS_MEM_ERR",
1214 "NIX_SND_STATUS_INVALID_SUBDC",
1215 "NIX_SND_STATUS_SUBDC_ORDER_ERR",
1216 "NIX_SND_STATUS_DATA_FAULT",
1217 "NIX_SND_STATUS_DATA_POISON",
1218 "NIX_SND_STATUS_NPC_DROP_ACTION",
1219 "NIX_SND_STATUS_LOCK_VIOL",
1220 "NIX_SND_STATUS_NPC_UCAST_CHAN_ERR",
1221 "NIX_SND_STATUS_NPC_MCAST_CHAN_ERR",
1222 "NIX_SND_STATUS_NPC_MCAST_ABORT",
1223 "NIX_SND_STATUS_NPC_VTAG_PTR_ERR",
1224 "NIX_SND_STATUS_NPC_VTAG_SIZE_ERR",
1225 "NIX_SND_STATUS_SEND_STATS_ERR",
1226};
1227
1174static irqreturn_t otx2_q_intr_handler(int irq, void *data)1228static irqreturn_t otx2_q_intr_handler(int irq, void *data)
1175{1229{
1176 struct otx2_nic *pf = data;1230 struct otx2_nic *pf = data;
@@ -1204,46 +1258,67 @@ static irqreturn_t otx2_q_intr_handler(int irq, void *data) · 27 unmodified lines
1204 1258
1205 /* SQ */1259 /* SQ */
1206 for (qidx = 0; qidx < pf->hw.tot_tx_queues; qidx++) {1260 for (qidx = 0; qidx < pf->hw.tot_tx_queues; qidx++) {
1261 u64 sq_op_err_dbg, mnq_err_dbg, snd_err_dbg;
1262 u8 sq_op_err_code, mnq_err_code, snd_err_code;
1263
1264 /* Below debug registers captures first errors corresponding to
1265 * those registers. We don't have to check against SQ qid as
1266 * these are fatal errors.
1267 */
1268
1207 ptr = otx2_get_regaddr(pf, NIX_LF_SQ_OP_INT);1269 ptr = otx2_get_regaddr(pf, NIX_LF_SQ_OP_INT);
1208 val = otx2_atomic64_add((qidx << 44), ptr);1270 val = otx2_atomic64_add((qidx << 44), ptr);
1209 otx2_write64(pf, NIX_LF_SQ_OP_INT, (qidx << 44) |1271 otx2_write64(pf, NIX_LF_SQ_OP_INT, (qidx << 44) |
1210 (val & NIX_SQINT_BITS));1272 (val & NIX_SQINT_BITS));
1211 1273
1212 if (!(val & (NIX_SQINT_BITS | BIT_ULL(42))))
1213 continue;
1214
1215 if (val & BIT_ULL(42)) {1274 if (val & BIT_ULL(42)) {
1216 netdev_err(pf->netdev, "SQ%lld: error reading NIX_LF_SQ_OP_INT, NIX_LF_ERR_INT 0x%llx\n",1275 netdev_err(pf->netdev, "SQ%lld: error reading NIX_LF_SQ_OP_INT, NIX_LF_ERR_INT 0x%llx\n",
1217 qidx, otx2_read64(pf, NIX_LF_ERR_INT));1276 qidx, otx2_read64(pf, NIX_LF_ERR_INT));
1218 } else {1277 goto done;
1219 if (val & BIT_ULL(NIX_SQINT_LMT_ERR)) {
1220 netdev_err(pf->netdev, "SQ%lld: LMT store error NIX_LF_SQ_OP_ERR_DBG:0x%llx",
1221 qidx,
1222 otx2_read64(pf,
1223 NIX_LF_SQ_OP_ERR_DBG));
1224 otx2_write64(pf, NIX_LF_SQ_OP_ERR_DBG,
1225 BIT_ULL(44));
1226 }
1227 if (val & BIT_ULL(NIX_SQINT_MNQ_ERR)) {
1228 netdev_err(pf->netdev, "SQ%lld: Meta-descriptor enqueue error NIX_LF_MNQ_ERR_DGB:0x%llx\n",
1229 qidx,
1230 otx2_read64(pf, NIX_LF_MNQ_ERR_DBG));
1231 otx2_write64(pf, NIX_LF_MNQ_ERR_DBG,
1232 BIT_ULL(44));
1233 }
1234 if (val & BIT_ULL(NIX_SQINT_SEND_ERR)) {
1235 netdev_err(pf->netdev, "SQ%lld: Send error, NIX_LF_SEND_ERR_DBG 0x%llx",
1236 qidx,
1237 otx2_read64(pf,
1238 NIX_LF_SEND_ERR_DBG));
1239 otx2_write64(pf, NIX_LF_SEND_ERR_DBG,
1240 BIT_ULL(44));
1241 }
1242 if (val & BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL))
1243 netdev_err(pf->netdev, "SQ%lld: SQB allocation failed",
1244 qidx);
1245 }1278 }
1246 1279
1280 sq_op_err_dbg = otx2_read64(pf, NIX_LF_SQ_OP_ERR_DBG);
1281 if (!(sq_op_err_dbg & BIT(44)))
1282 goto chk_mnq_err_dbg;
1283
1284 sq_op_err_code = FIELD_GET(GENMASK(7, 0), sq_op_err_dbg);
1285 netdev_err(pf->netdev, "SQ%lld: NIX_LF_SQ_OP_ERR_DBG(%llx) err=%s\n",
1286 qidx, sq_op_err_dbg, nix_sqoperr_e_str[sq_op_err_code]);
1287
1288 otx2_write64(pf, NIX_LF_SQ_OP_ERR_DBG, BIT_ULL(44));
1289
1290 if (sq_op_err_code == NIX_SQOPERR_SQB_NULL)
1291 goto chk_mnq_err_dbg;
1292
1293 /* Err is not NIX_SQOPERR_SQB_NULL, call aq function to read SQ structure.
1294 * TODO: But we are in irq context. How to call mbox functions which does sleep
1295 */
1296
1297chk_mnq_err_dbg:
1298 mnq_err_dbg = otx2_read64(pf, NIX_LF_MNQ_ERR_DBG);
1299 if (!(mnq_err_dbg & BIT(44)))
1300 goto chk_snd_err_dbg;
1301
1302 mnq_err_code = FIELD_GET(GENMASK(7, 0), mnq_err_dbg);
1303 netdev_err(pf->netdev, "SQ%lld: NIX_LF_MNQ_ERR_DBG(%llx) err=%s\n",
1304 qidx, mnq_err_dbg, nix_mnqerr_e_str[mnq_err_code]);
1305 otx2_write64(pf, NIX_LF_MNQ_ERR_DBG, BIT_ULL(44));
1306
1307chk_snd_err_dbg:
1308 snd_err_dbg = otx2_read64(pf, NIX_LF_SEND_ERR_DBG);
1309 if (snd_err_dbg & BIT(44)) {
1310 snd_err_code = FIELD_GET(GENMASK(7, 0), snd_err_dbg);
1311 netdev_err(pf->netdev, "SQ%lld: NIX_LF_SND_ERR_DBG:0x%llx err=%s\n",
1312 qidx, snd_err_dbg, nix_snd_status_e_str[snd_err_code]);
1313 otx2_write64(pf, NIX_LF_SEND_ERR_DBG, BIT_ULL(44));
1314 }
1315
1316done:
1317 /* Print values and reset */
1318 if (val & BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL))
1319 netdev_err(pf->netdev, "SQ%lld: SQB allocation failed",
1320 qidx);
1321
1247 schedule_work(&pf->reset_task);1322 schedule_work(&pf->reset_task);
1248 }1323 }
1249 1324
drivers/net/ethernet/marvell/octeontx2/nic/otx2_struct.h+57−0
@@ -281,4 +281,61 @@ enum nix_sqint_e { · 280 unmodified lines
281 BIT_ULL(NIX_SQINT_SEND_ERR) | \281 BIT_ULL(NIX_SQINT_SEND_ERR) | \
282 BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL))282 BIT_ULL(NIX_SQINT_SQB_ALLOC_FAIL))
283 283
284enum nix_sqoperr_e {
285 NIX_SQOPERR_OOR = 0,
286 NIX_SQOPERR_CTX_FAULT = 1,
287 NIX_SQOPERR_CTX_POISON = 2,
288 NIX_SQOPERR_DISABLED = 3,
289 NIX_SQOPERR_SIZE_ERR = 4,
290 NIX_SQOPERR_OFLOW = 5,
291 NIX_SQOPERR_SQB_NULL = 6,
292 NIX_SQOPERR_SQB_FAULT = 7,
293 NIX_SQOPERR_SQE_SZ_ZERO = 8,
294 NIX_SQOPERR_MAX,
295};
296
297enum nix_mnqerr_e {
298 NIX_MNQERR_SQ_CTX_FAULT = 0,
299 NIX_MNQERR_SQ_CTX_POISON = 1,
300 NIX_MNQERR_SQB_FAULT = 2,
301 NIX_MNQERR_SQB_POISON = 3,
302 NIX_MNQERR_TOTAL_ERR = 4,
303 NIX_MNQERR_LSO_ERR = 5,
304 NIX_MNQERR_CQ_QUERY_ERR = 6,
305 NIX_MNQERR_MAX_SQE_SIZE_ERR = 7,
306 NIX_MNQERR_MAXLEN_ERR = 8,
307 NIX_MNQERR_SQE_SIZEM1_ZERO = 9,
308 NIX_MNQERR_MAX,
309};
310
311enum nix_snd_status_e {
312 NIX_SND_STATUS_GOOD = 0x0,
313 NIX_SND_STATUS_SQ_CTX_FAULT = 0x1,
314 NIX_SND_STATUS_SQ_CTX_POISON = 0x2,
315 NIX_SND_STATUS_SQB_FAULT = 0x3,
316 NIX_SND_STATUS_SQB_POISON = 0x4,
317 NIX_SND_STATUS_HDR_ERR = 0x5,
318 NIX_SND_STATUS_EXT_ERR = 0x6,
319 NIX_SND_STATUS_JUMP_FAULT = 0x7,
320 NIX_SND_STATUS_JUMP_POISON = 0x8,
321 NIX_SND_STATUS_CRC_ERR = 0x9,
322 NIX_SND_STATUS_IMM_ERR = 0x10,
323 NIX_SND_STATUS_SG_ERR = 0x11,
324 NIX_SND_STATUS_MEM_ERR = 0x12,
325 NIX_SND_STATUS_INVALID_SUBDC = 0x13,
326 NIX_SND_STATUS_SUBDC_ORDER_ERR = 0x14,
327 NIX_SND_STATUS_DATA_FAULT = 0x15,
328 NIX_SND_STATUS_DATA_POISON = 0x16,
329 NIX_SND_STATUS_NPC_DROP_ACTION = 0x17,
330 NIX_SND_STATUS_LOCK_VIOL = 0x18,
331 NIX_SND_STATUS_NPC_UCAST_CHAN_ERR = 0x19,
332 NIX_SND_STATUS_NPC_MCAST_CHAN_ERR = 0x20,
333 NIX_SND_STATUS_NPC_MCAST_ABORT = 0x21,
334 NIX_SND_STATUS_NPC_VTAG_PTR_ERR = 0x22,
335 NIX_SND_STATUS_NPC_VTAG_SIZE_ERR = 0x23,
336 NIX_SND_STATUS_SEND_MEM_FAULT = 0x24,
337 NIX_SND_STATUS_SEND_STATS_ERR = 0x25,
338 NIX_SND_STATUS_MAX,
339};
340
284#endif /* OTX2_STRUCT_H */341#endif /* OTX2_STRUCT_H */
drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.c+19−13
@@ -441,6 +441,7 @@ static int otx2_tx_napi_handler(struct otx2_nic *pfvf, · 440 unmodified lines
441 struct otx2_cq_queue *cq, int budget)441 struct otx2_cq_queue *cq, int budget)
442{442{
443 int tx_pkts = 0, tx_bytes = 0, qidx;443 int tx_pkts = 0, tx_bytes = 0, qidx;
444 struct otx2_snd_queue *sq;
444 struct nix_cqe_tx_s *cqe;445 struct nix_cqe_tx_s *cqe;
445 int processed_cqe = 0;446 int processed_cqe = 0;
446 447
@@ -451,6 +452,9 @@ static int otx2_tx_napi_handler(struct otx2_nic *pfvf, · 4 unmodified lines
451 return 0;452 return 0;
452 453
453process_cqe:454process_cqe:
455 qidx = cq->cq_idx - pfvf->hw.rx_queues;
456 sq = &pfvf->qset.sq[qidx];
457
454 while (likely(processed_cqe < budget) && cq->pend_cqe) {458 while (likely(processed_cqe < budget) && cq->pend_cqe) {
455 cqe = (struct nix_cqe_tx_s *)otx2_get_next_cqe(cq);459 cqe = (struct nix_cqe_tx_s *)otx2_get_next_cqe(cq);
456 if (unlikely(!cqe)) {460 if (unlikely(!cqe)) {
@@ -458,18 +462,20 @@ process_cqe: · 1 unmodified line
458 return 0;462 return 0;
459 break;463 break;
460 }464 }
465
461 if (cq->cq_type == CQ_XDP) {466 if (cq->cq_type == CQ_XDP) {
462 qidx = cq->cq_idx - pfvf->hw.rx_queues;467 otx2_xdp_snd_pkt_handler(pfvf, sq, cqe);
463 otx2_xdp_snd_pkt_handler(pfvf, &pfvf->qset.sq[qidx],
464 cqe);
465 } else {468 } else {
466 otx2_snd_pkt_handler(pfvf, cq,469 otx2_snd_pkt_handler(pfvf, cq, sq, cqe, budget,
467 &pfvf->qset.sq[cq->cint_idx],470 &tx_pkts, &tx_bytes);
468 cqe, budget, &tx_pkts, &tx_bytes);
469 }471 }
472
470 cqe->hdr.cqe_type = NIX_XQE_TYPE_INVALID;473 cqe->hdr.cqe_type = NIX_XQE_TYPE_INVALID;
471 processed_cqe++;474 processed_cqe++;
472 cq->pend_cqe--;475 cq->pend_cqe--;
476
477 sq->cons_head++;
478 sq->cons_head &= (sq->sqe_cnt - 1);
473 }479 }
474 480
475 /* Free CQEs to HW */481 /* Free CQEs to HW */
@@ -1072,17 +1078,17 @@ bool otx2_sq_append_skb(struct net_device *netdev, struct otx2_snd_queue *sq, · 596 unmodified lines
1072{1078{
1073 struct netdev_queue *txq = netdev_get_tx_queue(netdev, qidx);1079 struct netdev_queue *txq = netdev_get_tx_queue(netdev, qidx);
1074 struct otx2_nic *pfvf = netdev_priv(netdev);1080 struct otx2_nic *pfvf = netdev_priv(netdev);
1075 int offset, num_segs, free_sqe;1081 int offset, num_segs, free_desc;
1076 struct nix_sqe_hdr_s *sqe_hdr;1082 struct nix_sqe_hdr_s *sqe_hdr;
1077 1083
1078 /* Check if there is room for new SQE.1084 /* Check if there is enough room between producer
1079 * 'Num of SQBs freed to SQ's pool - SQ's Aura count'1085 * and consumer index.
1080 * will give free SQE count.
1081 */1086 */
1082 free_sqe = (sq->num_sqbs - *sq->aura_fc_addr) * sq->sqe_per_sqb;1087 free_desc = (sq->cons_head - sq->head - 1 + sq->sqe_cnt) & (sq->sqe_cnt - 1);
1088 if (free_desc < sq->sqe_thresh)
1089 return false;
1083 1090
1084 if (free_sqe < sq->sqe_thresh ||1091 if (free_desc < otx2_get_sqe_count(pfvf, skb))
1085 free_sqe < otx2_get_sqe_count(pfvf, skb))
1086 return false;1092 return false;
1087 1093
1088 num_segs = skb_shinfo(skb)->nr_frags + 1;1094 num_segs = skb_shinfo(skb)->nr_frags + 1;
drivers/net/ethernet/marvell/octeontx2/nic/otx2_txrx.h+1−0
@@ -79,6 +79,7 @@ struct sg_list { · 78 unmodified lines
79struct otx2_snd_queue {79struct otx2_snd_queue {
80 u8 aura_id;80 u8 aura_id;
81 u16 head;81 u16 head;
82 u16 cons_head;
82 u16 sqe_size;83 u16 sqe_size;
83 u32 sqe_cnt;84 u32 sqe_cnt;
84 u16 num_sqbs;85 u16 num_sqbs;
drivers/net/ethernet/marvell/prestera/prestera_rxtx.c+6−1
@@ -776,6 +776,7 @@ tx_done: · 775 unmodified lines
776int prestera_rxtx_switch_init(struct prestera_switch *sw)776int prestera_rxtx_switch_init(struct prestera_switch *sw)
777{777{
778 struct prestera_rxtx *rxtx;778 struct prestera_rxtx *rxtx;
779 int err;
779 780
780 rxtx = kzalloc(sizeof(*rxtx), GFP_KERNEL);781 rxtx = kzalloc(sizeof(*rxtx), GFP_KERNEL);
781 if (!rxtx)782 if (!rxtx)
@@ -783,7 +784,11 @@ int prestera_rxtx_switch_init(struct prestera_switch *sw) · 1 unmodified line
783 784
784 sw->rxtx = rxtx;785 sw->rxtx = rxtx;
785 786
786 return prestera_sdma_switch_init(sw);787 err = prestera_sdma_switch_init(sw);
788 if (err)
789 kfree(rxtx);
790
791 return err;
787}792}
788 793
789void prestera_rxtx_switch_fini(struct prestera_switch *sw)794void prestera_rxtx_switch_fini(struct prestera_switch *sw)
drivers/net/ethernet/mediatek/mtk_star_emac.c+2−0
@@ -1026,6 +1026,8 @@ static int mtk_star_enable(struct net_device *ndev) · 1025 unmodified lines
1026 return 0;1026 return 0;
1027 1027
1028err_free_irq:1028err_free_irq:
1029 napi_disable(&priv->rx_napi);
1030 napi_disable(&priv->tx_napi);
1029 free_irq(ndev->irq, ndev);1031 free_irq(ndev->irq, ndev);
1030err_free_skbs:1032err_free_skbs:
1031 mtk_star_free_rx_skbs(priv);1033 mtk_star_free_rx_skbs(priv);
drivers/net/ethernet/mellanox/mlx5/core/cmd.c+8−3
@@ -1770,12 +1770,17 @@ void mlx5_cmd_flush(struct mlx5_core_dev *dev) · 1769 unmodified lines
1770 struct mlx5_cmd *cmd = &dev->cmd;1770 struct mlx5_cmd *cmd = &dev->cmd;
1771 int i;1771 int i;
1772 1772
1773 for (i = 0; i < cmd->max_reg_cmds; i++)1773 for (i = 0; i < cmd->max_reg_cmds; i++) {
1774 while (down_trylock(&cmd->sem))1774 while (down_trylock(&cmd->sem)) {
1775 mlx5_cmd_trigger_completions(dev);1775 mlx5_cmd_trigger_completions(dev);
1776 cond_resched();
1777 }
1778 }
1776 1779
1777 while (down_trylock(&cmd->pages_sem))1780 while (down_trylock(&cmd->pages_sem)) {
1778 mlx5_cmd_trigger_completions(dev);1781 mlx5_cmd_trigger_completions(dev);
1782 cond_resched();
1783 }
1779 1784
1780 /* Unlock cmdif */1785 /* Unlock cmdif */
1781 up(&cmd->pages_sem);1786 up(&cmd->pages_sem);
drivers/net/ethernet/mellanox/mlx5/core/en/rep/bridge.c+31−0
@@ -164,6 +164,36 @@ static int mlx5_esw_bridge_port_changeupper(struct notifier_block *nb, void *ptr · 163 unmodified lines
164 return err;164 return err;
165}165}
166 166
167static int
168mlx5_esw_bridge_changeupper_validate_netdev(void *ptr)
169{
170 struct net_device *dev = netdev_notifier_info_to_dev(ptr);
171 struct netdev_notifier_changeupper_info *info = ptr;
172 struct net_device *upper = info->upper_dev;
173 struct net_device *lower;
174 struct list_head *iter;
175
176 if (!netif_is_bridge_master(upper) || !netif_is_lag_master(dev))
177 return 0;
178
179 netdev_for_each_lower_dev(dev, lower, iter) {
180 struct mlx5_core_dev *mdev;
181 struct mlx5e_priv *priv;
182
183 if (!mlx5e_eswitch_rep(lower))
184 continue;
185
186 priv = netdev_priv(lower);
187 mdev = priv->mdev;
188 if (!mlx5_lag_is_active(mdev))
189 return -EAGAIN;
190 if (!mlx5_lag_is_shared_fdb(mdev))
191 return -EOPNOTSUPP;
192 }
193
194 return 0;
195}
196
167static int mlx5_esw_bridge_switchdev_port_event(struct notifier_block *nb,197static int mlx5_esw_bridge_switchdev_port_event(struct notifier_block *nb,
168 unsigned long event, void *ptr)198 unsigned long event, void *ptr)
169{199{
@@ -171,6 +201,7 @@ static int mlx5_esw_bridge_switchdev_port_event(struct notifier_block *nb, · 1 unmodified line
171 201
172 switch (event) {202 switch (event) {
173 case NETDEV_PRECHANGEUPPER:203 case NETDEV_PRECHANGEUPPER:
204 err = mlx5_esw_bridge_changeupper_validate_netdev(ptr);
174 break;205 break;
175 206
176 case NETDEV_CHANGEUPPER:207 case NETDEV_CHANGEUPPER:
drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/act.c+32−60
@@ -6,70 +6,42 @@ · 5 unmodified lines
6#include "en/tc_priv.h"6#include "en/tc_priv.h"
7#include "mlx5_core.h"7#include "mlx5_core.h"
8 8
9/* Must be aligned with enum flow_action_id. */
10static struct mlx5e_tc_act *tc_acts_fdb[NUM_FLOW_ACTIONS] = {9static struct mlx5e_tc_act *tc_acts_fdb[NUM_FLOW_ACTIONS] = {
11 &mlx5e_tc_act_accept,10 [FLOW_ACTION_ACCEPT] = &mlx5e_tc_act_accept,
12 &mlx5e_tc_act_drop,11 [FLOW_ACTION_DROP] = &mlx5e_tc_act_drop,
13 &mlx5e_tc_act_trap,12 [FLOW_ACTION_TRAP] = &mlx5e_tc_act_trap,
14 &mlx5e_tc_act_goto,13 [FLOW_ACTION_GOTO] = &mlx5e_tc_act_goto,
15 &mlx5e_tc_act_mirred,14 [FLOW_ACTION_REDIRECT] = &mlx5e_tc_act_mirred,
16 &mlx5e_tc_act_mirred,15 [FLOW_ACTION_MIRRED] = &mlx5e_tc_act_mirred,
17 &mlx5e_tc_act_redirect_ingress,16 [FLOW_ACTION_REDIRECT_INGRESS] = &mlx5e_tc_act_redirect_ingress,
18 NULL, /* FLOW_ACTION_MIRRED_INGRESS, */17 [FLOW_ACTION_VLAN_PUSH] = &mlx5e_tc_act_vlan,
19 &mlx5e_tc_act_vlan,18 [FLOW_ACTION_VLAN_POP] = &mlx5e_tc_act_vlan,
20 &mlx5e_tc_act_vlan,19 [FLOW_ACTION_VLAN_MANGLE] = &mlx5e_tc_act_vlan_mangle,
21 &mlx5e_tc_act_vlan_mangle,20 [FLOW_ACTION_TUNNEL_ENCAP] = &mlx5e_tc_act_tun_encap,
22 &mlx5e_tc_act_tun_encap,21 [FLOW_ACTION_TUNNEL_DECAP] = &mlx5e_tc_act_tun_decap,
23 &mlx5e_tc_act_tun_decap,22 [FLOW_ACTION_MANGLE] = &mlx5e_tc_act_pedit,
24 &mlx5e_tc_act_pedit,23 [FLOW_ACTION_ADD] = &mlx5e_tc_act_pedit,
25 &mlx5e_tc_act_pedit,24 [FLOW_ACTION_CSUM] = &mlx5e_tc_act_csum,
26 &mlx5e_tc_act_csum,25 [FLOW_ACTION_PTYPE] = &mlx5e_tc_act_ptype,
27 NULL, /* FLOW_ACTION_MARK, */26 [FLOW_ACTION_SAMPLE] = &mlx5e_tc_act_sample,
28 &mlx5e_tc_act_ptype,27 [FLOW_ACTION_POLICE] = &mlx5e_tc_act_police,
29 NULL, /* FLOW_ACTION_PRIORITY, */28 [FLOW_ACTION_CT] = &mlx5e_tc_act_ct,
30 NULL, /* FLOW_ACTION_WAKE, */29 [FLOW_ACTION_MPLS_PUSH] = &mlx5e_tc_act_mpls_push,
31 NULL, /* FLOW_ACTION_QUEUE, */30 [FLOW_ACTION_MPLS_POP] = &mlx5e_tc_act_mpls_pop,
32 &mlx5e_tc_act_sample,31 [FLOW_ACTION_VLAN_PUSH_ETH] = &mlx5e_tc_act_vlan,
33 &mlx5e_tc_act_police,32 [FLOW_ACTION_VLAN_POP_ETH] = &mlx5e_tc_act_vlan,
34 &mlx5e_tc_act_ct,
35 NULL, /* FLOW_ACTION_CT_METADATA, */
36 &mlx5e_tc_act_mpls_push,
37 &mlx5e_tc_act_mpls_pop,
38 NULL, /* FLOW_ACTION_MPLS_MANGLE, */
39 NULL, /* FLOW_ACTION_GATE, */
40 NULL, /* FLOW_ACTION_PPPOE_PUSH, */
41 NULL, /* FLOW_ACTION_JUMP, */
42 NULL, /* FLOW_ACTION_PIPE, */
43 &mlx5e_tc_act_vlan,
44 &mlx5e_tc_act_vlan,
45};33};
46 34
47/* Must be aligned with enum flow_action_id. */
48static struct mlx5e_tc_act *tc_acts_nic[NUM_FLOW_ACTIONS] = {35static struct mlx5e_tc_act *tc_acts_nic[NUM_FLOW_ACTIONS] = {
49 &mlx5e_tc_act_accept,36 [FLOW_ACTION_ACCEPT] = &mlx5e_tc_act_accept,
50 &mlx5e_tc_act_drop,37 [FLOW_ACTION_DROP] = &mlx5e_tc_act_drop,
51 NULL, /* FLOW_ACTION_TRAP, */38 [FLOW_ACTION_GOTO] = &mlx5e_tc_act_goto,
52 &mlx5e_tc_act_goto,39 [FLOW_ACTION_REDIRECT] = &mlx5e_tc_act_mirred_nic,
53 &mlx5e_tc_act_mirred_nic,40 [FLOW_ACTION_MANGLE] = &mlx5e_tc_act_pedit,
54 NULL, /* FLOW_ACTION_MIRRED, */41 [FLOW_ACTION_ADD] = &mlx5e_tc_act_pedit,
55 NULL, /* FLOW_ACTION_REDIRECT_INGRESS, */42 [FLOW_ACTION_CSUM] = &mlx5e_tc_act_csum,
56 NULL, /* FLOW_ACTION_MIRRED_INGRESS, */43 [FLOW_ACTION_MARK] = &mlx5e_tc_act_mark,
57 NULL, /* FLOW_ACTION_VLAN_PUSH, */44 [FLOW_ACTION_CT] = &mlx5e_tc_act_ct,
58 NULL, /* FLOW_ACTION_VLAN_POP, */
59 NULL, /* FLOW_ACTION_VLAN_MANGLE, */
60 NULL, /* FLOW_ACTION_TUNNEL_ENCAP, */
61 NULL, /* FLOW_ACTION_TUNNEL_DECAP, */
62 &mlx5e_tc_act_pedit,
63 &mlx5e_tc_act_pedit,
64 &mlx5e_tc_act_csum,
65 &mlx5e_tc_act_mark,
66 NULL, /* FLOW_ACTION_PTYPE, */
67 NULL, /* FLOW_ACTION_PRIORITY, */
68 NULL, /* FLOW_ACTION_WAKE, */
69 NULL, /* FLOW_ACTION_QUEUE, */
70 NULL, /* FLOW_ACTION_SAMPLE, */
71 NULL, /* FLOW_ACTION_POLICE, */
72 &mlx5e_tc_act_ct,
73};45};
74 46
75/**47/**
drivers/net/ethernet/mellanox/mlx5/core/en/txrx.h+23−1
@@ -11,6 +11,27 @@ · 10 unmodified lines
11 11
12#define INL_HDR_START_SZ (sizeof(((struct mlx5_wqe_eth_seg *)NULL)->inline_hdr.start))12#define INL_HDR_START_SZ (sizeof(((struct mlx5_wqe_eth_seg *)NULL)->inline_hdr.start))
13 13
14/* IPSEC inline data includes:
15 * 1. ESP trailer: up to 255 bytes of padding, 1 byte for pad length, 1 byte for
16 * next header.
17 * 2. ESP authentication data: 16 bytes for ICV.
18 */
19#define MLX5E_MAX_TX_IPSEC_DS DIV_ROUND_UP(sizeof(struct mlx5_wqe_inline_seg) + \
20 255 + 1 + 1 + 16, MLX5_SEND_WQE_DS)
21
22/* 366 should be big enough to cover all L2, L3 and L4 headers with possible
23 * encapsulations.
24 */
25#define MLX5E_MAX_TX_INLINE_DS DIV_ROUND_UP(366 - INL_HDR_START_SZ + VLAN_HLEN, \
26 MLX5_SEND_WQE_DS)
27
28/* Sync the calculation with mlx5e_sq_calc_wqe_attr. */
29#define MLX5E_MAX_TX_WQEBBS DIV_ROUND_UP(MLX5E_TX_WQE_EMPTY_DS_COUNT + \
30 MLX5E_MAX_TX_INLINE_DS + \
31 MLX5E_MAX_TX_IPSEC_DS + \
32 MAX_SKB_FRAGS + 1, \
33 MLX5_SEND_WQEBB_NUM_DS)
34
14#define MLX5E_RX_ERR_CQE(cqe) (get_cqe_opcode(cqe) != MLX5_CQE_RESP_SEND)35#define MLX5E_RX_ERR_CQE(cqe) (get_cqe_opcode(cqe) != MLX5_CQE_RESP_SEND)
15 36
16static inline37static inline
@@ -424,6 +445,8 @@ mlx5e_set_eseg_swp(struct sk_buff *skb, struct mlx5_wqe_eth_seg *eseg, · 407 unmodified lines
424 445
425static inline u16 mlx5e_stop_room_for_wqe(struct mlx5_core_dev *mdev, u16 wqe_size)446static inline u16 mlx5e_stop_room_for_wqe(struct mlx5_core_dev *mdev, u16 wqe_size)
426{447{
448 WARN_ON_ONCE(PAGE_SIZE / MLX5_SEND_WQE_BB < mlx5e_get_max_sq_wqebbs(mdev));
449
427 /* A WQE must not cross the page boundary, hence two conditions:450 /* A WQE must not cross the page boundary, hence two conditions:
428 * 1. Its size must not exceed the page size.451 * 1. Its size must not exceed the page size.
429 * 2. If the WQE size is X, and the space remaining in a page is less452 * 2. If the WQE size is X, and the space remaining in a page is less
@@ -436,7 +459,6 @@ static inline u16 mlx5e_stop_room_for_wqe(struct mlx5_core_dev *mdev, u16 wqe_si · 6 unmodified lines
436 "wqe_size %u is greater than max SQ WQEBBs %u",459 "wqe_size %u is greater than max SQ WQEBBs %u",
437 wqe_size, mlx5e_get_max_sq_wqebbs(mdev));460 wqe_size, mlx5e_get_max_sq_wqebbs(mdev));
438 461
439
440 return MLX5E_STOP_ROOM(wqe_size);462 return MLX5E_STOP_ROOM(wqe_size);
441}463}
442 464
drivers/net/ethernet/mellanox/mlx5/core/en/xdp.c+2−2
@@ -117,7 +117,7 @@ mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *sq, struct mlx5e_rq *rq, · 116 unmodified lines
117 xdpi.page.rq = rq;117 xdpi.page.rq = rq;
118 118
119 dma_addr = page_pool_get_dma_addr(page) + (xdpf->data - (void *)xdpf);119 dma_addr = page_pool_get_dma_addr(page) + (xdpf->data - (void *)xdpf);
120 dma_sync_single_for_device(sq->pdev, dma_addr, xdptxd.len, DMA_TO_DEVICE);120 dma_sync_single_for_device(sq->pdev, dma_addr, xdptxd.len, DMA_BIDIRECTIONAL);
121 121
122 if (unlikely(xdp_frame_has_frags(xdpf))) {122 if (unlikely(xdp_frame_has_frags(xdpf))) {
123 sinfo = xdp_get_shared_info_from_frame(xdpf);123 sinfo = xdp_get_shared_info_from_frame(xdpf);
@@ -131,7 +131,7 @@ mlx5e_xmit_xdp_buff(struct mlx5e_xdpsq *sq, struct mlx5e_rq *rq, · 7 unmodified lines
131 skb_frag_off(frag);131 skb_frag_off(frag);
132 len = skb_frag_size(frag);132 len = skb_frag_size(frag);
133 dma_sync_single_for_device(sq->pdev, addr, len,133 dma_sync_single_for_device(sq->pdev, addr, len,
134 DMA_TO_DEVICE);134 DMA_BIDIRECTIONAL);
135 }135 }
136 }136 }
137 137
drivers/net/ethernet/mellanox/mlx5/core/en_main.c+7−0
@@ -5694,6 +5694,13 @@ int mlx5e_attach_netdev(struct mlx5e_priv *priv) · 5693 unmodified lines
5694 mlx5e_fs_set_state_destroy(priv->fs,5694 mlx5e_fs_set_state_destroy(priv->fs,
5695 !test_bit(MLX5E_STATE_DESTROYING, &priv->state));5695 !test_bit(MLX5E_STATE_DESTROYING, &priv->state));
5696 5696
5697 /* Validate the max_wqe_size_sq capability. */
5698 if (WARN_ON_ONCE(mlx5e_get_max_sq_wqebbs(priv->mdev) < MLX5E_MAX_TX_WQEBBS)) {
5699 mlx5_core_warn(priv->mdev, "MLX5E: Max SQ WQEBBs firmware capability: %u, needed %lu\n",
5700 mlx5e_get_max_sq_wqebbs(priv->mdev), MLX5E_MAX_TX_WQEBBS);
5701 return -EIO;
5702 }
5703
5697 /* max number of channels may have changed */5704 /* max number of channels may have changed */
5698 max_nch = mlx5e_calc_max_nch(priv->mdev, priv->netdev, profile);5705 max_nch = mlx5e_calc_max_nch(priv->mdev, priv->netdev, profile);
5699 if (priv->channels.params.num_channels > max_nch) {5706 if (priv->channels.params.num_channels > max_nch) {
drivers/net/ethernet/mellanox/mlx5/core/en_rx.c+14−13
@@ -266,7 +266,7 @@ static inline bool mlx5e_rx_cache_get(struct mlx5e_rq *rq, union mlx5e_alloc_uni · 265 unmodified lines
266 266
267 addr = page_pool_get_dma_addr(au->page);267 addr = page_pool_get_dma_addr(au->page);
268 /* Non-XSK always uses PAGE_SIZE. */268 /* Non-XSK always uses PAGE_SIZE. */
269 dma_sync_single_for_device(rq->pdev, addr, PAGE_SIZE, DMA_FROM_DEVICE);269 dma_sync_single_for_device(rq->pdev, addr, PAGE_SIZE, rq->buff.map_dir);
270 return true;270 return true;
271}271}
272 272
@@ -282,8 +282,7 @@ static inline int mlx5e_page_alloc_pool(struct mlx5e_rq *rq, union mlx5e_alloc_u · 9 unmodified lines
282 return -ENOMEM;282 return -ENOMEM;
283 283
284 /* Non-XSK always uses PAGE_SIZE. */284 /* Non-XSK always uses PAGE_SIZE. */
285 addr = dma_map_page_attrs(rq->pdev, au->page, 0, PAGE_SIZE,285 addr = dma_map_page(rq->pdev, au->page, 0, PAGE_SIZE, rq->buff.map_dir);
286 rq->buff.map_dir, DMA_ATTR_SKIP_CPU_SYNC);
287 if (unlikely(dma_mapping_error(rq->pdev, addr))) {286 if (unlikely(dma_mapping_error(rq->pdev, addr))) {
288 page_pool_recycle_direct(rq->page_pool, au->page);287 page_pool_recycle_direct(rq->page_pool, au->page);
289 au->page = NULL;288 au->page = NULL;
@@ -427,14 +426,15 @@ mlx5e_add_skb_frag(struct mlx5e_rq *rq, struct sk_buff *skb, · 137 unmodified lines
427{426{
428 dma_addr_t addr = page_pool_get_dma_addr(au->page);427 dma_addr_t addr = page_pool_get_dma_addr(au->page);
429 428
430 dma_sync_single_for_cpu(rq->pdev, addr + frag_offset, len, DMA_FROM_DEVICE);429 dma_sync_single_for_cpu(rq->pdev, addr + frag_offset, len,
430 rq->buff.map_dir);
431 page_ref_inc(au->page);431 page_ref_inc(au->page);
432 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,432 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags,
433 au->page, frag_offset, len, truesize);433 au->page, frag_offset, len, truesize);
434}434}
435 435
436static inline void436static inline void
437mlx5e_copy_skb_header(struct device *pdev, struct sk_buff *skb,437mlx5e_copy_skb_header(struct mlx5e_rq *rq, struct sk_buff *skb,
438 struct page *page, dma_addr_t addr,438 struct page *page, dma_addr_t addr,
439 int offset_from, int dma_offset, u32 headlen)439 int offset_from, int dma_offset, u32 headlen)
440{440{
@@ -442,7 +442,8 @@ mlx5e_copy_skb_header(struct device *pdev, struct sk_buff *skb, · 1 unmodified line
442 /* Aligning len to sizeof(long) optimizes memcpy performance */442 /* Aligning len to sizeof(long) optimizes memcpy performance */
443 unsigned int len = ALIGN(headlen, sizeof(long));443 unsigned int len = ALIGN(headlen, sizeof(long));
444 444
445 dma_sync_single_for_cpu(pdev, addr + dma_offset, len, DMA_FROM_DEVICE);445 dma_sync_single_for_cpu(rq->pdev, addr + dma_offset, len,
446 rq->buff.map_dir);
446 skb_copy_to_linear_data(skb, from, len);447 skb_copy_to_linear_data(skb, from, len);
447}448}
448 449
@@ -1538,7 +1539,7 @@ mlx5e_skb_from_cqe_linear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi, · 1089 unmodified lines
1538 1539
1539 addr = page_pool_get_dma_addr(au->page);1540 addr = page_pool_get_dma_addr(au->page);
1540 dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset,1541 dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset,
1541 frag_size, DMA_FROM_DEVICE);1542 frag_size, rq->buff.map_dir);
1542 net_prefetch(data);1543 net_prefetch(data);
1543 1544
1544 prog = rcu_dereference(rq->xdp_prog);1545 prog = rcu_dereference(rq->xdp_prog);
@@ -1587,7 +1588,7 @@ mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi · 42 unmodified lines
1587 1588
1588 addr = page_pool_get_dma_addr(au->page);1589 addr = page_pool_get_dma_addr(au->page);
1589 dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset,1590 dma_sync_single_range_for_cpu(rq->pdev, addr, wi->offset,
1590 rq->buff.frame0_sz, DMA_FROM_DEVICE);1591 rq->buff.frame0_sz, rq->buff.map_dir);
1591 net_prefetchw(va); /* xdp_frame data area */1592 net_prefetchw(va); /* xdp_frame data area */
1592 net_prefetch(va + rx_headroom);1593 net_prefetch(va + rx_headroom);
1593 1594
@@ -1608,7 +1609,7 @@ mlx5e_skb_from_cqe_nonlinear(struct mlx5e_rq *rq, struct mlx5e_wqe_frag_info *wi · 14 unmodified lines
1608 1609
1609 addr = page_pool_get_dma_addr(au->page);1610 addr = page_pool_get_dma_addr(au->page);
1610 dma_sync_single_for_cpu(rq->pdev, addr + wi->offset,1611 dma_sync_single_for_cpu(rq->pdev, addr + wi->offset,
1611 frag_consumed_bytes, DMA_FROM_DEVICE);1612 frag_consumed_bytes, rq->buff.map_dir);
1612 1613
1613 if (!xdp_buff_has_frags(&xdp)) {1614 if (!xdp_buff_has_frags(&xdp)) {
1614 /* Init on the first fragment to avoid cold cache access1615 /* Init on the first fragment to avoid cold cache access
@@ -1905,7 +1906,7 @@ mlx5e_skb_from_cqe_mpwrq_nonlinear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *w · 290 unmodified lines
1905 mlx5e_fill_skb_data(skb, rq, au, byte_cnt, frag_offset);1906 mlx5e_fill_skb_data(skb, rq, au, byte_cnt, frag_offset);
1906 /* copy header */1907 /* copy header */
1907 addr = page_pool_get_dma_addr(head_au->page);1908 addr = page_pool_get_dma_addr(head_au->page);
1908 mlx5e_copy_skb_header(rq->pdev, skb, head_au->page, addr,1909 mlx5e_copy_skb_header(rq, skb, head_au->page, addr,
1909 head_offset, head_offset, headlen);1910 head_offset, head_offset, headlen);
1910 /* skb linear part was allocated with headlen and aligned to long */1911 /* skb linear part was allocated with headlen and aligned to long */
1911 skb->tail += headlen;1912 skb->tail += headlen;
@@ -1939,7 +1940,7 @@ mlx5e_skb_from_cqe_mpwrq_linear(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi, · 27 unmodified lines
1939 1940
1940 addr = page_pool_get_dma_addr(au->page);1941 addr = page_pool_get_dma_addr(au->page);
1941 dma_sync_single_range_for_cpu(rq->pdev, addr, head_offset,1942 dma_sync_single_range_for_cpu(rq->pdev, addr, head_offset,
1942 frag_size, DMA_FROM_DEVICE);1943 frag_size, rq->buff.map_dir);
1943 net_prefetch(data);1944 net_prefetch(data);
1944 1945
1945 prog = rcu_dereference(rq->xdp_prog);1946 prog = rcu_dereference(rq->xdp_prog);
@@ -1987,7 +1988,7 @@ mlx5e_skb_from_cqe_shampo(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi, · 41 unmodified lines
1987 1988
1988 if (likely(frag_size <= BIT(MLX5E_SHAMPO_LOG_MAX_HEADER_ENTRY_SIZE))) {1989 if (likely(frag_size <= BIT(MLX5E_SHAMPO_LOG_MAX_HEADER_ENTRY_SIZE))) {
1989 /* build SKB around header */1990 /* build SKB around header */
1990 dma_sync_single_range_for_cpu(rq->pdev, head->addr, 0, frag_size, DMA_FROM_DEVICE);1991 dma_sync_single_range_for_cpu(rq->pdev, head->addr, 0, frag_size, rq->buff.map_dir);
1991 prefetchw(hdr);1992 prefetchw(hdr);
1992 prefetch(data);1993 prefetch(data);
1993 skb = mlx5e_build_linear_skb(rq, hdr, frag_size, rx_headroom, head_size, 0);1994 skb = mlx5e_build_linear_skb(rq, hdr, frag_size, rx_headroom, head_size, 0);
@@ -2009,7 +2010,7 @@ mlx5e_skb_from_cqe_shampo(struct mlx5e_rq *rq, struct mlx5e_mpw_info *wi, · 15 unmodified lines
2009 }2010 }
2010 2011
2011 prefetchw(skb->data);2012 prefetchw(skb->data);
2012 mlx5e_copy_skb_header(rq->pdev, skb, head->page, head->addr,2013 mlx5e_copy_skb_header(rq, skb, head->page, head->addr,
2013 head_offset + rx_headroom,2014 head_offset + rx_headroom,
2014 rx_headroom, head_size);2015 rx_headroom, head_size);
2015 /* skb linear part was allocated with headlen and aligned to long */2016 /* skb linear part was allocated with headlen and aligned to long */
drivers/net/ethernet/mellanox/mlx5/core/en_tc.c+6−8
@@ -3633,10 +3633,14 @@ mlx5e_clone_flow_attr_for_post_act(struct mlx5_flow_attr *attr, · 3632 unmodified lines
3633 attr2->action = 0;3633 attr2->action = 0;
3634 attr2->flags = 0;3634 attr2->flags = 0;
3635 attr2->parse_attr = parse_attr;3635 attr2->parse_attr = parse_attr;
3636 attr2->esw_attr->out_count = 0;
3637 attr2->esw_attr->split_count = 0;
3638 attr2->dest_chain = 0;3636 attr2->dest_chain = 0;
3639 attr2->dest_ft = NULL;3637 attr2->dest_ft = NULL;
3638
3639 if (ns_type == MLX5_FLOW_NAMESPACE_FDB) {
3640 attr2->esw_attr->out_count = 0;
3641 attr2->esw_attr->split_count = 0;
3642 }
3643
3640 return attr2;3644 return attr2;
3641}3645}
3642 3646
@@ -4758,12 +4762,6 @@ int mlx5e_policer_validate(const struct flow_action *action, · 1115 unmodified lines
4758 return -EOPNOTSUPP;4762 return -EOPNOTSUPP;
4759 }4763 }
4760 4764
4761 if (act->police.rate_pkt_ps) {
4762 NL_SET_ERR_MSG_MOD(extack,
4763 "QoS offload not support packets per second");
4764 return -EOPNOTSUPP;
4765 }
4766
4767 return 0;4765 return 0;
4768}4766}
4769 4767
drivers/net/ethernet/mellanox/mlx5/core/en_tx.c+5−0
@@ -305,6 +305,8 @@ static void mlx5e_sq_calc_wqe_attr(struct sk_buff *skb, const struct mlx5e_tx_at · 304 unmodified lines
305 u16 ds_cnt_inl = 0;305 u16 ds_cnt_inl = 0;
306 u16 ds_cnt_ids = 0;306 u16 ds_cnt_ids = 0;
307 307
308 /* Sync the calculation with MLX5E_MAX_TX_WQEBBS. */
309
308 if (attr->insz)310 if (attr->insz)
309 ds_cnt_ids = DIV_ROUND_UP(sizeof(struct mlx5_wqe_inline_seg) + attr->insz,311 ds_cnt_ids = DIV_ROUND_UP(sizeof(struct mlx5_wqe_inline_seg) + attr->insz,
310 MLX5_SEND_WQE_DS);312 MLX5_SEND_WQE_DS);
@@ -317,6 +319,9 @@ static void mlx5e_sq_calc_wqe_attr(struct sk_buff *skb, const struct mlx5e_tx_at · 6 unmodified lines
317 inl += VLAN_HLEN;319 inl += VLAN_HLEN;
318 320
319 ds_cnt_inl = DIV_ROUND_UP(inl, MLX5_SEND_WQE_DS);321 ds_cnt_inl = DIV_ROUND_UP(inl, MLX5_SEND_WQE_DS);
322 if (WARN_ON_ONCE(ds_cnt_inl > MLX5E_MAX_TX_INLINE_DS))
323 netdev_warn(skb->dev, "ds_cnt_inl = %u > max %u\n", ds_cnt_inl,
324 (u16)MLX5E_MAX_TX_INLINE_DS);
320 ds_cnt += ds_cnt_inl;325 ds_cnt += ds_cnt_inl;
321 }326 }
322 327
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c+8−6
@@ -1387,12 +1387,14 @@ void mlx5_eswitch_disable_locked(struct mlx5_eswitch *esw) · 1386 unmodified lines
1387 esw->mode == MLX5_ESWITCH_LEGACY ? "LEGACY" : "OFFLOADS",1387 esw->mode == MLX5_ESWITCH_LEGACY ? "LEGACY" : "OFFLOADS",
1388 esw->esw_funcs.num_vfs, esw->enabled_vports);1388 esw->esw_funcs.num_vfs, esw->enabled_vports);
1389 1389
1390 esw->fdb_table.flags &= ~MLX5_ESW_FDB_CREATED;1390 if (esw->fdb_table.flags & MLX5_ESW_FDB_CREATED) {
1391 if (esw->mode == MLX5_ESWITCH_OFFLOADS)1391 esw->fdb_table.flags &= ~MLX5_ESW_FDB_CREATED;
1392 esw_offloads_disable(esw);1392 if (esw->mode == MLX5_ESWITCH_OFFLOADS)
1393 else if (esw->mode == MLX5_ESWITCH_LEGACY)1393 esw_offloads_disable(esw);
1394 esw_legacy_disable(esw);1394 else if (esw->mode == MLX5_ESWITCH_LEGACY)
1395 mlx5_esw_acls_ns_cleanup(esw);1395 esw_legacy_disable(esw);
1396 mlx5_esw_acls_ns_cleanup(esw);
1397 }
1396 1398
1397 if (esw->mode == MLX5_ESWITCH_OFFLOADS)1399 if (esw->mode == MLX5_ESWITCH_OFFLOADS)
1398 devl_rate_nodes_destroy(devlink);1400 devl_rate_nodes_destroy(devlink);
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c+3−15
@@ -2310,7 +2310,7 @@ out_free: · 2309 unmodified lines
2310static int esw_offloads_start(struct mlx5_eswitch *esw,2310static int esw_offloads_start(struct mlx5_eswitch *esw,
2311 struct netlink_ext_ack *extack)2311 struct netlink_ext_ack *extack)
2312{2312{
2313 int err, err1;2313 int err;
2314 2314
2315 esw->mode = MLX5_ESWITCH_OFFLOADS;2315 esw->mode = MLX5_ESWITCH_OFFLOADS;
2316 err = mlx5_eswitch_enable_locked(esw, esw->dev->priv.sriov.num_vfs);2316 err = mlx5_eswitch_enable_locked(esw, esw->dev->priv.sriov.num_vfs);
@@ -2318,11 +2318,6 @@ static int esw_offloads_start(struct mlx5_eswitch *esw, · 1 unmodified line
2318 NL_SET_ERR_MSG_MOD(extack,2318 NL_SET_ERR_MSG_MOD(extack,
2319 "Failed setting eswitch to offloads");2319 "Failed setting eswitch to offloads");
2320 esw->mode = MLX5_ESWITCH_LEGACY;2320 esw->mode = MLX5_ESWITCH_LEGACY;
2321 err1 = mlx5_eswitch_enable_locked(esw, MLX5_ESWITCH_IGNORE_NUM_VFS);
2322 if (err1) {
2323 NL_SET_ERR_MSG_MOD(extack,
2324 "Failed setting eswitch back to legacy");
2325 }
2326 mlx5_rescan_drivers(esw->dev);2321 mlx5_rescan_drivers(esw->dev);
2327 }2322 }
2328 if (esw->offloads.inline_mode == MLX5_INLINE_MODE_NONE) {2323 if (esw->offloads.inline_mode == MLX5_INLINE_MODE_NONE) {
@@ -3389,19 +3384,12 @@ err_metadata: · 1060 unmodified lines
3389static int esw_offloads_stop(struct mlx5_eswitch *esw,3384static int esw_offloads_stop(struct mlx5_eswitch *esw,
3390 struct netlink_ext_ack *extack)3385 struct netlink_ext_ack *extack)
3391{3386{
3392 int err, err1;3387 int err;
3393 3388
3394 esw->mode = MLX5_ESWITCH_LEGACY;3389 esw->mode = MLX5_ESWITCH_LEGACY;
3395 err = mlx5_eswitch_enable_locked(esw, MLX5_ESWITCH_IGNORE_NUM_VFS);3390 err = mlx5_eswitch_enable_locked(esw, MLX5_ESWITCH_IGNORE_NUM_VFS);
3396 if (err) {3391 if (err)
3397 NL_SET_ERR_MSG_MOD(extack, "Failed setting eswitch to legacy");3392 NL_SET_ERR_MSG_MOD(extack, "Failed setting eswitch to legacy");
3398 esw->mode = MLX5_ESWITCH_OFFLOADS;
3399 err1 = mlx5_eswitch_enable_locked(esw, MLX5_ESWITCH_IGNORE_NUM_VFS);
3400 if (err1) {
3401 NL_SET_ERR_MSG_MOD(extack,
3402 "Failed setting eswitch back to offloads");
3403 }
3404 }
3405 3393
3406 return err;3394 return err;
3407}3395}
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads_termtbl.c+8−6
@@ -30,9 +30,9 @@ mlx5_eswitch_termtbl_hash(struct mlx5_flow_act *flow_act, · 29 unmodified lines
30 sizeof(dest->vport.num), hash);30 sizeof(dest->vport.num), hash);
31 hash = jhash((const void *)&dest->vport.vhca_id,31 hash = jhash((const void *)&dest->vport.vhca_id,
32 sizeof(dest->vport.num), hash);32 sizeof(dest->vport.num), hash);
33 if (dest->vport.pkt_reformat)33 if (flow_act->pkt_reformat)
34 hash = jhash(dest->vport.pkt_reformat,34 hash = jhash(flow_act->pkt_reformat,
35 sizeof(*dest->vport.pkt_reformat),35 sizeof(*flow_act->pkt_reformat),
36 hash);36 hash);
37 return hash;37 return hash;
38}38}
@@ -53,9 +53,11 @@ mlx5_eswitch_termtbl_cmp(struct mlx5_flow_act *flow_act1, · 14 unmodified lines
53 if (ret)53 if (ret)
54 return ret;54 return ret;
55 55
56 return dest1->vport.pkt_reformat && dest2->vport.pkt_reformat ?56 if (flow_act1->pkt_reformat && flow_act2->pkt_reformat)
57 memcmp(dest1->vport.pkt_reformat, dest2->vport.pkt_reformat,57 return memcmp(flow_act1->pkt_reformat, flow_act2->pkt_reformat,
58 sizeof(*dest1->vport.pkt_reformat)) : 0;58 sizeof(*flow_act1->pkt_reformat));
59
60 return !(flow_act1->pkt_reformat == flow_act2->pkt_reformat);
59}61}
60 62
61static int63static int
drivers/net/ethernet/mellanox/mlx5/core/fw_reset.c+2−1
@@ -152,7 +152,8 @@ static void mlx5_fw_reset_complete_reload(struct mlx5_core_dev *dev) · 151 unmodified lines
152 mlx5_unload_one(dev);152 mlx5_unload_one(dev);
153 if (mlx5_health_wait_pci_up(dev))153 if (mlx5_health_wait_pci_up(dev))
154 mlx5_core_err(dev, "reset reload flow aborted, PCI reads still not working\n");154 mlx5_core_err(dev, "reset reload flow aborted, PCI reads still not working\n");
155 mlx5_load_one(dev, false);155 else
156 mlx5_load_one(dev, false);
156 devlink_remote_reload_actions_performed(priv_to_devlink(dev), 0,157 devlink_remote_reload_actions_performed(priv_to_devlink(dev), 0,
157 BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT) |158 BIT(DEVLINK_RELOAD_ACTION_DRIVER_REINIT) |
158 BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE));159 BIT(DEVLINK_RELOAD_ACTION_FW_ACTIVATE));
drivers/net/ethernet/neterion/s2io.c+20−9
@@ -7128,9 +7128,8 @@ static int s2io_card_up(struct s2io_nic *sp) · 7127 unmodified lines
7128 if (ret) {7128 if (ret) {
7129 DBG_PRINT(ERR_DBG, "%s: Out of memory in Open\n",7129 DBG_PRINT(ERR_DBG, "%s: Out of memory in Open\n",
7130 dev->name);7130 dev->name);
7131 s2io_reset(sp);7131 ret = -ENOMEM;
7132 free_rx_buffers(sp);7132 goto err_fill_buff;
7133 return -ENOMEM;
7134 }7133 }
7135 DBG_PRINT(INFO_DBG, "Buf in ring:%d is %d:\n", i,7134 DBG_PRINT(INFO_DBG, "Buf in ring:%d is %d:\n", i,
7136 ring->rx_bufs_left);7135 ring->rx_bufs_left);
@@ -7168,18 +7167,16 @@ static int s2io_card_up(struct s2io_nic *sp) · 31 unmodified lines
7168 /* Enable Rx Traffic and interrupts on the NIC */7167 /* Enable Rx Traffic and interrupts on the NIC */
7169 if (start_nic(sp)) {7168 if (start_nic(sp)) {
7170 DBG_PRINT(ERR_DBG, "%s: Starting NIC failed\n", dev->name);7169 DBG_PRINT(ERR_DBG, "%s: Starting NIC failed\n", dev->name);
7171 s2io_reset(sp);7170 ret = -ENODEV;
7172 free_rx_buffers(sp);7171 goto err_out;
7173 return -ENODEV;
7174 }7172 }
7175 7173
7176 /* Add interrupt service routine */7174 /* Add interrupt service routine */
7177 if (s2io_add_isr(sp) != 0) {7175 if (s2io_add_isr(sp) != 0) {
7178 if (sp->config.intr_type == MSI_X)7176 if (sp->config.intr_type == MSI_X)
7179 s2io_rem_isr(sp);7177 s2io_rem_isr(sp);
7180 s2io_reset(sp);7178 ret = -ENODEV;
7181 free_rx_buffers(sp);7179 goto err_out;
7182 return -ENODEV;
7183 }7180 }
7184 7181
7185 timer_setup(&sp->alarm_timer, s2io_alarm_handle, 0);7182 timer_setup(&sp->alarm_timer, s2io_alarm_handle, 0);
@@ -7199,6 +7196,20 @@ static int s2io_card_up(struct s2io_nic *sp) · 13 unmodified lines
7199 }7196 }
7200 7197
7201 return 0;7198 return 0;
7199
7200err_out:
7201 if (config->napi) {
7202 if (config->intr_type == MSI_X) {
7203 for (i = 0; i < sp->config.rx_ring_num; i++)
7204 napi_disable(&sp->mac_control.rings[i].napi);
7205 } else {
7206 napi_disable(&sp->napi);
7207 }
7208 }
7209err_fill_buff:
7210 s2io_reset(sp);
7211 free_rx_buffers(sp);
7212 return ret;
7202}7213}
7203 7214
7204/**7215/**
drivers/net/ethernet/ni/nixge.c+1−0
@@ -900,6 +900,7 @@ static int nixge_open(struct net_device *ndev) · 899 unmodified lines
900err_rx_irq:900err_rx_irq:
901 free_irq(priv->tx_irq, ndev);901 free_irq(priv->tx_irq, ndev);
902err_tx_irq:902err_tx_irq:
903 napi_disable(&priv->napi);
903 phy_stop(phy);904 phy_stop(phy);
904 phy_disconnect(phy);905 phy_disconnect(phy);
905 tasklet_kill(&priv->dma_err_tasklet);906 tasklet_kill(&priv->dma_err_tasklet);
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c+9−2
@@ -629,7 +629,6 @@ static int ehl_common_data(struct pci_dev *pdev, · 628 unmodified lines
629{629{
630 plat->rx_queues_to_use = 8;630 plat->rx_queues_to_use = 8;
631 plat->tx_queues_to_use = 8;631 plat->tx_queues_to_use = 8;
632 plat->clk_ptp_rate = 200000000;
633 plat->use_phy_wol = 1;632 plat->use_phy_wol = 1;
634 633
635 plat->safety_feat_cfg->tsoee = 1;634 plat->safety_feat_cfg->tsoee = 1;
@@ -654,6 +653,8 @@ static int ehl_sgmii_data(struct pci_dev *pdev, · 18 unmodified lines
654 plat->serdes_powerup = intel_serdes_powerup;653 plat->serdes_powerup = intel_serdes_powerup;
655 plat->serdes_powerdown = intel_serdes_powerdown;654 plat->serdes_powerdown = intel_serdes_powerdown;
656 655
656 plat->clk_ptp_rate = 204800000;
657
657 return ehl_common_data(pdev, plat);658 return ehl_common_data(pdev, plat);
658}659}
659 660
@@ -667,6 +668,8 @@ static int ehl_rgmii_data(struct pci_dev *pdev, · 7 unmodified lines
667 plat->bus_id = 1;668 plat->bus_id = 1;
668 plat->phy_interface = PHY_INTERFACE_MODE_RGMII;669 plat->phy_interface = PHY_INTERFACE_MODE_RGMII;
669 670
671 plat->clk_ptp_rate = 204800000;
672
670 return ehl_common_data(pdev, plat);673 return ehl_common_data(pdev, plat);
671}674}
672 675
@@ -683,6 +686,8 @@ static int ehl_pse0_common_data(struct pci_dev *pdev, · 10 unmodified lines
683 plat->bus_id = 2;686 plat->bus_id = 2;
684 plat->addr64 = 32;687 plat->addr64 = 32;
685 688
689 plat->clk_ptp_rate = 200000000;
690
686 intel_mgbe_pse_crossts_adj(intel_priv, EHL_PSE_ART_MHZ);691 intel_mgbe_pse_crossts_adj(intel_priv, EHL_PSE_ART_MHZ);
687 692
688 return ehl_common_data(pdev, plat);693 return ehl_common_data(pdev, plat);
@@ -722,6 +727,8 @@ static int ehl_pse1_common_data(struct pci_dev *pdev, · 33 unmodified lines
722 plat->bus_id = 3;727 plat->bus_id = 3;
723 plat->addr64 = 32;728 plat->addr64 = 32;
724 729
730 plat->clk_ptp_rate = 200000000;
731
725 intel_mgbe_pse_crossts_adj(intel_priv, EHL_PSE_ART_MHZ);732 intel_mgbe_pse_crossts_adj(intel_priv, EHL_PSE_ART_MHZ);
726 733
727 return ehl_common_data(pdev, plat);734 return ehl_common_data(pdev, plat);
@@ -757,7 +764,7 @@ static int tgl_common_data(struct pci_dev *pdev, · 29 unmodified lines
757{764{
758 plat->rx_queues_to_use = 6;765 plat->rx_queues_to_use = 6;
759 plat->tx_queues_to_use = 4;766 plat->tx_queues_to_use = 4;
760 plat->clk_ptp_rate = 200000000;767 plat->clk_ptp_rate = 204800000;
761 plat->speed_mode_2500 = intel_speed_mode_2500;768 plat->speed_mode_2500 = intel_speed_mode_2500;
762 769
763 plat->safety_feat_cfg->tsoee = 1;770 plat->safety_feat_cfg->tsoee = 1;
drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c+31−8
@@ -75,20 +75,24 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id · 74 unmodified lines
75 plat->mdio_bus_data = devm_kzalloc(&pdev->dev,75 plat->mdio_bus_data = devm_kzalloc(&pdev->dev,
76 sizeof(*plat->mdio_bus_data),76 sizeof(*plat->mdio_bus_data),
77 GFP_KERNEL);77 GFP_KERNEL);
78 if (!plat->mdio_bus_data)78 if (!plat->mdio_bus_data) {
79 return -ENOMEM;79 ret = -ENOMEM;
80 goto err_put_node;
81 }
80 plat->mdio_bus_data->needs_reset = true;82 plat->mdio_bus_data->needs_reset = true;
81 }83 }
82 84
83 plat->dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*plat->dma_cfg), GFP_KERNEL);85 plat->dma_cfg = devm_kzalloc(&pdev->dev, sizeof(*plat->dma_cfg), GFP_KERNEL);
84 if (!plat->dma_cfg)86 if (!plat->dma_cfg) {
85 return -ENOMEM;87 ret = -ENOMEM;
88 goto err_put_node;
89 }
86 90
87 /* Enable pci device */91 /* Enable pci device */
88 ret = pci_enable_device(pdev);92 ret = pci_enable_device(pdev);
89 if (ret) {93 if (ret) {
90 dev_err(&pdev->dev, "%s: ERROR: failed to enable device\n", __func__);94 dev_err(&pdev->dev, "%s: ERROR: failed to enable device\n", __func__);
91 return ret;95 goto err_put_node;
92 }96 }
93 97
94 /* Get the base address of device */98 /* Get the base address of device */
@@ -97,7 +101,7 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id · 2 unmodified lines
97 continue;101 continue;
98 ret = pcim_iomap_regions(pdev, BIT(0), pci_name(pdev));102 ret = pcim_iomap_regions(pdev, BIT(0), pci_name(pdev));
99 if (ret)103 if (ret)
100 return ret;104 goto err_disable_device;
101 break;105 break;
102 }106 }
103 107
@@ -108,7 +112,8 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id · 4 unmodified lines
108 phy_mode = device_get_phy_mode(&pdev->dev);112 phy_mode = device_get_phy_mode(&pdev->dev);
109 if (phy_mode < 0) {113 if (phy_mode < 0) {
110 dev_err(&pdev->dev, "phy_mode not found\n");114 dev_err(&pdev->dev, "phy_mode not found\n");
111 return phy_mode;115 ret = phy_mode;
116 goto err_disable_device;
112 }117 }
113 118
114 plat->phy_interface = phy_mode;119 plat->phy_interface = phy_mode;
@@ -125,6 +130,7 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id · 10 unmodified lines
125 if (res.irq < 0) {130 if (res.irq < 0) {
126 dev_err(&pdev->dev, "IRQ macirq not found\n");131 dev_err(&pdev->dev, "IRQ macirq not found\n");
127 ret = -ENODEV;132 ret = -ENODEV;
133 goto err_disable_msi;
128 }134 }
129 135
130 res.wol_irq = of_irq_get_byname(np, "eth_wake_irq");136 res.wol_irq = of_irq_get_byname(np, "eth_wake_irq");
@@ -137,15 +143,31 @@ static int loongson_dwmac_probe(struct pci_dev *pdev, const struct pci_device_id · 6 unmodified lines
137 if (res.lpi_irq < 0) {143 if (res.lpi_irq < 0) {
138 dev_err(&pdev->dev, "IRQ eth_lpi not found\n");144 dev_err(&pdev->dev, "IRQ eth_lpi not found\n");
139 ret = -ENODEV;145 ret = -ENODEV;
146 goto err_disable_msi;
140 }147 }
141 148
142 return stmmac_dvr_probe(&pdev->dev, plat, &res);149 ret = stmmac_dvr_probe(&pdev->dev, plat, &res);
150 if (ret)
151 goto err_disable_msi;
152
153 return ret;
154
155err_disable_msi:
156 pci_disable_msi(pdev);
157err_disable_device:
158 pci_disable_device(pdev);
159err_put_node:
160 of_node_put(plat->mdio_node);
161 return ret;
143}162}
144 163
145static void loongson_dwmac_remove(struct pci_dev *pdev)164static void loongson_dwmac_remove(struct pci_dev *pdev)
146{165{
166 struct net_device *ndev = dev_get_drvdata(&pdev->dev);
167 struct stmmac_priv *priv = netdev_priv(ndev);
147 int i;168 int i;
148 169
170 of_node_put(priv->plat->mdio_node);
149 stmmac_dvr_remove(&pdev->dev);171 stmmac_dvr_remove(&pdev->dev);
150 172
151 for (i = 0; i < PCI_STD_NUM_BARS; i++) {173 for (i = 0; i < PCI_STD_NUM_BARS; i++) {
@@ -155,6 +177,7 @@ static void loongson_dwmac_remove(struct pci_dev *pdev) · 3 unmodified lines
155 break;177 break;
156 }178 }
157 179
180 pci_disable_msi(pdev);
158 pci_disable_device(pdev);181 pci_disable_device(pdev);
159}182}
160 183
drivers/net/ethernet/stmicro/stmmac/dwmac-meson8b.c+3−5
@@ -272,11 +272,9 @@ static int meson8b_devm_clk_prepare_enable(struct meson8b_dwmac *dwmac, · 271 unmodified lines
272 if (ret)272 if (ret)
273 return ret;273 return ret;
274 274
275 devm_add_action_or_reset(dwmac->dev,275 return devm_add_action_or_reset(dwmac->dev,
276 (void(*)(void *))clk_disable_unprepare,276 (void(*)(void *))clk_disable_unprepare,
277 dwmac->rgmii_tx_clk);277 clk);
278
279 return 0;
280}278}
281 279
282static int meson8b_init_rgmii_delays(struct meson8b_dwmac *dwmac)280static int meson8b_init_rgmii_delays(struct meson8b_dwmac *dwmac)
drivers/net/ethernet/sunplus/spl2sw_driver.c+0−1
@@ -287,7 +287,6 @@ static u32 spl2sw_init_netdev(struct platform_device *pdev, u8 *mac_addr, · 286 unmodified lines
287 if (ret) {287 if (ret) {
288 dev_err(&pdev->dev, "Failed to register net device \"%s\"!\n",288 dev_err(&pdev->dev, "Failed to register net device \"%s\"!\n",
289 ndev->name);289 ndev->name);
290 free_netdev(ndev);
291 *r_ndev = NULL;290 *r_ndev = NULL;
292 return ret;291 return ret;
293 }292 }
drivers/net/ethernet/ti/am65-cpsw-nuss.c+1−1
@@ -2823,7 +2823,6 @@ static int am65_cpsw_nuss_remove(struct platform_device *pdev) · 2822 unmodified lines
2823 if (ret < 0)2823 if (ret < 0)
2824 return ret;2824 return ret;
2825 2825
2826 am65_cpsw_nuss_phylink_cleanup(common);
2827 am65_cpsw_unregister_devlink(common);2826 am65_cpsw_unregister_devlink(common);
2828 am65_cpsw_unregister_notifiers(common);2827 am65_cpsw_unregister_notifiers(common);
2829 2828
@@ -2831,6 +2830,7 @@ static int am65_cpsw_nuss_remove(struct platform_device *pdev) · 1 unmodified line
2831 * dma_deconfigure(dev) before devres_release_all(dev)2830 * dma_deconfigure(dev) before devres_release_all(dev)
2832 */2831 */
2833 am65_cpsw_nuss_cleanup_ndev(common);2832 am65_cpsw_nuss_cleanup_ndev(common);
2833 am65_cpsw_nuss_phylink_cleanup(common);
2834 2834
2835 of_platform_device_destroy(common->mdio_dev, NULL);2835 of_platform_device_destroy(common->mdio_dev, NULL);
2836 2836
drivers/net/ethernet/ti/cpsw.c+2−0
@@ -854,6 +854,8 @@ static int cpsw_ndo_open(struct net_device *ndev) · 853 unmodified lines
854 854
855err_cleanup:855err_cleanup:
856 if (!cpsw->usage_count) {856 if (!cpsw->usage_count) {
857 napi_disable(&cpsw->napi_rx);
858 napi_disable(&cpsw->napi_tx);
857 cpdma_ctlr_stop(cpsw->dma);859 cpdma_ctlr_stop(cpsw->dma);
858 cpsw_destroy_xdp_rxqs(cpsw);860 cpsw_destroy_xdp_rxqs(cpsw);
859 }861 }
drivers/net/ethernet/tundra/tsi108_eth.c+4−1
@@ -1290,12 +1290,15 @@ static int tsi108_open(struct net_device *dev) · 1289 unmodified lines
1290 1290
1291 data->rxring = dma_alloc_coherent(&data->pdev->dev, rxring_size,1291 data->rxring = dma_alloc_coherent(&data->pdev->dev, rxring_size,
1292 &data->rxdma, GFP_KERNEL);1292 &data->rxdma, GFP_KERNEL);
1293 if (!data->rxring)1293 if (!data->rxring) {
1294 free_irq(data->irq_num, dev);
1294 return -ENOMEM;1295 return -ENOMEM;
1296 }
1295 1297
1296 data->txring = dma_alloc_coherent(&data->pdev->dev, txring_size,1298 data->txring = dma_alloc_coherent(&data->pdev->dev, txring_size,
1297 &data->txdma, GFP_KERNEL);1299 &data->txdma, GFP_KERNEL);
1298 if (!data->txring) {1300 if (!data->txring) {
1301 free_irq(data->irq_num, dev);
1299 dma_free_coherent(&data->pdev->dev, rxring_size, data->rxring,1302 dma_free_coherent(&data->pdev->dev, rxring_size, data->rxring,
1300 data->rxdma);1303 data->rxdma);
1301 return -ENOMEM;1304 return -ENOMEM;
drivers/net/hamradio/bpqether.c+1−1
@@ -533,7 +533,7 @@ static int bpq_device_event(struct notifier_block *this, · 532 unmodified lines
533 if (!net_eq(dev_net(dev), &init_net))533 if (!net_eq(dev_net(dev), &init_net))
534 return NOTIFY_DONE;534 return NOTIFY_DONE;
535 535
536 if (!dev_is_ethdev(dev))536 if (!dev_is_ethdev(dev) && !bpq_get_ax25_dev(dev))
537 return NOTIFY_DONE;537 return NOTIFY_DONE;
538 538
539 switch (event) {539 switch (event) {
drivers/net/macsec.c+17−33
@@ -1413,7 +1413,8 @@ static struct macsec_rx_sc *del_rx_sc(struct macsec_secy *secy, sci_t sci) · 1412 unmodified lines
1413 return NULL;1413 return NULL;
1414}1414}
1415 1415
1416static struct macsec_rx_sc *create_rx_sc(struct net_device *dev, sci_t sci)1416static struct macsec_rx_sc *create_rx_sc(struct net_device *dev, sci_t sci,
1417 bool active)
1417{1418{
1418 struct macsec_rx_sc *rx_sc;1419 struct macsec_rx_sc *rx_sc;
1419 struct macsec_dev *macsec;1420 struct macsec_dev *macsec;
@@ -1437,7 +1438,7 @@ static struct macsec_rx_sc *create_rx_sc(struct net_device *dev, sci_t sci) · 17 unmodified lines
1437 }1438 }
1438 1439
1439 rx_sc->sci = sci;1440 rx_sc->sci = sci;
1440 rx_sc->active = true;1441 rx_sc->active = active;
1441 refcount_set(&rx_sc->refcnt, 1);1442 refcount_set(&rx_sc->refcnt, 1);
1442 1443
1443 secy = &macsec_priv(dev)->secy;1444 secy = &macsec_priv(dev)->secy;
@@ -1838,6 +1839,7 @@ static int macsec_add_rxsa(struct sk_buff *skb, struct genl_info *info) · 394 unmodified lines
1838 secy->key_len);1839 secy->key_len);
1839 1840
1840 err = macsec_offload(ops->mdo_add_rxsa, &ctx);1841 err = macsec_offload(ops->mdo_add_rxsa, &ctx);
1842 memzero_explicit(ctx.sa.key, secy->key_len);
1841 if (err)1843 if (err)
1842 goto cleanup;1844 goto cleanup;
1843 }1845 }
@@ -1876,7 +1878,7 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) · 32 unmodified lines
1876 struct macsec_rx_sc *rx_sc;1878 struct macsec_rx_sc *rx_sc;
1877 struct nlattr *tb_rxsc[MACSEC_RXSC_ATTR_MAX + 1];1879 struct nlattr *tb_rxsc[MACSEC_RXSC_ATTR_MAX + 1];
1878 struct macsec_secy *secy;1880 struct macsec_secy *secy;
1879 bool was_active;1881 bool active = true;
1880 int ret;1882 int ret;
1881 1883
1882 if (!attrs[MACSEC_ATTR_IFINDEX])1884 if (!attrs[MACSEC_ATTR_IFINDEX])
@@ -1898,16 +1900,15 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) · 15 unmodified lines
1898 secy = &macsec_priv(dev)->secy;1900 secy = &macsec_priv(dev)->secy;
1899 sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]);1901 sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]);
1900 1902
1901 rx_sc = create_rx_sc(dev, sci);1903 if (tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE])
1904 active = nla_get_u8(tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE]);
1905
1906 rx_sc = create_rx_sc(dev, sci, active);
1902 if (IS_ERR(rx_sc)) {1907 if (IS_ERR(rx_sc)) {
1903 rtnl_unlock();1908 rtnl_unlock();
1904 return PTR_ERR(rx_sc);1909 return PTR_ERR(rx_sc);
1905 }1910 }
1906 1911
1907 was_active = rx_sc->active;
1908 if (tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE])
1909 rx_sc->active = !!nla_get_u8(tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE]);
1910
1911 if (macsec_is_offloaded(netdev_priv(dev))) {1912 if (macsec_is_offloaded(netdev_priv(dev))) {
1912 const struct macsec_ops *ops;1913 const struct macsec_ops *ops;
1913 struct macsec_context ctx;1914 struct macsec_context ctx;
@@ -1931,7 +1932,8 @@ static int macsec_add_rxsc(struct sk_buff *skb, struct genl_info *info) · 17 unmodified lines
1931 return 0;1932 return 0;
1932 1933
1933cleanup:1934cleanup:
1934 rx_sc->active = was_active;1935 del_rx_sc(secy, sci);
1936 free_rx_sc(rx_sc);
1935 rtnl_unlock();1937 rtnl_unlock();
1936 return ret;1938 return ret;
1937}1939}
@@ -2080,6 +2082,7 @@ static int macsec_add_txsa(struct sk_buff *skb, struct genl_info *info) · 142 unmodified lines
2080 secy->key_len);2082 secy->key_len);
2081 2083
2082 err = macsec_offload(ops->mdo_add_txsa, &ctx);2084 err = macsec_offload(ops->mdo_add_txsa, &ctx);
2085 memzero_explicit(ctx.sa.key, secy->key_len);
2083 if (err)2086 if (err)
2084 goto cleanup;2087 goto cleanup;
2085 }2088 }
@@ -2570,7 +2573,7 @@ static bool macsec_is_configured(struct macsec_dev *macsec) · 484 unmodified lines
2570 struct macsec_tx_sc *tx_sc = &secy->tx_sc;2573 struct macsec_tx_sc *tx_sc = &secy->tx_sc;
2571 int i;2574 int i;
2572 2575
2573 if (secy->n_rx_sc > 0)2576 if (secy->rx_sc)
2574 return true;2577 return true;
2575 2578
2576 for (i = 0; i < MACSEC_NUM_AN; i++)2579 for (i = 0; i < MACSEC_NUM_AN; i++)
@@ -2654,11 +2657,6 @@ static int macsec_upd_offload(struct sk_buff *skb, struct genl_info *info) · 77 unmodified lines
2654 if (ret)2657 if (ret)
2655 goto rollback;2658 goto rollback;
2656 2659
2657 /* Force features update, since they are different for SW MACSec and
2658 * HW offloading cases.
2659 */
2660 netdev_update_features(dev);
2661
2662 rtnl_unlock();2660 rtnl_unlock();
2663 return 0;2661 return 0;
2664 2662
@@ -3432,16 +3430,9 @@ static netdev_tx_t macsec_start_xmit(struct sk_buff *skb, · 767 unmodified lines
3432 return ret;3430 return ret;
3433}3431}
3434 3432
3435#define SW_MACSEC_FEATURES \3433#define MACSEC_FEATURES \
3436 (NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST)3434 (NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST)
3437 3435
3438/* If h/w offloading is enabled, use real device features save for
3439 * VLAN_FEATURES - they require additional ops
3440 * HW_MACSEC - no reason to report it
3441 */
3442#define REAL_DEV_FEATURES(dev) \
3443 ((dev)->features & ~(NETIF_F_VLAN_FEATURES | NETIF_F_HW_MACSEC))
3444
3445static int macsec_dev_init(struct net_device *dev)3436static int macsec_dev_init(struct net_device *dev)
3446{3437{
3447 struct macsec_dev *macsec = macsec_priv(dev);3438 struct macsec_dev *macsec = macsec_priv(dev);
@@ -3458,12 +3449,8 @@ static int macsec_dev_init(struct net_device *dev) · 10 unmodified lines
3458 return err;3449 return err;
3459 }3450 }
3460 3451
3461 if (macsec_is_offloaded(macsec)) {3452 dev->features = real_dev->features & MACSEC_FEATURES;
3462 dev->features = REAL_DEV_FEATURES(real_dev);3453 dev->features |= NETIF_F_LLTX | NETIF_F_GSO_SOFTWARE;
3463 } else {
3464 dev->features = real_dev->features & SW_MACSEC_FEATURES;
3465 dev->features |= NETIF_F_LLTX | NETIF_F_GSO_SOFTWARE;
3466 }
3467 3454
3468 dev->needed_headroom = real_dev->needed_headroom +3455 dev->needed_headroom = real_dev->needed_headroom +
3469 MACSEC_NEEDED_HEADROOM;3456 MACSEC_NEEDED_HEADROOM;
@@ -3495,10 +3482,7 @@ static netdev_features_t macsec_fix_features(struct net_device *dev, · 25 unmodified lines
3495 struct macsec_dev *macsec = macsec_priv(dev);3482 struct macsec_dev *macsec = macsec_priv(dev);
3496 struct net_device *real_dev = macsec->real_dev;3483 struct net_device *real_dev = macsec->real_dev;
3497 3484
3498 if (macsec_is_offloaded(macsec))3485 features &= (real_dev->features & MACSEC_FEATURES) |
3499 return REAL_DEV_FEATURES(real_dev);
3500
3501 features &= (real_dev->features & SW_MACSEC_FEATURES) |
3502 NETIF_F_GSO_SOFTWARE | NETIF_F_SOFT_FEATURES;3486 NETIF_F_GSO_SOFTWARE | NETIF_F_SOFT_FEATURES;
3503 features |= NETIF_F_LLTX;3487 features |= NETIF_F_LLTX;
3504 3488
drivers/net/macvlan.c+3−1
@@ -1533,8 +1533,10 @@ destroy_macvlan_port: · 1532 unmodified lines
1533 /* the macvlan port may be freed by macvlan_uninit when fail to register.1533 /* the macvlan port may be freed by macvlan_uninit when fail to register.
1534 * so we destroy the macvlan port only when it's valid.1534 * so we destroy the macvlan port only when it's valid.
1535 */1535 */
1536 if (create && macvlan_port_get_rtnl(lowerdev))1536 if (create && macvlan_port_get_rtnl(lowerdev)) {
1537 macvlan_flush_sources(port, vlan);
1537 macvlan_port_destroy(port->dev);1538 macvlan_port_destroy(port->dev);
1539 }
1538 return err;1540 return err;
1539}1541}
1540EXPORT_SYMBOL_GPL(macvlan_common_newlink);1542EXPORT_SYMBOL_GPL(macvlan_common_newlink);
drivers/net/phy/mscc/mscc_macsec.c+1−0
@@ -632,6 +632,7 @@ static void vsc8584_macsec_free_flow(struct vsc8531_private *priv, · 631 unmodified lines
632 632
633 list_del(&flow->list);633 list_del(&flow->list);
634 clear_bit(flow->index, bitmap);634 clear_bit(flow->index, bitmap);
635 memzero_explicit(flow->key, sizeof(flow->key));
635 kfree(flow);636 kfree(flow);
636}637}
637 638
drivers/net/tun.c+13−5
@@ -1967,17 +1967,25 @@ drop: · 1966 unmodified lines
1967 skb_headlen(skb));1967 skb_headlen(skb));
1968 1968
1969 if (unlikely(headlen > skb_headlen(skb))) {1969 if (unlikely(headlen > skb_headlen(skb))) {
1970 WARN_ON_ONCE(1);
1971 err = -ENOMEM;
1970 dev_core_stats_rx_dropped_inc(tun->dev);1972 dev_core_stats_rx_dropped_inc(tun->dev);
1973napi_busy:
1971 napi_free_frags(&tfile->napi);1974 napi_free_frags(&tfile->napi);
1972 rcu_read_unlock();1975 rcu_read_unlock();
1973 mutex_unlock(&tfile->napi_mutex);1976 mutex_unlock(&tfile->napi_mutex);
1974 WARN_ON(1);1977 return err;
1975 return -ENOMEM;
1976 }1978 }
1977 1979
1978 local_bh_disable();1980 if (likely(napi_schedule_prep(&tfile->napi))) {
1979 napi_gro_frags(&tfile->napi);1981 local_bh_disable();
1980 local_bh_enable();1982 napi_gro_frags(&tfile->napi);
1983 napi_complete(&tfile->napi);
1984 local_bh_enable();
1985 } else {
1986 err = -EBUSY;
1987 goto napi_busy;
1988 }
1981 mutex_unlock(&tfile->napi_mutex);1989 mutex_unlock(&tfile->napi_mutex);
1982 } else if (tfile->napi_enabled) {1990 } else if (tfile->napi_enabled) {
1983 struct sk_buff_head *queue = &tfile->sk.sk_write_queue;1991 struct sk_buff_head *queue = &tfile->sk.sk_write_queue;
drivers/net/wan/lapbether.c+2−1
@@ -325,6 +325,7 @@ static int lapbeth_open(struct net_device *dev) · 324 unmodified lines
325 325
326 err = lapb_register(dev, &lapbeth_callbacks);326 err = lapb_register(dev, &lapbeth_callbacks);
327 if (err != LAPB_OK) {327 if (err != LAPB_OK) {
328 napi_disable(&lapbeth->napi);
328 pr_err("lapb_register error: %d\n", err);329 pr_err("lapb_register error: %d\n", err);
329 return -ENODEV;330 return -ENODEV;
330 }331 }
@@ -446,7 +447,7 @@ static int lapbeth_device_event(struct notifier_block *this, · 115 unmodified lines
446 if (dev_net(dev) != &init_net)447 if (dev_net(dev) != &init_net)
447 return NOTIFY_DONE;448 return NOTIFY_DONE;
448 449
449 if (!dev_is_ethdev(dev))450 if (!dev_is_ethdev(dev) && !lapbeth_get_x25_dev(dev))
450 return NOTIFY_DONE;451 return NOTIFY_DONE;
451 452
452 switch (event) {453 switch (event) {
drivers/net/wireless/ath/ath11k/qmi.h+1−1
@@ -27,7 +27,7 @@ · 26 unmodified lines
27#define ATH11K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01 5227#define ATH11K_QMI_WLANFW_MAX_NUM_MEM_SEG_V01 52
28#define ATH11K_QMI_CALDB_SIZE 0x48000028#define ATH11K_QMI_CALDB_SIZE 0x480000
29#define ATH11K_QMI_BDF_EXT_STR_LENGTH 0x2029#define ATH11K_QMI_BDF_EXT_STR_LENGTH 0x20
30#define ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT 330#define ATH11K_QMI_FW_MEM_REQ_SEGMENT_CNT 5
31 31
32#define QMI_WLFW_REQUEST_MEM_IND_V01 0x003532#define QMI_WLFW_REQUEST_MEM_IND_V01 0x0035
33#define QMI_WLFW_FW_MEM_READY_IND_V01 0x003733#define QMI_WLFW_FW_MEM_READY_IND_V01 0x0037
drivers/net/wireless/ath/ath11k/reg.c+1−5
@@ -287,11 +287,7 @@ int ath11k_regd_update(struct ath11k *ar) · 286 unmodified lines
287 goto err;287 goto err;
288 }288 }
289 289
290 rtnl_lock();290 ret = regulatory_set_wiphy_regd(ar->hw->wiphy, regd_copy);
291 wiphy_lock(ar->hw->wiphy);
292 ret = regulatory_set_wiphy_regd_sync(ar->hw->wiphy, regd_copy);
293 wiphy_unlock(ar->hw->wiphy);
294 rtnl_unlock();
295 291
296 kfree(regd_copy);292 kfree(regd_copy);
297 293
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c+4−0
@@ -228,6 +228,10 @@ static void brcmf_fweh_event_worker(struct work_struct *work) · 227 unmodified lines
228 brcmf_fweh_event_name(event->code), event->code,228 brcmf_fweh_event_name(event->code), event->code,
229 event->emsg.ifidx, event->emsg.bsscfgidx,229 event->emsg.ifidx, event->emsg.bsscfgidx,
230 event->emsg.addr);230 event->emsg.addr);
231 if (event->emsg.bsscfgidx >= BRCMF_MAX_IFS) {
232 bphy_err(drvr, "invalid bsscfg index: %u\n", event->emsg.bsscfgidx);
233 goto event_free;
234 }
231 235
232 /* convert event message */236 /* convert event message */
233 emsg_be = &event->emsg;237 emsg_be = &event->emsg;
drivers/net/wireless/cisco/airo.c+14−4
@@ -5232,7 +5232,7 @@ static int get_wep_tx_idx(struct airo_info *ai) · 5231 unmodified lines
5232 return -1;5232 return -1;
5233}5233}
5234 5234
5235static int set_wep_key(struct airo_info *ai, u16 index, const char *key,5235static int set_wep_key(struct airo_info *ai, u16 index, const u8 *key,
5236 u16 keylen, int perm, int lock)5236 u16 keylen, int perm, int lock)
5237{5237{
5238 static const unsigned char macaddr[ETH_ALEN] = { 0x01, 0, 0, 0, 0, 0 };5238 static const unsigned char macaddr[ETH_ALEN] = { 0x01, 0, 0, 0, 0, 0 };
@@ -5283,7 +5283,7 @@ static void proc_wepkey_on_close(struct inode *inode, struct file *file) · 44 unmodified lines
5283 struct net_device *dev = pde_data(inode);5283 struct net_device *dev = pde_data(inode);
5284 struct airo_info *ai = dev->ml_priv;5284 struct airo_info *ai = dev->ml_priv;
5285 int i, rc;5285 int i, rc;
5286 char key[16];5286 u8 key[16];
5287 u16 index = 0;5287 u16 index = 0;
5288 int j = 0;5288 int j = 0;
5289 5289
@@ -5311,12 +5311,22 @@ static void proc_wepkey_on_close(struct inode *inode, struct file *file) · 21 unmodified lines
5311 }5311 }
5312 5312
5313 for (i = 0; i < 16*3 && data->wbuffer[i+j]; i++) {5313 for (i = 0; i < 16*3 && data->wbuffer[i+j]; i++) {
5314 int val;
5315
5316 if (i % 3 == 2)
5317 continue;
5318
5319 val = hex_to_bin(data->wbuffer[i+j]);
5320 if (val < 0) {
5321 airo_print_err(ai->dev->name, "WebKey passed invalid key hex");
5322 return;
5323 }
5314 switch(i%3) {5324 switch(i%3) {
5315 case 0:5325 case 0:
5316 key[i/3] = hex_to_bin(data->wbuffer[i+j])<<4;5326 key[i/3] = (u8)val << 4;
5317 break;5327 break;
5318 case 1:5328 case 1:
5319 key[i/3] |= hex_to_bin(data->wbuffer[i+j]);5329 key[i/3] |= (u8)val;
5320 break;5330 break;
5321 }5331 }
5322 }5332 }
drivers/net/wireless/mac80211_hwsim.c+5−0
@@ -910,6 +910,7 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac, · 909 unmodified lines
910 struct hwsim_vif_priv *vp = (void *)vif->drv_priv;910 struct hwsim_vif_priv *vp = (void *)vif->drv_priv;
911 struct sk_buff *skb;911 struct sk_buff *skb;
912 struct ieee80211_hdr *hdr;912 struct ieee80211_hdr *hdr;
913 struct ieee80211_tx_info *cb;
913 914
914 if (!vp->assoc)915 if (!vp->assoc)
915 return;916 return;
@@ -931,6 +932,10 @@ static void hwsim_send_nullfunc(struct mac80211_hwsim_data *data, u8 *mac, · 15 unmodified lines
931 memcpy(hdr->addr2, mac, ETH_ALEN);932 memcpy(hdr->addr2, mac, ETH_ALEN);
932 memcpy(hdr->addr3, vp->bssid, ETH_ALEN);933 memcpy(hdr->addr3, vp->bssid, ETH_ALEN);
933 934
935 cb = IEEE80211_SKB_CB(skb);
936 cb->control.rates[0].count = 1;
937 cb->control.rates[1].idx = -1;
938
934 rcu_read_lock();939 rcu_read_lock();
935 mac80211_hwsim_tx_frame(data->hw, skb,940 mac80211_hwsim_tx_frame(data->hw, skb,
936 rcu_dereference(vif->bss_conf.chanctx_conf)->def.chan);941 rcu_dereference(vif->bss_conf.chanctx_conf)->def.chan);
drivers/net/wireless/ralink/rt2x00/rt2400pci.c+4−4
@@ -1023,9 +1023,9 @@ static int rt2400pci_set_state(struct rt2x00_dev *rt2x00dev, · 1022 unmodified lines
1023{1023{
1024 u32 reg, reg2;1024 u32 reg, reg2;
1025 unsigned int i;1025 unsigned int i;
1026 char put_to_sleep;1026 bool put_to_sleep;
1027 char bbp_state;1027 u8 bbp_state;
1028 char rf_state;1028 u8 rf_state;
1029 1029
1030 put_to_sleep = (state != STATE_AWAKE);1030 put_to_sleep = (state != STATE_AWAKE);
1031 1031
@@ -1561,7 +1561,7 @@ static int rt2400pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 529 unmodified lines
1561{1561{
1562 struct hw_mode_spec *spec = &rt2x00dev->spec;1562 struct hw_mode_spec *spec = &rt2x00dev->spec;
1563 struct channel_info *info;1563 struct channel_info *info;
1564 char *tx_power;1564 u8 *tx_power;
1565 unsigned int i;1565 unsigned int i;
1566 1566
1567 /*1567 /*
drivers/net/wireless/ralink/rt2x00/rt2400pci.h+1−1
@@ -939,7 +939,7 @@ · 938 unmodified lines
939#define DEFAULT_TXPOWER 39939#define DEFAULT_TXPOWER 39
940 940
941#define __CLAMP_TX(__txpower) \941#define __CLAMP_TX(__txpower) \
942 clamp_t(char, (__txpower), MIN_TXPOWER, MAX_TXPOWER)942 clamp_t(u8, (__txpower), MIN_TXPOWER, MAX_TXPOWER)
943 943
944#define TXPOWER_FROM_DEV(__txpower) \944#define TXPOWER_FROM_DEV(__txpower) \
945 ((__CLAMP_TX(__txpower) - MAX_TXPOWER) + MIN_TXPOWER)945 ((__CLAMP_TX(__txpower) - MAX_TXPOWER) + MIN_TXPOWER)
drivers/net/wireless/ralink/rt2x00/rt2500pci.c+4−4
@@ -1176,9 +1176,9 @@ static int rt2500pci_set_state(struct rt2x00_dev *rt2x00dev, · 1175 unmodified lines
1176{1176{
1177 u32 reg, reg2;1177 u32 reg, reg2;
1178 unsigned int i;1178 unsigned int i;
1179 char put_to_sleep;1179 bool put_to_sleep;
1180 char bbp_state;1180 u8 bbp_state;
1181 char rf_state;1181 u8 rf_state;
1182 1182
1183 put_to_sleep = (state != STATE_AWAKE);1183 put_to_sleep = (state != STATE_AWAKE);
1184 1184
@@ -1856,7 +1856,7 @@ static int rt2500pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 671 unmodified lines
1856{1856{
1857 struct hw_mode_spec *spec = &rt2x00dev->spec;1857 struct hw_mode_spec *spec = &rt2x00dev->spec;
1858 struct channel_info *info;1858 struct channel_info *info;
1859 char *tx_power;1859 u8 *tx_power;
1860 unsigned int i;1860 unsigned int i;
1861 1861
1862 /*1862 /*
drivers/net/wireless/ralink/rt2x00/rt2500pci.h+1−1
@@ -1219,6 +1219,6 @@ · 1218 unmodified lines
1219 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)1219 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)
1220 1220
1221#define TXPOWER_TO_DEV(__txpower) \1221#define TXPOWER_TO_DEV(__txpower) \
1222 clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER)1222 clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER)
1223 1223
1224#endif /* RT2500PCI_H */1224#endif /* RT2500PCI_H */
drivers/net/wireless/ralink/rt2x00/rt2500usb.c+4−4
@@ -984,9 +984,9 @@ static int rt2500usb_set_state(struct rt2x00_dev *rt2x00dev, · 983 unmodified lines
984 u16 reg;984 u16 reg;
985 u16 reg2;985 u16 reg2;
986 unsigned int i;986 unsigned int i;
987 char put_to_sleep;987 bool put_to_sleep;
988 char bbp_state;988 u8 bbp_state;
989 char rf_state;989 u8 rf_state;
990 990
991 put_to_sleep = (state != STATE_AWAKE);991 put_to_sleep = (state != STATE_AWAKE);
992 992
@@ -1663,7 +1663,7 @@ static int rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 670 unmodified lines
1663{1663{
1664 struct hw_mode_spec *spec = &rt2x00dev->spec;1664 struct hw_mode_spec *spec = &rt2x00dev->spec;
1665 struct channel_info *info;1665 struct channel_info *info;
1666 char *tx_power;1666 u8 *tx_power;
1667 unsigned int i;1667 unsigned int i;
1668 1668
1669 /*1669 /*
drivers/net/wireless/ralink/rt2x00/rt2500usb.h+1−1
@@ -839,6 +839,6 @@ · 838 unmodified lines
839 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)839 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)
840 840
841#define TXPOWER_TO_DEV(__txpower) \841#define TXPOWER_TO_DEV(__txpower) \
842 clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER)842 clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER)
843 843
844#endif /* RT2500USB_H */844#endif /* RT2500USB_H */
drivers/net/wireless/ralink/rt2x00/rt2800lib.c+30−30
@@ -3372,10 +3372,10 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, · 3371 unmodified lines
3372 if (rt2x00_has_cap_bt_coexist(rt2x00dev)) {3372 if (rt2x00_has_cap_bt_coexist(rt2x00dev)) {
3373 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) {3373 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) {
3374 /* r55/r59 value array of channel 1~14 */3374 /* r55/r59 value array of channel 1~14 */
3375 static const char r55_bt_rev[] = {0x83, 0x83,3375 static const u8 r55_bt_rev[] = {0x83, 0x83,
3376 0x83, 0x73, 0x73, 0x63, 0x53, 0x53,3376 0x83, 0x73, 0x73, 0x63, 0x53, 0x53,
3377 0x53, 0x43, 0x43, 0x43, 0x43, 0x43};3377 0x53, 0x43, 0x43, 0x43, 0x43, 0x43};
3378 static const char r59_bt_rev[] = {0x0e, 0x0e,3378 static const u8 r59_bt_rev[] = {0x0e, 0x0e,
3379 0x0e, 0x0e, 0x0e, 0x0b, 0x0a, 0x09,3379 0x0e, 0x0e, 0x0e, 0x0b, 0x0a, 0x09,
3380 0x07, 0x07, 0x07, 0x07, 0x07, 0x07};3380 0x07, 0x07, 0x07, 0x07, 0x07, 0x07};
3381 3381
@@ -3384,7 +3384,7 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, · 2 unmodified lines
3384 rt2800_rfcsr_write(rt2x00dev, 59,3384 rt2800_rfcsr_write(rt2x00dev, 59,
3385 r59_bt_rev[idx]);3385 r59_bt_rev[idx]);
3386 } else {3386 } else {
3387 static const char r59_bt[] = {0x8b, 0x8b, 0x8b,3387 static const u8 r59_bt[] = {0x8b, 0x8b, 0x8b,
3388 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x89,3388 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x89,
3389 0x88, 0x88, 0x86, 0x85, 0x84};3389 0x88, 0x88, 0x86, 0x85, 0x84};
3390 3390
@@ -3392,10 +3392,10 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, · 1 unmodified line
3392 }3392 }
3393 } else {3393 } else {
3394 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) {3394 if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) {
3395 static const char r55_nonbt_rev[] = {0x23, 0x23,3395 static const u8 r55_nonbt_rev[] = {0x23, 0x23,
3396 0x23, 0x23, 0x13, 0x13, 0x03, 0x03,3396 0x23, 0x23, 0x13, 0x13, 0x03, 0x03,
3397 0x03, 0x03, 0x03, 0x03, 0x03, 0x03};3397 0x03, 0x03, 0x03, 0x03, 0x03, 0x03};
3398 static const char r59_nonbt_rev[] = {0x07, 0x07,3398 static const u8 r59_nonbt_rev[] = {0x07, 0x07,
3399 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,3399 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
3400 0x07, 0x07, 0x06, 0x05, 0x04, 0x04};3400 0x07, 0x07, 0x06, 0x05, 0x04, 0x04};
3401 3401
@@ -3406,14 +3406,14 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, · 4 unmodified lines
3406 } else if (rt2x00_rt(rt2x00dev, RT5390) ||3406 } else if (rt2x00_rt(rt2x00dev, RT5390) ||
3407 rt2x00_rt(rt2x00dev, RT5392) ||3407 rt2x00_rt(rt2x00dev, RT5392) ||
3408 rt2x00_rt(rt2x00dev, RT6352)) {3408 rt2x00_rt(rt2x00dev, RT6352)) {
3409 static const char r59_non_bt[] = {0x8f, 0x8f,3409 static const u8 r59_non_bt[] = {0x8f, 0x8f,
3410 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8d,3410 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8d,
3411 0x8a, 0x88, 0x88, 0x87, 0x87, 0x86};3411 0x8a, 0x88, 0x88, 0x87, 0x87, 0x86};
3412 3412
3413 rt2800_rfcsr_write(rt2x00dev, 59,3413 rt2800_rfcsr_write(rt2x00dev, 59,
3414 r59_non_bt[idx]);3414 r59_non_bt[idx]);
3415 } else if (rt2x00_rt(rt2x00dev, RT5350)) {3415 } else if (rt2x00_rt(rt2x00dev, RT5350)) {
3416 static const char r59_non_bt[] = {0x0b, 0x0b,3416 static const u8 r59_non_bt[] = {0x0b, 0x0b,
3417 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a,3417 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a,
3418 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06};3418 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06};
3419 3419
@@ -4035,23 +4035,23 @@ static void rt2800_iq_calibrate(struct rt2x00_dev *rt2x00dev, int channel) · 615 unmodified lines
4035 rt2800_bbp_write(rt2x00dev, 159, cal != 0xff ? cal : 0);4035 rt2800_bbp_write(rt2x00dev, 159, cal != 0xff ? cal : 0);
4036}4036}
4037 4037
4038static char rt2800_txpower_to_dev(struct rt2x00_dev *rt2x00dev,4038static s8 rt2800_txpower_to_dev(struct rt2x00_dev *rt2x00dev,
4039 unsigned int channel,4039 unsigned int channel,
4040 char txpower)4040 s8 txpower)
4041{4041{
4042 if (rt2x00_rt(rt2x00dev, RT3593) ||4042 if (rt2x00_rt(rt2x00dev, RT3593) ||
4043 rt2x00_rt(rt2x00dev, RT3883))4043 rt2x00_rt(rt2x00dev, RT3883))
4044 txpower = rt2x00_get_field8(txpower, EEPROM_TXPOWER_ALC);4044 txpower = rt2x00_get_field8(txpower, EEPROM_TXPOWER_ALC);
4045 4045
4046 if (channel <= 14)4046 if (channel <= 14)
4047 return clamp_t(char, txpower, MIN_G_TXPOWER, MAX_G_TXPOWER);4047 return clamp_t(s8, txpower, MIN_G_TXPOWER, MAX_G_TXPOWER);
4048 4048
4049 if (rt2x00_rt(rt2x00dev, RT3593) ||4049 if (rt2x00_rt(rt2x00dev, RT3593) ||
4050 rt2x00_rt(rt2x00dev, RT3883))4050 rt2x00_rt(rt2x00dev, RT3883))
4051 return clamp_t(char, txpower, MIN_A_TXPOWER_3593,4051 return clamp_t(s8, txpower, MIN_A_TXPOWER_3593,
4052 MAX_A_TXPOWER_3593);4052 MAX_A_TXPOWER_3593);
4053 else4053 else
4054 return clamp_t(char, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER);4054 return clamp_t(s8, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER);
4055}4055}
4056 4056
4057static void rt3883_bbp_adjust(struct rt2x00_dev *rt2x00dev,4057static void rt3883_bbp_adjust(struct rt2x00_dev *rt2x00dev,
@@ -8530,7 +8530,7 @@ static void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev) · 4472 unmodified lines
8530 u8 bytevalue = 0;8530 u8 bytevalue = 0;
8531 int rcalcode;8531 int rcalcode;
8532 u8 r_cal_code = 0;8532 u8 r_cal_code = 0;
8533 char d1 = 0, d2 = 0;8533 s8 d1 = 0, d2 = 0;
8534 u8 rfvalue;8534 u8 rfvalue;
8535 u32 MAC_RF_BYPASS0, MAC_RF_CONTROL0, MAC_PWR_PIN_CFG;8535 u32 MAC_RF_BYPASS0, MAC_RF_CONTROL0, MAC_PWR_PIN_CFG;
8536 u32 maccfg;8536 u32 maccfg;
@@ -8591,7 +8591,7 @@ static void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev) · 54 unmodified lines
8591 if (bytevalue > 128)8591 if (bytevalue > 128)
8592 d1 = bytevalue - 256;8592 d1 = bytevalue - 256;
8593 else8593 else
8594 d1 = (char)bytevalue;8594 d1 = (s8)bytevalue;
8595 rt2800_bbp_write(rt2x00dev, 22, 0x0);8595 rt2800_bbp_write(rt2x00dev, 22, 0x0);
8596 rt2800_rfcsr_write_bank(rt2x00dev, 0, 35, 0x01);8596 rt2800_rfcsr_write_bank(rt2x00dev, 0, 35, 0x01);
8597 8597
@@ -8601,7 +8601,7 @@ static void rt2800_r_calibration(struct rt2x00_dev *rt2x00dev) · 3 unmodified lines
8601 if (bytevalue > 128)8601 if (bytevalue > 128)
8602 d2 = bytevalue - 256;8602 d2 = bytevalue - 256;
8603 else8603 else
8604 d2 = (char)bytevalue;8604 d2 = (s8)bytevalue;
8605 rt2800_bbp_write(rt2x00dev, 22, 0x0);8605 rt2800_bbp_write(rt2x00dev, 22, 0x0);
8606 8606
8607 rcalcode = rt2800_calcrcalibrationcode(rt2x00dev, d1, d2);8607 rcalcode = rt2800_calcrcalibrationcode(rt2x00dev, d1, d2);
@@ -8703,7 +8703,7 @@ static void rt2800_rxdcoc_calibration(struct rt2x00_dev *rt2x00dev) · 95 unmodified lines
8703static u32 rt2800_do_sqrt_accumulation(u32 si)8703static u32 rt2800_do_sqrt_accumulation(u32 si)
8704{8704{
8705 u32 root, root_pre, bit;8705 u32 root, root_pre, bit;
8706 char i;8706 s8 i;
8707 8707
8708 bit = 1 << 15;8708 bit = 1 << 15;
8709 root = 0;8709 root = 0;
@@ -9330,11 +9330,11 @@ static void rt2800_loft_search(struct rt2x00_dev *rt2x00dev, u8 ch_idx, · 620 unmodified lines
9330 u8 alc_idx, u8 dc_result[][RF_ALC_NUM][2])9330 u8 alc_idx, u8 dc_result[][RF_ALC_NUM][2])
9331{9331{
9332 u32 p0 = 0, p1 = 0, pf = 0;9332 u32 p0 = 0, p1 = 0, pf = 0;
9333 char idx0 = 0, idx1 = 0;9333 s8 idx0 = 0, idx1 = 0;
9334 u8 idxf[] = {0x00, 0x00};9334 u8 idxf[] = {0x00, 0x00};
9335 u8 ibit = 0x20;9335 u8 ibit = 0x20;
9336 u8 iorq;9336 u8 iorq;
9337 char bidx;9337 s8 bidx;
9338 9338
9339 rt2800_bbp_write(rt2x00dev, 158, 0xb0);9339 rt2800_bbp_write(rt2x00dev, 158, 0xb0);
9340 rt2800_bbp_write(rt2x00dev, 159, 0x80);9340 rt2800_bbp_write(rt2x00dev, 159, 0x80);
@@ -9384,17 +9384,17 @@ static void rt2800_loft_search(struct rt2x00_dev *rt2x00dev, u8 ch_idx, · 43 unmodified lines
9384static void rt2800_iq_search(struct rt2x00_dev *rt2x00dev, u8 ch_idx, u8 *ges, u8 *pes)9384static void rt2800_iq_search(struct rt2x00_dev *rt2x00dev, u8 ch_idx, u8 *ges, u8 *pes)
9385{9385{
9386 u32 p0 = 0, p1 = 0, pf = 0;9386 u32 p0 = 0, p1 = 0, pf = 0;
9387 char perr = 0, gerr = 0, iq_err = 0;9387 s8 perr = 0, gerr = 0, iq_err = 0;
9388 char pef = 0, gef = 0;9388 s8 pef = 0, gef = 0;
9389 char psta, pend;9389 s8 psta, pend;
9390 char gsta, gend;9390 s8 gsta, gend;
9391 9391
9392 u8 ibit = 0x20;9392 u8 ibit = 0x20;
9393 u8 first_search = 0x00, touch_neg_max = 0x00;9393 u8 first_search = 0x00, touch_neg_max = 0x00;
9394 char idx0 = 0, idx1 = 0;9394 s8 idx0 = 0, idx1 = 0;
9395 u8 gop;9395 u8 gop;
9396 u8 bbp = 0;9396 u8 bbp = 0;
9397 char bidx;9397 s8 bidx;
9398 9398
9399 for (bidx = 5; bidx >= 1; bidx--) {9399 for (bidx = 5; bidx >= 1; bidx--) {
9400 for (gop = 0; gop < 2; gop++) {9400 for (gop = 0; gop < 2; gop++) {
@@ -10043,11 +10043,11 @@ static int rt2800_rf_lp_config(struct rt2x00_dev *rt2x00dev, bool btxcal) · 642 unmodified lines
10043 return 0;10043 return 0;
10044}10044}
10045 10045
10046static char rt2800_lp_tx_filter_bw_cal(struct rt2x00_dev *rt2x00dev)10046static s8 rt2800_lp_tx_filter_bw_cal(struct rt2x00_dev *rt2x00dev)
10047{10047{
10048 unsigned int cnt;10048 unsigned int cnt;
10049 u8 bbp_val;10049 u8 bbp_val;
10050 char cal_val;10050 s8 cal_val;
10051 10051
10052 rt2800_bbp_dcoc_write(rt2x00dev, 0, 0x82);10052 rt2800_bbp_dcoc_write(rt2x00dev, 0, 0x82);
10053 10053
@@ -10079,7 +10079,7 @@ static void rt2800_bw_filter_calibration(struct rt2x00_dev *rt2x00dev, · 25 unmodified lines
10079 u8 rx_filter_target_20m = 0x27, rx_filter_target_40m = 0x31;10079 u8 rx_filter_target_20m = 0x27, rx_filter_target_40m = 0x31;
10080 int loop = 0, is_ht40, cnt;10080 int loop = 0, is_ht40, cnt;
10081 u8 bbp_val, rf_val;10081 u8 bbp_val, rf_val;
10082 char cal_r32_init, cal_r32_val, cal_diff;10082 s8 cal_r32_init, cal_r32_val, cal_diff;
10083 u8 saverfb5r00, saverfb5r01, saverfb5r03, saverfb5r04, saverfb5r05;10083 u8 saverfb5r00, saverfb5r01, saverfb5r03, saverfb5r04, saverfb5r05;
10084 u8 saverfb5r06, saverfb5r07;10084 u8 saverfb5r06, saverfb5r07;
10085 u8 saverfb5r08, saverfb5r17, saverfb5r18, saverfb5r19, saverfb5r20;10085 u8 saverfb5r08, saverfb5r17, saverfb5r18, saverfb5r19, saverfb5r20;
@@ -11550,9 +11550,9 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 1464 unmodified lines
11550{11550{
11551 struct hw_mode_spec *spec = &rt2x00dev->spec;11551 struct hw_mode_spec *spec = &rt2x00dev->spec;
11552 struct channel_info *info;11552 struct channel_info *info;
11553 char *default_power1;11553 s8 *default_power1;
11554 char *default_power2;11554 s8 *default_power2;
11555 char *default_power3;11555 s8 *default_power3;
11556 unsigned int i, tx_chains, rx_chains;11556 unsigned int i, tx_chains, rx_chains;
11557 u32 reg;11557 u32 reg;
11558 11558
drivers/net/wireless/ralink/rt2x00/rt2800lib.h+4−4
@@ -32,10 +32,10 @@ struct rf_reg_pair { · 31 unmodified lines
32struct rt2800_drv_data {32struct rt2800_drv_data {
33 u8 calibration_bw20;33 u8 calibration_bw20;
34 u8 calibration_bw40;34 u8 calibration_bw40;
35 char rx_calibration_bw20;35 s8 rx_calibration_bw20;
36 char rx_calibration_bw40;36 s8 rx_calibration_bw40;
37 char tx_calibration_bw20;37 s8 tx_calibration_bw20;
38 char tx_calibration_bw40;38 s8 tx_calibration_bw40;
39 u8 bbp25;39 u8 bbp25;
40 u8 bbp26;40 u8 bbp26;
41 u8 txmixer_gain_24g;41 u8 txmixer_gain_24g;
drivers/net/wireless/ralink/rt2x00/rt2x00usb.c+3−3
@@ -117,12 +117,12 @@ int rt2x00usb_vendor_request_buff(struct rt2x00_dev *rt2x00dev, · 116 unmodified lines
117 const u16 buffer_length)117 const u16 buffer_length)
118{118{
119 int status = 0;119 int status = 0;
120 unsigned char *tb;120 u8 *tb;
121 u16 off, len, bsize;121 u16 off, len, bsize;
122 122
123 mutex_lock(&rt2x00dev->csr_mutex);123 mutex_lock(&rt2x00dev->csr_mutex);
124 124
125 tb = (char *)buffer;125 tb = (u8 *)buffer;
126 off = offset;126 off = offset;
127 len = buffer_length;127 len = buffer_length;
128 while (len && !status) {128 while (len && !status) {
@@ -215,7 +215,7 @@ void rt2x00usb_register_read_async(struct rt2x00_dev *rt2x00dev, · 86 unmodified lines
215 rd->cr.wLength = cpu_to_le16(sizeof(u32));215 rd->cr.wLength = cpu_to_le16(sizeof(u32));
216 216
217 usb_fill_control_urb(urb, usb_dev, usb_rcvctrlpipe(usb_dev, 0),217 usb_fill_control_urb(urb, usb_dev, usb_rcvctrlpipe(usb_dev, 0),
218 (unsigned char *)(&rd->cr), &rd->reg, sizeof(rd->reg),218 (u8 *)(&rd->cr), &rd->reg, sizeof(rd->reg),
219 rt2x00usb_register_read_async_cb, rd);219 rt2x00usb_register_read_async_cb, rd);
220 usb_anchor_urb(urb, rt2x00dev->anchor);220 usb_anchor_urb(urb, rt2x00dev->anchor);
221 if (usb_submit_urb(urb, GFP_ATOMIC) < 0) {221 if (usb_submit_urb(urb, GFP_ATOMIC) < 0) {
drivers/net/wireless/ralink/rt2x00/rt61pci.c+2−2
@@ -1709,7 +1709,7 @@ static int rt61pci_set_state(struct rt2x00_dev *rt2x00dev, enum dev_state state) · 1708 unmodified lines
1709{1709{
1710 u32 reg, reg2;1710 u32 reg, reg2;
1711 unsigned int i;1711 unsigned int i;
1712 char put_to_sleep;1712 bool put_to_sleep;
1713 1713
1714 put_to_sleep = (state != STATE_AWAKE);1714 put_to_sleep = (state != STATE_AWAKE);
1715 1715
@@ -2656,7 +2656,7 @@ static int rt61pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 940 unmodified lines
2656{2656{
2657 struct hw_mode_spec *spec = &rt2x00dev->spec;2657 struct hw_mode_spec *spec = &rt2x00dev->spec;
2658 struct channel_info *info;2658 struct channel_info *info;
2659 char *tx_power;2659 u8 *tx_power;
2660 unsigned int i;2660 unsigned int i;
2661 2661
2662 /*2662 /*
drivers/net/wireless/ralink/rt2x00/rt61pci.h+1−1
@@ -1484,6 +1484,6 @@ struct hw_pairwise_ta_entry { · 1483 unmodified lines
1484 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)1484 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)
1485 1485
1486#define TXPOWER_TO_DEV(__txpower) \1486#define TXPOWER_TO_DEV(__txpower) \
1487 clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER)1487 clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER)
1488 1488
1489#endif /* RT61PCI_H */1489#endif /* RT61PCI_H */
drivers/net/wireless/ralink/rt2x00/rt73usb.c+2−2
@@ -1378,7 +1378,7 @@ static int rt73usb_set_state(struct rt2x00_dev *rt2x00dev, enum dev_state state) · 1377 unmodified lines
1378{1378{
1379 u32 reg, reg2;1379 u32 reg, reg2;
1380 unsigned int i;1380 unsigned int i;
1381 char put_to_sleep;1381 bool put_to_sleep;
1382 1382
1383 put_to_sleep = (state != STATE_AWAKE);1383 put_to_sleep = (state != STATE_AWAKE);
1384 1384
@@ -2090,7 +2090,7 @@ static int rt73usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev) · 705 unmodified lines
2090{2090{
2091 struct hw_mode_spec *spec = &rt2x00dev->spec;2091 struct hw_mode_spec *spec = &rt2x00dev->spec;
2092 struct channel_info *info;2092 struct channel_info *info;
2093 char *tx_power;2093 u8 *tx_power;
2094 unsigned int i;2094 unsigned int i;
2095 2095
2096 /*2096 /*
drivers/net/wireless/ralink/rt2x00/rt73usb.h+1−1
@@ -1063,6 +1063,6 @@ struct hw_pairwise_ta_entry { · 1062 unmodified lines
1063 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)1063 (((u8)(__txpower)) > MAX_TXPOWER) ? DEFAULT_TXPOWER : (__txpower)
1064 1064
1065#define TXPOWER_TO_DEV(__txpower) \1065#define TXPOWER_TO_DEV(__txpower) \
1066 clamp_t(char, __txpower, MIN_TXPOWER, MAX_TXPOWER)1066 clamp_t(u8, __txpower, MIN_TXPOWER, MAX_TXPOWER)
1067 1067
1068#endif /* RT73USB_H */1068#endif /* RT73USB_H */
drivers/net/wwan/Kconfig+1−1
@@ -94,7 +94,7 @@ config RPMSG_WWAN_CTRL · 93 unmodified lines
94 94
95config IOSM95config IOSM
96 tristate "IOSM Driver for Intel M.2 WWAN Device"96 tristate "IOSM Driver for Intel M.2 WWAN Device"
97 depends on INTEL_IOMMU97 depends on PCI
98 select NET_DEVLINK98 select NET_DEVLINK
99 select RELAY if WWAN_DEBUGFS99 select RELAY if WWAN_DEBUGFS
100 help100 help
drivers/net/wwan/iosm/iosm_ipc_coredump.c+1−0
@@ -2,6 +2,7 @@ · 1 unmodified line
2/*2/*
3 * Copyright (C) 2020-2021 Intel Corporation.3 * Copyright (C) 2020-2021 Intel Corporation.
4 */4 */
5#include <linux/vmalloc.h>
5 6
6#include "iosm_ipc_coredump.h"7#include "iosm_ipc_coredump.h"
7 8
drivers/net/wwan/iosm/iosm_ipc_devlink.c+1−0
@@ -2,6 +2,7 @@ · 1 unmodified line
2/*2/*
3 * Copyright (C) 2020-2021 Intel Corporation.3 * Copyright (C) 2020-2021 Intel Corporation.
4 */4 */
5#include <linux/vmalloc.h>
5 6
6#include "iosm_ipc_chnl_cfg.h"7#include "iosm_ipc_chnl_cfg.h"
7#include "iosm_ipc_coredump.h"8#include "iosm_ipc_coredump.h"
drivers/net/wwan/iosm/iosm_ipc_imem_ops.c+8−0
@@ -91,6 +91,14 @@ void ipc_imem_wwan_channel_init(struct iosm_imem *ipc_imem, · 90 unmodified lines
91 }91 }
92 92
93 ipc_chnl_cfg_get(&chnl_cfg, ipc_imem->nr_of_channels);93 ipc_chnl_cfg_get(&chnl_cfg, ipc_imem->nr_of_channels);
94
95 if (ipc_imem->mmio->mux_protocol == MUX_AGGREGATION &&
96 ipc_imem->nr_of_channels == IPC_MEM_IP_CHL_ID_0) {
97 chnl_cfg.ul_nr_of_entries = IPC_MEM_MAX_TDS_MUX_AGGR_UL;
98 chnl_cfg.dl_nr_of_entries = IPC_MEM_MAX_TDS_MUX_AGGR_DL;
99 chnl_cfg.dl_buf_size = IPC_MEM_MAX_ADB_BUF_SIZE;
100 }
101
94 ipc_imem_channel_init(ipc_imem, IPC_CTYPE_WWAN, chnl_cfg,102 ipc_imem_channel_init(ipc_imem, IPC_CTYPE_WWAN, chnl_cfg,
95 IRQ_MOD_OFF);103 IRQ_MOD_OFF);
96 104
drivers/net/wwan/iosm/iosm_ipc_mux.h+1−0
@@ -10,6 +10,7 @@ · 9 unmodified lines
10 10
11#define IPC_MEM_MAX_UL_DG_ENTRIES 10011#define IPC_MEM_MAX_UL_DG_ENTRIES 100
12#define IPC_MEM_MAX_TDS_MUX_AGGR_UL 6012#define IPC_MEM_MAX_TDS_MUX_AGGR_UL 60
13#define IPC_MEM_MAX_TDS_MUX_AGGR_DL 60
13 14
14#define IPC_MEM_MAX_ADB_BUF_SIZE (16 * 1024)15#define IPC_MEM_MAX_ADB_BUF_SIZE (16 * 1024)
15#define IPC_MEM_MAX_UL_ADB_BUF_SIZE IPC_MEM_MAX_ADB_BUF_SIZE16#define IPC_MEM_MAX_UL_ADB_BUF_SIZE IPC_MEM_MAX_ADB_BUF_SIZE
drivers/net/wwan/iosm/iosm_ipc_pcie.c+15−3
@@ -232,6 +232,7 @@ static void ipc_pcie_config_init(struct iosm_pcie *ipc_pcie) · 231 unmodified lines
232 */232 */
233static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev)233static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev)
234{234{
235 enum ipc_pcie_sleep_state sleep_state = IPC_PCIE_D0L12;
235 union acpi_object *object;236 union acpi_object *object;
236 acpi_handle handle_acpi;237 acpi_handle handle_acpi;
237 238
@@ -242,18 +243,23 @@ static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev) · 4 unmodified lines
242 }243 }
243 244
244 object = acpi_evaluate_dsm(handle_acpi, &wwan_acpi_guid, 0, 3, NULL);245 object = acpi_evaluate_dsm(handle_acpi, &wwan_acpi_guid, 0, 3, NULL);
246 if (!object)
247 goto default_ret;
248
249 if (object->integer.value == 3)
250 sleep_state = IPC_PCIE_D3L2;
245 251
246 if (object && object->integer.value == 3)252 kfree(object);
247 return IPC_PCIE_D3L2;
248 253
249default_ret:254default_ret:
250 return IPC_PCIE_D0L12;255 return sleep_state;
251}256}
252 257
253static int ipc_pcie_probe(struct pci_dev *pci,258static int ipc_pcie_probe(struct pci_dev *pci,
254 const struct pci_device_id *pci_id)259 const struct pci_device_id *pci_id)
255{260{
256 struct iosm_pcie *ipc_pcie = kzalloc(sizeof(*ipc_pcie), GFP_KERNEL);261 struct iosm_pcie *ipc_pcie = kzalloc(sizeof(*ipc_pcie), GFP_KERNEL);
262 int ret;
257 263
258 pr_debug("Probing device 0x%X from the vendor 0x%X", pci_id->device,264 pr_debug("Probing device 0x%X from the vendor 0x%X", pci_id->device,
259 pci_id->vendor);265 pci_id->vendor);
@@ -286,6 +292,12 @@ static int ipc_pcie_probe(struct pci_dev *pci, · 26 unmodified lines
286 goto pci_enable_fail;292 goto pci_enable_fail;
287 }293 }
288 294
295 ret = dma_set_mask(ipc_pcie->dev, DMA_BIT_MASK(64));
296 if (ret) {
297 dev_err(ipc_pcie->dev, "Could not set PCI DMA mask: %d", ret);
298 return ret;
299 }
300
289 ipc_pcie_config_aspm(ipc_pcie);301 ipc_pcie_config_aspm(ipc_pcie);
290 dev_dbg(ipc_pcie->dev, "PCIe device enabled.");302 dev_dbg(ipc_pcie->dev, "PCIe device enabled.");
291 303
drivers/net/wwan/iosm/iosm_ipc_wwan.c+7−36
@@ -40,13 +40,11 @@ struct iosm_netdev_priv { · 39 unmodified lines
40 * @ipc_imem: Pointer to imem data-struct40 * @ipc_imem: Pointer to imem data-struct
41 * @sub_netlist: List of active netdevs41 * @sub_netlist: List of active netdevs
42 * @dev: Pointer device structure42 * @dev: Pointer device structure
43 * @if_mutex: Mutex used for add and remove interface id
44 */43 */
45struct iosm_wwan {44struct iosm_wwan {
46 struct iosm_imem *ipc_imem;45 struct iosm_imem *ipc_imem;
47 struct iosm_netdev_priv __rcu *sub_netlist[IP_MUX_SESSION_END + 1];46 struct iosm_netdev_priv __rcu *sub_netlist[IP_MUX_SESSION_END + 1];
48 struct device *dev;47 struct device *dev;
49 struct mutex if_mutex; /* Mutex used for add and remove interface id */
50};48};
51 49
52/* Bring-up the wwan net link */50/* Bring-up the wwan net link */
@@ -55,14 +53,11 @@ static int ipc_wwan_link_open(struct net_device *netdev) · 2 unmodified lines
55 struct iosm_netdev_priv *priv = wwan_netdev_drvpriv(netdev);53 struct iosm_netdev_priv *priv = wwan_netdev_drvpriv(netdev);
56 struct iosm_wwan *ipc_wwan = priv->ipc_wwan;54 struct iosm_wwan *ipc_wwan = priv->ipc_wwan;
57 int if_id = priv->if_id;55 int if_id = priv->if_id;
58 int ret;
59 56
60 if (if_id < IP_MUX_SESSION_START ||57 if (if_id < IP_MUX_SESSION_START ||
61 if_id >= ARRAY_SIZE(ipc_wwan->sub_netlist))58 if_id >= ARRAY_SIZE(ipc_wwan->sub_netlist))
62 return -EINVAL;59 return -EINVAL;
63 60
64 mutex_lock(&ipc_wwan->if_mutex);
65
66 /* get channel id */61 /* get channel id */
67 priv->ch_id = ipc_imem_sys_wwan_open(ipc_wwan->ipc_imem, if_id);62 priv->ch_id = ipc_imem_sys_wwan_open(ipc_wwan->ipc_imem, if_id);
68 63
@@ -70,8 +65,7 @@ static int ipc_wwan_link_open(struct net_device *netdev) · 1 unmodified line
70 dev_err(ipc_wwan->dev,65 dev_err(ipc_wwan->dev,
71 "cannot connect wwan0 & id %d to the IPC mem layer",66 "cannot connect wwan0 & id %d to the IPC mem layer",
72 if_id);67 if_id);
73 ret = -ENODEV;68 return -ENODEV;
74 goto out;
75 }69 }
76 70
77 /* enable tx path, DL data may follow */71 /* enable tx path, DL data may follow */
@@ -80,10 +74,7 @@ static int ipc_wwan_link_open(struct net_device *netdev) · 2 unmodified lines
80 dev_dbg(ipc_wwan->dev, "Channel id %d allocated to if_id %d",74 dev_dbg(ipc_wwan->dev, "Channel id %d allocated to if_id %d",
81 priv->ch_id, priv->if_id);75 priv->ch_id, priv->if_id);
82 76
83 ret = 0;77 return 0;
84out:
85 mutex_unlock(&ipc_wwan->if_mutex);
86 return ret;
87}78}
88 79
89/* Bring-down the wwan net link */80/* Bring-down the wwan net link */
@@ -93,11 +84,9 @@ static int ipc_wwan_link_stop(struct net_device *netdev) · 3 unmodified lines
93 84
94 netif_stop_queue(netdev);85 netif_stop_queue(netdev);
95 86
96 mutex_lock(&priv->ipc_wwan->if_mutex);
97 ipc_imem_sys_wwan_close(priv->ipc_wwan->ipc_imem, priv->if_id,87 ipc_imem_sys_wwan_close(priv->ipc_wwan->ipc_imem, priv->if_id,
98 priv->ch_id);88 priv->ch_id);
99 priv->ch_id = -1;89 priv->ch_id = -1;
100 mutex_unlock(&priv->ipc_wwan->if_mutex);
101 90
102 return 0;91 return 0;
103}92}
@@ -168,6 +157,7 @@ static void ipc_wwan_setup(struct net_device *iosm_dev) · 64 unmodified lines
168 iosm_dev->max_mtu = ETH_MAX_MTU;157 iosm_dev->max_mtu = ETH_MAX_MTU;
169 158
170 iosm_dev->flags = IFF_POINTOPOINT | IFF_NOARP;159 iosm_dev->flags = IFF_POINTOPOINT | IFF_NOARP;
160 iosm_dev->needs_free_netdev = true;
171 161
172 iosm_dev->netdev_ops = &ipc_inm_ops;162 iosm_dev->netdev_ops = &ipc_inm_ops;
173}163}
@@ -189,26 +179,17 @@ static int ipc_wwan_newlink(void *ctxt, struct net_device *dev, · 15 unmodified lines
189 priv->netdev = dev;179 priv->netdev = dev;
190 priv->ipc_wwan = ipc_wwan;180 priv->ipc_wwan = ipc_wwan;
191 181
192 mutex_lock(&ipc_wwan->if_mutex);182 if (rcu_access_pointer(ipc_wwan->sub_netlist[if_id]))
193 if (rcu_access_pointer(ipc_wwan->sub_netlist[if_id])) {183 return -EBUSY;
194 err = -EBUSY;
195 goto out_unlock;
196 }
197 184
198 err = register_netdevice(dev);185 err = register_netdevice(dev);
199 if (err)186 if (err)
200 goto out_unlock;187 return err;
201 188
202 rcu_assign_pointer(ipc_wwan->sub_netlist[if_id], priv);189 rcu_assign_pointer(ipc_wwan->sub_netlist[if_id], priv);
203 mutex_unlock(&ipc_wwan->if_mutex);
204
205 netif_device_attach(dev);190 netif_device_attach(dev);
206 191
207 return 0;192 return 0;
208
209out_unlock:
210 mutex_unlock(&ipc_wwan->if_mutex);
211 return err;
212}193}
213 194
214static void ipc_wwan_dellink(void *ctxt, struct net_device *dev,195static void ipc_wwan_dellink(void *ctxt, struct net_device *dev,
@@ -222,17 +203,12 @@ static void ipc_wwan_dellink(void *ctxt, struct net_device *dev, · 7 unmodified lines
222 if_id >= ARRAY_SIZE(ipc_wwan->sub_netlist)))203 if_id >= ARRAY_SIZE(ipc_wwan->sub_netlist)))
223 return;204 return;
224 205
225 mutex_lock(&ipc_wwan->if_mutex);
226
227 if (WARN_ON(rcu_access_pointer(ipc_wwan->sub_netlist[if_id]) != priv))206 if (WARN_ON(rcu_access_pointer(ipc_wwan->sub_netlist[if_id]) != priv))
228 goto unlock;207 return;
229 208
230 RCU_INIT_POINTER(ipc_wwan->sub_netlist[if_id], NULL);209 RCU_INIT_POINTER(ipc_wwan->sub_netlist[if_id], NULL);
231 /* unregistering includes synchronize_net() */210 /* unregistering includes synchronize_net() */
232 unregister_netdevice_queue(dev, head);211 unregister_netdevice_queue(dev, head);
233
234unlock:
235 mutex_unlock(&ipc_wwan->if_mutex);
236}212}
237 213
238static const struct wwan_ops iosm_wwan_ops = {214static const struct wwan_ops iosm_wwan_ops = {
@@ -323,12 +299,9 @@ struct iosm_wwan *ipc_wwan_init(struct iosm_imem *ipc_imem, struct device *dev) · 84 unmodified lines
323 ipc_wwan->dev = dev;299 ipc_wwan->dev = dev;
324 ipc_wwan->ipc_imem = ipc_imem;300 ipc_wwan->ipc_imem = ipc_imem;
325 301
326 mutex_init(&ipc_wwan->if_mutex);
327
328 /* WWAN core will create a netdev for the default IP MUX channel */302 /* WWAN core will create a netdev for the default IP MUX channel */
329 if (wwan_register_ops(ipc_wwan->dev, &iosm_wwan_ops, ipc_wwan,303 if (wwan_register_ops(ipc_wwan->dev, &iosm_wwan_ops, ipc_wwan,
330 IP_MUX_SESSION_DEFAULT)) {304 IP_MUX_SESSION_DEFAULT)) {
331 mutex_destroy(&ipc_wwan->if_mutex);
332 kfree(ipc_wwan);305 kfree(ipc_wwan);
333 return NULL;306 return NULL;
334 }307 }
@@ -341,7 +314,5 @@ void ipc_wwan_deinit(struct iosm_wwan *ipc_wwan) · 6 unmodified lines
341 /* This call will remove all child netdev(s) */314 /* This call will remove all child netdev(s) */
342 wwan_unregister_ops(ipc_wwan->dev);315 wwan_unregister_ops(ipc_wwan->dev);
343 316
344 mutex_destroy(&ipc_wwan->if_mutex);
345
346 kfree(ipc_wwan);317 kfree(ipc_wwan);
347}318}
drivers/net/wwan/mhi_wwan_mbim.c+1−0
@@ -582,6 +582,7 @@ static void mhi_mbim_setup(struct net_device *ndev) · 581 unmodified lines
582 ndev->min_mtu = ETH_MIN_MTU;582 ndev->min_mtu = ETH_MIN_MTU;
583 ndev->max_mtu = MHI_MAX_BUF_SZ - ndev->needed_headroom;583 ndev->max_mtu = MHI_MAX_BUF_SZ - ndev->needed_headroom;
584 ndev->tx_queue_len = 1000;584 ndev->tx_queue_len = 1000;
585 ndev->needs_free_netdev = true;
585}586}
586 587
587static const struct wwan_ops mhi_mbim_wwan_ops = {588static const struct wwan_ops mhi_mbim_wwan_ops = {
drivers/nvme/host/core.c+1−2
@@ -675,6 +675,7 @@ void nvme_init_request(struct request *req, struct nvme_command *cmd) · 674 unmodified lines
675 if (req->mq_hctx->type == HCTX_TYPE_POLL)675 if (req->mq_hctx->type == HCTX_TYPE_POLL)
676 req->cmd_flags |= REQ_POLLED;676 req->cmd_flags |= REQ_POLLED;
677 nvme_clear_nvme_request(req);677 nvme_clear_nvme_request(req);
678 req->rq_flags |= RQF_QUIET;
678 memcpy(nvme_req(req)->cmd, cmd, sizeof(*cmd));679 memcpy(nvme_req(req)->cmd, cmd, sizeof(*cmd));
679}680}
680EXPORT_SYMBOL_GPL(nvme_init_request);681EXPORT_SYMBOL_GPL(nvme_init_request);
@@ -1037,7 +1038,6 @@ int __nvme_submit_sync_cmd(struct request_queue *q, struct nvme_command *cmd, · 356 unmodified lines
1037 goto out;1038 goto out;
1038 }1039 }
1039 1040
1040 req->rq_flags |= RQF_QUIET;
1041 ret = nvme_execute_rq(req, at_head);1041 ret = nvme_execute_rq(req, at_head);
1042 if (result && ret >= 0)1042 if (result && ret >= 0)
1043 *result = nvme_req(req)->result;1043 *result = nvme_req(req)->result;
@@ -1227,7 +1227,6 @@ static void nvme_keep_alive_work(struct work_struct *work) · 183 unmodified lines
1227 rq->timeout = ctrl->kato * HZ;1227 rq->timeout = ctrl->kato * HZ;
1228 rq->end_io = nvme_keep_alive_end_io;1228 rq->end_io = nvme_keep_alive_end_io;
1229 rq->end_io_data = ctrl;1229 rq->end_io_data = ctrl;
1230 rq->rq_flags |= RQF_QUIET;
1231 blk_execute_rq_nowait(rq, false);1230 blk_execute_rq_nowait(rq, false);
1232}1231}
1233 1232
drivers/nvme/host/pci.c+0−2
@@ -1436,7 +1436,6 @@ static enum blk_eh_timer_return nvme_timeout(struct request *req) · 1435 unmodified lines
1436 1436
1437 abort_req->end_io = abort_endio;1437 abort_req->end_io = abort_endio;
1438 abort_req->end_io_data = NULL;1438 abort_req->end_io_data = NULL;
1439 abort_req->rq_flags |= RQF_QUIET;
1440 blk_execute_rq_nowait(abort_req, false);1439 blk_execute_rq_nowait(abort_req, false);
1441 1440
1442 /*1441 /*
@@ -2490,7 +2489,6 @@ static int nvme_delete_queue(struct nvme_queue *nvmeq, u8 opcode) · 1047 unmodified lines
2490 req->end_io_data = nvmeq;2489 req->end_io_data = nvmeq;
2491 2490
2492 init_completion(&nvmeq->delete_done);2491 init_completion(&nvmeq->delete_done);
2493 req->rq_flags |= RQF_QUIET;
2494 blk_execute_rq_nowait(req, false);2492 blk_execute_rq_nowait(req, false);
2495 return 0;2493 return 0;
2496}2494}
drivers/nvme/target/configfs.c+6−2
@@ -1215,6 +1215,7 @@ static ssize_t nvmet_subsys_attr_model_store_locked(struct nvmet_subsys *subsys, · 1214 unmodified lines
1215 const char *page, size_t count)1215 const char *page, size_t count)
1216{1216{
1217 int pos = 0, len;1217 int pos = 0, len;
1218 char *val;
1218 1219
1219 if (subsys->subsys_discovered) {1220 if (subsys->subsys_discovered) {
1220 pr_err("Can't set model number. %s is already assigned\n",1221 pr_err("Can't set model number. %s is already assigned\n",
@@ -1237,9 +1238,11 @@ static ssize_t nvmet_subsys_attr_model_store_locked(struct nvmet_subsys *subsys, · 16 unmodified lines
1237 return -EINVAL;1238 return -EINVAL;
1238 }1239 }
1239 1240
1240 subsys->model_number = kmemdup_nul(page, len, GFP_KERNEL);1241 val = kmemdup_nul(page, len, GFP_KERNEL);
1241 if (!subsys->model_number)1242 if (!val)
1242 return -ENOMEM;1243 return -ENOMEM;
1244 kfree(subsys->model_number);
1245 subsys->model_number = val;
1243 return count;1246 return count;
1244}1247}
1245 1248
@@ -1836,6 +1839,7 @@ static void nvmet_host_release(struct config_item *item) · 590 unmodified lines
1836 1839
1837#ifdef CONFIG_NVME_TARGET_AUTH1840#ifdef CONFIG_NVME_TARGET_AUTH
1838 kfree(host->dhchap_secret);1841 kfree(host->dhchap_secret);
1842 kfree(host->dhchap_ctrl_secret);
1839#endif1843#endif
1840 kfree(host);1844 kfree(host);
1841}1845}
drivers/pci/controller/pci-hyperv.c+16−6
@@ -1614,7 +1614,7 @@ out: · 1613 unmodified lines
1614 1614
1615static u32 hv_compose_msi_req_v1(1615static u32 hv_compose_msi_req_v1(
1616 struct pci_create_interrupt *int_pkt, const struct cpumask *affinity,1616 struct pci_create_interrupt *int_pkt, const struct cpumask *affinity,
1617 u32 slot, u8 vector, u8 vector_count)1617 u32 slot, u8 vector, u16 vector_count)
1618{1618{
1619 int_pkt->message_type.type = PCI_CREATE_INTERRUPT_MESSAGE;1619 int_pkt->message_type.type = PCI_CREATE_INTERRUPT_MESSAGE;
1620 int_pkt->wslot.slot = slot;1620 int_pkt->wslot.slot = slot;
@@ -1642,7 +1642,7 @@ static int hv_compose_msi_req_get_cpu(const struct cpumask *affinity) · 21 unmodified lines
1642 1642
1643static u32 hv_compose_msi_req_v2(1643static u32 hv_compose_msi_req_v2(
1644 struct pci_create_interrupt2 *int_pkt, const struct cpumask *affinity,1644 struct pci_create_interrupt2 *int_pkt, const struct cpumask *affinity,
1645 u32 slot, u8 vector, u8 vector_count)1645 u32 slot, u8 vector, u16 vector_count)
1646{1646{
1647 int cpu;1647 int cpu;
1648 1648
@@ -1661,7 +1661,7 @@ static u32 hv_compose_msi_req_v2( · 12 unmodified lines
1661 1661
1662static u32 hv_compose_msi_req_v3(1662static u32 hv_compose_msi_req_v3(
1663 struct pci_create_interrupt3 *int_pkt, const struct cpumask *affinity,1663 struct pci_create_interrupt3 *int_pkt, const struct cpumask *affinity,
1664 u32 slot, u32 vector, u8 vector_count)1664 u32 slot, u32 vector, u16 vector_count)
1665{1665{
1666 int cpu;1666 int cpu;
1667 1667
@@ -1701,7 +1701,12 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · 33 unmodified lines
1701 struct compose_comp_ctxt comp;1701 struct compose_comp_ctxt comp;
1702 struct tran_int_desc *int_desc;1702 struct tran_int_desc *int_desc;
1703 struct msi_desc *msi_desc;1703 struct msi_desc *msi_desc;
1704 u8 vector, vector_count;1704 /*
1705 * vector_count should be u16: see hv_msi_desc, hv_msi_desc2
1706 * and hv_msi_desc3. vector must be u32: see hv_msi_desc3.
1707 */
1708 u16 vector_count;
1709 u32 vector;
1705 struct {1710 struct {
1706 struct pci_packet pci_pkt;1711 struct pci_packet pci_pkt;
1707 union {1712 union {
@@ -1767,6 +1772,11 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · 59 unmodified lines
1767 vector_count = 1;1772 vector_count = 1;
1768 }1773 }
1769 1774
1775 /*
1776 * hv_compose_msi_req_v1 and v2 are for x86 only, meaning 'vector'
1777 * can't exceed u8. Cast 'vector' down to u8 for v1/v2 explicitly
1778 * for better readability.
1779 */
1770 memset(&ctxt, 0, sizeof(ctxt));1780 memset(&ctxt, 0, sizeof(ctxt));
1771 init_completion(&comp.comp_pkt.host_event);1781 init_completion(&comp.comp_pkt.host_event);
1772 ctxt.pci_pkt.completion_func = hv_pci_compose_compl;1782 ctxt.pci_pkt.completion_func = hv_pci_compose_compl;
@@ -1777,7 +1787,7 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · 4 unmodified lines
1777 size = hv_compose_msi_req_v1(&ctxt.int_pkts.v1,1787 size = hv_compose_msi_req_v1(&ctxt.int_pkts.v1,
1778 dest,1788 dest,
1779 hpdev->desc.win_slot.slot,1789 hpdev->desc.win_slot.slot,
1780 vector,1790 (u8)vector,
1781 vector_count);1791 vector_count);
1782 break;1792 break;
1783 1793
@@ -1786,7 +1796,7 @@ static void hv_compose_msi_msg(struct irq_data *data, struct msi_msg *msg) · 2 unmodified lines
1786 size = hv_compose_msi_req_v2(&ctxt.int_pkts.v2,1796 size = hv_compose_msi_req_v2(&ctxt.int_pkts.v2,
1787 dest,1797 dest,
1788 hpdev->desc.win_slot.slot,1798 hpdev->desc.win_slot.slot,
1789 vector,1799 (u8)vector,
1790 vector_count);1800 vector_count);
1791 break;1801 break;
1792 1802
drivers/phy/qualcomm/phy-qcom-qmp-combo.c+1−1
@@ -2240,7 +2240,7 @@ static void qmp_combo_enable_autonomous_mode(struct qmp_phy *qphy) · 2239 unmodified lines
2240static void qmp_combo_disable_autonomous_mode(struct qmp_phy *qphy)2240static void qmp_combo_disable_autonomous_mode(struct qmp_phy *qphy)
2241{2241{
2242 const struct qmp_phy_cfg *cfg = qphy->cfg;2242 const struct qmp_phy_cfg *cfg = qphy->cfg;
2243 void __iomem *pcs_usb = qphy->pcs_usb ?: qphy->pcs_usb;2243 void __iomem *pcs_usb = qphy->pcs_usb ?: qphy->pcs;
2244 void __iomem *pcs_misc = qphy->pcs_misc;2244 void __iomem *pcs_misc = qphy->pcs_misc;
2245 2245
2246 /* Disable i/o clamp_n on resume for normal mode */2246 /* Disable i/o clamp_n on resume for normal mode */
drivers/phy/ralink/phy-mt7621-pci.c+2−1
@@ -280,7 +280,8 @@ static struct phy *mt7621_pcie_phy_of_xlate(struct device *dev, · 279 unmodified lines
280}280}
281 281
282static const struct soc_device_attribute mt7621_pci_quirks_match[] = {282static const struct soc_device_attribute mt7621_pci_quirks_match[] = {
283 { .soc_id = "mt7621", .revision = "E2" }283 { .soc_id = "mt7621", .revision = "E2" },
284 { /* sentinel */ }
284};285};
285 286
286static const struct regmap_config mt7621_pci_phy_regmap_config = {287static const struct regmap_config mt7621_pci_phy_regmap_config = {
drivers/phy/st/phy-stm32-usbphyc.c+2−0
@@ -710,6 +710,8 @@ static int stm32_usbphyc_probe(struct platform_device *pdev) · 709 unmodified lines
710 ret = of_property_read_u32(child, "reg", &index);710 ret = of_property_read_u32(child, "reg", &index);
711 if (ret || index > usbphyc->nphys) {711 if (ret || index > usbphyc->nphys) {
712 dev_err(&phy->dev, "invalid reg property: %d\n", ret);712 dev_err(&phy->dev, "invalid reg property: %d\n", ret);
713 if (!ret)
714 ret = -EINVAL;
713 goto put_child;715 goto put_child;
714 }716 }
715 717
drivers/phy/sunplus/phy-sunplus-usb2.c+2−2
@@ -256,8 +256,8 @@ static int sp_usb_phy_probe(struct platform_device *pdev) · 255 unmodified lines
256 usbphy->moon4_res_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "moon4");256 usbphy->moon4_res_mem = platform_get_resource_byname(pdev, IORESOURCE_MEM, "moon4");
257 usbphy->moon4_regs = devm_ioremap(&pdev->dev, usbphy->moon4_res_mem->start,257 usbphy->moon4_regs = devm_ioremap(&pdev->dev, usbphy->moon4_res_mem->start,
258 resource_size(usbphy->moon4_res_mem));258 resource_size(usbphy->moon4_res_mem));
259 if (IS_ERR(usbphy->moon4_regs))259 if (!usbphy->moon4_regs)
260 return PTR_ERR(usbphy->moon4_regs);260 return -ENOMEM;
261 261
262 usbphy->phy_clk = devm_clk_get(&pdev->dev, NULL);262 usbphy->phy_clk = devm_clk_get(&pdev->dev, NULL);
263 if (IS_ERR(usbphy->phy_clk))263 if (IS_ERR(usbphy->phy_clk))
drivers/phy/tegra/xusb.c+16−4
@@ -1461,8 +1461,14 @@ EXPORT_SYMBOL_GPL(tegra_phy_xusb_utmi_port_reset); · 1460 unmodified lines
1461 1461
1462void tegra_phy_xusb_utmi_pad_power_on(struct phy *phy)1462void tegra_phy_xusb_utmi_pad_power_on(struct phy *phy)
1463{1463{
1464 struct tegra_xusb_lane *lane = phy_get_drvdata(phy);1464 struct tegra_xusb_lane *lane;
1465 struct tegra_xusb_padctl *padctl = lane->pad->padctl;1465 struct tegra_xusb_padctl *padctl;
1466
1467 if (!phy)
1468 return;
1469
1470 lane = phy_get_drvdata(phy);
1471 padctl = lane->pad->padctl;
1466 1472
1467 if (padctl->soc->ops->utmi_pad_power_on)1473 if (padctl->soc->ops->utmi_pad_power_on)
1468 padctl->soc->ops->utmi_pad_power_on(phy);1474 padctl->soc->ops->utmi_pad_power_on(phy);
@@ -1471,8 +1477,14 @@ EXPORT_SYMBOL_GPL(tegra_phy_xusb_utmi_pad_power_on); · 2 unmodified lines
1471 1477
1472void tegra_phy_xusb_utmi_pad_power_down(struct phy *phy)1478void tegra_phy_xusb_utmi_pad_power_down(struct phy *phy)
1473{1479{
1474 struct tegra_xusb_lane *lane = phy_get_drvdata(phy);1480 struct tegra_xusb_lane *lane;
1475 struct tegra_xusb_padctl *padctl = lane->pad->padctl;1481 struct tegra_xusb_padctl *padctl;
1482
1483 if (!phy)
1484 return;
1485
1486 lane = phy_get_drvdata(phy);
1487 padctl = lane->pad->padctl;
1476 1488
1477 if (padctl->soc->ops->utmi_pad_power_down)1489 if (padctl->soc->ops->utmi_pad_power_down)
1478 padctl->soc->ops->utmi_pad_power_down(phy);1490 padctl->soc->ops->utmi_pad_power_down(phy);
drivers/platform/x86/hp-wmi.c+10−2
@@ -1300,8 +1300,16 @@ static int __init hp_wmi_bios_setup(struct platform_device *device) · 1299 unmodified lines
1300 wwan_rfkill = NULL;1300 wwan_rfkill = NULL;
1301 rfkill2_count = 0;1301 rfkill2_count = 0;
1302 1302
1303 if (hp_wmi_rfkill_setup(device))1303 /*
1304 hp_wmi_rfkill2_setup(device);1304 * In pre-2009 BIOS, command 1Bh return 0x4 to indicate that
1305 * BIOS no longer controls the power for the wireless
1306 * devices. All features supported by this command will no
1307 * longer be supported.
1308 */
1309 if (!hp_wmi_bios_2009_later()) {
1310 if (hp_wmi_rfkill_setup(device))
1311 hp_wmi_rfkill2_setup(device);
1312 }
1305 1313
1306 err = hp_wmi_hwmon_init();1314 err = hp_wmi_hwmon_init();
1307 1315
drivers/platform/x86/ideapad-laptop.c+24−1
@@ -1533,6 +1533,24 @@ static const struct dmi_system_id hw_rfkill_list[] = { · 1532 unmodified lines
1533 {}1533 {}
1534};1534};
1535 1535
1536static const struct dmi_system_id no_touchpad_switch_list[] = {
1537 {
1538 .ident = "Lenovo Yoga 3 Pro 1370",
1539 .matches = {
1540 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
1541 DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo YOGA 3"),
1542 },
1543 },
1544 {
1545 .ident = "ZhaoYang K4e-IML",
1546 .matches = {
1547 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
1548 DMI_MATCH(DMI_PRODUCT_VERSION, "ZhaoYang K4e-IML"),
1549 },
1550 },
1551 {}
1552};
1553
1536static void ideapad_check_features(struct ideapad_private *priv)1554static void ideapad_check_features(struct ideapad_private *priv)
1537{1555{
1538 acpi_handle handle = priv->adev->handle;1556 acpi_handle handle = priv->adev->handle;
@@ -1541,7 +1559,12 @@ static void ideapad_check_features(struct ideapad_private *priv) · 2 unmodified lines
1541 priv->features.hw_rfkill_switch = dmi_check_system(hw_rfkill_list);1559 priv->features.hw_rfkill_switch = dmi_check_system(hw_rfkill_list);
1542 1560
1543 /* Most ideapads with ELAN0634 touchpad don't use EC touchpad switch */1561 /* Most ideapads with ELAN0634 touchpad don't use EC touchpad switch */
1544 priv->features.touchpad_ctrl_via_ec = !acpi_dev_present("ELAN0634", NULL, -1);1562 if (acpi_dev_present("ELAN0634", NULL, -1))
1563 priv->features.touchpad_ctrl_via_ec = 0;
1564 else if (dmi_check_system(no_touchpad_switch_list))
1565 priv->features.touchpad_ctrl_via_ec = 0;
1566 else
1567 priv->features.touchpad_ctrl_via_ec = 1;
1545 1568
1546 if (!read_ec_data(handle, VPCCMD_R_FAN, &val))1569 if (!read_ec_data(handle, VPCCMD_R_FAN, &val))
1547 priv->features.fan_mode = true;1570 priv->features.fan_mode = true;
drivers/platform/x86/intel/hid.c+3−0
@@ -27,6 +27,9 @@ static const struct acpi_device_id intel_hid_ids[] = { · 26 unmodified lines
27 {"INTC1051", 0},27 {"INTC1051", 0},
28 {"INTC1054", 0},28 {"INTC1054", 0},
29 {"INTC1070", 0},29 {"INTC1070", 0},
30 {"INTC1076", 0},
31 {"INTC1077", 0},
32 {"INTC1078", 0},
30 {"", 0},33 {"", 0},
31};34};
32MODULE_DEVICE_TABLE(acpi, intel_hid_ids);35MODULE_DEVICE_TABLE(acpi, intel_hid_ids);
drivers/platform/x86/intel/pmt/class.c+30−1
@@ -9,6 +9,7 @@ · 8 unmodified lines
9 */9 */
10 10
11#include <linux/kernel.h>11#include <linux/kernel.h>
12#include <linux/io-64-nonatomic-lo-hi.h>
12#include <linux/module.h>13#include <linux/module.h>
13#include <linux/mm.h>14#include <linux/mm.h>
14#include <linux/pci.h>15#include <linux/pci.h>
@@ -19,6 +20,7 @@ · 4 unmodified lines
19#define PMT_XA_START 020#define PMT_XA_START 0
20#define PMT_XA_MAX INT_MAX21#define PMT_XA_MAX INT_MAX
21#define PMT_XA_LIMIT XA_LIMIT(PMT_XA_START, PMT_XA_MAX)22#define PMT_XA_LIMIT XA_LIMIT(PMT_XA_START, PMT_XA_MAX)
23#define GUID_SPR_PUNIT 0x9956f43f
22 24
23bool intel_pmt_is_early_client_hw(struct device *dev)25bool intel_pmt_is_early_client_hw(struct device *dev)
24{26{
@@ -33,6 +35,29 @@ bool intel_pmt_is_early_client_hw(struct device *dev) · 8 unmodified lines
33}35}
34EXPORT_SYMBOL_GPL(intel_pmt_is_early_client_hw);36EXPORT_SYMBOL_GPL(intel_pmt_is_early_client_hw);
35 37
38static inline int
39pmt_memcpy64_fromio(void *to, const u64 __iomem *from, size_t count)
40{
41 int i, remain;
42 u64 *buf = to;
43
44 if (!IS_ALIGNED((unsigned long)from, 8))
45 return -EFAULT;
46
47 for (i = 0; i < count/8; i++)
48 buf[i] = readq(&from[i]);
49
50 /* Copy any remaining bytes */
51 remain = count % 8;
52 if (remain) {
53 u64 tmp = readq(&from[i]);
54
55 memcpy(&buf[i], &tmp, remain);
56 }
57
58 return count;
59}
60
36/*61/*
37 * sysfs62 * sysfs
38 */63 */
@@ -54,7 +79,11 @@ intel_pmt_read(struct file *filp, struct kobject *kobj, · 15 unmodified lines
54 if (count > entry->size - off)79 if (count > entry->size - off)
55 count = entry->size - off;80 count = entry->size - off;
56 81
57 memcpy_fromio(buf, entry->base + off, count);82 if (entry->guid == GUID_SPR_PUNIT)
83 /* PUNIT on SPR only supports aligned 64-bit read */
84 count = pmt_memcpy64_fromio(buf, entry->base + off, count);
85 else
86 memcpy_fromio(buf, entry->base + off, count);
58 87
59 return count;88 return count;
60}89}
drivers/platform/x86/p2sb.c+6−9
@@ -19,26 +19,23 @@ · 18 unmodified lines
19#define P2SBC 0xe019#define P2SBC 0xe0
20#define P2SBC_HIDE BIT(8)20#define P2SBC_HIDE BIT(8)
21 21
22#define P2SB_DEVFN_DEFAULT PCI_DEVFN(31, 1)
23
22static const struct x86_cpu_id p2sb_cpu_ids[] = {24static const struct x86_cpu_id p2sb_cpu_ids[] = {
23 X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, PCI_DEVFN(13, 0)),25 X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT, PCI_DEVFN(13, 0)),
24 X86_MATCH_INTEL_FAM6_MODEL(ATOM_GOLDMONT_D, PCI_DEVFN(31, 1)),
25 X86_MATCH_INTEL_FAM6_MODEL(ATOM_SILVERMONT_D, PCI_DEVFN(31, 1)),
26 X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE, PCI_DEVFN(31, 1)),
27 X86_MATCH_INTEL_FAM6_MODEL(KABYLAKE_L, PCI_DEVFN(31, 1)),
28 X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE, PCI_DEVFN(31, 1)),
29 X86_MATCH_INTEL_FAM6_MODEL(SKYLAKE_L, PCI_DEVFN(31, 1)),
30 {}26 {}
31};27};
32 28
33static int p2sb_get_devfn(unsigned int *devfn)29static int p2sb_get_devfn(unsigned int *devfn)
34{30{
31 unsigned int fn = P2SB_DEVFN_DEFAULT;
35 const struct x86_cpu_id *id;32 const struct x86_cpu_id *id;
36 33
37 id = x86_match_cpu(p2sb_cpu_ids);34 id = x86_match_cpu(p2sb_cpu_ids);
38 if (!id)35 if (id)
39 return -ENODEV;36 fn = (unsigned int)id->driver_data;
40 37
41 *devfn = (unsigned int)id->driver_data;38 *devfn = fn;
42 return 0;39 return 0;
43}40}
44 41
drivers/platform/x86/touchscreen_dmi.c+25−0
@@ -770,6 +770,22 @@ static const struct ts_dmi_data predia_basic_data = { · 769 unmodified lines
770 .properties = predia_basic_props,770 .properties = predia_basic_props,
771};771};
772 772
773static const struct property_entry rca_cambio_w101_v2_props[] = {
774 PROPERTY_ENTRY_U32("touchscreen-min-x", 4),
775 PROPERTY_ENTRY_U32("touchscreen-min-y", 20),
776 PROPERTY_ENTRY_U32("touchscreen-size-x", 1644),
777 PROPERTY_ENTRY_U32("touchscreen-size-y", 874),
778 PROPERTY_ENTRY_BOOL("touchscreen-swapped-x-y"),
779 PROPERTY_ENTRY_STRING("firmware-name", "gsl1680-rca-cambio-w101-v2.fw"),
780 PROPERTY_ENTRY_U32("silead,max-fingers", 10),
781 { }
782};
783
784static const struct ts_dmi_data rca_cambio_w101_v2_data = {
785 .acpi_name = "MSSL1680:00",
786 .properties = rca_cambio_w101_v2_props,
787};
788
773static const struct property_entry rwc_nanote_p8_props[] = {789static const struct property_entry rwc_nanote_p8_props[] = {
774 PROPERTY_ENTRY_U32("touchscreen-min-y", 46),790 PROPERTY_ENTRY_U32("touchscreen-min-y", 46),
775 PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),791 PROPERTY_ENTRY_U32("touchscreen-size-x", 1728),
@@ -1409,6 +1425,15 @@ const struct dmi_system_id touchscreen_dmi_table[] = { · 633 unmodified lines
1409 DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"),1425 DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"),
1410 },1426 },
1411 },1427 },
1428 {
1429 /* RCA Cambio W101 v2 */
1430 /* https://github.com/onitake/gsl-firmware/discussions/193 */
1431 .driver_data = (void *)&rca_cambio_w101_v2_data,
1432 .matches = {
1433 DMI_MATCH(DMI_SYS_VENDOR, "RCA"),
1434 DMI_MATCH(DMI_PRODUCT_NAME, "W101SA23T1"),
1435 },
1436 },
1412 {1437 {
1413 /* RWC NANOTE P8 */1438 /* RWC NANOTE P8 */
1414 .driver_data = (void *)&rwc_nanote_p8_data,1439 .driver_data = (void *)&rwc_nanote_p8_data,
drivers/s390/crypto/zcrypt_msgtype6.c+15−6
@@ -342,7 +342,10 @@ static int xcrb_msg_to_type6cprb_msgx(bool userspace, struct ap_message *ap_msg, · 341 unmodified lines
342 };342 };
343 struct {343 struct {
344 struct type6_hdr hdr;344 struct type6_hdr hdr;
345 struct CPRBX cprbx;345 union {
346 struct CPRBX cprbx;
347 DECLARE_FLEX_ARRAY(u8, userdata);
348 };
346 } __packed * msg = ap_msg->msg;349 } __packed * msg = ap_msg->msg;
347 350
348 int rcblen = CEIL4(xcrb->request_control_blk_length);351 int rcblen = CEIL4(xcrb->request_control_blk_length);
@@ -403,7 +406,8 @@ static int xcrb_msg_to_type6cprb_msgx(bool userspace, struct ap_message *ap_msg, · 54 unmodified lines
403 msg->hdr.fromcardlen2 = xcrb->reply_data_length;406 msg->hdr.fromcardlen2 = xcrb->reply_data_length;
404 407
405 /* prepare CPRB */408 /* prepare CPRB */
406 if (z_copy_from_user(userspace, &msg->cprbx, xcrb->request_control_blk_addr,409 if (z_copy_from_user(userspace, msg->userdata,
410 xcrb->request_control_blk_addr,
407 xcrb->request_control_blk_length))411 xcrb->request_control_blk_length))
408 return -EFAULT;412 return -EFAULT;
409 if (msg->cprbx.cprb_len + sizeof(msg->hdr.function_code) >413 if (msg->cprbx.cprb_len + sizeof(msg->hdr.function_code) >
@@ -469,9 +473,14 @@ static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap · 59 unmodified lines
469 473
470 struct {474 struct {
471 struct type6_hdr hdr;475 struct type6_hdr hdr;
472 struct ep11_cprb cprbx;476 union {
473 unsigned char pld_tag; /* fixed value 0x30 */477 struct {
474 unsigned char pld_lenfmt; /* payload length format */478 struct ep11_cprb cprbx;
479 unsigned char pld_tag; /* fixed value 0x30 */
480 unsigned char pld_lenfmt; /* length format */
481 } __packed;
482 DECLARE_FLEX_ARRAY(u8, userdata);
483 };
475 } __packed * msg = ap_msg->msg;484 } __packed * msg = ap_msg->msg;
476 485
477 struct pld_hdr {486 struct pld_hdr {
@@ -500,7 +509,7 @@ static int xcrb_msg_to_type6_ep11cprb_msgx(bool userspace, struct ap_message *ap · 22 unmodified lines
500 msg->hdr.fromcardlen1 = xcrb->resp_len;509 msg->hdr.fromcardlen1 = xcrb->resp_len;
501 510
502 /* Import CPRB data from the ioctl input parameter */511 /* Import CPRB data from the ioctl input parameter */
503 if (z_copy_from_user(userspace, &msg->cprbx.cprb_len,512 if (z_copy_from_user(userspace, msg->userdata,
504 (char __force __user *)xcrb->req, xcrb->req_len)) {513 (char __force __user *)xcrb->req, xcrb->req_len)) {
505 return -EFAULT;514 return -EFAULT;
506 }515 }
drivers/scsi/ibmvscsi/ibmvfc.c+11−3
@@ -708,8 +708,13 @@ static void ibmvfc_init_host(struct ibmvfc_host *vhost) · 707 unmodified lines
708 memset(vhost->async_crq.msgs.async, 0, PAGE_SIZE);708 memset(vhost->async_crq.msgs.async, 0, PAGE_SIZE);
709 vhost->async_crq.cur = 0;709 vhost->async_crq.cur = 0;
710 710
711 list_for_each_entry(tgt, &vhost->targets, queue)711 list_for_each_entry(tgt, &vhost->targets, queue) {
712 ibmvfc_del_tgt(tgt);712 if (vhost->client_migrated)
713 tgt->need_login = 1;
714 else
715 ibmvfc_del_tgt(tgt);
716 }
717
713 scsi_block_requests(vhost->host);718 scsi_block_requests(vhost->host);
714 ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_INIT);719 ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_INIT);
715 vhost->job_step = ibmvfc_npiv_login;720 vhost->job_step = ibmvfc_npiv_login;
@@ -3235,9 +3240,12 @@ static void ibmvfc_handle_crq(struct ibmvfc_crq *crq, struct ibmvfc_host *vhost, · 2519 unmodified lines
3235 /* We need to re-setup the interpartition connection */3240 /* We need to re-setup the interpartition connection */
3236 dev_info(vhost->dev, "Partition migrated, Re-enabling adapter\n");3241 dev_info(vhost->dev, "Partition migrated, Re-enabling adapter\n");
3237 vhost->client_migrated = 1;3242 vhost->client_migrated = 1;
3243
3244 scsi_block_requests(vhost->host);
3238 ibmvfc_purge_requests(vhost, DID_REQUEUE);3245 ibmvfc_purge_requests(vhost, DID_REQUEUE);
3239 ibmvfc_link_down(vhost, IBMVFC_LINK_DOWN);3246 ibmvfc_set_host_state(vhost, IBMVFC_LINK_DOWN);
3240 ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_REENABLE);3247 ibmvfc_set_host_action(vhost, IBMVFC_HOST_ACTION_REENABLE);
3248 wake_up(&vhost->work_wait_q);
3241 } else if (crq->format == IBMVFC_PARTNER_FAILED || crq->format == IBMVFC_PARTNER_DEREGISTER) {3249 } else if (crq->format == IBMVFC_PARTNER_FAILED || crq->format == IBMVFC_PARTNER_DEREGISTER) {
3242 dev_err(vhost->dev, "Host partner adapter deregistered or failed (rc=%d)\n", crq->format);3250 dev_err(vhost->dev, "Host partner adapter deregistered or failed (rc=%d)\n", crq->format);
3243 ibmvfc_purge_requests(vhost, DID_ERROR);3251 ibmvfc_purge_requests(vhost, DID_ERROR);
drivers/scsi/scsi_debug.c+7−0
@@ -1899,6 +1899,13 @@ static int resp_readcap16(struct scsi_cmnd *scp, · 1898 unmodified lines
1899 arr[14] |= 0x40;1899 arr[14] |= 0x40;
1900 }1900 }
1901 1901
1902 /*
1903 * Since the scsi_debug READ CAPACITY implementation always reports the
1904 * total disk capacity, set RC BASIS = 1 for host-managed ZBC devices.
1905 */
1906 if (devip->zmodel == BLK_ZONED_HM)
1907 arr[12] |= 1 << 4;
1908
1902 arr[15] = sdebug_lowest_aligned & 0xff;1909 arr[15] = sdebug_lowest_aligned & 0xff;
1903 1910
1904 if (have_dif_prot) {1911 if (have_dif_prot) {
drivers/scsi/scsi_transport_sas.c+9−4
@@ -722,12 +722,17 @@ int sas_phy_add(struct sas_phy *phy) · 721 unmodified lines
722 int error;722 int error;
723 723
724 error = device_add(&phy->dev);724 error = device_add(&phy->dev);
725 if (!error) {725 if (error)
726 transport_add_device(&phy->dev);726 return error;
727 transport_configure_device(&phy->dev);727
728 error = transport_add_device(&phy->dev);
729 if (error) {
730 device_del(&phy->dev);
731 return error;
728 }732 }
733 transport_configure_device(&phy->dev);
729 734
730 return error;735 return 0;
731}736}
732EXPORT_SYMBOL(sas_phy_add);737EXPORT_SYMBOL(sas_phy_add);
733 738
drivers/soundwire/intel.c+1−0
@@ -1513,6 +1513,7 @@ static int intel_link_probe(struct auxiliary_device *auxdev, · 1512 unmodified lines
1513 1513
1514 bus->link_id = auxdev->id;1514 bus->link_id = auxdev->id;
1515 bus->dev_num_ida_min = INTEL_DEV_NUM_IDA_MIN;1515 bus->dev_num_ida_min = INTEL_DEV_NUM_IDA_MIN;
1516 bus->clk_stop_timeout = 1;
1516 1517
1517 sdw_cdns_probe(cdns);1518 sdw_cdns_probe(cdns);
1518 1519
drivers/soundwire/qcom.c+9−0
@@ -344,6 +344,9 @@ static int qcom_swrm_cmd_fifo_wr_cmd(struct qcom_swrm_ctrl *swrm, u8 cmd_data, · 343 unmodified lines
344 if (swrm_wait_for_wr_fifo_avail(swrm))344 if (swrm_wait_for_wr_fifo_avail(swrm))
345 return SDW_CMD_FAIL_OTHER;345 return SDW_CMD_FAIL_OTHER;
346 346
347 if (cmd_id == SWR_BROADCAST_CMD_ID)
348 reinit_completion(&swrm->broadcast);
349
347 /* Its assumed that write is okay as we do not get any status back */350 /* Its assumed that write is okay as we do not get any status back */
348 swrm->reg_write(swrm, SWRM_CMD_FIFO_WR_CMD, val);351 swrm->reg_write(swrm, SWRM_CMD_FIFO_WR_CMD, val);
349 352
@@ -377,6 +380,12 @@ static int qcom_swrm_cmd_fifo_rd_cmd(struct qcom_swrm_ctrl *swrm, · 27 unmodified lines
377 380
378 val = swrm_get_packed_reg_val(&swrm->rcmd_id, len, dev_addr, reg_addr);381 val = swrm_get_packed_reg_val(&swrm->rcmd_id, len, dev_addr, reg_addr);
379 382
383 /*
384 * Check for outstanding cmd wrt. write fifo depth to avoid
385 * overflow as read will also increase write fifo cnt.
386 */
387 swrm_wait_for_wr_fifo_avail(swrm);
388
380 /* wait for FIFO RD to complete to avoid overflow */389 /* wait for FIFO RD to complete to avoid overflow */
381 usleep_range(100, 105);390 usleep_range(100, 105);
382 swrm->reg_write(swrm, SWRM_CMD_FIFO_RD_CMD, val);391 swrm->reg_write(swrm, SWRM_CMD_FIFO_RD_CMD, val);
drivers/spi/spi-amd.c+1−1
@@ -65,7 +65,7 @@ enum amd_spi_speed { · 64 unmodified lines
65 F_16_66MHz,65 F_16_66MHz,
66 F_100MHz,66 F_100MHz,
67 F_800KHz,67 F_800KHz,
68 SPI_SPD7,68 SPI_SPD7 = 0x7,
69 F_50MHz = 0x4,69 F_50MHz = 0x4,
70 F_4MHz = 0x32,70 F_4MHz = 0x32,
71 F_3_17MHz = 0x3F71 F_3_17MHz = 0x3F
drivers/spi/spi-intel.c+4−4
@@ -52,17 +52,17 @@ · 51 unmodified lines
52#define FRACC 0x5052#define FRACC 0x50
53 53
54#define FREG(n) (0x54 + ((n) * 4))54#define FREG(n) (0x54 + ((n) * 4))
55#define FREG_BASE_MASK 0x3fff55#define FREG_BASE_MASK GENMASK(14, 0)
56#define FREG_LIMIT_SHIFT 1656#define FREG_LIMIT_SHIFT 16
57#define FREG_LIMIT_MASK (0x03fff << FREG_LIMIT_SHIFT)57#define FREG_LIMIT_MASK GENMASK(30, 16)
58 58
59/* Offset is from @ispi->pregs */59/* Offset is from @ispi->pregs */
60#define PR(n) ((n) * 4)60#define PR(n) ((n) * 4)
61#define PR_WPE BIT(31)61#define PR_WPE BIT(31)
62#define PR_LIMIT_SHIFT 1662#define PR_LIMIT_SHIFT 16
63#define PR_LIMIT_MASK (0x3fff << PR_LIMIT_SHIFT)63#define PR_LIMIT_MASK GENMASK(30, 16)
64#define PR_RPE BIT(15)64#define PR_RPE BIT(15)
65#define PR_BASE_MASK 0x3fff65#define PR_BASE_MASK GENMASK(14, 0)
66 66
67/* Offsets are from @ispi->sregs */67/* Offsets are from @ispi->sregs */
68#define SSFSTS_CTL 0x0068#define SSFSTS_CTL 0x00
drivers/spi/spi-meson-spicc.c+22−2
@@ -160,6 +160,7 @@ struct meson_spicc_device { · 159 unmodified lines
160 struct clk *clk;160 struct clk *clk;
161 struct spi_message *message;161 struct spi_message *message;
162 struct spi_transfer *xfer;162 struct spi_transfer *xfer;
163 struct completion done;
163 const struct meson_spicc_data *data;164 const struct meson_spicc_data *data;
164 u8 *tx_buf;165 u8 *tx_buf;
165 u8 *rx_buf;166 u8 *rx_buf;
@@ -282,7 +283,7 @@ static irqreturn_t meson_spicc_irq(int irq, void *data) · 116 unmodified lines
282 /* Disable all IRQs */283 /* Disable all IRQs */
283 writel(0, spicc->base + SPICC_INTREG);284 writel(0, spicc->base + SPICC_INTREG);
284 285
285 spi_finalize_current_transfer(spicc->master);286 complete(&spicc->done);
286 287
287 return IRQ_HANDLED;288 return IRQ_HANDLED;
288 }289 }
@@ -386,6 +387,7 @@ static int meson_spicc_transfer_one(struct spi_master *master, · 97 unmodified lines
386 struct spi_transfer *xfer)387 struct spi_transfer *xfer)
387{388{
388 struct meson_spicc_device *spicc = spi_master_get_devdata(master);389 struct meson_spicc_device *spicc = spi_master_get_devdata(master);
390 uint64_t timeout;
389 391
390 /* Store current transfer */392 /* Store current transfer */
391 spicc->xfer = xfer;393 spicc->xfer = xfer;
@@ -410,13 +412,29 @@ static int meson_spicc_transfer_one(struct spi_master *master, · 18 unmodified lines
410 /* Setup burst */412 /* Setup burst */
411 meson_spicc_setup_burst(spicc);413 meson_spicc_setup_burst(spicc);
412 414
415 /* Setup wait for completion */
416 reinit_completion(&spicc->done);
417
418 /* For each byte we wait for 8 cycles of the SPI clock */
419 timeout = 8LL * MSEC_PER_SEC * xfer->len;
420 do_div(timeout, xfer->speed_hz);
421
422 /* Add 10us delay between each fifo bursts */
423 timeout += ((xfer->len >> 4) * 10) / MSEC_PER_SEC;
424
425 /* Increase it twice and add 200 ms tolerance */
426 timeout += timeout + 200;
427
413 /* Start burst */428 /* Start burst */
414 writel_bits_relaxed(SPICC_XCH, SPICC_XCH, spicc->base + SPICC_CONREG);429 writel_bits_relaxed(SPICC_XCH, SPICC_XCH, spicc->base + SPICC_CONREG);
415 430
416 /* Enable interrupts */431 /* Enable interrupts */
417 writel_relaxed(SPICC_TC_EN, spicc->base + SPICC_INTREG);432 writel_relaxed(SPICC_TC_EN, spicc->base + SPICC_INTREG);
418 433
419 return 1;434 if (!wait_for_completion_timeout(&spicc->done, msecs_to_jiffies(timeout)))
435 return -ETIMEDOUT;
436
437 return 0;
420}438}
421 439
422static int meson_spicc_prepare_message(struct spi_master *master,440static int meson_spicc_prepare_message(struct spi_master *master,
@@ -743,6 +761,8 @@ static int meson_spicc_probe(struct platform_device *pdev) · 320 unmodified lines
743 spicc->pdev = pdev;761 spicc->pdev = pdev;
744 platform_set_drvdata(pdev, spicc);762 platform_set_drvdata(pdev, spicc);
745 763
764 init_completion(&spicc->done);
765
746 spicc->base = devm_platform_ioremap_resource(pdev, 0);766 spicc->base = devm_platform_ioremap_resource(pdev, 0);
747 if (IS_ERR(spicc->base)) {767 if (IS_ERR(spicc->base)) {
748 dev_err(&pdev->dev, "io resource mapping failed\n");768 dev_err(&pdev->dev, "io resource mapping failed\n");
drivers/spi/spi-mt65xx.c+13−10
@@ -551,14 +551,17 @@ static void mtk_spi_enable_transfer(struct spi_master *master) · 550 unmodified lines
551 writel(cmd, mdata->base + SPI_CMD_REG);551 writel(cmd, mdata->base + SPI_CMD_REG);
552}552}
553 553
554static int mtk_spi_get_mult_delta(u32 xfer_len)554static int mtk_spi_get_mult_delta(struct mtk_spi *mdata, u32 xfer_len)
555{555{
556 u32 mult_delta;556 u32 mult_delta = 0;
557 557
558 if (xfer_len > MTK_SPI_PACKET_SIZE)558 if (mdata->dev_comp->ipm_design) {
559 mult_delta = xfer_len % MTK_SPI_PACKET_SIZE;559 if (xfer_len > MTK_SPI_IPM_PACKET_SIZE)
560 else560 mult_delta = xfer_len % MTK_SPI_IPM_PACKET_SIZE;
561 mult_delta = 0;561 } else {
562 if (xfer_len > MTK_SPI_PACKET_SIZE)
563 mult_delta = xfer_len % MTK_SPI_PACKET_SIZE;
564 }
562 565
563 return mult_delta;566 return mult_delta;
564}567}
@@ -570,22 +573,22 @@ static void mtk_spi_update_mdata_len(struct spi_master *master) · 5 unmodified lines
570 573
571 if (mdata->tx_sgl_len && mdata->rx_sgl_len) {574 if (mdata->tx_sgl_len && mdata->rx_sgl_len) {
572 if (mdata->tx_sgl_len > mdata->rx_sgl_len) {575 if (mdata->tx_sgl_len > mdata->rx_sgl_len) {
573 mult_delta = mtk_spi_get_mult_delta(mdata->rx_sgl_len);576 mult_delta = mtk_spi_get_mult_delta(mdata, mdata->rx_sgl_len);
574 mdata->xfer_len = mdata->rx_sgl_len - mult_delta;577 mdata->xfer_len = mdata->rx_sgl_len - mult_delta;
575 mdata->rx_sgl_len = mult_delta;578 mdata->rx_sgl_len = mult_delta;
576 mdata->tx_sgl_len -= mdata->xfer_len;579 mdata->tx_sgl_len -= mdata->xfer_len;
577 } else {580 } else {
578 mult_delta = mtk_spi_get_mult_delta(mdata->tx_sgl_len);581 mult_delta = mtk_spi_get_mult_delta(mdata, mdata->tx_sgl_len);
579 mdata->xfer_len = mdata->tx_sgl_len - mult_delta;582 mdata->xfer_len = mdata->tx_sgl_len - mult_delta;
580 mdata->tx_sgl_len = mult_delta;583 mdata->tx_sgl_len = mult_delta;
581 mdata->rx_sgl_len -= mdata->xfer_len;584 mdata->rx_sgl_len -= mdata->xfer_len;
582 }585 }
583 } else if (mdata->tx_sgl_len) {586 } else if (mdata->tx_sgl_len) {
584 mult_delta = mtk_spi_get_mult_delta(mdata->tx_sgl_len);587 mult_delta = mtk_spi_get_mult_delta(mdata, mdata->tx_sgl_len);
585 mdata->xfer_len = mdata->tx_sgl_len - mult_delta;588 mdata->xfer_len = mdata->tx_sgl_len - mult_delta;
586 mdata->tx_sgl_len = mult_delta;589 mdata->tx_sgl_len = mult_delta;
587 } else if (mdata->rx_sgl_len) {590 } else if (mdata->rx_sgl_len) {
588 mult_delta = mtk_spi_get_mult_delta(mdata->rx_sgl_len);591 mult_delta = mtk_spi_get_mult_delta(mdata, mdata->rx_sgl_len);
589 mdata->xfer_len = mdata->rx_sgl_len - mult_delta;592 mdata->xfer_len = mdata->rx_sgl_len - mult_delta;
590 mdata->rx_sgl_len = mult_delta;593 mdata->rx_sgl_len = mult_delta;
591 }594 }
drivers/spi/spi-stm32.c+2−1
@@ -434,7 +434,7 @@ static int stm32_spi_prepare_mbr(struct stm32_spi *spi, u32 speed_hz, · 433 unmodified lines
434 u32 div, mbrdiv;434 u32 div, mbrdiv;
435 435
436 /* Ensure spi->clk_rate is even */436 /* Ensure spi->clk_rate is even */
437 div = DIV_ROUND_UP(spi->clk_rate & ~0x1, speed_hz);437 div = DIV_ROUND_CLOSEST(spi->clk_rate & ~0x1, speed_hz);
438 438
439 /*439 /*
440 * SPI framework set xfer->speed_hz to master->max_speed_hz if440 * SPI framework set xfer->speed_hz to master->max_speed_hz if
@@ -886,6 +886,7 @@ static irqreturn_t stm32h7_spi_irq_thread(int irq, void *dev_id) · 445 unmodified lines
886 static DEFINE_RATELIMIT_STATE(rs,886 static DEFINE_RATELIMIT_STATE(rs,
887 DEFAULT_RATELIMIT_INTERVAL * 10,887 DEFAULT_RATELIMIT_INTERVAL * 10,
888 1);888 1);
889 ratelimit_set_flags(&rs, RATELIMIT_MSG_ON_RELEASE);
889 if (__ratelimit(&rs))890 if (__ratelimit(&rs))
890 dev_dbg_ratelimited(spi->dev, "Communication suspended\n");891 dev_dbg_ratelimited(spi->dev, "Communication suspended\n");
891 if (!spi->cur_usedma && (spi->rx_buf && (spi->rx_len > 0)))892 if (!spi->cur_usedma && (spi->rx_buf && (spi->rx_len > 0)))
drivers/spi/spi-tegra210-quad.c+6−0
@@ -720,6 +720,9 @@ static int tegra_qspi_start_cpu_based_transfer(struct tegra_qspi *qspi, struct s · 719 unmodified lines
720 720
721static void tegra_qspi_deinit_dma(struct tegra_qspi *tqspi)721static void tegra_qspi_deinit_dma(struct tegra_qspi *tqspi)
722{722{
723 if (!tqspi->soc_data->has_dma)
724 return;
725
723 if (tqspi->tx_dma_buf) {726 if (tqspi->tx_dma_buf) {
724 dma_free_coherent(tqspi->dev, tqspi->dma_buf_size,727 dma_free_coherent(tqspi->dev, tqspi->dma_buf_size,
725 tqspi->tx_dma_buf, tqspi->tx_dma_phys);728 tqspi->tx_dma_buf, tqspi->tx_dma_phys);
@@ -750,6 +753,9 @@ static int tegra_qspi_init_dma(struct tegra_qspi *tqspi) · 24 unmodified lines
750 u32 *dma_buf;753 u32 *dma_buf;
751 int err;754 int err;
752 755
756 if (!tqspi->soc_data->has_dma)
757 return 0;
758
753 dma_chan = dma_request_chan(tqspi->dev, "rx");759 dma_chan = dma_request_chan(tqspi->dev, "rx");
754 if (IS_ERR(dma_chan)) {760 if (IS_ERR(dma_chan)) {
755 err = PTR_ERR(dma_chan);761 err = PTR_ERR(dma_chan);
fs/btrfs/compression.c+8−6
@@ -512,7 +512,7 @@ static u64 bio_end_offset(struct bio *bio) · 511 unmodified lines
512static noinline int add_ra_bio_pages(struct inode *inode,512static noinline int add_ra_bio_pages(struct inode *inode,
513 u64 compressed_end,513 u64 compressed_end,
514 struct compressed_bio *cb,514 struct compressed_bio *cb,
515 unsigned long *pflags)515 int *memstall, unsigned long *pflags)
516{516{
517 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);517 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
518 unsigned long end_index;518 unsigned long end_index;
@@ -581,8 +581,10 @@ static noinline int add_ra_bio_pages(struct inode *inode, · 62 unmodified lines
581 continue;581 continue;
582 }582 }
583 583
584 if (PageWorkingset(page))584 if (!*memstall && PageWorkingset(page)) {
585 psi_memstall_enter(pflags);585 psi_memstall_enter(pflags);
586 *memstall = 1;
587 }
586 588
587 ret = set_page_extent_mapped(page);589 ret = set_page_extent_mapped(page);
588 if (ret < 0) {590 if (ret < 0) {
@@ -670,8 +672,8 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 81 unmodified lines
670 u64 em_len;672 u64 em_len;
671 u64 em_start;673 u64 em_start;
672 struct extent_map *em;674 struct extent_map *em;
673 /* Initialize to 1 to make skip psi_memstall_leave unless needed */675 unsigned long pflags;
674 unsigned long pflags = 1;676 int memstall = 0;
675 blk_status_t ret;677 blk_status_t ret;
676 int ret2;678 int ret2;
677 int i;679 int i;
@@ -727,7 +729,7 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 49 unmodified lines
727 goto fail;729 goto fail;
728 }730 }
729 731
730 add_ra_bio_pages(inode, em_start + em_len, cb, &pflags);732 add_ra_bio_pages(inode, em_start + em_len, cb, &memstall, &pflags);
731 733
732 /* include any pages we added in add_ra-bio_pages */734 /* include any pages we added in add_ra-bio_pages */
733 cb->len = bio->bi_iter.bi_size;735 cb->len = bio->bi_iter.bi_size;
@@ -807,7 +809,7 @@ void btrfs_submit_compressed_read(struct inode *inode, struct bio *bio, · 73 unmodified lines
807 }809 }
808 }810 }
809 811
810 if (!pflags)812 if (memstall)
811 psi_memstall_leave(&pflags);813 psi_memstall_leave(&pflags);
812 814
813 if (refcount_dec_and_test(&cb->pending_ios))815 if (refcount_dec_and_test(&cb->pending_ios))
fs/btrfs/ctree.c+16−0
@@ -113,6 +113,22 @@ noinline void btrfs_release_path(struct btrfs_path *p) · 112 unmodified lines
113 }113 }
114}114}
115 115
116/*
117 * We want the transaction abort to print stack trace only for errors where the
118 * cause could be a bug, eg. due to ENOSPC, and not for common errors that are
119 * caused by external factors.
120 */
121bool __cold abort_should_print_stack(int errno)
122{
123 switch (errno) {
124 case -EIO:
125 case -EROFS:
126 case -ENOMEM:
127 return false;
128 }
129 return true;
130}
131
116/*132/*
117 * safely gets a reference on the root node of a tree. A lock133 * safely gets a reference on the root node of a tree. A lock
118 * is not taken, so a concurrent writer may put a different node134 * is not taken, so a concurrent writer may put a different node
fs/btrfs/ctree.h+7−4
@@ -3796,9 +3796,11 @@ void __btrfs_abort_transaction(struct btrfs_trans_handle *trans, · 3795 unmodified lines
3796 const char *function,3796 const char *function,
3797 unsigned int line, int errno, bool first_hit);3797 unsigned int line, int errno, bool first_hit);
3798 3798
3799bool __cold abort_should_print_stack(int errno);
3800
3799/*3801/*
3800 * Call btrfs_abort_transaction as early as possible when an error condition is3802 * Call btrfs_abort_transaction as early as possible when an error condition is
3801 * detected, that way the exact line number is reported.3803 * detected, that way the exact stack trace is reported for some errors.
3802 */3804 */
3803#define btrfs_abort_transaction(trans, errno) \3805#define btrfs_abort_transaction(trans, errno) \
3804do { \3806do { \
@@ -3807,10 +3809,11 @@ do { \ · 2 unmodified lines
3807 if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED, \3809 if (!test_and_set_bit(BTRFS_FS_STATE_TRANS_ABORTED, \
3808 &((trans)->fs_info->fs_state))) { \3810 &((trans)->fs_info->fs_state))) { \
3809 first = true; \3811 first = true; \
3810 if ((errno) != -EIO && (errno) != -EROFS) { \3812 if (WARN(abort_should_print_stack(errno), \
3811 WARN(1, KERN_DEBUG \3813 KERN_DEBUG \
3812 "BTRFS: Transaction aborted (error %d)\n", \3814 "BTRFS: Transaction aborted (error %d)\n", \
3813 (errno)); \3815 (errno))) { \
3816 /* Stack trace printed. */ \
3814 } else { \3817 } else { \
3815 btrfs_debug((trans)->fs_info, \3818 btrfs_debug((trans)->fs_info, \
3816 "Transaction aborted (error %d)", \3819 "Transaction aborted (error %d)", \
fs/btrfs/disk-io.c+3−1
@@ -2551,7 +2551,9 @@ static int btrfs_read_roots(struct btrfs_fs_info *fs_info) · 2550 unmodified lines
2551 fs_info->dev_root = root;2551 fs_info->dev_root = root;
2552 }2552 }
2553 /* Initialize fs_info for all devices in any case */2553 /* Initialize fs_info for all devices in any case */
2554 btrfs_init_devices_late(fs_info);2554 ret = btrfs_init_devices_late(fs_info);
2555 if (ret)
2556 goto out;
2555 2557
2556 /*2558 /*
2557 * This tree can share blocks with some other fs tree during relocation2559 * This tree can share blocks with some other fs tree during relocation
fs/btrfs/scrub.c+1−8
@@ -2672,17 +2672,11 @@ static int scrub_extent(struct scrub_ctx *sctx, struct map_lookup *map, · 2671 unmodified lines
2672 u8 csum[BTRFS_CSUM_SIZE];2672 u8 csum[BTRFS_CSUM_SIZE];
2673 u32 blocksize;2673 u32 blocksize;
2674 2674
2675 /*
2676 * Block size determines how many scrub_block will be allocated. Here
2677 * we use BTRFS_STRIPE_LEN (64KiB) as default limit, so we won't
2678 * allocate too many scrub_block, while still won't cause too large
2679 * bios for large extents.
2680 */
2681 if (flags & BTRFS_EXTENT_FLAG_DATA) {2675 if (flags & BTRFS_EXTENT_FLAG_DATA) {
2682 if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK)2676 if (map->type & BTRFS_BLOCK_GROUP_RAID56_MASK)
2683 blocksize = map->stripe_len;2677 blocksize = map->stripe_len;
2684 else2678 else
2685 blocksize = BTRFS_STRIPE_LEN;2679 blocksize = sctx->fs_info->sectorsize;
2686 spin_lock(&sctx->stat_lock);2680 spin_lock(&sctx->stat_lock);
2687 sctx->stat.data_extents_scrubbed++;2681 sctx->stat.data_extents_scrubbed++;
2688 sctx->stat.data_bytes_scrubbed += len;2682 sctx->stat.data_bytes_scrubbed += len;
@@ -3917,7 +3911,6 @@ int scrub_enumerate_chunks(struct scrub_ctx *sctx, · 1228 unmodified lines
3917 3911
3918 if (sctx->is_dev_replace && btrfs_is_zoned(fs_info)) {3912 if (sctx->is_dev_replace && btrfs_is_zoned(fs_info)) {
3919 if (!test_bit(BLOCK_GROUP_FLAG_TO_COPY, &cache->runtime_flags)) {3913 if (!test_bit(BLOCK_GROUP_FLAG_TO_COPY, &cache->runtime_flags)) {
3920 spin_unlock(&cache->lock);
3921 btrfs_put_block_group(cache);3914 btrfs_put_block_group(cache);
3922 goto skip;3915 goto skip;
3923 }3916 }
fs/btrfs/tests/btrfs-tests.c+1−1
@@ -200,7 +200,7 @@ void btrfs_free_dummy_fs_info(struct btrfs_fs_info *fs_info) · 199 unmodified lines
200 200
201void btrfs_free_dummy_root(struct btrfs_root *root)201void btrfs_free_dummy_root(struct btrfs_root *root)
202{202{
203 if (!root)203 if (IS_ERR_OR_NULL(root))
204 return;204 return;
205 /* Will be freed by btrfs_free_fs_roots */205 /* Will be freed by btrfs_free_fs_roots */
206 if (WARN_ON(test_bit(BTRFS_ROOT_IN_RADIX, &root->state)))206 if (WARN_ON(test_bit(BTRFS_ROOT_IN_RADIX, &root->state)))
fs/btrfs/volumes.c+29−10
@@ -1011,6 +1011,18 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig) · 1010 unmodified lines
1011 rcu_assign_pointer(device->name, name);1011 rcu_assign_pointer(device->name, name);
1012 }1012 }
1013 1013
1014 if (orig_dev->zone_info) {
1015 struct btrfs_zoned_device_info *zone_info;
1016
1017 zone_info = btrfs_clone_dev_zone_info(orig_dev);
1018 if (!zone_info) {
1019 btrfs_free_device(device);
1020 ret = -ENOMEM;
1021 goto error;
1022 }
1023 device->zone_info = zone_info;
1024 }
1025
1014 list_add(&device->dev_list, &fs_devices->devices);1026 list_add(&device->dev_list, &fs_devices->devices);
1015 device->fs_devices = fs_devices;1027 device->fs_devices = fs_devices;
1016 fs_devices->num_devices++;1028 fs_devices->num_devices++;
@@ -6918,18 +6930,18 @@ static bool dev_args_match_fs_devices(const struct btrfs_dev_lookup_args *args, · 5901 unmodified lines
6918static bool dev_args_match_device(const struct btrfs_dev_lookup_args *args,6930static bool dev_args_match_device(const struct btrfs_dev_lookup_args *args,
6919 const struct btrfs_device *device)6931 const struct btrfs_device *device)
6920{6932{
6921 ASSERT((args->devid != (u64)-1) || args->missing);6933 if (args->missing) {
6934 if (test_bit(BTRFS_DEV_STATE_IN_FS_METADATA, &device->dev_state) &&
6935 !device->bdev)
6936 return true;
6937 return false;
6938 }
6922 6939
6923 if ((args->devid != (u64)-1) && device->devid != args->devid)6940 if (device->devid != args->devid)
6924 return false;6941 return false;
6925 if (args->uuid && memcmp(device->uuid, args->uuid, BTRFS_UUID_SIZE) != 0)6942 if (args->uuid && memcmp(device->uuid, args->uuid, BTRFS_UUID_SIZE) != 0)
6926 return false;6943 return false;
6927 if (!args->missing)6944 return true;
6928 return true;
6929 if (test_bit(BTRFS_DEV_STATE_IN_FS_METADATA, &device->dev_state) &&
6930 !device->bdev)
6931 return true;
6932 return false;
6933}6945}
6934 6946
6935/*6947/*
@@ -7744,10 +7756,11 @@ error: · 808 unmodified lines
7744 return ret;7756 return ret;
7745}7757}
7746 7758
7747void btrfs_init_devices_late(struct btrfs_fs_info *fs_info)7759int btrfs_init_devices_late(struct btrfs_fs_info *fs_info)
7748{7760{
7749 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices, *seed_devs;7761 struct btrfs_fs_devices *fs_devices = fs_info->fs_devices, *seed_devs;
7750 struct btrfs_device *device;7762 struct btrfs_device *device;
7763 int ret = 0;
7751 7764
7752 fs_devices->fs_info = fs_info;7765 fs_devices->fs_info = fs_info;
7753 7766
@@ -7756,12 +7769,18 @@ void btrfs_init_devices_late(struct btrfs_fs_info *fs_info) · 2 unmodified lines
7756 device->fs_info = fs_info;7769 device->fs_info = fs_info;
7757 7770
7758 list_for_each_entry(seed_devs, &fs_devices->seed_list, seed_list) {7771 list_for_each_entry(seed_devs, &fs_devices->seed_list, seed_list) {
7759 list_for_each_entry(device, &seed_devs->devices, dev_list)7772 list_for_each_entry(device, &seed_devs->devices, dev_list) {
7760 device->fs_info = fs_info;7773 device->fs_info = fs_info;
7774 ret = btrfs_get_dev_zone_info(device, false);
7775 if (ret)
7776 break;
7777 }
7761 7778
7762 seed_devs->fs_info = fs_info;7779 seed_devs->fs_info = fs_info;
7763 }7780 }
7764 mutex_unlock(&fs_devices->device_list_mutex);7781 mutex_unlock(&fs_devices->device_list_mutex);
7782
7783 return ret;
7765}7784}
7766 7785
7767static u64 btrfs_dev_stats_value(const struct extent_buffer *eb,7786static u64 btrfs_dev_stats_value(const struct extent_buffer *eb,
fs/btrfs/volumes.h+1−1
@@ -671,7 +671,7 @@ int find_free_dev_extent(struct btrfs_device *device, u64 num_bytes, · 670 unmodified lines
671void btrfs_dev_stat_inc_and_print(struct btrfs_device *dev, int index);671void btrfs_dev_stat_inc_and_print(struct btrfs_device *dev, int index);
672int btrfs_get_dev_stats(struct btrfs_fs_info *fs_info,672int btrfs_get_dev_stats(struct btrfs_fs_info *fs_info,
673 struct btrfs_ioctl_get_dev_stats *stats);673 struct btrfs_ioctl_get_dev_stats *stats);
674void btrfs_init_devices_late(struct btrfs_fs_info *fs_info);674int btrfs_init_devices_late(struct btrfs_fs_info *fs_info);
675int btrfs_init_dev_stats(struct btrfs_fs_info *fs_info);675int btrfs_init_dev_stats(struct btrfs_fs_info *fs_info);
676int btrfs_run_dev_stats(struct btrfs_trans_handle *trans);676int btrfs_run_dev_stats(struct btrfs_trans_handle *trans);
677void btrfs_rm_dev_replace_remove_srcdev(struct btrfs_device *srcdev);677void btrfs_rm_dev_replace_remove_srcdev(struct btrfs_device *srcdev);
fs/btrfs/zoned.c+40−0
@@ -639,6 +639,46 @@ void btrfs_destroy_dev_zone_info(struct btrfs_device *device) · 638 unmodified lines
639 device->zone_info = NULL;639 device->zone_info = NULL;
640}640}
641 641
642struct btrfs_zoned_device_info *btrfs_clone_dev_zone_info(struct btrfs_device *orig_dev)
643{
644 struct btrfs_zoned_device_info *zone_info;
645
646 zone_info = kmemdup(orig_dev->zone_info, sizeof(*zone_info), GFP_KERNEL);
647 if (!zone_info)
648 return NULL;
649
650 zone_info->seq_zones = bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
651 if (!zone_info->seq_zones)
652 goto out;
653
654 bitmap_copy(zone_info->seq_zones, orig_dev->zone_info->seq_zones,
655 zone_info->nr_zones);
656
657 zone_info->empty_zones = bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
658 if (!zone_info->empty_zones)
659 goto out;
660
661 bitmap_copy(zone_info->empty_zones, orig_dev->zone_info->empty_zones,
662 zone_info->nr_zones);
663
664 zone_info->active_zones = bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
665 if (!zone_info->active_zones)
666 goto out;
667
668 bitmap_copy(zone_info->active_zones, orig_dev->zone_info->active_zones,
669 zone_info->nr_zones);
670 zone_info->zone_cache = NULL;
671
672 return zone_info;
673
674out:
675 bitmap_free(zone_info->seq_zones);
676 bitmap_free(zone_info->empty_zones);
677 bitmap_free(zone_info->active_zones);
678 kfree(zone_info);
679 return NULL;
680}
681
642int btrfs_get_dev_zone(struct btrfs_device *device, u64 pos,682int btrfs_get_dev_zone(struct btrfs_device *device, u64 pos,
643 struct blk_zone *zone)683 struct blk_zone *zone)
644{684{
fs/btrfs/zoned.h+11−0
@@ -36,6 +36,7 @@ int btrfs_get_dev_zone(struct btrfs_device *device, u64 pos, · 35 unmodified lines
36int btrfs_get_dev_zone_info_all_devices(struct btrfs_fs_info *fs_info);36int btrfs_get_dev_zone_info_all_devices(struct btrfs_fs_info *fs_info);
37int btrfs_get_dev_zone_info(struct btrfs_device *device, bool populate_cache);37int btrfs_get_dev_zone_info(struct btrfs_device *device, bool populate_cache);
38void btrfs_destroy_dev_zone_info(struct btrfs_device *device);38void btrfs_destroy_dev_zone_info(struct btrfs_device *device);
39struct btrfs_zoned_device_info *btrfs_clone_dev_zone_info(struct btrfs_device *orig_dev);
39int btrfs_check_zoned_mode(struct btrfs_fs_info *fs_info);40int btrfs_check_zoned_mode(struct btrfs_fs_info *fs_info);
40int btrfs_check_mountopts_zoned(struct btrfs_fs_info *info);41int btrfs_check_mountopts_zoned(struct btrfs_fs_info *info);
41int btrfs_sb_log_location_bdev(struct block_device *bdev, int mirror, int rw,42int btrfs_sb_log_location_bdev(struct block_device *bdev, int mirror, int rw,
@@ -103,6 +104,16 @@ static inline int btrfs_get_dev_zone_info(struct btrfs_device *device, · 61 unmodified lines
103 104
104static inline void btrfs_destroy_dev_zone_info(struct btrfs_device *device) { }105static inline void btrfs_destroy_dev_zone_info(struct btrfs_device *device) { }
105 106
107/*
108 * In case the kernel is compiled without CONFIG_BLK_DEV_ZONED we'll never call
109 * into btrfs_clone_dev_zone_info() so it's safe to return NULL here.
110 */
111static inline struct btrfs_zoned_device_info *btrfs_clone_dev_zone_info(
112 struct btrfs_device *orig_dev)
113{
114 return NULL;
115}
116
106static inline int btrfs_check_zoned_mode(const struct btrfs_fs_info *fs_info)117static inline int btrfs_check_zoned_mode(const struct btrfs_fs_info *fs_info)
107{118{
108 if (!btrfs_is_zoned(fs_info))119 if (!btrfs_is_zoned(fs_info))
fs/erofs/zdata.c+11−7
@@ -1412,8 +1412,8 @@ static void z_erofs_submit_queue(struct z_erofs_decompress_frontend *f, · 1411 unmodified lines
1412 struct block_device *last_bdev;1412 struct block_device *last_bdev;
1413 unsigned int nr_bios = 0;1413 unsigned int nr_bios = 0;
1414 struct bio *bio = NULL;1414 struct bio *bio = NULL;
1415 /* initialize to 1 to make skip psi_memstall_leave unless needed */1415 unsigned long pflags;
1416 unsigned long pflags = 1;1416 int memstall = 0;
1417 1417
1418 bi_private = jobqueueset_init(sb, q, fgq, force_fg);1418 bi_private = jobqueueset_init(sb, q, fgq, force_fg);
1419 qtail[JQ_BYPASS] = &q[JQ_BYPASS]->head;1419 qtail[JQ_BYPASS] = &q[JQ_BYPASS]->head;
@@ -1463,14 +1463,18 @@ static void z_erofs_submit_queue(struct z_erofs_decompress_frontend *f, · 43 unmodified lines
1463 if (bio && (cur != last_index + 1 ||1463 if (bio && (cur != last_index + 1 ||
1464 last_bdev != mdev.m_bdev)) {1464 last_bdev != mdev.m_bdev)) {
1465submit_bio_retry:1465submit_bio_retry:
1466 if (!pflags)
1467 psi_memstall_leave(&pflags);
1468 submit_bio(bio);1466 submit_bio(bio);
1467 if (memstall) {
1468 psi_memstall_leave(&pflags);
1469 memstall = 0;
1470 }
1469 bio = NULL;1471 bio = NULL;
1470 }1472 }
1471 1473
1472 if (unlikely(PageWorkingset(page)))1474 if (unlikely(PageWorkingset(page)) && !memstall) {
1473 psi_memstall_enter(&pflags);1475 psi_memstall_enter(&pflags);
1476 memstall = 1;
1477 }
1474 1478
1475 if (!bio) {1479 if (!bio) {
1476 bio = bio_alloc(mdev.m_bdev, BIO_MAX_VECS,1480 bio = bio_alloc(mdev.m_bdev, BIO_MAX_VECS,
@@ -1500,9 +1504,9 @@ submit_bio_retry: · 23 unmodified lines
1500 } while (owned_head != Z_EROFS_PCLUSTER_TAIL);1504 } while (owned_head != Z_EROFS_PCLUSTER_TAIL);
1501 1505
1502 if (bio) {1506 if (bio) {
1503 if (!pflags)
1504 psi_memstall_leave(&pflags);
1505 submit_bio(bio);1507 submit_bio(bio);
1508 if (memstall)
1509 psi_memstall_leave(&pflags);
1506 }1510 }
1507 1511
1508 /*1512 /*
fs/hugetlbfs/inode.c+6−7
@@ -328,6 +328,12 @@ static ssize_t hugetlbfs_read_iter(struct kiocb *iocb, struct iov_iter *to) · 327 unmodified lines
328 } else {328 } else {
329 unlock_page(page);329 unlock_page(page);
330 330
331 if (PageHWPoison(page)) {
332 put_page(page);
333 retval = -EIO;
334 break;
335 }
336
331 /*337 /*
332 * We have the page, copy it to user space buffer.338 * We have the page, copy it to user space buffer.
333 */339 */
@@ -1111,13 +1117,6 @@ static int hugetlbfs_migrate_folio(struct address_space *mapping, · 777 unmodified lines
1111static int hugetlbfs_error_remove_page(struct address_space *mapping,1117static int hugetlbfs_error_remove_page(struct address_space *mapping,
1112 struct page *page)1118 struct page *page)
1113{1119{
1114 struct inode *inode = mapping->host;
1115 pgoff_t index = page->index;
1116
1117 hugetlb_delete_from_page_cache(page);
1118 if (unlikely(hugetlb_unreserve_pages(inode, index, index + 1, 1)))
1119 hugetlb_fix_reserve_counts(inode);
1120
1121 return 0;1120 return 0;
1122}1121}
1123 1122
fs/nfsd/filecache.c+1−0
@@ -1076,6 +1076,7 @@ retry: · 1075 unmodified lines
1076 goto open_file;1076 goto open_file;
1077 1077
1078 nfsd_file_slab_free(&nf->nf_rcu);1078 nfsd_file_slab_free(&nf->nf_rcu);
1079 nf = NULL;
1079 if (ret == -EEXIST)1080 if (ret == -EEXIST)
1080 goto retry;1081 goto retry;
1081 trace_nfsd_file_insert_err(rqstp, key.inode, may_flags, ret);1082 trace_nfsd_file_insert_err(rqstp, key.inode, may_flags, ret);
fs/nfsd/nfs4state.c+1−0
@@ -5382,6 +5382,7 @@ nfsd4_verify_deleg_dentry(struct nfsd4_open *open, struct nfs4_file *fp, · 5381 unmodified lines
5382 if (err)5382 if (err)
5383 return -EAGAIN;5383 return -EAGAIN;
5384 5384
5385 exp_put(exp);
5385 dput(child);5386 dput(child);
5386 if (child != file_dentry(fp->fi_deleg_file->nf_file))5387 if (child != file_dentry(fp->fi_deleg_file->nf_file))
5387 return -EAGAIN;5388 return -EAGAIN;
fs/nilfs2/segment.c+8−7
@@ -317,7 +317,7 @@ void nilfs_relax_pressure_in_lock(struct super_block *sb) · 316 unmodified lines
317 struct the_nilfs *nilfs = sb->s_fs_info;317 struct the_nilfs *nilfs = sb->s_fs_info;
318 struct nilfs_sc_info *sci = nilfs->ns_writer;318 struct nilfs_sc_info *sci = nilfs->ns_writer;
319 319
320 if (!sci || !sci->sc_flush_request)320 if (sb_rdonly(sb) || unlikely(!sci) || !sci->sc_flush_request)
321 return;321 return;
322 322
323 set_bit(NILFS_SC_PRIOR_FLUSH, &sci->sc_flags);323 set_bit(NILFS_SC_PRIOR_FLUSH, &sci->sc_flags);
@@ -2242,7 +2242,7 @@ int nilfs_construct_segment(struct super_block *sb) · 1918 unmodified lines
2242 struct nilfs_sc_info *sci = nilfs->ns_writer;2242 struct nilfs_sc_info *sci = nilfs->ns_writer;
2243 struct nilfs_transaction_info *ti;2243 struct nilfs_transaction_info *ti;
2244 2244
2245 if (!sci)2245 if (sb_rdonly(sb) || unlikely(!sci))
2246 return -EROFS;2246 return -EROFS;
2247 2247
2248 /* A call inside transactions causes a deadlock. */2248 /* A call inside transactions causes a deadlock. */
@@ -2280,7 +2280,7 @@ int nilfs_construct_dsync_segment(struct super_block *sb, struct inode *inode, · 31 unmodified lines
2280 struct nilfs_transaction_info ti;2280 struct nilfs_transaction_info ti;
2281 int err = 0;2281 int err = 0;
2282 2282
2283 if (!sci)2283 if (sb_rdonly(sb) || unlikely(!sci))
2284 return -EROFS;2284 return -EROFS;
2285 2285
2286 nilfs_transaction_lock(sb, &ti, 0);2286 nilfs_transaction_lock(sb, &ti, 0);
@@ -2776,11 +2776,12 @@ int nilfs_attach_log_writer(struct super_block *sb, struct nilfs_root *root) · 489 unmodified lines
2776 2776
2777 if (nilfs->ns_writer) {2777 if (nilfs->ns_writer) {
2778 /*2778 /*
2779 * This happens if the filesystem was remounted2779 * This happens if the filesystem is made read-only by
2780 * read/write after nilfs_error degenerated it into a2780 * __nilfs_error or nilfs_remount and then remounted
2781 * read-only mount.2781 * read/write. In these cases, reuse the existing
2782 * writer.
2782 */2783 */
2783 nilfs_detach_log_writer(sb);2784 return 0;
2784 }2785 }
2785 2786
2786 nilfs->ns_writer = nilfs_segctor_new(sb, root);2787 nilfs->ns_writer = nilfs_segctor_new(sb, root);
fs/nilfs2/super.c+0−2
@@ -1133,8 +1133,6 @@ static int nilfs_remount(struct super_block *sb, int *flags, char *data) · 1132 unmodified lines
1133 if ((bool)(*flags & SB_RDONLY) == sb_rdonly(sb))1133 if ((bool)(*flags & SB_RDONLY) == sb_rdonly(sb))
1134 goto out;1134 goto out;
1135 if (*flags & SB_RDONLY) {1135 if (*flags & SB_RDONLY) {
1136 /* Shutting down log writer */
1137 nilfs_detach_log_writer(sb);
1138 sb->s_flags |= SB_RDONLY;1136 sb->s_flags |= SB_RDONLY;
1139 1137
1140 /*1138 /*
fs/nilfs2/the_nilfs.c+0−2
@@ -690,9 +690,7 @@ int nilfs_count_free_blocks(struct the_nilfs *nilfs, sector_t *nblocks) · 689 unmodified lines
690{690{
691 unsigned long ncleansegs;691 unsigned long ncleansegs;
692 692
693 down_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem);
694 ncleansegs = nilfs_sufile_get_ncleansegs(nilfs->ns_sufile);693 ncleansegs = nilfs_sufile_get_ncleansegs(nilfs->ns_sufile);
695 up_read(&NILFS_MDT(nilfs->ns_dat)->mi_sem);
696 *nblocks = (sector_t)ncleansegs * nilfs->ns_blocks_per_segment;694 *nblocks = (sector_t)ncleansegs * nilfs->ns_blocks_per_segment;
697 return 0;695 return 0;
698}696}
fs/udf/namei.c+1−1
@@ -240,7 +240,7 @@ static struct fileIdentDesc *udf_find_entry(struct inode *dir, · 239 unmodified lines
240 poffset - lfi);240 poffset - lfi);
241 else {241 else {
242 if (!copy_name) {242 if (!copy_name) {
243 copy_name = kmalloc(UDF_NAME_LEN,243 copy_name = kmalloc(UDF_NAME_LEN_CS0,
244 GFP_NOFS);244 GFP_NOFS);
245 if (!copy_name) {245 if (!copy_name) {
246 fi = ERR_PTR(-ENOMEM);246 fi = ERR_PTR(-ENOMEM);
fs/userfaultfd.c+3−0
@@ -1630,17 +1630,20 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx, · 1629 unmodified lines
1630 NULL_VM_UFFD_CTX, anon_vma_name(vma));1630 NULL_VM_UFFD_CTX, anon_vma_name(vma));
1631 if (prev) {1631 if (prev) {
1632 vma = prev;1632 vma = prev;
1633 mas_pause(&mas);
1633 goto next;1634 goto next;
1634 }1635 }
1635 if (vma->vm_start < start) {1636 if (vma->vm_start < start) {
1636 ret = split_vma(mm, vma, start, 1);1637 ret = split_vma(mm, vma, start, 1);
1637 if (ret)1638 if (ret)
1638 break;1639 break;
1640 mas_pause(&mas);
1639 }1641 }
1640 if (vma->vm_end > end) {1642 if (vma->vm_end > end) {
1641 ret = split_vma(mm, vma, end, 0);1643 ret = split_vma(mm, vma, end, 0);
1642 if (ret)1644 if (ret)
1643 break;1645 break;
1646 mas_pause(&mas);
1644 }1647 }
1645 next:1648 next:
1646 /*1649 /*
include/asm-generic/hyperv-tlfs.h+9−0
@@ -102,6 +102,15 @@ struct ms_hyperv_tsc_page { · 101 unmodified lines
102 volatile s64 tsc_offset;102 volatile s64 tsc_offset;
103} __packed;103} __packed;
104 104
105union hv_reference_tsc_msr {
106 u64 as_uint64;
107 struct {
108 u64 enable:1;
109 u64 reserved:11;
110 u64 pfn:52;
111 } __packed;
112};
113
105/*114/*
106 * The guest OS needs to register the guest ID with the hypervisor.115 * The guest OS needs to register the guest ID with the hypervisor.
107 * The guest ID is a 64 bit entity and the structure of this ID is116 * The guest ID is a 64 bit entity and the structure of this ID is
include/asm-generic/vmlinux.lds.h+1−1
@@ -347,6 +347,7 @@ · 346 unmodified lines
347#define DATA_DATA \347#define DATA_DATA \
348 *(.xiptext) \348 *(.xiptext) \
349 *(DATA_MAIN) \349 *(DATA_MAIN) \
350 *(.data..decrypted) \
350 *(.ref.data) \351 *(.ref.data) \
351 *(.data..shared_aligned) /* percpu related */ \352 *(.data..shared_aligned) /* percpu related */ \
352 MEM_KEEP(init.data*) \353 MEM_KEEP(init.data*) \
@@ -995,7 +996,6 @@ · 642 unmodified lines
995#ifdef CONFIG_AMD_MEM_ENCRYPT996#ifdef CONFIG_AMD_MEM_ENCRYPT
996#define PERCPU_DECRYPTED_SECTION \997#define PERCPU_DECRYPTED_SECTION \
997 . = ALIGN(PAGE_SIZE); \998 . = ALIGN(PAGE_SIZE); \
998 *(.data..decrypted) \
999 *(.data..percpu..decrypted) \999 *(.data..percpu..decrypted) \
1000 . = ALIGN(PAGE_SIZE);1000 . = ALIGN(PAGE_SIZE);
1001#else1001#else
include/linux/can/dev.h+16−0
@@ -152,6 +152,22 @@ static inline bool can_is_canxl_dev_mtu(unsigned int mtu) · 151 unmodified lines
152 return (mtu >= CANXL_MIN_MTU && mtu <= CANXL_MAX_MTU);152 return (mtu >= CANXL_MIN_MTU && mtu <= CANXL_MAX_MTU);
153}153}
154 154
155/* drop skb if it does not contain a valid CAN frame for sending */
156static inline bool can_dev_dropped_skb(struct net_device *dev, struct sk_buff *skb)
157{
158 struct can_priv *priv = netdev_priv(dev);
159
160 if (priv->ctrlmode & CAN_CTRLMODE_LISTENONLY) {
161 netdev_info_once(dev,
162 "interface in listen only mode, dropping skb\n");
163 kfree_skb(skb);
164 dev->stats.tx_dropped++;
165 return true;
166 }
167
168 return can_dropped_invalid_skb(dev, skb);
169}
170
155void can_setup(struct net_device *dev);171void can_setup(struct net_device *dev);
156 172
157struct net_device *alloc_candev_mqs(int sizeof_priv, unsigned int echo_skb_max,173struct net_device *alloc_candev_mqs(int sizeof_priv, unsigned int echo_skb_max,
include/linux/efi.h+1−0
@@ -389,6 +389,7 @@ void efi_native_runtime_setup(void); · 388 unmodified lines
389#define EFI_LOAD_FILE2_PROTOCOL_GUID EFI_GUID(0x4006c0c1, 0xfcb3, 0x403e, 0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d)389#define EFI_LOAD_FILE2_PROTOCOL_GUID EFI_GUID(0x4006c0c1, 0xfcb3, 0x403e, 0x99, 0x6d, 0x4a, 0x6c, 0x87, 0x24, 0xe0, 0x6d)
390#define EFI_RT_PROPERTIES_TABLE_GUID EFI_GUID(0xeb66918a, 0x7eef, 0x402a, 0x84, 0x2e, 0x93, 0x1d, 0x21, 0xc3, 0x8a, 0xe9)390#define EFI_RT_PROPERTIES_TABLE_GUID EFI_GUID(0xeb66918a, 0x7eef, 0x402a, 0x84, 0x2e, 0x93, 0x1d, 0x21, 0xc3, 0x8a, 0xe9)
391#define EFI_DXE_SERVICES_TABLE_GUID EFI_GUID(0x05ad34ba, 0x6f02, 0x4214, 0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9)391#define EFI_DXE_SERVICES_TABLE_GUID EFI_GUID(0x05ad34ba, 0x6f02, 0x4214, 0x95, 0x2e, 0x4d, 0xa0, 0x39, 0x8e, 0x2b, 0xb9)
392#define EFI_SMBIOS_PROTOCOL_GUID EFI_GUID(0x03583ff6, 0xcb36, 0x4940, 0x94, 0x7e, 0xb9, 0xb3, 0x9f, 0x4a, 0xfa, 0xf7)
392 393
393#define EFI_IMAGE_SECURITY_DATABASE_GUID EFI_GUID(0xd719b2cb, 0x3d3a, 0x4596, 0xa3, 0xbc, 0xda, 0xd0, 0x0e, 0x67, 0x65, 0x6f)394#define EFI_IMAGE_SECURITY_DATABASE_GUID EFI_GUID(0xd719b2cb, 0x3d3a, 0x4596, 0xa3, 0xbc, 0xda, 0xd0, 0x0e, 0x67, 0x65, 0x6f)
394#define EFI_SHIM_LOCK_GUID EFI_GUID(0x605dab50, 0xe046, 0x4300, 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23)395#define EFI_SHIM_LOCK_GUID EFI_GUID(0x605dab50, 0xe046, 0x4300, 0xab, 0xb6, 0x3d, 0xd8, 0x10, 0xdd, 0x8b, 0x23)
include/linux/maple_tree.h+7−0
@@ -638,6 +638,12 @@ static inline void mt_set_in_rcu(struct maple_tree *mt) · 637 unmodified lines
638 }638 }
639}639}
640 640
641static inline unsigned int mt_height(const struct maple_tree *mt)
642
643{
644 return (mt->ma_flags & MT_FLAGS_HEIGHT_MASK) >> MT_FLAGS_HEIGHT_OFFSET;
645}
646
641void *mt_find(struct maple_tree *mt, unsigned long *index, unsigned long max);647void *mt_find(struct maple_tree *mt, unsigned long *index, unsigned long max);
642void *mt_find_after(struct maple_tree *mt, unsigned long *index,648void *mt_find_after(struct maple_tree *mt, unsigned long *index,
643 unsigned long max);649 unsigned long max);
@@ -664,6 +670,7 @@ extern atomic_t maple_tree_tests_passed; · 20 unmodified lines
664 670
665void mt_dump(const struct maple_tree *mt);671void mt_dump(const struct maple_tree *mt);
666void mt_validate(struct maple_tree *mt);672void mt_validate(struct maple_tree *mt);
673void mt_cache_shrink(void);
667#define MT_BUG_ON(__tree, __x) do { \674#define MT_BUG_ON(__tree, __x) do { \
668 atomic_inc(&maple_tree_tests_run); \675 atomic_inc(&maple_tree_tests_run); \
669 if (__x) { \676 if (__x) { \
include/linux/skmsg.h+1−1
@@ -376,7 +376,7 @@ static inline void sk_psock_report_error(struct sk_psock *psock, int err) · 375 unmodified lines
376}376}
377 377
378struct sk_psock *sk_psock_init(struct sock *sk, int node);378struct sk_psock *sk_psock_init(struct sock *sk, int node);
379void sk_psock_stop(struct sk_psock *psock, bool wait);379void sk_psock_stop(struct sk_psock *psock);
380 380
381#if IS_ENABLED(CONFIG_BPF_STREAM_PARSER)381#if IS_ENABLED(CONFIG_BPF_STREAM_PARSER)
382int sk_psock_init_strp(struct sock *sk, struct sk_psock *psock);382int sk_psock_init_strp(struct sock *sk, struct sk_psock *psock);
include/linux/slab.h+0−23
@@ -470,35 +470,12 @@ void *__kmalloc_node(size_t size, gfp_t flags, int node) __assume_kmalloc_alignm · 469 unmodified lines
470void *kmem_cache_alloc_node(struct kmem_cache *s, gfp_t flags, int node) __assume_slab_alignment470void *kmem_cache_alloc_node(struct kmem_cache *s, gfp_t flags, int node) __assume_slab_alignment
471 __malloc;471 __malloc;
472 472
473#ifdef CONFIG_TRACING
474void *kmalloc_trace(struct kmem_cache *s, gfp_t flags, size_t size)473void *kmalloc_trace(struct kmem_cache *s, gfp_t flags, size_t size)
475 __assume_kmalloc_alignment __alloc_size(3);474 __assume_kmalloc_alignment __alloc_size(3);
476 475
477void *kmalloc_node_trace(struct kmem_cache *s, gfp_t gfpflags,476void *kmalloc_node_trace(struct kmem_cache *s, gfp_t gfpflags,
478 int node, size_t size) __assume_kmalloc_alignment477 int node, size_t size) __assume_kmalloc_alignment
479 __alloc_size(4);478 __alloc_size(4);
480#else /* CONFIG_TRACING */
481/* Save a function call when CONFIG_TRACING=n */
482static __always_inline __alloc_size(3)
483void *kmalloc_trace(struct kmem_cache *s, gfp_t flags, size_t size)
484{
485 void *ret = kmem_cache_alloc(s, flags);
486
487 ret = kasan_kmalloc(s, ret, size, flags);
488 return ret;
489}
490
491static __always_inline __alloc_size(4)
492void *kmalloc_node_trace(struct kmem_cache *s, gfp_t gfpflags,
493 int node, size_t size)
494{
495 void *ret = kmem_cache_alloc_node(s, gfpflags, node);
496
497 ret = kasan_kmalloc(s, ret, size, gfpflags);
498 return ret;
499}
500#endif /* CONFIG_TRACING */
501
502void *kmalloc_large(size_t size, gfp_t flags) __assume_page_alignment479void *kmalloc_large(size_t size, gfp_t flags) __assume_page_alignment
503 __alloc_size(1);480 __alloc_size(1);
504 481
include/uapi/drm/panfrost_drm.h+1−1
@@ -254,7 +254,7 @@ struct panfrost_dump_object_header { · 253 unmodified lines
254 __u64 nbos;254 __u64 nbos;
255 } reghdr;255 } reghdr;
256 256
257 struct pan_bomap_hdr {257 struct {
258 __u32 valid;258 __u32 valid;
259 __u64 iova;259 __u64 iova;
260 __u32 data[2];260 __u32 data[2];
include/uapi/linux/audit.h+1−1
@@ -187,7 +187,7 @@ · 186 unmodified lines
187#define AUDIT_MAX_KEY_LEN 256187#define AUDIT_MAX_KEY_LEN 256
188#define AUDIT_BITMASK_SIZE 64188#define AUDIT_BITMASK_SIZE 64
189#define AUDIT_WORD(nr) ((__u32)((nr)/32))189#define AUDIT_WORD(nr) ((__u32)((nr)/32))
190#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr)*32))190#define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr)*32))
191 191
192#define AUDIT_SYSCALL_CLASSES 16192#define AUDIT_SYSCALL_CLASSES 16
193#define AUDIT_CLASS_DIR_WRITE 0193#define AUDIT_CLASS_DIR_WRITE 0
include/uapi/linux/capability.h+1−1
@@ -426,7 +426,7 @@ struct vfs_ns_cap_data { · 425 unmodified lines
426 */426 */
427 427
428#define CAP_TO_INDEX(x) ((x) >> 5) /* 1 << 5 == bits in __u32 */428#define CAP_TO_INDEX(x) ((x) >> 5) /* 1 << 5 == bits in __u32 */
429#define CAP_TO_MASK(x) (1 << ((x) & 31)) /* mask for indexed __u32 */429#define CAP_TO_MASK(x) (1U << ((x) & 31)) /* mask for indexed __u32 */
430 430
431 431
432#endif /* _UAPI_LINUX_CAPABILITY_H */432#endif /* _UAPI_LINUX_CAPABILITY_H */
include/uapi/linux/idxd.h+1−0
@@ -29,6 +29,7 @@ enum idxd_scmd_stat { · 28 unmodified lines
29 IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,29 IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,
30 IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,30 IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
31 IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,31 IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
32 IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
32};33};
33 34
34#define IDXD_SCMD_SOFTERR_MASK 0x8000000035#define IDXD_SCMD_SOFTERR_MASK 0x80000000
include/uapi/linux/in.h+1−0
@@ -20,6 +20,7 @@ · 19 unmodified lines
20#define _UAPI_LINUX_IN_H20#define _UAPI_LINUX_IN_H
21 21
22#include <linux/types.h>22#include <linux/types.h>
23#include <linux/stddef.h>
23#include <linux/libc-compat.h>24#include <linux/libc-compat.h>
24#include <linux/socket.h>25#include <linux/socket.h>
25 26
include/uapi/linux/io_uring.h+1−1
@@ -222,7 +222,7 @@ enum io_uring_op { · 221 unmodified lines
222 222
223/*223/*
224 * sqe->uring_cmd_flags224 * sqe->uring_cmd_flags
225 * IORING_URING_CMD_FIXED use registered buffer; pass thig flag225 * IORING_URING_CMD_FIXED use registered buffer; pass this flag
226 * along with setting sqe->buf_index.226 * along with setting sqe->buf_index.
227 */227 */
228#define IORING_URING_CMD_FIXED (1U << 0)228#define IORING_URING_CMD_FIXED (1U << 0)
io_uring/io_uring.c+8−2
@@ -176,6 +176,11 @@ static inline unsigned int __io_cqring_events(struct io_ring_ctx *ctx) · 175 unmodified lines
176 return ctx->cached_cq_tail - READ_ONCE(ctx->rings->cq.head);176 return ctx->cached_cq_tail - READ_ONCE(ctx->rings->cq.head);
177}177}
178 178
179static inline unsigned int __io_cqring_events_user(struct io_ring_ctx *ctx)
180{
181 return READ_ONCE(ctx->rings->cq.tail) - READ_ONCE(ctx->rings->cq.head);
182}
183
179static bool io_match_linked(struct io_kiocb *head)184static bool io_match_linked(struct io_kiocb *head)
180{185{
181 struct io_kiocb *req;186 struct io_kiocb *req;
@@ -2315,7 +2320,7 @@ static inline bool io_has_work(struct io_ring_ctx *ctx) · 2133 unmodified lines
2315static inline bool io_should_wake(struct io_wait_queue *iowq)2320static inline bool io_should_wake(struct io_wait_queue *iowq)
2316{2321{
2317 struct io_ring_ctx *ctx = iowq->ctx;2322 struct io_ring_ctx *ctx = iowq->ctx;
2318 int dist = ctx->cached_cq_tail - (int) iowq->cq_tail;2323 int dist = READ_ONCE(ctx->rings->cq.tail) - (int) iowq->cq_tail;
2319 2324
2320 /*2325 /*
2321 * Wake up if we have enough events, or if a timeout occurred since we2326 * Wake up if we have enough events, or if a timeout occurred since we
@@ -2399,7 +2404,8 @@ static int io_cqring_wait(struct io_ring_ctx *ctx, int min_events, · 77 unmodified lines
2399 return ret;2404 return ret;
2400 io_cqring_overflow_flush(ctx);2405 io_cqring_overflow_flush(ctx);
2401 2406
2402 if (io_cqring_events(ctx) >= min_events)2407 /* if user messes with these they will just get an early return */
2408 if (__io_cqring_events_user(ctx) >= min_events)
2403 return 0;2409 return 0;
2404 } while (ret > 0);2410 } while (ret > 0);
2405 2411
io_uring/kbuf.c+2−0
@@ -346,6 +346,8 @@ int io_provide_buffers_prep(struct io_kiocb *req, const struct io_uring_sqe *sqe · 345 unmodified lines
346 tmp = READ_ONCE(sqe->off);346 tmp = READ_ONCE(sqe->off);
347 if (tmp > USHRT_MAX)347 if (tmp > USHRT_MAX)
348 return -E2BIG;348 return -E2BIG;
349 if (tmp + p->nbufs >= USHRT_MAX)
350 return -EINVAL;
349 p->bid = tmp;351 p->bid = tmp;
350 return 0;352 return 0;
351}353}
io_uring/poll.c+19−12
@@ -116,6 +116,8 @@ static void io_poll_req_insert_locked(struct io_kiocb *req) · 115 unmodified lines
116 struct io_hash_table *table = &req->ctx->cancel_table_locked;116 struct io_hash_table *table = &req->ctx->cancel_table_locked;
117 u32 index = hash_long(req->cqe.user_data, table->hash_bits);117 u32 index = hash_long(req->cqe.user_data, table->hash_bits);
118 118
119 lockdep_assert_held(&req->ctx->uring_lock);
120
119 hlist_add_head(&req->hash_node, &table->hbs[index].list);121 hlist_add_head(&req->hash_node, &table->hbs[index].list);
120}122}
121 123
@@ -394,7 +396,8 @@ static int io_poll_wake(struct wait_queue_entry *wait, unsigned mode, int sync, · 272 unmodified lines
394 return 1;396 return 1;
395}397}
396 398
397static void io_poll_double_prepare(struct io_kiocb *req)399/* fails only when polling is already completing by the first entry */
400static bool io_poll_double_prepare(struct io_kiocb *req)
398{401{
399 struct wait_queue_head *head;402 struct wait_queue_head *head;
400 struct io_poll *poll = io_poll_get_single(req);403 struct io_poll *poll = io_poll_get_single(req);
@@ -403,20 +406,20 @@ static void io_poll_double_prepare(struct io_kiocb *req) · 2 unmodified lines
403 rcu_read_lock();406 rcu_read_lock();
404 head = smp_load_acquire(&poll->head);407 head = smp_load_acquire(&poll->head);
405 /*408 /*
406 * poll arm may not hold ownership and so race with409 * poll arm might not hold ownership and so race for req->flags with
407 * io_poll_wake() by modifying req->flags. There is only one410 * io_poll_wake(). There is only one poll entry queued, serialise with
408 * poll entry queued, serialise with it by taking its head lock.411 * it by taking its head lock. As we're still arming the tw hanlder
412 * is not going to be run, so there are no races with it.
409 */413 */
410 if (head)414 if (head) {
411 spin_lock_irq(&head->lock);415 spin_lock_irq(&head->lock);
412 416 req->flags |= REQ_F_DOUBLE_POLL;
413 req->flags |= REQ_F_DOUBLE_POLL;417 if (req->opcode == IORING_OP_POLL_ADD)
414 if (req->opcode == IORING_OP_POLL_ADD)418 req->flags |= REQ_F_ASYNC_DATA;
415 req->flags |= REQ_F_ASYNC_DATA;
416
417 if (head)
418 spin_unlock_irq(&head->lock);419 spin_unlock_irq(&head->lock);
420 }
419 rcu_read_unlock();421 rcu_read_unlock();
422 return !!head;
420}423}
421 424
422static void __io_queue_proc(struct io_poll *poll, struct io_poll_table *pt,425static void __io_queue_proc(struct io_poll *poll, struct io_poll_table *pt,
@@ -454,7 +457,11 @@ static void __io_queue_proc(struct io_poll *poll, struct io_poll_table *pt, · 31 unmodified lines
454 /* mark as double wq entry */457 /* mark as double wq entry */
455 wqe_private |= IO_WQE_F_DOUBLE;458 wqe_private |= IO_WQE_F_DOUBLE;
456 io_init_poll_iocb(poll, first->events, first->wait.func);459 io_init_poll_iocb(poll, first->events, first->wait.func);
457 io_poll_double_prepare(req);460 if (!io_poll_double_prepare(req)) {
461 /* the request is completing, just back off */
462 kfree(poll);
463 return;
464 }
458 *poll_ptr = poll;465 *poll_ptr = poll;
459 } else {466 } else {
460 /* fine to modify, there is no poll queued to race with us */467 /* fine to modify, there is no poll queued to race with us */
kernel/bpf/verifier.c+13−4
@@ -1027,12 +1027,17 @@ out: · 1026 unmodified lines
1027 */1027 */
1028static void *realloc_array(void *arr, size_t old_n, size_t new_n, size_t size)1028static void *realloc_array(void *arr, size_t old_n, size_t new_n, size_t size)
1029{1029{
1030 void *new_arr;
1031
1030 if (!new_n || old_n == new_n)1032 if (!new_n || old_n == new_n)
1031 goto out;1033 goto out;
1032 1034
1033 arr = krealloc_array(arr, new_n, size, GFP_KERNEL);1035 new_arr = krealloc_array(arr, new_n, size, GFP_KERNEL);
1034 if (!arr)1036 if (!new_arr) {
1037 kfree(arr);
1035 return NULL;1038 return NULL;
1039 }
1040 arr = new_arr;
1036 1041
1037 if (new_n > old_n)1042 if (new_n > old_n)
1038 memset(arr + old_n * size, 0, (new_n - old_n) * size);1043 memset(arr + old_n * size, 0, (new_n - old_n) * size);
@@ -6618,8 +6623,12 @@ static int release_reference(struct bpf_verifier_env *env, · 5579 unmodified lines
6618 return err;6623 return err;
6619 6624
6620 bpf_for_each_reg_in_vstate(env->cur_state, state, reg, ({6625 bpf_for_each_reg_in_vstate(env->cur_state, state, reg, ({
6621 if (reg->ref_obj_id == ref_obj_id)6626 if (reg->ref_obj_id == ref_obj_id) {
6622 __mark_reg_unknown(env, reg);6627 if (!env->allow_ptr_leaks)
6628 __mark_reg_not_init(env, reg);
6629 else
6630 __mark_reg_unknown(env, reg);
6631 }
6623 }));6632 }));
6624 6633
6625 return 0;6634 return 0;
lib/Kconfig.debug+5−1
@@ -395,12 +395,12 @@ endif # DEBUG_INFO · 394 unmodified lines
395config FRAME_WARN395config FRAME_WARN
396 int "Warn for stack frames larger than"396 int "Warn for stack frames larger than"
397 range 0 8192397 range 0 8192
398 default 0 if KMSAN
398 default 2048 if GCC_PLUGIN_LATENT_ENTROPY399 default 2048 if GCC_PLUGIN_LATENT_ENTROPY
399 default 2048 if PARISC400 default 2048 if PARISC
400 default 1536 if (!64BIT && XTENSA)401 default 1536 if (!64BIT && XTENSA)
401 default 1024 if !64BIT402 default 1024 if !64BIT
402 default 2048 if 64BIT403 default 2048 if 64BIT
403 default 0 if KMSAN
404 help404 help
405 Tell the compiler to warn at build time for stack frames larger than this.405 Tell the compiler to warn at build time for stack frames larger than this.
406 Setting this too low will cause a lot of warnings.406 Setting this too low will cause a lot of warnings.
@@ -2241,6 +2241,10 @@ config TEST_UUID · 1834 unmodified lines
2241config TEST_XARRAY2241config TEST_XARRAY
2242 tristate "Test the XArray code at runtime"2242 tristate "Test the XArray code at runtime"
2243 2243
2244config TEST_MAPLE_TREE
2245 select DEBUG_MAPLE_TREE
2246 tristate "Test the Maple Tree code at runtime"
2247
2244config TEST_RHASHTABLE2248config TEST_RHASHTABLE
2245 tristate "Perform selftest on resizable hash table"2249 tristate "Perform selftest on resizable hash table"
2246 help2250 help
lib/Kconfig.kmsan+1−0
@@ -12,6 +12,7 @@ config KMSAN · 11 unmodified lines
12 bool "KMSAN: detector of uninitialized values use"12 bool "KMSAN: detector of uninitialized values use"
13 depends on HAVE_ARCH_KMSAN && HAVE_KMSAN_COMPILER13 depends on HAVE_ARCH_KMSAN && HAVE_KMSAN_COMPILER
14 depends on SLUB && DEBUG_KERNEL && !KASAN && !KCSAN14 depends on SLUB && DEBUG_KERNEL && !KASAN && !KCSAN
15 depends on !PREEMPT_RT
15 select STACKDEPOT16 select STACKDEPOT
16 select STACKDEPOT_ALWAYS_INIT17 select STACKDEPOT_ALWAYS_INIT
17 help18 help
lib/Makefile+1−0
@@ -85,6 +85,7 @@ obj-$(CONFIG_TEST_BITMAP) += test_bitmap.o · 84 unmodified lines
85obj-$(CONFIG_TEST_STRSCPY) += test_strscpy.o85obj-$(CONFIG_TEST_STRSCPY) += test_strscpy.o
86obj-$(CONFIG_TEST_UUID) += test_uuid.o86obj-$(CONFIG_TEST_UUID) += test_uuid.o
87obj-$(CONFIG_TEST_XARRAY) += test_xarray.o87obj-$(CONFIG_TEST_XARRAY) += test_xarray.o
88obj-$(CONFIG_TEST_MAPLE_TREE) += test_maple_tree.o
88obj-$(CONFIG_TEST_PARMAN) += test_parman.o89obj-$(CONFIG_TEST_PARMAN) += test_parman.o
89obj-$(CONFIG_TEST_KMOD) += test_kmod.o90obj-$(CONFIG_TEST_KMOD) += test_kmod.o
90obj-$(CONFIG_TEST_DEBUG_VIRTUAL) += test_debug_virtual.o91obj-$(CONFIG_TEST_DEBUG_VIRTUAL) += test_debug_virtual.o
lib/maple_tree.c+40−18
@@ -183,10 +183,6 @@ static void ma_free_rcu(struct maple_node *node) · 182 unmodified lines
183 call_rcu(&node->rcu, mt_free_rcu);183 call_rcu(&node->rcu, mt_free_rcu);
184}184}
185 185
186static unsigned int mt_height(const struct maple_tree *mt)
187{
188 return (mt->ma_flags & MT_FLAGS_HEIGHT_MASK) >> MT_FLAGS_HEIGHT_OFFSET;
189}
190 186
191static void mas_set_height(struct ma_state *mas)187static void mas_set_height(struct ma_state *mas)
192{188{
@@ -1209,7 +1205,6 @@ done: · 1016 unmodified lines
1209static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp)1205static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp)
1210{1206{
1211 struct maple_alloc *node;1207 struct maple_alloc *node;
1212 struct maple_alloc **nodep = &mas->alloc;
1213 unsigned long allocated = mas_allocated(mas);1208 unsigned long allocated = mas_allocated(mas);
1214 unsigned long success = allocated;1209 unsigned long success = allocated;
1215 unsigned int requested = mas_alloc_req(mas);1210 unsigned int requested = mas_alloc_req(mas);
@@ -1263,8 +1258,7 @@ static inline void mas_alloc_nodes(struct ma_state *mas, gfp_t gfp) · 47 unmodified lines
1263 node->node_count--;1258 node->node_count--;
1264 1259
1265 success += count;1260 success += count;
1266 nodep = &node->slot[0];1261 node = node->slot[0];
1267 node = *nodep;
1268 requested -= count;1262 requested -= count;
1269 }1263 }
1270 mas->alloc->total = success;1264 mas->alloc->total = success;
@@ -1357,6 +1351,7 @@ static inline struct maple_enode *mas_start(struct ma_state *mas) · 86 unmodified lines
1357 root = mas_root(mas);1351 root = mas_root(mas);
1358 /* Tree with nodes */1352 /* Tree with nodes */
1359 if (likely(xa_is_node(root))) {1353 if (likely(xa_is_node(root))) {
1354 mas->depth = 1;
1360 mas->node = mte_safe_root(root);1355 mas->node = mte_safe_root(root);
1361 return NULL;1356 return NULL;
1362 }1357 }
@@ -3608,8 +3603,7 @@ static inline int mas_commit_b_node(struct ma_wr_state *wr_mas, · 2245 unmodified lines
3608 node = mas_pop_node(wr_mas->mas);3603 node = mas_pop_node(wr_mas->mas);
3609 node->parent = mas_mn(wr_mas->mas)->parent;3604 node->parent = mas_mn(wr_mas->mas)->parent;
3610 wr_mas->mas->node = mt_mk_node(node, b_type);3605 wr_mas->mas->node = mt_mk_node(node, b_type);
3611 mab_mas_cp(b_node, 0, b_end, wr_mas->mas, true);3606 mab_mas_cp(b_node, 0, b_end, wr_mas->mas, false);
3612
3613 mas_replace(wr_mas->mas, false);3607 mas_replace(wr_mas->mas, false);
3614reuse_node:3608reuse_node:
3615 mas_update_gap(wr_mas->mas);3609 mas_update_gap(wr_mas->mas);
@@ -3733,7 +3727,6 @@ static bool mas_is_span_wr(struct ma_wr_state *wr_mas) · 117 unmodified lines
3733 3727
3734static inline void mas_wr_walk_descend(struct ma_wr_state *wr_mas)3728static inline void mas_wr_walk_descend(struct ma_wr_state *wr_mas)
3735{3729{
3736 wr_mas->mas->depth++;
3737 wr_mas->type = mte_node_type(wr_mas->mas->node);3730 wr_mas->type = mte_node_type(wr_mas->mas->node);
3738 mas_wr_node_walk(wr_mas);3731 mas_wr_node_walk(wr_mas);
3739 wr_mas->slots = ma_slots(wr_mas->node, wr_mas->type);3732 wr_mas->slots = ma_slots(wr_mas->node, wr_mas->type);
@@ -3745,6 +3738,7 @@ static inline void mas_wr_walk_traverse(struct ma_wr_state *wr_mas) · 5 unmodified lines
3745 wr_mas->mas->min = wr_mas->r_min;3738 wr_mas->mas->min = wr_mas->r_min;
3746 wr_mas->mas->node = wr_mas->content;3739 wr_mas->mas->node = wr_mas->content;
3747 wr_mas->mas->offset = 0;3740 wr_mas->mas->offset = 0;
3741 wr_mas->mas->depth++;
3748}3742}
3749/*3743/*
3750 * mas_wr_walk() - Walk the tree for a write.3744 * mas_wr_walk() - Walk the tree for a write.
@@ -4970,8 +4964,9 @@ static inline bool mas_anode_descend(struct ma_state *mas, unsigned long size) · 1219 unmodified lines
4970{4964{
4971 enum maple_type type = mte_node_type(mas->node);4965 enum maple_type type = mte_node_type(mas->node);
4972 unsigned long pivot, min, gap = 0;4966 unsigned long pivot, min, gap = 0;
4973 unsigned char count, offset;4967 unsigned char offset;
4974 unsigned long *gaps = NULL, *pivots = ma_pivots(mas_mn(mas), type);4968 unsigned long *gaps;
4969 unsigned long *pivots = ma_pivots(mas_mn(mas), type);
4975 void __rcu **slots = ma_slots(mas_mn(mas), type);4970 void __rcu **slots = ma_slots(mas_mn(mas), type);
4976 bool found = false;4971 bool found = false;
4977 4972
@@ -4982,9 +4977,8 @@ static inline bool mas_anode_descend(struct ma_state *mas, unsigned long size) · 4 unmodified lines
4982 4977
4983 gaps = ma_gaps(mte_to_node(mas->node), type);4978 gaps = ma_gaps(mte_to_node(mas->node), type);
4984 offset = mas->offset;4979 offset = mas->offset;
4985 count = mt_slots[type];
4986 min = mas_safe_min(mas, pivots, offset);4980 min = mas_safe_min(mas, pivots, offset);
4987 for (; offset < count; offset++) {4981 for (; offset < mt_slots[type]; offset++) {
4988 pivot = mas_safe_pivot(mas, pivots, offset, type);4982 pivot = mas_safe_pivot(mas, pivots, offset, type);
4989 if (offset && !pivot)4983 if (offset && !pivot)
4990 break;4984 break;
@@ -5010,8 +5004,6 @@ static inline bool mas_anode_descend(struct ma_state *mas, unsigned long size) · 19 unmodified lines
5010 mas->min = min;5004 mas->min = min;
5011 mas->max = pivot;5005 mas->max = pivot;
5012 offset = 0;5006 offset = 0;
5013 type = mte_node_type(mas->node);
5014 count = mt_slots[type];
5015 break;5007 break;
5016 }5008 }
5017 }5009 }
@@ -5065,6 +5057,7 @@ retry: · 47 unmodified lines
5065 5057
5066 return entry;5058 return entry;
5067}5059}
5060EXPORT_SYMBOL_GPL(mas_walk);
5068 5061
5069static inline bool mas_rewind_node(struct ma_state *mas)5062static inline bool mas_rewind_node(struct ma_state *mas)
5070{5063{
@@ -5276,6 +5269,7 @@ int mas_empty_area(struct ma_state *mas, unsigned long min, · 205 unmodified lines
5276 mas->last = mas->index + size - 1;5269 mas->last = mas->index + size - 1;
5277 return 0;5270 return 0;
5278}5271}
5272EXPORT_SYMBOL_GPL(mas_empty_area);
5279 5273
5280/*5274/*
5281 * mas_empty_area_rev() - Get the highest address within the range that is5275 * mas_empty_area_rev() - Get the highest address within the range that is
@@ -5339,6 +5333,7 @@ int mas_empty_area_rev(struct ma_state *mas, unsigned long min, · 57 unmodified lines
5339 mas->index = mas->last - size + 1;5333 mas->index = mas->last - size + 1;
5340 return 0;5334 return 0;
5341}5335}
5336EXPORT_SYMBOL_GPL(mas_empty_area_rev);
5342 5337
5343static inline int mas_alloc(struct ma_state *mas, void *entry,5338static inline int mas_alloc(struct ma_state *mas, void *entry,
5344 unsigned long size, unsigned long *index)5339 unsigned long size, unsigned long *index)
@@ -5660,6 +5655,7 @@ void *mas_store(struct ma_state *mas, void *entry) · 315 unmodified lines
5660 mas_wr_store_entry(&wr_mas);5655 mas_wr_store_entry(&wr_mas);
5661 return wr_mas.content;5656 return wr_mas.content;
5662}5657}
5658EXPORT_SYMBOL_GPL(mas_store);
5663 5659
5664/**5660/**
5665 * mas_store_gfp() - Store a value into the tree.5661 * mas_store_gfp() - Store a value into the tree.
@@ -5686,6 +5682,7 @@ retry: · 20 unmodified lines
5686 5682
5687 return 0;5683 return 0;
5688}5684}
5685EXPORT_SYMBOL_GPL(mas_store_gfp);
5689 5686
5690/**5687/**
5691 * mas_store_prealloc() - Store a value into the tree using memory5688 * mas_store_prealloc() - Store a value into the tree using memory
@@ -5703,6 +5700,7 @@ void mas_store_prealloc(struct ma_state *mas, void *entry) · 11 unmodified lines
5703 BUG_ON(mas_is_err(mas));5700 BUG_ON(mas_is_err(mas));
5704 mas_destroy(mas);5701 mas_destroy(mas);
5705}5702}
5703EXPORT_SYMBOL_GPL(mas_store_prealloc);
5706 5704
5707/**5705/**
5708 * mas_preallocate() - Preallocate enough nodes for a store operation5706 * mas_preallocate() - Preallocate enough nodes for a store operation
@@ -5772,6 +5770,7 @@ void mas_destroy(struct ma_state *mas) · 63 unmodified lines
5772 }5770 }
5773 mas->alloc = NULL;5771 mas->alloc = NULL;
5774}5772}
5773EXPORT_SYMBOL_GPL(mas_destroy);
5775 5774
5776/*5775/*
5777 * mas_expected_entries() - Set the expected number of entries that will be inserted.5776 * mas_expected_entries() - Set the expected number of entries that will be inserted.
@@ -5833,6 +5832,7 @@ int mas_expected_entries(struct ma_state *mas, unsigned long nr_entries) · 55 unmodified lines
5833 return ret;5832 return ret;
5834 5833
5835}5834}
5835EXPORT_SYMBOL_GPL(mas_expected_entries);
5836 5836
5837/**5837/**
5838 * mas_next() - Get the next entry.5838 * mas_next() - Get the next entry.
@@ -6013,6 +6013,7 @@ void *mas_find(struct ma_state *mas, unsigned long max) · 174 unmodified lines
6013 /* Retries on dead nodes handled by mas_next_entry */6013 /* Retries on dead nodes handled by mas_next_entry */
6014 return mas_next_entry(mas, max);6014 return mas_next_entry(mas, max);
6015}6015}
6016EXPORT_SYMBOL_GPL(mas_find);
6016 6017
6017/**6018/**
6018 * mas_find_rev: On the first call, find the first non-null entry at or below6019 * mas_find_rev: On the first call, find the first non-null entry at or below
@@ -6059,7 +6060,7 @@ void *mas_find_rev(struct ma_state *mas, unsigned long min) · 40 unmodified lines
6059 /* Retries on dead nodes handled by mas_next_entry */6060 /* Retries on dead nodes handled by mas_next_entry */
6060 return mas_prev_entry(mas, min);6061 return mas_prev_entry(mas, min);
6061}6062}
6062EXPORT_SYMBOL_GPL(mas_find);6063EXPORT_SYMBOL_GPL(mas_find_rev);
6063 6064
6064/**6065/**
6065 * mas_erase() - Find the range in which index resides and erase the entire6066 * mas_erase() - Find the range in which index resides and erase the entire
@@ -6541,8 +6542,27 @@ static inline int mas_dead_node(struct ma_state *mas, unsigned long index) · 475 unmodified lines
6541 mas_rewalk(mas, index);6542 mas_rewalk(mas, index);
6542 return 1;6543 return 1;
6543}6544}
6544#endif /* not defined __KERNEL__ */
6545 6545
6546void mt_cache_shrink(void)
6547{
6548}
6549#else
6550/*
6551 * mt_cache_shrink() - For testing, don't use this.
6552 *
6553 * Certain testcases can trigger an OOM when combined with other memory
6554 * debugging configuration options. This function is used to reduce the
6555 * possibility of an out of memory even due to kmem_cache objects remaining
6556 * around for longer than usual.
6557 */
6558void mt_cache_shrink(void)
6559{
6560 kmem_cache_shrink(maple_node_cache);
6561
6562}
6563EXPORT_SYMBOL_GPL(mt_cache_shrink);
6564
6565#endif /* not defined __KERNEL__ */
6546/*6566/*
6547 * mas_get_slot() - Get the entry in the maple state node stored at @offset.6567 * mas_get_slot() - Get the entry in the maple state node stored at @offset.
6548 * @mas: The maple state6568 * @mas: The maple state
@@ -6816,6 +6836,7 @@ void mt_dump(const struct maple_tree *mt) · 267 unmodified lines
6816 else if (entry)6836 else if (entry)
6817 mt_dump_node(mt, entry, 0, mt_max[mte_node_type(entry)], 0);6837 mt_dump_node(mt, entry, 0, mt_max[mte_node_type(entry)], 0);
6818}6838}
6839EXPORT_SYMBOL_GPL(mt_dump);
6819 6840
6820/*6841/*
6821 * Calculate the maximum gap in a node and check if that's what is reported in6842 * Calculate the maximum gap in a node and check if that's what is reported in
@@ -7126,5 +7147,6 @@ done: · 304 unmodified lines
7126 rcu_read_unlock();7147 rcu_read_unlock();
7127 7148
7128}7149}
7150EXPORT_SYMBOL_GPL(mt_validate);
7129 7151
7130#endif /* CONFIG_DEBUG_MAPLE_TREE */7152#endif /* CONFIG_DEBUG_MAPLE_TREE */
lib/test_maple_tree.c+1193−36733
@@ -1,24 +1,35 @@
1// SPDX-License-Identifier: GPL-2.0+1// SPDX-License-Identifier: GPL-2.0+
2/*2/*
3 * test_maple_tree.c: Test the maple tree API3 * test_maple_tree.c: Test the maple tree API
4 * Copyright (c) 2018 Liam R. Howlett4 * Copyright (c) 2018-2022 Oracle Corporation
5 * Author: Liam R. Howlett <Liam.Howlett@Oracle.com>5 * Author: Liam R. Howlett <Liam.Howlett@Oracle.com>
6 *
7 * Any tests that only require the interface of the tree.
6 */8 */
7 9
8#include <linux/maple_tree.h>10#include <linux/maple_tree.h>
9#include <linux/module.h>11#include <linux/module.h>
10#include <stdlib.h>
11#include <time.h>
12 12
13#define MTREE_ALLOC_MAX 0x2000000000000Ul13#define MTREE_ALLOC_MAX 0x2000000000000Ul
14#ifndef CONFIG_DEBUG_MAPLE_TREE
14#define CONFIG_DEBUG_MAPLE_TREE15#define CONFIG_DEBUG_MAPLE_TREE
16#endif
15#define CONFIG_MAPLE_SEARCH17#define CONFIG_MAPLE_SEARCH
18#define MAPLE_32BIT (MAPLE_NODE_SLOTS > 31)
19
16/* #define BENCH_SLOT_STORE */20/* #define BENCH_SLOT_STORE */
17/* #define BENCH_NODE_STORE */21/* #define BENCH_NODE_STORE */
18/* #define BENCH_AWALK */22/* #define BENCH_AWALK */
19/* #define BENCH_WALK */23/* #define BENCH_WALK */
20/* #define BENCH_MT_FOR_EACH */24/* #define BENCH_MT_FOR_EACH */
21/* #define BENCH_FORK */25/* #define BENCH_FORK */
26
27#ifdef __KERNEL__
28#define mt_set_non_kernel(x) do {} while (0)
29#define mt_zero_nr_tallocated(x) do {} while (0)
30#else
31#define cond_resched() do {} while (0)
32#endif
22static33static
23int mtree_insert_index(struct maple_tree *mt, unsigned long index, gfp_t gfp)34int mtree_insert_index(struct maple_tree *mt, unsigned long index, gfp_t gfp)
24{35{
@@ -65,6 +76,7 @@ static void *mtree_test_erase(struct maple_tree *mt, unsigned long index) · 40 unmodified lines
65 return mtree_erase(mt, index);76 return mtree_erase(mt, index);
66}77}
67 78
79#if defined(CONFIG_64BIT)
68static noinline void check_mtree_alloc_range(struct maple_tree *mt,80static noinline void check_mtree_alloc_range(struct maple_tree *mt,
69 unsigned long start, unsigned long end, unsigned long size,81 unsigned long start, unsigned long end, unsigned long size,
70 unsigned long expected, int eret, void *ptr)82 unsigned long expected, int eret, void *ptr)
@@ -98,6 +110,7 @@ static noinline void check_mtree_alloc_rrange(struct maple_tree *mt, · 27 unmodified lines
98 110
99 MT_BUG_ON(mt, result != expected);111 MT_BUG_ON(mt, result != expected);
100}112}
113#endif
101 114
102static noinline void check_load(struct maple_tree *mt, unsigned long index,115static noinline void check_load(struct maple_tree *mt, unsigned long index,
103 void *ptr)116 void *ptr)
@@ -150,12 +163,6 @@ static noinline void check_insert(struct maple_tree *mt, unsigned long index, · 46 unmodified lines
150 MT_BUG_ON(mt, ret != 0);163 MT_BUG_ON(mt, ret != 0);
151}164}
152 165
153static noinline void check_erase(struct maple_tree *mt, unsigned long index,
154 void *ptr)
155{
156 MT_BUG_ON(mt, mtree_test_erase(mt, index) != ptr);
157}
158
159static noinline void check_dup_insert(struct maple_tree *mt,166static noinline void check_dup_insert(struct maple_tree *mt,
160 unsigned long index, void *ptr)167 unsigned long index, void *ptr)
161{168{
@@ -172,41 +179,6 @@ void check_index_load(struct maple_tree *mt, unsigned long index) · 10 unmodified lines
172 return check_load(mt, index, xa_mk_value(index & LONG_MAX));179 return check_load(mt, index, xa_mk_value(index & LONG_MAX));
173}180}
174 181
175static noinline void check_nomem(struct maple_tree *mt)
176{
177 MA_STATE(ms, mt, 1, 1);
178
179 MT_BUG_ON(mt, !mtree_empty(mt));
180 /* Ensure no bypassing of allocation failures */
181 mt_set_non_kernel(0);
182
183 /* Storing something at 1 requires memory allocation */
184 MT_BUG_ON(mt, mtree_insert(mt, 1, &ms, GFP_ATOMIC) != -ENOMEM);
185 /* Storing something at 0 does not */
186 MT_BUG_ON(mt, mtree_insert(mt, 0, &ms, GFP_ATOMIC) != 0);
187
188 /*
189 * Simulate two threads racing; the first one fails to allocate
190 * memory to insert an entry at 1, then the second one succeeds
191 * in allocating memory to insert an entry at 2. The first one
192 * then needs to free the node it allocated. LeakSanitizer will
193 * notice this, as will the 'nr_allocated' debugging aid in the
194 * userspace test suite.
195 */
196 mtree_lock(mt);
197 mas_store(&ms, &ms); /* insert 1 -> &ms, fails. */
198 MT_BUG_ON(mt, ms.node != MA_ERROR(-ENOMEM));
199 mas_nomem(&ms, GFP_KERNEL); /* Node allocated in here. */
200 MT_BUG_ON(mt, ms.node != MAS_START);
201 mtree_unlock(mt);
202 MT_BUG_ON(mt, mtree_insert(mt, 2, mt, GFP_KERNEL) != 0);
203 mtree_lock(mt);
204 mas_store(&ms, &ms); /* insert 1 -> &ms */
205 mas_nomem(&ms, GFP_KERNEL); /* Node allocated in here. */
206 mtree_unlock(mt);
207 mtree_destroy(mt);
208}
209
210static inline int not_empty(struct maple_node *node)182static inline int not_empty(struct maple_node *node)
211{183{
212 int i;184 int i;
@@ -221,350 +193,6 @@ static inline int not_empty(struct maple_node *node) · 8 unmodified lines
221 return 0;193 return 0;
222}194}
223 195
224static noinline void check_new_node(struct maple_tree *mt)
225{
226
227 struct maple_node *mn, *mn2, *mn3;
228 struct maple_alloc *smn;
229 struct maple_node *nodes[100];
230 int i, j, total;
231
232 MA_STATE(mas, mt, 0, 0);
233
234 /* Try allocating 3 nodes */
235 mtree_lock(mt);
236 /* request 3 nodes to be allocated. */
237 mas_node_count(&mas, 3);
238 /* Allocation request of 3. */
239 MT_BUG_ON(mt, mas_alloc_req(&mas) != 3);
240 /* Allocate failed. */
241 MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM));
242 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
243
244 MT_BUG_ON(mt, mas_allocated(&mas) != 3);
245 mn = mas_pop_node(&mas);
246 MT_BUG_ON(mt, not_empty(mn));
247 MT_BUG_ON(mt, mn == NULL);
248 MT_BUG_ON(mt, mas.alloc == NULL);
249 MT_BUG_ON(mt, mas.alloc->slot[0] == NULL);
250 mas_push_node(&mas, mn);
251 mas_nomem(&mas, GFP_KERNEL); /* free */
252 mtree_unlock(mt);
253
254
255 /* Try allocating 1 node, then 2 more */
256 mtree_lock(mt);
257 /* Set allocation request to 1. */
258 mas_set_alloc_req(&mas, 1);
259 /* Check Allocation request of 1. */
260 MT_BUG_ON(mt, mas_alloc_req(&mas) != 1);
261 mas_set_err(&mas, -ENOMEM);
262 /* Validate allocation request. */
263 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
264 /* Eat the requested node. */
265 mn = mas_pop_node(&mas);
266 MT_BUG_ON(mt, not_empty(mn));
267 MT_BUG_ON(mt, mn == NULL);
268 MT_BUG_ON(mt, mn->slot[0] != NULL);
269 MT_BUG_ON(mt, mn->slot[1] != NULL);
270 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
271
272 ma_free_rcu(mn);
273 mas.node = MAS_START;
274 mas_nomem(&mas, GFP_KERNEL);
275 /* Allocate 3 nodes, will fail. */
276 mas_node_count(&mas, 3);
277 /* Drop the lock and allocate 3 nodes. */
278 mas_nomem(&mas, GFP_KERNEL);
279 /* Ensure 3 are allocated. */
280 MT_BUG_ON(mt, mas_allocated(&mas) != 3);
281 /* Allocation request of 0. */
282 MT_BUG_ON(mt, mas_alloc_req(&mas) != 0);
283
284 MT_BUG_ON(mt, mas.alloc == NULL);
285 MT_BUG_ON(mt, mas.alloc->slot[0] == NULL);
286 MT_BUG_ON(mt, mas.alloc->slot[1] == NULL);
287 /* Ensure we counted 3. */
288 MT_BUG_ON(mt, mas_allocated(&mas) != 3);
289 /* Free. */
290 mas_nomem(&mas, GFP_KERNEL);
291
292 /* Set allocation request to 1. */
293 mas_set_alloc_req(&mas, 1);
294 MT_BUG_ON(mt, mas_alloc_req(&mas) != 1);
295 mas_set_err(&mas, -ENOMEM);
296 /* Validate allocation request. */
297 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
298 MT_BUG_ON(mt, mas_allocated(&mas) != 1);
299 /* Check the node is only one node. */
300 mn = mas_pop_node(&mas);
301 MT_BUG_ON(mt, not_empty(mn));
302 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
303 MT_BUG_ON(mt, mn == NULL);
304 MT_BUG_ON(mt, mn->slot[0] != NULL);
305 MT_BUG_ON(mt, mn->slot[1] != NULL);
306 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
307 mas_push_node(&mas, mn);
308 MT_BUG_ON(mt, mas_allocated(&mas) != 1);
309 MT_BUG_ON(mt, mas.alloc->node_count);
310
311 mas_set_alloc_req(&mas, 2); /* request 2 more. */
312 MT_BUG_ON(mt, mas_alloc_req(&mas) != 2);
313 mas_set_err(&mas, -ENOMEM);
314 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
315 MT_BUG_ON(mt, mas_allocated(&mas) != 3);
316 MT_BUG_ON(mt, mas.alloc == NULL);
317 MT_BUG_ON(mt, mas.alloc->slot[0] == NULL);
318 MT_BUG_ON(mt, mas.alloc->slot[1] == NULL);
319 for (i = 2; i >= 0; i--) {
320 mn = mas_pop_node(&mas);
321 MT_BUG_ON(mt, mas_allocated(&mas) != i);
322 MT_BUG_ON(mt, !mn);
323 MT_BUG_ON(mt, not_empty(mn));
324 ma_free_rcu(mn);
325 }
326
327 total = 64;
328 mas_set_alloc_req(&mas, total); /* request 2 more. */
329 MT_BUG_ON(mt, mas_alloc_req(&mas) != total);
330 mas_set_err(&mas, -ENOMEM);
331 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
332 for (i = total; i > 0; i--) {
333 unsigned int e = 0; /* expected node_count */
334
335 if (i >= 35)
336 e = i - 35;
337 else if (i >= 5)
338 e = i - 5;
339 else if (i >= 2)
340 e = i - 2;
341 MT_BUG_ON(mt, mas.alloc->node_count != e);
342 mn = mas_pop_node(&mas);
343 MT_BUG_ON(mt, not_empty(mn));
344 MT_BUG_ON(mt, mas_allocated(&mas) != i - 1);
345 MT_BUG_ON(mt, !mn);
346 ma_free_rcu(mn);
347 }
348
349 total = 100;
350 for (i = 1; i < total; i++) {
351 mas_set_alloc_req(&mas, i);
352 mas_set_err(&mas, -ENOMEM);
353 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
354 for (j = i; j > 0; j--) {
355 mn = mas_pop_node(&mas);
356 MT_BUG_ON(mt, mas_allocated(&mas) != j - 1);
357 MT_BUG_ON(mt, !mn);
358 MT_BUG_ON(mt, not_empty(mn));
359 mas_push_node(&mas, mn);
360 MT_BUG_ON(mt, mas_allocated(&mas) != j);
361 mn = mas_pop_node(&mas);
362 MT_BUG_ON(mt, not_empty(mn));
363 MT_BUG_ON(mt, mas_allocated(&mas) != j - 1);
364 ma_free_rcu(mn);
365 }
366 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
367
368 mas_set_alloc_req(&mas, i);
369 mas_set_err(&mas, -ENOMEM);
370 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
371 for (j = 0; j <= i/2; j++) {
372 MT_BUG_ON(mt, mas_allocated(&mas) != i - j);
373 nodes[j] = mas_pop_node(&mas);
374 MT_BUG_ON(mt, mas_allocated(&mas) != i - j - 1);
375 }
376
377 while (j) {
378 j--;
379 mas_push_node(&mas, nodes[j]);
380 MT_BUG_ON(mt, mas_allocated(&mas) != i - j);
381 }
382 MT_BUG_ON(mt, mas_allocated(&mas) != i);
383 for (j = 0; j <= i/2; j++) {
384 MT_BUG_ON(mt, mas_allocated(&mas) != i - j);
385 mn = mas_pop_node(&mas);
386 MT_BUG_ON(mt, not_empty(mn));
387 ma_free_rcu(mn);
388 MT_BUG_ON(mt, mas_allocated(&mas) != i - j - 1);
389 }
390 MT_BUG_ON(mt, mas_nomem(&mas, GFP_KERNEL));
391
392 }
393
394 /* Set allocation request. */
395 total = 500;
396 mas_node_count(&mas, total);
397 /* Drop the lock and allocate the nodes. */
398 mas_nomem(&mas, GFP_KERNEL);
399 MT_BUG_ON(mt, !mas.alloc);
400 i = 1;
401 smn = mas.alloc;
402 while (i < total) {
403 for (j = 0; j < MAPLE_ALLOC_SLOTS; j++) {
404 i++;
405 MT_BUG_ON(mt, !smn->slot[j]);
406 if (i == total)
407 break;
408 }
409 smn = smn->slot[0]; /* next. */
410 }
411 MT_BUG_ON(mt, mas_allocated(&mas) != total);
412 mas_nomem(&mas, GFP_KERNEL); /* Free. */
413
414 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
415 for (i = 1; i < 128; i++) {
416 mas_node_count(&mas, i); /* Request */
417 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
418 MT_BUG_ON(mt, mas_allocated(&mas) != i); /* check request filled */
419 for (j = i; j > 0; j--) { /*Free the requests */
420 mn = mas_pop_node(&mas); /* get the next node. */
421 MT_BUG_ON(mt, mn == NULL);
422 MT_BUG_ON(mt, not_empty(mn));
423 ma_free_rcu(mn);
424 }
425 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
426 }
427
428 for (i = 1; i < MAPLE_NODE_MASK + 1; i++) {
429 MA_STATE(mas2, mt, 0, 0);
430 mas_node_count(&mas, i); /* Request */
431 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
432 MT_BUG_ON(mt, mas_allocated(&mas) != i); /* check request filled */
433 for (j = 1; j <= i; j++) { /* Move the allocations to mas2 */
434 mn = mas_pop_node(&mas); /* get the next node. */
435 MT_BUG_ON(mt, mn == NULL);
436 MT_BUG_ON(mt, not_empty(mn));
437 mas_push_node(&mas2, mn);
438 MT_BUG_ON(mt, mas_allocated(&mas2) != j);
439 }
440 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
441 MT_BUG_ON(mt, mas_allocated(&mas2) != i);
442
443 for (j = i; j > 0; j--) { /*Free the requests */
444 MT_BUG_ON(mt, mas_allocated(&mas2) != j);
445 mn = mas_pop_node(&mas2); /* get the next node. */
446 MT_BUG_ON(mt, mn == NULL);
447 MT_BUG_ON(mt, not_empty(mn));
448 ma_free_rcu(mn);
449 }
450 MT_BUG_ON(mt, mas_allocated(&mas2) != 0);
451 }
452
453
454 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
455 mas_node_count(&mas, MAPLE_ALLOC_SLOTS + 1); /* Request */
456 MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM));
457 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
458 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1);
459 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1);
460
461 mn = mas_pop_node(&mas); /* get the next node. */
462 MT_BUG_ON(mt, mn == NULL);
463 MT_BUG_ON(mt, not_empty(mn));
464 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS);
465 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 2);
466
467 mas_push_node(&mas, mn);
468 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1);
469 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1);
470
471 /* Check the limit of pop/push/pop */
472 mas_node_count(&mas, MAPLE_ALLOC_SLOTS + 2); /* Request */
473 MT_BUG_ON(mt, mas_alloc_req(&mas) != 1);
474 MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM));
475 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
476 MT_BUG_ON(mt, mas_alloc_req(&mas));
477 MT_BUG_ON(mt, mas.alloc->node_count);
478 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 2);
479 mn = mas_pop_node(&mas);
480 MT_BUG_ON(mt, not_empty(mn));
481 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1);
482 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1);
483 mas_push_node(&mas, mn);
484 MT_BUG_ON(mt, mas.alloc->node_count);
485 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 2);
486 mn = mas_pop_node(&mas);
487 MT_BUG_ON(mt, not_empty(mn));
488 ma_free_rcu(mn);
489 for (i = 1; i <= MAPLE_ALLOC_SLOTS + 1; i++) {
490 mn = mas_pop_node(&mas);
491 MT_BUG_ON(mt, not_empty(mn));
492 ma_free_rcu(mn);
493 }
494 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
495
496
497 for (i = 3; i < MAPLE_NODE_MASK * 3; i++) {
498 mas.node = MA_ERROR(-ENOMEM);
499 mas_node_count(&mas, i); /* Request */
500 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
501 mn = mas_pop_node(&mas); /* get the next node. */
502 mas_push_node(&mas, mn); /* put it back */
503 mas_destroy(&mas);
504
505 mas.node = MA_ERROR(-ENOMEM);
506 mas_node_count(&mas, i); /* Request */
507 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
508 mn = mas_pop_node(&mas); /* get the next node. */
509 mn2 = mas_pop_node(&mas); /* get the next node. */
510 mas_push_node(&mas, mn); /* put them back */
511 mas_push_node(&mas, mn2);
512 mas_destroy(&mas);
513
514 mas.node = MA_ERROR(-ENOMEM);
515 mas_node_count(&mas, i); /* Request */
516 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
517 mn = mas_pop_node(&mas); /* get the next node. */
518 mn2 = mas_pop_node(&mas); /* get the next node. */
519 mn3 = mas_pop_node(&mas); /* get the next node. */
520 mas_push_node(&mas, mn); /* put them back */
521 mas_push_node(&mas, mn2);
522 mas_push_node(&mas, mn3);
523 mas_destroy(&mas);
524
525 mas.node = MA_ERROR(-ENOMEM);
526 mas_node_count(&mas, i); /* Request */
527 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
528 mn = mas_pop_node(&mas); /* get the next node. */
529 ma_free_rcu(mn);
530 mas_destroy(&mas);
531
532 mas.node = MA_ERROR(-ENOMEM);
533 mas_node_count(&mas, i); /* Request */
534 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
535 mn = mas_pop_node(&mas); /* get the next node. */
536 ma_free_rcu(mn);
537 mn = mas_pop_node(&mas); /* get the next node. */
538 ma_free_rcu(mn);
539 mn = mas_pop_node(&mas); /* get the next node. */
540 ma_free_rcu(mn);
541 mas_destroy(&mas);
542 }
543
544 mas.node = MA_ERROR(-ENOMEM);
545 mas_node_count(&mas, 5); /* Request */
546 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
547 MT_BUG_ON(mt, mas_allocated(&mas) != 5);
548 mas.node = MA_ERROR(-ENOMEM);
549 mas_node_count(&mas, 10); /* Request */
550 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
551 mas.node = MAS_START;
552 MT_BUG_ON(mt, mas_allocated(&mas) != 10);
553 mas_destroy(&mas);
554
555 mas.node = MA_ERROR(-ENOMEM);
556 mas_node_count(&mas, MAPLE_ALLOC_SLOTS - 1); /* Request */
557 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
558 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS - 1);
559 mas.node = MA_ERROR(-ENOMEM);
560 mas_node_count(&mas, 10 + MAPLE_ALLOC_SLOTS - 1); /* Request */
561 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
562 mas.node = MAS_START;
563 MT_BUG_ON(mt, mas_allocated(&mas) != 10 + MAPLE_ALLOC_SLOTS - 1);
564 mas_destroy(&mas);
565
566 mtree_unlock(mt);
567}
568 196
569static noinline void check_rev_seq(struct maple_tree *mt, unsigned long max,197static noinline void check_rev_seq(struct maple_tree *mt, unsigned long max,
570 bool verbose)198 bool verbose)
@@ -588,6 +216,7 @@ static noinline void check_rev_seq(struct maple_tree *mt, unsigned long max, · 17 unmodified lines
588 }216 }
589 check_load(mt, max + 1, NULL);217 check_load(mt, max + 1, NULL);
590 218
219#ifndef __KERNEL__
591 if (verbose) {220 if (verbose) {
592 rcu_barrier();221 rcu_barrier();
593 mt_dump(mt);222 mt_dump(mt);
@@ -595,6 +224,7 @@ static noinline void check_rev_seq(struct maple_tree *mt, unsigned long max, · 1 unmodified line
595 __func__, max, mt_get_alloc_size()/1024, mt_nr_allocated(),224 __func__, max, mt_get_alloc_size()/1024, mt_nr_allocated(),
596 mt_nr_tallocated());225 mt_nr_tallocated());
597 }226 }
227#endif
598}228}
599 229
600static noinline void check_seq(struct maple_tree *mt, unsigned long max,230static noinline void check_seq(struct maple_tree *mt, unsigned long max,
@@ -614,6 +244,8 @@ static noinline void check_seq(struct maple_tree *mt, unsigned long max, · 13 unmodified lines
614 MT_BUG_ON(mt, !mt_height(mt));244 MT_BUG_ON(mt, !mt_height(mt));
615 check_load(mt, i + 1, NULL);245 check_load(mt, i + 1, NULL);
616 }246 }
247
248#ifndef __KERNEL__
617 if (verbose) {249 if (verbose) {
618 rcu_barrier();250 rcu_barrier();
619 mt_dump(mt);251 mt_dump(mt);
@@ -621,6 +253,7 @@ static noinline void check_seq(struct maple_tree *mt, unsigned long max, · 1 unmodified line
621 max, mt_get_alloc_size()/1024, mt_nr_allocated(),253 max, mt_get_alloc_size()/1024, mt_nr_allocated(),
622 mt_nr_tallocated());254 mt_nr_tallocated());
623 }255 }
256#endif
624}257}
625 258
626static noinline void check_lb_not_empty(struct maple_tree *mt)259static noinline void check_lb_not_empty(struct maple_tree *mt)
@@ -651,10 +284,15 @@ static noinline void check_lower_bound_split(struct maple_tree *mt) · 24 unmodified lines
651static noinline void check_upper_bound_split(struct maple_tree *mt)284static noinline void check_upper_bound_split(struct maple_tree *mt)
652{285{
653 unsigned long i, j;286 unsigned long i, j;
654 unsigned long huge = 4000UL * 1000 * 1000;287 unsigned long huge;
655 288
656 MT_BUG_ON(mt, !mtree_empty(mt));289 MT_BUG_ON(mt, !mtree_empty(mt));
657 290
291 if (MAPLE_32BIT)
292 huge = 2147483647UL;
293 else
294 huge = 4000UL * 1000 * 1000;
295
658 i = 4096;296 i = 4096;
659 while (i < huge) {297 while (i < huge) {
660 check_insert(mt, i, (void *) i);298 check_insert(mt, i, (void *) i);
@@ -687,6 +325,7 @@ static noinline void check_rev_find(struct maple_tree *mt) · 26 unmodified lines
687 mtree_store_range(mt, i*10, i*10 + 5,325 mtree_store_range(mt, i*10, i*10 + 5,
688 xa_mk_value(i), GFP_KERNEL);326 xa_mk_value(i), GFP_KERNEL);
689 327
328 rcu_read_lock();
690 mas_set(&mas, 1000);329 mas_set(&mas, 1000);
691 val = mas_find_rev(&mas, 1000);330 val = mas_find_rev(&mas, 1000);
692 MT_BUG_ON(mt, val != xa_mk_value(100));331 MT_BUG_ON(mt, val != xa_mk_value(100));
@@ -712,13 +351,15 @@ static noinline void check_rev_find(struct maple_tree *mt) · 19 unmodified lines
712 MT_BUG_ON(mt, val != xa_mk_value(0));351 MT_BUG_ON(mt, val != xa_mk_value(0));
713 val = mas_find_rev(&mas, 0);352 val = mas_find_rev(&mas, 0);
714 MT_BUG_ON(mt, val != NULL);353 MT_BUG_ON(mt, val != NULL);
354 rcu_read_unlock();
715}355}
716 356
717static noinline void check_find(struct maple_tree *mt)357static noinline void check_find(struct maple_tree *mt)
718{358{
719 unsigned long val = 0;359 unsigned long val = 0;
720 unsigned long count = 20;360 unsigned long count;
721 unsigned long max;361 unsigned long max;
362 unsigned long top;
722 unsigned long last = 0, index = 0;363 unsigned long last = 0, index = 0;
723 void *entry, *entry2;364 void *entry, *entry2;
724 365
@@ -727,6 +368,18 @@ static noinline void check_find(struct maple_tree *mt) · 2 unmodified lines
727 /* Insert 0. */368 /* Insert 0. */
728 MT_BUG_ON(mt, mtree_insert_index(mt, val++, GFP_KERNEL));369 MT_BUG_ON(mt, mtree_insert_index(mt, val++, GFP_KERNEL));
729 370
371#if defined(CONFIG_64BIT)
372 top = 4398046511104UL;
373#else
374 top = ULONG_MAX;
375#endif
376
377 if (MAPLE_32BIT) {
378 count = 15;
379 } else {
380 count = 20;
381 }
382
730 for (int i = 0; i <= count; i++) {383 for (int i = 0; i <= count; i++) {
731 if (val != 64)384 if (val != 64)
732 MT_BUG_ON(mt, mtree_insert_index(mt, val, GFP_KERNEL));385 MT_BUG_ON(mt, mtree_insert_index(mt, val, GFP_KERNEL));
@@ -805,12 +458,17 @@ static noinline void check_find(struct maple_tree *mt) · 72 unmodified lines
805 index = 0;458 index = 0;
806 MT_BUG_ON(mt, mtree_insert_index(mt, ULONG_MAX, GFP_KERNEL));459 MT_BUG_ON(mt, mtree_insert_index(mt, ULONG_MAX, GFP_KERNEL));
807 mt_for_each(mt, entry, index, ULONG_MAX) {460 mt_for_each(mt, entry, index, ULONG_MAX) {
808 if (val == 4398046511104)461 if (val == top)
809 MT_BUG_ON(mt, entry !=462 MT_BUG_ON(mt, entry != xa_mk_value(LONG_MAX));
810 xa_mk_value(ULONG_MAX & LONG_MAX));
811 else463 else
812 MT_BUG_ON(mt, xa_mk_value(val) != entry);464 MT_BUG_ON(mt, xa_mk_value(val) != entry);
813 val <<= 2;465
466 /* Workaround for 32bit */
467 if ((val << 2) < val)
468 val = ULONG_MAX;
469 else
470 val <<= 2;
471
814 if (val == 64) /* Skip zero entry. */472 if (val == 64) /* Skip zero entry. */
815 val <<= 2;473 val <<= 2;
816 /* For zero check. */474 /* For zero check. */
@@ -842,11 +500,16 @@ static noinline void check_find(struct maple_tree *mt) · 25 unmodified lines
842 mas_for_each(&mas, entry, ULONG_MAX) {500 mas_for_each(&mas, entry, ULONG_MAX) {
843 if (val == 64)501 if (val == 64)
844 MT_BUG_ON(mt, entry != XA_ZERO_ENTRY);502 MT_BUG_ON(mt, entry != XA_ZERO_ENTRY);
845 else if (val == 4398046511104)503 else if (val == top)
846 MT_BUG_ON(mt, entry != xa_mk_value(ULONG_MAX & LONG_MAX));504 MT_BUG_ON(mt, entry != xa_mk_value(LONG_MAX));
847 else505 else
848 MT_BUG_ON(mt, xa_mk_value(val) != entry);506 MT_BUG_ON(mt, xa_mk_value(val) != entry);
849 val <<= 2;507
508 /* Workaround for 32bit */
509 if ((val << 2) < val)
510 val = ULONG_MAX;
511 else
512 val <<= 2;
850 513
851 /* For zero check. */514 /* For zero check. */
852 if (!val)515 if (!val)
@@ -951,36548 +614,1350 @@ static noinline void check_find_2(struct maple_tree *mt) · 98 unmodified lines
951 /*MT_BUG_ON(mt, !mtree_empty(mt)); */614 /*MT_BUG_ON(mt, !mtree_empty(mt)); */
952}615}
953 616
954#define erase_ptr(i) entry[i%2]
955#define erase_check_load(mt, i) check_load(mt, set[i], entry[i%2])
956#define erase_check_insert(mt, i) check_insert(mt, set[i], entry[i%2])
957#define erase_check_erase(mt, i) check_erase(mt, set[i], entry[i%2])
958 617
959static noinline void check_erase_testset(struct maple_tree *mt)618#if defined(CONFIG_64BIT)
619static noinline void check_alloc_rev_range(struct maple_tree *mt)
960{620{
961 unsigned long set[] = { 5015, 5014, 5017, 25, 1000,
962 1001, 1002, 1003, 1005, 0,
963 6003, 6002, 6008, 6012, 6015,
964 7003, 7002, 7008, 7012, 7015,
965 8003, 8002, 8008, 8012, 8015,
966 9003, 9002, 9008, 9012, 9015,
967 10003, 10002, 10008, 10012, 10015,
968 11003, 11002, 11008, 11012, 11015,
969 12003, 12002, 12008, 12012, 12015,
970 13003, 13002, 13008, 13012, 13015,
971 14003, 14002, 14008, 14012, 14015,
972 15003, 15002, 15008, 15012, 15015,
973 };
974
975
976 void *ptr = &set;
977 void *entry[2] = { ptr, mt };
978 void *root_node;
979
980
981 rcu_register_thread();
982 mt_set_in_rcu(mt);
983 for (int i = 0; i < 4; i++)
984 erase_check_insert(mt, i);
985 for (int i = 0; i < 4; i++)
986 erase_check_load(mt, i);
987
988 mt_set_non_kernel(2);
989 erase_check_erase(mt, 1);
990 erase_check_load(mt, 0);
991 check_load(mt, set[1], NULL);
992 for (int i = 2; i < 4; i++)
993 erase_check_load(mt, i);
994
995
996 erase_check_erase(mt, 2);
997 erase_check_load(mt, 0);
998 check_load(mt, set[1], NULL);
999 check_load(mt, set[2], NULL);
1000
1001 erase_check_insert(mt, 1);
1002 erase_check_insert(mt, 2);
1003
1004 for (int i = 0; i < 4; i++)
1005 erase_check_load(mt, i);
1006
1007 /* Check erase and load without an allocation. */
1008 erase_check_load(mt, 3);
1009 erase_check_erase(mt, 1);
1010 erase_check_load(mt, 0);
1011 check_load(mt, set[1], NULL);
1012 for (int i = 2; i < 4; i++)
1013 erase_check_load(mt, i);
1014
1015 /*621 /*
1016 * Set the newly erased node. This will produce a different allocated622 * Generated by:
1017 * node to avoid busy slots.623 * cat /proc/self/maps | awk '{print $1}'|
624 * awk -F "-" '{printf "0x%s, 0x%s, ", $1, $2}'
1018 */625 */
1019 root_node = mt->ma_root;
1020 erase_check_insert(mt, 1);
1021
1022 erase_check_load(mt, 0);
1023 check_load(mt, 5016, NULL);
1024 erase_check_load(mt, 1);
1025 check_load(mt, 5013, NULL);
1026 erase_check_load(mt, 2);
1027 check_load(mt, 5018, NULL);
1028 erase_check_load(mt, 3);
1029
1030 erase_check_erase(mt, 2); /* erase 5017 to check append */
1031 erase_check_load(mt, 0);
1032 check_load(mt, 5016, NULL);
1033 erase_check_load(mt, 1);
1034 check_load(mt, 5013, NULL);
1035 check_load(mt, set[2], NULL);
1036 check_load(mt, 5018, NULL);
1037
1038 erase_check_load(mt, 3);
1039
1040 root_node = mt->ma_root;
1041 erase_check_insert(mt, 2);
1042
1043 erase_check_load(mt, 0);
1044 check_load(mt, 5016, NULL);
1045 erase_check_load(mt, 1);
1046 check_load(mt, 5013, NULL);
1047 erase_check_load(mt, 2);
1048 check_load(mt, 5018, NULL);
1049 erase_check_load(mt, 3);
1050 626
1051 mt_set_non_kernel(1);627 unsigned long range[] = {
1052 erase_check_erase(mt, 2); /* erase 5017 to check append */628 /* Inclusive , Exclusive. */
1053 erase_check_load(mt, 0);629 0x565234af2000, 0x565234af4000,
1054 check_load(mt, 5016, NULL);630 0x565234af4000, 0x565234af9000,
1055 check_load(mt, set[2], NULL);631 0x565234af9000, 0x565234afb000,
1056 erase_check_erase(mt, 0); /* erase 5015 to check append */632 0x565234afc000, 0x565234afd000,
1057 check_load(mt, set[0], NULL);633 0x565234afd000, 0x565234afe000,
1058 check_load(mt, 5016, NULL);634 0x565235def000, 0x565235e10000,
1059 erase_check_insert(mt, 4); /* 1000 < Should not split. */635 0x7f36d4bfd000, 0x7f36d4ee2000,
1060 check_load(mt, set[0], NULL);636 0x7f36d4ee2000, 0x7f36d4f04000,
1061 check_load(mt, 5016, NULL);637 0x7f36d4f04000, 0x7f36d504c000,
1062 erase_check_load(mt, 1);638 0x7f36d504c000, 0x7f36d5098000,
1063 check_load(mt, 5013, NULL);639 0x7f36d5098000, 0x7f36d5099000,
1064 check_load(mt, set[2], NULL);640 0x7f36d5099000, 0x7f36d509d000,
1065 check_load(mt, 5018, NULL);641 0x7f36d509d000, 0x7f36d509f000,
1066 erase_check_load(mt, 4);642 0x7f36d509f000, 0x7f36d50a5000,
1067 check_load(mt, 999, NULL);643 0x7f36d50b9000, 0x7f36d50db000,
1068 check_load(mt, 1001, NULL);644 0x7f36d50db000, 0x7f36d50dc000,
1069 erase_check_load(mt, 4);645 0x7f36d50dc000, 0x7f36d50fa000,
1070 if (mt_in_rcu(mt))646 0x7f36d50fa000, 0x7f36d5102000,
1071 MT_BUG_ON(mt, root_node == mt->ma_root);647 0x7f36d5102000, 0x7f36d5103000,
1072 else648 0x7f36d5103000, 0x7f36d5104000,
1073 MT_BUG_ON(mt, root_node != mt->ma_root);649 0x7f36d5104000, 0x7f36d5105000,
650 0x7fff5876b000, 0x7fff5878d000,
651 0x7fff5878e000, 0x7fff58791000,
652 0x7fff58791000, 0x7fff58793000,
653 };
1074 654
1075 /* Should not have split. */655 unsigned long holes[] = {
1076 MT_BUG_ON(mt, !mte_is_leaf(mt->ma_root));656 /*
657 * Note: start of hole is INCLUSIVE
658 * end of hole is EXCLUSIVE
659 * (opposite of the above table.)
660 * Start of hole, end of hole, size of hole (+1)
661 */
662 0x565234afb000, 0x565234afc000, 0x1000,
663 0x565234afe000, 0x565235def000, 0x12F1000,
664 0x565235e10000, 0x7f36d4bfd000, 0x28E49EDED000,
665 };
1077 666
667 /*
668 * req_range consists of 4 values.
669 * 1. min index
670 * 2. max index
671 * 3. size
672 * 4. number that should be returned.
673 * 5. return value
674 */
675 unsigned long req_range[] = {
676 0x565234af9000, /* Min */
677 0x7fff58791000, /* Max */
678 0x1000, /* Size */
679 0x7fff5878d << 12, /* First rev hole of size 0x1000 */
680 0, /* Return value success. */
1078 681
1079 /* Coalesce testing */682 0x0, /* Min */
1080 erase_check_insert(mt, 0);683 0x565234AF1 << 12, /* Max */
1081 erase_check_insert(mt, 2);684 0x3000, /* Size */
685 0x565234AEE << 12, /* max - 3. */
686 0, /* Return value success. */
1082 687
1083 for (int i = 5; i < 25; i++) {688 0x0, /* Min */
1084 erase_check_insert(mt, i);689 -1, /* Max */
1085 for (int j = i; j >= 0; j--)690 0x1000, /* Size */
1086 erase_check_load(mt, j);691 562949953421311 << 12,/* First rev hole of size 0x1000 */
1087 }692 0, /* Return value success. */
1088 693
1089 erase_check_erase(mt, 14); /*6015 */694 0x0, /* Min */
1090 for (int i = 0; i < 25; i++) {695 0x7F36D510A << 12, /* Max */
1091 if (i == 14)696 0x4000, /* Size */
1092 check_load(mt, set[i], NULL);697 0x7F36D5106 << 12, /* First rev hole of size 0x4000 */
1093 else698 0, /* Return value success. */
1094 erase_check_load(mt, i);
1095 }
1096 erase_check_erase(mt, 16); /*7002 */
1097 for (int i = 0; i < 25; i++) {
1098 if (i == 16 || i == 14)
1099 check_load(mt, set[i], NULL);
1100 else
1101 erase_check_load(mt, i);
1102 }
1103 699
700 /* Ascend test. */
701 0x0,
702 34148798629 << 12,
703 19 << 12,
704 34148797418 << 12,
705 0x0,
1104 706
1105 mt_set_non_kernel(1);707 /* Too big test. */
1106 erase_check_erase(mt, 13); /*6012 */708 0x0,
1107 for (int i = 0; i < 25; i++) {709 18446744073709551615UL,
1108 if (i == 16 || i == 14 || i == 13)710 562915594369134UL << 12,
1109 check_load(mt, set[i], NULL);711 0x0,
1110 else712 -EBUSY,
1111 erase_check_load(mt, i);
1112 }
1113 713
1114 erase_check_erase(mt, 15); /*7003 */714 };
1115 for (int i = 0; i < 25; i++) {
1116 if (i <= 16 && i >= 13)
1117 check_load(mt, set[i], NULL);
1118 else
1119 erase_check_load(mt, i);
1120 }
1121 715
1122 mt_set_non_kernel(2);716 int i, range_count = ARRAY_SIZE(range);
1123 erase_check_erase(mt, 17); /*7008 *should* cause coalesce. */717 int req_range_count = ARRAY_SIZE(req_range);
1124 for (int i = 0; i < 25; i++) {718 unsigned long min = 0;
1125 if (i <= 17 && i >= 13)
1126 check_load(mt, set[i], NULL);
1127 else
1128 erase_check_load(mt, i);
1129 }
1130 719
1131 erase_check_erase(mt, 18); /*7012 */720 MA_STATE(mas, mt, 0, 0);
1132 for (int i = 0; i < 25; i++) {
1133 if (i <= 18 && i >= 13)
1134 check_load(mt, set[i], NULL);
1135 else
1136 erase_check_load(mt, i);
1137 }
1138 721
1139 mt_set_non_kernel(2);722 mtree_store_range(mt, MTREE_ALLOC_MAX, ULONG_MAX, XA_ZERO_ENTRY,
1140 erase_check_erase(mt, 19); /*7015 */723 GFP_KERNEL);
1141 for (int i = 0; i < 25; i++) {724#define DEBUG_REV_RANGE 0
1142 if (i <= 19 && i >= 13)725 for (i = 0; i < range_count; i += 2) {
1143 check_load(mt, set[i], NULL);726 /* Inclusive, Inclusive (with the -1) */
1144 else
1145 erase_check_load(mt, i);
1146 }
1147 727
1148 erase_check_erase(mt, 20); /*8003 */728#if DEBUG_REV_RANGE
1149 for (int i = 0; i < 25; i++) {729 pr_debug("\t%s: Insert %lu-%lu\n", __func__, range[i] >> 12,
1150 if (i <= 20 && i >= 13)730 (range[i + 1] >> 12) - 1);
1151 check_load(mt, set[i], NULL);731#endif
1152 else732 check_insert_range(mt, range[i] >> 12, (range[i + 1] >> 12) - 1,
1153 erase_check_load(mt, i);733 xa_mk_value(range[i] >> 12), 0);
734 mt_validate(mt);
1154 }735 }
1155 736
1156 erase_check_erase(mt, 21); /*8002 */
1157 for (int i = 0; i < 25; i++) {
1158 if (i <= 21 && i >= 13)
1159 check_load(mt, set[i], NULL);
1160 else
1161 erase_check_load(mt, i);
1162 }
1163 737
1164 mt_set_non_kernel(2);738 mas_lock(&mas);
1165 erase_check_erase(mt, 22); /*8008 */739 for (i = 0; i < ARRAY_SIZE(holes); i += 3) {
1166 for (int i = 0; i < 25; i++) {740#if DEBUG_REV_RANGE
1167 if (i <= 22 && i >= 13)741 pr_debug("Search from %lu-%lu for gap %lu should be at %lu\n",
1168 check_load(mt, set[i], NULL);742 min, holes[i+1]>>12, holes[i+2]>>12,
1169 else743 holes[i] >> 12);
1170 erase_check_load(mt, i);744#endif
745 MT_BUG_ON(mt, mas_empty_area_rev(&mas, min,
746 holes[i+1] >> 12,
747 holes[i+2] >> 12));
748#if DEBUG_REV_RANGE
749 pr_debug("Found %lu %lu\n", mas.index, mas.last);
750 pr_debug("gap %lu %lu\n", (holes[i] >> 12),
751 (holes[i+1] >> 12));
752#endif
753 MT_BUG_ON(mt, mas.last + 1 != (holes[i+1] >> 12));
754 MT_BUG_ON(mt, mas.index != (holes[i+1] >> 12) - (holes[i+2] >> 12));
755 min = holes[i+1] >> 12;
756 mas_reset(&mas);
1171 }757 }
1172 for (int i = 23; i < 25; i++)
1173 erase_check_erase(mt, i);
1174 758
1175 for (int i = 0; i < 25; i++) {759 mas_unlock(&mas);
1176 if (i <= 25 && i >= 13)760 for (i = 0; i < req_range_count; i += 5) {
1177 check_load(mt, set[i], NULL);761#if DEBUG_REV_RANGE
1178 else762 pr_debug("\tReverse request between %lu-%lu size %lu, should get %lu\n",
1179 erase_check_load(mt, i);763 req_range[i] >> 12,
764 (req_range[i + 1] >> 12) - 1,
765 req_range[i+2] >> 12,
766 req_range[i+3] >> 12);
767#endif
768 check_mtree_alloc_rrange(mt,
769 req_range[i] >> 12, /* start */
770 req_range[i+1] >> 12, /* end */
771 req_range[i+2] >> 12, /* size */
772 req_range[i+3] >> 12, /* expected address */
773 req_range[i+4], /* expected return */
774 xa_mk_value(req_range[i] >> 12)); /* pointer */
775 mt_validate(mt);
1180 }776 }
1181 777
1182 /* Shrinking tree test. */778 mt_set_non_kernel(1);
779 mtree_erase(mt, 34148798727); /* create a deleted range. */
780 check_mtree_alloc_rrange(mt, 0, 34359052173, 210253414,
781 34148798725, 0, mt);
1183 782
1184 for (int i = 13; i < ARRAY_SIZE(set); i++)783 mtree_destroy(mt);
1185 erase_check_insert(mt, i);784}
1186 785
1187 mt_set_non_kernel(99);786static noinline void check_alloc_range(struct maple_tree *mt)
1188 for (int i = 18; i < ARRAY_SIZE(set); i++) {
1189 erase_check_erase(mt, i);
1190 for (int j = 0; j < ARRAY_SIZE(set); j++) {
1191 if (j < 18 || j > i)
1192 erase_check_load(mt, j);
1193 else
1194 check_load(mt, set[j], NULL);
1195 }
1196 }
1197 mt_set_non_kernel(35);
1198 for (int i = 0; i < 18; i++) {
1199 erase_check_erase(mt, i);
1200 for (int j = 0; j < ARRAY_SIZE(set); j++) {
1201 if (j < 18 && j > i)
1202 erase_check_load(mt, j);
1203 else
1204 check_load(mt, set[j], NULL);
1205 }
1206 }
1207 erase_check_insert(mt, 8);
1208 erase_check_insert(mt, 9);
1209 erase_check_erase(mt, 8);
1210 rcu_unregister_thread();
1211}
1212
1213#define erase_check_store_range(mt, a, i, ptr) mtree_test_store_range(mt, \
1214 a[(i)], a[(i + 1)], ptr)
1215#define STORE 1
1216#define SNULL 2
1217#define ERASE 3
1218#define ec_type_str(x) \
1219 (((x) == STORE) ? \
1220 "STORE" : \
1221 (((x) == SNULL) ? \
1222 "SNULL" : "ERASE") \
1223 )
1224#define check_erase2_debug 0
1225void *mas_next(struct ma_state *mas, unsigned long max);
1226
1227/* Calculate the overwritten entries. */
1228int mas_ce2_over_count(struct ma_state *mas_start, struct ma_state *mas_end,
1229 void *s_entry, unsigned long s_min,
1230 void *e_entry, unsigned long e_max,
1231 unsigned long *set, int i, bool null_entry)
1232{
1233 int count = 0, span = 0;
1234 unsigned long retry = 0;
1235 void *entry;
1236 struct ma_state tmp;
1237
1238
1239 /* count slots */
1240 memcpy(&tmp, mas_start, sizeof(tmp));
1241 entry = mas_next(&tmp, mas_end->last);
1242 while (entry) {
1243 BUG_ON(retry > 50); /* stop infinite retry on testing. */
1244 if (xa_is_zero(s_entry)) {
1245 retry++;
1246 continue;
1247 }
1248 count++;
1249 span++;
1250 entry = mas_next(&tmp, mas_end->last);
1251 }
1252
1253 if (null_entry) {
1254 /* Check splitting end. */
1255 if (e_entry && (e_max > mas_end->last))
1256 count--;
1257
1258 /* check overwrite of entire start */
1259 if (s_entry && (s_min == mas_start->index))
1260 count++;
1261 } else { /* !null_entry (store) */
1262 bool esplit = e_max > mas_end->last;
1263 bool ssplit = s_min != mas_start->index;
1264
1265 if (s_entry && e_entry) {
1266 if (esplit && ssplit)
1267 count--;
1268 else if (ssplit)
1269 count--;
1270 else if (esplit) {
1271 if (span)
1272 count--;
1273 }
1274 } else if (s_entry && !e_entry) {
1275 if (ssplit)
1276 count--;
1277 } else if (!s_entry && e_entry) {
1278 if (esplit)
1279 count--;
1280 count--;
1281 } else {
1282 count--;
1283 }
1284 }
1285 return count;
1286}
1287
1288/*
1289 * mas_node_walk() - Walk a maple node to offset of the index.
1290 * @mas: The maple state
1291 * @type: The maple node type
1292 * @*range_min: Pointer to store the minimum range of the offset
1293 * @*range_max: Pointer to store the maximum range of the offset
1294 *
1295 * The offset will be stored in the maple state.
1296 *
1297 */
1298static inline void mas_node_walk(struct ma_state *mas, struct maple_node *node,
1299 enum maple_type type, unsigned long *range_min,
1300 unsigned long *range_max)
1301
1302{
1303 unsigned long *pivots;
1304 unsigned char count;
1305 unsigned long prev, max;
1306 unsigned char offset;
1307 unsigned long index;
1308
1309 if (unlikely(ma_is_dense(type))) {
1310 (*range_max) = (*range_min) = mas->index;
1311 if (unlikely(ma_dead_node(node)))
1312 return;
1313
1314 mas->offset = mas->index = mas->min;
1315 return;
1316 }
1317
1318 pivots = ma_pivots(node, type);
1319 max = pivots[0];
1320 if (unlikely(ma_dead_node(node)))
1321 return;
1322
1323 offset = 0;
1324 prev = mas->min;
1325 index = mas->index;
1326 if (unlikely(index <= max))
1327 goto offset_zero;
1328
1329 count = mt_pivots[type];
1330 while (++offset < count) {
1331 prev = max;
1332 max = pivots[offset];
1333 if (unlikely(ma_dead_node(node)))
1334 return;
1335
1336 if (index <= max)
1337 goto offset_found;
1338 else if (unlikely(!max))
1339 goto mas_max;
1340 }
1341
1342 prev = max;
1343mas_max:
1344 max = mas->max;
1345offset_found:
1346 prev++;
1347offset_zero:
1348 mas->offset = offset;
1349 if (ma_is_leaf(type)) {
1350 *range_max = max;
1351 *range_min = prev;
1352 } else {
1353 mas->max = max;
1354 mas->min = prev;
1355 }
1356}
1357
1358/*
1359 * mas_descend_walk(): Locates a value and sets the mas->node and slot
1360 * accordingly. range_min and range_max are set to the range which the entry is
1361 * valid.
1362 * @mas: The maple state
1363 * @*range_min: A pointer to store the minimum of the range
1364 * @*range_max: A pointer to store the maximum of the range
1365 *
1366 * Check mas->node is still valid on return of any value.
1367 *
1368 * Return: true if pointing to a valid node and offset. False otherwise.
1369 */
1370static inline bool mas_descend_walk(struct ma_state *mas,
1371 unsigned long *range_min, unsigned long *range_max)
1372{
1373 struct maple_enode *next;
1374 struct maple_node *node;
1375 enum maple_type type;
1376
1377 next = mas->node;
1378 while (true) {
1379 node = mte_to_node(next);
1380 type = mte_node_type(next);
1381 mas_node_walk(mas, node, type, range_min, range_max);
1382 next = mas_slot(mas, ma_slots(node, type), mas->offset);
1383 if (unlikely(ma_dead_node(node)))
1384 return false;
1385
1386 if (unlikely(ma_is_leaf(type)))
1387 return true;
1388
1389 /* Descend. */
1390 mas->node = next;
1391 }
1392 return false;
1393}
1394
1395/*
1396 * mas_tree_walk() - Walk to @mas->index and set the range values.
1397 * @mas: The maple state.
1398 * @*range_min: The minimum range to be set.
1399 * @*range_max: The maximum range to be set.
1400 *
1401 * Ranges are only valid if there is a valid entry at @mas->index.
1402 *
1403 * Return: True if a value exists, false otherwise.
1404 */
1405static inline bool mas_tree_walk(struct ma_state *mas, unsigned long *range_min,
1406 unsigned long *range_max)
1407{787{
1408 bool ret;788 /*
1409 789 * Generated by:
1410retry:790 * cat /proc/self/maps|awk '{print $1}'|
1411 ret = false;791 * awk -F "-" '{printf "0x%s, 0x%s, ", $1, $2}'
1412 mas_start(mas);792 */
1413 if (mas_is_none(mas))
1414 goto not_found;
1415
1416 if (mas_is_ptr(mas)) {
1417 *range_min = *range_max = 0;
1418 if (!mas->index)
1419 return true;
1420
1421 goto not_found;
1422 }
1423
1424 ret = mas_descend_walk(mas, range_min, range_max);
1425 if (unlikely(mte_dead_node(mas->node))) {
1426 mas->node = MAS_START;
1427 goto retry;
1428 }
1429
1430 return ret;
1431 793
1432not_found:794 unsigned long range[] = {
1433 mas->offset = MAPLE_NODE_SLOTS;795 /* Inclusive , Exclusive. */
1434 return false;796 0x565234af2000, 0x565234af4000,
1435}797 0x565234af4000, 0x565234af9000,
798 0x565234af9000, 0x565234afb000,
799 0x565234afc000, 0x565234afd000,
800 0x565234afd000, 0x565234afe000,
801 0x565235def000, 0x565235e10000,
802 0x7f36d4bfd000, 0x7f36d4ee2000,
803 0x7f36d4ee2000, 0x7f36d4f04000,
804 0x7f36d4f04000, 0x7f36d504c000,
805 0x7f36d504c000, 0x7f36d5098000,
806 0x7f36d5098000, 0x7f36d5099000,
807 0x7f36d5099000, 0x7f36d509d000,
808 0x7f36d509d000, 0x7f36d509f000,
809 0x7f36d509f000, 0x7f36d50a5000,
810 0x7f36d50b9000, 0x7f36d50db000,
811 0x7f36d50db000, 0x7f36d50dc000,
812 0x7f36d50dc000, 0x7f36d50fa000,
813 0x7f36d50fa000, 0x7f36d5102000,
814 0x7f36d5102000, 0x7f36d5103000,
815 0x7f36d5103000, 0x7f36d5104000,
816 0x7f36d5104000, 0x7f36d5105000,
817 0x7fff5876b000, 0x7fff5878d000,
818 0x7fff5878e000, 0x7fff58791000,
819 0x7fff58791000, 0x7fff58793000,
820 };
821 unsigned long holes[] = {
822 /* Start of hole, end of hole, size of hole (+1) */
823 0x565234afb000, 0x565234afc000, 0x1000,
824 0x565234afe000, 0x565235def000, 0x12F1000,
825 0x565235e10000, 0x7f36d4bfd000, 0x28E49EDED000,
826 };
1436 827
1437static inline void *mas_range_load(struct ma_state *mas,828 /*
1438 unsigned long *range_min, unsigned long *range_max)829 * req_range consists of 4 values.
830 * 1. min index
831 * 2. max index
832 * 3. size
833 * 4. number that should be returned.
834 * 5. return value
835 */
836 unsigned long req_range[] = {
837 0x565234af9000, /* Min */
838 0x7fff58791000, /* Max */
839 0x1000, /* Size */
840 0x565234afb000, /* First hole in our data of size 1000. */
841 0, /* Return value success. */
1439 842
1440{843 0x0, /* Min */
1441 void *entry = NULL;844 0x7fff58791000, /* Max */
1442 unsigned long index = mas->index;845 0x1F00, /* Size */
846 0x0, /* First hole in our data of size 2000. */
847 0, /* Return value success. */
1443 848
1444 if (mas_is_none(mas) || mas_is_paused(mas))849 /* Test ascend. */
1445 mas->node = MAS_START;850 34148797436 << 12, /* Min */
1446retry:851 0x7fff587AF000, /* Max */
1447 if (mas_tree_walk(mas, range_min, range_max))852 0x3000, /* Size */
1448 if (unlikely(mas->node == MAS_ROOT))853 34148798629 << 12, /* Expected location */
1449 return mas_root(mas);854 0, /* Return value success. */
1450 855
1451 if (likely(mas->offset != MAPLE_NODE_SLOTS))856 /* Test failing. */
1452 entry = mas_get_slot(mas, mas->offset);857 34148798623 << 12, /* Min */
858 34148798683 << 12, /* Max */
859 0x15000, /* Size */
860 0, /* Expected location */
861 -EBUSY, /* Return value failed. */
1453 862
1454 if (mas_dead_node(mas, index))863 /* Test filling entire gap. */
1455 goto retry;864 34148798623 << 12, /* Min */
865 0x7fff587AF000, /* Max */
866 0x10000, /* Size */
867 34148798632 << 12, /* Expected location */
868 0, /* Return value success. */
1456 869
1457 return entry;870 /* Test walking off the end of root. */
1458}871 0, /* Min */
1459static noinline void check_erase2_testset(struct maple_tree *mt,872 -1, /* Max */
1460 unsigned long *set, unsigned long size)873 -1, /* Size */
1461{874 0, /* Expected location */
1462 int entry_count = 0;875 -EBUSY, /* Return value failure. */
1463 int check = 0;
1464 void *foo;
1465 unsigned long addr = 0;
1466 void *s_entry = NULL, *e_entry = NULL;
1467 876
877 /* Test looking for too large a hole across entire range. */
878 0, /* Min */
879 -1, /* Max */
880 4503599618982063UL << 12, /* Size */
881 34359052178 << 12, /* Expected location */
882 -EBUSY, /* Return failure. */
883 };
884 int i, range_count = ARRAY_SIZE(range);
885 int req_range_count = ARRAY_SIZE(req_range);
886 unsigned long min = 0x565234af2000;
1468 MA_STATE(mas, mt, 0, 0);887 MA_STATE(mas, mt, 0, 0);
1469 888
1470 for (int i = 0; i < size; i += 3) {889 mtree_store_range(mt, MTREE_ALLOC_MAX, ULONG_MAX, XA_ZERO_ENTRY,
1471 unsigned long s_min, s_max;890 GFP_KERNEL);
1472 unsigned long e_min, e_max;891 for (i = 0; i < range_count; i += 2) {
1473 void *value = NULL;892#define DEBUG_ALLOC_RANGE 0
1474 893#if DEBUG_ALLOC_RANGE
1475 MA_STATE(mas_start, mt, set[i+1], set[i+1]);894 pr_debug("\tInsert %lu-%lu\n", range[i] >> 12,
1476 MA_STATE(mas_end, mt, set[i+2], set[i+2]);895 (range[i + 1] >> 12) - 1);
1477 mt_set_non_kernel(127);
1478#if check_erase2_debug
1479 pr_err("%s: %d %s %lu - %lu\n", __func__, i,
1480 ec_type_str(set[i]),
1481 set[i+1], set[i+2]);
1482#endif
1483 s_entry = mas_range_load(&mas_start, &s_min, &s_max);
1484 e_entry = mas_range_load(&mas_end, &e_min, &e_max);
1485
1486 switch (set[i]) {
1487 case SNULL:
1488 if ((s_min == set[i+1]) && (s_max == set[i+2])) {
1489 if (s_entry)
1490 entry_count--;
1491 } else if ((s_min != set[i+1]) && (s_max != set[i+2])) {
1492 entry_count++;
1493 } else if ((mas_start.node != mas_end.node) ||
1494 (mas_start.offset != mas_end.offset)) {
1495 entry_count -=
1496 mas_ce2_over_count(&mas_start, &mas_end,
1497 s_entry, s_min,
1498 e_entry, e_max, set, i,
1499 true);
1500 }
1501
1502
1503 erase_check_store_range(mt, set, i + 1, value);
1504 break;
1505 case STORE:
1506 value = xa_mk_value(set[i + 1]);
1507 if (mas_start.offset > mt_slot_count(mas_start.node)) {
1508 entry_count++; /* appending an entry. */
1509 } else if ((s_min == e_min) && (s_max == e_max)) {
1510 if (!entry_count)
1511 entry_count++;
1512
1513 else if (s_entry) {
1514 if (e_max > mas_end.last)
1515 entry_count++;
1516
1517 if (s_min < mas_start.index)
1518 entry_count++;
1519
1520 } else {
1521 entry_count++;
1522 }
1523 } else {
1524 entry_count -=
1525 mas_ce2_over_count(&mas_start, &mas_end,
1526 s_entry, s_min,
1527 e_entry, e_max, set, i,
1528 false);
1529 }
1530
1531 erase_check_store_range(mt, set, i + 1, value);
1532 break;
1533 case ERASE:
1534 if (!s_entry)
1535 break;
1536 check_erase(mt, set[i+1], xa_mk_value(set[i+1]));
1537 entry_count--;
1538 break;
1539 }
1540 mt_validate(mt);
1541 if (entry_count)
1542 MT_BUG_ON(mt, !mt_height(mt));
1543#if check_erase2_debug > 1
1544 mt_dump(mt);896 mt_dump(mt);
1545#endif897#endif
1546#if check_erase2_debug898 check_insert_range(mt, range[i] >> 12, (range[i + 1] >> 12) - 1,
1547 pr_err("Done\n");899 xa_mk_value(range[i] >> 12), 0);
1548#endif900 mt_validate(mt);
901 }
1549 902
1550 check = 0;
1551 addr = 0;
1552 mt_for_each(mt, foo, addr, ULONG_MAX) {
1553 check++;
1554#if check_erase2_debug > 2
1555 pr_err("mt: %lu -> %p (%d)\n", addr+1, foo, check);
1556#endif
1557 if (check > entry_count)
1558 break;
1559 }
1560 903
1561#if check_erase2_debug > 2
1562 pr_err("mt_for_each %d and count %d\n", check, entry_count);
1563#endif
1564 904
1565 MT_BUG_ON(mt, check != entry_count);905 mas_lock(&mas);
906 for (i = 0; i < ARRAY_SIZE(holes); i += 3) {
1566 907
1567 check = 0;908#if DEBUG_ALLOC_RANGE
1568 addr = 0;909 pr_debug("\tGet empty %lu-%lu size %lu (%lx-%lx)\n", min >> 12,
910 holes[i+1] >> 12, holes[i+2] >> 12,
911 min, holes[i+1]);
912#endif
913 MT_BUG_ON(mt, mas_empty_area(&mas, min >> 12,
914 holes[i+1] >> 12,
915 holes[i+2] >> 12));
916 MT_BUG_ON(mt, mas.index != holes[i] >> 12);
917 min = holes[i+1];
1569 mas_reset(&mas);918 mas_reset(&mas);
1570 mas.index = 0;919 }
1571 rcu_read_lock();920 mas_unlock(&mas);
1572 mas_for_each(&mas, foo, ULONG_MAX) {921 for (i = 0; i < req_range_count; i += 5) {
1573 if (xa_is_zero(foo)) {922#if DEBUG_ALLOC_RANGE
1574 if (addr == mas.index) {923 pr_debug("\tTest %d: %lu-%lu size %lu expected %lu (%lu-%lu)\n",
1575 mt_dump(mas.tree);924 i/5, req_range[i] >> 12, req_range[i + 1] >> 12,
1576 pr_err("retry failed %lu - %lu\n",925 req_range[i + 2] >> 12, req_range[i + 3] >> 12,
1577 mas.index, mas.last);926 req_range[i], req_range[i+1]);
1578 MT_BUG_ON(mt, 1);
1579 }
1580 addr = mas.index;
1581 continue;
1582 }
1583#if check_erase2_debug > 2
1584 pr_err("mas: %lu -> %p\n", mas.index, foo);
1585#endif927#endif
1586 check++;928 check_mtree_alloc_range(mt,
1587 if (check > entry_count)929 req_range[i] >> 12, /* start */
1588 break;930 req_range[i+1] >> 12, /* end */
1589 }931 req_range[i+2] >> 12, /* size */
1590 rcu_read_unlock();932 req_range[i+3] >> 12, /* expected address */
1591#if check_erase2_debug > 2933 req_range[i+4], /* expected return */
1592 pr_err("mas_for_each %d and count %d\n", check, entry_count);934 xa_mk_value(req_range[i] >> 12)); /* pointer */
1593 mt_validate(mt);935 mt_validate(mt);
936#if DEBUG_ALLOC_RANGE
937 mt_dump(mt);
1594#endif938#endif
1595
1596 MT_BUG_ON(mt, check != entry_count);
1597
1598 MT_BUG_ON(mt, mtree_load(mas.tree, 0) != NULL);
1599 }939 }
1600}
1601 940
941 mtree_destroy(mt);
942}
943#endif
1602 944
1603/* These tests were pulled from kvm tests. */945static noinline void check_ranges(struct maple_tree *mt)
1604static noinline void check_erase2_sets(struct maple_tree *mt)
1605{946{
1606 void *entry;947 int i, val, val2;
1607 unsigned long start = 0;948 unsigned long r[] = {
1608 unsigned long set[] = {949 10, 15,
1609STORE, 140737488347136, 140737488351231,950 20, 25,
1610STORE, 140721266458624, 140737488351231,951 17, 22, /* Overlaps previous range. */
1611ERASE, 140721266458624, 140737488351231,952 9, 1000, /* Huge. */
1612STORE, 140721266458624, 140721266462719,953 100, 200,
1613STORE, 94735788949504, 94735789121535,954 45, 168,
1614ERASE, 94735788949504, 94735789121535,955 118, 128,
1615STORE, 94735788949504, 94735788965887,956 };
1616STORE, 94735788965888, 94735789121535,
1617ERASE, 94735788965888, 94735789121535,
1618STORE, 94735788965888, 94735789068287,
1619STORE, 94735789068288, 94735789109247,
1620STORE, 94735789109248, 94735789121535,
1621STORE, 140253902692352, 140253902864383,
1622ERASE, 140253902692352, 140253902864383,
1623STORE, 140253902692352, 140253902696447,
1624STORE, 140253902696448, 140253902864383,
1625 };
1626 unsigned long set2[] = {
1627STORE, 140737488347136, 140737488351231,
1628STORE, 140735933583360, 140737488351231,
1629ERASE, 140735933583360, 140737488351231,
1630STORE, 140735933583360, 140735933587455,
1631STORE, 94811003260928, 94811003432959,
1632ERASE, 94811003260928, 94811003432959,
1633STORE, 94811003260928, 94811003277311,
1634STORE, 94811003277312, 94811003432959,
1635ERASE, 94811003277312, 94811003432959,
1636STORE, 94811003277312, 94811003379711,
1637STORE, 94811003379712, 94811003420671,
1638STORE, 94811003420672, 94811003432959,
1639STORE, 140277094653952, 140277094825983,
1640ERASE, 140277094653952, 140277094825983,
1641STORE, 140277094653952, 140277094658047,
1642STORE, 140277094658048, 140277094825983,
1643ERASE, 140277094658048, 140277094825983,
1644STORE, 140277094658048, 140277094780927,
1645STORE, 140277094780928, 140277094813695,
1646STORE, 140277094813696, 140277094821887,
1647STORE, 140277094821888, 140277094825983,
1648STORE, 140735933906944, 140735933911039,
1649 };
1650 unsigned long set3[] = {
1651STORE, 140737488347136, 140737488351231,
1652STORE, 140735790264320, 140737488351231,
1653ERASE, 140735790264320, 140737488351231,
1654STORE, 140735790264320, 140735790268415,
1655STORE, 94016597282816, 94016597454847,
1656ERASE, 94016597282816, 94016597454847,
1657STORE, 94016597282816, 94016597299199,
1658STORE, 94016597299200, 94016597454847,
1659ERASE, 94016597299200, 94016597454847,
1660STORE, 94016597299200, 94016597401599,
1661STORE, 94016597401600, 94016597442559,
1662STORE, 94016597442560, 94016597454847,
1663STORE, 140496959283200, 140496959455231,
1664ERASE, 140496959283200, 140496959455231,
1665STORE, 140496959283200, 140496959287295,
1666STORE, 140496959287296, 140496959455231,
1667ERASE, 140496959287296, 140496959455231,
1668STORE, 140496959287296, 140496959410175,
1669STORE, 140496959410176, 140496959442943,
1670STORE, 140496959442944, 140496959451135,
1671STORE, 140496959451136, 140496959455231,
1672STORE, 140735791718400, 140735791722495,
1673STORE, 140735791706112, 140735791718399,
1674STORE, 47135835713536, 47135835721727,
1675STORE, 47135835721728, 47135835729919,
1676STORE, 47135835729920, 47135835893759,
1677ERASE, 47135835729920, 47135835893759,
1678STORE, 47135835729920, 47135835742207,
1679STORE, 47135835742208, 47135835893759,
1680STORE, 47135835840512, 47135835893759,
1681STORE, 47135835742208, 47135835840511,
1682ERASE, 47135835742208, 47135835840511,
1683STORE, 47135835742208, 47135835840511,
1684STORE, 47135835885568, 47135835893759,
1685STORE, 47135835840512, 47135835885567,
1686ERASE, 47135835840512, 47135835885567,
1687STORE, 47135835840512, 47135835893759,
1688ERASE, 47135835840512, 47135835893759,
1689STORE, 47135835840512, 47135835885567,
1690STORE, 47135835885568, 47135835893759,
1691 };
1692
1693 unsigned long set4[] = {
1694STORE, 140737488347136, 140737488351231,
1695STORE, 140728251703296, 140737488351231,
1696ERASE, 140728251703296, 140737488351231,
1697STORE, 140728251703296, 140728251707391,
1698STORE, 94668429205504, 94668429377535,
1699ERASE, 94668429205504, 94668429377535,
1700STORE, 94668429205504, 94668429221887,
1701STORE, 94668429221888, 94668429377535,
1702ERASE, 94668429221888, 94668429377535,
1703STORE, 94668429221888, 94668429324287,
1704STORE, 94668429324288, 94668429365247,
1705STORE, 94668429365248, 94668429377535,
1706STORE, 47646523273216, 47646523445247,
1707ERASE, 47646523273216, 47646523445247,
1708STORE, 47646523273216, 47646523277311,
1709STORE, 47646523277312, 47646523445247,
1710ERASE, 47646523277312, 47646523445247,
1711STORE, 47646523277312, 47646523400191,
1712 };
1713
1714 unsigned long set5[] = {
1715STORE, 140737488347136, 140737488351231,
1716STORE, 140726874062848, 140737488351231,
1717ERASE, 140726874062848, 140737488351231,
1718STORE, 140726874062848, 140726874066943,
1719STORE, 94248892870656, 94248893042687,
1720ERASE, 94248892870656, 94248893042687,
1721STORE, 94248892870656, 94248892887039,
1722STORE, 94248892887040, 94248893042687,
1723ERASE, 94248892887040, 94248893042687,
1724STORE, 94248892887040, 94248892989439,
1725STORE, 94248892989440, 94248893030399,
1726STORE, 94248893030400, 94248893042687,
1727STORE, 47884786266112, 47884786438143,
1728ERASE, 47884786266112, 47884786438143,
1729STORE, 47884786266112, 47884786270207,
1730STORE, 47884786270208, 47884786438143,
1731ERASE, 47884786270208, 47884786438143,
1732STORE, 47884786270208, 47884786393087,
1733STORE, 47884786393088, 47884786425855,
1734STORE, 47884786425856, 47884786434047,
1735STORE, 47884786434048, 47884786438143,
1736STORE, 140726874513408, 140726874517503,
1737STORE, 140726874501120, 140726874513407,
1738STORE, 47884786438144, 47884786446335,
1739STORE, 47884786446336, 47884786454527,
1740STORE, 47884786454528, 47884786618367,
1741ERASE, 47884786454528, 47884786618367,
1742STORE, 47884786454528, 47884786466815,
1743STORE, 47884786466816, 47884786618367,
1744STORE, 47884786565120, 47884786618367,
1745STORE, 47884786466816, 47884786565119,
1746ERASE, 47884786466816, 47884786565119,
1747STORE, 47884786466816, 47884786565119,
1748STORE, 47884786610176, 47884786618367,
1749STORE, 47884786565120, 47884786610175,
1750ERASE, 47884786565120, 47884786610175,
1751STORE, 47884786565120, 47884786618367,
1752ERASE, 47884786565120, 47884786618367,
1753STORE, 47884786565120, 47884786610175,
1754STORE, 47884786610176, 47884786618367,
1755ERASE, 47884786610176, 47884786618367,
1756STORE, 47884786610176, 47884786618367,
1757STORE, 47884786618368, 47884789669887,
1758STORE, 47884787163136, 47884789669887,
1759STORE, 47884786618368, 47884787163135,
1760ERASE, 47884787163136, 47884789669887,
1761STORE, 47884787163136, 47884789448703,
1762STORE, 47884789448704, 47884789669887,
1763STORE, 47884788858880, 47884789448703,
1764STORE, 47884787163136, 47884788858879,
1765ERASE, 47884787163136, 47884788858879,
1766STORE, 47884787163136, 47884788858879,
1767STORE, 47884789444608, 47884789448703,
1768STORE, 47884788858880, 47884789444607,
1769ERASE, 47884788858880, 47884789444607,
1770STORE, 47884788858880, 47884789444607,
1771STORE, 47884789653504, 47884789669887,
1772STORE, 47884789448704, 47884789653503,
1773ERASE, 47884789448704, 47884789653503,
1774STORE, 47884789448704, 47884789653503,
1775ERASE, 47884789653504, 47884789669887,
1776STORE, 47884789653504, 47884789669887,
1777STORE, 47884789669888, 47884791508991,
1778STORE, 47884789809152, 47884791508991,
1779STORE, 47884789669888, 47884789809151,
1780ERASE, 47884789809152, 47884791508991,
1781STORE, 47884789809152, 47884791468031,
1782STORE, 47884791468032, 47884791508991,
1783STORE, 47884791152640, 47884791468031,
1784STORE, 47884789809152, 47884791152639,
1785ERASE, 47884789809152, 47884791152639,
1786STORE, 47884789809152, 47884791152639,
1787STORE, 47884791463936, 47884791468031,
1788STORE, 47884791152640, 47884791463935,
1789ERASE, 47884791152640, 47884791463935,
1790STORE, 47884791152640, 47884791463935,
1791STORE, 47884791492608, 47884791508991,
1792STORE, 47884791468032, 47884791492607,
1793ERASE, 47884791468032, 47884791492607,
1794STORE, 47884791468032, 47884791492607,
1795ERASE, 47884791492608, 47884791508991,
1796STORE, 47884791492608, 47884791508991,
1797STORE, 47884791508992, 47884791644159,
1798ERASE, 47884791508992, 47884791644159,
1799STORE, 47884791508992, 47884791533567,
1800STORE, 47884791533568, 47884791644159,
1801STORE, 47884791595008, 47884791644159,
1802STORE, 47884791533568, 47884791595007,
1803ERASE, 47884791533568, 47884791595007,
1804STORE, 47884791533568, 47884791595007,
1805STORE, 47884791619584, 47884791644159,
1806STORE, 47884791595008, 47884791619583,
1807ERASE, 47884791595008, 47884791619583,
1808STORE, 47884791595008, 47884791644159,
1809ERASE, 47884791595008, 47884791644159,
1810STORE, 47884791595008, 47884791619583,
1811STORE, 47884791619584, 47884791644159,
1812STORE, 47884791627776, 47884791644159,
1813STORE, 47884791619584, 47884791627775,
1814ERASE, 47884791619584, 47884791627775,
1815STORE, 47884791619584, 47884791627775,
1816ERASE, 47884791627776, 47884791644159,
1817STORE, 47884791627776, 47884791644159,
1818STORE, 47884791644160, 47884791664639,
1819ERASE, 47884791644160, 47884791664639,
1820STORE, 47884791644160, 47884791648255,
1821STORE, 47884791648256, 47884791664639,
1822STORE, 47884791652352, 47884791664639,
1823STORE, 47884791648256, 47884791652351,
1824ERASE, 47884791648256, 47884791652351,
1825STORE, 47884791648256, 47884791652351,
1826STORE, 47884791656448, 47884791664639,
1827STORE, 47884791652352, 47884791656447,
1828ERASE, 47884791652352, 47884791656447,
1829STORE, 47884791652352, 47884791664639,
1830ERASE, 47884791652352, 47884791664639,
1831STORE, 47884791652352, 47884791656447,
1832STORE, 47884791656448, 47884791664639,
1833ERASE, 47884791656448, 47884791664639,
1834STORE, 47884791656448, 47884791664639,
1835STORE, 47884791664640, 47884791672831,
1836ERASE, 47884791468032, 47884791492607,
1837STORE, 47884791468032, 47884791484415,
1838STORE, 47884791484416, 47884791492607,
1839ERASE, 47884791656448, 47884791664639,
1840STORE, 47884791656448, 47884791660543,
1841STORE, 47884791660544, 47884791664639,
1842ERASE, 47884791619584, 47884791627775,
1843STORE, 47884791619584, 47884791623679,
1844STORE, 47884791623680, 47884791627775,
1845 };
1846 957
1847 unsigned long set6[] = {958 MT_BUG_ON(mt, !mtree_empty(mt));
1848STORE, 140737488347136, 140737488351231,959 check_insert_range(mt, r[0], r[1], xa_mk_value(r[0]), 0);
1849STORE, 140722999021568, 140737488351231,960 check_insert_range(mt, r[2], r[3], xa_mk_value(r[2]), 0);
1850ERASE, 140722999021568, 140737488351231,961 check_insert_range(mt, r[4], r[5], xa_mk_value(r[4]), -EEXIST);
1851STORE, 140722999021568, 140722999025663,962 MT_BUG_ON(mt, !mt_height(mt));
1852STORE, 94901500268544, 94901500440575,963 /* Store */
1853ERASE, 94901500268544, 94901500440575,964 check_store_range(mt, r[4], r[5], xa_mk_value(r[4]), 0);
1854STORE, 94901500268544, 94901500284927,965 check_store_range(mt, r[6], r[7], xa_mk_value(r[6]), 0);
1855STORE, 94901500284928, 94901500440575,966 check_store_range(mt, r[8], r[9], xa_mk_value(r[8]), 0);
1856ERASE, 94901500284928, 94901500440575,967 MT_BUG_ON(mt, !mt_height(mt));
1857STORE, 94901500284928, 94901500387327,968 mtree_destroy(mt);
1858STORE, 94901500387328, 94901500428287,969 MT_BUG_ON(mt, mt_height(mt));
1859STORE, 94901500428288, 94901500440575,
1860STORE, 47430426660864, 47430426832895,
1861ERASE, 47430426660864, 47430426832895,
1862STORE, 47430426660864, 47430426664959,
1863STORE, 47430426664960, 47430426832895,
1864ERASE, 47430426664960, 47430426832895,
1865STORE, 47430426664960, 47430426787839,
1866STORE, 47430426787840, 47430426820607,
1867STORE, 47430426820608, 47430426828799,
1868STORE, 47430426828800, 47430426832895,
1869STORE, 140722999115776, 140722999119871,
1870STORE, 140722999103488, 140722999115775,
1871STORE, 47430426832896, 47430426841087,
1872STORE, 47430426841088, 47430426849279,
1873STORE, 47430426849280, 47430427013119,
1874ERASE, 47430426849280, 47430427013119,
1875STORE, 47430426849280, 47430426861567,
1876STORE, 47430426861568, 47430427013119,
1877STORE, 47430426959872, 47430427013119,
1878STORE, 47430426861568, 47430426959871,
1879ERASE, 47430426861568, 47430426959871,
1880STORE, 47430426861568, 47430426959871,
1881STORE, 47430427004928, 47430427013119,
1882STORE, 47430426959872, 47430427004927,
1883ERASE, 47430426959872, 47430427004927,
1884STORE, 47430426959872, 47430427013119,
1885ERASE, 47430426959872, 47430427013119,
1886STORE, 47430426959872, 47430427004927,
1887STORE, 47430427004928, 47430427013119,
1888ERASE, 47430427004928, 47430427013119,
1889STORE, 47430427004928, 47430427013119,
1890STORE, 47430427013120, 47430430064639,
1891STORE, 47430427557888, 47430430064639,
1892STORE, 47430427013120, 47430427557887,
1893ERASE, 47430427557888, 47430430064639,
1894STORE, 47430427557888, 47430429843455,
1895STORE, 47430429843456, 47430430064639,
1896STORE, 47430429253632, 47430429843455,
1897STORE, 47430427557888, 47430429253631,
1898ERASE, 47430427557888, 47430429253631,
1899STORE, 47430427557888, 47430429253631,
1900STORE, 47430429839360, 47430429843455,
1901STORE, 47430429253632, 47430429839359,
1902ERASE, 47430429253632, 47430429839359,
1903STORE, 47430429253632, 47430429839359,
1904STORE, 47430430048256, 47430430064639,
1905STORE, 47430429843456, 47430430048255,
1906ERASE, 47430429843456, 47430430048255,
1907STORE, 47430429843456, 47430430048255,
1908ERASE, 47430430048256, 47430430064639,
1909STORE, 47430430048256, 47430430064639,
1910STORE, 47430430064640, 47430431903743,
1911STORE, 47430430203904, 47430431903743,
1912STORE, 47430430064640, 47430430203903,
1913ERASE, 47430430203904, 47430431903743,
1914STORE, 47430430203904, 47430431862783,
1915STORE, 47430431862784, 47430431903743,
1916STORE, 47430431547392, 47430431862783,
1917STORE, 47430430203904, 47430431547391,
1918ERASE, 47430430203904, 47430431547391,
1919STORE, 47430430203904, 47430431547391,
1920STORE, 47430431858688, 47430431862783,
1921STORE, 47430431547392, 47430431858687,
1922ERASE, 47430431547392, 47430431858687,
1923STORE, 47430431547392, 47430431858687,
1924STORE, 47430431887360, 47430431903743,
1925STORE, 47430431862784, 47430431887359,
1926ERASE, 47430431862784, 47430431887359,
1927STORE, 47430431862784, 47430431887359,
1928ERASE, 47430431887360, 47430431903743,
1929STORE, 47430431887360, 47430431903743,
1930STORE, 47430431903744, 47430432038911,
1931ERASE, 47430431903744, 47430432038911,
1932STORE, 47430431903744, 47430431928319,
1933STORE, 47430431928320, 47430432038911,
1934STORE, 47430431989760, 47430432038911,
1935STORE, 47430431928320, 47430431989759,
1936ERASE, 47430431928320, 47430431989759,
1937STORE, 47430431928320, 47430431989759,
1938STORE, 47430432014336, 47430432038911,
1939STORE, 47430431989760, 47430432014335,
1940ERASE, 47430431989760, 47430432014335,
1941STORE, 47430431989760, 47430432038911,
1942ERASE, 47430431989760, 47430432038911,
1943STORE, 47430431989760, 47430432014335,
1944STORE, 47430432014336, 47430432038911,
1945STORE, 47430432022528, 47430432038911,
1946STORE, 47430432014336, 47430432022527,
1947ERASE, 47430432014336, 47430432022527,
1948STORE, 47430432014336, 47430432022527,
1949ERASE, 47430432022528, 47430432038911,
1950STORE, 47430432022528, 47430432038911,
1951STORE, 47430432038912, 47430432059391,
1952ERASE, 47430432038912, 47430432059391,
1953STORE, 47430432038912, 47430432043007,
1954STORE, 47430432043008, 47430432059391,
1955STORE, 47430432047104, 47430432059391,
1956STORE, 47430432043008, 47430432047103,
1957ERASE, 47430432043008, 47430432047103,
1958STORE, 47430432043008, 47430432047103,
1959STORE, 47430432051200, 47430432059391,
1960STORE, 47430432047104, 47430432051199,
1961ERASE, 47430432047104, 47430432051199,
1962STORE, 47430432047104, 47430432059391,
1963ERASE, 47430432047104, 47430432059391,
1964STORE, 47430432047104, 47430432051199,
1965STORE, 47430432051200, 47430432059391,
1966ERASE, 47430432051200, 47430432059391,
1967STORE, 47430432051200, 47430432059391,
1968STORE, 47430432059392, 47430432067583,
1969ERASE, 47430431862784, 47430431887359,
1970STORE, 47430431862784, 47430431879167,
1971STORE, 47430431879168, 47430431887359,
1972ERASE, 47430432051200, 47430432059391,
1973STORE, 47430432051200, 47430432055295,
1974STORE, 47430432055296, 47430432059391,
1975ERASE, 47430432014336, 47430432022527,
1976STORE, 47430432014336, 47430432018431,
1977STORE, 47430432018432, 47430432022527,
1978 };
1979 unsigned long set7[] = {
1980STORE, 140737488347136, 140737488351231,
1981STORE, 140729808330752, 140737488351231,
1982ERASE, 140729808330752, 140737488351231,
1983STORE, 140729808330752, 140729808334847,
1984STORE, 94629632020480, 94629632192511,
1985ERASE, 94629632020480, 94629632192511,
1986STORE, 94629632020480, 94629632036863,
1987STORE, 94629632036864, 94629632192511,
1988ERASE, 94629632036864, 94629632192511,
1989STORE, 94629632036864, 94629632139263,
1990STORE, 94629632139264, 94629632180223,
1991STORE, 94629632180224, 94629632192511,
1992STORE, 47439981776896, 47439981948927,
1993ERASE, 47439981776896, 47439981948927,
1994STORE, 47439981776896, 47439981780991,
1995STORE, 47439981780992, 47439981948927,
1996ERASE, 47439981780992, 47439981948927,
1997STORE, 47439981780992, 47439981903871,
1998STORE, 47439981903872, 47439981936639,
1999STORE, 47439981936640, 47439981944831,
2000STORE, 47439981944832, 47439981948927,
2001STORE, 140729808474112, 140729808478207,
2002STORE, 140729808461824, 140729808474111,
2003STORE, 47439981948928, 47439981957119,
2004STORE, 47439981957120, 47439981965311,
2005STORE, 47439981965312, 47439982129151,
2006ERASE, 47439981965312, 47439982129151,
2007STORE, 47439981965312, 47439981977599,
2008STORE, 47439981977600, 47439982129151,
2009STORE, 47439982075904, 47439982129151,
2010STORE, 47439981977600, 47439982075903,
2011ERASE, 47439981977600, 47439982075903,
2012STORE, 47439981977600, 47439982075903,
2013STORE, 47439982120960, 47439982129151,
2014STORE, 47439982075904, 47439982120959,
2015ERASE, 47439982075904, 47439982120959,
2016STORE, 47439982075904, 47439982129151,
2017ERASE, 47439982075904, 47439982129151,
2018STORE, 47439982075904, 47439982120959,
2019STORE, 47439982120960, 47439982129151,
2020ERASE, 47439982120960, 47439982129151,
2021STORE, 47439982120960, 47439982129151,
2022STORE, 47439982129152, 47439985180671,
2023STORE, 47439982673920, 47439985180671,
2024STORE, 47439982129152, 47439982673919,
2025ERASE, 47439982673920, 47439985180671,
2026STORE, 47439982673920, 47439984959487,
2027STORE, 47439984959488, 47439985180671,
2028STORE, 47439984369664, 47439984959487,
2029STORE, 47439982673920, 47439984369663,
2030ERASE, 47439982673920, 47439984369663,
2031STORE, 47439982673920, 47439984369663,
2032STORE, 47439984955392, 47439984959487,
2033STORE, 47439984369664, 47439984955391,
2034ERASE, 47439984369664, 47439984955391,
2035STORE, 47439984369664, 47439984955391,
2036STORE, 47439985164288, 47439985180671,
2037STORE, 47439984959488, 47439985164287,
2038ERASE, 47439984959488, 47439985164287,
2039STORE, 47439984959488, 47439985164287,
2040ERASE, 47439985164288, 47439985180671,
2041STORE, 47439985164288, 47439985180671,
2042STORE, 47439985180672, 47439987019775,
2043STORE, 47439985319936, 47439987019775,
2044STORE, 47439985180672, 47439985319935,
2045ERASE, 47439985319936, 47439987019775,
2046STORE, 47439985319936, 47439986978815,
2047STORE, 47439986978816, 47439987019775,
2048STORE, 47439986663424, 47439986978815,
2049STORE, 47439985319936, 47439986663423,
2050ERASE, 47439985319936, 47439986663423,
2051STORE, 47439985319936, 47439986663423,
2052STORE, 47439986974720, 47439986978815,
2053STORE, 47439986663424, 47439986974719,
2054ERASE, 47439986663424, 47439986974719,
2055STORE, 47439986663424, 47439986974719,
2056STORE, 47439987003392, 47439987019775,
2057STORE, 47439986978816, 47439987003391,
2058ERASE, 47439986978816, 47439987003391,
2059STORE, 47439986978816, 47439987003391,
2060ERASE, 47439987003392, 47439987019775,
2061STORE, 47439987003392, 47439987019775,
2062STORE, 47439987019776, 47439987154943,
2063ERASE, 47439987019776, 47439987154943,
2064STORE, 47439987019776, 47439987044351,
2065STORE, 47439987044352, 47439987154943,
2066STORE, 47439987105792, 47439987154943,
2067STORE, 47439987044352, 47439987105791,
2068ERASE, 47439987044352, 47439987105791,
2069STORE, 47439987044352, 47439987105791,
2070STORE, 47439987130368, 47439987154943,
2071STORE, 47439987105792, 47439987130367,
2072ERASE, 47439987105792, 47439987130367,
2073STORE, 47439987105792, 47439987154943,
2074ERASE, 47439987105792, 47439987154943,
2075STORE, 47439987105792, 47439987130367,
2076STORE, 47439987130368, 47439987154943,
2077STORE, 47439987138560, 47439987154943,
2078STORE, 47439987130368, 47439987138559,
2079ERASE, 47439987130368, 47439987138559,
2080STORE, 47439987130368, 47439987138559,
2081ERASE, 47439987138560, 47439987154943,
2082STORE, 47439987138560, 47439987154943,
2083STORE, 47439987154944, 47439987175423,
2084ERASE, 47439987154944, 47439987175423,
2085STORE, 47439987154944, 47439987159039,
2086STORE, 47439987159040, 47439987175423,
2087STORE, 47439987163136, 47439987175423,
2088STORE, 47439987159040, 47439987163135,
2089ERASE, 47439987159040, 47439987163135,
2090STORE, 47439987159040, 47439987163135,
2091STORE, 47439987167232, 47439987175423,
2092STORE, 47439987163136, 47439987167231,
2093ERASE, 47439987163136, 47439987167231,
2094STORE, 47439987163136, 47439987175423,
2095ERASE, 47439987163136, 47439987175423,
2096STORE, 47439987163136, 47439987167231,
2097STORE, 47439987167232, 47439987175423,
2098ERASE, 47439987167232, 47439987175423,
2099STORE, 47439987167232, 47439987175423,
2100STORE, 47439987175424, 47439987183615,
2101ERASE, 47439986978816, 47439987003391,
2102STORE, 47439986978816, 47439986995199,
2103STORE, 47439986995200, 47439987003391,
2104ERASE, 47439987167232, 47439987175423,
2105STORE, 47439987167232, 47439987171327,
2106STORE, 47439987171328, 47439987175423,
2107ERASE, 47439987130368, 47439987138559,
2108STORE, 47439987130368, 47439987134463,
2109STORE, 47439987134464, 47439987138559,
2110 };
2111 unsigned long set8[] = {
2112STORE, 140737488347136, 140737488351231,
2113STORE, 140722482974720, 140737488351231,
2114ERASE, 140722482974720, 140737488351231,
2115STORE, 140722482974720, 140722482978815,
2116STORE, 94121505034240, 94121505206271,
2117ERASE, 94121505034240, 94121505206271,
2118STORE, 94121505034240, 94121505050623,
2119STORE, 94121505050624, 94121505206271,
2120ERASE, 94121505050624, 94121505206271,
2121STORE, 94121505050624, 94121505153023,
2122STORE, 94121505153024, 94121505193983,
2123STORE, 94121505193984, 94121505206271,
2124STORE, 47708483284992, 47708483457023,
2125ERASE, 47708483284992, 47708483457023,
2126STORE, 47708483284992, 47708483289087,
2127STORE, 47708483289088, 47708483457023,
2128ERASE, 47708483289088, 47708483457023,
2129STORE, 47708483289088, 47708483411967,
2130STORE, 47708483411968, 47708483444735,
2131STORE, 47708483444736, 47708483452927,
2132STORE, 47708483452928, 47708483457023,
2133STORE, 140722483142656, 140722483146751,
2134STORE, 140722483130368, 140722483142655,
2135STORE, 47708483457024, 47708483465215,
2136STORE, 47708483465216, 47708483473407,
2137STORE, 47708483473408, 47708483637247,
2138ERASE, 47708483473408, 47708483637247,
2139STORE, 47708483473408, 47708483485695,
2140STORE, 47708483485696, 47708483637247,
2141STORE, 47708483584000, 47708483637247,
2142STORE, 47708483485696, 47708483583999,
2143ERASE, 47708483485696, 47708483583999,
2144STORE, 47708483485696, 47708483583999,
2145STORE, 47708483629056, 47708483637247,
2146STORE, 47708483584000, 47708483629055,
2147ERASE, 47708483584000, 47708483629055,
2148STORE, 47708483584000, 47708483637247,
2149ERASE, 47708483584000, 47708483637247,
2150STORE, 47708483584000, 47708483629055,
2151STORE, 47708483629056, 47708483637247,
2152ERASE, 47708483629056, 47708483637247,
2153STORE, 47708483629056, 47708483637247,
2154STORE, 47708483637248, 47708486688767,
2155STORE, 47708484182016, 47708486688767,
2156STORE, 47708483637248, 47708484182015,
2157ERASE, 47708484182016, 47708486688767,
2158STORE, 47708484182016, 47708486467583,
2159STORE, 47708486467584, 47708486688767,
2160STORE, 47708485877760, 47708486467583,
2161STORE, 47708484182016, 47708485877759,
2162ERASE, 47708484182016, 47708485877759,
2163STORE, 47708484182016, 47708485877759,
2164STORE, 47708486463488, 47708486467583,
2165STORE, 47708485877760, 47708486463487,
2166ERASE, 47708485877760, 47708486463487,
2167STORE, 47708485877760, 47708486463487,
2168STORE, 47708486672384, 47708486688767,
2169STORE, 47708486467584, 47708486672383,
2170ERASE, 47708486467584, 47708486672383,
2171STORE, 47708486467584, 47708486672383,
2172ERASE, 47708486672384, 47708486688767,
2173STORE, 47708486672384, 47708486688767,
2174STORE, 47708486688768, 47708488527871,
2175STORE, 47708486828032, 47708488527871,
2176STORE, 47708486688768, 47708486828031,
2177ERASE, 47708486828032, 47708488527871,
2178STORE, 47708486828032, 47708488486911,
2179STORE, 47708488486912, 47708488527871,
2180STORE, 47708488171520, 47708488486911,
2181STORE, 47708486828032, 47708488171519,
2182ERASE, 47708486828032, 47708488171519,
2183STORE, 47708486828032, 47708488171519,
2184STORE, 47708488482816, 47708488486911,
2185STORE, 47708488171520, 47708488482815,
2186ERASE, 47708488171520, 47708488482815,
2187STORE, 47708488171520, 47708488482815,
2188STORE, 47708488511488, 47708488527871,
2189STORE, 47708488486912, 47708488511487,
2190ERASE, 47708488486912, 47708488511487,
2191STORE, 47708488486912, 47708488511487,
2192ERASE, 47708488511488, 47708488527871,
2193STORE, 47708488511488, 47708488527871,
2194STORE, 47708488527872, 47708488663039,
2195ERASE, 47708488527872, 47708488663039,
2196STORE, 47708488527872, 47708488552447,
2197STORE, 47708488552448, 47708488663039,
2198STORE, 47708488613888, 47708488663039,
2199STORE, 47708488552448, 47708488613887,
2200ERASE, 47708488552448, 47708488613887,
2201STORE, 47708488552448, 47708488613887,
2202STORE, 47708488638464, 47708488663039,
2203STORE, 47708488613888, 47708488638463,
2204ERASE, 47708488613888, 47708488638463,
2205STORE, 47708488613888, 47708488663039,
2206ERASE, 47708488613888, 47708488663039,
2207STORE, 47708488613888, 47708488638463,
2208STORE, 47708488638464, 47708488663039,
2209STORE, 47708488646656, 47708488663039,
2210STORE, 47708488638464, 47708488646655,
2211ERASE, 47708488638464, 47708488646655,
2212STORE, 47708488638464, 47708488646655,
2213ERASE, 47708488646656, 47708488663039,
2214STORE, 47708488646656, 47708488663039,
2215STORE, 47708488663040, 47708488683519,
2216ERASE, 47708488663040, 47708488683519,
2217STORE, 47708488663040, 47708488667135,
2218STORE, 47708488667136, 47708488683519,
2219STORE, 47708488671232, 47708488683519,
2220STORE, 47708488667136, 47708488671231,
2221ERASE, 47708488667136, 47708488671231,
2222STORE, 47708488667136, 47708488671231,
2223STORE, 47708488675328, 47708488683519,
2224STORE, 47708488671232, 47708488675327,
2225ERASE, 47708488671232, 47708488675327,
2226STORE, 47708488671232, 47708488683519,
2227ERASE, 47708488671232, 47708488683519,
2228STORE, 47708488671232, 47708488675327,
2229STORE, 47708488675328, 47708488683519,
2230ERASE, 47708488675328, 47708488683519,
2231STORE, 47708488675328, 47708488683519,
2232STORE, 47708488683520, 47708488691711,
2233ERASE, 47708488486912, 47708488511487,
2234STORE, 47708488486912, 47708488503295,
2235STORE, 47708488503296, 47708488511487,
2236ERASE, 47708488675328, 47708488683519,
2237STORE, 47708488675328, 47708488679423,
2238STORE, 47708488679424, 47708488683519,
2239ERASE, 47708488638464, 47708488646655,
2240STORE, 47708488638464, 47708488642559,
2241STORE, 47708488642560, 47708488646655,
2242 };
2243 970
2244 unsigned long set9[] = {
2245STORE, 140737488347136, 140737488351231,
2246STORE, 140736427839488, 140737488351231,
2247ERASE, 140736427839488, 140736427839488,
2248STORE, 140736427839488, 140736427843583,
2249STORE, 94071213395968, 94071213567999,
2250ERASE, 94071213395968, 94071213395968,
2251STORE, 94071213395968, 94071213412351,
2252STORE, 94071213412352, 94071213567999,
2253ERASE, 94071213412352, 94071213412352,
2254STORE, 94071213412352, 94071213514751,
2255STORE, 94071213514752, 94071213555711,
2256STORE, 94071213555712, 94071213567999,
2257STORE, 139968410644480, 139968410816511,
2258ERASE, 139968410644480, 139968410644480,
2259STORE, 139968410644480, 139968410648575,
2260STORE, 139968410648576, 139968410816511,
2261ERASE, 139968410648576, 139968410648576,
2262STORE, 139968410648576, 139968410771455,
2263STORE, 139968410771456, 139968410804223,
2264STORE, 139968410804224, 139968410812415,
2265STORE, 139968410812416, 139968410816511,
2266STORE, 140736429277184, 140736429281279,
2267STORE, 140736429264896, 140736429277183,
2268STORE, 47664384352256, 47664384360447,
2269STORE, 47664384360448, 47664384368639,
2270STORE, 47664384368640, 47664384532479,
2271ERASE, 47664384368640, 47664384368640,
2272STORE, 47664384368640, 47664384380927,
2273STORE, 47664384380928, 47664384532479,
2274STORE, 47664384479232, 47664384532479,
2275STORE, 47664384380928, 47664384479231,
2276ERASE, 47664384380928, 47664384380928,
2277STORE, 47664384380928, 47664384479231,
2278STORE, 47664384524288, 47664384532479,
2279STORE, 47664384479232, 47664384524287,
2280ERASE, 47664384479232, 47664384479232,
2281STORE, 47664384479232, 47664384532479,
2282ERASE, 47664384479232, 47664384479232,
2283STORE, 47664384479232, 47664384524287,
2284STORE, 47664384524288, 47664384532479,
2285ERASE, 47664384524288, 47664384524288,
2286STORE, 47664384524288, 47664384532479,
2287STORE, 47664384532480, 47664387583999,
2288STORE, 47664385077248, 47664387583999,
2289STORE, 47664384532480, 47664385077247,
2290ERASE, 47664385077248, 47664385077248,
2291STORE, 47664385077248, 47664387362815,
2292STORE, 47664387362816, 47664387583999,
2293STORE, 47664386772992, 47664387362815,
2294STORE, 47664385077248, 47664386772991,
2295ERASE, 47664385077248, 47664385077248,
2296STORE, 47664385077248, 47664386772991,
2297STORE, 47664387358720, 47664387362815,
2298STORE, 47664386772992, 47664387358719,
2299ERASE, 47664386772992, 47664386772992,
2300STORE, 47664386772992, 47664387358719,
2301STORE, 47664387567616, 47664387583999,
2302STORE, 47664387362816, 47664387567615,
2303ERASE, 47664387362816, 47664387362816,
2304STORE, 47664387362816, 47664387567615,
2305ERASE, 47664387567616, 47664387567616,
2306STORE, 47664387567616, 47664387583999,
2307STORE, 47664387584000, 47664389423103,
2308STORE, 47664387723264, 47664389423103,
2309STORE, 47664387584000, 47664387723263,
2310ERASE, 47664387723264, 47664387723264,
2311STORE, 47664387723264, 47664389382143,
2312STORE, 47664389382144, 47664389423103,
2313STORE, 47664389066752, 47664389382143,
2314STORE, 47664387723264, 47664389066751,
2315ERASE, 47664387723264, 47664387723264,
2316STORE, 47664387723264, 47664389066751,
2317STORE, 47664389378048, 47664389382143,
2318STORE, 47664389066752, 47664389378047,
2319ERASE, 47664389066752, 47664389066752,
2320STORE, 47664389066752, 47664389378047,
2321STORE, 47664389406720, 47664389423103,
2322STORE, 47664389382144, 47664389406719,
2323ERASE, 47664389382144, 47664389382144,
2324STORE, 47664389382144, 47664389406719,
2325ERASE, 47664389406720, 47664389406720,
2326STORE, 47664389406720, 47664389423103,
2327STORE, 47664389423104, 47664389558271,
2328ERASE, 47664389423104, 47664389423104,
2329STORE, 47664389423104, 47664389447679,
2330STORE, 47664389447680, 47664389558271,
2331STORE, 47664389509120, 47664389558271,
2332STORE, 47664389447680, 47664389509119,
2333ERASE, 47664389447680, 47664389447680,
2334STORE, 47664389447680, 47664389509119,
2335STORE, 47664389533696, 47664389558271,
2336STORE, 47664389509120, 47664389533695,
2337ERASE, 47664389509120, 47664389509120,
2338STORE, 47664389509120, 47664389558271,
2339ERASE, 47664389509120, 47664389509120,
2340STORE, 47664389509120, 47664389533695,
2341STORE, 47664389533696, 47664389558271,
2342STORE, 47664389541888, 47664389558271,
2343STORE, 47664389533696, 47664389541887,
2344ERASE, 47664389533696, 47664389533696,
2345STORE, 47664389533696, 47664389541887,
2346ERASE, 47664389541888, 47664389541888,
2347STORE, 47664389541888, 47664389558271,
2348STORE, 47664389558272, 47664389578751,
2349ERASE, 47664389558272, 47664389558272,
2350STORE, 47664389558272, 47664389562367,
2351STORE, 47664389562368, 47664389578751,
2352STORE, 47664389566464, 47664389578751,
2353STORE, 47664389562368, 47664389566463,
2354ERASE, 47664389562368, 47664389562368,
2355STORE, 47664389562368, 47664389566463,
2356STORE, 47664389570560, 47664389578751,
2357STORE, 47664389566464, 47664389570559,
2358ERASE, 47664389566464, 47664389566464,
2359STORE, 47664389566464, 47664389578751,
2360ERASE, 47664389566464, 47664389566464,
2361STORE, 47664389566464, 47664389570559,
2362STORE, 47664389570560, 47664389578751,
2363ERASE, 47664389570560, 47664389570560,
2364STORE, 47664389570560, 47664389578751,
2365STORE, 47664389578752, 47664389586943,
2366ERASE, 47664389382144, 47664389382144,
2367STORE, 47664389382144, 47664389398527,
2368STORE, 47664389398528, 47664389406719,
2369ERASE, 47664389570560, 47664389570560,
2370STORE, 47664389570560, 47664389574655,
2371STORE, 47664389574656, 47664389578751,
2372ERASE, 47664389533696, 47664389533696,
2373STORE, 47664389533696, 47664389537791,
2374STORE, 47664389537792, 47664389541887,
2375ERASE, 47664387362816, 47664387362816,
2376STORE, 47664387362816, 47664387559423,
2377STORE, 47664387559424, 47664387567615,
2378ERASE, 47664384524288, 47664384524288,
2379STORE, 47664384524288, 47664384528383,
2380STORE, 47664384528384, 47664384532479,
2381ERASE, 94071213555712, 94071213555712,
2382STORE, 94071213555712, 94071213563903,
2383STORE, 94071213563904, 94071213567999,
2384ERASE, 139968410804224, 139968410804224,
2385STORE, 139968410804224, 139968410808319,
2386STORE, 139968410808320, 139968410812415,
2387ERASE, 47664384352256, 47664384352256,
2388STORE, 94071244402688, 94071244537855,
2389STORE, 140737488347136, 140737488351231,
2390STORE, 140728271503360, 140737488351231,
2391ERASE, 140728271503360, 140728271503360,
2392STORE, 140728271503360, 140728271507455,
2393STORE, 94410361982976, 94410362155007,
2394ERASE, 94410361982976, 94410361982976,
2395STORE, 94410361982976, 94410361999359,
2396STORE, 94410361999360, 94410362155007,
2397ERASE, 94410361999360, 94410361999360,
2398STORE, 94410361999360, 94410362101759,
2399STORE, 94410362101760, 94410362142719,
2400STORE, 94410362142720, 94410362155007,
2401STORE, 140351953997824, 140351954169855,
2402ERASE, 140351953997824, 140351953997824,
2403STORE, 140351953997824, 140351954001919,
2404STORE, 140351954001920, 140351954169855,
2405ERASE, 140351954001920, 140351954001920,
2406STORE, 140351954001920, 140351954124799,
2407STORE, 140351954124800, 140351954157567,
2408STORE, 140351954157568, 140351954165759,
2409STORE, 140351954165760, 140351954169855,
2410STORE, 140728272429056, 140728272433151,
2411STORE, 140728272416768, 140728272429055,
2412STORE, 47280840998912, 47280841007103,
2413STORE, 47280841007104, 47280841015295,
2414STORE, 47280841015296, 47280841179135,
2415ERASE, 47280841015296, 47280841015296,
2416STORE, 47280841015296, 47280841027583,
2417STORE, 47280841027584, 47280841179135,
2418STORE, 47280841125888, 47280841179135,
2419STORE, 47280841027584, 47280841125887,
2420ERASE, 47280841027584, 47280841027584,
2421STORE, 47280841027584, 47280841125887,
2422STORE, 47280841170944, 47280841179135,
2423STORE, 47280841125888, 47280841170943,
2424ERASE, 47280841125888, 47280841125888,
2425STORE, 47280841125888, 47280841179135,
2426ERASE, 47280841125888, 47280841125888,
2427STORE, 47280841125888, 47280841170943,
2428STORE, 47280841170944, 47280841179135,
2429ERASE, 47280841170944, 47280841170944,
2430STORE, 47280841170944, 47280841179135,
2431STORE, 47280841179136, 47280844230655,
2432STORE, 47280841723904, 47280844230655,
2433STORE, 47280841179136, 47280841723903,
2434ERASE, 47280841723904, 47280841723904,
2435STORE, 47280841723904, 47280844009471,
2436STORE, 47280844009472, 47280844230655,
2437STORE, 47280843419648, 47280844009471,
2438STORE, 47280841723904, 47280843419647,
2439ERASE, 47280841723904, 47280841723904,
2440STORE, 47280841723904, 47280843419647,
2441STORE, 47280844005376, 47280844009471,
2442STORE, 47280843419648, 47280844005375,
2443ERASE, 47280843419648, 47280843419648,
2444STORE, 47280843419648, 47280844005375,
2445STORE, 47280844214272, 47280844230655,
2446STORE, 47280844009472, 47280844214271,
2447ERASE, 47280844009472, 47280844009472,
2448STORE, 47280844009472, 47280844214271,
2449ERASE, 47280844214272, 47280844214272,
2450STORE, 47280844214272, 47280844230655,
2451STORE, 47280844230656, 47280846069759,
2452STORE, 47280844369920, 47280846069759,
2453STORE, 47280844230656, 47280844369919,
2454ERASE, 47280844369920, 47280844369920,
2455STORE, 47280844369920, 47280846028799,
2456STORE, 47280846028800, 47280846069759,
2457STORE, 47280845713408, 47280846028799,
2458STORE, 47280844369920, 47280845713407,
2459ERASE, 47280844369920, 47280844369920,
2460STORE, 47280844369920, 47280845713407,
2461STORE, 47280846024704, 47280846028799,
2462STORE, 47280845713408, 47280846024703,
2463ERASE, 47280845713408, 47280845713408,
2464STORE, 47280845713408, 47280846024703,
2465STORE, 47280846053376, 47280846069759,
2466STORE, 47280846028800, 47280846053375,
2467ERASE, 47280846028800, 47280846028800,
2468STORE, 47280846028800, 47280846053375,
2469ERASE, 47280846053376, 47280846053376,
2470STORE, 47280846053376, 47280846069759,
2471STORE, 47280846069760, 47280846204927,
2472ERASE, 47280846069760, 47280846069760,
2473STORE, 47280846069760, 47280846094335,
2474STORE, 47280846094336, 47280846204927,
2475STORE, 47280846155776, 47280846204927,
2476STORE, 47280846094336, 47280846155775,
2477ERASE, 47280846094336, 47280846094336,
2478STORE, 47280846094336, 47280846155775,
2479STORE, 47280846180352, 47280846204927,
2480STORE, 47280846155776, 47280846180351,
2481ERASE, 47280846155776, 47280846155776,
2482STORE, 47280846155776, 47280846204927,
2483ERASE, 47280846155776, 47280846155776,
2484STORE, 47280846155776, 47280846180351,
2485STORE, 47280846180352, 47280846204927,
2486STORE, 47280846188544, 47280846204927,
2487STORE, 47280846180352, 47280846188543,
2488ERASE, 47280846180352, 47280846180352,
2489STORE, 47280846180352, 47280846188543,
2490ERASE, 47280846188544, 47280846188544,
2491STORE, 47280846188544, 47280846204927,
2492STORE, 47280846204928, 47280846225407,
2493ERASE, 47280846204928, 47280846204928,
2494STORE, 47280846204928, 47280846209023,
2495STORE, 47280846209024, 47280846225407,
2496STORE, 47280846213120, 47280846225407,
2497STORE, 47280846209024, 47280846213119,
2498ERASE, 47280846209024, 47280846209024,
2499STORE, 47280846209024, 47280846213119,
2500STORE, 47280846217216, 47280846225407,
2501STORE, 47280846213120, 47280846217215,
2502ERASE, 47280846213120, 47280846213120,
2503STORE, 47280846213120, 47280846225407,
2504ERASE, 47280846213120, 47280846213120,
2505STORE, 47280846213120, 47280846217215,
2506STORE, 47280846217216, 47280846225407,
2507ERASE, 47280846217216, 47280846217216,
2508STORE, 47280846217216, 47280846225407,
2509STORE, 47280846225408, 47280846233599,
2510ERASE, 47280846028800, 47280846028800,
2511STORE, 47280846028800, 47280846045183,
2512STORE, 47280846045184, 47280846053375,
2513ERASE, 47280846217216, 47280846217216,
2514STORE, 47280846217216, 47280846221311,
2515STORE, 47280846221312, 47280846225407,
2516ERASE, 47280846180352, 47280846180352,
2517STORE, 47280846180352, 47280846184447,
2518STORE, 47280846184448, 47280846188543,
2519ERASE, 47280844009472, 47280844009472,
2520STORE, 47280844009472, 47280844206079,
2521STORE, 47280844206080, 47280844214271,
2522ERASE, 47280841170944, 47280841170944,
2523STORE, 47280841170944, 47280841175039,
2524STORE, 47280841175040, 47280841179135,
2525ERASE, 94410362142720, 94410362142720,
2526STORE, 94410362142720, 94410362150911,
2527STORE, 94410362150912, 94410362155007,
2528ERASE, 140351954157568, 140351954157568,
2529STORE, 140351954157568, 140351954161663,
2530STORE, 140351954161664, 140351954165759,
2531ERASE, 47280840998912, 47280840998912,
2532STORE, 94410379456512, 94410379591679,
2533STORE, 140737488347136, 140737488351231,
2534STORE, 140732946362368, 140737488351231,
2535ERASE, 140732946362368, 140732946362368,
2536STORE, 140732946362368, 140732946366463,
2537STORE, 94352937934848, 94352938106879,
2538ERASE, 94352937934848, 94352937934848,
2539STORE, 94352937934848, 94352937951231,
2540STORE, 94352937951232, 94352938106879,
2541ERASE, 94352937951232, 94352937951232,
2542STORE, 94352937951232, 94352938053631,
2543STORE, 94352938053632, 94352938094591,
2544STORE, 94352938094592, 94352938106879,
2545STORE, 140595518742528, 140595518914559,
2546ERASE, 140595518742528, 140595518742528,
2547STORE, 140595518742528, 140595518746623,
2548STORE, 140595518746624, 140595518914559,
2549ERASE, 140595518746624, 140595518746624,
2550STORE, 140595518746624, 140595518869503,
2551STORE, 140595518869504, 140595518902271,
2552STORE, 140595518902272, 140595518910463,
2553STORE, 140595518910464, 140595518914559,
2554STORE, 140732947468288, 140732947472383,
2555STORE, 140732947456000, 140732947468287,
2556STORE, 47037276254208, 47037276262399,
2557STORE, 47037276262400, 47037276270591,
2558STORE, 47037276270592, 47037276434431,
2559ERASE, 47037276270592, 47037276270592,
2560STORE, 47037276270592, 47037276282879,
2561STORE, 47037276282880, 47037276434431,
2562STORE, 47037276381184, 47037276434431,
2563STORE, 47037276282880, 47037276381183,
2564ERASE, 47037276282880, 47037276282880,
2565STORE, 47037276282880, 47037276381183,
2566STORE, 47037276426240, 47037276434431,
2567STORE, 47037276381184, 47037276426239,
2568ERASE, 47037276381184, 47037276381184,
2569STORE, 47037276381184, 47037276434431,
2570ERASE, 47037276381184, 47037276381184,
2571STORE, 47037276381184, 47037276426239,
2572STORE, 47037276426240, 47037276434431,
2573ERASE, 47037276426240, 47037276426240,
2574STORE, 47037276426240, 47037276434431,
2575STORE, 47037276434432, 47037279485951,
2576STORE, 47037276979200, 47037279485951,
2577STORE, 47037276434432, 47037276979199,
2578ERASE, 47037276979200, 47037276979200,
2579STORE, 47037276979200, 47037279264767,
2580STORE, 47037279264768, 47037279485951,
2581STORE, 47037278674944, 47037279264767,
2582STORE, 47037276979200, 47037278674943,
2583ERASE, 47037276979200, 47037276979200,
2584STORE, 47037276979200, 47037278674943,
2585STORE, 47037279260672, 47037279264767,
2586STORE, 47037278674944, 47037279260671,
2587ERASE, 47037278674944, 47037278674944,
2588STORE, 47037278674944, 47037279260671,
2589STORE, 47037279469568, 47037279485951,
2590STORE, 47037279264768, 47037279469567,
2591ERASE, 47037279264768, 47037279264768,
2592STORE, 47037279264768, 47037279469567,
2593ERASE, 47037279469568, 47037279469568,
2594STORE, 47037279469568, 47037279485951,
2595STORE, 47037279485952, 47037281325055,
2596STORE, 47037279625216, 47037281325055,
2597STORE, 47037279485952, 47037279625215,
2598ERASE, 47037279625216, 47037279625216,
2599STORE, 47037279625216, 47037281284095,
2600STORE, 47037281284096, 47037281325055,
2601STORE, 47037280968704, 47037281284095,
2602STORE, 47037279625216, 47037280968703,
2603ERASE, 47037279625216, 47037279625216,
2604STORE, 47037279625216, 47037280968703,
2605STORE, 47037281280000, 47037281284095,
2606STORE, 47037280968704, 47037281279999,
2607ERASE, 47037280968704, 47037280968704,
2608STORE, 47037280968704, 47037281279999,
2609STORE, 47037281308672, 47037281325055,
2610STORE, 47037281284096, 47037281308671,
2611ERASE, 47037281284096, 47037281284096,
2612STORE, 47037281284096, 47037281308671,
2613ERASE, 47037281308672, 47037281308672,
2614STORE, 47037281308672, 47037281325055,
2615STORE, 47037281325056, 47037281460223,
2616ERASE, 47037281325056, 47037281325056,
2617STORE, 47037281325056, 47037281349631,
2618STORE, 47037281349632, 47037281460223,
2619STORE, 47037281411072, 47037281460223,
2620STORE, 47037281349632, 47037281411071,
2621ERASE, 47037281349632, 47037281349632,
2622STORE, 47037281349632, 47037281411071,
2623STORE, 47037281435648, 47037281460223,
2624STORE, 47037281411072, 47037281435647,
2625ERASE, 47037281411072, 47037281411072,
2626STORE, 47037281411072, 47037281460223,
2627ERASE, 47037281411072, 47037281411072,
2628STORE, 47037281411072, 47037281435647,
2629STORE, 47037281435648, 47037281460223,
2630STORE, 47037281443840, 47037281460223,
2631STORE, 47037281435648, 47037281443839,
2632ERASE, 47037281435648, 47037281435648,
2633STORE, 47037281435648, 47037281443839,
2634ERASE, 47037281443840, 47037281443840,
2635STORE, 47037281443840, 47037281460223,
2636STORE, 47037281460224, 47037281480703,
2637ERASE, 47037281460224, 47037281460224,
2638STORE, 47037281460224, 47037281464319,
2639STORE, 47037281464320, 47037281480703,
2640STORE, 47037281468416, 47037281480703,
2641STORE, 47037281464320, 47037281468415,
2642ERASE, 47037281464320, 47037281464320,
2643STORE, 47037281464320, 47037281468415,
2644STORE, 47037281472512, 47037281480703,
2645STORE, 47037281468416, 47037281472511,
2646ERASE, 47037281468416, 47037281468416,
2647STORE, 47037281468416, 47037281480703,
2648ERASE, 47037281468416, 47037281468416,
2649STORE, 47037281468416, 47037281472511,
2650STORE, 47037281472512, 47037281480703,
2651ERASE, 47037281472512, 47037281472512,
2652STORE, 47037281472512, 47037281480703,
2653STORE, 47037281480704, 47037281488895,
2654ERASE, 47037281284096, 47037281284096,
2655STORE, 47037281284096, 47037281300479,
2656STORE, 47037281300480, 47037281308671,
2657ERASE, 47037281472512, 47037281472512,
2658STORE, 47037281472512, 47037281476607,
2659STORE, 47037281476608, 47037281480703,
2660ERASE, 47037281435648, 47037281435648,
2661STORE, 47037281435648, 47037281439743,
2662STORE, 47037281439744, 47037281443839,
2663ERASE, 47037279264768, 47037279264768,
2664STORE, 47037279264768, 47037279461375,
2665STORE, 47037279461376, 47037279469567,
2666ERASE, 47037276426240, 47037276426240,
2667STORE, 47037276426240, 47037276430335,
2668STORE, 47037276430336, 47037276434431,
2669ERASE, 94352938094592, 94352938094592,
2670STORE, 94352938094592, 94352938102783,
2671STORE, 94352938102784, 94352938106879,
2672ERASE, 140595518902272, 140595518902272,
2673STORE, 140595518902272, 140595518906367,
2674STORE, 140595518906368, 140595518910463,
2675ERASE, 47037276254208, 47037276254208,
2676STORE, 94352938438656, 94352938573823,
2677STORE, 140737488347136, 140737488351231,
2678STORE, 140733506027520, 140737488351231,
2679ERASE, 140733506027520, 140733506027520,
2680STORE, 140733506027520, 140733506031615,
2681STORE, 94150123073536, 94150123245567,
2682ERASE, 94150123073536, 94150123073536,
2683STORE, 94150123073536, 94150123089919,
2684STORE, 94150123089920, 94150123245567,
2685ERASE, 94150123089920, 94150123089920,
2686STORE, 94150123089920, 94150123192319,
2687STORE, 94150123192320, 94150123233279,
2688STORE, 94150123233280, 94150123245567,
2689STORE, 140081290375168, 140081290547199,
2690ERASE, 140081290375168, 140081290375168,
2691STORE, 140081290375168, 140081290379263,
2692STORE, 140081290379264, 140081290547199,
2693ERASE, 140081290379264, 140081290379264,
2694STORE, 140081290379264, 140081290502143,
2695STORE, 140081290502144, 140081290534911,
2696STORE, 140081290534912, 140081290543103,
2697STORE, 140081290543104, 140081290547199,
2698STORE, 140733506707456, 140733506711551,
2699STORE, 140733506695168, 140733506707455,
2700STORE, 47551504621568, 47551504629759,
2701STORE, 47551504629760, 47551504637951,
2702STORE, 47551504637952, 47551504801791,
2703ERASE, 47551504637952, 47551504637952,
2704STORE, 47551504637952, 47551504650239,
2705STORE, 47551504650240, 47551504801791,
2706STORE, 47551504748544, 47551504801791,
2707STORE, 47551504650240, 47551504748543,
2708ERASE, 47551504650240, 47551504650240,
2709STORE, 47551504650240, 47551504748543,
2710STORE, 47551504793600, 47551504801791,
2711STORE, 47551504748544, 47551504793599,
2712ERASE, 47551504748544, 47551504748544,
2713STORE, 47551504748544, 47551504801791,
2714ERASE, 47551504748544, 47551504748544,
2715STORE, 47551504748544, 47551504793599,
2716STORE, 47551504793600, 47551504801791,
2717ERASE, 47551504793600, 47551504793600,
2718STORE, 47551504793600, 47551504801791,
2719STORE, 47551504801792, 47551507853311,
2720STORE, 47551505346560, 47551507853311,
2721STORE, 47551504801792, 47551505346559,
2722ERASE, 47551505346560, 47551505346560,
2723STORE, 47551505346560, 47551507632127,
2724STORE, 47551507632128, 47551507853311,
2725STORE, 47551507042304, 47551507632127,
2726STORE, 47551505346560, 47551507042303,
2727ERASE, 47551505346560, 47551505346560,
2728STORE, 47551505346560, 47551507042303,
2729STORE, 47551507628032, 47551507632127,
2730STORE, 47551507042304, 47551507628031,
2731ERASE, 47551507042304, 47551507042304,
2732STORE, 47551507042304, 47551507628031,
2733STORE, 47551507836928, 47551507853311,
2734STORE, 47551507632128, 47551507836927,
2735ERASE, 47551507632128, 47551507632128,
2736STORE, 47551507632128, 47551507836927,
2737ERASE, 47551507836928, 47551507836928,
2738STORE, 47551507836928, 47551507853311,
2739STORE, 47551507853312, 47551509692415,
2740STORE, 47551507992576, 47551509692415,
2741STORE, 47551507853312, 47551507992575,
2742ERASE, 47551507992576, 47551507992576,
2743STORE, 47551507992576, 47551509651455,
2744STORE, 47551509651456, 47551509692415,
2745STORE, 47551509336064, 47551509651455,
2746STORE, 47551507992576, 47551509336063,
2747ERASE, 47551507992576, 47551507992576,
2748STORE, 47551507992576, 47551509336063,
2749STORE, 47551509647360, 47551509651455,
2750STORE, 47551509336064, 47551509647359,
2751ERASE, 47551509336064, 47551509336064,
2752STORE, 47551509336064, 47551509647359,
2753STORE, 47551509676032, 47551509692415,
2754STORE, 47551509651456, 47551509676031,
2755ERASE, 47551509651456, 47551509651456,
2756STORE, 47551509651456, 47551509676031,
2757ERASE, 47551509676032, 47551509676032,
2758STORE, 47551509676032, 47551509692415,
2759STORE, 47551509692416, 47551509827583,
2760ERASE, 47551509692416, 47551509692416,
2761STORE, 47551509692416, 47551509716991,
2762STORE, 47551509716992, 47551509827583,
2763STORE, 47551509778432, 47551509827583,
2764STORE, 47551509716992, 47551509778431,
2765ERASE, 47551509716992, 47551509716992,
2766STORE, 47551509716992, 47551509778431,
2767STORE, 47551509803008, 47551509827583,
2768STORE, 47551509778432, 47551509803007,
2769ERASE, 47551509778432, 47551509778432,
2770STORE, 47551509778432, 47551509827583,
2771ERASE, 47551509778432, 47551509778432,
2772STORE, 47551509778432, 47551509803007,
2773STORE, 47551509803008, 47551509827583,
2774STORE, 47551509811200, 47551509827583,
2775STORE, 47551509803008, 47551509811199,
2776ERASE, 47551509803008, 47551509803008,
2777STORE, 47551509803008, 47551509811199,
2778ERASE, 47551509811200, 47551509811200,
2779STORE, 47551509811200, 47551509827583,
2780STORE, 47551509827584, 47551509848063,
2781ERASE, 47551509827584, 47551509827584,
2782STORE, 47551509827584, 47551509831679,
2783STORE, 47551509831680, 47551509848063,
2784STORE, 47551509835776, 47551509848063,
2785STORE, 47551509831680, 47551509835775,
2786ERASE, 47551509831680, 47551509831680,
2787STORE, 47551509831680, 47551509835775,
2788STORE, 47551509839872, 47551509848063,
2789STORE, 47551509835776, 47551509839871,
2790ERASE, 47551509835776, 47551509835776,
2791STORE, 47551509835776, 47551509848063,
2792ERASE, 47551509835776, 47551509835776,
2793STORE, 47551509835776, 47551509839871,
2794STORE, 47551509839872, 47551509848063,
2795ERASE, 47551509839872, 47551509839872,
2796STORE, 47551509839872, 47551509848063,
2797STORE, 47551509848064, 47551509856255,
2798ERASE, 47551509651456, 47551509651456,
2799STORE, 47551509651456, 47551509667839,
2800STORE, 47551509667840, 47551509676031,
2801ERASE, 47551509839872, 47551509839872,
2802STORE, 47551509839872, 47551509843967,
2803STORE, 47551509843968, 47551509848063,
2804ERASE, 47551509803008, 47551509803008,
2805STORE, 47551509803008, 47551509807103,
2806STORE, 47551509807104, 47551509811199,
2807ERASE, 47551507632128, 47551507632128,
2808STORE, 47551507632128, 47551507828735,
2809STORE, 47551507828736, 47551507836927,
2810ERASE, 47551504793600, 47551504793600,
2811STORE, 47551504793600, 47551504797695,
2812STORE, 47551504797696, 47551504801791,
2813ERASE, 94150123233280, 94150123233280,
2814STORE, 94150123233280, 94150123241471,
2815STORE, 94150123241472, 94150123245567,
2816ERASE, 140081290534912, 140081290534912,
2817STORE, 140081290534912, 140081290539007,
2818STORE, 140081290539008, 140081290543103,
2819ERASE, 47551504621568, 47551504621568,
2820STORE, 94150148112384, 94150148247551,
2821STORE, 140737488347136, 140737488351231,
2822STORE, 140734389334016, 140737488351231,
2823ERASE, 140734389334016, 140734389334016,
2824STORE, 140734389334016, 140734389338111,
2825STORE, 94844636606464, 94844636778495,
2826ERASE, 94844636606464, 94844636606464,
2827STORE, 94844636606464, 94844636622847,
2828STORE, 94844636622848, 94844636778495,
2829ERASE, 94844636622848, 94844636622848,
2830STORE, 94844636622848, 94844636725247,
2831STORE, 94844636725248, 94844636766207,
2832STORE, 94844636766208, 94844636778495,
2833STORE, 139922765217792, 139922765389823,
2834ERASE, 139922765217792, 139922765217792,
2835STORE, 139922765217792, 139922765221887,
2836STORE, 139922765221888, 139922765389823,
2837ERASE, 139922765221888, 139922765221888,
2838STORE, 139922765221888, 139922765344767,
2839STORE, 139922765344768, 139922765377535,
2840STORE, 139922765377536, 139922765385727,
2841STORE, 139922765385728, 139922765389823,
2842STORE, 140734389678080, 140734389682175,
2843STORE, 140734389665792, 140734389678079,
2844STORE, 47710029778944, 47710029787135,
2845STORE, 47710029787136, 47710029795327,
2846STORE, 47710029795328, 47710029959167,
2847ERASE, 47710029795328, 47710029795328,
2848STORE, 47710029795328, 47710029807615,
2849STORE, 47710029807616, 47710029959167,
2850STORE, 47710029905920, 47710029959167,
2851STORE, 47710029807616, 47710029905919,
2852ERASE, 47710029807616, 47710029807616,
2853STORE, 47710029807616, 47710029905919,
2854STORE, 47710029950976, 47710029959167,
2855STORE, 47710029905920, 47710029950975,
2856ERASE, 47710029905920, 47710029905920,
2857STORE, 47710029905920, 47710029959167,
2858ERASE, 47710029905920, 47710029905920,
2859STORE, 47710029905920, 47710029950975,
2860STORE, 47710029950976, 47710029959167,
2861ERASE, 47710029950976, 47710029950976,
2862STORE, 47710029950976, 47710029959167,
2863STORE, 47710029959168, 47710033010687,
2864STORE, 47710030503936, 47710033010687,
2865STORE, 47710029959168, 47710030503935,
2866ERASE, 47710030503936, 47710030503936,
2867STORE, 47710030503936, 47710032789503,
2868STORE, 47710032789504, 47710033010687,
2869STORE, 47710032199680, 47710032789503,
2870STORE, 47710030503936, 47710032199679,
2871ERASE, 47710030503936, 47710030503936,
2872STORE, 47710030503936, 47710032199679,
2873STORE, 47710032785408, 47710032789503,
2874STORE, 47710032199680, 47710032785407,
2875ERASE, 47710032199680, 47710032199680,
2876STORE, 47710032199680, 47710032785407,
2877STORE, 47710032994304, 47710033010687,
2878STORE, 47710032789504, 47710032994303,
2879ERASE, 47710032789504, 47710032789504,
2880STORE, 47710032789504, 47710032994303,
2881ERASE, 47710032994304, 47710032994304,
2882STORE, 47710032994304, 47710033010687,
2883STORE, 47710033010688, 47710034849791,
2884STORE, 47710033149952, 47710034849791,
2885STORE, 47710033010688, 47710033149951,
2886ERASE, 47710033149952, 47710033149952,
2887STORE, 47710033149952, 47710034808831,
2888STORE, 47710034808832, 47710034849791,
2889STORE, 47710034493440, 47710034808831,
2890STORE, 47710033149952, 47710034493439,
2891ERASE, 47710033149952, 47710033149952,
2892STORE, 47710033149952, 47710034493439,
2893STORE, 47710034804736, 47710034808831,
2894STORE, 47710034493440, 47710034804735,
2895ERASE, 47710034493440, 47710034493440,
2896STORE, 47710034493440, 47710034804735,
2897STORE, 47710034833408, 47710034849791,
2898STORE, 47710034808832, 47710034833407,
2899ERASE, 47710034808832, 47710034808832,
2900STORE, 47710034808832, 47710034833407,
2901ERASE, 47710034833408, 47710034833408,
2902STORE, 47710034833408, 47710034849791,
2903STORE, 47710034849792, 47710034984959,
2904ERASE, 47710034849792, 47710034849792,
2905STORE, 47710034849792, 47710034874367,
2906STORE, 47710034874368, 47710034984959,
2907STORE, 47710034935808, 47710034984959,
2908STORE, 47710034874368, 47710034935807,
2909ERASE, 47710034874368, 47710034874368,
2910STORE, 47710034874368, 47710034935807,
2911STORE, 47710034960384, 47710034984959,
2912STORE, 47710034935808, 47710034960383,
2913ERASE, 47710034935808, 47710034935808,
2914STORE, 47710034935808, 47710034984959,
2915ERASE, 47710034935808, 47710034935808,
2916STORE, 47710034935808, 47710034960383,
2917STORE, 47710034960384, 47710034984959,
2918STORE, 47710034968576, 47710034984959,
2919STORE, 47710034960384, 47710034968575,
2920ERASE, 47710034960384, 47710034960384,
2921STORE, 47710034960384, 47710034968575,
2922ERASE, 47710034968576, 47710034968576,
2923STORE, 47710034968576, 47710034984959,
2924STORE, 47710034984960, 47710035005439,
2925ERASE, 47710034984960, 47710034984960,
2926STORE, 47710034984960, 47710034989055,
2927STORE, 47710034989056, 47710035005439,
2928STORE, 47710034993152, 47710035005439,
2929STORE, 47710034989056, 47710034993151,
2930ERASE, 47710034989056, 47710034989056,
2931STORE, 47710034989056, 47710034993151,
2932STORE, 47710034997248, 47710035005439,
2933STORE, 47710034993152, 47710034997247,
2934ERASE, 47710034993152, 47710034993152,
2935STORE, 47710034993152, 47710035005439,
2936ERASE, 47710034993152, 47710034993152,
2937STORE, 47710034993152, 47710034997247,
2938STORE, 47710034997248, 47710035005439,
2939ERASE, 47710034997248, 47710034997248,
2940STORE, 47710034997248, 47710035005439,
2941STORE, 47710035005440, 47710035013631,
2942ERASE, 47710034808832, 47710034808832,
2943STORE, 47710034808832, 47710034825215,
2944STORE, 47710034825216, 47710034833407,
2945ERASE, 47710034997248, 47710034997248,
2946STORE, 47710034997248, 47710035001343,
2947STORE, 47710035001344, 47710035005439,
2948ERASE, 47710034960384, 47710034960384,
2949STORE, 47710034960384, 47710034964479,
2950STORE, 47710034964480, 47710034968575,
2951ERASE, 47710032789504, 47710032789504,
2952STORE, 47710032789504, 47710032986111,
2953STORE, 47710032986112, 47710032994303,
2954ERASE, 47710029950976, 47710029950976,
2955STORE, 47710029950976, 47710029955071,
2956STORE, 47710029955072, 47710029959167,
2957ERASE, 94844636766208, 94844636766208,
2958STORE, 94844636766208, 94844636774399,
2959STORE, 94844636774400, 94844636778495,
2960ERASE, 139922765377536, 139922765377536,
2961STORE, 139922765377536, 139922765381631,
2962STORE, 139922765381632, 139922765385727,
2963ERASE, 47710029778944, 47710029778944,
2964STORE, 94844641775616, 94844641910783,
2965STORE, 140737488347136, 140737488351231,
2966STORE, 140732213886976, 140737488351231,
2967ERASE, 140732213886976, 140732213886976,
2968STORE, 140732213886976, 140732213891071,
2969STORE, 94240508887040, 94240509059071,
2970ERASE, 94240508887040, 94240508887040,
2971STORE, 94240508887040, 94240508903423,
2972STORE, 94240508903424, 94240509059071,
2973ERASE, 94240508903424, 94240508903424,
2974STORE, 94240508903424, 94240509005823,
2975STORE, 94240509005824, 94240509046783,
2976STORE, 94240509046784, 94240509059071,
2977STORE, 140275106516992, 140275106689023,
2978ERASE, 140275106516992, 140275106516992,
2979STORE, 140275106516992, 140275106521087,
2980STORE, 140275106521088, 140275106689023,
2981ERASE, 140275106521088, 140275106521088,
2982STORE, 140275106521088, 140275106643967,
2983STORE, 140275106643968, 140275106676735,
2984STORE, 140275106676736, 140275106684927,
2985STORE, 140275106684928, 140275106689023,
2986STORE, 140732213977088, 140732213981183,
2987STORE, 140732213964800, 140732213977087,
2988STORE, 47357688479744, 47357688487935,
2989STORE, 47357688487936, 47357688496127,
2990STORE, 47357688496128, 47357688659967,
2991ERASE, 47357688496128, 47357688496128,
2992STORE, 47357688496128, 47357688508415,
2993STORE, 47357688508416, 47357688659967,
2994STORE, 47357688606720, 47357688659967,
2995STORE, 47357688508416, 47357688606719,
2996ERASE, 47357688508416, 47357688508416,
2997STORE, 47357688508416, 47357688606719,
2998STORE, 47357688651776, 47357688659967,
2999STORE, 47357688606720, 47357688651775,
3000ERASE, 47357688606720, 47357688606720,
3001STORE, 47357688606720, 47357688659967,
3002ERASE, 47357688606720, 47357688606720,
3003STORE, 47357688606720, 47357688651775,
3004STORE, 47357688651776, 47357688659967,
3005ERASE, 47357688651776, 47357688651776,
3006STORE, 47357688651776, 47357688659967,
3007STORE, 47357688659968, 47357691711487,
3008STORE, 47357689204736, 47357691711487,
3009STORE, 47357688659968, 47357689204735,
3010ERASE, 47357689204736, 47357689204736,
3011STORE, 47357689204736, 47357691490303,
3012STORE, 47357691490304, 47357691711487,
3013STORE, 47357690900480, 47357691490303,
3014STORE, 47357689204736, 47357690900479,
3015ERASE, 47357689204736, 47357689204736,
3016STORE, 47357689204736, 47357690900479,
3017STORE, 47357691486208, 47357691490303,
3018STORE, 47357690900480, 47357691486207,
3019ERASE, 47357690900480, 47357690900480,
3020STORE, 47357690900480, 47357691486207,
3021STORE, 47357691695104, 47357691711487,
3022STORE, 47357691490304, 47357691695103,
3023ERASE, 47357691490304, 47357691490304,
3024STORE, 47357691490304, 47357691695103,
3025ERASE, 47357691695104, 47357691695104,
3026STORE, 47357691695104, 47357691711487,
3027STORE, 47357691711488, 47357693550591,
3028STORE, 47357691850752, 47357693550591,
3029STORE, 47357691711488, 47357691850751,
3030ERASE, 47357691850752, 47357691850752,
3031STORE, 47357691850752, 47357693509631,
3032STORE, 47357693509632, 47357693550591,
3033STORE, 47357693194240, 47357693509631,
3034STORE, 47357691850752, 47357693194239,
3035ERASE, 47357691850752, 47357691850752,
3036STORE, 47357691850752, 47357693194239,
3037STORE, 47357693505536, 47357693509631,
3038STORE, 47357693194240, 47357693505535,
3039ERASE, 47357693194240, 47357693194240,
3040STORE, 47357693194240, 47357693505535,
3041STORE, 47357693534208, 47357693550591,
3042STORE, 47357693509632, 47357693534207,
3043ERASE, 47357693509632, 47357693509632,
3044STORE, 47357693509632, 47357693534207,
3045ERASE, 47357693534208, 47357693534208,
3046STORE, 47357693534208, 47357693550591,
3047STORE, 47357693550592, 47357693685759,
3048ERASE, 47357693550592, 47357693550592,
3049STORE, 47357693550592, 47357693575167,
3050STORE, 47357693575168, 47357693685759,
3051STORE, 47357693636608, 47357693685759,
3052STORE, 47357693575168, 47357693636607,
3053ERASE, 47357693575168, 47357693575168,
3054STORE, 47357693575168, 47357693636607,
3055STORE, 47357693661184, 47357693685759,
3056STORE, 47357693636608, 47357693661183,
3057ERASE, 47357693636608, 47357693636608,
3058STORE, 47357693636608, 47357693685759,
3059ERASE, 47357693636608, 47357693636608,
3060STORE, 47357693636608, 47357693661183,
3061STORE, 47357693661184, 47357693685759,
3062STORE, 47357693669376, 47357693685759,
3063STORE, 47357693661184, 47357693669375,
3064ERASE, 47357693661184, 47357693661184,
3065STORE, 47357693661184, 47357693669375,
3066ERASE, 47357693669376, 47357693669376,
3067STORE, 47357693669376, 47357693685759,
3068STORE, 47357693685760, 47357693706239,
3069ERASE, 47357693685760, 47357693685760,
3070STORE, 47357693685760, 47357693689855,
3071STORE, 47357693689856, 47357693706239,
3072STORE, 47357693693952, 47357693706239,
3073STORE, 47357693689856, 47357693693951,
3074ERASE, 47357693689856, 47357693689856,
3075STORE, 47357693689856, 47357693693951,
3076STORE, 47357693698048, 47357693706239,
3077STORE, 47357693693952, 47357693698047,
3078ERASE, 47357693693952, 47357693693952,
3079STORE, 47357693693952, 47357693706239,
3080ERASE, 47357693693952, 47357693693952,
3081STORE, 47357693693952, 47357693698047,
3082STORE, 47357693698048, 47357693706239,
3083ERASE, 47357693698048, 47357693698048,
3084STORE, 47357693698048, 47357693706239,
3085STORE, 47357693706240, 47357693714431,
3086ERASE, 47357693509632, 47357693509632,
3087STORE, 47357693509632, 47357693526015,
3088STORE, 47357693526016, 47357693534207,
3089ERASE, 47357693698048, 47357693698048,
3090STORE, 47357693698048, 47357693702143,
3091STORE, 47357693702144, 47357693706239,
3092ERASE, 47357693661184, 47357693661184,
3093STORE, 47357693661184, 47357693665279,
3094STORE, 47357693665280, 47357693669375,
3095ERASE, 47357691490304, 47357691490304,
3096STORE, 47357691490304, 47357691686911,
3097STORE, 47357691686912, 47357691695103,
3098ERASE, 47357688651776, 47357688651776,
3099STORE, 47357688651776, 47357688655871,
3100STORE, 47357688655872, 47357688659967,
3101ERASE, 94240509046784, 94240509046784,
3102STORE, 94240509046784, 94240509054975,
3103STORE, 94240509054976, 94240509059071,
3104ERASE, 140275106676736, 140275106676736,
3105STORE, 140275106676736, 140275106680831,
3106STORE, 140275106680832, 140275106684927,
3107ERASE, 47357688479744, 47357688479744,
3108STORE, 94240518361088, 94240518496255,
3109STORE, 140737488347136, 140737488351231,
3110STORE, 140732688277504, 140737488351231,
3111ERASE, 140732688277504, 140732688277504,
3112STORE, 140732688277504, 140732688281599,
3113STORE, 94629171351552, 94629172064255,
3114ERASE, 94629171351552, 94629171351552,
3115STORE, 94629171351552, 94629171400703,
3116STORE, 94629171400704, 94629172064255,
3117ERASE, 94629171400704, 94629171400704,
3118STORE, 94629171400704, 94629171945471,
3119STORE, 94629171945472, 94629172043775,
3120STORE, 94629172043776, 94629172064255,
3121STORE, 139770707644416, 139770707816447,
3122ERASE, 139770707644416, 139770707644416,
3123STORE, 139770707644416, 139770707648511,
3124STORE, 139770707648512, 139770707816447,
3125ERASE, 139770707648512, 139770707648512,
3126STORE, 139770707648512, 139770707771391,
3127STORE, 139770707771392, 139770707804159,
3128STORE, 139770707804160, 139770707812351,
3129STORE, 139770707812352, 139770707816447,
3130STORE, 140732689121280, 140732689125375,
3131STORE, 140732689108992, 140732689121279,
3132STORE, 47862087352320, 47862087360511,
3133STORE, 47862087360512, 47862087368703,
3134STORE, 47862087368704, 47862087475199,
3135STORE, 47862087385088, 47862087475199,
3136STORE, 47862087368704, 47862087385087,
3137ERASE, 47862087385088, 47862087385088,
3138STORE, 47862087385088, 47862087458815,
3139STORE, 47862087458816, 47862087475199,
3140STORE, 47862087438336, 47862087458815,
3141STORE, 47862087385088, 47862087438335,
3142ERASE, 47862087385088, 47862087385088,
3143STORE, 47862087385088, 47862087438335,
3144STORE, 47862087454720, 47862087458815,
3145STORE, 47862087438336, 47862087454719,
3146ERASE, 47862087438336, 47862087438336,
3147STORE, 47862087438336, 47862087454719,
3148STORE, 47862087467008, 47862087475199,
3149STORE, 47862087458816, 47862087467007,
3150ERASE, 47862087458816, 47862087458816,
3151STORE, 47862087458816, 47862087467007,
3152ERASE, 47862087467008, 47862087467008,
3153STORE, 47862087467008, 47862087475199,
3154STORE, 47862087475200, 47862089314303,
3155STORE, 47862087614464, 47862089314303,
3156STORE, 47862087475200, 47862087614463,
3157ERASE, 47862087614464, 47862087614464,
3158STORE, 47862087614464, 47862089273343,
3159STORE, 47862089273344, 47862089314303,
3160STORE, 47862088957952, 47862089273343,
3161STORE, 47862087614464, 47862088957951,
3162ERASE, 47862087614464, 47862087614464,
3163STORE, 47862087614464, 47862088957951,
3164STORE, 47862089269248, 47862089273343,
3165STORE, 47862088957952, 47862089269247,
3166ERASE, 47862088957952, 47862088957952,
3167STORE, 47862088957952, 47862089269247,
3168STORE, 47862089297920, 47862089314303,
3169STORE, 47862089273344, 47862089297919,
3170ERASE, 47862089273344, 47862089273344,
3171STORE, 47862089273344, 47862089297919,
3172ERASE, 47862089297920, 47862089297920,
3173STORE, 47862089297920, 47862089314303,
3174STORE, 47862089297920, 47862089326591,
3175ERASE, 47862089273344, 47862089273344,
3176STORE, 47862089273344, 47862089289727,
3177STORE, 47862089289728, 47862089297919,
3178ERASE, 47862087458816, 47862087458816,
3179STORE, 47862087458816, 47862087462911,
3180STORE, 47862087462912, 47862087467007,
3181ERASE, 94629172043776, 94629172043776,
3182STORE, 94629172043776, 94629172060159,
3183STORE, 94629172060160, 94629172064255,
3184ERASE, 139770707804160, 139770707804160,
3185STORE, 139770707804160, 139770707808255,
3186STORE, 139770707808256, 139770707812351,
3187ERASE, 47862087352320, 47862087352320,
3188STORE, 94629197533184, 94629197668351,
3189STORE, 140737488347136, 140737488351231,
3190STORE, 140727540711424, 140737488351231,
3191ERASE, 140727540711424, 140727540711424,
3192STORE, 140727540711424, 140727540715519,
3193STORE, 94299865313280, 94299866025983,
3194ERASE, 94299865313280, 94299865313280,
3195STORE, 94299865313280, 94299865362431,
3196STORE, 94299865362432, 94299866025983,
3197ERASE, 94299865362432, 94299865362432,
3198STORE, 94299865362432, 94299865907199,
3199STORE, 94299865907200, 94299866005503,
3200STORE, 94299866005504, 94299866025983,
3201STORE, 140680268763136, 140680268935167,
3202ERASE, 140680268763136, 140680268763136,
3203STORE, 140680268763136, 140680268767231,
3204STORE, 140680268767232, 140680268935167,
3205ERASE, 140680268767232, 140680268767232,
3206STORE, 140680268767232, 140680268890111,
3207STORE, 140680268890112, 140680268922879,
3208STORE, 140680268922880, 140680268931071,
3209STORE, 140680268931072, 140680268935167,
3210STORE, 140727541424128, 140727541428223,
3211STORE, 140727541411840, 140727541424127,
3212STORE, 46952526233600, 46952526241791,
3213STORE, 46952526241792, 46952526249983,
3214STORE, 46952526249984, 46952526356479,
3215STORE, 46952526266368, 46952526356479,
3216STORE, 46952526249984, 46952526266367,
3217ERASE, 46952526266368, 46952526266368,
3218STORE, 46952526266368, 46952526340095,
3219STORE, 46952526340096, 46952526356479,
3220STORE, 46952526319616, 46952526340095,
3221STORE, 46952526266368, 46952526319615,
3222ERASE, 46952526266368, 46952526266368,
3223STORE, 46952526266368, 46952526319615,
3224STORE, 46952526336000, 46952526340095,
3225STORE, 46952526319616, 46952526335999,
3226ERASE, 46952526319616, 46952526319616,
3227STORE, 46952526319616, 46952526335999,
3228STORE, 46952526348288, 46952526356479,
3229STORE, 46952526340096, 46952526348287,
3230ERASE, 46952526340096, 46952526340096,
3231STORE, 46952526340096, 46952526348287,
3232ERASE, 46952526348288, 46952526348288,
3233STORE, 46952526348288, 46952526356479,
3234STORE, 46952526356480, 46952528195583,
3235STORE, 46952526495744, 46952528195583,
3236STORE, 46952526356480, 46952526495743,
3237ERASE, 46952526495744, 46952526495744,
3238STORE, 46952526495744, 46952528154623,
3239STORE, 46952528154624, 46952528195583,
3240STORE, 46952527839232, 46952528154623,
3241STORE, 46952526495744, 46952527839231,
3242ERASE, 46952526495744, 46952526495744,
3243STORE, 46952526495744, 46952527839231,
3244STORE, 46952528150528, 46952528154623,
3245STORE, 46952527839232, 46952528150527,
3246ERASE, 46952527839232, 46952527839232,
3247STORE, 46952527839232, 46952528150527,
3248STORE, 46952528179200, 46952528195583,
3249STORE, 46952528154624, 46952528179199,
3250ERASE, 46952528154624, 46952528154624,
3251STORE, 46952528154624, 46952528179199,
3252ERASE, 46952528179200, 46952528179200,
3253STORE, 46952528179200, 46952528195583,
3254STORE, 46952528179200, 46952528207871,
3255ERASE, 46952528154624, 46952528154624,
3256STORE, 46952528154624, 46952528171007,
3257STORE, 46952528171008, 46952528179199,
3258ERASE, 46952526340096, 46952526340096,
3259STORE, 46952526340096, 46952526344191,
3260STORE, 46952526344192, 46952526348287,
3261ERASE, 94299866005504, 94299866005504,
3262STORE, 94299866005504, 94299866021887,
3263STORE, 94299866021888, 94299866025983,
3264ERASE, 140680268922880, 140680268922880,
3265STORE, 140680268922880, 140680268926975,
3266STORE, 140680268926976, 140680268931071,
3267ERASE, 46952526233600, 46952526233600,
3268STORE, 140737488347136, 140737488351231,
3269STORE, 140722874793984, 140737488351231,
3270ERASE, 140722874793984, 140722874793984,
3271STORE, 140722874793984, 140722874798079,
3272STORE, 94448916213760, 94448916926463,
3273ERASE, 94448916213760, 94448916213760,
3274STORE, 94448916213760, 94448916262911,
3275STORE, 94448916262912, 94448916926463,
3276ERASE, 94448916262912, 94448916262912,
3277STORE, 94448916262912, 94448916807679,
3278STORE, 94448916807680, 94448916905983,
3279STORE, 94448916905984, 94448916926463,
3280STORE, 140389117046784, 140389117218815,
3281ERASE, 140389117046784, 140389117046784,
3282STORE, 140389117046784, 140389117050879,
3283STORE, 140389117050880, 140389117218815,
3284ERASE, 140389117050880, 140389117050880,
3285STORE, 140389117050880, 140389117173759,
3286STORE, 140389117173760, 140389117206527,
3287STORE, 140389117206528, 140389117214719,
3288STORE, 140389117214720, 140389117218815,
3289STORE, 140722875297792, 140722875301887,
3290STORE, 140722875285504, 140722875297791,
3291STORE, 47243677949952, 47243677958143,
3292STORE, 47243677958144, 47243677966335,
3293STORE, 47243677966336, 47243678072831,
3294STORE, 47243677982720, 47243678072831,
3295STORE, 47243677966336, 47243677982719,
3296ERASE, 47243677982720, 47243677982720,
3297STORE, 47243677982720, 47243678056447,
3298STORE, 47243678056448, 47243678072831,
3299STORE, 47243678035968, 47243678056447,
3300STORE, 47243677982720, 47243678035967,
3301ERASE, 47243677982720, 47243677982720,
3302STORE, 47243677982720, 47243678035967,
3303STORE, 47243678052352, 47243678056447,
3304STORE, 47243678035968, 47243678052351,
3305ERASE, 47243678035968, 47243678035968,
3306STORE, 47243678035968, 47243678052351,
3307STORE, 47243678064640, 47243678072831,
3308STORE, 47243678056448, 47243678064639,
3309ERASE, 47243678056448, 47243678056448,
3310STORE, 47243678056448, 47243678064639,
3311ERASE, 47243678064640, 47243678064640,
3312STORE, 47243678064640, 47243678072831,
3313STORE, 47243678072832, 47243679911935,
3314STORE, 47243678212096, 47243679911935,
3315STORE, 47243678072832, 47243678212095,
3316ERASE, 47243678212096, 47243678212096,
3317STORE, 47243678212096, 47243679870975,
3318STORE, 47243679870976, 47243679911935,
3319STORE, 47243679555584, 47243679870975,
3320STORE, 47243678212096, 47243679555583,
3321ERASE, 47243678212096, 47243678212096,
3322STORE, 47243678212096, 47243679555583,
3323STORE, 47243679866880, 47243679870975,
3324STORE, 47243679555584, 47243679866879,
3325ERASE, 47243679555584, 47243679555584,
3326STORE, 47243679555584, 47243679866879,
3327STORE, 47243679895552, 47243679911935,
3328STORE, 47243679870976, 47243679895551,
3329ERASE, 47243679870976, 47243679870976,
3330STORE, 47243679870976, 47243679895551,
3331ERASE, 47243679895552, 47243679895552,
3332STORE, 47243679895552, 47243679911935,
3333STORE, 47243679895552, 47243679924223,
3334ERASE, 47243679870976, 47243679870976,
3335STORE, 47243679870976, 47243679887359,
3336STORE, 47243679887360, 47243679895551,
3337ERASE, 47243678056448, 47243678056448,
3338STORE, 47243678056448, 47243678060543,
3339STORE, 47243678060544, 47243678064639,
3340ERASE, 94448916905984, 94448916905984,
3341STORE, 94448916905984, 94448916922367,
3342STORE, 94448916922368, 94448916926463,
3343ERASE, 140389117206528, 140389117206528,
3344STORE, 140389117206528, 140389117210623,
3345STORE, 140389117210624, 140389117214719,
3346ERASE, 47243677949952, 47243677949952,
3347STORE, 140737488347136, 140737488351231,
3348STORE, 140733068505088, 140737488351231,
3349ERASE, 140733068505088, 140733068505088,
3350STORE, 140733068505088, 140733068509183,
3351STORE, 94207145750528, 94207146463231,
3352ERASE, 94207145750528, 94207145750528,
3353STORE, 94207145750528, 94207145799679,
3354STORE, 94207145799680, 94207146463231,
3355ERASE, 94207145799680, 94207145799680,
3356STORE, 94207145799680, 94207146344447,
3357STORE, 94207146344448, 94207146442751,
3358STORE, 94207146442752, 94207146463231,
3359STORE, 140684504911872, 140684505083903,
3360ERASE, 140684504911872, 140684504911872,
3361STORE, 140684504911872, 140684504915967,
3362STORE, 140684504915968, 140684505083903,
3363ERASE, 140684504915968, 140684504915968,
3364STORE, 140684504915968, 140684505038847,
3365STORE, 140684505038848, 140684505071615,
3366STORE, 140684505071616, 140684505079807,
3367STORE, 140684505079808, 140684505083903,
3368STORE, 140733068607488, 140733068611583,
3369STORE, 140733068595200, 140733068607487,
3370STORE, 46948290084864, 46948290093055,
3371STORE, 46948290093056, 46948290101247,
3372STORE, 46948290101248, 46948290207743,
3373STORE, 46948290117632, 46948290207743,
3374STORE, 46948290101248, 46948290117631,
3375ERASE, 46948290117632, 46948290117632,
3376STORE, 46948290117632, 46948290191359,
3377STORE, 46948290191360, 46948290207743,
3378STORE, 46948290170880, 46948290191359,
3379STORE, 46948290117632, 46948290170879,
3380ERASE, 46948290117632, 46948290117632,
3381STORE, 46948290117632, 46948290170879,
3382STORE, 46948290187264, 46948290191359,
3383STORE, 46948290170880, 46948290187263,
3384ERASE, 46948290170880, 46948290170880,
3385STORE, 46948290170880, 46948290187263,
3386STORE, 46948290199552, 46948290207743,
3387STORE, 46948290191360, 46948290199551,
3388ERASE, 46948290191360, 46948290191360,
3389STORE, 46948290191360, 46948290199551,
3390ERASE, 46948290199552, 46948290199552,
3391STORE, 46948290199552, 46948290207743,
3392STORE, 46948290207744, 46948292046847,
3393STORE, 46948290347008, 46948292046847,
3394STORE, 46948290207744, 46948290347007,
3395ERASE, 46948290347008, 46948290347008,
3396STORE, 46948290347008, 46948292005887,
3397STORE, 46948292005888, 46948292046847,
3398STORE, 46948291690496, 46948292005887,
3399STORE, 46948290347008, 46948291690495,
3400ERASE, 46948290347008, 46948290347008,
3401STORE, 46948290347008, 46948291690495,
3402STORE, 46948292001792, 46948292005887,
3403STORE, 46948291690496, 46948292001791,
3404ERASE, 46948291690496, 46948291690496,
3405STORE, 46948291690496, 46948292001791,
3406STORE, 46948292030464, 46948292046847,
3407STORE, 46948292005888, 46948292030463,
3408ERASE, 46948292005888, 46948292005888,
3409STORE, 46948292005888, 46948292030463,
3410ERASE, 46948292030464, 46948292030464,
3411STORE, 46948292030464, 46948292046847,
3412STORE, 46948292030464, 46948292059135,
3413ERASE, 46948292005888, 46948292005888,
3414STORE, 46948292005888, 46948292022271,
3415STORE, 46948292022272, 46948292030463,
3416ERASE, 46948290191360, 46948290191360,
3417STORE, 46948290191360, 46948290195455,
3418STORE, 46948290195456, 46948290199551,
3419ERASE, 94207146442752, 94207146442752,
3420STORE, 94207146442752, 94207146459135,
3421STORE, 94207146459136, 94207146463231,
3422ERASE, 140684505071616, 140684505071616,
3423STORE, 140684505071616, 140684505075711,
3424STORE, 140684505075712, 140684505079807,
3425ERASE, 46948290084864, 46948290084864,
3426STORE, 140737488347136, 140737488351231,
3427STORE, 140726367158272, 140737488351231,
3428ERASE, 140726367158272, 140726367158272,
3429STORE, 140726367158272, 140726367162367,
3430STORE, 94436124106752, 94436124819455,
3431ERASE, 94436124106752, 94436124106752,
3432STORE, 94436124106752, 94436124155903,
3433STORE, 94436124155904, 94436124819455,
3434ERASE, 94436124155904, 94436124155904,
3435STORE, 94436124155904, 94436124700671,
3436STORE, 94436124700672, 94436124798975,
3437STORE, 94436124798976, 94436124819455,
3438STORE, 140049025044480, 140049025216511,
3439ERASE, 140049025044480, 140049025044480,
3440STORE, 140049025044480, 140049025048575,
3441STORE, 140049025048576, 140049025216511,
3442ERASE, 140049025048576, 140049025048576,
3443STORE, 140049025048576, 140049025171455,
3444STORE, 140049025171456, 140049025204223,
3445STORE, 140049025204224, 140049025212415,
3446STORE, 140049025212416, 140049025216511,
3447STORE, 140726367256576, 140726367260671,
3448STORE, 140726367244288, 140726367256575,
3449STORE, 47583769952256, 47583769960447,
3450STORE, 47583769960448, 47583769968639,
3451STORE, 47583769968640, 47583770075135,
3452STORE, 47583769985024, 47583770075135,
3453STORE, 47583769968640, 47583769985023,
3454ERASE, 47583769985024, 47583769985024,
3455STORE, 47583769985024, 47583770058751,
3456STORE, 47583770058752, 47583770075135,
3457STORE, 47583770038272, 47583770058751,
3458STORE, 47583769985024, 47583770038271,
3459ERASE, 47583769985024, 47583769985024,
3460STORE, 47583769985024, 47583770038271,
3461STORE, 47583770054656, 47583770058751,
3462STORE, 47583770038272, 47583770054655,
3463ERASE, 47583770038272, 47583770038272,
3464STORE, 47583770038272, 47583770054655,
3465STORE, 47583770066944, 47583770075135,
3466STORE, 47583770058752, 47583770066943,
3467ERASE, 47583770058752, 47583770058752,
3468STORE, 47583770058752, 47583770066943,
3469ERASE, 47583770066944, 47583770066944,
3470STORE, 47583770066944, 47583770075135,
3471STORE, 47583770075136, 47583771914239,
3472STORE, 47583770214400, 47583771914239,
3473STORE, 47583770075136, 47583770214399,
3474ERASE, 47583770214400, 47583770214400,
3475STORE, 47583770214400, 47583771873279,
3476STORE, 47583771873280, 47583771914239,
3477STORE, 47583771557888, 47583771873279,
3478STORE, 47583770214400, 47583771557887,
3479ERASE, 47583770214400, 47583770214400,
3480STORE, 47583770214400, 47583771557887,
3481STORE, 47583771869184, 47583771873279,
3482STORE, 47583771557888, 47583771869183,
3483ERASE, 47583771557888, 47583771557888,
3484STORE, 47583771557888, 47583771869183,
3485STORE, 47583771897856, 47583771914239,
3486STORE, 47583771873280, 47583771897855,
3487ERASE, 47583771873280, 47583771873280,
3488STORE, 47583771873280, 47583771897855,
3489ERASE, 47583771897856, 47583771897856,
3490STORE, 47583771897856, 47583771914239,
3491STORE, 47583771897856, 47583771926527,
3492ERASE, 47583771873280, 47583771873280,
3493STORE, 47583771873280, 47583771889663,
3494STORE, 47583771889664, 47583771897855,
3495ERASE, 47583770058752, 47583770058752,
3496STORE, 47583770058752, 47583770062847,
3497STORE, 47583770062848, 47583770066943,
3498ERASE, 94436124798976, 94436124798976,
3499STORE, 94436124798976, 94436124815359,
3500STORE, 94436124815360, 94436124819455,
3501ERASE, 140049025204224, 140049025204224,
3502STORE, 140049025204224, 140049025208319,
3503STORE, 140049025208320, 140049025212415,
3504ERASE, 47583769952256, 47583769952256,
3505STORE, 140737488347136, 140737488351231,
3506STORE, 140727116099584, 140737488351231,
3507ERASE, 140727116099584, 140727116099584,
3508STORE, 140727116099584, 140727116103679,
3509STORE, 94166319734784, 94166320447487,
3510ERASE, 94166319734784, 94166319734784,
3511STORE, 94166319734784, 94166319783935,
3512STORE, 94166319783936, 94166320447487,
3513ERASE, 94166319783936, 94166319783936,
3514STORE, 94166319783936, 94166320328703,
3515STORE, 94166320328704, 94166320427007,
3516STORE, 94166320427008, 94166320447487,
3517STORE, 139976559542272, 139976559714303,
3518ERASE, 139976559542272, 139976559542272,
3519STORE, 139976559542272, 139976559546367,
3520STORE, 139976559546368, 139976559714303,
3521ERASE, 139976559546368, 139976559546368,
3522STORE, 139976559546368, 139976559669247,
3523STORE, 139976559669248, 139976559702015,
3524STORE, 139976559702016, 139976559710207,
3525STORE, 139976559710208, 139976559714303,
3526STORE, 140727116222464, 140727116226559,
3527STORE, 140727116210176, 140727116222463,
3528STORE, 47656235454464, 47656235462655,
3529STORE, 47656235462656, 47656235470847,
3530STORE, 47656235470848, 47656235577343,
3531STORE, 47656235487232, 47656235577343,
3532STORE, 47656235470848, 47656235487231,
3533ERASE, 47656235487232, 47656235487232,
3534STORE, 47656235487232, 47656235560959,
3535STORE, 47656235560960, 47656235577343,
3536STORE, 47656235540480, 47656235560959,
3537STORE, 47656235487232, 47656235540479,
3538ERASE, 47656235487232, 47656235487232,
3539STORE, 47656235487232, 47656235540479,
3540STORE, 47656235556864, 47656235560959,
3541STORE, 47656235540480, 47656235556863,
3542ERASE, 47656235540480, 47656235540480,
3543STORE, 47656235540480, 47656235556863,
3544STORE, 47656235569152, 47656235577343,
3545STORE, 47656235560960, 47656235569151,
3546ERASE, 47656235560960, 47656235560960,
3547STORE, 47656235560960, 47656235569151,
3548ERASE, 47656235569152, 47656235569152,
3549STORE, 47656235569152, 47656235577343,
3550STORE, 47656235577344, 47656237416447,
3551STORE, 47656235716608, 47656237416447,
3552STORE, 47656235577344, 47656235716607,
3553ERASE, 47656235716608, 47656235716608,
3554STORE, 47656235716608, 47656237375487,
3555STORE, 47656237375488, 47656237416447,
3556STORE, 47656237060096, 47656237375487,
3557STORE, 47656235716608, 47656237060095,
3558ERASE, 47656235716608, 47656235716608,
3559STORE, 47656235716608, 47656237060095,
3560STORE, 47656237371392, 47656237375487,
3561STORE, 47656237060096, 47656237371391,
3562ERASE, 47656237060096, 47656237060096,
3563STORE, 47656237060096, 47656237371391,
3564STORE, 47656237400064, 47656237416447,
3565STORE, 47656237375488, 47656237400063,
3566ERASE, 47656237375488, 47656237375488,
3567STORE, 47656237375488, 47656237400063,
3568ERASE, 47656237400064, 47656237400064,
3569STORE, 47656237400064, 47656237416447,
3570STORE, 47656237400064, 47656237428735,
3571ERASE, 47656237375488, 47656237375488,
3572STORE, 47656237375488, 47656237391871,
3573STORE, 47656237391872, 47656237400063,
3574ERASE, 47656235560960, 47656235560960,
3575STORE, 47656235560960, 47656235565055,
3576STORE, 47656235565056, 47656235569151,
3577ERASE, 94166320427008, 94166320427008,
3578STORE, 94166320427008, 94166320443391,
3579STORE, 94166320443392, 94166320447487,
3580ERASE, 139976559702016, 139976559702016,
3581STORE, 139976559702016, 139976559706111,
3582STORE, 139976559706112, 139976559710207,
3583ERASE, 47656235454464, 47656235454464,
3584STORE, 94166332153856, 94166332289023,
3585STORE, 140737488347136, 140737488351231,
3586STORE, 140726412816384, 140737488351231,
3587ERASE, 140726412816384, 140726412816384,
3588STORE, 140726412816384, 140726412820479,
3589STORE, 94094884507648, 94094885220351,
3590ERASE, 94094884507648, 94094884507648,
3591STORE, 94094884507648, 94094884556799,
3592STORE, 94094884556800, 94094885220351,
3593ERASE, 94094884556800, 94094884556800,
3594STORE, 94094884556800, 94094885101567,
3595STORE, 94094885101568, 94094885199871,
3596STORE, 94094885199872, 94094885220351,
3597STORE, 139773773938688, 139773774110719,
3598ERASE, 139773773938688, 139773773938688,
3599STORE, 139773773938688, 139773773942783,
3600STORE, 139773773942784, 139773774110719,
3601ERASE, 139773773942784, 139773773942784,
3602STORE, 139773773942784, 139773774065663,
3603STORE, 139773774065664, 139773774098431,
3604STORE, 139773774098432, 139773774106623,
3605STORE, 139773774106624, 139773774110719,
3606STORE, 140726412963840, 140726412967935,
3607STORE, 140726412951552, 140726412963839,
3608STORE, 47859021058048, 47859021066239,
3609STORE, 47859021066240, 47859021074431,
3610STORE, 47859021074432, 47859021180927,
3611STORE, 47859021090816, 47859021180927,
3612STORE, 47859021074432, 47859021090815,
3613ERASE, 47859021090816, 47859021090816,
3614STORE, 47859021090816, 47859021164543,
3615STORE, 47859021164544, 47859021180927,
3616STORE, 47859021144064, 47859021164543,
3617STORE, 47859021090816, 47859021144063,
3618ERASE, 47859021090816, 47859021090816,
3619STORE, 47859021090816, 47859021144063,
3620STORE, 47859021160448, 47859021164543,
3621STORE, 47859021144064, 47859021160447,
3622ERASE, 47859021144064, 47859021144064,
3623STORE, 47859021144064, 47859021160447,
3624STORE, 47859021172736, 47859021180927,
3625STORE, 47859021164544, 47859021172735,
3626ERASE, 47859021164544, 47859021164544,
3627STORE, 47859021164544, 47859021172735,
3628ERASE, 47859021172736, 47859021172736,
3629STORE, 47859021172736, 47859021180927,
3630STORE, 47859021180928, 47859023020031,
3631STORE, 47859021320192, 47859023020031,
3632STORE, 47859021180928, 47859021320191,
3633ERASE, 47859021320192, 47859021320192,
3634STORE, 47859021320192, 47859022979071,
3635STORE, 47859022979072, 47859023020031,
3636STORE, 47859022663680, 47859022979071,
3637STORE, 47859021320192, 47859022663679,
3638ERASE, 47859021320192, 47859021320192,
3639STORE, 47859021320192, 47859022663679,
3640STORE, 47859022974976, 47859022979071,
3641STORE, 47859022663680, 47859022974975,
3642ERASE, 47859022663680, 47859022663680,
3643STORE, 47859022663680, 47859022974975,
3644STORE, 47859023003648, 47859023020031,
3645STORE, 47859022979072, 47859023003647,
3646ERASE, 47859022979072, 47859022979072,
3647STORE, 47859022979072, 47859023003647,
3648ERASE, 47859023003648, 47859023003648,
3649STORE, 47859023003648, 47859023020031,
3650STORE, 47859023003648, 47859023032319,
3651ERASE, 47859022979072, 47859022979072,
3652STORE, 47859022979072, 47859022995455,
3653STORE, 47859022995456, 47859023003647,
3654ERASE, 47859021164544, 47859021164544,
3655STORE, 47859021164544, 47859021168639,
3656STORE, 47859021168640, 47859021172735,
3657ERASE, 94094885199872, 94094885199872,
3658STORE, 94094885199872, 94094885216255,
3659STORE, 94094885216256, 94094885220351,
3660ERASE, 139773774098432, 139773774098432,
3661STORE, 139773774098432, 139773774102527,
3662STORE, 139773774102528, 139773774106623,
3663ERASE, 47859021058048, 47859021058048,
3664STORE, 94094901108736, 94094901243903,
3665STORE, 140737488347136, 140737488351231,
3666STORE, 140736567963648, 140737488351231,
3667ERASE, 140736567963648, 140736567963648,
3668STORE, 140736567963648, 140736567967743,
3669STORE, 94924425748480, 94924426461183,
3670ERASE, 94924425748480, 94924425748480,
3671STORE, 94924425748480, 94924425797631,
3672STORE, 94924425797632, 94924426461183,
3673ERASE, 94924425797632, 94924425797632,
3674STORE, 94924425797632, 94924426342399,
3675STORE, 94924426342400, 94924426440703,
3676STORE, 94924426440704, 94924426461183,
3677STORE, 140042126319616, 140042126491647,
3678ERASE, 140042126319616, 140042126319616,
3679STORE, 140042126319616, 140042126323711,
3680STORE, 140042126323712, 140042126491647,
3681ERASE, 140042126323712, 140042126323712,
3682STORE, 140042126323712, 140042126446591,
3683STORE, 140042126446592, 140042126479359,
3684STORE, 140042126479360, 140042126487551,
3685STORE, 140042126487552, 140042126491647,
3686STORE, 140736568672256, 140736568676351,
3687STORE, 140736568659968, 140736568672255,
3688STORE, 47590668677120, 47590668685311,
3689STORE, 47590668685312, 47590668693503,
3690STORE, 47590668693504, 47590668799999,
3691STORE, 47590668709888, 47590668799999,
3692STORE, 47590668693504, 47590668709887,
3693ERASE, 47590668709888, 47590668709888,
3694STORE, 47590668709888, 47590668783615,
3695STORE, 47590668783616, 47590668799999,
3696STORE, 47590668763136, 47590668783615,
3697STORE, 47590668709888, 47590668763135,
3698ERASE, 47590668709888, 47590668709888,
3699STORE, 47590668709888, 47590668763135,
3700STORE, 47590668779520, 47590668783615,
3701STORE, 47590668763136, 47590668779519,
3702ERASE, 47590668763136, 47590668763136,
3703STORE, 47590668763136, 47590668779519,
3704STORE, 47590668791808, 47590668799999,
3705STORE, 47590668783616, 47590668791807,
3706ERASE, 47590668783616, 47590668783616,
3707STORE, 47590668783616, 47590668791807,
3708ERASE, 47590668791808, 47590668791808,
3709STORE, 47590668791808, 47590668799999,
3710STORE, 47590668800000, 47590670639103,
3711STORE, 47590668939264, 47590670639103,
3712STORE, 47590668800000, 47590668939263,
3713ERASE, 47590668939264, 47590668939264,
3714STORE, 47590668939264, 47590670598143,
3715STORE, 47590670598144, 47590670639103,
3716STORE, 47590670282752, 47590670598143,
3717STORE, 47590668939264, 47590670282751,
3718ERASE, 47590668939264, 47590668939264,
3719STORE, 47590668939264, 47590670282751,
3720STORE, 47590670594048, 47590670598143,
3721STORE, 47590670282752, 47590670594047,
3722ERASE, 47590670282752, 47590670282752,
3723STORE, 47590670282752, 47590670594047,
3724STORE, 47590670622720, 47590670639103,
3725STORE, 47590670598144, 47590670622719,
3726ERASE, 47590670598144, 47590670598144,
3727STORE, 47590670598144, 47590670622719,
3728ERASE, 47590670622720, 47590670622720,
3729STORE, 47590670622720, 47590670639103,
3730STORE, 47590670622720, 47590670651391,
3731ERASE, 47590670598144, 47590670598144,
3732STORE, 47590670598144, 47590670614527,
3733STORE, 47590670614528, 47590670622719,
3734ERASE, 47590668783616, 47590668783616,
3735STORE, 47590668783616, 47590668787711,
3736STORE, 47590668787712, 47590668791807,
3737ERASE, 94924426440704, 94924426440704,
3738STORE, 94924426440704, 94924426457087,
3739STORE, 94924426457088, 94924426461183,
3740ERASE, 140042126479360, 140042126479360,
3741STORE, 140042126479360, 140042126483455,
3742STORE, 140042126483456, 140042126487551,
3743ERASE, 47590668677120, 47590668677120,
3744STORE, 140737488347136, 140737488351231,
3745STORE, 140733281439744, 140737488351231,
3746ERASE, 140733281439744, 140733281439744,
3747STORE, 140733281439744, 140733281443839,
3748STORE, 94490667069440, 94490667782143,
3749ERASE, 94490667069440, 94490667069440,
3750STORE, 94490667069440, 94490667118591,
3751STORE, 94490667118592, 94490667782143,
3752ERASE, 94490667118592, 94490667118592,
3753STORE, 94490667118592, 94490667663359,
3754STORE, 94490667663360, 94490667761663,
3755STORE, 94490667761664, 94490667782143,
3756STORE, 139878215118848, 139878215290879,
3757ERASE, 139878215118848, 139878215118848,
3758STORE, 139878215118848, 139878215122943,
3759STORE, 139878215122944, 139878215290879,
3760ERASE, 139878215122944, 139878215122944,
3761STORE, 139878215122944, 139878215245823,
3762STORE, 139878215245824, 139878215278591,
3763STORE, 139878215278592, 139878215286783,
3764STORE, 139878215286784, 139878215290879,
3765STORE, 140733281464320, 140733281468415,
3766STORE, 140733281452032, 140733281464319,
3767STORE, 47754579877888, 47754579886079,
3768STORE, 47754579886080, 47754579894271,
3769STORE, 47754579894272, 47754580000767,
3770STORE, 47754579910656, 47754580000767,
3771STORE, 47754579894272, 47754579910655,
3772ERASE, 47754579910656, 47754579910656,
3773STORE, 47754579910656, 47754579984383,
3774STORE, 47754579984384, 47754580000767,
3775STORE, 47754579963904, 47754579984383,
3776STORE, 47754579910656, 47754579963903,
3777ERASE, 47754579910656, 47754579910656,
3778STORE, 47754579910656, 47754579963903,
3779STORE, 47754579980288, 47754579984383,
3780STORE, 47754579963904, 47754579980287,
3781ERASE, 47754579963904, 47754579963904,
3782STORE, 47754579963904, 47754579980287,
3783STORE, 47754579992576, 47754580000767,
3784STORE, 47754579984384, 47754579992575,
3785ERASE, 47754579984384, 47754579984384,
3786STORE, 47754579984384, 47754579992575,
3787ERASE, 47754579992576, 47754579992576,
3788STORE, 47754579992576, 47754580000767,
3789STORE, 47754580000768, 47754581839871,
3790STORE, 47754580140032, 47754581839871,
3791STORE, 47754580000768, 47754580140031,
3792ERASE, 47754580140032, 47754580140032,
3793STORE, 47754580140032, 47754581798911,
3794STORE, 47754581798912, 47754581839871,
3795STORE, 47754581483520, 47754581798911,
3796STORE, 47754580140032, 47754581483519,
3797ERASE, 47754580140032, 47754580140032,
3798STORE, 47754580140032, 47754581483519,
3799STORE, 47754581794816, 47754581798911,
3800STORE, 47754581483520, 47754581794815,
3801ERASE, 47754581483520, 47754581483520,
3802STORE, 47754581483520, 47754581794815,
3803STORE, 47754581823488, 47754581839871,
3804STORE, 47754581798912, 47754581823487,
3805ERASE, 47754581798912, 47754581798912,
3806STORE, 47754581798912, 47754581823487,
3807ERASE, 47754581823488, 47754581823488,
3808STORE, 47754581823488, 47754581839871,
3809STORE, 47754581823488, 47754581852159,
3810ERASE, 47754581798912, 47754581798912,
3811STORE, 47754581798912, 47754581815295,
3812STORE, 47754581815296, 47754581823487,
3813ERASE, 47754579984384, 47754579984384,
3814STORE, 47754579984384, 47754579988479,
3815STORE, 47754579988480, 47754579992575,
3816ERASE, 94490667761664, 94490667761664,
3817STORE, 94490667761664, 94490667778047,
3818STORE, 94490667778048, 94490667782143,
3819ERASE, 139878215278592, 139878215278592,
3820STORE, 139878215278592, 139878215282687,
3821STORE, 139878215282688, 139878215286783,
3822ERASE, 47754579877888, 47754579877888,
3823STORE, 94490669649920, 94490669785087,
3824STORE, 140737488347136, 140737488351231,
3825STORE, 140735382188032, 140737488351231,
3826ERASE, 140735382188032, 140735382188032,
3827STORE, 140735382188032, 140735382192127,
3828STORE, 94150181302272, 94150182014975,
3829ERASE, 94150181302272, 94150181302272,
3830STORE, 94150181302272, 94150181351423,
3831STORE, 94150181351424, 94150182014975,
3832ERASE, 94150181351424, 94150181351424,
3833STORE, 94150181351424, 94150181896191,
3834STORE, 94150181896192, 94150181994495,
3835STORE, 94150181994496, 94150182014975,
3836STORE, 139679752458240, 139679752630271,
3837ERASE, 139679752458240, 139679752458240,
3838STORE, 139679752458240, 139679752462335,
3839STORE, 139679752462336, 139679752630271,
3840ERASE, 139679752462336, 139679752462336,
3841STORE, 139679752462336, 139679752585215,
3842STORE, 139679752585216, 139679752617983,
3843STORE, 139679752617984, 139679752626175,
3844STORE, 139679752626176, 139679752630271,
3845STORE, 140735382536192, 140735382540287,
3846STORE, 140735382523904, 140735382536191,
3847STORE, 47953042538496, 47953042546687,
3848STORE, 47953042546688, 47953042554879,
3849STORE, 47953042554880, 47953042661375,
3850STORE, 47953042571264, 47953042661375,
3851STORE, 47953042554880, 47953042571263,
3852ERASE, 47953042571264, 47953042571264,
3853STORE, 47953042571264, 47953042644991,
3854STORE, 47953042644992, 47953042661375,
3855STORE, 47953042624512, 47953042644991,
3856STORE, 47953042571264, 47953042624511,
3857ERASE, 47953042571264, 47953042571264,
3858STORE, 47953042571264, 47953042624511,
3859STORE, 47953042640896, 47953042644991,
3860STORE, 47953042624512, 47953042640895,
3861ERASE, 47953042624512, 47953042624512,
3862STORE, 47953042624512, 47953042640895,
3863STORE, 47953042653184, 47953042661375,
3864STORE, 47953042644992, 47953042653183,
3865ERASE, 47953042644992, 47953042644992,
3866STORE, 47953042644992, 47953042653183,
3867ERASE, 47953042653184, 47953042653184,
3868STORE, 47953042653184, 47953042661375,
3869STORE, 47953042661376, 47953044500479,
3870STORE, 47953042800640, 47953044500479,
3871STORE, 47953042661376, 47953042800639,
3872ERASE, 47953042800640, 47953042800640,
3873STORE, 47953042800640, 47953044459519,
3874STORE, 47953044459520, 47953044500479,
3875STORE, 47953044144128, 47953044459519,
3876STORE, 47953042800640, 47953044144127,
3877ERASE, 47953042800640, 47953042800640,
3878STORE, 47953042800640, 47953044144127,
3879STORE, 47953044455424, 47953044459519,
3880STORE, 47953044144128, 47953044455423,
3881ERASE, 47953044144128, 47953044144128,
3882STORE, 47953044144128, 47953044455423,
3883STORE, 47953044484096, 47953044500479,
3884STORE, 47953044459520, 47953044484095,
3885ERASE, 47953044459520, 47953044459520,
3886STORE, 47953044459520, 47953044484095,
3887ERASE, 47953044484096, 47953044484096,
3888STORE, 47953044484096, 47953044500479,
3889STORE, 47953044484096, 47953044512767,
3890ERASE, 47953044459520, 47953044459520,
3891STORE, 47953044459520, 47953044475903,
3892STORE, 47953044475904, 47953044484095,
3893ERASE, 47953042644992, 47953042644992,
3894STORE, 47953042644992, 47953042649087,
3895STORE, 47953042649088, 47953042653183,
3896ERASE, 94150181994496, 94150181994496,
3897STORE, 94150181994496, 94150182010879,
3898STORE, 94150182010880, 94150182014975,
3899ERASE, 139679752617984, 139679752617984,
3900STORE, 139679752617984, 139679752622079,
3901STORE, 139679752622080, 139679752626175,
3902ERASE, 47953042538496, 47953042538496,
3903STORE, 140737488347136, 140737488351231,
3904STORE, 140737044123648, 140737488351231,
3905ERASE, 140737044123648, 140737044123648,
3906STORE, 140737044123648, 140737044127743,
3907STORE, 94425324294144, 94425325006847,
3908ERASE, 94425324294144, 94425324294144,
3909STORE, 94425324294144, 94425324343295,
3910STORE, 94425324343296, 94425325006847,
3911ERASE, 94425324343296, 94425324343296,
3912STORE, 94425324343296, 94425324888063,
3913STORE, 94425324888064, 94425324986367,
3914STORE, 94425324986368, 94425325006847,
3915STORE, 140382015016960, 140382015188991,
3916ERASE, 140382015016960, 140382015016960,
3917STORE, 140382015016960, 140382015021055,
3918STORE, 140382015021056, 140382015188991,
3919ERASE, 140382015021056, 140382015021056,
3920STORE, 140382015021056, 140382015143935,
3921STORE, 140382015143936, 140382015176703,
3922STORE, 140382015176704, 140382015184895,
3923STORE, 140382015184896, 140382015188991,
3924STORE, 140737045585920, 140737045590015,
3925STORE, 140737045573632, 140737045585919,
3926STORE, 47250779979776, 47250779987967,
3927STORE, 47250779987968, 47250779996159,
3928STORE, 47250779996160, 47250780102655,
3929STORE, 47250780012544, 47250780102655,
3930STORE, 47250779996160, 47250780012543,
3931ERASE, 47250780012544, 47250780012544,
3932STORE, 47250780012544, 47250780086271,
3933STORE, 47250780086272, 47250780102655,
3934STORE, 47250780065792, 47250780086271,
3935STORE, 47250780012544, 47250780065791,
3936ERASE, 47250780012544, 47250780012544,
3937STORE, 47250780012544, 47250780065791,
3938STORE, 47250780082176, 47250780086271,
3939STORE, 47250780065792, 47250780082175,
3940ERASE, 47250780065792, 47250780065792,
3941STORE, 47250780065792, 47250780082175,
3942STORE, 47250780094464, 47250780102655,
3943STORE, 47250780086272, 47250780094463,
3944ERASE, 47250780086272, 47250780086272,
3945STORE, 47250780086272, 47250780094463,
3946ERASE, 47250780094464, 47250780094464,
3947STORE, 47250780094464, 47250780102655,
3948STORE, 47250780102656, 47250781941759,
3949STORE, 47250780241920, 47250781941759,
3950STORE, 47250780102656, 47250780241919,
3951ERASE, 47250780241920, 47250780241920,
3952STORE, 47250780241920, 47250781900799,
3953STORE, 47250781900800, 47250781941759,
3954STORE, 47250781585408, 47250781900799,
3955STORE, 47250780241920, 47250781585407,
3956ERASE, 47250780241920, 47250780241920,
3957STORE, 47250780241920, 47250781585407,
3958STORE, 47250781896704, 47250781900799,
3959STORE, 47250781585408, 47250781896703,
3960ERASE, 47250781585408, 47250781585408,
3961STORE, 47250781585408, 47250781896703,
3962STORE, 47250781925376, 47250781941759,
3963STORE, 47250781900800, 47250781925375,
3964ERASE, 47250781900800, 47250781900800,
3965STORE, 47250781900800, 47250781925375,
3966ERASE, 47250781925376, 47250781925376,
3967STORE, 47250781925376, 47250781941759,
3968STORE, 47250781925376, 47250781954047,
3969ERASE, 47250781900800, 47250781900800,
3970STORE, 47250781900800, 47250781917183,
3971STORE, 47250781917184, 47250781925375,
3972ERASE, 47250780086272, 47250780086272,
3973STORE, 47250780086272, 47250780090367,
3974STORE, 47250780090368, 47250780094463,
3975ERASE, 94425324986368, 94425324986368,
3976STORE, 94425324986368, 94425325002751,
3977STORE, 94425325002752, 94425325006847,
3978ERASE, 140382015176704, 140382015176704,
3979STORE, 140382015176704, 140382015180799,
3980STORE, 140382015180800, 140382015184895,
3981ERASE, 47250779979776, 47250779979776,
3982STORE, 94425351438336, 94425351573503,
3983STORE, 140737488347136, 140737488351231,
3984STORE, 140736801144832, 140737488351231,
3985ERASE, 140736801144832, 140736801144832,
3986STORE, 140736801144832, 140736801148927,
3987STORE, 94629429358592, 94629430071295,
3988ERASE, 94629429358592, 94629429358592,
3989STORE, 94629429358592, 94629429407743,
3990STORE, 94629429407744, 94629430071295,
3991ERASE, 94629429407744, 94629429407744,
3992STORE, 94629429407744, 94629429952511,
3993STORE, 94629429952512, 94629430050815,
3994STORE, 94629430050816, 94629430071295,
3995STORE, 139801685483520, 139801685655551,
3996ERASE, 139801685483520, 139801685483520,
3997STORE, 139801685483520, 139801685487615,
3998STORE, 139801685487616, 139801685655551,
3999ERASE, 139801685487616, 139801685487616,
4000STORE, 139801685487616, 139801685610495,
4001STORE, 139801685610496, 139801685643263,
4002STORE, 139801685643264, 139801685651455,
4003STORE, 139801685651456, 139801685655551,
4004STORE, 140736801198080, 140736801202175,
4005STORE, 140736801185792, 140736801198079,
4006STORE, 47831109513216, 47831109521407,
4007STORE, 47831109521408, 47831109529599,
4008STORE, 47831109529600, 47831109636095,
4009STORE, 47831109545984, 47831109636095,
4010STORE, 47831109529600, 47831109545983,
4011ERASE, 47831109545984, 47831109545984,
4012STORE, 47831109545984, 47831109619711,
4013STORE, 47831109619712, 47831109636095,
4014STORE, 47831109599232, 47831109619711,
4015STORE, 47831109545984, 47831109599231,
4016ERASE, 47831109545984, 47831109545984,
4017STORE, 47831109545984, 47831109599231,
4018STORE, 47831109615616, 47831109619711,
4019STORE, 47831109599232, 47831109615615,
4020ERASE, 47831109599232, 47831109599232,
4021STORE, 47831109599232, 47831109615615,
4022STORE, 47831109627904, 47831109636095,
4023STORE, 47831109619712, 47831109627903,
4024ERASE, 47831109619712, 47831109619712,
4025STORE, 47831109619712, 47831109627903,
4026ERASE, 47831109627904, 47831109627904,
4027STORE, 47831109627904, 47831109636095,
4028STORE, 47831109636096, 47831111475199,
4029STORE, 47831109775360, 47831111475199,
4030STORE, 47831109636096, 47831109775359,
4031ERASE, 47831109775360, 47831109775360,
4032STORE, 47831109775360, 47831111434239,
4033STORE, 47831111434240, 47831111475199,
4034STORE, 47831111118848, 47831111434239,
4035STORE, 47831109775360, 47831111118847,
4036ERASE, 47831109775360, 47831109775360,
4037STORE, 47831109775360, 47831111118847,
4038STORE, 47831111430144, 47831111434239,
4039STORE, 47831111118848, 47831111430143,
4040ERASE, 47831111118848, 47831111118848,
4041STORE, 47831111118848, 47831111430143,
4042STORE, 47831111458816, 47831111475199,
4043STORE, 47831111434240, 47831111458815,
4044ERASE, 47831111434240, 47831111434240,
4045STORE, 47831111434240, 47831111458815,
4046ERASE, 47831111458816, 47831111458816,
4047STORE, 47831111458816, 47831111475199,
4048STORE, 47831111458816, 47831111487487,
4049ERASE, 47831111434240, 47831111434240,
4050STORE, 47831111434240, 47831111450623,
4051STORE, 47831111450624, 47831111458815,
4052ERASE, 47831109619712, 47831109619712,
4053STORE, 47831109619712, 47831109623807,
4054STORE, 47831109623808, 47831109627903,
4055ERASE, 94629430050816, 94629430050816,
4056STORE, 94629430050816, 94629430067199,
4057STORE, 94629430067200, 94629430071295,
4058ERASE, 139801685643264, 139801685643264,
4059STORE, 139801685643264, 139801685647359,
4060STORE, 139801685647360, 139801685651455,
4061ERASE, 47831109513216, 47831109513216,
4062STORE, 140737488347136, 140737488351231,
4063STORE, 140729419612160, 140737488351231,
4064ERASE, 140729419612160, 140729419612160,
4065STORE, 140729419612160, 140729419616255,
4066STORE, 94443354148864, 94443354861567,
4067ERASE, 94443354148864, 94443354148864,
4068STORE, 94443354148864, 94443354198015,
4069STORE, 94443354198016, 94443354861567,
4070ERASE, 94443354198016, 94443354198016,
4071STORE, 94443354198016, 94443354742783,
4072STORE, 94443354742784, 94443354841087,
4073STORE, 94443354841088, 94443354861567,
4074STORE, 139741700038656, 139741700210687,
4075ERASE, 139741700038656, 139741700038656,
4076STORE, 139741700038656, 139741700042751,
4077STORE, 139741700042752, 139741700210687,
4078ERASE, 139741700042752, 139741700042752,
4079STORE, 139741700042752, 139741700165631,
4080STORE, 139741700165632, 139741700198399,
4081STORE, 139741700198400, 139741700206591,
4082STORE, 139741700206592, 139741700210687,
4083STORE, 140729420574720, 140729420578815,
4084STORE, 140729420562432, 140729420574719,
4085STORE, 47891094958080, 47891094966271,
4086STORE, 47891094966272, 47891094974463,
4087STORE, 47891094974464, 47891095080959,
4088STORE, 47891094990848, 47891095080959,
4089STORE, 47891094974464, 47891094990847,
4090ERASE, 47891094990848, 47891094990848,
4091STORE, 47891094990848, 47891095064575,
4092STORE, 47891095064576, 47891095080959,
4093STORE, 47891095044096, 47891095064575,
4094STORE, 47891094990848, 47891095044095,
4095ERASE, 47891094990848, 47891094990848,
4096STORE, 47891094990848, 47891095044095,
4097STORE, 47891095060480, 47891095064575,
4098STORE, 47891095044096, 47891095060479,
4099ERASE, 47891095044096, 47891095044096,
4100STORE, 47891095044096, 47891095060479,
4101STORE, 47891095072768, 47891095080959,
4102STORE, 47891095064576, 47891095072767,
4103ERASE, 47891095064576, 47891095064576,
4104STORE, 47891095064576, 47891095072767,
4105ERASE, 47891095072768, 47891095072768,
4106STORE, 47891095072768, 47891095080959,
4107STORE, 47891095080960, 47891096920063,
4108STORE, 47891095220224, 47891096920063,
4109STORE, 47891095080960, 47891095220223,
4110ERASE, 47891095220224, 47891095220224,
4111STORE, 47891095220224, 47891096879103,
4112STORE, 47891096879104, 47891096920063,
4113STORE, 47891096563712, 47891096879103,
4114STORE, 47891095220224, 47891096563711,
4115ERASE, 47891095220224, 47891095220224,
4116STORE, 47891095220224, 47891096563711,
4117STORE, 47891096875008, 47891096879103,
4118STORE, 47891096563712, 47891096875007,
4119ERASE, 47891096563712, 47891096563712,
4120STORE, 47891096563712, 47891096875007,
4121STORE, 47891096903680, 47891096920063,
4122STORE, 47891096879104, 47891096903679,
4123ERASE, 47891096879104, 47891096879104,
4124STORE, 47891096879104, 47891096903679,
4125ERASE, 47891096903680, 47891096903680,
4126STORE, 47891096903680, 47891096920063,
4127STORE, 47891096903680, 47891096932351,
4128ERASE, 47891096879104, 47891096879104,
4129STORE, 47891096879104, 47891096895487,
4130STORE, 47891096895488, 47891096903679,
4131ERASE, 47891095064576, 47891095064576,
4132STORE, 47891095064576, 47891095068671,
4133STORE, 47891095068672, 47891095072767,
4134ERASE, 94443354841088, 94443354841088,
4135STORE, 94443354841088, 94443354857471,
4136STORE, 94443354857472, 94443354861567,
4137ERASE, 139741700198400, 139741700198400,
4138STORE, 139741700198400, 139741700202495,
4139STORE, 139741700202496, 139741700206591,
4140ERASE, 47891094958080, 47891094958080,
4141STORE, 94443360825344, 94443360960511,
4142STORE, 140737488347136, 140737488351231,
4143STORE, 140722961661952, 140737488351231,
4144ERASE, 140722961661952, 140722961661952,
4145STORE, 140722961661952, 140722961666047,
4146STORE, 94878388944896, 94878389657599,
4147ERASE, 94878388944896, 94878388944896,
4148STORE, 94878388944896, 94878388994047,
4149STORE, 94878388994048, 94878389657599,
4150ERASE, 94878388994048, 94878388994048,
4151STORE, 94878388994048, 94878389538815,
4152STORE, 94878389538816, 94878389637119,
4153STORE, 94878389637120, 94878389657599,
4154STORE, 140210690056192, 140210690228223,
4155ERASE, 140210690056192, 140210690056192,
4156STORE, 140210690056192, 140210690060287,
4157STORE, 140210690060288, 140210690228223,
4158ERASE, 140210690060288, 140210690060288,
4159STORE, 140210690060288, 140210690183167,
4160STORE, 140210690183168, 140210690215935,
4161STORE, 140210690215936, 140210690224127,
4162STORE, 140210690224128, 140210690228223,
4163STORE, 140722963148800, 140722963152895,
4164STORE, 140722963136512, 140722963148799,
4165STORE, 47422104940544, 47422104948735,
4166STORE, 47422104948736, 47422104956927,
4167STORE, 47422104956928, 47422105063423,
4168STORE, 47422104973312, 47422105063423,
4169STORE, 47422104956928, 47422104973311,
4170ERASE, 47422104973312, 47422104973312,
4171STORE, 47422104973312, 47422105047039,
4172STORE, 47422105047040, 47422105063423,
4173STORE, 47422105026560, 47422105047039,
4174STORE, 47422104973312, 47422105026559,
4175ERASE, 47422104973312, 47422104973312,
4176STORE, 47422104973312, 47422105026559,
4177STORE, 47422105042944, 47422105047039,
4178STORE, 47422105026560, 47422105042943,
4179ERASE, 47422105026560, 47422105026560,
4180STORE, 47422105026560, 47422105042943,
4181STORE, 47422105055232, 47422105063423,
4182STORE, 47422105047040, 47422105055231,
4183ERASE, 47422105047040, 47422105047040,
4184STORE, 47422105047040, 47422105055231,
4185ERASE, 47422105055232, 47422105055232,
4186STORE, 47422105055232, 47422105063423,
4187STORE, 47422105063424, 47422106902527,
4188STORE, 47422105202688, 47422106902527,
4189STORE, 47422105063424, 47422105202687,
4190ERASE, 47422105202688, 47422105202688,
4191STORE, 47422105202688, 47422106861567,
4192STORE, 47422106861568, 47422106902527,
4193STORE, 47422106546176, 47422106861567,
4194STORE, 47422105202688, 47422106546175,
4195ERASE, 47422105202688, 47422105202688,
4196STORE, 47422105202688, 47422106546175,
4197STORE, 47422106857472, 47422106861567,
4198STORE, 47422106546176, 47422106857471,
4199ERASE, 47422106546176, 47422106546176,
4200STORE, 47422106546176, 47422106857471,
4201STORE, 47422106886144, 47422106902527,
4202STORE, 47422106861568, 47422106886143,
4203ERASE, 47422106861568, 47422106861568,
4204STORE, 47422106861568, 47422106886143,
4205ERASE, 47422106886144, 47422106886144,
4206STORE, 47422106886144, 47422106902527,
4207STORE, 47422106886144, 47422106914815,
4208ERASE, 47422106861568, 47422106861568,
4209STORE, 47422106861568, 47422106877951,
4210STORE, 47422106877952, 47422106886143,
4211ERASE, 47422105047040, 47422105047040,
4212STORE, 47422105047040, 47422105051135,
4213STORE, 47422105051136, 47422105055231,
4214ERASE, 94878389637120, 94878389637120,
4215STORE, 94878389637120, 94878389653503,
4216STORE, 94878389653504, 94878389657599,
4217ERASE, 140210690215936, 140210690215936,
4218STORE, 140210690215936, 140210690220031,
4219STORE, 140210690220032, 140210690224127,
4220ERASE, 47422104940544, 47422104940544,
4221STORE, 140737488347136, 140737488351231,
4222STORE, 140727690309632, 140737488351231,
4223ERASE, 140727690309632, 140727690309632,
4224STORE, 140727690309632, 140727690313727,
4225STORE, 94121892208640, 94121892921343,
4226ERASE, 94121892208640, 94121892208640,
4227STORE, 94121892208640, 94121892257791,
4228STORE, 94121892257792, 94121892921343,
4229ERASE, 94121892257792, 94121892257792,
4230STORE, 94121892257792, 94121892802559,
4231STORE, 94121892802560, 94121892900863,
4232STORE, 94121892900864, 94121892921343,
4233STORE, 140662438326272, 140662438498303,
4234ERASE, 140662438326272, 140662438326272,
4235STORE, 140662438326272, 140662438330367,
4236STORE, 140662438330368, 140662438498303,
4237ERASE, 140662438330368, 140662438330368,
4238STORE, 140662438330368, 140662438453247,
4239STORE, 140662438453248, 140662438486015,
4240STORE, 140662438486016, 140662438494207,
4241STORE, 140662438494208, 140662438498303,
4242STORE, 140727690379264, 140727690383359,
4243STORE, 140727690366976, 140727690379263,
4244STORE, 46970356670464, 46970356678655,
4245STORE, 46970356678656, 46970356686847,
4246STORE, 46970356686848, 46970356793343,
4247STORE, 46970356703232, 46970356793343,
4248STORE, 46970356686848, 46970356703231,
4249ERASE, 46970356703232, 46970356703232,
4250STORE, 46970356703232, 46970356776959,
4251STORE, 46970356776960, 46970356793343,
4252STORE, 46970356756480, 46970356776959,
4253STORE, 46970356703232, 46970356756479,
4254ERASE, 46970356703232, 46970356703232,
4255STORE, 46970356703232, 46970356756479,
4256STORE, 46970356772864, 46970356776959,
4257STORE, 46970356756480, 46970356772863,
4258ERASE, 46970356756480, 46970356756480,
4259STORE, 46970356756480, 46970356772863,
4260STORE, 46970356785152, 46970356793343,
4261STORE, 46970356776960, 46970356785151,
4262ERASE, 46970356776960, 46970356776960,
4263STORE, 46970356776960, 46970356785151,
4264ERASE, 46970356785152, 46970356785152,
4265STORE, 46970356785152, 46970356793343,
4266STORE, 46970356793344, 46970358632447,
4267STORE, 46970356932608, 46970358632447,
4268STORE, 46970356793344, 46970356932607,
4269ERASE, 46970356932608, 46970356932608,
4270STORE, 46970356932608, 46970358591487,
4271STORE, 46970358591488, 46970358632447,
4272STORE, 46970358276096, 46970358591487,
4273STORE, 46970356932608, 46970358276095,
4274ERASE, 46970356932608, 46970356932608,
4275STORE, 46970356932608, 46970358276095,
4276STORE, 46970358587392, 46970358591487,
4277STORE, 46970358276096, 46970358587391,
4278ERASE, 46970358276096, 46970358276096,
4279STORE, 46970358276096, 46970358587391,
4280STORE, 46970358616064, 46970358632447,
4281STORE, 46970358591488, 46970358616063,
4282ERASE, 46970358591488, 46970358591488,
4283STORE, 46970358591488, 46970358616063,
4284ERASE, 46970358616064, 46970358616064,
4285STORE, 46970358616064, 46970358632447,
4286STORE, 46970358616064, 46970358644735,
4287ERASE, 46970358591488, 46970358591488,
4288STORE, 46970358591488, 46970358607871,
4289STORE, 46970358607872, 46970358616063,
4290ERASE, 46970356776960, 46970356776960,
4291STORE, 46970356776960, 46970356781055,
4292STORE, 46970356781056, 46970356785151,
4293ERASE, 94121892900864, 94121892900864,
4294STORE, 94121892900864, 94121892917247,
4295STORE, 94121892917248, 94121892921343,
4296ERASE, 140662438486016, 140662438486016,
4297STORE, 140662438486016, 140662438490111,
4298STORE, 140662438490112, 140662438494207,
4299ERASE, 46970356670464, 46970356670464,
4300STORE, 94121898610688, 94121898745855,
4301STORE, 140737488347136, 140737488351231,
4302STORE, 140737189351424, 140737488351231,
4303ERASE, 140737189351424, 140737189351424,
4304STORE, 140737189351424, 140737189355519,
4305STORE, 93847948832768, 93847949545471,
4306ERASE, 93847948832768, 93847948832768,
4307STORE, 93847948832768, 93847948881919,
4308STORE, 93847948881920, 93847949545471,
4309ERASE, 93847948881920, 93847948881920,
4310STORE, 93847948881920, 93847949426687,
4311STORE, 93847949426688, 93847949524991,
4312STORE, 93847949524992, 93847949545471,
4313STORE, 139698989985792, 139698990157823,
4314ERASE, 139698989985792, 139698989985792,
4315STORE, 139698989985792, 139698989989887,
4316STORE, 139698989989888, 139698990157823,
4317ERASE, 139698989989888, 139698989989888,
4318STORE, 139698989989888, 139698990112767,
4319STORE, 139698990112768, 139698990145535,
4320STORE, 139698990145536, 139698990153727,
4321STORE, 139698990153728, 139698990157823,
4322STORE, 140737189744640, 140737189748735,
4323STORE, 140737189732352, 140737189744639,
4324STORE, 47933805010944, 47933805019135,
4325STORE, 47933805019136, 47933805027327,
4326STORE, 47933805027328, 47933805133823,
4327STORE, 47933805043712, 47933805133823,
4328STORE, 47933805027328, 47933805043711,
4329ERASE, 47933805043712, 47933805043712,
4330STORE, 47933805043712, 47933805117439,
4331STORE, 47933805117440, 47933805133823,
4332STORE, 47933805096960, 47933805117439,
4333STORE, 47933805043712, 47933805096959,
4334ERASE, 47933805043712, 47933805043712,
4335STORE, 47933805043712, 47933805096959,
4336STORE, 47933805113344, 47933805117439,
4337STORE, 47933805096960, 47933805113343,
4338ERASE, 47933805096960, 47933805096960,
4339STORE, 47933805096960, 47933805113343,
4340STORE, 47933805125632, 47933805133823,
4341STORE, 47933805117440, 47933805125631,
4342ERASE, 47933805117440, 47933805117440,
4343STORE, 47933805117440, 47933805125631,
4344ERASE, 47933805125632, 47933805125632,
4345STORE, 47933805125632, 47933805133823,
4346STORE, 47933805133824, 47933806972927,
4347STORE, 47933805273088, 47933806972927,
4348STORE, 47933805133824, 47933805273087,
4349ERASE, 47933805273088, 47933805273088,
4350STORE, 47933805273088, 47933806931967,
4351STORE, 47933806931968, 47933806972927,
4352STORE, 47933806616576, 47933806931967,
4353STORE, 47933805273088, 47933806616575,
4354ERASE, 47933805273088, 47933805273088,
4355STORE, 47933805273088, 47933806616575,
4356STORE, 47933806927872, 47933806931967,
4357STORE, 47933806616576, 47933806927871,
4358ERASE, 47933806616576, 47933806616576,
4359STORE, 47933806616576, 47933806927871,
4360STORE, 47933806956544, 47933806972927,
4361STORE, 47933806931968, 47933806956543,
4362ERASE, 47933806931968, 47933806931968,
4363STORE, 47933806931968, 47933806956543,
4364ERASE, 47933806956544, 47933806956544,
4365STORE, 47933806956544, 47933806972927,
4366STORE, 47933806956544, 47933806985215,
4367ERASE, 47933806931968, 47933806931968,
4368STORE, 47933806931968, 47933806948351,
4369STORE, 47933806948352, 47933806956543,
4370ERASE, 47933805117440, 47933805117440,
4371STORE, 47933805117440, 47933805121535,
4372STORE, 47933805121536, 47933805125631,
4373ERASE, 93847949524992, 93847949524992,
4374STORE, 93847949524992, 93847949541375,
4375STORE, 93847949541376, 93847949545471,
4376ERASE, 139698990145536, 139698990145536,
4377STORE, 139698990145536, 139698990149631,
4378STORE, 139698990149632, 139698990153727,
4379ERASE, 47933805010944, 47933805010944,
4380STORE, 140737488347136, 140737488351231,
4381STORE, 140725553991680, 140737488351231,
4382ERASE, 140725553991680, 140725553991680,
4383STORE, 140725553991680, 140725553995775,
4384STORE, 93980056248320, 93980056961023,
4385ERASE, 93980056248320, 93980056248320,
4386STORE, 93980056248320, 93980056297471,
4387STORE, 93980056297472, 93980056961023,
4388ERASE, 93980056297472, 93980056297472,
4389STORE, 93980056297472, 93980056842239,
4390STORE, 93980056842240, 93980056940543,
4391STORE, 93980056940544, 93980056961023,
4392STORE, 140146588971008, 140146589143039,
4393ERASE, 140146588971008, 140146588971008,
4394STORE, 140146588971008, 140146588975103,
4395STORE, 140146588975104, 140146589143039,
4396ERASE, 140146588975104, 140146588975104,
4397STORE, 140146588975104, 140146589097983,
4398STORE, 140146589097984, 140146589130751,
4399STORE, 140146589130752, 140146589138943,
4400STORE, 140146589138944, 140146589143039,
4401STORE, 140725554860032, 140725554864127,
4402STORE, 140725554847744, 140725554860031,
4403STORE, 47486206025728, 47486206033919,
4404STORE, 47486206033920, 47486206042111,
4405STORE, 47486206042112, 47486206148607,
4406STORE, 47486206058496, 47486206148607,
4407STORE, 47486206042112, 47486206058495,
4408ERASE, 47486206058496, 47486206058496,
4409STORE, 47486206058496, 47486206132223,
4410STORE, 47486206132224, 47486206148607,
4411STORE, 47486206111744, 47486206132223,
4412STORE, 47486206058496, 47486206111743,
4413ERASE, 47486206058496, 47486206058496,
4414STORE, 47486206058496, 47486206111743,
4415STORE, 47486206128128, 47486206132223,
4416STORE, 47486206111744, 47486206128127,
4417ERASE, 47486206111744, 47486206111744,
4418STORE, 47486206111744, 47486206128127,
4419STORE, 47486206140416, 47486206148607,
4420STORE, 47486206132224, 47486206140415,
4421ERASE, 47486206132224, 47486206132224,
4422STORE, 47486206132224, 47486206140415,
4423ERASE, 47486206140416, 47486206140416,
4424STORE, 47486206140416, 47486206148607,
4425STORE, 47486206148608, 47486207987711,
4426STORE, 47486206287872, 47486207987711,
4427STORE, 47486206148608, 47486206287871,
4428ERASE, 47486206287872, 47486206287872,
4429STORE, 47486206287872, 47486207946751,
4430STORE, 47486207946752, 47486207987711,
4431STORE, 47486207631360, 47486207946751,
4432STORE, 47486206287872, 47486207631359,
4433ERASE, 47486206287872, 47486206287872,
4434STORE, 47486206287872, 47486207631359,
4435STORE, 47486207942656, 47486207946751,
4436STORE, 47486207631360, 47486207942655,
4437ERASE, 47486207631360, 47486207631360,
4438STORE, 47486207631360, 47486207942655,
4439STORE, 47486207971328, 47486207987711,
4440STORE, 47486207946752, 47486207971327,
4441ERASE, 47486207946752, 47486207946752,
4442STORE, 47486207946752, 47486207971327,
4443ERASE, 47486207971328, 47486207971328,
4444STORE, 47486207971328, 47486207987711,
4445STORE, 47486207971328, 47486207999999,
4446ERASE, 47486207946752, 47486207946752,
4447STORE, 47486207946752, 47486207963135,
4448STORE, 47486207963136, 47486207971327,
4449ERASE, 47486206132224, 47486206132224,
4450STORE, 47486206132224, 47486206136319,
4451STORE, 47486206136320, 47486206140415,
4452ERASE, 93980056940544, 93980056940544,
4453STORE, 93980056940544, 93980056956927,
4454STORE, 93980056956928, 93980056961023,
4455ERASE, 140146589130752, 140146589130752,
4456STORE, 140146589130752, 140146589134847,
4457STORE, 140146589134848, 140146589138943,
4458ERASE, 47486206025728, 47486206025728,
4459STORE, 93980070006784, 93980070141951,
4460STORE, 140737488347136, 140737488351231,
4461STORE, 140727334776832, 140737488351231,
4462ERASE, 140727334776832, 140727334776832,
4463STORE, 140727334776832, 140727334780927,
4464STORE, 94049747247104, 94049747959807,
4465ERASE, 94049747247104, 94049747247104,
4466STORE, 94049747247104, 94049747296255,
4467STORE, 94049747296256, 94049747959807,
4468ERASE, 94049747296256, 94049747296256,
4469STORE, 94049747296256, 94049747841023,
4470STORE, 94049747841024, 94049747939327,
4471STORE, 94049747939328, 94049747959807,
4472STORE, 140227307216896, 140227307388927,
4473ERASE, 140227307216896, 140227307216896,
4474STORE, 140227307216896, 140227307220991,
4475STORE, 140227307220992, 140227307388927,
4476ERASE, 140227307220992, 140227307220992,
4477STORE, 140227307220992, 140227307343871,
4478STORE, 140227307343872, 140227307376639,
4479STORE, 140227307376640, 140227307384831,
4480STORE, 140227307384832, 140227307388927,
4481STORE, 140727335337984, 140727335342079,
4482STORE, 140727335325696, 140727335337983,
4483STORE, 47405487779840, 47405487788031,
4484STORE, 47405487788032, 47405487796223,
4485STORE, 47405487796224, 47405487902719,
4486STORE, 47405487812608, 47405487902719,
4487STORE, 47405487796224, 47405487812607,
4488ERASE, 47405487812608, 47405487812608,
4489STORE, 47405487812608, 47405487886335,
4490STORE, 47405487886336, 47405487902719,
4491STORE, 47405487865856, 47405487886335,
4492STORE, 47405487812608, 47405487865855,
4493ERASE, 47405487812608, 47405487812608,
4494STORE, 47405487812608, 47405487865855,
4495STORE, 47405487882240, 47405487886335,
4496STORE, 47405487865856, 47405487882239,
4497ERASE, 47405487865856, 47405487865856,
4498STORE, 47405487865856, 47405487882239,
4499STORE, 47405487894528, 47405487902719,
4500STORE, 47405487886336, 47405487894527,
4501ERASE, 47405487886336, 47405487886336,
4502STORE, 47405487886336, 47405487894527,
4503ERASE, 47405487894528, 47405487894528,
4504STORE, 47405487894528, 47405487902719,
4505STORE, 47405487902720, 47405489741823,
4506STORE, 47405488041984, 47405489741823,
4507STORE, 47405487902720, 47405488041983,
4508ERASE, 47405488041984, 47405488041984,
4509STORE, 47405488041984, 47405489700863,
4510STORE, 47405489700864, 47405489741823,
4511STORE, 47405489385472, 47405489700863,
4512STORE, 47405488041984, 47405489385471,
4513ERASE, 47405488041984, 47405488041984,
4514STORE, 47405488041984, 47405489385471,
4515STORE, 47405489696768, 47405489700863,
4516STORE, 47405489385472, 47405489696767,
4517ERASE, 47405489385472, 47405489385472,
4518STORE, 47405489385472, 47405489696767,
4519STORE, 47405489725440, 47405489741823,
4520STORE, 47405489700864, 47405489725439,
4521ERASE, 47405489700864, 47405489700864,
4522STORE, 47405489700864, 47405489725439,
4523ERASE, 47405489725440, 47405489725440,
4524STORE, 47405489725440, 47405489741823,
4525STORE, 47405489725440, 47405489754111,
4526ERASE, 47405489700864, 47405489700864,
4527STORE, 47405489700864, 47405489717247,
4528STORE, 47405489717248, 47405489725439,
4529ERASE, 47405487886336, 47405487886336,
4530STORE, 47405487886336, 47405487890431,
4531STORE, 47405487890432, 47405487894527,
4532ERASE, 94049747939328, 94049747939328,
4533STORE, 94049747939328, 94049747955711,
4534STORE, 94049747955712, 94049747959807,
4535ERASE, 140227307376640, 140227307376640,
4536STORE, 140227307376640, 140227307380735,
4537STORE, 140227307380736, 140227307384831,
4538ERASE, 47405487779840, 47405487779840,
4539STORE, 94049758810112, 94049758945279,
4540STORE, 140737488347136, 140737488351231,
4541STORE, 140727079718912, 140737488351231,
4542ERASE, 140727079718912, 140727079718912,
4543STORE, 140727079718912, 140727079723007,
4544STORE, 94250996527104, 94250997239807,
4545ERASE, 94250996527104, 94250996527104,
4546STORE, 94250996527104, 94250996576255,
4547STORE, 94250996576256, 94250997239807,
4548ERASE, 94250996576256, 94250996576256,
4549STORE, 94250996576256, 94250997121023,
4550STORE, 94250997121024, 94250997219327,
4551STORE, 94250997219328, 94250997239807,
4552STORE, 140060022587392, 140060022759423,
4553ERASE, 140060022587392, 140060022587392,
4554STORE, 140060022587392, 140060022591487,
4555STORE, 140060022591488, 140060022759423,
4556ERASE, 140060022591488, 140060022591488,
4557STORE, 140060022591488, 140060022714367,
4558STORE, 140060022714368, 140060022747135,
4559STORE, 140060022747136, 140060022755327,
4560STORE, 140060022755328, 140060022759423,
4561STORE, 140727079788544, 140727079792639,
4562STORE, 140727079776256, 140727079788543,
4563/* this next one caused issues when lowering the efficiency */
4564STORE, 47572772409344, 47572772417535,
4565STORE, 47572772417536, 47572772425727,
4566STORE, 47572772425728, 47572772532223,
4567STORE, 47572772442112, 47572772532223,
4568STORE, 47572772425728, 47572772442111,
4569ERASE, 47572772442112, 47572772442112,
4570STORE, 47572772442112, 47572772515839,
4571STORE, 47572772515840, 47572772532223,
4572STORE, 47572772495360, 47572772515839,
4573STORE, 47572772442112, 47572772495359,
4574ERASE, 47572772442112, 47572772442112,
4575STORE, 47572772442112, 47572772495359,
4576STORE, 47572772511744, 47572772515839,
4577STORE, 47572772495360, 47572772511743,
4578ERASE, 47572772495360, 47572772495360,
4579STORE, 47572772495360, 47572772511743,
4580STORE, 47572772524032, 47572772532223,
4581STORE, 47572772515840, 47572772524031,
4582ERASE, 47572772515840, 47572772515840,
4583STORE, 47572772515840, 47572772524031,
4584ERASE, 47572772524032, 47572772524032,
4585STORE, 47572772524032, 47572772532223,
4586STORE, 47572772532224, 47572774371327,
4587STORE, 47572772671488, 47572774371327,
4588STORE, 47572772532224, 47572772671487,
4589ERASE, 47572772671488, 47572772671488,
4590STORE, 47572772671488, 47572774330367,
4591STORE, 47572774330368, 47572774371327,
4592STORE, 47572774014976, 47572774330367,
4593STORE, 47572772671488, 47572774014975,
4594ERASE, 47572772671488, 47572772671488,
4595STORE, 47572772671488, 47572774014975,
4596STORE, 47572774326272, 47572774330367,
4597STORE, 47572774014976, 47572774326271,
4598ERASE, 47572774014976, 47572774014976,
4599STORE, 47572774014976, 47572774326271,
4600STORE, 47572774354944, 47572774371327,
4601STORE, 47572774330368, 47572774354943,
4602ERASE, 47572774330368, 47572774330368,
4603STORE, 47572774330368, 47572774354943,
4604ERASE, 47572774354944, 47572774354944,
4605STORE, 47572774354944, 47572774371327,
4606STORE, 47572774354944, 47572774383615,
4607ERASE, 47572774330368, 47572774330368,
4608STORE, 47572774330368, 47572774346751,
4609STORE, 47572774346752, 47572774354943,
4610ERASE, 47572772515840, 47572772515840,
4611STORE, 47572772515840, 47572772519935,
4612STORE, 47572772519936, 47572772524031,
4613ERASE, 94250997219328, 94250997219328,
4614STORE, 94250997219328, 94250997235711,
4615STORE, 94250997235712, 94250997239807,
4616ERASE, 140060022747136, 140060022747136,
4617STORE, 140060022747136, 140060022751231,
4618STORE, 140060022751232, 140060022755327,
4619ERASE, 47572772409344, 47572772409344,
4620STORE, 94251018305536, 94251018440703,
4621STORE, 140737488347136, 140737488351231,
4622STORE, 140730012389376, 140737488351231,
4623ERASE, 140730012389376, 140730012389376,
4624STORE, 140730012389376, 140730012393471,
4625STORE, 94382607675392, 94382607695871,
4626ERASE, 94382607675392, 94382607675392,
4627STORE, 94382607675392, 94382607679487,
4628STORE, 94382607679488, 94382607695871,
4629ERASE, 94382607679488, 94382607679488,
4630STORE, 94382607679488, 94382607683583,
4631STORE, 94382607683584, 94382607687679,
4632STORE, 94382607687680, 94382607695871,
4633STORE, 140252451454976, 140252451627007,
4634ERASE, 140252451454976, 140252451454976,
4635STORE, 140252451454976, 140252451459071,
4636STORE, 140252451459072, 140252451627007,
4637ERASE, 140252451459072, 140252451459072,
4638STORE, 140252451459072, 140252451581951,
4639STORE, 140252451581952, 140252451614719,
4640STORE, 140252451614720, 140252451622911,
4641STORE, 140252451622912, 140252451627007,
4642STORE, 140730013548544, 140730013552639,
4643STORE, 140730013536256, 140730013548543,
4644STORE, 47380343541760, 47380343549951,
4645STORE, 47380343549952, 47380343558143,
4646STORE, 47380343558144, 47380345397247,
4647STORE, 47380343697408, 47380345397247,
4648STORE, 47380343558144, 47380343697407,
4649ERASE, 47380343697408, 47380343697408,
4650STORE, 47380343697408, 47380345356287,
4651STORE, 47380345356288, 47380345397247,
4652STORE, 47380345040896, 47380345356287,
4653STORE, 47380343697408, 47380345040895,
4654ERASE, 47380343697408, 47380343697408,
4655STORE, 47380343697408, 47380345040895,
4656STORE, 47380345352192, 47380345356287,
4657STORE, 47380345040896, 47380345352191,
4658ERASE, 47380345040896, 47380345040896,
4659STORE, 47380345040896, 47380345352191,
4660STORE, 47380345380864, 47380345397247,
4661STORE, 47380345356288, 47380345380863,
4662ERASE, 47380345356288, 47380345356288,
4663STORE, 47380345356288, 47380345380863,
4664ERASE, 47380345380864, 47380345380864,
4665STORE, 47380345380864, 47380345397247,
4666ERASE, 47380345356288, 47380345356288,
4667STORE, 47380345356288, 47380345372671,
4668STORE, 47380345372672, 47380345380863,
4669ERASE, 94382607687680, 94382607687680,
4670STORE, 94382607687680, 94382607691775,
4671STORE, 94382607691776, 94382607695871,
4672ERASE, 140252451614720, 140252451614720,
4673STORE, 140252451614720, 140252451618815,
4674STORE, 140252451618816, 140252451622911,
4675ERASE, 47380343541760, 47380343541760,
4676STORE, 94382626803712, 94382626938879,
4677STORE, 140737488347136, 140737488351231,
4678STORE, 140730900271104, 140737488351231,
4679ERASE, 140730900271104, 140730900271104,
4680STORE, 140730900271104, 140730900275199,
4681STORE, 93855478120448, 93855478337535,
4682ERASE, 93855478120448, 93855478120448,
4683STORE, 93855478120448, 93855478198271,
4684STORE, 93855478198272, 93855478337535,
4685ERASE, 93855478198272, 93855478198272,
4686STORE, 93855478198272, 93855478243327,
4687STORE, 93855478243328, 93855478288383,
4688STORE, 93855478288384, 93855478337535,
4689STORE, 140092686573568, 140092686745599,
4690ERASE, 140092686573568, 140092686573568,
4691STORE, 140092686573568, 140092686577663,
4692STORE, 140092686577664, 140092686745599,
4693ERASE, 140092686577664, 140092686577664,
4694STORE, 140092686577664, 140092686700543,
4695STORE, 140092686700544, 140092686733311,
4696STORE, 140092686733312, 140092686741503,
4697STORE, 140092686741504, 140092686745599,
4698STORE, 140730900537344, 140730900541439,
4699STORE, 140730900525056, 140730900537343,
4700STORE, 47540108423168, 47540108431359,
4701STORE, 47540108431360, 47540108439551,
4702STORE, 47540108439552, 47540110278655,
4703STORE, 47540108578816, 47540110278655,
4704STORE, 47540108439552, 47540108578815,
4705ERASE, 47540108578816, 47540108578816,
4706STORE, 47540108578816, 47540110237695,
4707STORE, 47540110237696, 47540110278655,
4708STORE, 47540109922304, 47540110237695,
4709STORE, 47540108578816, 47540109922303,
4710ERASE, 47540108578816, 47540108578816,
4711STORE, 47540108578816, 47540109922303,
4712STORE, 47540110233600, 47540110237695,
4713STORE, 47540109922304, 47540110233599,
4714ERASE, 47540109922304, 47540109922304,
4715STORE, 47540109922304, 47540110233599,
4716STORE, 47540110262272, 47540110278655,
4717STORE, 47540110237696, 47540110262271,
4718ERASE, 47540110237696, 47540110237696,
4719STORE, 47540110237696, 47540110262271,
4720ERASE, 47540110262272, 47540110262272,
4721STORE, 47540110262272, 47540110278655,
4722ERASE, 47540110237696, 47540110237696,
4723STORE, 47540110237696, 47540110254079,
4724STORE, 47540110254080, 47540110262271,
4725ERASE, 93855478288384, 93855478288384,
4726STORE, 93855478288384, 93855478333439,
4727STORE, 93855478333440, 93855478337535,
4728ERASE, 140092686733312, 140092686733312,
4729STORE, 140092686733312, 140092686737407,
4730STORE, 140092686737408, 140092686741503,
4731ERASE, 47540108423168, 47540108423168,
4732STORE, 93855492222976, 93855492358143,
4733STORE, 93855492222976, 93855492493311,
4734STORE, 140737488347136, 140737488351231,
4735STORE, 140733498146816, 140737488351231,
4736ERASE, 140733498146816, 140733498146816,
4737STORE, 140733498146816, 140733498150911,
4738STORE, 94170739654656, 94170740367359,
4739ERASE, 94170739654656, 94170739654656,
4740STORE, 94170739654656, 94170739703807,
4741STORE, 94170739703808, 94170740367359,
4742ERASE, 94170739703808, 94170739703808,
4743STORE, 94170739703808, 94170740248575,
4744STORE, 94170740248576, 94170740346879,
4745STORE, 94170740346880, 94170740367359,
4746STORE, 140024788877312, 140024789049343,
4747ERASE, 140024788877312, 140024788877312,
4748STORE, 140024788877312, 140024788881407,
4749STORE, 140024788881408, 140024789049343,
4750ERASE, 140024788881408, 140024788881408,
4751STORE, 140024788881408, 140024789004287,
4752STORE, 140024789004288, 140024789037055,
4753STORE, 140024789037056, 140024789045247,
4754STORE, 140024789045248, 140024789049343,
4755STORE, 140733499023360, 140733499027455,
4756STORE, 140733499011072, 140733499023359,
4757STORE, 47608006119424, 47608006127615,
4758STORE, 47608006127616, 47608006135807,
4759STORE, 47608006135808, 47608006242303,
4760STORE, 47608006152192, 47608006242303,
4761STORE, 47608006135808, 47608006152191,
4762ERASE, 47608006152192, 47608006152192,
4763STORE, 47608006152192, 47608006225919,
4764STORE, 47608006225920, 47608006242303,
4765STORE, 47608006205440, 47608006225919,
4766STORE, 47608006152192, 47608006205439,
4767ERASE, 47608006152192, 47608006152192,
4768STORE, 47608006152192, 47608006205439,
4769STORE, 47608006221824, 47608006225919,
4770STORE, 47608006205440, 47608006221823,
4771ERASE, 47608006205440, 47608006205440,
4772STORE, 47608006205440, 47608006221823,
4773STORE, 47608006234112, 47608006242303,
4774STORE, 47608006225920, 47608006234111,
4775ERASE, 47608006225920, 47608006225920,
4776STORE, 47608006225920, 47608006234111,
4777ERASE, 47608006234112, 47608006234112,
4778STORE, 47608006234112, 47608006242303,
4779STORE, 47608006242304, 47608008081407,
4780STORE, 47608006381568, 47608008081407,
4781STORE, 47608006242304, 47608006381567,
4782ERASE, 47608006381568, 47608006381568,
4783STORE, 47608006381568, 47608008040447,
4784STORE, 47608008040448, 47608008081407,
4785STORE, 47608007725056, 47608008040447,
4786STORE, 47608006381568, 47608007725055,
4787ERASE, 47608006381568, 47608006381568,
4788STORE, 47608006381568, 47608007725055,
4789STORE, 47608008036352, 47608008040447,
4790STORE, 47608007725056, 47608008036351,
4791ERASE, 47608007725056, 47608007725056,
4792STORE, 47608007725056, 47608008036351,
4793STORE, 47608008065024, 47608008081407,
4794STORE, 47608008040448, 47608008065023,
4795ERASE, 47608008040448, 47608008040448,
4796STORE, 47608008040448, 47608008065023,
4797ERASE, 47608008065024, 47608008065024,
4798STORE, 47608008065024, 47608008081407,
4799STORE, 47608008065024, 47608008093695,
4800ERASE, 47608008040448, 47608008040448,
4801STORE, 47608008040448, 47608008056831,
4802STORE, 47608008056832, 47608008065023,
4803ERASE, 47608006225920, 47608006225920,
4804STORE, 47608006225920, 47608006230015,
4805STORE, 47608006230016, 47608006234111,
4806ERASE, 94170740346880, 94170740346880,
4807STORE, 94170740346880, 94170740363263,
4808STORE, 94170740363264, 94170740367359,
4809ERASE, 140024789037056, 140024789037056,
4810STORE, 140024789037056, 140024789041151,
4811STORE, 140024789041152, 140024789045247,
4812ERASE, 47608006119424, 47608006119424,
4813STORE, 140737488347136, 140737488351231,
4814STORE, 140730264326144, 140737488351231,
4815ERASE, 140730264326144, 140730264326144,
4816STORE, 140730264326144, 140730264330239,
4817STORE, 94653216407552, 94653217120255,
4818ERASE, 94653216407552, 94653216407552,
4819STORE, 94653216407552, 94653216456703,
4820STORE, 94653216456704, 94653217120255,
4821ERASE, 94653216456704, 94653216456704,
4822STORE, 94653216456704, 94653217001471,
4823STORE, 94653217001472, 94653217099775,
4824STORE, 94653217099776, 94653217120255,
4825STORE, 140103617011712, 140103617183743,
4826ERASE, 140103617011712, 140103617011712,
4827STORE, 140103617011712, 140103617015807,
4828STORE, 140103617015808, 140103617183743,
4829ERASE, 140103617015808, 140103617015808,
4830STORE, 140103617015808, 140103617138687,
4831STORE, 140103617138688, 140103617171455,
4832STORE, 140103617171456, 140103617179647,
4833STORE, 140103617179648, 140103617183743,
4834STORE, 140730265427968, 140730265432063,
4835STORE, 140730265415680, 140730265427967,
4836STORE, 47529177985024, 47529177993215,
4837STORE, 47529177993216, 47529178001407,
4838STORE, 47529178001408, 47529178107903,
4839STORE, 47529178017792, 47529178107903,
4840STORE, 47529178001408, 47529178017791,
4841ERASE, 47529178017792, 47529178017792,
4842STORE, 47529178017792, 47529178091519,
4843STORE, 47529178091520, 47529178107903,
4844STORE, 47529178071040, 47529178091519,
4845STORE, 47529178017792, 47529178071039,
4846ERASE, 47529178017792, 47529178017792,
4847STORE, 47529178017792, 47529178071039,
4848STORE, 47529178087424, 47529178091519,
4849STORE, 47529178071040, 47529178087423,
4850ERASE, 47529178071040, 47529178071040,
4851STORE, 47529178071040, 47529178087423,
4852STORE, 47529178099712, 47529178107903,
4853STORE, 47529178091520, 47529178099711,
4854ERASE, 47529178091520, 47529178091520,
4855STORE, 47529178091520, 47529178099711,
4856ERASE, 47529178099712, 47529178099712,
4857STORE, 47529178099712, 47529178107903,
4858STORE, 47529178107904, 47529179947007,
4859STORE, 47529178247168, 47529179947007,
4860STORE, 47529178107904, 47529178247167,
4861ERASE, 47529178247168, 47529178247168,
4862STORE, 47529178247168, 47529179906047,
4863STORE, 47529179906048, 47529179947007,
4864STORE, 47529179590656, 47529179906047,
4865STORE, 47529178247168, 47529179590655,
4866ERASE, 47529178247168, 47529178247168,
4867STORE, 47529178247168, 47529179590655,
4868STORE, 47529179901952, 47529179906047,
4869STORE, 47529179590656, 47529179901951,
4870ERASE, 47529179590656, 47529179590656,
4871STORE, 47529179590656, 47529179901951,
4872STORE, 47529179930624, 47529179947007,
4873STORE, 47529179906048, 47529179930623,
4874ERASE, 47529179906048, 47529179906048,
4875STORE, 47529179906048, 47529179930623,
4876ERASE, 47529179930624, 47529179930624,
4877STORE, 47529179930624, 47529179947007,
4878STORE, 47529179930624, 47529179959295,
4879ERASE, 47529179906048, 47529179906048,
4880STORE, 47529179906048, 47529179922431,
4881STORE, 47529179922432, 47529179930623,
4882ERASE, 47529178091520, 47529178091520,
4883STORE, 47529178091520, 47529178095615,
4884STORE, 47529178095616, 47529178099711,
4885ERASE, 94653217099776, 94653217099776,
4886STORE, 94653217099776, 94653217116159,
4887STORE, 94653217116160, 94653217120255,
4888ERASE, 140103617171456, 140103617171456,
4889STORE, 140103617171456, 140103617175551,
4890STORE, 140103617175552, 140103617179647,
4891ERASE, 47529177985024, 47529177985024,
4892STORE, 94653241135104, 94653241270271,
4893STORE, 140737488347136, 140737488351231,
4894STORE, 140736284549120, 140737488351231,
4895ERASE, 140736284549120, 140736284549120,
4896STORE, 140736284549120, 140736284553215,
4897STORE, 93963663822848, 93963664506879,
4898ERASE, 93963663822848, 93963663822848,
4899STORE, 93963663822848, 93963663884287,
4900STORE, 93963663884288, 93963664506879,
4901ERASE, 93963663884288, 93963663884288,
4902STORE, 93963663884288, 93963664240639,
4903STORE, 93963664240640, 93963664379903,
4904STORE, 93963664379904, 93963664506879,
4905STORE, 140450188439552, 140450188611583,
4906ERASE, 140450188439552, 140450188439552,
4907STORE, 140450188439552, 140450188443647,
4908STORE, 140450188443648, 140450188611583,
4909ERASE, 140450188443648, 140450188443648,
4910STORE, 140450188443648, 140450188566527,
4911STORE, 140450188566528, 140450188599295,
4912STORE, 140450188599296, 140450188607487,
4913STORE, 140450188607488, 140450188611583,
4914STORE, 140736284577792, 140736284581887,
4915STORE, 140736284565504, 140736284577791,
4916STORE, 47182606557184, 47182606565375,
4917STORE, 47182606565376, 47182606573567,
4918STORE, 47182606573568, 47182608412671,
4919STORE, 47182606712832, 47182608412671,
4920STORE, 47182606573568, 47182606712831,
4921ERASE, 47182606712832, 47182606712832,
4922STORE, 47182606712832, 47182608371711,
4923STORE, 47182608371712, 47182608412671,
4924STORE, 47182608056320, 47182608371711,
4925STORE, 47182606712832, 47182608056319,
4926ERASE, 47182606712832, 47182606712832,
4927STORE, 47182606712832, 47182608056319,
4928STORE, 47182608367616, 47182608371711,
4929STORE, 47182608056320, 47182608367615,
4930ERASE, 47182608056320, 47182608056320,
4931STORE, 47182608056320, 47182608367615,
4932STORE, 47182608396288, 47182608412671,
4933STORE, 47182608371712, 47182608396287,
4934ERASE, 47182608371712, 47182608371712,
4935STORE, 47182608371712, 47182608396287,
4936ERASE, 47182608396288, 47182608396288,
4937STORE, 47182608396288, 47182608412671,
4938STORE, 47182608412672, 47182608523263,
4939STORE, 47182608429056, 47182608523263,
4940STORE, 47182608412672, 47182608429055,
4941ERASE, 47182608429056, 47182608429056,
4942STORE, 47182608429056, 47182608515071,
4943STORE, 47182608515072, 47182608523263,
4944STORE, 47182608490496, 47182608515071,
4945STORE, 47182608429056, 47182608490495,
4946ERASE, 47182608429056, 47182608429056,
4947STORE, 47182608429056, 47182608490495,
4948STORE, 47182608510976, 47182608515071,
4949STORE, 47182608490496, 47182608510975,
4950ERASE, 47182608490496, 47182608490496,
4951STORE, 47182608490496, 47182608510975,
4952ERASE, 47182608515072, 47182608515072,
4953STORE, 47182608515072, 47182608523263,
4954STORE, 47182608523264, 47182608568319,
4955ERASE, 47182608523264, 47182608523264,
4956STORE, 47182608523264, 47182608531455,
4957STORE, 47182608531456, 47182608568319,
4958STORE, 47182608551936, 47182608568319,
4959STORE, 47182608531456, 47182608551935,
4960ERASE, 47182608531456, 47182608531456,
4961STORE, 47182608531456, 47182608551935,
4962STORE, 47182608560128, 47182608568319,
4963STORE, 47182608551936, 47182608560127,
4964ERASE, 47182608551936, 47182608551936,
4965STORE, 47182608551936, 47182608568319,
4966ERASE, 47182608551936, 47182608551936,
4967STORE, 47182608551936, 47182608560127,
4968STORE, 47182608560128, 47182608568319,
4969ERASE, 47182608560128, 47182608560128,
4970STORE, 47182608560128, 47182608568319,
4971STORE, 47182608568320, 47182608916479,
4972STORE, 47182608609280, 47182608916479,
4973STORE, 47182608568320, 47182608609279,
4974ERASE, 47182608609280, 47182608609280,
4975STORE, 47182608609280, 47182608891903,
4976STORE, 47182608891904, 47182608916479,
4977STORE, 47182608822272, 47182608891903,
4978STORE, 47182608609280, 47182608822271,
4979ERASE, 47182608609280, 47182608609280,
4980STORE, 47182608609280, 47182608822271,
4981STORE, 47182608887808, 47182608891903,
4982STORE, 47182608822272, 47182608887807,
4983ERASE, 47182608822272, 47182608822272,
4984STORE, 47182608822272, 47182608887807,
4985ERASE, 47182608891904, 47182608891904,
4986STORE, 47182608891904, 47182608916479,
4987STORE, 47182608916480, 47182611177471,
4988STORE, 47182609068032, 47182611177471,
4989STORE, 47182608916480, 47182609068031,
4990ERASE, 47182609068032, 47182609068032,
4991STORE, 47182609068032, 47182611161087,
4992STORE, 47182611161088, 47182611177471,
4993STORE, 47182611169280, 47182611177471,
4994STORE, 47182611161088, 47182611169279,
4995ERASE, 47182611161088, 47182611161088,
4996STORE, 47182611161088, 47182611169279,
4997ERASE, 47182611169280, 47182611169280,
4998STORE, 47182611169280, 47182611177471,
4999STORE, 47182611177472, 47182611312639,
5000ERASE, 47182611177472, 47182611177472,
5001STORE, 47182611177472, 47182611202047,
5002STORE, 47182611202048, 47182611312639,
5003STORE, 47182611263488, 47182611312639,
5004STORE, 47182611202048, 47182611263487,
5005ERASE, 47182611202048, 47182611202048,
5006STORE, 47182611202048, 47182611263487,
5007STORE, 47182611288064, 47182611312639,
5008STORE, 47182611263488, 47182611288063,
5009ERASE, 47182611263488, 47182611263488,
5010STORE, 47182611263488, 47182611312639,
5011ERASE, 47182611263488, 47182611263488,
5012STORE, 47182611263488, 47182611288063,
5013STORE, 47182611288064, 47182611312639,
5014STORE, 47182611296256, 47182611312639,
5015STORE, 47182611288064, 47182611296255,
5016ERASE, 47182611288064, 47182611288064,
5017STORE, 47182611288064, 47182611296255,
5018ERASE, 47182611296256, 47182611296256,
5019STORE, 47182611296256, 47182611312639,
5020STORE, 47182611296256, 47182611320831,
5021STORE, 47182611320832, 47182611484671,
5022ERASE, 47182611320832, 47182611320832,
5023STORE, 47182611320832, 47182611333119,
5024STORE, 47182611333120, 47182611484671,
5025STORE, 47182611431424, 47182611484671,
5026STORE, 47182611333120, 47182611431423,
5027ERASE, 47182611333120, 47182611333120,
5028STORE, 47182611333120, 47182611431423,
5029STORE, 47182611476480, 47182611484671,
5030STORE, 47182611431424, 47182611476479,
5031ERASE, 47182611431424, 47182611431424,
5032STORE, 47182611431424, 47182611484671,
5033ERASE, 47182611431424, 47182611431424,
5034STORE, 47182611431424, 47182611476479,
5035STORE, 47182611476480, 47182611484671,
5036ERASE, 47182611476480, 47182611476480,
5037STORE, 47182611476480, 47182611484671,
5038STORE, 47182611484672, 47182612082687,
5039STORE, 47182611603456, 47182612082687,
5040STORE, 47182611484672, 47182611603455,
5041ERASE, 47182611603456, 47182611603456,
5042STORE, 47182611603456, 47182612029439,
5043STORE, 47182612029440, 47182612082687,
5044STORE, 47182611918848, 47182612029439,
5045STORE, 47182611603456, 47182611918847,
5046ERASE, 47182611603456, 47182611603456,
5047STORE, 47182611603456, 47182611918847,
5048STORE, 47182612025344, 47182612029439,
5049STORE, 47182611918848, 47182612025343,
5050ERASE, 47182611918848, 47182611918848,
5051STORE, 47182611918848, 47182612025343,

33494 more lines aren’t shown here.

mm/damon/dbgfs.c+7−0
@@ -890,6 +890,7 @@ out: · 889 unmodified lines
890static int dbgfs_rm_context(char *name)890static int dbgfs_rm_context(char *name)
891{891{
892 struct dentry *root, *dir, **new_dirs;892 struct dentry *root, *dir, **new_dirs;
893 struct inode *inode;
893 struct damon_ctx **new_ctxs;894 struct damon_ctx **new_ctxs;
894 int i, j;895 int i, j;
895 int ret = 0;896 int ret = 0;
@@ -905,6 +906,12 @@ static int dbgfs_rm_context(char *name) · 9 unmodified lines
905 if (!dir)906 if (!dir)
906 return -ENOENT;907 return -ENOENT;
907 908
909 inode = d_inode(dir);
910 if (!S_ISDIR(inode->i_mode)) {
911 ret = -EINVAL;
912 goto out_dput;
913 }
914
908 new_dirs = kmalloc_array(dbgfs_nr_ctxs - 1, sizeof(*dbgfs_dirs),915 new_dirs = kmalloc_array(dbgfs_nr_ctxs - 1, sizeof(*dbgfs_dirs),
909 GFP_KERNEL);916 GFP_KERNEL);
910 if (!new_dirs) {917 if (!new_dirs) {
mm/huge_memory.c+6−3
@@ -2206,9 +2206,12 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd, · 2205 unmodified lines
2206 entry = pte_wrprotect(entry);2206 entry = pte_wrprotect(entry);
2207 if (!young)2207 if (!young)
2208 entry = pte_mkold(entry);2208 entry = pte_mkold(entry);
2209 /* NOTE: this may set soft-dirty too on some archs */2209 /*
2210 if (dirty)2210 * NOTE: we don't do pte_mkdirty when dirty==true
2211 entry = pte_mkdirty(entry);2211 * because it breaks sparc64 which can sigsegv
2212 * random process. Need to revisit when we figure
2213 * out what is special with sparc64.
2214 */
2212 if (soft_dirty)2215 if (soft_dirty)
2213 entry = pte_mksoft_dirty(entry);2216 entry = pte_mksoft_dirty(entry);
2214 if (uffd_wp)2217 if (uffd_wp)
mm/hugetlb.c+4−0
@@ -6111,6 +6111,10 @@ int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm, · 6110 unmodified lines
6111 6111
6112 ptl = huge_pte_lock(h, dst_mm, dst_pte);6112 ptl = huge_pte_lock(h, dst_mm, dst_pte);
6113 6113
6114 ret = -EIO;
6115 if (PageHWPoison(page))
6116 goto out_release_unlock;
6117
6114 /*6118 /*
6115 * We allow to overwrite a pte marker: consider when both MISSING|WP6119 * We allow to overwrite a pte marker: consider when both MISSING|WP
6116 * registered, we firstly wr-protect a none pte which has no page cache6120 * registered, we firstly wr-protect a none pte which has no page cache
mm/hugetlb_vmemmap.c+1−0
@@ -11,6 +11,7 @@ · 10 unmodified lines
11#define pr_fmt(fmt) "HugeTLB: " fmt11#define pr_fmt(fmt) "HugeTLB: " fmt
12 12
13#include <linux/pgtable.h>13#include <linux/pgtable.h>
14#include <linux/moduleparam.h>
14#include <linux/bootmem_info.h>15#include <linux/bootmem_info.h>
15#include <asm/pgalloc.h>16#include <asm/pgalloc.h>
16#include <asm/tlbflush.h>17#include <asm/tlbflush.h>
mm/kmsan/kmsan.h+2−0
@@ -124,6 +124,8 @@ static __always_inline bool kmsan_in_runtime(void) · 123 unmodified lines
124{124{
125 if ((hardirq_count() >> HARDIRQ_SHIFT) > 1)125 if ((hardirq_count() >> HARDIRQ_SHIFT) > 1)
126 return true;126 return true;
127 if (in_nmi())
128 return true;
127 return kmsan_get_context()->kmsan_in_runtime;129 return kmsan_get_context()->kmsan_in_runtime;
128}130}
129 131
mm/memory-failure.c+4−1
@@ -1080,6 +1080,7 @@ static int me_huge_page(struct page_state *ps, struct page *p) · 1079 unmodified lines
1080 int res;1080 int res;
1081 struct page *hpage = compound_head(p);1081 struct page *hpage = compound_head(p);
1082 struct address_space *mapping;1082 struct address_space *mapping;
1083 bool extra_pins = false;
1083 1084
1084 if (!PageHuge(hpage))1085 if (!PageHuge(hpage))
1085 return MF_DELAYED;1086 return MF_DELAYED;
@@ -1087,6 +1088,8 @@ static int me_huge_page(struct page_state *ps, struct page *p) · 1 unmodified line
1087 mapping = page_mapping(hpage);1088 mapping = page_mapping(hpage);
1088 if (mapping) {1089 if (mapping) {
1089 res = truncate_error_page(hpage, page_to_pfn(p), mapping);1090 res = truncate_error_page(hpage, page_to_pfn(p), mapping);
1091 /* The page is kept in page cache. */
1092 extra_pins = true;
1090 unlock_page(hpage);1093 unlock_page(hpage);
1091 } else {1094 } else {
1092 unlock_page(hpage);1095 unlock_page(hpage);
@@ -1104,7 +1107,7 @@ static int me_huge_page(struct page_state *ps, struct page *p) · 11 unmodified lines
1104 }1107 }
1105 }1108 }
1106 1109
1107 if (has_extra_refcount(ps, p, false))1110 if (has_extra_refcount(ps, p, extra_pins))
1108 res = MF_FAILED;1111 res = MF_FAILED;
1109 1112
1110 return res;1113 return res;
mm/memremap.c+1−0
@@ -335,6 +335,7 @@ void *memremap_pages(struct dev_pagemap *pgmap, int nid) · 334 unmodified lines
335 WARN(1, "File system DAX not supported\n");335 WARN(1, "File system DAX not supported\n");
336 return ERR_PTR(-EINVAL);336 return ERR_PTR(-EINVAL);
337 }337 }
338 params.pgprot = pgprot_decrypted(params.pgprot);
338 break;339 break;
339 case MEMORY_DEVICE_GENERIC:340 case MEMORY_DEVICE_GENERIC:
340 break;341 break;
mm/mmap.c+5−1
@@ -2674,6 +2674,8 @@ cannot_expand: · 2673 unmodified lines
2674 error = -EINVAL;2674 error = -EINVAL;
2675 if (file)2675 if (file)
2676 goto close_and_free_vma;2676 goto close_and_free_vma;
2677 else if (vma->vm_file)
2678 goto unmap_and_free_vma;
2677 else2679 else
2678 goto free_vma;2680 goto free_vma;
2679 }2681 }
@@ -2682,6 +2684,8 @@ cannot_expand: · 2 unmodified lines
2682 error = -ENOMEM;2684 error = -ENOMEM;
2683 if (file)2685 if (file)
2684 goto close_and_free_vma;2686 goto close_and_free_vma;
2687 else if (vma->vm_file)
2688 goto unmap_and_free_vma;
2685 else2689 else
2686 goto free_vma;2690 goto free_vma;
2687 }2691 }
@@ -2751,7 +2755,7 @@ unmap_and_free_vma: · 63 unmodified lines
2751 2755
2752 /* Undo any partial mapping done by a device driver. */2756 /* Undo any partial mapping done by a device driver. */
2753 unmap_region(mm, mas.tree, vma, prev, next, vma->vm_start, vma->vm_end);2757 unmap_region(mm, mas.tree, vma, prev, next, vma->vm_start, vma->vm_end);
2754 if (vm_flags & VM_SHARED)2758 if (file && (vm_flags & VM_SHARED))
2755 mapping_unmap_writable(file->f_mapping);2759 mapping_unmap_writable(file->f_mapping);
2756free_vma:2760free_vma:
2757 vm_area_free(vma);2761 vm_area_free(vma);
mm/slab_common.c+4−20
@@ -941,7 +941,7 @@ void *__do_kmalloc_node(size_t size, gfp_t flags, int node, unsigned long caller · 940 unmodified lines
941 941
942 if (unlikely(size > KMALLOC_MAX_CACHE_SIZE)) {942 if (unlikely(size > KMALLOC_MAX_CACHE_SIZE)) {
943 ret = __kmalloc_large_node(size, flags, node);943 ret = __kmalloc_large_node(size, flags, node);
944 trace_kmalloc(_RET_IP_, ret, size,944 trace_kmalloc(caller, ret, size,
945 PAGE_SIZE << get_order(size), flags, node);945 PAGE_SIZE << get_order(size), flags, node);
946 return ret;946 return ret;
947 }947 }
@@ -953,7 +953,7 @@ void *__do_kmalloc_node(size_t size, gfp_t flags, int node, unsigned long caller · 5 unmodified lines
953 953
954 ret = __kmem_cache_alloc_node(s, flags, node, size, caller);954 ret = __kmem_cache_alloc_node(s, flags, node, size, caller);
955 ret = kasan_kmalloc(s, ret, size, flags);955 ret = kasan_kmalloc(s, ret, size, flags);
956 trace_kmalloc(_RET_IP_, ret, size, s->size, flags, node);956 trace_kmalloc(caller, ret, size, s->size, flags, node);
957 return ret;957 return ret;
958}958}
959 959
@@ -1010,7 +1010,7 @@ EXPORT_SYMBOL(kfree); · 50 unmodified lines
1010 1010
1011/**1011/**
1012 * __ksize -- Report full size of underlying allocation1012 * __ksize -- Report full size of underlying allocation
1013 * @objp: pointer to the object1013 * @object: pointer to the object
1014 *1014 *
1015 * This should only be used internally to query the true size of allocations.1015 * This should only be used internally to query the true size of allocations.
1016 * It is not meant to be a way to discover the usable size of an allocation1016 * It is not meant to be a way to discover the usable size of an allocation
@@ -1018,7 +1018,7 @@ EXPORT_SYMBOL(kfree); · 1 unmodified line
1018 * the originally requested allocation size may trigger KASAN, UBSAN_BOUNDS,1018 * the originally requested allocation size may trigger KASAN, UBSAN_BOUNDS,
1019 * and/or FORTIFY_SOURCE.1019 * and/or FORTIFY_SOURCE.
1020 *1020 *
1021 * Return: size of the actual memory used by @objp in bytes1021 * Return: size of the actual memory used by @object in bytes
1022 */1022 */
1023size_t __ksize(const void *object)1023size_t __ksize(const void *object)
1024{1024{
@@ -1040,7 +1040,6 @@ size_t __ksize(const void *object) · 15 unmodified lines
1040 return slab_ksize(folio_slab(folio)->slab_cache);1040 return slab_ksize(folio_slab(folio)->slab_cache);
1041}1041}
1042 1042
1043#ifdef CONFIG_TRACING
1044void *kmalloc_trace(struct kmem_cache *s, gfp_t gfpflags, size_t size)1043void *kmalloc_trace(struct kmem_cache *s, gfp_t gfpflags, size_t size)
1045{1044{
1046 void *ret = __kmem_cache_alloc_node(s, gfpflags, NUMA_NO_NODE,1045 void *ret = __kmem_cache_alloc_node(s, gfpflags, NUMA_NO_NODE,
@@ -1064,7 +1063,6 @@ void *kmalloc_node_trace(struct kmem_cache *s, gfp_t gfpflags, · 17 unmodified lines
1064 return ret;1063 return ret;
1065}1064}
1066EXPORT_SYMBOL(kmalloc_node_trace);1065EXPORT_SYMBOL(kmalloc_node_trace);
1067#endif /* !CONFIG_TRACING */
1068#endif /* !CONFIG_SLOB */1066#endif /* !CONFIG_SLOB */
1069 1067
1070gfp_t kmalloc_fix_flags(gfp_t flags)1068gfp_t kmalloc_fix_flags(gfp_t flags)
@@ -1411,20 +1409,6 @@ void kfree_sensitive(const void *p) · 340 unmodified lines
1411}1409}
1412EXPORT_SYMBOL(kfree_sensitive);1410EXPORT_SYMBOL(kfree_sensitive);
1413 1411
1414/**
1415 * ksize - get the actual amount of memory allocated for a given object
1416 * @objp: Pointer to the object
1417 *
1418 * kmalloc may internally round up allocations and return more memory
1419 * than requested. ksize() can be used to determine the actual amount of
1420 * memory allocated. The caller may use this additional memory, even though
1421 * a smaller amount of memory was initially specified with the kmalloc call.
1422 * The caller must guarantee that objp points to a valid object previously
1423 * allocated with either kmalloc() or kmem_cache_alloc(). The object
1424 * must not be freed during the duration of the call.
1425 *
1426 * Return: size of the actual memory used by @objp in bytes
1427 */
1428size_t ksize(const void *objp)1412size_t ksize(const void *objp)
1429{1413{
1430 size_t size;1414 size_t size;
mm/userfaultfd.c+1−1
@@ -64,7 +64,7 @@ int mfill_atomic_install_pte(struct mm_struct *dst_mm, pmd_t *dst_pmd, · 63 unmodified lines
64 pte_t _dst_pte, *dst_pte;64 pte_t _dst_pte, *dst_pte;
65 bool writable = dst_vma->vm_flags & VM_WRITE;65 bool writable = dst_vma->vm_flags & VM_WRITE;
66 bool vm_shared = dst_vma->vm_flags & VM_SHARED;66 bool vm_shared = dst_vma->vm_flags & VM_SHARED;
67 bool page_in_cache = page->mapping;67 bool page_in_cache = page_mapping(page);
68 spinlock_t *ptl;68 spinlock_t *ptl;
69 struct inode *inode;69 struct inode *inode;
70 pgoff_t offset, max_off;70 pgoff_t offset, max_off;
net/can/af_can.c+2−1
@@ -450,7 +450,7 @@ int can_rx_register(struct net *net, struct net_device *dev, canid_t can_id, · 449 unmodified lines
450 450
451 /* insert new receiver (dev,canid,mask) -> (func,data) */451 /* insert new receiver (dev,canid,mask) -> (func,data) */
452 452
453 if (dev && dev->type != ARPHRD_CAN)453 if (dev && (dev->type != ARPHRD_CAN || !can_get_ml_priv(dev)))
454 return -ENODEV;454 return -ENODEV;
455 455
456 if (dev && !net_eq(net, dev_net(dev)))456 if (dev && !net_eq(net, dev_net(dev)))
@@ -902,6 +902,7 @@ out_pernet: · 445 unmodified lines
902static __exit void can_exit(void)902static __exit void can_exit(void)
903{903{
904 /* protocol unregister */904 /* protocol unregister */
905 dev_remove_pack(&canxl_packet);
905 dev_remove_pack(&canfd_packet);906 dev_remove_pack(&canfd_packet);
906 dev_remove_pack(&can_packet);907 dev_remove_pack(&can_packet);
907 sock_unregister(PF_CAN);908 sock_unregister(PF_CAN);
net/can/isotp.c+38−33
@@ -111,6 +111,9 @@ MODULE_ALIAS("can-proto-6"); · 110 unmodified lines
111#define ISOTP_FC_WT 1 /* wait */111#define ISOTP_FC_WT 1 /* wait */
112#define ISOTP_FC_OVFLW 2 /* overflow */112#define ISOTP_FC_OVFLW 2 /* overflow */
113 113
114#define ISOTP_FC_TIMEOUT 1 /* 1 sec */
115#define ISOTP_ECHO_TIMEOUT 2 /* 2 secs */
116
114enum {117enum {
115 ISOTP_IDLE = 0,118 ISOTP_IDLE = 0,
116 ISOTP_WAIT_FIRST_FC,119 ISOTP_WAIT_FIRST_FC,
@@ -258,7 +261,8 @@ static int isotp_send_fc(struct sock *sk, int ae, u8 flowstatus) · 141 unmodified lines
258 so->lastrxcf_tstamp = ktime_set(0, 0);261 so->lastrxcf_tstamp = ktime_set(0, 0);
259 262
260 /* start rx timeout watchdog */263 /* start rx timeout watchdog */
261 hrtimer_start(&so->rxtimer, ktime_set(1, 0), HRTIMER_MODE_REL_SOFT);264 hrtimer_start(&so->rxtimer, ktime_set(ISOTP_FC_TIMEOUT, 0),
265 HRTIMER_MODE_REL_SOFT);
262 return 0;266 return 0;
263}267}
264 268
@@ -344,6 +348,8 @@ static int check_pad(struct isotp_sock *so, struct canfd_frame *cf, · 79 unmodified lines
344 return 0;348 return 0;
345}349}
346 350
351static void isotp_send_cframe(struct isotp_sock *so);
352
347static int isotp_rcv_fc(struct isotp_sock *so, struct canfd_frame *cf, int ae)353static int isotp_rcv_fc(struct isotp_sock *so, struct canfd_frame *cf, int ae)
348{354{
349 struct sock *sk = &so->sk;355 struct sock *sk = &so->sk;
@@ -398,14 +404,15 @@ static int isotp_rcv_fc(struct isotp_sock *so, struct canfd_frame *cf, int ae) · 48 unmodified lines
398 case ISOTP_FC_CTS:404 case ISOTP_FC_CTS:
399 so->tx.bs = 0;405 so->tx.bs = 0;
400 so->tx.state = ISOTP_SENDING;406 so->tx.state = ISOTP_SENDING;
401 /* start cyclic timer for sending CF frame */407 /* send CF frame and enable echo timeout handling */
402 hrtimer_start(&so->txtimer, so->tx_gap,408 hrtimer_start(&so->txtimer, ktime_set(ISOTP_ECHO_TIMEOUT, 0),
403 HRTIMER_MODE_REL_SOFT);409 HRTIMER_MODE_REL_SOFT);
410 isotp_send_cframe(so);
404 break;411 break;
405 412
406 case ISOTP_FC_WT:413 case ISOTP_FC_WT:
407 /* start timer to wait for next FC frame */414 /* start timer to wait for next FC frame */
408 hrtimer_start(&so->txtimer, ktime_set(1, 0),415 hrtimer_start(&so->txtimer, ktime_set(ISOTP_FC_TIMEOUT, 0),
409 HRTIMER_MODE_REL_SOFT);416 HRTIMER_MODE_REL_SOFT);
410 break;417 break;
411 418
@@ -600,7 +607,7 @@ static int isotp_rcv_cf(struct sock *sk, struct canfd_frame *cf, int ae, · 188 unmodified lines
600 /* perform blocksize handling, if enabled */607 /* perform blocksize handling, if enabled */
601 if (!so->rxfc.bs || ++so->rx.bs < so->rxfc.bs) {608 if (!so->rxfc.bs || ++so->rx.bs < so->rxfc.bs) {
602 /* start rx timeout watchdog */609 /* start rx timeout watchdog */
603 hrtimer_start(&so->rxtimer, ktime_set(1, 0),610 hrtimer_start(&so->rxtimer, ktime_set(ISOTP_FC_TIMEOUT, 0),
604 HRTIMER_MODE_REL_SOFT);611 HRTIMER_MODE_REL_SOFT);
605 return 0;612 return 0;
606 }613 }
@@ -829,7 +836,7 @@ static void isotp_rcv_echo(struct sk_buff *skb, void *data) · 222 unmodified lines
829 struct isotp_sock *so = isotp_sk(sk);836 struct isotp_sock *so = isotp_sk(sk);
830 struct canfd_frame *cf = (struct canfd_frame *)skb->data;837 struct canfd_frame *cf = (struct canfd_frame *)skb->data;
831 838
832 /* only handle my own local echo skb's */839 /* only handle my own local echo CF/SF skb's (no FF!) */
833 if (skb->sk != sk || so->cfecho != *(u32 *)cf->data)840 if (skb->sk != sk || so->cfecho != *(u32 *)cf->data)
834 return;841 return;
835 842
@@ -849,13 +856,16 @@ static void isotp_rcv_echo(struct sk_buff *skb, void *data) · 13 unmodified lines
849 if (so->txfc.bs && so->tx.bs >= so->txfc.bs) {856 if (so->txfc.bs && so->tx.bs >= so->txfc.bs) {
850 /* stop and wait for FC with timeout */857 /* stop and wait for FC with timeout */
851 so->tx.state = ISOTP_WAIT_FC;858 so->tx.state = ISOTP_WAIT_FC;
852 hrtimer_start(&so->txtimer, ktime_set(1, 0),859 hrtimer_start(&so->txtimer, ktime_set(ISOTP_FC_TIMEOUT, 0),
853 HRTIMER_MODE_REL_SOFT);860 HRTIMER_MODE_REL_SOFT);
854 return;861 return;
855 }862 }
856 863
857 /* no gap between data frames needed => use burst mode */864 /* no gap between data frames needed => use burst mode */
858 if (!so->tx_gap) {865 if (!so->tx_gap) {
866 /* enable echo timeout handling */
867 hrtimer_start(&so->txtimer, ktime_set(ISOTP_ECHO_TIMEOUT, 0),
868 HRTIMER_MODE_REL_SOFT);
859 isotp_send_cframe(so);869 isotp_send_cframe(so);
860 return;870 return;
861 }871 }
@@ -879,7 +889,7 @@ static enum hrtimer_restart isotp_tx_timer_handler(struct hrtimer *hrtimer) · 17 unmodified lines
879 /* start timeout for unlikely lost echo skb */889 /* start timeout for unlikely lost echo skb */
880 hrtimer_set_expires(&so->txtimer,890 hrtimer_set_expires(&so->txtimer,
881 ktime_add(ktime_get(),891 ktime_add(ktime_get(),
882 ktime_set(2, 0)));892 ktime_set(ISOTP_ECHO_TIMEOUT, 0)));
883 restart = HRTIMER_RESTART;893 restart = HRTIMER_RESTART;
884 894
885 /* push out the next consecutive frame */895 /* push out the next consecutive frame */
@@ -907,7 +917,8 @@ static enum hrtimer_restart isotp_tx_timer_handler(struct hrtimer *hrtimer) · 21 unmodified lines
907 break;917 break;
908 918
909 default:919 default:
910 WARN_ON_ONCE(1);920 WARN_ONCE(1, "can-isotp: tx timer state %08X cfecho %08X\n",
921 so->tx.state, so->cfecho);
911 }922 }
912 923
913 return restart;924 return restart;
@@ -923,7 +934,7 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 9 unmodified lines
923 struct canfd_frame *cf;934 struct canfd_frame *cf;
924 int ae = (so->opt.flags & CAN_ISOTP_EXTEND_ADDR) ? 1 : 0;935 int ae = (so->opt.flags & CAN_ISOTP_EXTEND_ADDR) ? 1 : 0;
925 int wait_tx_done = (so->opt.flags & CAN_ISOTP_WAIT_TX_DONE) ? 1 : 0;936 int wait_tx_done = (so->opt.flags & CAN_ISOTP_WAIT_TX_DONE) ? 1 : 0;
926 s64 hrtimer_sec = 0;937 s64 hrtimer_sec = ISOTP_ECHO_TIMEOUT;
927 int off;938 int off;
928 int err;939 int err;
929 940
@@ -942,6 +953,8 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 12 unmodified lines
942 err = wait_event_interruptible(so->wait, so->tx.state == ISOTP_IDLE);953 err = wait_event_interruptible(so->wait, so->tx.state == ISOTP_IDLE);
943 if (err)954 if (err)
944 goto err_out;955 goto err_out;
956
957 so->tx.state = ISOTP_SENDING;
945 }958 }
946 959
947 if (!size || size > MAX_MSG_LENGTH) {960 if (!size || size > MAX_MSG_LENGTH) {
@@ -986,6 +999,10 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 38 unmodified lines
986 cf = (struct canfd_frame *)skb->data;999 cf = (struct canfd_frame *)skb->data;
987 skb_put_zero(skb, so->ll.mtu);1000 skb_put_zero(skb, so->ll.mtu);
988 1001
1002 /* cfecho should have been zero'ed by init / former isotp_rcv_echo() */
1003 if (so->cfecho)
1004 pr_notice_once("can-isotp: uninit cfecho %08X\n", so->cfecho);
1005
989 /* check for single frame transmission depending on TX_DL */1006 /* check for single frame transmission depending on TX_DL */
990 if (size <= so->tx.ll_dl - SF_PCI_SZ4 - ae - off) {1007 if (size <= so->tx.ll_dl - SF_PCI_SZ4 - ae - off) {
991 /* The message size generally fits into a SingleFrame - good.1008 /* The message size generally fits into a SingleFrame - good.
@@ -1011,11 +1028,8 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 19 unmodified lines
1011 else1028 else
1012 cf->data[ae] |= size;1029 cf->data[ae] |= size;
1013 1030
1014 so->tx.state = ISOTP_IDLE;1031 /* set CF echo tag for isotp_rcv_echo() (SF-mode) */
1015 wake_up_interruptible(&so->wait);1032 so->cfecho = *(u32 *)cf->data;
1016
1017 /* don't enable wait queue for a single frame transmission */
1018 wait_tx_done = 0;
1019 } else {1033 } else {
1020 /* send first frame */1034 /* send first frame */
1021 1035
@@ -1031,31 +1045,23 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 9 unmodified lines
1031 /* disable wait for FCs due to activated block size */1045 /* disable wait for FCs due to activated block size */
1032 so->txfc.bs = 0;1046 so->txfc.bs = 0;
1033 1047
1034 /* cfecho should have been zero'ed by init */1048 /* set CF echo tag for isotp_rcv_echo() (CF-mode) */
1035 if (so->cfecho)
1036 pr_notice_once("can-isotp: no fc cfecho %08X\n",
1037 so->cfecho);
1038
1039 /* set consecutive frame echo tag */
1040 so->cfecho = *(u32 *)cf->data;1049 so->cfecho = *(u32 *)cf->data;
1041
1042 /* switch directly to ISOTP_SENDING state */
1043 so->tx.state = ISOTP_SENDING;
1044
1045 /* start timeout for unlikely lost echo skb */
1046 hrtimer_sec = 2;
1047 } else {1050 } else {
1048 /* standard flow control check */1051 /* standard flow control check */
1049 so->tx.state = ISOTP_WAIT_FIRST_FC;1052 so->tx.state = ISOTP_WAIT_FIRST_FC;
1050 1053
1051 /* start timeout for FC */1054 /* start timeout for FC */
1052 hrtimer_sec = 1;1055 hrtimer_sec = ISOTP_FC_TIMEOUT;
1053 }
1054 1056
1055 hrtimer_start(&so->txtimer, ktime_set(hrtimer_sec, 0),1057 /* no CF echo tag for isotp_rcv_echo() (FF-mode) */
1056 HRTIMER_MODE_REL_SOFT);1058 so->cfecho = 0;
1059 }
1057 }1060 }
1058 1061
1062 hrtimer_start(&so->txtimer, ktime_set(hrtimer_sec, 0),
1063 HRTIMER_MODE_REL_SOFT);
1064
1059 /* send the first or only CAN frame */1065 /* send the first or only CAN frame */
1060 cf->flags = so->ll.tx_flags;1066 cf->flags = so->ll.tx_flags;
1061 1067
@@ -1068,8 +1074,7 @@ static int isotp_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) · 6 unmodified lines
1068 __func__, ERR_PTR(err));1074 __func__, ERR_PTR(err));
1069 1075
1070 /* no transmission -> no timeout monitoring */1076 /* no transmission -> no timeout monitoring */
1071 if (hrtimer_sec)1077 hrtimer_cancel(&so->txtimer);
1072 hrtimer_cancel(&so->txtimer);
1073 1078
1074 /* reset consecutive frame echo tag */1079 /* reset consecutive frame echo tag */
1075 so->cfecho = 0;1080 so->cfecho = 0;
net/can/j1939/main.c+3−0
@@ -336,6 +336,9 @@ int j1939_send_one(struct j1939_priv *priv, struct sk_buff *skb) · 335 unmodified lines
336 /* re-claim the CAN_HDR from the SKB */336 /* re-claim the CAN_HDR from the SKB */
337 cf = skb_push(skb, J1939_CAN_HDR);337 cf = skb_push(skb, J1939_CAN_HDR);
338 338
339 /* initialize header structure */
340 memset(cf, 0, J1939_CAN_HDR);
341
339 /* make it a full can frame again */342 /* make it a full can frame again */
340 skb_put(skb, J1939_CAN_FTR + (8 - dlc));343 skb_put(skb, J1939_CAN_FTR + (8 - dlc));
341 344
net/core/skbuff.c+19−17
@@ -4134,23 +4134,25 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb, · 4133 unmodified lines
4134 int i = 0;4134 int i = 0;
4135 int pos;4135 int pos;
4136 4136
4137 if (list_skb && !list_skb->head_frag && skb_headlen(list_skb) &&4137 if ((skb_shinfo(head_skb)->gso_type & SKB_GSO_DODGY) &&
4138 (skb_shinfo(head_skb)->gso_type & SKB_GSO_DODGY)) {4138 mss != GSO_BY_FRAGS && mss != skb_headlen(head_skb)) {
4139 /* gso_size is untrusted, and we have a frag_list with a linear4139 struct sk_buff *check_skb;
4140 * non head_frag head.4140
4141 *4141 for (check_skb = list_skb; check_skb; check_skb = check_skb->next) {
4142 * (we assume checking the first list_skb member suffices;4142 if (skb_headlen(check_skb) && !check_skb->head_frag) {
4143 * i.e if either of the list_skb members have non head_frag4143 /* gso_size is untrusted, and we have a frag_list with
4144 * head, then the first one has too).4144 * a linear non head_frag item.
4145 *4145 *
4146 * If head_skb's headlen does not fit requested gso_size, it4146 * If head_skb's headlen does not fit requested gso_size,
4147 * means that the frag_list members do NOT terminate on exact4147 * it means that the frag_list members do NOT terminate
4148 * gso_size boundaries. Hence we cannot perform skb_frag_t page4148 * on exact gso_size boundaries. Hence we cannot perform
4149 * sharing. Therefore we must fallback to copying the frag_list4149 * skb_frag_t page sharing. Therefore we must fallback to
4150 * skbs; we do so by disabling SG.4150 * copying the frag_list skbs; we do so by disabling SG.
4151 */4151 */
4152 if (mss != GSO_BY_FRAGS && mss != skb_headlen(head_skb))4152 features &= ~NETIF_F_SG;
4153 features &= ~NETIF_F_SG;4153 break;
4154 }
4155 }
4154 }4156 }
4155 4157
4156 __skb_push(head_skb, doffset);4158 __skb_push(head_skb, doffset);
net/core/skmsg.c+2−5
@@ -803,16 +803,13 @@ static void sk_psock_link_destroy(struct sk_psock *psock) · 802 unmodified lines
803 }803 }
804}804}
805 805
806void sk_psock_stop(struct sk_psock *psock, bool wait)806void sk_psock_stop(struct sk_psock *psock)
807{807{
808 spin_lock_bh(&psock->ingress_lock);808 spin_lock_bh(&psock->ingress_lock);
809 sk_psock_clear_state(psock, SK_PSOCK_TX_ENABLED);809 sk_psock_clear_state(psock, SK_PSOCK_TX_ENABLED);
810 sk_psock_cork_free(psock);810 sk_psock_cork_free(psock);
811 __sk_psock_zap_ingress(psock);811 __sk_psock_zap_ingress(psock);
812 spin_unlock_bh(&psock->ingress_lock);812 spin_unlock_bh(&psock->ingress_lock);
813
814 if (wait)
815 cancel_work_sync(&psock->work);
816}813}
817 814
818static void sk_psock_done_strp(struct sk_psock *psock);815static void sk_psock_done_strp(struct sk_psock *psock);
@@ -850,7 +847,7 @@ void sk_psock_drop(struct sock *sk, struct sk_psock *psock) · 31 unmodified lines
850 sk_psock_stop_verdict(sk, psock);847 sk_psock_stop_verdict(sk, psock);
851 write_unlock_bh(&sk->sk_callback_lock);848 write_unlock_bh(&sk->sk_callback_lock);
852 849
853 sk_psock_stop(psock, false);850 sk_psock_stop(psock);
854 851
855 INIT_RCU_WORK(&psock->rwork, sk_psock_destroy);852 INIT_RCU_WORK(&psock->rwork, sk_psock_destroy);
856 queue_rcu_work(system_wq, &psock->rwork);853 queue_rcu_work(system_wq, &psock->rwork);
net/core/sock_map.c+4−3
@@ -1596,7 +1596,7 @@ void sock_map_destroy(struct sock *sk) · 1595 unmodified lines
1596 saved_destroy = psock->saved_destroy;1596 saved_destroy = psock->saved_destroy;
1597 sock_map_remove_links(sk, psock);1597 sock_map_remove_links(sk, psock);
1598 rcu_read_unlock();1598 rcu_read_unlock();
1599 sk_psock_stop(psock, false);1599 sk_psock_stop(psock);
1600 sk_psock_put(sk, psock);1600 sk_psock_put(sk, psock);
1601 saved_destroy(sk);1601 saved_destroy(sk);
1602}1602}
@@ -1619,9 +1619,10 @@ void sock_map_close(struct sock *sk, long timeout) · 16 unmodified lines
1619 saved_close = psock->saved_close;1619 saved_close = psock->saved_close;
1620 sock_map_remove_links(sk, psock);1620 sock_map_remove_links(sk, psock);
1621 rcu_read_unlock();1621 rcu_read_unlock();
1622 sk_psock_stop(psock, true);1622 sk_psock_stop(psock);
1623 sk_psock_put(sk, psock);
1624 release_sock(sk);1623 release_sock(sk);
1624 cancel_work_sync(&psock->work);
1625 sk_psock_put(sk, psock);
1625 saved_close(sk, timeout);1626 saved_close(sk, timeout);
1626}1627}
1627EXPORT_SYMBOL_GPL(sock_map_close);1628EXPORT_SYMBOL_GPL(sock_map_close);
net/ipv4/tcp.c+1−1
@@ -3647,7 +3647,7 @@ int do_tcp_setsockopt(struct sock *sk, int level, int optname, · 3646 unmodified lines
3647 case TCP_REPAIR_OPTIONS:3647 case TCP_REPAIR_OPTIONS:
3648 if (!tp->repair)3648 if (!tp->repair)
3649 err = -EINVAL;3649 err = -EINVAL;
3650 else if (sk->sk_state == TCP_ESTABLISHED)3650 else if (sk->sk_state == TCP_ESTABLISHED && !tp->bytes_sent)
3651 err = tcp_repair_options_est(sk, optval, optlen);3651 err = tcp_repair_options_est(sk, optval, optlen);
3652 else3652 else
3653 err = -EPERM;3653 err = -EPERM;
net/ipv4/tcp_bpf.c+5−3
@@ -278,7 +278,7 @@ static int tcp_bpf_send_verdict(struct sock *sk, struct sk_psock *psock, · 277 unmodified lines
278{278{
279 bool cork = false, enospc = sk_msg_full(msg);279 bool cork = false, enospc = sk_msg_full(msg);
280 struct sock *sk_redir;280 struct sock *sk_redir;
281 u32 tosend, delta = 0;281 u32 tosend, origsize, sent, delta = 0;
282 u32 eval = __SK_NONE;282 u32 eval = __SK_NONE;
283 int ret;283 int ret;
284 284
@@ -333,10 +333,12 @@ more_data: · 48 unmodified lines
333 cork = true;333 cork = true;
334 psock->cork = NULL;334 psock->cork = NULL;
335 }335 }
336 sk_msg_return(sk, msg, msg->sg.size);336 sk_msg_return(sk, msg, tosend);
337 release_sock(sk);337 release_sock(sk);
338 338
339 origsize = msg->sg.size;
339 ret = tcp_bpf_sendmsg_redir(sk_redir, msg, tosend, flags);340 ret = tcp_bpf_sendmsg_redir(sk_redir, msg, tosend, flags);
341 sent = origsize - msg->sg.size;
340 342
341 if (eval == __SK_REDIRECT)343 if (eval == __SK_REDIRECT)
342 sock_put(sk_redir);344 sock_put(sk_redir);
@@ -375,7 +377,7 @@ more_data: · 32 unmodified lines
375 msg->sg.data[msg->sg.start].page_link &&377 msg->sg.data[msg->sg.start].page_link &&
376 msg->sg.data[msg->sg.start].length) {378 msg->sg.data[msg->sg.start].length) {
377 if (eval == __SK_REDIRECT)379 if (eval == __SK_REDIRECT)
378 sk_mem_charge(sk, msg->sg.size);380 sk_mem_charge(sk, tosend - sent);
379 goto more_data;381 goto more_data;
380 }382 }
381 }383 }
net/ipv6/addrlabel.c+1−0
@@ -437,6 +437,7 @@ static void ip6addrlbl_putmsg(struct nlmsghdr *nlh, · 436 unmodified lines
437{437{
438 struct ifaddrlblmsg *ifal = nlmsg_data(nlh);438 struct ifaddrlblmsg *ifal = nlmsg_data(nlh);
439 ifal->ifal_family = AF_INET6;439 ifal->ifal_family = AF_INET6;
440 ifal->__ifal_reserved = 0;
440 ifal->ifal_prefixlen = prefixlen;441 ifal->ifal_prefixlen = prefixlen;
441 ifal->ifal_flags = 0;442 ifal->ifal_flags = 0;
442 ifal->ifal_index = ifindex;443 ifal->ifal_index = ifindex;
net/mac80211/main.c+6−2
@@ -1439,8 +1439,10 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) · 1438 unmodified lines
1439 ieee80211_led_exit(local);1439 ieee80211_led_exit(local);
1440 destroy_workqueue(local->workqueue);1440 destroy_workqueue(local->workqueue);
1441 fail_workqueue:1441 fail_workqueue:
1442 if (local->wiphy_ciphers_allocated)1442 if (local->wiphy_ciphers_allocated) {
1443 kfree(local->hw.wiphy->cipher_suites);1443 kfree(local->hw.wiphy->cipher_suites);
1444 local->wiphy_ciphers_allocated = false;
1445 }
1444 kfree(local->int_scan_req);1446 kfree(local->int_scan_req);
1445 return result;1447 return result;
1446}1448}
@@ -1508,8 +1510,10 @@ void ieee80211_free_hw(struct ieee80211_hw *hw) · 61 unmodified lines
1508 mutex_destroy(&local->iflist_mtx);1510 mutex_destroy(&local->iflist_mtx);
1509 mutex_destroy(&local->mtx);1511 mutex_destroy(&local->mtx);
1510 1512
1511 if (local->wiphy_ciphers_allocated)1513 if (local->wiphy_ciphers_allocated) {
1512 kfree(local->hw.wiphy->cipher_suites);1514 kfree(local->hw.wiphy->cipher_suites);
1515 local->wiphy_ciphers_allocated = false;
1516 }
1513 1517
1514 idr_for_each(&local->ack_status_frames,1518 idr_for_each(&local->ack_status_frames,
1515 ieee80211_free_ack_frame, NULL);1519 ieee80211_free_ack_frame, NULL);
net/mac80211/mesh_pathtbl.c+1−1
@@ -710,7 +710,7 @@ int mesh_path_send_to_gates(struct mesh_path *mpath) · 709 unmodified lines
710void mesh_path_discard_frame(struct ieee80211_sub_if_data *sdata,710void mesh_path_discard_frame(struct ieee80211_sub_if_data *sdata,
711 struct sk_buff *skb)711 struct sk_buff *skb)
712{712{
713 kfree_skb(skb);713 ieee80211_free_txskb(&sdata->local->hw, skb);
714 sdata->u.mesh.mshstats.dropped_frames_no_route++;714 sdata->u.mesh.mshstats.dropped_frames_no_route++;
715}715}
716 716
net/mac80211/s1g.c+3−0
@@ -112,6 +112,9 @@ ieee80211_s1g_rx_twt_setup(struct ieee80211_sub_if_data *sdata, · 111 unmodified lines
112 goto out;112 goto out;
113 }113 }
114 114
115 /* TWT Information not supported yet */
116 twt->control |= IEEE80211_TWT_CONTROL_RX_DISABLED;
117
115 drv_add_twt_setup(sdata->local, sdata, &sta->sta, twt);118 drv_add_twt_setup(sdata->local, sdata, &sta->sta, twt);
116out:119out:
117 ieee80211_s1g_send_twt_setup(sdata, mgmt->sa, sdata->vif.addr, twt);120 ieee80211_s1g_send_twt_setup(sdata, mgmt->sa, sdata->vif.addr, twt);
net/mac80211/tx.c+5−0
@@ -4418,6 +4418,11 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, · 4417 unmodified lines
4418 if (likely(!is_multicast_ether_addr(eth->h_dest)))4418 if (likely(!is_multicast_ether_addr(eth->h_dest)))
4419 goto normal;4419 goto normal;
4420 4420
4421 if (unlikely(!ieee80211_sdata_running(sdata))) {
4422 kfree_skb(skb);
4423 return NETDEV_TX_OK;
4424 }
4425
4421 if (unlikely(ieee80211_multicast_to_unicast(skb, dev))) {4426 if (unlikely(ieee80211_multicast_to_unicast(skb, dev))) {
4422 struct sk_buff_head queue;4427 struct sk_buff_head queue;
4423 4428
net/mctp/af_mctp.c+3−1
@@ -665,12 +665,14 @@ static __init int mctp_init(void) · 664 unmodified lines
665 665
666 rc = mctp_neigh_init();666 rc = mctp_neigh_init();
667 if (rc)667 if (rc)
668 goto err_unreg_proto;668 goto err_unreg_routes;
669 669
670 mctp_device_init();670 mctp_device_init();
671 671
672 return 0;672 return 0;
673 673
674err_unreg_routes:
675 mctp_routes_exit();
674err_unreg_proto:676err_unreg_proto:
675 proto_unregister(&mctp_proto);677 proto_unregister(&mctp_proto);
676err_unreg_sock:678err_unreg_sock:
net/mctp/route.c+1−1
@@ -1400,7 +1400,7 @@ int __init mctp_routes_init(void) · 1399 unmodified lines
1400 return register_pernet_subsys(&mctp_net_ops);1400 return register_pernet_subsys(&mctp_net_ops);
1401}1401}
1402 1402
1403void __exit mctp_routes_exit(void)1403void mctp_routes_exit(void)
1404{1404{
1405 unregister_pernet_subsys(&mctp_net_ops);1405 unregister_pernet_subsys(&mctp_net_ops);
1406 rtnl_unregister(PF_MCTP, RTM_DELROUTE);1406 rtnl_unregister(PF_MCTP, RTM_DELROUTE);
net/netfilter/nf_tables_api.c+2−1
@@ -10090,7 +10090,8 @@ static void __net_exit nf_tables_exit_net(struct net *net) · 10089 unmodified lines
10090 struct nftables_pernet *nft_net = nft_pernet(net);10090 struct nftables_pernet *nft_net = nft_pernet(net);
10091 10091
10092 mutex_lock(&nft_net->commit_mutex);10092 mutex_lock(&nft_net->commit_mutex);
10093 if (!list_empty(&nft_net->commit_list))10093 if (!list_empty(&nft_net->commit_list) ||
10094 !list_empty(&nft_net->module_list))
10094 __nf_tables_abort(net, NFNL_ABORT_NONE);10095 __nf_tables_abort(net, NFNL_ABORT_NONE);
10095 __nft_release_tables(net);10096 __nft_release_tables(net);
10096 mutex_unlock(&nft_net->commit_mutex);10097 mutex_unlock(&nft_net->commit_mutex);
net/netfilter/nfnetlink.c+1−0
@@ -294,6 +294,7 @@ replay: · 293 unmodified lines
294 nfnl_lock(subsys_id);294 nfnl_lock(subsys_id);
295 if (nfnl_dereference_protected(subsys_id) != ss ||295 if (nfnl_dereference_protected(subsys_id) != ss ||
296 nfnetlink_find_client(type, ss) != nc) {296 nfnetlink_find_client(type, ss) != nc) {
297 nfnl_unlock(subsys_id);
297 err = -EAGAIN;298 err = -EAGAIN;
298 break;299 break;
299 }300 }
net/sctp/outqueue.c+8−5
@@ -384,6 +384,7 @@ static int sctp_prsctp_prune_unsent(struct sctp_association *asoc, · 383 unmodified lines
384{384{
385 struct sctp_outq *q = &asoc->outqueue;385 struct sctp_outq *q = &asoc->outqueue;
386 struct sctp_chunk *chk, *temp;386 struct sctp_chunk *chk, *temp;
387 struct sctp_stream_out *sout;
387 388
388 q->sched->unsched_all(&asoc->stream);389 q->sched->unsched_all(&asoc->stream);
389 390
@@ -398,12 +399,14 @@ static int sctp_prsctp_prune_unsent(struct sctp_association *asoc, · 8 unmodified lines
398 sctp_sched_dequeue_common(q, chk);399 sctp_sched_dequeue_common(q, chk);
399 asoc->sent_cnt_removable--;400 asoc->sent_cnt_removable--;
400 asoc->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++;401 asoc->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++;
401 if (chk->sinfo.sinfo_stream < asoc->stream.outcnt) {
402 struct sctp_stream_out *streamout =
403 SCTP_SO(&asoc->stream, chk->sinfo.sinfo_stream);
404 402
405 streamout->ext->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++;403 sout = SCTP_SO(&asoc->stream, chk->sinfo.sinfo_stream);
406 }404 sout->ext->abandoned_unsent[SCTP_PR_INDEX(PRIO)]++;
405
406 /* clear out_curr if all frag chunks are pruned */
407 if (asoc->stream.out_curr == sout &&
408 list_is_last(&chk->frag_list, &chk->msg->chunks))
409 asoc->stream.out_curr = NULL;
407 410
408 msg_len -= chk->skb->truesize + sizeof(struct sctp_chunk);411 msg_len -= chk->skb->truesize + sizeof(struct sctp_chunk);
409 sctp_chunk_free(chk);412 sctp_chunk_free(chk);
net/tipc/netlink_compat.c+1−1
@@ -880,7 +880,7 @@ static int tipc_nl_compat_name_table_dump_header(struct tipc_nl_compat_msg *msg) · 879 unmodified lines
880 };880 };
881 881
882 ntq = (struct tipc_name_table_query *)TLV_DATA(msg->req);882 ntq = (struct tipc_name_table_query *)TLV_DATA(msg->req);
883 if (TLV_GET_DATA_LEN(msg->req) < sizeof(struct tipc_name_table_query))883 if (TLV_GET_DATA_LEN(msg->req) < (int)sizeof(struct tipc_name_table_query))
884 return -EINVAL;884 return -EINVAL;
885 885
886 depth = ntohl(ntq->depth);886 depth = ntohl(ntq->depth);
net/wireless/reg.c+9−3
@@ -1084,6 +1084,8 @@ MODULE_FIRMWARE("regulatory.db"); · 1083 unmodified lines
1084 1084
1085static int query_regdb_file(const char *alpha2)1085static int query_regdb_file(const char *alpha2)
1086{1086{
1087 int err;
1088
1087 ASSERT_RTNL();1089 ASSERT_RTNL();
1088 1090
1089 if (regdb)1091 if (regdb)
@@ -1093,9 +1095,13 @@ static int query_regdb_file(const char *alpha2) · 3 unmodified lines
1093 if (!alpha2)1095 if (!alpha2)
1094 return -ENOMEM;1096 return -ENOMEM;
1095 1097
1096 return request_firmware_nowait(THIS_MODULE, true, "regulatory.db",1098 err = request_firmware_nowait(THIS_MODULE, true, "regulatory.db",
1097 &reg_pdev->dev, GFP_KERNEL,1099 &reg_pdev->dev, GFP_KERNEL,
1098 (void *)alpha2, regdb_fw_cb);1100 (void *)alpha2, regdb_fw_cb);
1101 if (err)
1102 kfree(alpha2);
1103
1104 return err;
1099}1105}
1100 1106
1101int reg_reload_regdb(void)1107int reg_reload_regdb(void)
net/wireless/scan.c+3−1
@@ -1674,7 +1674,9 @@ cfg80211_update_known_bss(struct cfg80211_registered_device *rdev, · 1673 unmodified lines
1674 if (old == rcu_access_pointer(known->pub.ies))1674 if (old == rcu_access_pointer(known->pub.ies))
1675 rcu_assign_pointer(known->pub.ies, new->pub.beacon_ies);1675 rcu_assign_pointer(known->pub.ies, new->pub.beacon_ies);
1676 1676
1677 cfg80211_update_hidden_bsses(known, new->pub.beacon_ies, old);1677 cfg80211_update_hidden_bsses(known,
1678 rcu_access_pointer(new->pub.beacon_ies),
1679 old);
1678 1680
1679 if (old)1681 if (old)
1680 kfree_rcu((struct cfg80211_bss_ies *)old, rcu_head);1682 kfree_rcu((struct cfg80211_bss_ies *)old, rcu_head);
net/wireless/util.c+4−2
@@ -1557,10 +1557,12 @@ static u32 cfg80211_calculate_bitrate_eht(struct rate_info *rate) · 1556 unmodified lines
1557 tmp = result;1557 tmp = result;
1558 tmp *= SCALE;1558 tmp *= SCALE;
1559 do_div(tmp, mcs_divisors[rate->mcs]);1559 do_div(tmp, mcs_divisors[rate->mcs]);
1560 result = tmp;
1561 1560
1562 /* and take NSS */1561 /* and take NSS */
1563 result = (result * rate->nss) / 8;1562 tmp *= rate->nss;
1563 do_div(tmp, 8);
1564
1565 result = tmp;
1564 1566
1565 return result / 10000;1567 return result / 10000;
1566}1568}
scripts/min-tool-version.sh+1−1
@@ -25,7 +25,7 @@ icc) · 24 unmodified lines
25 ;;25 ;;
26llvm)26llvm)
27 if [ "$SRCARCH" = s390 ]; then27 if [ "$SRCARCH" = s390 ]; then
28 echo 14.0.028 echo 15.0.0
29 else29 else
30 echo 11.0.030 echo 11.0.0
31 fi31 fi
sound/arm/pxa2xx-ac97-lib.c+3−1
@@ -402,8 +402,10 @@ int pxa2xx_ac97_hw_probe(struct platform_device *dev) · 401 unmodified lines
402 goto err_clk2;402 goto err_clk2;
403 403
404 irq = platform_get_irq(dev, 0);404 irq = platform_get_irq(dev, 0);
405 if (!irq)405 if (irq < 0) {
406 ret = irq;
406 goto err_irq;407 goto err_irq;
408 }
407 409
408 ret = request_irq(irq, pxa2xx_ac97_irq, 0, "AC97", NULL);410 ret = request_irq(irq, pxa2xx_ac97_irq, 0, "AC97", NULL);
409 if (ret < 0)411 if (ret < 0)
sound/core/memalloc.c+8−7
@@ -9,6 +9,7 @@ · 8 unmodified lines
9#include <linux/slab.h>9#include <linux/slab.h>
10#include <linux/mm.h>10#include <linux/mm.h>
11#include <linux/dma-mapping.h>11#include <linux/dma-mapping.h>
12#include <linux/dma-map-ops.h>
12#include <linux/genalloc.h>13#include <linux/genalloc.h>
13#include <linux/highmem.h>14#include <linux/highmem.h>
14#include <linux/vmalloc.h>15#include <linux/vmalloc.h>
@@ -543,17 +544,17 @@ static void *snd_dma_noncontig_alloc(struct snd_dma_buffer *dmab, size_t size) · 528 unmodified lines
543 544
544 sgt = dma_alloc_noncontiguous(dmab->dev.dev, size, dmab->dev.dir,545 sgt = dma_alloc_noncontiguous(dmab->dev.dev, size, dmab->dev.dir,
545 DEFAULT_GFP, 0);546 DEFAULT_GFP, 0);
546 if (!sgt) {
547#ifdef CONFIG_SND_DMA_SGBUF547#ifdef CONFIG_SND_DMA_SGBUF
548 if (!sgt && !get_dma_ops(dmab->dev.dev)) {
548 if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_WC_SG)549 if (dmab->dev.type == SNDRV_DMA_TYPE_DEV_WC_SG)
549 dmab->dev.type = SNDRV_DMA_TYPE_DEV_WC_SG_FALLBACK;550 dmab->dev.type = SNDRV_DMA_TYPE_DEV_WC_SG_FALLBACK;
550 else551 else
551 dmab->dev.type = SNDRV_DMA_TYPE_DEV_SG_FALLBACK;552 dmab->dev.type = SNDRV_DMA_TYPE_DEV_SG_FALLBACK;
552 return snd_dma_sg_fallback_alloc(dmab, size);553 return snd_dma_sg_fallback_alloc(dmab, size);
553#else
554 return NULL;
555#endif
556 }554 }
555#endif
556 if (!sgt)
557 return NULL;
557 558
558 dmab->dev.need_sync = dma_need_sync(dmab->dev.dev,559 dmab->dev.need_sync = dma_need_sync(dmab->dev.dev,
559 sg_dma_address(sgt->sgl));560 sg_dma_address(sgt->sgl));
@@ -857,7 +858,7 @@ static const struct snd_malloc_ops snd_dma_noncoherent_ops = { · 297 unmodified lines
857/*858/*
858 * Entry points859 * Entry points
859 */860 */
860static const struct snd_malloc_ops *dma_ops[] = {861static const struct snd_malloc_ops *snd_dma_ops[] = {
861 [SNDRV_DMA_TYPE_CONTINUOUS] = &snd_dma_continuous_ops,862 [SNDRV_DMA_TYPE_CONTINUOUS] = &snd_dma_continuous_ops,
862 [SNDRV_DMA_TYPE_VMALLOC] = &snd_dma_vmalloc_ops,863 [SNDRV_DMA_TYPE_VMALLOC] = &snd_dma_vmalloc_ops,
863#ifdef CONFIG_HAS_DMA864#ifdef CONFIG_HAS_DMA
@@ -883,7 +884,7 @@ static const struct snd_malloc_ops *snd_dma_get_ops(struct snd_dma_buffer *dmab) · 19 unmodified lines
883 if (WARN_ON_ONCE(!dmab))884 if (WARN_ON_ONCE(!dmab))
884 return NULL;885 return NULL;
885 if (WARN_ON_ONCE(dmab->dev.type <= SNDRV_DMA_TYPE_UNKNOWN ||886 if (WARN_ON_ONCE(dmab->dev.type <= SNDRV_DMA_TYPE_UNKNOWN ||
886 dmab->dev.type >= ARRAY_SIZE(dma_ops)))887 dmab->dev.type >= ARRAY_SIZE(snd_dma_ops)))
887 return NULL;888 return NULL;
888 return dma_ops[dmab->dev.type];889 return snd_dma_ops[dmab->dev.type];
889}890}
sound/hda/hdac_sysfs.c+3−1
@@ -346,8 +346,10 @@ static int add_widget_node(struct kobject *parent, hda_nid_t nid, · 345 unmodified lines
346 return -ENOMEM;346 return -ENOMEM;
347 kobject_init(kobj, &widget_ktype);347 kobject_init(kobj, &widget_ktype);
348 err = kobject_add(kobj, parent, "%02x", nid);348 err = kobject_add(kobj, parent, "%02x", nid);
349 if (err < 0)349 if (err < 0) {
350 kobject_put(kobj);
350 return err;351 return err;
352 }
351 err = sysfs_create_group(kobj, group);353 err = sysfs_create_group(kobj, group);
352 if (err < 0) {354 if (err < 0) {
353 kobject_put(kobj);355 kobject_put(kobj);
sound/pci/hda/hda_intel.c+7−4
@@ -485,8 +485,8 @@ static int intel_ml_lctl_set_power(struct azx *chip, int state) · 484 unmodified lines
485 int timeout;485 int timeout;
486 486
487 /*487 /*
488 * the codecs are sharing the first link setting by default488 * Changes to LCTL.SCF are only needed for the first multi-link dealing
489 * If other links are enabled for stream, they need similar fix489 * with external codecs
490 */490 */
491 val = readl(bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL);491 val = readl(bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL);
492 val &= ~AZX_ML_LCTL_SPA;492 val &= ~AZX_ML_LCTL_SPA;
@@ -513,7 +513,7 @@ static void intel_init_lctl(struct azx *chip) · 20 unmodified lines
513 513
514 /* 0. check lctl register value is correct or not */514 /* 0. check lctl register value is correct or not */
515 val = readl(bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL);515 val = readl(bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL);
516 /* if SCF is already set, let's use it */516 /* only perform additional configurations if the SCF is initially based on 6MHz */
517 if ((val & AZX_ML_LCTL_SCF) != 0)517 if ((val & AZX_ML_LCTL_SCF) != 0)
518 return;518 return;
519 519
@@ -531,7 +531,7 @@ static void intel_init_lctl(struct azx *chip) · 11 unmodified lines
531 if (ret)531 if (ret)
532 goto set_spa;532 goto set_spa;
533 533
534 /* 2. update SCF to select a properly audio clock*/534 /* 2. update SCF to select an audio clock different from 6MHz */
535 val &= ~AZX_ML_LCTL_SCF;535 val &= ~AZX_ML_LCTL_SCF;
536 val |= intel_get_lctl_scf(chip);536 val |= intel_get_lctl_scf(chip);
537 writel(val, bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL);537 writel(val, bus->mlcap + AZX_ML_BASE + AZX_REG_ML_LCTL);
@@ -2711,6 +2711,9 @@ static const struct pci_device_id azx_ids[] = { · 2173 unmodified lines
2711 { PCI_DEVICE(0x1002, 0xab28),2711 { PCI_DEVICE(0x1002, 0xab28),
2712 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS |2712 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS |
2713 AZX_DCAPS_PM_RUNTIME },2713 AZX_DCAPS_PM_RUNTIME },
2714 { PCI_DEVICE(0x1002, 0xab30),
2715 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS |
2716 AZX_DCAPS_PM_RUNTIME },
2714 { PCI_DEVICE(0x1002, 0xab38),2717 { PCI_DEVICE(0x1002, 0xab38),
2715 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS |2718 .driver_data = AZX_DRIVER_ATIHDMI_NS | AZX_DCAPS_PRESET_ATI_HDMI_NS |
2716 AZX_DCAPS_PM_RUNTIME },2719 AZX_DCAPS_PM_RUNTIME },
sound/pci/hda/patch_ca0132.c+1−0
@@ -1306,6 +1306,7 @@ static const struct snd_pci_quirk ca0132_quirks[] = { · 1305 unmodified lines
1306 SND_PCI_QUIRK(0x1458, 0xA026, "Gigabyte G1.Sniper Z97", QUIRK_R3DI),1306 SND_PCI_QUIRK(0x1458, 0xA026, "Gigabyte G1.Sniper Z97", QUIRK_R3DI),
1307 SND_PCI_QUIRK(0x1458, 0xA036, "Gigabyte GA-Z170X-Gaming 7", QUIRK_R3DI),1307 SND_PCI_QUIRK(0x1458, 0xA036, "Gigabyte GA-Z170X-Gaming 7", QUIRK_R3DI),
1308 SND_PCI_QUIRK(0x3842, 0x1038, "EVGA X99 Classified", QUIRK_R3DI),1308 SND_PCI_QUIRK(0x3842, 0x1038, "EVGA X99 Classified", QUIRK_R3DI),
1309 SND_PCI_QUIRK(0x3842, 0x1055, "EVGA Z390 DARK", QUIRK_R3DI),
1309 SND_PCI_QUIRK(0x1102, 0x0013, "Recon3D", QUIRK_R3D),1310 SND_PCI_QUIRK(0x1102, 0x0013, "Recon3D", QUIRK_R3D),
1310 SND_PCI_QUIRK(0x1102, 0x0018, "Recon3D", QUIRK_R3D),1311 SND_PCI_QUIRK(0x1102, 0x0018, "Recon3D", QUIRK_R3D),
1311 SND_PCI_QUIRK(0x1102, 0x0051, "Sound Blaster AE-5", QUIRK_AE5),1312 SND_PCI_QUIRK(0x1102, 0x0051, "Sound Blaster AE-5", QUIRK_AE5),
sound/pci/hda/patch_realtek.c+2−0
@@ -9404,6 +9404,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { · 9403 unmodified lines
9404 SND_PCI_QUIRK(0x1043, 0x1e8e, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA401),9404 SND_PCI_QUIRK(0x1043, 0x1e8e, "ASUS Zephyrus G15", ALC289_FIXUP_ASUS_GA401),
9405 SND_PCI_QUIRK(0x1043, 0x1c52, "ASUS Zephyrus G15 2022", ALC289_FIXUP_ASUS_GA401),9405 SND_PCI_QUIRK(0x1043, 0x1c52, "ASUS Zephyrus G15 2022", ALC289_FIXUP_ASUS_GA401),
9406 SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_GA401),9406 SND_PCI_QUIRK(0x1043, 0x1f11, "ASUS Zephyrus G14", ALC289_FIXUP_ASUS_GA401),
9407 SND_PCI_QUIRK(0x1043, 0x1f12, "ASUS UM5302", ALC287_FIXUP_CS35L41_I2C_2),
9407 SND_PCI_QUIRK(0x1043, 0x1f92, "ASUS ROG Flow X16", ALC289_FIXUP_ASUS_GA401),9408 SND_PCI_QUIRK(0x1043, 0x1f92, "ASUS ROG Flow X16", ALC289_FIXUP_ASUS_GA401),
9408 SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2),9409 SND_PCI_QUIRK(0x1043, 0x3030, "ASUS ZN270IE", ALC256_FIXUP_ASUS_AIO_GPIO2),
9409 SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC),9410 SND_PCI_QUIRK(0x1043, 0x831a, "ASUS P901", ALC269_FIXUP_STEREO_DMIC),
@@ -9608,6 +9609,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { · 198 unmodified lines
9608 SND_PCI_QUIRK(0x17aa, 0x511f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),9609 SND_PCI_QUIRK(0x17aa, 0x511f, "Thinkpad", ALC298_FIXUP_TPT470_DOCK),
9609 SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),9610 SND_PCI_QUIRK(0x17aa, 0x9e54, "LENOVO NB", ALC269_FIXUP_LENOVO_EAPD),
9610 SND_PCI_QUIRK(0x1849, 0x1233, "ASRock NUC Box 1100", ALC233_FIXUP_NO_AUDIO_JACK),9611 SND_PCI_QUIRK(0x1849, 0x1233, "ASRock NUC Box 1100", ALC233_FIXUP_NO_AUDIO_JACK),
9612 SND_PCI_QUIRK(0x1849, 0xa233, "Positivo Master C6300", ALC269_FIXUP_HEADSET_MIC),
9611 SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS),9613 SND_PCI_QUIRK(0x19e5, 0x3204, "Huawei MACH-WX9", ALC256_FIXUP_HUAWEI_MACH_WX9_PINS),
9612 SND_PCI_QUIRK(0x19e5, 0x320f, "Huawei WRT-WX9 ", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE),9614 SND_PCI_QUIRK(0x19e5, 0x320f, "Huawei WRT-WX9 ", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE),
9613 SND_PCI_QUIRK(0x1b35, 0x1235, "CZC B20", ALC269_FIXUP_CZC_B20),9615 SND_PCI_QUIRK(0x1b35, 0x1235, "CZC B20", ALC269_FIXUP_CZC_B20),
sound/soc/codecs/adau1372.c+17−14
@@ -24,7 +24,6 @@ · 23 unmodified lines
24#include "adau-utils.h"24#include "adau-utils.h"
25 25
26struct adau1372 {26struct adau1372 {
27 struct clk *clk;
28 struct regmap *regmap;27 struct regmap *regmap;
29 void (*switch_mode)(struct device *dev);28 void (*switch_mode)(struct device *dev);
30 bool use_pll;29 bool use_pll;
@@ -206,10 +205,10 @@ static const struct snd_kcontrol_new adau1372_controls[] = { · 175 unmodified lines
206 2, 1, 0, adau1372_pga_boost_tlv),205 2, 1, 0, adau1372_pga_boost_tlv),
207 SOC_SINGLE_TLV("PGA 3 Boost Capture Volume", ADAU1372_REG_PGA_BOOST,206 SOC_SINGLE_TLV("PGA 3 Boost Capture Volume", ADAU1372_REG_PGA_BOOST,
208 3, 1, 0, adau1372_pga_boost_tlv),207 3, 1, 0, adau1372_pga_boost_tlv),
209 SOC_SINGLE("PGA 0 Capture Switch", ADAU1372_REG_PGA_CTRL(0), 7, 1, 1),208 SOC_SINGLE("PGA 0 Capture Switch", ADAU1372_REG_PGA_CTRL(0), 7, 1, 0),
210 SOC_SINGLE("PGA 1 Capture Switch", ADAU1372_REG_PGA_CTRL(1), 7, 1, 1),209 SOC_SINGLE("PGA 1 Capture Switch", ADAU1372_REG_PGA_CTRL(1), 7, 1, 0),
211 SOC_SINGLE("PGA 2 Capture Switch", ADAU1372_REG_PGA_CTRL(2), 7, 1, 1),210 SOC_SINGLE("PGA 2 Capture Switch", ADAU1372_REG_PGA_CTRL(2), 7, 1, 0),
212 SOC_SINGLE("PGA 3 Capture Switch", ADAU1372_REG_PGA_CTRL(3), 7, 1, 1),211 SOC_SINGLE("PGA 3 Capture Switch", ADAU1372_REG_PGA_CTRL(3), 7, 1, 0),
213 212
214 SOC_SINGLE_TLV("DAC 0 Playback Volume", ADAU1372_REG_DAC_VOL(0),213 SOC_SINGLE_TLV("DAC 0 Playback Volume", ADAU1372_REG_DAC_VOL(0),
215 0, 0xff, 1, adau1372_digital_tlv),214 0, 0xff, 1, adau1372_digital_tlv),
@@ -369,10 +368,10 @@ static const struct snd_soc_dapm_widget adau1372_dapm_widgets[] = { · 153 unmodified lines
369 SND_SOC_DAPM_SUPPLY("MICBIAS0", ADAU1372_REG_MICBIAS, 4, 0, NULL, 0),368 SND_SOC_DAPM_SUPPLY("MICBIAS0", ADAU1372_REG_MICBIAS, 4, 0, NULL, 0),
370 SND_SOC_DAPM_SUPPLY("MICBIAS1", ADAU1372_REG_MICBIAS, 5, 0, NULL, 0),369 SND_SOC_DAPM_SUPPLY("MICBIAS1", ADAU1372_REG_MICBIAS, 5, 0, NULL, 0),
371 370
372 SND_SOC_DAPM_PGA("PGA0", ADAU1372_REG_PGA_CTRL(0), 6, 0, NULL, 0),371 SND_SOC_DAPM_PGA("PGA0", ADAU1372_REG_PGA_CTRL(0), 6, 1, NULL, 0),
373 SND_SOC_DAPM_PGA("PGA1", ADAU1372_REG_PGA_CTRL(1), 6, 0, NULL, 0),372 SND_SOC_DAPM_PGA("PGA1", ADAU1372_REG_PGA_CTRL(1), 6, 1, NULL, 0),
374 SND_SOC_DAPM_PGA("PGA2", ADAU1372_REG_PGA_CTRL(2), 6, 0, NULL, 0),373 SND_SOC_DAPM_PGA("PGA2", ADAU1372_REG_PGA_CTRL(2), 6, 1, NULL, 0),
375 SND_SOC_DAPM_PGA("PGA3", ADAU1372_REG_PGA_CTRL(3), 6, 0, NULL, 0),374 SND_SOC_DAPM_PGA("PGA3", ADAU1372_REG_PGA_CTRL(3), 6, 1, NULL, 0),
376 SND_SOC_DAPM_ADC("ADC0", NULL, ADAU1372_REG_ADC_CTRL2, 0, 0),375 SND_SOC_DAPM_ADC("ADC0", NULL, ADAU1372_REG_ADC_CTRL2, 0, 0),
377 SND_SOC_DAPM_ADC("ADC1", NULL, ADAU1372_REG_ADC_CTRL2, 1, 0),376 SND_SOC_DAPM_ADC("ADC1", NULL, ADAU1372_REG_ADC_CTRL2, 1, 0),
378 SND_SOC_DAPM_ADC("ADC2", NULL, ADAU1372_REG_ADC_CTRL3, 0, 0),377 SND_SOC_DAPM_ADC("ADC2", NULL, ADAU1372_REG_ADC_CTRL3, 0, 0),
@@ -662,6 +661,7 @@ static int adau1372_hw_params(struct snd_pcm_substream *substream, · 283 unmodified lines
662 case 16:661 case 16:
663 sai1 = ADAU1372_SAI1_BCLKRATE;662 sai1 = ADAU1372_SAI1_BCLKRATE;
664 break;663 break;
664 case 24:
665 case 32:665 case 32:
666 sai1 = 0;666 sai1 = 0;
667 break;667 break;
@@ -699,6 +699,7 @@ static int adau1372_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, · 31 unmodified lines
699 case 16:699 case 16:
700 sai1 = ADAU1372_SAI1_BCLK_TDMC;700 sai1 = ADAU1372_SAI1_BCLK_TDMC;
701 break;701 break;
702 case 24:
702 case 32:703 case 32:
703 sai1 = 0;704 sai1 = 0;
704 break;705 break;
@@ -869,7 +870,9 @@ static const struct snd_soc_dai_ops adau1372_dai_ops = { · 164 unmodified lines
869 .startup = adau1372_startup,870 .startup = adau1372_startup,
870};871};
871 872
872#define ADAU1372_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE)873#define ADAU1372_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
874 SNDRV_PCM_FMTBIT_S24_LE | \
875 SNDRV_PCM_FMTBIT_S32_LE)
873 876
874static struct snd_soc_dai_driver adau1372_dai_driver = {877static struct snd_soc_dai_driver adau1372_dai_driver = {
875 .name = "adau1372",878 .name = "adau1372",
@@ -924,9 +927,9 @@ int adau1372_probe(struct device *dev, struct regmap *regmap, · 48 unmodified lines
924 if (!adau1372)927 if (!adau1372)
925 return -ENOMEM;928 return -ENOMEM;
926 929
927 adau1372->clk = devm_clk_get(dev, "mclk");930 adau1372->mclk = devm_clk_get(dev, "mclk");
928 if (IS_ERR(adau1372->clk))931 if (IS_ERR(adau1372->mclk))
929 return PTR_ERR(adau1372->clk);932 return PTR_ERR(adau1372->mclk);
930 933
931 adau1372->pd_gpio = devm_gpiod_get_optional(dev, "powerdown", GPIOD_OUT_HIGH);934 adau1372->pd_gpio = devm_gpiod_get_optional(dev, "powerdown", GPIOD_OUT_HIGH);
932 if (IS_ERR(adau1372->pd_gpio))935 if (IS_ERR(adau1372->pd_gpio))
@@ -946,7 +949,7 @@ int adau1372_probe(struct device *dev, struct regmap *regmap, · 13 unmodified lines
946 * 12.288MHz. Automatically choose a valid configuration from the949 * 12.288MHz. Automatically choose a valid configuration from the
947 * external clock.950 * external clock.
948 */951 */
949 rate = clk_get_rate(adau1372->clk);952 rate = clk_get_rate(adau1372->mclk);
950 953
951 switch (rate) {954 switch (rate) {
952 case 12288000:955 case 12288000:
sound/usb/card.c+20−9
@@ -742,6 +742,18 @@ get_alias_quirk(struct usb_device *dev, unsigned int id) · 741 unmodified lines
742 return NULL;742 return NULL;
743}743}
744 744
745/* register card if we reach to the last interface or to the specified
746 * one given via option
747 */
748static int try_to_register_card(struct snd_usb_audio *chip, int ifnum)
749{
750 if (check_delayed_register_option(chip) == ifnum ||
751 chip->last_iface == ifnum ||
752 usb_interface_claimed(usb_ifnum_to_if(chip->dev, chip->last_iface)))
753 return snd_card_register(chip->card);
754 return 0;
755}
756
745/*757/*
746 * probe the active usb device758 * probe the active usb device
747 *759 *
@@ -880,15 +892,9 @@ static int usb_audio_probe(struct usb_interface *intf, · 132 unmodified lines
880 chip->need_delayed_register = false; /* clear again */892 chip->need_delayed_register = false; /* clear again */
881 }893 }
882 894
883 /* register card if we reach to the last interface or to the specified895 err = try_to_register_card(chip, ifnum);
884 * one given via option896 if (err < 0)
885 */897 goto __error_no_register;
886 if (check_delayed_register_option(chip) == ifnum ||
887 usb_interface_claimed(usb_ifnum_to_if(dev, chip->last_iface))) {
888 err = snd_card_register(chip->card);
889 if (err < 0)
890 goto __error;
891 }
892 898
893 if (chip->quirk_flags & QUIRK_FLAG_SHARE_MEDIA_DEVICE) {899 if (chip->quirk_flags & QUIRK_FLAG_SHARE_MEDIA_DEVICE) {
894 /* don't want to fail when snd_media_device_create() fails */900 /* don't want to fail when snd_media_device_create() fails */
@@ -907,6 +913,11 @@ static int usb_audio_probe(struct usb_interface *intf, · 12 unmodified lines
907 return 0;913 return 0;
908 914
909 __error:915 __error:
916 /* in the case of error in secondary interface, still try to register */
917 if (chip)
918 try_to_register_card(chip, ifnum);
919
920 __error_no_register:
910 if (chip) {921 if (chip) {
911 /* chip->active is inside the chip->card object,922 /* chip->active is inside the chip->card object,
912 * decrement before memory is possibly returned.923 * decrement before memory is possibly returned.
sound/usb/endpoint.c+2−1
@@ -931,7 +931,8 @@ void snd_usb_endpoint_close(struct snd_usb_audio *chip, · 930 unmodified lines
931 usb_audio_dbg(chip, "Closing EP 0x%x (count %d)\n",931 usb_audio_dbg(chip, "Closing EP 0x%x (count %d)\n",
932 ep->ep_num, ep->opened);932 ep->ep_num, ep->opened);
933 933
934 if (!--ep->iface_ref->opened)934 if (!--ep->iface_ref->opened &&
935 !(chip->quirk_flags & QUIRK_FLAG_IFACE_SKIP_CLOSE))
935 endpoint_set_interface(chip, ep, false);936 endpoint_set_interface(chip, ep, false);
936 937
937 if (!--ep->opened) {938 if (!--ep->opened) {
sound/usb/quirks-table.h+4−0
@@ -2049,6 +2049,10 @@ YAMAHA_DEVICE(0x7010, "UB99"), · 2048 unmodified lines
2049 }2049 }
2050 }2050 }
2051},2051},
2052{
2053 /* M-Audio Micro */
2054 USB_DEVICE_VENDOR_SPEC(0x0763, 0x201a),
2055},
2052{2056{
2053 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030),2057 USB_DEVICE_VENDOR_SPEC(0x0763, 0x2030),
2054 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {2058 .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) {
sound/usb/quirks.c+6−41
@@ -376,7 +376,8 @@ static int create_auto_midi_quirk(struct snd_usb_audio *chip, · 375 unmodified lines
376 376
377static int create_autodetect_quirk(struct snd_usb_audio *chip,377static int create_autodetect_quirk(struct snd_usb_audio *chip,
378 struct usb_interface *iface,378 struct usb_interface *iface,
379 struct usb_driver *driver)379 struct usb_driver *driver,
380 const struct snd_usb_audio_quirk *quirk)
380{381{
381 int err;382 int err;
382 383
@@ -386,45 +387,6 @@ static int create_autodetect_quirk(struct snd_usb_audio *chip, · 3 unmodified lines
386 return err;387 return err;
387}388}
388 389
389static int create_autodetect_quirks(struct snd_usb_audio *chip,
390 struct usb_interface *iface,
391 struct usb_driver *driver,
392 const struct snd_usb_audio_quirk *quirk)
393{
394 int probed_ifnum = get_iface_desc(iface->altsetting)->bInterfaceNumber;
395 int ifcount, ifnum, err;
396
397 err = create_autodetect_quirk(chip, iface, driver);
398 if (err < 0)
399 return err;
400
401 /*
402 * ALSA PCM playback/capture devices cannot be registered in two steps,
403 * so we have to claim the other corresponding interface here.
404 */
405 ifcount = chip->dev->actconfig->desc.bNumInterfaces;
406 for (ifnum = 0; ifnum < ifcount; ifnum++) {
407 if (ifnum == probed_ifnum || quirk->ifnum >= 0)
408 continue;
409 iface = usb_ifnum_to_if(chip->dev, ifnum);
410 if (!iface ||
411 usb_interface_claimed(iface) ||
412 get_iface_desc(iface->altsetting)->bInterfaceClass !=
413 USB_CLASS_VENDOR_SPEC)
414 continue;
415
416 err = create_autodetect_quirk(chip, iface, driver);
417 if (err >= 0) {
418 err = usb_driver_claim_interface(driver, iface,
419 USB_AUDIO_IFACE_UNUSED);
420 if (err < 0)
421 return err;
422 }
423 }
424
425 return 0;
426}
427
428/*390/*
429 * Create a stream for an Edirol UA-700/UA-25/UA-4FX interface. 391 * Create a stream for an Edirol UA-700/UA-25/UA-4FX interface.
430 * The only way to detect the sample rate is by looking at wMaxPacketSize.392 * The only way to detect the sample rate is by looking at wMaxPacketSize.
@@ -554,7 +516,7 @@ int snd_usb_create_quirk(struct snd_usb_audio *chip, · 123 unmodified lines
554 static const quirk_func_t quirk_funcs[] = {516 static const quirk_func_t quirk_funcs[] = {
555 [QUIRK_IGNORE_INTERFACE] = ignore_interface_quirk,517 [QUIRK_IGNORE_INTERFACE] = ignore_interface_quirk,
556 [QUIRK_COMPOSITE] = create_composite_quirk,518 [QUIRK_COMPOSITE] = create_composite_quirk,
557 [QUIRK_AUTODETECT] = create_autodetect_quirks,519 [QUIRK_AUTODETECT] = create_autodetect_quirk,
558 [QUIRK_MIDI_STANDARD_INTERFACE] = create_any_midi_quirk,520 [QUIRK_MIDI_STANDARD_INTERFACE] = create_any_midi_quirk,
559 [QUIRK_MIDI_FIXED_ENDPOINT] = create_any_midi_quirk,521 [QUIRK_MIDI_FIXED_ENDPOINT] = create_any_midi_quirk,
560 [QUIRK_MIDI_YAMAHA] = create_any_midi_quirk,522 [QUIRK_MIDI_YAMAHA] = create_any_midi_quirk,
@@ -1913,6 +1875,7 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip, · 1352 unmodified lines
1913 /* XMOS based USB DACs */1875 /* XMOS based USB DACs */
1914 switch (chip->usb_id) {1876 switch (chip->usb_id) {
1915 case USB_ID(0x1511, 0x0037): /* AURALiC VEGA */1877 case USB_ID(0x1511, 0x0037): /* AURALiC VEGA */
1878 case USB_ID(0x21ed, 0xd75a): /* Accuphase DAC-60 option card */
1916 case USB_ID(0x2522, 0x0012): /* LH Labs VI DAC Infinity */1879 case USB_ID(0x2522, 0x0012): /* LH Labs VI DAC Infinity */
1917 case USB_ID(0x2772, 0x0230): /* Pro-Ject Pre Box S2 Digital */1880 case USB_ID(0x2772, 0x0230): /* Pro-Ject Pre Box S2 Digital */
1918 if (fp->altsetting == 2)1881 if (fp->altsetting == 2)
@@ -2185,6 +2148,8 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = { · 266 unmodified lines
2185 QUIRK_FLAG_GENERIC_IMPLICIT_FB),2148 QUIRK_FLAG_GENERIC_IMPLICIT_FB),
2186 DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */2149 DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */
2187 QUIRK_FLAG_GENERIC_IMPLICIT_FB),2150 QUIRK_FLAG_GENERIC_IMPLICIT_FB),
2151 DEVICE_FLG(0x0525, 0xa4ad, /* Hamedal C20 usb camero */
2152 QUIRK_FLAG_IFACE_SKIP_CLOSE),
2188 2153
2189 /* Vendor matches */2154 /* Vendor matches */
2190 VENDOR_FLG(0x045e, /* MS Lifecam */2155 VENDOR_FLG(0x045e, /* MS Lifecam */
sound/usb/usbaudio.h+3−0
@@ -170,6 +170,8 @@ extern bool snd_usb_skip_validation; · 169 unmodified lines
170 * Apply the generic implicit feedback sync mode (same as implicit_fb=1 option)170 * Apply the generic implicit feedback sync mode (same as implicit_fb=1 option)
171 * QUIRK_FLAG_SKIP_IMPLICIT_FB171 * QUIRK_FLAG_SKIP_IMPLICIT_FB
172 * Don't apply implicit feedback sync mode172 * Don't apply implicit feedback sync mode
173 * QUIRK_FLAG_IFACE_SKIP_CLOSE
174 * Don't closed interface during setting sample rate
173 */175 */
174 176
175#define QUIRK_FLAG_GET_SAMPLE_RATE (1U << 0)177#define QUIRK_FLAG_GET_SAMPLE_RATE (1U << 0)
@@ -191,5 +193,6 @@ extern bool snd_usb_skip_validation; · 15 unmodified lines
191#define QUIRK_FLAG_SET_IFACE_FIRST (1U << 16)193#define QUIRK_FLAG_SET_IFACE_FIRST (1U << 16)
192#define QUIRK_FLAG_GENERIC_IMPLICIT_FB (1U << 17)194#define QUIRK_FLAG_GENERIC_IMPLICIT_FB (1U << 17)
193#define QUIRK_FLAG_SKIP_IMPLICIT_FB (1U << 18)195#define QUIRK_FLAG_SKIP_IMPLICIT_FB (1U << 18)
196#define QUIRK_FLAG_IFACE_SKIP_CLOSE (1U << 19)
194 197
195#endif /* __USBAUDIO_H */198#endif /* __USBAUDIO_H */
tools/bpf/bpftool/common.c+3−0
@@ -300,6 +300,9 @@ int do_pin_any(int argc, char **argv, int (*get_fd)(int *, char ***)) · 299 unmodified lines
300 int err;300 int err;
301 int fd;301 int fd;
302 302
303 if (!REQ_ARGS(3))
304 return -EINVAL;
305
303 fd = get_fd(&argc, &argv);306 fd = get_fd(&argc, &argv);
304 if (fd < 0)307 if (fd < 0)
305 return fd;308 return fd;
tools/include/uapi/linux/in.h+1−0
@@ -20,6 +20,7 @@ · 19 unmodified lines
20#define _UAPI_LINUX_IN_H20#define _UAPI_LINUX_IN_H
21 21
22#include <linux/types.h>22#include <linux/types.h>
23#include <linux/stddef.h>
23#include <linux/libc-compat.h>24#include <linux/libc-compat.h>
24#include <linux/socket.h>25#include <linux/socket.h>
25 26
tools/include/uapi/linux/stddef.h+47−0
@@ -0,0 +1,47 @@
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2#ifndef _LINUX_STDDEF_H
3#define _LINUX_STDDEF_H
4
5
6
7#ifndef __always_inline
8#define __always_inline __inline__
9#endif
10
11/**
12 * __struct_group() - Create a mirrored named and anonyomous struct
13 *
14 * @TAG: The tag name for the named sub-struct (usually empty)
15 * @NAME: The identifier name of the mirrored sub-struct
16 * @ATTRS: Any struct attributes (usually empty)
17 * @MEMBERS: The member declarations for the mirrored structs
18 *
19 * Used to create an anonymous union of two structs with identical layout
20 * and size: one anonymous and one named. The former's members can be used
21 * normally without sub-struct naming, and the latter can be used to
22 * reason about the start, end, and size of the group of struct members.
23 * The named struct can also be explicitly tagged for layer reuse, as well
24 * as both having struct attributes appended.
25 */
26#define __struct_group(TAG, NAME, ATTRS, MEMBERS...) \
27 union { \
28 struct { MEMBERS } ATTRS; \
29 struct TAG { MEMBERS } ATTRS NAME; \
30 }
31
32/**
33 * __DECLARE_FLEX_ARRAY() - Declare a flexible array usable in a union
34 *
35 * @TYPE: The type of each flexible array element
36 * @NAME: The name of the flexible array member
37 *
38 * In order to have a flexible array member in a union or alone in a
39 * struct, it needs to be wrapped in an anonymous struct with at least 1
40 * named member, but that member can be empty.
41 */
42#define __DECLARE_FLEX_ARRAY(TYPE, NAME) \
43 struct { \
44 struct { } __empty_ ## NAME; \
45 TYPE NAME[]; \
46 }
47#endif
tools/kvm/kvm_stat/kvm_stat+83−15
@@ -41,11 +41,14 @@ VMX_EXIT_REASONS = { · 40 unmodified lines
41 'EXCEPTION_NMI': 0,41 'EXCEPTION_NMI': 0,
42 'EXTERNAL_INTERRUPT': 1,42 'EXTERNAL_INTERRUPT': 1,
43 'TRIPLE_FAULT': 2,43 'TRIPLE_FAULT': 2,
44 'PENDING_INTERRUPT': 7,44 'INIT_SIGNAL': 3,
45 'SIPI_SIGNAL': 4,
46 'INTERRUPT_WINDOW': 7,
45 'NMI_WINDOW': 8,47 'NMI_WINDOW': 8,
46 'TASK_SWITCH': 9,48 'TASK_SWITCH': 9,
47 'CPUID': 10,49 'CPUID': 10,
48 'HLT': 12,50 'HLT': 12,
51 'INVD': 13,
49 'INVLPG': 14,52 'INVLPG': 14,
50 'RDPMC': 15,53 'RDPMC': 15,
51 'RDTSC': 16,54 'RDTSC': 16,
@@ -65,26 +68,48 @@ VMX_EXIT_REASONS = { · 13 unmodified lines
65 'MSR_READ': 31,68 'MSR_READ': 31,
66 'MSR_WRITE': 32,69 'MSR_WRITE': 32,
67 'INVALID_STATE': 33,70 'INVALID_STATE': 33,
71 'MSR_LOAD_FAIL': 34,
68 'MWAIT_INSTRUCTION': 36,72 'MWAIT_INSTRUCTION': 36,
73 'MONITOR_TRAP_FLAG': 37,
69 'MONITOR_INSTRUCTION': 39,74 'MONITOR_INSTRUCTION': 39,
70 'PAUSE_INSTRUCTION': 40,75 'PAUSE_INSTRUCTION': 40,
71 'MCE_DURING_VMENTRY': 41,76 'MCE_DURING_VMENTRY': 41,
72 'TPR_BELOW_THRESHOLD': 43,77 'TPR_BELOW_THRESHOLD': 43,
73 'APIC_ACCESS': 44,78 'APIC_ACCESS': 44,
79 'EOI_INDUCED': 45,
80 'GDTR_IDTR': 46,
81 'LDTR_TR': 47,
74 'EPT_VIOLATION': 48,82 'EPT_VIOLATION': 48,
75 'EPT_MISCONFIG': 49,83 'EPT_MISCONFIG': 49,
84 'INVEPT': 50,
85 'RDTSCP': 51,
86 'PREEMPTION_TIMER': 52,
87 'INVVPID': 53,
76 'WBINVD': 54,88 'WBINVD': 54,
77 'XSETBV': 55,89 'XSETBV': 55,
78 'APIC_WRITE': 56,90 'APIC_WRITE': 56,
91 'RDRAND': 57,
79 'INVPCID': 58,92 'INVPCID': 58,
93 'VMFUNC': 59,
94 'ENCLS': 60,
95 'RDSEED': 61,
96 'PML_FULL': 62,
97 'XSAVES': 63,
98 'XRSTORS': 64,
99 'UMWAIT': 67,
100 'TPAUSE': 68,
101 'BUS_LOCK': 74,
102 'NOTIFY': 75,
80}103}
81 104
82SVM_EXIT_REASONS = {105SVM_EXIT_REASONS = {
83 'READ_CR0': 0x000,106 'READ_CR0': 0x000,
107 'READ_CR2': 0x002,
84 'READ_CR3': 0x003,108 'READ_CR3': 0x003,
85 'READ_CR4': 0x004,109 'READ_CR4': 0x004,
86 'READ_CR8': 0x008,110 'READ_CR8': 0x008,
87 'WRITE_CR0': 0x010,111 'WRITE_CR0': 0x010,
112 'WRITE_CR2': 0x012,
88 'WRITE_CR3': 0x013,113 'WRITE_CR3': 0x013,
89 'WRITE_CR4': 0x014,114 'WRITE_CR4': 0x014,
90 'WRITE_CR8': 0x018,115 'WRITE_CR8': 0x018,
@@ -105,6 +130,7 @@ SVM_EXIT_REASONS = { · 14 unmodified lines
105 'WRITE_DR6': 0x036,130 'WRITE_DR6': 0x036,
106 'WRITE_DR7': 0x037,131 'WRITE_DR7': 0x037,
107 'EXCP_BASE': 0x040,132 'EXCP_BASE': 0x040,
133 'LAST_EXCP': 0x05f,
108 'INTR': 0x060,134 'INTR': 0x060,
109 'NMI': 0x061,135 'NMI': 0x061,
110 'SMI': 0x062,136 'SMI': 0x062,
@@ -151,21 +177,45 @@ SVM_EXIT_REASONS = { · 40 unmodified lines
151 'MWAIT': 0x08b,177 'MWAIT': 0x08b,
152 'MWAIT_COND': 0x08c,178 'MWAIT_COND': 0x08c,
153 'XSETBV': 0x08d,179 'XSETBV': 0x08d,
180 'RDPRU': 0x08e,
181 'EFER_WRITE_TRAP': 0x08f,
182 'CR0_WRITE_TRAP': 0x090,
183 'CR1_WRITE_TRAP': 0x091,
184 'CR2_WRITE_TRAP': 0x092,
185 'CR3_WRITE_TRAP': 0x093,
186 'CR4_WRITE_TRAP': 0x094,
187 'CR5_WRITE_TRAP': 0x095,
188 'CR6_WRITE_TRAP': 0x096,
189 'CR7_WRITE_TRAP': 0x097,
190 'CR8_WRITE_TRAP': 0x098,
191 'CR9_WRITE_TRAP': 0x099,
192 'CR10_WRITE_TRAP': 0x09a,
193 'CR11_WRITE_TRAP': 0x09b,
194 'CR12_WRITE_TRAP': 0x09c,
195 'CR13_WRITE_TRAP': 0x09d,
196 'CR14_WRITE_TRAP': 0x09e,
197 'CR15_WRITE_TRAP': 0x09f,
198 'INVPCID': 0x0a2,
154 'NPF': 0x400,199 'NPF': 0x400,
200 'AVIC_INCOMPLETE_IPI': 0x401,
201 'AVIC_UNACCELERATED_ACCESS': 0x402,
202 'VMGEXIT': 0x403,
155}203}
156 204
157# EC definition of HSR (from arch/arm64/include/asm/kvm_arm.h)205# EC definition of HSR (from arch/arm64/include/asm/esr.h)
158AARCH64_EXIT_REASONS = {206AARCH64_EXIT_REASONS = {
159 'UNKNOWN': 0x00,207 'UNKNOWN': 0x00,
160 'WFI': 0x01,208 'WFx': 0x01,
161 'CP15_32': 0x03,209 'CP15_32': 0x03,
162 'CP15_64': 0x04,210 'CP15_64': 0x04,
163 'CP14_MR': 0x05,211 'CP14_MR': 0x05,
164 'CP14_LS': 0x06,212 'CP14_LS': 0x06,
165 'FP_ASIMD': 0x07,213 'FP_ASIMD': 0x07,
166 'CP10_ID': 0x08,214 'CP10_ID': 0x08,
215 'PAC': 0x09,
167 'CP14_64': 0x0C,216 'CP14_64': 0x0C,
168 'ILL_ISS': 0x0E,217 'BTI': 0x0D,
218 'ILL': 0x0E,
169 'SVC32': 0x11,219 'SVC32': 0x11,
170 'HVC32': 0x12,220 'HVC32': 0x12,
171 'SMC32': 0x13,221 'SMC32': 0x13,
@@ -173,21 +223,26 @@ AARCH64_EXIT_REASONS = { · 1 unmodified line
173 'HVC64': 0x16,223 'HVC64': 0x16,
174 'SMC64': 0x17,224 'SMC64': 0x17,
175 'SYS64': 0x18,225 'SYS64': 0x18,
176 'IABT': 0x20,226 'SVE': 0x19,
177 'IABT_HYP': 0x21,227 'ERET': 0x1A,
228 'FPAC': 0x1C,
229 'SME': 0x1D,
230 'IMP_DEF': 0x1F,
231 'IABT_LOW': 0x20,
232 'IABT_CUR': 0x21,
178 'PC_ALIGN': 0x22,233 'PC_ALIGN': 0x22,
179 'DABT': 0x24,234 'DABT_LOW': 0x24,
180 'DABT_HYP': 0x25,235 'DABT_CUR': 0x25,
181 'SP_ALIGN': 0x26,236 'SP_ALIGN': 0x26,
182 'FP_EXC32': 0x28,237 'FP_EXC32': 0x28,
183 'FP_EXC64': 0x2C,238 'FP_EXC64': 0x2C,
184 'SERROR': 0x2F,239 'SERROR': 0x2F,
185 'BREAKPT': 0x30,240 'BREAKPT_LOW': 0x30,
186 'BREAKPT_HYP': 0x31,241 'BREAKPT_CUR': 0x31,
187 'SOFTSTP': 0x32,242 'SOFTSTP_LOW': 0x32,
188 'SOFTSTP_HYP': 0x33,243 'SOFTSTP_CUR': 0x33,
189 'WATCHPT': 0x34,244 'WATCHPT_LOW': 0x34,
190 'WATCHPT_HYP': 0x35,245 'WATCHPT_CUR': 0x35,
191 'BKPT32': 0x38,246 'BKPT32': 0x38,
192 'VECTOR32': 0x3A,247 'VECTOR32': 0x3A,
193 'BRK64': 0x3C,248 'BRK64': 0x3C,
@@ -220,6 +275,19 @@ USERSPACE_EXIT_REASONS = { · 26 unmodified lines
220 'S390_TSCH': 22,275 'S390_TSCH': 22,
221 'EPR': 23,276 'EPR': 23,
222 'SYSTEM_EVENT': 24,277 'SYSTEM_EVENT': 24,
278 'S390_STSI': 25,
279 'IOAPIC_EOI': 26,
280 'HYPERV': 27,
281 'ARM_NISV': 28,
282 'X86_RDMSR': 29,
283 'X86_WRMSR': 30,
284 'DIRTY_RING_FULL': 31,
285 'AP_RESET_HOLD': 32,
286 'X86_BUS_LOCK': 33,
287 'XEN': 34,
288 'RISCV_SBI': 35,
289 'RISCV_CSR': 36,
290 'NOTIFY': 37,
223}291}
224 292
225IOCTL_NUMBERS = {293IOCTL_NUMBERS = {
@@ -1756,7 +1824,7 @@ def assign_globals(): · 1530 unmodified lines
1756 1824
1757 debugfs = ''1825 debugfs = ''
1758 for line in open('/proc/mounts'):1826 for line in open('/proc/mounts'):
1759 if line.split(' ')[0] == 'debugfs':1827 if line.split(' ')[2] == 'debugfs':
1760 debugfs = line.split(' ')[1]1828 debugfs = line.split(' ')[1]
1761 break1829 break
1762 if debugfs == '':1830 if debugfs == '':
tools/perf/.gitignore+1−0
@@ -4,6 +4,7 @@ PERF-GUI-VARS · 3 unmodified lines
4PERF-VERSION-FILE4PERF-VERSION-FILE
5FEATURE-DUMP5FEATURE-DUMP
6perf6perf
7!include/perf/
7perf-read-vdso328perf-read-vdso32
8perf-read-vdsox329perf-read-vdsox32
9perf-help10perf-help
tools/perf/tests/shell/test_brstack.sh+4−1
@@ -13,7 +13,10 @@ fi · 12 unmodified lines
13 13
14# skip the test if the hardware doesn't support branch stack sampling14# skip the test if the hardware doesn't support branch stack sampling
15# and if the architecture doesn't support filter types: any,save_type,u15# and if the architecture doesn't support filter types: any,save_type,u
16perf record -b -o- -B --branch-filter any,save_type,u true > /dev/null 2>&1 || exit 216if ! perf record -o- --no-buildid --branch-filter any,save_type,u -- true > /dev/null 2>&1 ; then
17 echo "skip: system doesn't support filter types: any,save_type,u"
18 exit 2
19fi
17 20
18TMPDIR=$(mktemp -d /tmp/__perf_test.program.XXXXX)21TMPDIR=$(mktemp -d /tmp/__perf_test.program.XXXXX)
19 22
tools/perf/util/parse-branch-options.c+3−1
@@ -102,8 +102,10 @@ parse_branch_stack(const struct option *opt, const char *str, int unset) · 101 unmodified lines
102 /*102 /*
103 * cannot set it twice, -b + --branch-filter for instance103 * cannot set it twice, -b + --branch-filter for instance
104 */104 */
105 if (*mode)105 if (*mode) {
106 pr_err("Error: Can't use --branch-any (-b) with --branch-filter (-j).\n");
106 return -1;107 return -1;
108 }
107 109
108 return parse_branch_str(str, mode);110 return parse_branch_str(str, mode);
109}111}
tools/perf/util/stat-display.c+4−2
@@ -273,7 +273,7 @@ static void new_line_csv(struct perf_stat_config *config, void *ctx) · 272 unmodified lines
273 273
274 fputc('\n', os->fh);274 fputc('\n', os->fh);
275 if (os->prefix)275 if (os->prefix)
276 fprintf(os->fh, "%s%s", os->prefix, config->csv_sep);276 fprintf(os->fh, "%s", os->prefix);
277 aggr_printout(config, os->evsel, os->id, os->nr);277 aggr_printout(config, os->evsel, os->id, os->nr);
278 for (i = 0; i < os->nfields; i++)278 for (i = 0; i < os->nfields; i++)
279 fputs(config->csv_sep, os->fh);279 fputs(config->csv_sep, os->fh);
@@ -559,7 +559,7 @@ static void printout(struct perf_stat_config *config, struct aggr_cpu_id id, int · 279 unmodified lines
559 [AGGR_CORE] = 2,559 [AGGR_CORE] = 2,
560 [AGGR_THREAD] = 1,560 [AGGR_THREAD] = 1,
561 [AGGR_UNSET] = 0,561 [AGGR_UNSET] = 0,
562 [AGGR_NODE] = 0,562 [AGGR_NODE] = 1,
563 };563 };
564 564
565 pm = config->metric_only ? print_metric_only_csv : print_metric_csv;565 pm = config->metric_only ? print_metric_only_csv : print_metric_csv;
@@ -1124,6 +1124,7 @@ static int aggr_header_lens[] = { · 558 unmodified lines
1124 [AGGR_SOCKET] = 12,1124 [AGGR_SOCKET] = 12,
1125 [AGGR_NONE] = 6,1125 [AGGR_NONE] = 6,
1126 [AGGR_THREAD] = 24,1126 [AGGR_THREAD] = 24,
1127 [AGGR_NODE] = 6,
1127 [AGGR_GLOBAL] = 0,1128 [AGGR_GLOBAL] = 0,
1128};1129};
1129 1130
@@ -1133,6 +1134,7 @@ static const char *aggr_header_csv[] = { · 3 unmodified lines
1133 [AGGR_SOCKET] = "socket,cpus",1134 [AGGR_SOCKET] = "socket,cpus",
1134 [AGGR_NONE] = "cpu,",1135 [AGGR_NONE] = "cpu,",
1135 [AGGR_THREAD] = "comm-pid,",1136 [AGGR_THREAD] = "comm-pid,",
1137 [AGGR_NODE] = "node,",
1136 [AGGR_GLOBAL] = ""1138 [AGGR_GLOBAL] = ""
1137};1139};
1138 1140
tools/testing/radix-tree/.gitignore+1−0
@@ -1,4 +1,5 @@
1# SPDX-License-Identifier: GPL-2.0-only1# SPDX-License-Identifier: GPL-2.0-only
2generated/bit-length.h
2generated/map-shift.h3generated/map-shift.h
3idr.c4idr.c
4idr-test5idr-test
tools/testing/radix-tree/Makefile+16−3
@@ -18,9 +18,14 @@ endif · 17 unmodified lines
18ifeq ($(BUILD), 32)18ifeq ($(BUILD), 32)
19 CFLAGS += -m3219 CFLAGS += -m32
20 LDFLAGS += -m3220 LDFLAGS += -m32
21LONG_BIT := 32
21endif22endif
22 23
23targets: generated/map-shift.h $(TARGETS)24ifndef LONG_BIT
25LONG_BIT := $(shell getconf LONG_BIT)
26endif
27
28targets: generated/map-shift.h generated/bit-length.h $(TARGETS)
24 29
25main: $(OFILES)30main: $(OFILES)
26 31
@@ -34,11 +39,11 @@ maple: $(CORE_OFILES) · 7 unmodified lines
34multiorder: multiorder.o $(CORE_OFILES)39multiorder: multiorder.o $(CORE_OFILES)
35 40
36clean:41clean:
37 $(RM) $(TARGETS) *.o radix-tree.c idr.c generated/map-shift.h42 $(RM) $(TARGETS) *.o radix-tree.c idr.c generated/map-shift.h generated/bit-length.h
38 43
39vpath %.c ../../lib44vpath %.c ../../lib
40 45
41$(OFILES): Makefile *.h */*.h generated/map-shift.h \46$(OFILES): Makefile *.h */*.h generated/map-shift.h generated/bit-length.h \
42 ../../include/linux/*.h \47 ../../include/linux/*.h \
43 ../../include/asm/*.h \48 ../../include/asm/*.h \
44 ../../../include/linux/xarray.h \49 ../../../include/linux/xarray.h \
@@ -61,3 +66,11 @@ generated/map-shift.h: · 16 unmodified lines
61 echo "#define XA_CHUNK_SHIFT $(SHIFT)" > \66 echo "#define XA_CHUNK_SHIFT $(SHIFT)" > \
62 generated/map-shift.h; \67 generated/map-shift.h; \
63 fi68 fi
69
70generated/bit-length.h: FORCE
71 @if ! grep -qws CONFIG_$(LONG_BIT)BIT generated/bit-length.h; then \
72 echo "Generating $@"; \
73 echo "#define CONFIG_$(LONG_BIT)BIT 1" > $@; \
74 fi
75
76FORCE: ;
tools/testing/radix-tree/generated/autoconf.h+1−1
@@ -1,2 +1,2 @@
1#include "bit-length.h"
1#define CONFIG_XARRAY_MULTI 12#define CONFIG_XARRAY_MULTI 1
2#define CONFIG_64BIT 1
tools/testing/radix-tree/linux.c+4−0
@@ -129,6 +129,10 @@ void kmem_cache_free_bulk(struct kmem_cache *cachep, size_t size, void **list) · 128 unmodified lines
129 pthread_mutex_unlock(&cachep->lock);129 pthread_mutex_unlock(&cachep->lock);
130}130}
131 131
132void kmem_cache_shrink(struct kmem_cache *cachep)
133{
134}
135
132int kmem_cache_alloc_bulk(struct kmem_cache *cachep, gfp_t gfp, size_t size,136int kmem_cache_alloc_bulk(struct kmem_cache *cachep, gfp_t gfp, size_t size,
133 void **p)137 void **p)
134{138{
tools/testing/radix-tree/maple.c+35770−0
@@ -2,11 +2,17 @@ · 1 unmodified line
2/*2/*
3 * maple_tree.c: Userspace shim for maple tree test-suite3 * maple_tree.c: Userspace shim for maple tree test-suite
4 * Copyright (c) 2018 Liam R. Howlett <Liam.Howlett@Oracle.com>4 * Copyright (c) 2018 Liam R. Howlett <Liam.Howlett@Oracle.com>
5 *
6 * Any tests that require internal knowledge of the tree or threads and other
7 * difficult to handle in kernel tests.
5 */8 */
6 9
7#define CONFIG_DEBUG_MAPLE_TREE10#define CONFIG_DEBUG_MAPLE_TREE
8#define CONFIG_MAPLE_SEARCH11#define CONFIG_MAPLE_SEARCH
12#define MAPLE_32BIT (MAPLE_NODE_SLOTS > 31)
9#include "test.h"13#include "test.h"
14#include <stdlib.h>
15#include <time.h>
10 16
11#define module_init(x)17#define module_init(x)
12#define module_exit(x)18#define module_exit(x)
@@ -18,6 +24,35717 @@ · 5 unmodified lines
18#undef CONFIG_DEBUG_MAPLE_TREE24#undef CONFIG_DEBUG_MAPLE_TREE
19#include "../../../lib/test_maple_tree.c"25#include "../../../lib/test_maple_tree.c"
20 26
27#define RCU_RANGE_COUNT 1000
28#define RCU_MT_BUG_ON(test, y) {if (y) { test->stop = true; } MT_BUG_ON(test->mt, y); }
29
30struct rcu_test_struct2 {
31 struct maple_tree *mt;
32
33 bool start;
34 bool stop;
35 unsigned int thread_count;
36
37 unsigned int seen_toggle;
38 unsigned int seen_added;
39 unsigned int seen_modified;
40 unsigned int seen_deleted;
41 int pause;
42
43 unsigned long index[RCU_RANGE_COUNT];
44 unsigned long last[RCU_RANGE_COUNT];
45};
46
47struct rcu_reader_struct {
48 unsigned int id;
49 int mod;
50 int del;
51 int flip;
52 int add;
53 int next;
54 struct rcu_test_struct2 *test;
55};
56
57/*
58 * check_new_node() - Check the creation of new nodes and error path
59 * verification.
60 */
61static noinline void check_new_node(struct maple_tree *mt)
62{
63
64 struct maple_node *mn, *mn2, *mn3;
65 struct maple_alloc *smn;
66 struct maple_node *nodes[100];
67 int i, j, total;
68
69 MA_STATE(mas, mt, 0, 0);
70
71 /* Try allocating 3 nodes */
72 mtree_lock(mt);
73 mt_set_non_kernel(0);
74 /* request 3 nodes to be allocated. */
75 mas_node_count(&mas, 3);
76 /* Allocation request of 3. */
77 MT_BUG_ON(mt, mas_alloc_req(&mas) != 3);
78 /* Allocate failed. */
79 MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM));
80 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
81
82 MT_BUG_ON(mt, mas_allocated(&mas) != 3);
83 mn = mas_pop_node(&mas);
84 MT_BUG_ON(mt, not_empty(mn));
85 MT_BUG_ON(mt, mn == NULL);
86 MT_BUG_ON(mt, mas.alloc == NULL);
87 MT_BUG_ON(mt, mas.alloc->slot[0] == NULL);
88 mas_push_node(&mas, mn);
89 mas_nomem(&mas, GFP_KERNEL); /* free */
90 mtree_unlock(mt);
91
92
93 /* Try allocating 1 node, then 2 more */
94 mtree_lock(mt);
95 /* Set allocation request to 1. */
96 mas_set_alloc_req(&mas, 1);
97 /* Check Allocation request of 1. */
98 MT_BUG_ON(mt, mas_alloc_req(&mas) != 1);
99 mas_set_err(&mas, -ENOMEM);
100 /* Validate allocation request. */
101 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
102 /* Eat the requested node. */
103 mn = mas_pop_node(&mas);
104 MT_BUG_ON(mt, not_empty(mn));
105 MT_BUG_ON(mt, mn == NULL);
106 MT_BUG_ON(mt, mn->slot[0] != NULL);
107 MT_BUG_ON(mt, mn->slot[1] != NULL);
108 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
109
110 ma_free_rcu(mn);
111 mas.node = MAS_START;
112 mas_nomem(&mas, GFP_KERNEL);
113 /* Allocate 3 nodes, will fail. */
114 mas_node_count(&mas, 3);
115 /* Drop the lock and allocate 3 nodes. */
116 mas_nomem(&mas, GFP_KERNEL);
117 /* Ensure 3 are allocated. */
118 MT_BUG_ON(mt, mas_allocated(&mas) != 3);
119 /* Allocation request of 0. */
120 MT_BUG_ON(mt, mas_alloc_req(&mas) != 0);
121
122 MT_BUG_ON(mt, mas.alloc == NULL);
123 MT_BUG_ON(mt, mas.alloc->slot[0] == NULL);
124 MT_BUG_ON(mt, mas.alloc->slot[1] == NULL);
125 /* Ensure we counted 3. */
126 MT_BUG_ON(mt, mas_allocated(&mas) != 3);
127 /* Free. */
128 mas_nomem(&mas, GFP_KERNEL);
129
130 /* Set allocation request to 1. */
131 mas_set_alloc_req(&mas, 1);
132 MT_BUG_ON(mt, mas_alloc_req(&mas) != 1);
133 mas_set_err(&mas, -ENOMEM);
134 /* Validate allocation request. */
135 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
136 MT_BUG_ON(mt, mas_allocated(&mas) != 1);
137 /* Check the node is only one node. */
138 mn = mas_pop_node(&mas);
139 MT_BUG_ON(mt, not_empty(mn));
140 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
141 MT_BUG_ON(mt, mn == NULL);
142 MT_BUG_ON(mt, mn->slot[0] != NULL);
143 MT_BUG_ON(mt, mn->slot[1] != NULL);
144 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
145 mas_push_node(&mas, mn);
146 MT_BUG_ON(mt, mas_allocated(&mas) != 1);
147 MT_BUG_ON(mt, mas.alloc->node_count);
148
149 mas_set_alloc_req(&mas, 2); /* request 2 more. */
150 MT_BUG_ON(mt, mas_alloc_req(&mas) != 2);
151 mas_set_err(&mas, -ENOMEM);
152 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
153 MT_BUG_ON(mt, mas_allocated(&mas) != 3);
154 MT_BUG_ON(mt, mas.alloc == NULL);
155 MT_BUG_ON(mt, mas.alloc->slot[0] == NULL);
156 MT_BUG_ON(mt, mas.alloc->slot[1] == NULL);
157 for (i = 2; i >= 0; i--) {
158 mn = mas_pop_node(&mas);
159 MT_BUG_ON(mt, mas_allocated(&mas) != i);
160 MT_BUG_ON(mt, !mn);
161 MT_BUG_ON(mt, not_empty(mn));
162 ma_free_rcu(mn);
163 }
164
165 total = 64;
166 mas_set_alloc_req(&mas, total); /* request 2 more. */
167 MT_BUG_ON(mt, mas_alloc_req(&mas) != total);
168 mas_set_err(&mas, -ENOMEM);
169 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
170 for (i = total; i > 0; i--) {
171 unsigned int e = 0; /* expected node_count */
172
173 if (!MAPLE_32BIT) {
174 if (i >= 35)
175 e = i - 35;
176 else if (i >= 5)
177 e = i - 5;
178 else if (i >= 2)
179 e = i - 2;
180 } else {
181 if (i >= 4)
182 e = i - 4;
183 else if (i == 3)
184 e = i - 2;
185 else
186 e = 0;
187 }
188
189 MT_BUG_ON(mt, mas.alloc->node_count != e);
190 mn = mas_pop_node(&mas);
191 MT_BUG_ON(mt, not_empty(mn));
192 MT_BUG_ON(mt, mas_allocated(&mas) != i - 1);
193 MT_BUG_ON(mt, !mn);
194 ma_free_rcu(mn);
195 }
196
197 total = 100;
198 for (i = 1; i < total; i++) {
199 mas_set_alloc_req(&mas, i);
200 mas_set_err(&mas, -ENOMEM);
201 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
202 for (j = i; j > 0; j--) {
203 mn = mas_pop_node(&mas);
204 MT_BUG_ON(mt, mas_allocated(&mas) != j - 1);
205 MT_BUG_ON(mt, !mn);
206 MT_BUG_ON(mt, not_empty(mn));
207 mas_push_node(&mas, mn);
208 MT_BUG_ON(mt, mas_allocated(&mas) != j);
209 mn = mas_pop_node(&mas);
210 MT_BUG_ON(mt, not_empty(mn));
211 MT_BUG_ON(mt, mas_allocated(&mas) != j - 1);
212 ma_free_rcu(mn);
213 }
214 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
215
216 mas_set_alloc_req(&mas, i);
217 mas_set_err(&mas, -ENOMEM);
218 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
219 for (j = 0; j <= i/2; j++) {
220 MT_BUG_ON(mt, mas_allocated(&mas) != i - j);
221 nodes[j] = mas_pop_node(&mas);
222 MT_BUG_ON(mt, mas_allocated(&mas) != i - j - 1);
223 }
224
225 while (j) {
226 j--;
227 mas_push_node(&mas, nodes[j]);
228 MT_BUG_ON(mt, mas_allocated(&mas) != i - j);
229 }
230 MT_BUG_ON(mt, mas_allocated(&mas) != i);
231 for (j = 0; j <= i/2; j++) {
232 MT_BUG_ON(mt, mas_allocated(&mas) != i - j);
233 mn = mas_pop_node(&mas);
234 MT_BUG_ON(mt, not_empty(mn));
235 ma_free_rcu(mn);
236 MT_BUG_ON(mt, mas_allocated(&mas) != i - j - 1);
237 }
238 MT_BUG_ON(mt, mas_nomem(&mas, GFP_KERNEL));
239
240 }
241
242 /* Set allocation request. */
243 total = 500;
244 mas_node_count(&mas, total);
245 /* Drop the lock and allocate the nodes. */
246 mas_nomem(&mas, GFP_KERNEL);
247 MT_BUG_ON(mt, !mas.alloc);
248 i = 1;
249 smn = mas.alloc;
250 while (i < total) {
251 for (j = 0; j < MAPLE_ALLOC_SLOTS; j++) {
252 i++;
253 MT_BUG_ON(mt, !smn->slot[j]);
254 if (i == total)
255 break;
256 }
257 smn = smn->slot[0]; /* next. */
258 }
259 MT_BUG_ON(mt, mas_allocated(&mas) != total);
260 mas_nomem(&mas, GFP_KERNEL); /* Free. */
261
262 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
263 for (i = 1; i < 128; i++) {
264 mas_node_count(&mas, i); /* Request */
265 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
266 MT_BUG_ON(mt, mas_allocated(&mas) != i); /* check request filled */
267 for (j = i; j > 0; j--) { /*Free the requests */
268 mn = mas_pop_node(&mas); /* get the next node. */
269 MT_BUG_ON(mt, mn == NULL);
270 MT_BUG_ON(mt, not_empty(mn));
271 ma_free_rcu(mn);
272 }
273 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
274 }
275
276 for (i = 1; i < MAPLE_NODE_MASK + 1; i++) {
277 MA_STATE(mas2, mt, 0, 0);
278 mas_node_count(&mas, i); /* Request */
279 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
280 MT_BUG_ON(mt, mas_allocated(&mas) != i); /* check request filled */
281 for (j = 1; j <= i; j++) { /* Move the allocations to mas2 */
282 mn = mas_pop_node(&mas); /* get the next node. */
283 MT_BUG_ON(mt, mn == NULL);
284 MT_BUG_ON(mt, not_empty(mn));
285 mas_push_node(&mas2, mn);
286 MT_BUG_ON(mt, mas_allocated(&mas2) != j);
287 }
288 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
289 MT_BUG_ON(mt, mas_allocated(&mas2) != i);
290
291 for (j = i; j > 0; j--) { /*Free the requests */
292 MT_BUG_ON(mt, mas_allocated(&mas2) != j);
293 mn = mas_pop_node(&mas2); /* get the next node. */
294 MT_BUG_ON(mt, mn == NULL);
295 MT_BUG_ON(mt, not_empty(mn));
296 ma_free_rcu(mn);
297 }
298 MT_BUG_ON(mt, mas_allocated(&mas2) != 0);
299 }
300
301
302 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
303 mas_node_count(&mas, MAPLE_ALLOC_SLOTS + 1); /* Request */
304 MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM));
305 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
306 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1);
307 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1);
308
309 mn = mas_pop_node(&mas); /* get the next node. */
310 MT_BUG_ON(mt, mn == NULL);
311 MT_BUG_ON(mt, not_empty(mn));
312 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS);
313 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 2);
314
315 mas_push_node(&mas, mn);
316 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1);
317 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1);
318
319 /* Check the limit of pop/push/pop */
320 mas_node_count(&mas, MAPLE_ALLOC_SLOTS + 2); /* Request */
321 MT_BUG_ON(mt, mas_alloc_req(&mas) != 1);
322 MT_BUG_ON(mt, mas.node != MA_ERROR(-ENOMEM));
323 MT_BUG_ON(mt, !mas_nomem(&mas, GFP_KERNEL));
324 MT_BUG_ON(mt, mas_alloc_req(&mas));
325 MT_BUG_ON(mt, mas.alloc->node_count);
326 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 2);
327 mn = mas_pop_node(&mas);
328 MT_BUG_ON(mt, not_empty(mn));
329 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 1);
330 MT_BUG_ON(mt, mas.alloc->node_count != MAPLE_ALLOC_SLOTS - 1);
331 mas_push_node(&mas, mn);
332 MT_BUG_ON(mt, mas.alloc->node_count);
333 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS + 2);
334 mn = mas_pop_node(&mas);
335 MT_BUG_ON(mt, not_empty(mn));
336 ma_free_rcu(mn);
337 for (i = 1; i <= MAPLE_ALLOC_SLOTS + 1; i++) {
338 mn = mas_pop_node(&mas);
339 MT_BUG_ON(mt, not_empty(mn));
340 ma_free_rcu(mn);
341 }
342 MT_BUG_ON(mt, mas_allocated(&mas) != 0);
343
344
345 for (i = 3; i < MAPLE_NODE_MASK * 3; i++) {
346 mas.node = MA_ERROR(-ENOMEM);
347 mas_node_count(&mas, i); /* Request */
348 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
349 mn = mas_pop_node(&mas); /* get the next node. */
350 mas_push_node(&mas, mn); /* put it back */
351 mas_destroy(&mas);
352
353 mas.node = MA_ERROR(-ENOMEM);
354 mas_node_count(&mas, i); /* Request */
355 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
356 mn = mas_pop_node(&mas); /* get the next node. */
357 mn2 = mas_pop_node(&mas); /* get the next node. */
358 mas_push_node(&mas, mn); /* put them back */
359 mas_push_node(&mas, mn2);
360 mas_destroy(&mas);
361
362 mas.node = MA_ERROR(-ENOMEM);
363 mas_node_count(&mas, i); /* Request */
364 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
365 mn = mas_pop_node(&mas); /* get the next node. */
366 mn2 = mas_pop_node(&mas); /* get the next node. */
367 mn3 = mas_pop_node(&mas); /* get the next node. */
368 mas_push_node(&mas, mn); /* put them back */
369 mas_push_node(&mas, mn2);
370 mas_push_node(&mas, mn3);
371 mas_destroy(&mas);
372
373 mas.node = MA_ERROR(-ENOMEM);
374 mas_node_count(&mas, i); /* Request */
375 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
376 mn = mas_pop_node(&mas); /* get the next node. */
377 ma_free_rcu(mn);
378 mas_destroy(&mas);
379
380 mas.node = MA_ERROR(-ENOMEM);
381 mas_node_count(&mas, i); /* Request */
382 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
383 mn = mas_pop_node(&mas); /* get the next node. */
384 ma_free_rcu(mn);
385 mn = mas_pop_node(&mas); /* get the next node. */
386 ma_free_rcu(mn);
387 mn = mas_pop_node(&mas); /* get the next node. */
388 ma_free_rcu(mn);
389 mas_destroy(&mas);
390 }
391
392 mas.node = MA_ERROR(-ENOMEM);
393 mas_node_count(&mas, 5); /* Request */
394 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
395 MT_BUG_ON(mt, mas_allocated(&mas) != 5);
396 mas.node = MA_ERROR(-ENOMEM);
397 mas_node_count(&mas, 10); /* Request */
398 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
399 mas.node = MAS_START;
400 MT_BUG_ON(mt, mas_allocated(&mas) != 10);
401 mas_destroy(&mas);
402
403 mas.node = MA_ERROR(-ENOMEM);
404 mas_node_count(&mas, MAPLE_ALLOC_SLOTS - 1); /* Request */
405 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
406 MT_BUG_ON(mt, mas_allocated(&mas) != MAPLE_ALLOC_SLOTS - 1);
407 mas.node = MA_ERROR(-ENOMEM);
408 mas_node_count(&mas, 10 + MAPLE_ALLOC_SLOTS - 1); /* Request */
409 mas_nomem(&mas, GFP_KERNEL); /* Fill request */
410 mas.node = MAS_START;
411 MT_BUG_ON(mt, mas_allocated(&mas) != 10 + MAPLE_ALLOC_SLOTS - 1);
412 mas_destroy(&mas);
413
414 mtree_unlock(mt);
415}
416
417/*
418 * Check erasing including RCU.
419 */
420static noinline void check_erase(struct maple_tree *mt, unsigned long index,
421 void *ptr)
422{
423 MT_BUG_ON(mt, mtree_test_erase(mt, index) != ptr);
424}
425
426#define erase_check_load(mt, i) check_load(mt, set[i], entry[i%2])
427#define erase_check_insert(mt, i) check_insert(mt, set[i], entry[i%2])
428#define erase_check_erase(mt, i) check_erase(mt, set[i], entry[i%2])
429
430static noinline void check_erase_testset(struct maple_tree *mt)
431{
432 unsigned long set[] = { 5015, 5014, 5017, 25, 1000,
433 1001, 1002, 1003, 1005, 0,
434 6003, 6002, 6008, 6012, 6015,
435 7003, 7002, 7008, 7012, 7015,
436 8003, 8002, 8008, 8012, 8015,
437 9003, 9002, 9008, 9012, 9015,
438 10003, 10002, 10008, 10012, 10015,
439 11003, 11002, 11008, 11012, 11015,
440 12003, 12002, 12008, 12012, 12015,
441 13003, 13002, 13008, 13012, 13015,
442 14003, 14002, 14008, 14012, 14015,
443 15003, 15002, 15008, 15012, 15015,
444 };
445
446
447 void *ptr = &set;
448 void *entry[2] = { ptr, mt };
449 void *root_node;
450
451
452 rcu_register_thread();
453 mt_set_in_rcu(mt);
454 for (int i = 0; i < 4; i++)
455 erase_check_insert(mt, i);
456 for (int i = 0; i < 4; i++)
457 erase_check_load(mt, i);
458
459 mt_set_non_kernel(2);
460 erase_check_erase(mt, 1);
461 erase_check_load(mt, 0);
462 check_load(mt, set[1], NULL);
463 for (int i = 2; i < 4; i++)
464 erase_check_load(mt, i);
465
466
467 erase_check_erase(mt, 2);
468 erase_check_load(mt, 0);
469 check_load(mt, set[1], NULL);
470 check_load(mt, set[2], NULL);
471
472 erase_check_insert(mt, 1);
473 erase_check_insert(mt, 2);
474
475 for (int i = 0; i < 4; i++)
476 erase_check_load(mt, i);
477
478 /* Check erase and load without an allocation. */
479 erase_check_load(mt, 3);
480 erase_check_erase(mt, 1);
481 erase_check_load(mt, 0);
482 check_load(mt, set[1], NULL);
483 for (int i = 2; i < 4; i++)
484 erase_check_load(mt, i);
485
486 /*
487 * Set the newly erased node. This will produce a different allocated
488 * node to avoid busy slots.
489 */
490 root_node = mt->ma_root;
491 erase_check_insert(mt, 1);
492
493 erase_check_load(mt, 0);
494 check_load(mt, 5016, NULL);
495 erase_check_load(mt, 1);
496 check_load(mt, 5013, NULL);
497 erase_check_load(mt, 2);
498 check_load(mt, 5018, NULL);
499 erase_check_load(mt, 3);
500
501 erase_check_erase(mt, 2); /* erase 5017 to check append */
502 erase_check_load(mt, 0);
503 check_load(mt, 5016, NULL);
504 erase_check_load(mt, 1);
505 check_load(mt, 5013, NULL);
506 check_load(mt, set[2], NULL);
507 check_load(mt, 5018, NULL);
508
509 erase_check_load(mt, 3);
510
511 root_node = mt->ma_root;
512 erase_check_insert(mt, 2);
513
514 erase_check_load(mt, 0);
515 check_load(mt, 5016, NULL);
516 erase_check_load(mt, 1);
517 check_load(mt, 5013, NULL);
518 erase_check_load(mt, 2);
519 check_load(mt, 5018, NULL);
520 erase_check_load(mt, 3);
521
522 mt_set_non_kernel(1);
523 erase_check_erase(mt, 2); /* erase 5017 to check append */
524 erase_check_load(mt, 0);
525 check_load(mt, 5016, NULL);
526 check_load(mt, set[2], NULL);
527 erase_check_erase(mt, 0); /* erase 5015 to check append */
528 check_load(mt, set[0], NULL);
529 check_load(mt, 5016, NULL);
530 erase_check_insert(mt, 4); /* 1000 < Should not split. */
531 check_load(mt, set[0], NULL);
532 check_load(mt, 5016, NULL);
533 erase_check_load(mt, 1);
534 check_load(mt, 5013, NULL);
535 check_load(mt, set[2], NULL);
536 check_load(mt, 5018, NULL);
537 erase_check_load(mt, 4);
538 check_load(mt, 999, NULL);
539 check_load(mt, 1001, NULL);
540 erase_check_load(mt, 4);
541 if (mt_in_rcu(mt))
542 MT_BUG_ON(mt, root_node == mt->ma_root);
543 else
544 MT_BUG_ON(mt, root_node != mt->ma_root);
545
546 /* Should not have split. */
547 MT_BUG_ON(mt, !mte_is_leaf(mt->ma_root));
548
549
550 /* Coalesce testing */
551 erase_check_insert(mt, 0);
552 erase_check_insert(mt, 2);
553
554 for (int i = 5; i < 25; i++) {
555 erase_check_insert(mt, i);
556 for (int j = i; j >= 0; j--)
557 erase_check_load(mt, j);
558 }
559
560 erase_check_erase(mt, 14); /*6015 */
561 for (int i = 0; i < 25; i++) {
562 if (i == 14)
563 check_load(mt, set[i], NULL);
564 else
565 erase_check_load(mt, i);
566 }
567 erase_check_erase(mt, 16); /*7002 */
568 for (int i = 0; i < 25; i++) {
569 if (i == 16 || i == 14)
570 check_load(mt, set[i], NULL);
571 else
572 erase_check_load(mt, i);
573 }
574
575
576 mt_set_non_kernel(1);
577 erase_check_erase(mt, 13); /*6012 */
578 for (int i = 0; i < 25; i++) {
579 if (i == 16 || i == 14 || i == 13)
580 check_load(mt, set[i], NULL);
581 else
582 erase_check_load(mt, i);
583 }
584
585 erase_check_erase(mt, 15); /*7003 */
586 for (int i = 0; i < 25; i++) {
587 if (i <= 16 && i >= 13)
588 check_load(mt, set[i], NULL);
589 else
590 erase_check_load(mt, i);
591 }
592
593 mt_set_non_kernel(2);
594 erase_check_erase(mt, 17); /*7008 *should* cause coalesce. */
595 for (int i = 0; i < 25; i++) {
596 if (i <= 17 && i >= 13)
597 check_load(mt, set[i], NULL);
598 else
599 erase_check_load(mt, i);
600 }
601
602 erase_check_erase(mt, 18); /*7012 */
603 for (int i = 0; i < 25; i++) {
604 if (i <= 18 && i >= 13)
605 check_load(mt, set[i], NULL);
606 else
607 erase_check_load(mt, i);
608 }
609
610 mt_set_non_kernel(2);
611 erase_check_erase(mt, 19); /*7015 */
612 for (int i = 0; i < 25; i++) {
613 if (i <= 19 && i >= 13)
614 check_load(mt, set[i], NULL);
615 else
616 erase_check_load(mt, i);
617 }
618
619 erase_check_erase(mt, 20); /*8003 */
620 for (int i = 0; i < 25; i++) {
621 if (i <= 20 && i >= 13)
622 check_load(mt, set[i], NULL);
623 else
624 erase_check_load(mt, i);
625 }
626
627 erase_check_erase(mt, 21); /*8002 */
628 for (int i = 0; i < 25; i++) {
629 if (i <= 21 && i >= 13)
630 check_load(mt, set[i], NULL);
631 else
632 erase_check_load(mt, i);
633 }
634
635 mt_set_non_kernel(2);
636 erase_check_erase(mt, 22); /*8008 */
637 for (int i = 0; i < 25; i++) {
638 if (i <= 22 && i >= 13)
639 check_load(mt, set[i], NULL);
640 else
641 erase_check_load(mt, i);
642 }
643 for (int i = 23; i < 25; i++)
644 erase_check_erase(mt, i);
645
646 for (int i = 0; i < 25; i++) {
647 if (i <= 25 && i >= 13)
648 check_load(mt, set[i], NULL);
649 else
650 erase_check_load(mt, i);
651 }
652
653 /* Shrinking tree test. */
654
655 for (int i = 13; i < ARRAY_SIZE(set); i++)
656 erase_check_insert(mt, i);
657
658 mt_set_non_kernel(99);
659 for (int i = 18; i < ARRAY_SIZE(set); i++) {
660 erase_check_erase(mt, i);
661 for (int j = 0; j < ARRAY_SIZE(set); j++) {
662 if (j < 18 || j > i)
663 erase_check_load(mt, j);
664 else
665 check_load(mt, set[j], NULL);
666 }
667 }
668 mt_set_non_kernel(35);
669 for (int i = 0; i < 18; i++) {
670 erase_check_erase(mt, i);
671 for (int j = 0; j < ARRAY_SIZE(set); j++) {
672 if (j < 18 && j > i)
673 erase_check_load(mt, j);
674 else
675 check_load(mt, set[j], NULL);
676 }
677 }
678 erase_check_insert(mt, 8);
679 erase_check_insert(mt, 9);
680 erase_check_erase(mt, 8);
681 rcu_unregister_thread();
682}
683
684/* End of erase testing */
685
686/* VM Generated Crashes - uses its own tree walk for verification */
687#define erase_check_store_range(mt, a, i, ptr) mtree_test_store_range(mt, \
688 a[(i)], a[(i + 1)], ptr)
689#define STORE 1
690#define SNULL 2
691#define ERASE 3
692#define ec_type_str(x) \
693 (((x) == STORE) ? \
694 "STORE" : \
695 (((x) == SNULL) ? \
696 "SNULL" : "ERASE") \
697 )
698#define check_erase2_debug 0
699
700/* Calculate the overwritten entries. */
701int mas_ce2_over_count(struct ma_state *mas_start, struct ma_state *mas_end,
702 void *s_entry, unsigned long s_min,
703 void *e_entry, unsigned long e_max,
704 unsigned long *set, int i, bool null_entry)
705{
706 int count = 0, span = 0;
707 unsigned long retry = 0;
708 void *entry;
709 struct ma_state tmp;
710
711
712 /* count slots */
713 memcpy(&tmp, mas_start, sizeof(tmp));
714 entry = mas_next(&tmp, mas_end->last);
715 while (entry) {
716 BUG_ON(retry > 50); /* stop infinite retry on testing. */
717 if (xa_is_zero(s_entry)) {
718 retry++;
719 continue;
720 }
721 count++;
722 span++;
723 entry = mas_next(&tmp, mas_end->last);
724 }
725
726 if (null_entry) {
727 /* Check splitting end. */
728 if (e_entry && (e_max > mas_end->last))
729 count--;
730
731 /* check overwrite of entire start */
732 if (s_entry && (s_min == mas_start->index))
733 count++;
734 } else { /* !null_entry (store) */
735 bool esplit = e_max > mas_end->last;
736 bool ssplit = s_min != mas_start->index;
737
738 if (s_entry && e_entry) {
739 if (esplit && ssplit)
740 count--;
741 else if (ssplit)
742 count--;
743 else if (esplit) {
744 if (span)
745 count--;
746 }
747 } else if (s_entry && !e_entry) {
748 if (ssplit)
749 count--;
750 } else if (!s_entry && e_entry) {
751 if (esplit)
752 count--;
753 count--;
754 } else {
755 count--;
756 }
757 }
758 return count;
759}
760
761/*
762 * mas_node_walk() - Walk a maple node to offset of the index.
763 * @mas: The maple state
764 * @type: The maple node type
765 * @*range_min: Pointer to store the minimum range of the offset
766 * @*range_max: Pointer to store the maximum range of the offset
767 *
768 * The offset will be stored in the maple state.
769 *
770 */
771static inline void mas_node_walk(struct ma_state *mas, struct maple_node *node,
772 enum maple_type type, unsigned long *range_min,
773 unsigned long *range_max)
774
775{
776 unsigned long *pivots;
777 unsigned char count;
778 unsigned long prev, max;
779 unsigned char offset;
780 unsigned long index;
781
782 if (unlikely(ma_is_dense(type))) {
783 (*range_max) = (*range_min) = mas->index;
784 if (unlikely(ma_dead_node(node)))
785 return;
786
787 mas->offset = mas->index = mas->min;
788 return;
789 }
790
791 pivots = ma_pivots(node, type);
792 max = pivots[0];
793 if (unlikely(ma_dead_node(node)))
794 return;
795
796 offset = 0;
797 prev = mas->min;
798 index = mas->index;
799 if (unlikely(index <= max))
800 goto offset_zero;
801
802 count = mt_pivots[type];
803 while (++offset < count) {
804 prev = max;
805 max = pivots[offset];
806 if (unlikely(ma_dead_node(node)))
807 return;
808
809 if (index <= max)
810 goto offset_found;
811 else if (unlikely(!max))
812 goto mas_max;
813 }
814
815 prev = max;
816mas_max:
817 max = mas->max;
818offset_found:
819 prev++;
820offset_zero:
821 mas->offset = offset;
822 if (ma_is_leaf(type)) {
823 *range_max = max;
824 *range_min = prev;
825 } else {
826 mas->max = max;
827 mas->min = prev;
828 }
829}
830
831/*
832 * mas_descend_walk(): Locates a value and sets the mas->node and slot
833 * accordingly. range_min and range_max are set to the range which the entry is
834 * valid.
835 * @mas: The maple state
836 * @*range_min: A pointer to store the minimum of the range
837 * @*range_max: A pointer to store the maximum of the range
838 *
839 * Check mas->node is still valid on return of any value.
840 *
841 * Return: true if pointing to a valid node and offset. False otherwise.
842 */
843static inline bool mas_descend_walk(struct ma_state *mas,
844 unsigned long *range_min, unsigned long *range_max)
845{
846 struct maple_enode *next;
847 struct maple_node *node;
848 enum maple_type type;
849
850 next = mas->node;
851 while (true) {
852 node = mte_to_node(next);
853 type = mte_node_type(next);
854 mas_node_walk(mas, node, type, range_min, range_max);
855 next = mas_slot(mas, ma_slots(node, type), mas->offset);
856 if (unlikely(ma_dead_node(node)))
857 return false;
858
859 if (unlikely(ma_is_leaf(type)))
860 return true;
861
862 /* Descend. */
863 mas->node = next;
864 }
865 return false;
866}
867
868/*
869 * mas_tree_walk() - Walk to @mas->index and set the range values.
870 * @mas: The maple state.
871 * @*range_min: The minimum range to be set.
872 * @*range_max: The maximum range to be set.
873 *
874 * Ranges are only valid if there is a valid entry at @mas->index.
875 *
876 * Return: True if a value exists, false otherwise.
877 */
878static inline bool mas_tree_walk(struct ma_state *mas, unsigned long *range_min,
879 unsigned long *range_max)
880{
881 bool ret;
882
883retry:
884 ret = false;
885 mas_start(mas);
886 if (mas_is_none(mas))
887 goto not_found;
888
889 if (mas_is_ptr(mas)) {
890 *range_min = *range_max = 0;
891 if (!mas->index)
892 return true;
893
894 goto not_found;
895 }
896
897 ret = mas_descend_walk(mas, range_min, range_max);
898 if (unlikely(mte_dead_node(mas->node))) {
899 mas->node = MAS_START;
900 goto retry;
901 }
902
903 return ret;
904
905not_found:
906 mas->offset = MAPLE_NODE_SLOTS;
907 return false;
908}
909
910static inline void *mas_range_load(struct ma_state *mas,
911 unsigned long *range_min, unsigned long *range_max)
912
913{
914 void *entry = NULL;
915 unsigned long index = mas->index;
916
917 if (mas_is_none(mas) || mas_is_paused(mas))
918 mas->node = MAS_START;
919retry:
920 if (mas_tree_walk(mas, range_min, range_max))
921 if (unlikely(mas->node == MAS_ROOT))
922 return mas_root(mas);
923
924 if (likely(mas->offset != MAPLE_NODE_SLOTS))
925 entry = mas_get_slot(mas, mas->offset);
926
927 if (mas_dead_node(mas, index))
928 goto retry;
929
930 return entry;
931}
932
933#if defined(CONFIG_64BIT)
934static noinline void check_erase2_testset(struct maple_tree *mt,
935 unsigned long *set, unsigned long size)
936{
937 int entry_count = 0;
938 int check = 0;
939 void *foo;
940 unsigned long addr = 0;
941 void *s_entry = NULL, *e_entry = NULL;
942
943 MA_STATE(mas, mt, 0, 0);
944
945 for (int i = 0; i < size; i += 3) {
946 unsigned long s_min, s_max;
947 unsigned long e_min, e_max;
948 void *value = NULL;
949
950 MA_STATE(mas_start, mt, set[i+1], set[i+1]);
951 MA_STATE(mas_end, mt, set[i+2], set[i+2]);
952 mt_set_non_kernel(127);
953#if check_erase2_debug
954 pr_err("%s: %d %s %lu - %lu\n", __func__, i,
955 ec_type_str(set[i]),
956 set[i+1], set[i+2]);
957#endif
958 s_entry = mas_range_load(&mas_start, &s_min, &s_max);
959 e_entry = mas_range_load(&mas_end, &e_min, &e_max);
960
961 switch (set[i]) {
962 case SNULL:
963 if ((s_min == set[i+1]) && (s_max == set[i+2])) {
964 if (s_entry)
965 entry_count--;
966 } else if ((s_min != set[i+1]) && (s_max != set[i+2])) {
967 entry_count++;
968 } else if ((mas_start.node != mas_end.node) ||
969 (mas_start.offset != mas_end.offset)) {
970 entry_count -=
971 mas_ce2_over_count(&mas_start, &mas_end,
972 s_entry, s_min,
973 e_entry, e_max, set, i,
974 true);
975 }
976
977
978 erase_check_store_range(mt, set, i + 1, value);
979 break;
980 case STORE:
981 value = xa_mk_value(set[i + 1]);
982 if (mas_start.offset > mt_slot_count(mas_start.node)) {
983 entry_count++; /* appending an entry. */
984 } else if ((s_min == e_min) && (s_max == e_max)) {
985 if (!entry_count)
986 entry_count++;
987
988 else if (s_entry) {
989 if (e_max > mas_end.last)
990 entry_count++;
991
992 if (s_min < mas_start.index)
993 entry_count++;
994
995 } else {
996 entry_count++;
997 }
998 } else {
999 entry_count -=
1000 mas_ce2_over_count(&mas_start, &mas_end,
1001 s_entry, s_min,
1002 e_entry, e_max, set, i,
1003 false);
1004 }
1005
1006 erase_check_store_range(mt, set, i + 1, value);
1007 break;
1008 case ERASE:
1009 if (!s_entry)
1010 break;
1011 check_erase(mt, set[i+1], xa_mk_value(set[i+1]));
1012 entry_count--;
1013 break;
1014 }
1015 mt_validate(mt);
1016 if (entry_count)
1017 MT_BUG_ON(mt, !mt_height(mt));
1018#if check_erase2_debug > 1
1019 mt_dump(mt);
1020#endif
1021#if check_erase2_debug
1022 pr_err("Done\n");
1023#endif
1024
1025 check = 0;
1026 addr = 0;
1027 mt_for_each(mt, foo, addr, ULONG_MAX) {
1028 check++;
1029#if check_erase2_debug > 2
1030 pr_err("mt: %lu -> %p (%d)\n", addr+1, foo, check);
1031#endif
1032 if (check > entry_count)
1033 break;
1034 }
1035
1036#if check_erase2_debug > 2
1037 pr_err("mt_for_each %d and count %d\n", check, entry_count);
1038#endif
1039
1040 MT_BUG_ON(mt, check != entry_count);
1041
1042 check = 0;
1043 addr = 0;
1044 mas_reset(&mas);
1045 mas.index = 0;
1046 rcu_read_lock();
1047 mas_for_each(&mas, foo, ULONG_MAX) {
1048 if (xa_is_zero(foo)) {
1049 if (addr == mas.index) {
1050 mt_dump(mas.tree);
1051 pr_err("retry failed %lu - %lu\n",
1052 mas.index, mas.last);
1053 MT_BUG_ON(mt, 1);
1054 }
1055 addr = mas.index;
1056 continue;
1057 }
1058#if check_erase2_debug > 2
1059 pr_err("mas: %lu -> %p\n", mas.index, foo);
1060#endif
1061 check++;
1062 if (check > entry_count)
1063 break;
1064 }
1065 rcu_read_unlock();
1066#if check_erase2_debug > 2
1067 pr_err("mas_for_each %d and count %d\n", check, entry_count);
1068 mt_validate(mt);
1069#endif
1070
1071 MT_BUG_ON(mt, check != entry_count);
1072
1073 MT_BUG_ON(mt, mtree_load(mas.tree, 0) != NULL);
1074 }
1075}
1076
1077
1078/* These tests were pulled from KVM tree modifications which failed. */
1079static noinline void check_erase2_sets(struct maple_tree *mt)
1080{
1081 void *entry;
1082 unsigned long start = 0;
1083 unsigned long set[] = {
1084STORE, 140737488347136, 140737488351231,
1085STORE, 140721266458624, 140737488351231,
1086ERASE, 140721266458624, 140737488351231,
1087STORE, 140721266458624, 140721266462719,
1088STORE, 94735788949504, 94735789121535,
1089ERASE, 94735788949504, 94735789121535,
1090STORE, 94735788949504, 94735788965887,
1091STORE, 94735788965888, 94735789121535,
1092ERASE, 94735788965888, 94735789121535,
1093STORE, 94735788965888, 94735789068287,
1094STORE, 94735789068288, 94735789109247,
1095STORE, 94735789109248, 94735789121535,
1096STORE, 140253902692352, 140253902864383,
1097ERASE, 140253902692352, 140253902864383,
1098STORE, 140253902692352, 140253902696447,
1099STORE, 140253902696448, 140253902864383,
1100 };
1101 unsigned long set2[] = {
1102STORE, 140737488347136, 140737488351231,
1103STORE, 140735933583360, 140737488351231,
1104ERASE, 140735933583360, 140737488351231,
1105STORE, 140735933583360, 140735933587455,
1106STORE, 94811003260928, 94811003432959,
1107ERASE, 94811003260928, 94811003432959,
1108STORE, 94811003260928, 94811003277311,
1109STORE, 94811003277312, 94811003432959,
1110ERASE, 94811003277312, 94811003432959,
1111STORE, 94811003277312, 94811003379711,
1112STORE, 94811003379712, 94811003420671,
1113STORE, 94811003420672, 94811003432959,
1114STORE, 140277094653952, 140277094825983,
1115ERASE, 140277094653952, 140277094825983,
1116STORE, 140277094653952, 140277094658047,
1117STORE, 140277094658048, 140277094825983,
1118ERASE, 140277094658048, 140277094825983,
1119STORE, 140277094658048, 140277094780927,
1120STORE, 140277094780928, 140277094813695,
1121STORE, 140277094813696, 140277094821887,
1122STORE, 140277094821888, 140277094825983,
1123STORE, 140735933906944, 140735933911039,
1124 };
1125 unsigned long set3[] = {
1126STORE, 140737488347136, 140737488351231,
1127STORE, 140735790264320, 140737488351231,
1128ERASE, 140735790264320, 140737488351231,
1129STORE, 140735790264320, 140735790268415,
1130STORE, 94016597282816, 94016597454847,
1131ERASE, 94016597282816, 94016597454847,
1132STORE, 94016597282816, 94016597299199,
1133STORE, 94016597299200, 94016597454847,
1134ERASE, 94016597299200, 94016597454847,
1135STORE, 94016597299200, 94016597401599,
1136STORE, 94016597401600, 94016597442559,
1137STORE, 94016597442560, 94016597454847,
1138STORE, 140496959283200, 140496959455231,
1139ERASE, 140496959283200, 140496959455231,
1140STORE, 140496959283200, 140496959287295,
1141STORE, 140496959287296, 140496959455231,
1142ERASE, 140496959287296, 140496959455231,
1143STORE, 140496959287296, 140496959410175,
1144STORE, 140496959410176, 140496959442943,
1145STORE, 140496959442944, 140496959451135,
1146STORE, 140496959451136, 140496959455231,
1147STORE, 140735791718400, 140735791722495,
1148STORE, 140735791706112, 140735791718399,
1149STORE, 47135835713536, 47135835721727,
1150STORE, 47135835721728, 47135835729919,
1151STORE, 47135835729920, 47135835893759,
1152ERASE, 47135835729920, 47135835893759,
1153STORE, 47135835729920, 47135835742207,
1154STORE, 47135835742208, 47135835893759,
1155STORE, 47135835840512, 47135835893759,
1156STORE, 47135835742208, 47135835840511,
1157ERASE, 47135835742208, 47135835840511,
1158STORE, 47135835742208, 47135835840511,
1159STORE, 47135835885568, 47135835893759,
1160STORE, 47135835840512, 47135835885567,
1161ERASE, 47135835840512, 47135835885567,
1162STORE, 47135835840512, 47135835893759,
1163ERASE, 47135835840512, 47135835893759,
1164STORE, 47135835840512, 47135835885567,
1165STORE, 47135835885568, 47135835893759,
1166 };
1167
1168 unsigned long set4[] = {
1169STORE, 140737488347136, 140737488351231,
1170STORE, 140728251703296, 140737488351231,
1171ERASE, 140728251703296, 140737488351231,
1172STORE, 140728251703296, 140728251707391,
1173STORE, 94668429205504, 94668429377535,
1174ERASE, 94668429205504, 94668429377535,
1175STORE, 94668429205504, 94668429221887,
1176STORE, 94668429221888, 94668429377535,
1177ERASE, 94668429221888, 94668429377535,
1178STORE, 94668429221888, 94668429324287,
1179STORE, 94668429324288, 94668429365247,
1180STORE, 94668429365248, 94668429377535,
1181STORE, 47646523273216, 47646523445247,
1182ERASE, 47646523273216, 47646523445247,
1183STORE, 47646523273216, 47646523277311,
1184STORE, 47646523277312, 47646523445247,
1185ERASE, 47646523277312, 47646523445247,
1186STORE, 47646523277312, 47646523400191,
1187 };
1188
1189 unsigned long set5[] = {
1190STORE, 140737488347136, 140737488351231,
1191STORE, 140726874062848, 140737488351231,
1192ERASE, 140726874062848, 140737488351231,
1193STORE, 140726874062848, 140726874066943,
1194STORE, 94248892870656, 94248893042687,
1195ERASE, 94248892870656, 94248893042687,
1196STORE, 94248892870656, 94248892887039,
1197STORE, 94248892887040, 94248893042687,
1198ERASE, 94248892887040, 94248893042687,
1199STORE, 94248892887040, 94248892989439,
1200STORE, 94248892989440, 94248893030399,
1201STORE, 94248893030400, 94248893042687,
1202STORE, 47884786266112, 47884786438143,
1203ERASE, 47884786266112, 47884786438143,
1204STORE, 47884786266112, 47884786270207,
1205STORE, 47884786270208, 47884786438143,
1206ERASE, 47884786270208, 47884786438143,
1207STORE, 47884786270208, 47884786393087,
1208STORE, 47884786393088, 47884786425855,
1209STORE, 47884786425856, 47884786434047,
1210STORE, 47884786434048, 47884786438143,
1211STORE, 140726874513408, 140726874517503,
1212STORE, 140726874501120, 140726874513407,
1213STORE, 47884786438144, 47884786446335,
1214STORE, 47884786446336, 47884786454527,
1215STORE, 47884786454528, 47884786618367,
1216ERASE, 47884786454528, 47884786618367,
1217STORE, 47884786454528, 47884786466815,
1218STORE, 47884786466816, 47884786618367,
1219STORE, 47884786565120, 47884786618367,
1220STORE, 47884786466816, 47884786565119,
1221ERASE, 47884786466816, 47884786565119,
1222STORE, 47884786466816, 47884786565119,
1223STORE, 47884786610176, 47884786618367,
1224STORE, 47884786565120, 47884786610175,
1225ERASE, 47884786565120, 47884786610175,
1226STORE, 47884786565120, 47884786618367,
1227ERASE, 47884786565120, 47884786618367,
1228STORE, 47884786565120, 47884786610175,
1229STORE, 47884786610176, 47884786618367,
1230ERASE, 47884786610176, 47884786618367,
1231STORE, 47884786610176, 47884786618367,
1232STORE, 47884786618368, 47884789669887,
1233STORE, 47884787163136, 47884789669887,
1234STORE, 47884786618368, 47884787163135,
1235ERASE, 47884787163136, 47884789669887,
1236STORE, 47884787163136, 47884789448703,
1237STORE, 47884789448704, 47884789669887,
1238STORE, 47884788858880, 47884789448703,
1239STORE, 47884787163136, 47884788858879,
1240ERASE, 47884787163136, 47884788858879,
1241STORE, 47884787163136, 47884788858879,
1242STORE, 47884789444608, 47884789448703,
1243STORE, 47884788858880, 47884789444607,
1244ERASE, 47884788858880, 47884789444607,
1245STORE, 47884788858880, 47884789444607,
1246STORE, 47884789653504, 47884789669887,
1247STORE, 47884789448704, 47884789653503,
1248ERASE, 47884789448704, 47884789653503,
1249STORE, 47884789448704, 47884789653503,
1250ERASE, 47884789653504, 47884789669887,
1251STORE, 47884789653504, 47884789669887,
1252STORE, 47884789669888, 47884791508991,
1253STORE, 47884789809152, 47884791508991,
1254STORE, 47884789669888, 47884789809151,
1255ERASE, 47884789809152, 47884791508991,
1256STORE, 47884789809152, 47884791468031,
1257STORE, 47884791468032, 47884791508991,
1258STORE, 47884791152640, 47884791468031,
1259STORE, 47884789809152, 47884791152639,
1260ERASE, 47884789809152, 47884791152639,
1261STORE, 47884789809152, 47884791152639,
1262STORE, 47884791463936, 47884791468031,
1263STORE, 47884791152640, 47884791463935,
1264ERASE, 47884791152640, 47884791463935,
1265STORE, 47884791152640, 47884791463935,
1266STORE, 47884791492608, 47884791508991,
1267STORE, 47884791468032, 47884791492607,
1268ERASE, 47884791468032, 47884791492607,
1269STORE, 47884791468032, 47884791492607,
1270ERASE, 47884791492608, 47884791508991,
1271STORE, 47884791492608, 47884791508991,
1272STORE, 47884791508992, 47884791644159,
1273ERASE, 47884791508992, 47884791644159,
1274STORE, 47884791508992, 47884791533567,
1275STORE, 47884791533568, 47884791644159,
1276STORE, 47884791595008, 47884791644159,
1277STORE, 47884791533568, 47884791595007,
1278ERASE, 47884791533568, 47884791595007,
1279STORE, 47884791533568, 47884791595007,
1280STORE, 47884791619584, 47884791644159,
1281STORE, 47884791595008, 47884791619583,
1282ERASE, 47884791595008, 47884791619583,
1283STORE, 47884791595008, 47884791644159,
1284ERASE, 47884791595008, 47884791644159,
1285STORE, 47884791595008, 47884791619583,
1286STORE, 47884791619584, 47884791644159,
1287STORE, 47884791627776, 47884791644159,
1288STORE, 47884791619584, 47884791627775,
1289ERASE, 47884791619584, 47884791627775,
1290STORE, 47884791619584, 47884791627775,
1291ERASE, 47884791627776, 47884791644159,
1292STORE, 47884791627776, 47884791644159,
1293STORE, 47884791644160, 47884791664639,
1294ERASE, 47884791644160, 47884791664639,
1295STORE, 47884791644160, 47884791648255,
1296STORE, 47884791648256, 47884791664639,
1297STORE, 47884791652352, 47884791664639,
1298STORE, 47884791648256, 47884791652351,
1299ERASE, 47884791648256, 47884791652351,
1300STORE, 47884791648256, 47884791652351,
1301STORE, 47884791656448, 47884791664639,
1302STORE, 47884791652352, 47884791656447,
1303ERASE, 47884791652352, 47884791656447,
1304STORE, 47884791652352, 47884791664639,
1305ERASE, 47884791652352, 47884791664639,
1306STORE, 47884791652352, 47884791656447,
1307STORE, 47884791656448, 47884791664639,
1308ERASE, 47884791656448, 47884791664639,
1309STORE, 47884791656448, 47884791664639,
1310STORE, 47884791664640, 47884791672831,
1311ERASE, 47884791468032, 47884791492607,
1312STORE, 47884791468032, 47884791484415,
1313STORE, 47884791484416, 47884791492607,
1314ERASE, 47884791656448, 47884791664639,
1315STORE, 47884791656448, 47884791660543,
1316STORE, 47884791660544, 47884791664639,
1317ERASE, 47884791619584, 47884791627775,
1318STORE, 47884791619584, 47884791623679,
1319STORE, 47884791623680, 47884791627775,
1320 };
1321
1322 unsigned long set6[] = {
1323STORE, 140737488347136, 140737488351231,
1324STORE, 140722999021568, 140737488351231,
1325ERASE, 140722999021568, 140737488351231,
1326STORE, 140722999021568, 140722999025663,
1327STORE, 94901500268544, 94901500440575,
1328ERASE, 94901500268544, 94901500440575,
1329STORE, 94901500268544, 94901500284927,
1330STORE, 94901500284928, 94901500440575,
1331ERASE, 94901500284928, 94901500440575,
1332STORE, 94901500284928, 94901500387327,
1333STORE, 94901500387328, 94901500428287,
1334STORE, 94901500428288, 94901500440575,
1335STORE, 47430426660864, 47430426832895,
1336ERASE, 47430426660864, 47430426832895,
1337STORE, 47430426660864, 47430426664959,
1338STORE, 47430426664960, 47430426832895,
1339ERASE, 47430426664960, 47430426832895,
1340STORE, 47430426664960, 47430426787839,
1341STORE, 47430426787840, 47430426820607,
1342STORE, 47430426820608, 47430426828799,
1343STORE, 47430426828800, 47430426832895,
1344STORE, 140722999115776, 140722999119871,
1345STORE, 140722999103488, 140722999115775,
1346STORE, 47430426832896, 47430426841087,
1347STORE, 47430426841088, 47430426849279,
1348STORE, 47430426849280, 47430427013119,
1349ERASE, 47430426849280, 47430427013119,
1350STORE, 47430426849280, 47430426861567,
1351STORE, 47430426861568, 47430427013119,
1352STORE, 47430426959872, 47430427013119,
1353STORE, 47430426861568, 47430426959871,
1354ERASE, 47430426861568, 47430426959871,
1355STORE, 47430426861568, 47430426959871,
1356STORE, 47430427004928, 47430427013119,
1357STORE, 47430426959872, 47430427004927,
1358ERASE, 47430426959872, 47430427004927,
1359STORE, 47430426959872, 47430427013119,
1360ERASE, 47430426959872, 47430427013119,
1361STORE, 47430426959872, 47430427004927,
1362STORE, 47430427004928, 47430427013119,
1363ERASE, 47430427004928, 47430427013119,
1364STORE, 47430427004928, 47430427013119,
1365STORE, 47430427013120, 47430430064639,
1366STORE, 47430427557888, 47430430064639,
1367STORE, 47430427013120, 47430427557887,
1368ERASE, 47430427557888, 47430430064639,
1369STORE, 47430427557888, 47430429843455,
1370STORE, 47430429843456, 47430430064639,
1371STORE, 47430429253632, 47430429843455,
1372STORE, 47430427557888, 47430429253631,
1373ERASE, 47430427557888, 47430429253631,
1374STORE, 47430427557888, 47430429253631,
1375STORE, 47430429839360, 47430429843455,
1376STORE, 47430429253632, 47430429839359,
1377ERASE, 47430429253632, 47430429839359,
1378STORE, 47430429253632, 47430429839359,
1379STORE, 47430430048256, 47430430064639,
1380STORE, 47430429843456, 47430430048255,
1381ERASE, 47430429843456, 47430430048255,
1382STORE, 47430429843456, 47430430048255,
1383ERASE, 47430430048256, 47430430064639,
1384STORE, 47430430048256, 47430430064639,
1385STORE, 47430430064640, 47430431903743,
1386STORE, 47430430203904, 47430431903743,
1387STORE, 47430430064640, 47430430203903,
1388ERASE, 47430430203904, 47430431903743,
1389STORE, 47430430203904, 47430431862783,
1390STORE, 47430431862784, 47430431903743,
1391STORE, 47430431547392, 47430431862783,
1392STORE, 47430430203904, 47430431547391,
1393ERASE, 47430430203904, 47430431547391,
1394STORE, 47430430203904, 47430431547391,
1395STORE, 47430431858688, 47430431862783,
1396STORE, 47430431547392, 47430431858687,
1397ERASE, 47430431547392, 47430431858687,
1398STORE, 47430431547392, 47430431858687,
1399STORE, 47430431887360, 47430431903743,
1400STORE, 47430431862784, 47430431887359,
1401ERASE, 47430431862784, 47430431887359,
1402STORE, 47430431862784, 47430431887359,
1403ERASE, 47430431887360, 47430431903743,
1404STORE, 47430431887360, 47430431903743,
1405STORE, 47430431903744, 47430432038911,
1406ERASE, 47430431903744, 47430432038911,
1407STORE, 47430431903744, 47430431928319,
1408STORE, 47430431928320, 47430432038911,
1409STORE, 47430431989760, 47430432038911,
1410STORE, 47430431928320, 47430431989759,
1411ERASE, 47430431928320, 47430431989759,
1412STORE, 47430431928320, 47430431989759,
1413STORE, 47430432014336, 47430432038911,
1414STORE, 47430431989760, 47430432014335,
1415ERASE, 47430431989760, 47430432014335,
1416STORE, 47430431989760, 47430432038911,
1417ERASE, 47430431989760, 47430432038911,
1418STORE, 47430431989760, 47430432014335,
1419STORE, 47430432014336, 47430432038911,
1420STORE, 47430432022528, 47430432038911,
1421STORE, 47430432014336, 47430432022527,
1422ERASE, 47430432014336, 47430432022527,
1423STORE, 47430432014336, 47430432022527,
1424ERASE, 47430432022528, 47430432038911,
1425STORE, 47430432022528, 47430432038911,
1426STORE, 47430432038912, 47430432059391,
1427ERASE, 47430432038912, 47430432059391,
1428STORE, 47430432038912, 47430432043007,
1429STORE, 47430432043008, 47430432059391,
1430STORE, 47430432047104, 47430432059391,
1431STORE, 47430432043008, 47430432047103,
1432ERASE, 47430432043008, 47430432047103,
1433STORE, 47430432043008, 47430432047103,
1434STORE, 47430432051200, 47430432059391,
1435STORE, 47430432047104, 47430432051199,
1436ERASE, 47430432047104, 47430432051199,
1437STORE, 47430432047104, 47430432059391,
1438ERASE, 47430432047104, 47430432059391,
1439STORE, 47430432047104, 47430432051199,
1440STORE, 47430432051200, 47430432059391,
1441ERASE, 47430432051200, 47430432059391,
1442STORE, 47430432051200, 47430432059391,
1443STORE, 47430432059392, 47430432067583,
1444ERASE, 47430431862784, 47430431887359,
1445STORE, 47430431862784, 47430431879167,
1446STORE, 47430431879168, 47430431887359,
1447ERASE, 47430432051200, 47430432059391,
1448STORE, 47430432051200, 47430432055295,
1449STORE, 47430432055296, 47430432059391,
1450ERASE, 47430432014336, 47430432022527,
1451STORE, 47430432014336, 47430432018431,
1452STORE, 47430432018432, 47430432022527,
1453 };
1454 unsigned long set7[] = {
1455STORE, 140737488347136, 140737488351231,
1456STORE, 140729808330752, 140737488351231,
1457ERASE, 140729808330752, 140737488351231,
1458STORE, 140729808330752, 140729808334847,
1459STORE, 94629632020480, 94629632192511,
1460ERASE, 94629632020480, 94629632192511,
1461STORE, 94629632020480, 94629632036863,
1462STORE, 94629632036864, 94629632192511,
1463ERASE, 94629632036864, 94629632192511,
1464STORE, 94629632036864, 94629632139263,
1465STORE, 94629632139264, 94629632180223,
1466STORE, 94629632180224, 94629632192511,
1467STORE, 47439981776896, 47439981948927,
1468ERASE, 47439981776896, 47439981948927,
1469STORE, 47439981776896, 47439981780991,
1470STORE, 47439981780992, 47439981948927,
1471ERASE, 47439981780992, 47439981948927,
1472STORE, 47439981780992, 47439981903871,
1473STORE, 47439981903872, 47439981936639,
1474STORE, 47439981936640, 47439981944831,
1475STORE, 47439981944832, 47439981948927,
1476STORE, 140729808474112, 140729808478207,
1477STORE, 140729808461824, 140729808474111,
1478STORE, 47439981948928, 47439981957119,
1479STORE, 47439981957120, 47439981965311,
1480STORE, 47439981965312, 47439982129151,
1481ERASE, 47439981965312, 47439982129151,
1482STORE, 47439981965312, 47439981977599,
1483STORE, 47439981977600, 47439982129151,
1484STORE, 47439982075904, 47439982129151,
1485STORE, 47439981977600, 47439982075903,
1486ERASE, 47439981977600, 47439982075903,
1487STORE, 47439981977600, 47439982075903,
1488STORE, 47439982120960, 47439982129151,
1489STORE, 47439982075904, 47439982120959,
1490ERASE, 47439982075904, 47439982120959,
1491STORE, 47439982075904, 47439982129151,
1492ERASE, 47439982075904, 47439982129151,
1493STORE, 47439982075904, 47439982120959,
1494STORE, 47439982120960, 47439982129151,
1495ERASE, 47439982120960, 47439982129151,
1496STORE, 47439982120960, 47439982129151,
1497STORE, 47439982129152, 47439985180671,
1498STORE, 47439982673920, 47439985180671,
1499STORE, 47439982129152, 47439982673919,
1500ERASE, 47439982673920, 47439985180671,
1501STORE, 47439982673920, 47439984959487,
1502STORE, 47439984959488, 47439985180671,
1503STORE, 47439984369664, 47439984959487,
1504STORE, 47439982673920, 47439984369663,
1505ERASE, 47439982673920, 47439984369663,
1506STORE, 47439982673920, 47439984369663,
1507STORE, 47439984955392, 47439984959487,
1508STORE, 47439984369664, 47439984955391,
1509ERASE, 47439984369664, 47439984955391,
1510STORE, 47439984369664, 47439984955391,
1511STORE, 47439985164288, 47439985180671,
1512STORE, 47439984959488, 47439985164287,
1513ERASE, 47439984959488, 47439985164287,
1514STORE, 47439984959488, 47439985164287,
1515ERASE, 47439985164288, 47439985180671,
1516STORE, 47439985164288, 47439985180671,
1517STORE, 47439985180672, 47439987019775,
1518STORE, 47439985319936, 47439987019775,
1519STORE, 47439985180672, 47439985319935,
1520ERASE, 47439985319936, 47439987019775,
1521STORE, 47439985319936, 47439986978815,
1522STORE, 47439986978816, 47439987019775,
1523STORE, 47439986663424, 47439986978815,
1524STORE, 47439985319936, 47439986663423,
1525ERASE, 47439985319936, 47439986663423,
1526STORE, 47439985319936, 47439986663423,
1527STORE, 47439986974720, 47439986978815,
1528STORE, 47439986663424, 47439986974719,
1529ERASE, 47439986663424, 47439986974719,
1530STORE, 47439986663424, 47439986974719,
1531STORE, 47439987003392, 47439987019775,
1532STORE, 47439986978816, 47439987003391,
1533ERASE, 47439986978816, 47439987003391,
1534STORE, 47439986978816, 47439987003391,
1535ERASE, 47439987003392, 47439987019775,
1536STORE, 47439987003392, 47439987019775,
1537STORE, 47439987019776, 47439987154943,
1538ERASE, 47439987019776, 47439987154943,
1539STORE, 47439987019776, 47439987044351,
1540STORE, 47439987044352, 47439987154943,
1541STORE, 47439987105792, 47439987154943,
1542STORE, 47439987044352, 47439987105791,
1543ERASE, 47439987044352, 47439987105791,
1544STORE, 47439987044352, 47439987105791,
1545STORE, 47439987130368, 47439987154943,
1546STORE, 47439987105792, 47439987130367,
1547ERASE, 47439987105792, 47439987130367,
1548STORE, 47439987105792, 47439987154943,
1549ERASE, 47439987105792, 47439987154943,
1550STORE, 47439987105792, 47439987130367,
1551STORE, 47439987130368, 47439987154943,
1552STORE, 47439987138560, 47439987154943,
1553STORE, 47439987130368, 47439987138559,
1554ERASE, 47439987130368, 47439987138559,
1555STORE, 47439987130368, 47439987138559,
1556ERASE, 47439987138560, 47439987154943,
1557STORE, 47439987138560, 47439987154943,
1558STORE, 47439987154944, 47439987175423,
1559ERASE, 47439987154944, 47439987175423,
1560STORE, 47439987154944, 47439987159039,
1561STORE, 47439987159040, 47439987175423,
1562STORE, 47439987163136, 47439987175423,
1563STORE, 47439987159040, 47439987163135,
1564ERASE, 47439987159040, 47439987163135,
1565STORE, 47439987159040, 47439987163135,
1566STORE, 47439987167232, 47439987175423,
1567STORE, 47439987163136, 47439987167231,
1568ERASE, 47439987163136, 47439987167231,
1569STORE, 47439987163136, 47439987175423,
1570ERASE, 47439987163136, 47439987175423,
1571STORE, 47439987163136, 47439987167231,
1572STORE, 47439987167232, 47439987175423,
1573ERASE, 47439987167232, 47439987175423,
1574STORE, 47439987167232, 47439987175423,
1575STORE, 47439987175424, 47439987183615,
1576ERASE, 47439986978816, 47439987003391,
1577STORE, 47439986978816, 47439986995199,
1578STORE, 47439986995200, 47439987003391,
1579ERASE, 47439987167232, 47439987175423,
1580STORE, 47439987167232, 47439987171327,
1581STORE, 47439987171328, 47439987175423,
1582ERASE, 47439987130368, 47439987138559,
1583STORE, 47439987130368, 47439987134463,
1584STORE, 47439987134464, 47439987138559,
1585 };
1586 unsigned long set8[] = {
1587STORE, 140737488347136, 140737488351231,
1588STORE, 140722482974720, 140737488351231,
1589ERASE, 140722482974720, 140737488351231,
1590STORE, 140722482974720, 140722482978815,
1591STORE, 94121505034240, 94121505206271,
1592ERASE, 94121505034240, 94121505206271,
1593STORE, 94121505034240, 94121505050623,
1594STORE, 94121505050624, 94121505206271,
1595ERASE, 94121505050624, 94121505206271,
1596STORE, 94121505050624, 94121505153023,
1597STORE, 94121505153024, 94121505193983,
1598STORE, 94121505193984, 94121505206271,
1599STORE, 47708483284992, 47708483457023,
1600ERASE, 47708483284992, 47708483457023,
1601STORE, 47708483284992, 47708483289087,
1602STORE, 47708483289088, 47708483457023,
1603ERASE, 47708483289088, 47708483457023,
1604STORE, 47708483289088, 47708483411967,
1605STORE, 47708483411968, 47708483444735,
1606STORE, 47708483444736, 47708483452927,
1607STORE, 47708483452928, 47708483457023,
1608STORE, 140722483142656, 140722483146751,
1609STORE, 140722483130368, 140722483142655,
1610STORE, 47708483457024, 47708483465215,
1611STORE, 47708483465216, 47708483473407,
1612STORE, 47708483473408, 47708483637247,
1613ERASE, 47708483473408, 47708483637247,
1614STORE, 47708483473408, 47708483485695,
1615STORE, 47708483485696, 47708483637247,
1616STORE, 47708483584000, 47708483637247,
1617STORE, 47708483485696, 47708483583999,
1618ERASE, 47708483485696, 47708483583999,
1619STORE, 47708483485696, 47708483583999,
1620STORE, 47708483629056, 47708483637247,
1621STORE, 47708483584000, 47708483629055,
1622ERASE, 47708483584000, 47708483629055,
1623STORE, 47708483584000, 47708483637247,
1624ERASE, 47708483584000, 47708483637247,
1625STORE, 47708483584000, 47708483629055,
1626STORE, 47708483629056, 47708483637247,
1627ERASE, 47708483629056, 47708483637247,
1628STORE, 47708483629056, 47708483637247,
1629STORE, 47708483637248, 47708486688767,
1630STORE, 47708484182016, 47708486688767,
1631STORE, 47708483637248, 47708484182015,
1632ERASE, 47708484182016, 47708486688767,
1633STORE, 47708484182016, 47708486467583,
1634STORE, 47708486467584, 47708486688767,
1635STORE, 47708485877760, 47708486467583,
1636STORE, 47708484182016, 47708485877759,
1637ERASE, 47708484182016, 47708485877759,
1638STORE, 47708484182016, 47708485877759,
1639STORE, 47708486463488, 47708486467583,
1640STORE, 47708485877760, 47708486463487,
1641ERASE, 47708485877760, 47708486463487,
1642STORE, 47708485877760, 47708486463487,
1643STORE, 47708486672384, 47708486688767,
1644STORE, 47708486467584, 47708486672383,
1645ERASE, 47708486467584, 47708486672383,
1646STORE, 47708486467584, 47708486672383,
1647ERASE, 47708486672384, 47708486688767,
1648STORE, 47708486672384, 47708486688767,
1649STORE, 47708486688768, 47708488527871,
1650STORE, 47708486828032, 47708488527871,
1651STORE, 47708486688768, 47708486828031,
1652ERASE, 47708486828032, 47708488527871,
1653STORE, 47708486828032, 47708488486911,
1654STORE, 47708488486912, 47708488527871,
1655STORE, 47708488171520, 47708488486911,
1656STORE, 47708486828032, 47708488171519,
1657ERASE, 47708486828032, 47708488171519,
1658STORE, 47708486828032, 47708488171519,
1659STORE, 47708488482816, 47708488486911,
1660STORE, 47708488171520, 47708488482815,
1661ERASE, 47708488171520, 47708488482815,
1662STORE, 47708488171520, 47708488482815,
1663STORE, 47708488511488, 47708488527871,
1664STORE, 47708488486912, 47708488511487,
1665ERASE, 47708488486912, 47708488511487,
1666STORE, 47708488486912, 47708488511487,
1667ERASE, 47708488511488, 47708488527871,
1668STORE, 47708488511488, 47708488527871,
1669STORE, 47708488527872, 47708488663039,
1670ERASE, 47708488527872, 47708488663039,
1671STORE, 47708488527872, 47708488552447,
1672STORE, 47708488552448, 47708488663039,
1673STORE, 47708488613888, 47708488663039,
1674STORE, 47708488552448, 47708488613887,
1675ERASE, 47708488552448, 47708488613887,
1676STORE, 47708488552448, 47708488613887,
1677STORE, 47708488638464, 47708488663039,
1678STORE, 47708488613888, 47708488638463,
1679ERASE, 47708488613888, 47708488638463,
1680STORE, 47708488613888, 47708488663039,
1681ERASE, 47708488613888, 47708488663039,
1682STORE, 47708488613888, 47708488638463,
1683STORE, 47708488638464, 47708488663039,
1684STORE, 47708488646656, 47708488663039,
1685STORE, 47708488638464, 47708488646655,
1686ERASE, 47708488638464, 47708488646655,
1687STORE, 47708488638464, 47708488646655,
1688ERASE, 47708488646656, 47708488663039,
1689STORE, 47708488646656, 47708488663039,
1690STORE, 47708488663040, 47708488683519,
1691ERASE, 47708488663040, 47708488683519,
1692STORE, 47708488663040, 47708488667135,
1693STORE, 47708488667136, 47708488683519,
1694STORE, 47708488671232, 47708488683519,
1695STORE, 47708488667136, 47708488671231,
1696ERASE, 47708488667136, 47708488671231,
1697STORE, 47708488667136, 47708488671231,
1698STORE, 47708488675328, 47708488683519,
1699STORE, 47708488671232, 47708488675327,
1700ERASE, 47708488671232, 47708488675327,
1701STORE, 47708488671232, 47708488683519,
1702ERASE, 47708488671232, 47708488683519,
1703STORE, 47708488671232, 47708488675327,
1704STORE, 47708488675328, 47708488683519,
1705ERASE, 47708488675328, 47708488683519,
1706STORE, 47708488675328, 47708488683519,
1707STORE, 47708488683520, 47708488691711,
1708ERASE, 47708488486912, 47708488511487,
1709STORE, 47708488486912, 47708488503295,
1710STORE, 47708488503296, 47708488511487,
1711ERASE, 47708488675328, 47708488683519,
1712STORE, 47708488675328, 47708488679423,
1713STORE, 47708488679424, 47708488683519,
1714ERASE, 47708488638464, 47708488646655,
1715STORE, 47708488638464, 47708488642559,
1716STORE, 47708488642560, 47708488646655,
1717 };
1718
1719 unsigned long set9[] = {
1720STORE, 140737488347136, 140737488351231,
1721STORE, 140736427839488, 140737488351231,
1722ERASE, 140736427839488, 140736427839488,
1723STORE, 140736427839488, 140736427843583,
1724STORE, 94071213395968, 94071213567999,
1725ERASE, 94071213395968, 94071213395968,
1726STORE, 94071213395968, 94071213412351,
1727STORE, 94071213412352, 94071213567999,
1728ERASE, 94071213412352, 94071213412352,
1729STORE, 94071213412352, 94071213514751,
1730STORE, 94071213514752, 94071213555711,
1731STORE, 94071213555712, 94071213567999,
1732STORE, 139968410644480, 139968410816511,
1733ERASE, 139968410644480, 139968410644480,
1734STORE, 139968410644480, 139968410648575,
1735STORE, 139968410648576, 139968410816511,
1736ERASE, 139968410648576, 139968410648576,
1737STORE, 139968410648576, 139968410771455,
1738STORE, 139968410771456, 139968410804223,
1739STORE, 139968410804224, 139968410812415,
1740STORE, 139968410812416, 139968410816511,
1741STORE, 140736429277184, 140736429281279,
1742STORE, 140736429264896, 140736429277183,
1743STORE, 47664384352256, 47664384360447,
1744STORE, 47664384360448, 47664384368639,
1745STORE, 47664384368640, 47664384532479,
1746ERASE, 47664384368640, 47664384368640,
1747STORE, 47664384368640, 47664384380927,
1748STORE, 47664384380928, 47664384532479,
1749STORE, 47664384479232, 47664384532479,
1750STORE, 47664384380928, 47664384479231,
1751ERASE, 47664384380928, 47664384380928,
1752STORE, 47664384380928, 47664384479231,
1753STORE, 47664384524288, 47664384532479,
1754STORE, 47664384479232, 47664384524287,
1755ERASE, 47664384479232, 47664384479232,
1756STORE, 47664384479232, 47664384532479,
1757ERASE, 47664384479232, 47664384479232,
1758STORE, 47664384479232, 47664384524287,
1759STORE, 47664384524288, 47664384532479,
1760ERASE, 47664384524288, 47664384524288,
1761STORE, 47664384524288, 47664384532479,
1762STORE, 47664384532480, 47664387583999,
1763STORE, 47664385077248, 47664387583999,
1764STORE, 47664384532480, 47664385077247,
1765ERASE, 47664385077248, 47664385077248,
1766STORE, 47664385077248, 47664387362815,
1767STORE, 47664387362816, 47664387583999,
1768STORE, 47664386772992, 47664387362815,
1769STORE, 47664385077248, 47664386772991,
1770ERASE, 47664385077248, 47664385077248,
1771STORE, 47664385077248, 47664386772991,
1772STORE, 47664387358720, 47664387362815,
1773STORE, 47664386772992, 47664387358719,
1774ERASE, 47664386772992, 47664386772992,
1775STORE, 47664386772992, 47664387358719,
1776STORE, 47664387567616, 47664387583999,
1777STORE, 47664387362816, 47664387567615,
1778ERASE, 47664387362816, 47664387362816,
1779STORE, 47664387362816, 47664387567615,
1780ERASE, 47664387567616, 47664387567616,
1781STORE, 47664387567616, 47664387583999,
1782STORE, 47664387584000, 47664389423103,
1783STORE, 47664387723264, 47664389423103,
1784STORE, 47664387584000, 47664387723263,
1785ERASE, 47664387723264, 47664387723264,
1786STORE, 47664387723264, 47664389382143,
1787STORE, 47664389382144, 47664389423103,
1788STORE, 47664389066752, 47664389382143,
1789STORE, 47664387723264, 47664389066751,
1790ERASE, 47664387723264, 47664387723264,
1791STORE, 47664387723264, 47664389066751,
1792STORE, 47664389378048, 47664389382143,
1793STORE, 47664389066752, 47664389378047,
1794ERASE, 47664389066752, 47664389066752,
1795STORE, 47664389066752, 47664389378047,
1796STORE, 47664389406720, 47664389423103,
1797STORE, 47664389382144, 47664389406719,
1798ERASE, 47664389382144, 47664389382144,
1799STORE, 47664389382144, 47664389406719,
1800ERASE, 47664389406720, 47664389406720,
1801STORE, 47664389406720, 47664389423103,
1802STORE, 47664389423104, 47664389558271,
1803ERASE, 47664389423104, 47664389423104,
1804STORE, 47664389423104, 47664389447679,
1805STORE, 47664389447680, 47664389558271,
1806STORE, 47664389509120, 47664389558271,
1807STORE, 47664389447680, 47664389509119,
1808ERASE, 47664389447680, 47664389447680,
1809STORE, 47664389447680, 47664389509119,
1810STORE, 47664389533696, 47664389558271,
1811STORE, 47664389509120, 47664389533695,
1812ERASE, 47664389509120, 47664389509120,
1813STORE, 47664389509120, 47664389558271,
1814ERASE, 47664389509120, 47664389509120,
1815STORE, 47664389509120, 47664389533695,
1816STORE, 47664389533696, 47664389558271,
1817STORE, 47664389541888, 47664389558271,
1818STORE, 47664389533696, 47664389541887,
1819ERASE, 47664389533696, 47664389533696,
1820STORE, 47664389533696, 47664389541887,
1821ERASE, 47664389541888, 47664389541888,
1822STORE, 47664389541888, 47664389558271,
1823STORE, 47664389558272, 47664389578751,
1824ERASE, 47664389558272, 47664389558272,
1825STORE, 47664389558272, 47664389562367,
1826STORE, 47664389562368, 47664389578751,
1827STORE, 47664389566464, 47664389578751,
1828STORE, 47664389562368, 47664389566463,
1829ERASE, 47664389562368, 47664389562368,
1830STORE, 47664389562368, 47664389566463,
1831STORE, 47664389570560, 47664389578751,
1832STORE, 47664389566464, 47664389570559,
1833ERASE, 47664389566464, 47664389566464,
1834STORE, 47664389566464, 47664389578751,
1835ERASE, 47664389566464, 47664389566464,
1836STORE, 47664389566464, 47664389570559,
1837STORE, 47664389570560, 47664389578751,
1838ERASE, 47664389570560, 47664389570560,
1839STORE, 47664389570560, 47664389578751,
1840STORE, 47664389578752, 47664389586943,
1841ERASE, 47664389382144, 47664389382144,
1842STORE, 47664389382144, 47664389398527,
1843STORE, 47664389398528, 47664389406719,
1844ERASE, 47664389570560, 47664389570560,
1845STORE, 47664389570560, 47664389574655,
1846STORE, 47664389574656, 47664389578751,
1847ERASE, 47664389533696, 47664389533696,
1848STORE, 47664389533696, 47664389537791,
1849STORE, 47664389537792, 47664389541887,
1850ERASE, 47664387362816, 47664387362816,
1851STORE, 47664387362816, 47664387559423,
1852STORE, 47664387559424, 47664387567615,
1853ERASE, 47664384524288, 47664384524288,
1854STORE, 47664384524288, 47664384528383,
1855STORE, 47664384528384, 47664384532479,
1856ERASE, 94071213555712, 94071213555712,
1857STORE, 94071213555712, 94071213563903,
1858STORE, 94071213563904, 94071213567999,
1859ERASE, 139968410804224, 139968410804224,
1860STORE, 139968410804224, 139968410808319,
1861STORE, 139968410808320, 139968410812415,
1862ERASE, 47664384352256, 47664384352256,
1863STORE, 94071244402688, 94071244537855,
1864STORE, 140737488347136, 140737488351231,
1865STORE, 140728271503360, 140737488351231,
1866ERASE, 140728271503360, 140728271503360,
1867STORE, 140728271503360, 140728271507455,
1868STORE, 94410361982976, 94410362155007,
1869ERASE, 94410361982976, 94410361982976,
1870STORE, 94410361982976, 94410361999359,
1871STORE, 94410361999360, 94410362155007,
1872ERASE, 94410361999360, 94410361999360,
1873STORE, 94410361999360, 94410362101759,
1874STORE, 94410362101760, 94410362142719,
1875STORE, 94410362142720, 94410362155007,
1876STORE, 140351953997824, 140351954169855,
1877ERASE, 140351953997824, 140351953997824,
1878STORE, 140351953997824, 140351954001919,
1879STORE, 140351954001920, 140351954169855,
1880ERASE, 140351954001920, 140351954001920,
1881STORE, 140351954001920, 140351954124799,
1882STORE, 140351954124800, 140351954157567,
1883STORE, 140351954157568, 140351954165759,
1884STORE, 140351954165760, 140351954169855,
1885STORE, 140728272429056, 140728272433151,
1886STORE, 140728272416768, 140728272429055,
1887STORE, 47280840998912, 47280841007103,
1888STORE, 47280841007104, 47280841015295,
1889STORE, 47280841015296, 47280841179135,
1890ERASE, 47280841015296, 47280841015296,
1891STORE, 47280841015296, 47280841027583,
1892STORE, 47280841027584, 47280841179135,
1893STORE, 47280841125888, 47280841179135,
1894STORE, 47280841027584, 47280841125887,
1895ERASE, 47280841027584, 47280841027584,
1896STORE, 47280841027584, 47280841125887,
1897STORE, 47280841170944, 47280841179135,
1898STORE, 47280841125888, 47280841170943,
1899ERASE, 47280841125888, 47280841125888,
1900STORE, 47280841125888, 47280841179135,
1901ERASE, 47280841125888, 47280841125888,
1902STORE, 47280841125888, 47280841170943,
1903STORE, 47280841170944, 47280841179135,
1904ERASE, 47280841170944, 47280841170944,
1905STORE, 47280841170944, 47280841179135,
1906STORE, 47280841179136, 47280844230655,
1907STORE, 47280841723904, 47280844230655,
1908STORE, 47280841179136, 47280841723903,
1909ERASE, 47280841723904, 47280841723904,
1910STORE, 47280841723904, 47280844009471,
1911STORE, 47280844009472, 47280844230655,
1912STORE, 47280843419648, 47280844009471,
1913STORE, 47280841723904, 47280843419647,
1914ERASE, 47280841723904, 47280841723904,
1915STORE, 47280841723904, 47280843419647,
1916STORE, 47280844005376, 47280844009471,
1917STORE, 47280843419648, 47280844005375,
1918ERASE, 47280843419648, 47280843419648,
1919STORE, 47280843419648, 47280844005375,
1920STORE, 47280844214272, 47280844230655,
1921STORE, 47280844009472, 47280844214271,
1922ERASE, 47280844009472, 47280844009472,
1923STORE, 47280844009472, 47280844214271,
1924ERASE, 47280844214272, 47280844214272,
1925STORE, 47280844214272, 47280844230655,
1926STORE, 47280844230656, 47280846069759,
1927STORE, 47280844369920, 47280846069759,
1928STORE, 47280844230656, 47280844369919,
1929ERASE, 47280844369920, 47280844369920,
1930STORE, 47280844369920, 47280846028799,
1931STORE, 47280846028800, 47280846069759,
1932STORE, 47280845713408, 47280846028799,
1933STORE, 47280844369920, 47280845713407,
1934ERASE, 47280844369920, 47280844369920,
1935STORE, 47280844369920, 47280845713407,
1936STORE, 47280846024704, 47280846028799,
1937STORE, 47280845713408, 47280846024703,
1938ERASE, 47280845713408, 47280845713408,
1939STORE, 47280845713408, 47280846024703,
1940STORE, 47280846053376, 47280846069759,
1941STORE, 47280846028800, 47280846053375,
1942ERASE, 47280846028800, 47280846028800,
1943STORE, 47280846028800, 47280846053375,
1944ERASE, 47280846053376, 47280846053376,
1945STORE, 47280846053376, 47280846069759,
1946STORE, 47280846069760, 47280846204927,
1947ERASE, 47280846069760, 47280846069760,
1948STORE, 47280846069760, 47280846094335,
1949STORE, 47280846094336, 47280846204927,
1950STORE, 47280846155776, 47280846204927,
1951STORE, 47280846094336, 47280846155775,
1952ERASE, 47280846094336, 47280846094336,
1953STORE, 47280846094336, 47280846155775,
1954STORE, 47280846180352, 47280846204927,
1955STORE, 47280846155776, 47280846180351,
1956ERASE, 47280846155776, 47280846155776,
1957STORE, 47280846155776, 47280846204927,
1958ERASE, 47280846155776, 47280846155776,
1959STORE, 47280846155776, 47280846180351,
1960STORE, 47280846180352, 47280846204927,
1961STORE, 47280846188544, 47280846204927,
1962STORE, 47280846180352, 47280846188543,
1963ERASE, 47280846180352, 47280846180352,
1964STORE, 47280846180352, 47280846188543,
1965ERASE, 47280846188544, 47280846188544,
1966STORE, 47280846188544, 47280846204927,
1967STORE, 47280846204928, 47280846225407,
1968ERASE, 47280846204928, 47280846204928,
1969STORE, 47280846204928, 47280846209023,
1970STORE, 47280846209024, 47280846225407,
1971STORE, 47280846213120, 47280846225407,
1972STORE, 47280846209024, 47280846213119,
1973ERASE, 47280846209024, 47280846209024,
1974STORE, 47280846209024, 47280846213119,
1975STORE, 47280846217216, 47280846225407,
1976STORE, 47280846213120, 47280846217215,
1977ERASE, 47280846213120, 47280846213120,
1978STORE, 47280846213120, 47280846225407,
1979ERASE, 47280846213120, 47280846213120,
1980STORE, 47280846213120, 47280846217215,
1981STORE, 47280846217216, 47280846225407,
1982ERASE, 47280846217216, 47280846217216,
1983STORE, 47280846217216, 47280846225407,
1984STORE, 47280846225408, 47280846233599,
1985ERASE, 47280846028800, 47280846028800,
1986STORE, 47280846028800, 47280846045183,
1987STORE, 47280846045184, 47280846053375,
1988ERASE, 47280846217216, 47280846217216,
1989STORE, 47280846217216, 47280846221311,
1990STORE, 47280846221312, 47280846225407,
1991ERASE, 47280846180352, 47280846180352,
1992STORE, 47280846180352, 47280846184447,
1993STORE, 47280846184448, 47280846188543,
1994ERASE, 47280844009472, 47280844009472,
1995STORE, 47280844009472, 47280844206079,
1996STORE, 47280844206080, 47280844214271,
1997ERASE, 47280841170944, 47280841170944,
1998STORE, 47280841170944, 47280841175039,
1999STORE, 47280841175040, 47280841179135,
2000ERASE, 94410362142720, 94410362142720,
2001STORE, 94410362142720, 94410362150911,
2002STORE, 94410362150912, 94410362155007,
2003ERASE, 140351954157568, 140351954157568,
2004STORE, 140351954157568, 140351954161663,
2005STORE, 140351954161664, 140351954165759,
2006ERASE, 47280840998912, 47280840998912,
2007STORE, 94410379456512, 94410379591679,
2008STORE, 140737488347136, 140737488351231,
2009STORE, 140732946362368, 140737488351231,
2010ERASE, 140732946362368, 140732946362368,
2011STORE, 140732946362368, 140732946366463,
2012STORE, 94352937934848, 94352938106879,
2013ERASE, 94352937934848, 94352937934848,
2014STORE, 94352937934848, 94352937951231,
2015STORE, 94352937951232, 94352938106879,
2016ERASE, 94352937951232, 94352937951232,
2017STORE, 94352937951232, 94352938053631,
2018STORE, 94352938053632, 94352938094591,
2019STORE, 94352938094592, 94352938106879,
2020STORE, 140595518742528, 140595518914559,
2021ERASE, 140595518742528, 140595518742528,
2022STORE, 140595518742528, 140595518746623,
2023STORE, 140595518746624, 140595518914559,
2024ERASE, 140595518746624, 140595518746624,
2025STORE, 140595518746624, 140595518869503,
2026STORE, 140595518869504, 140595518902271,
2027STORE, 140595518902272, 140595518910463,
2028STORE, 140595518910464, 140595518914559,
2029STORE, 140732947468288, 140732947472383,
2030STORE, 140732947456000, 140732947468287,
2031STORE, 47037276254208, 47037276262399,
2032STORE, 47037276262400, 47037276270591,
2033STORE, 47037276270592, 47037276434431,
2034ERASE, 47037276270592, 47037276270592,
2035STORE, 47037276270592, 47037276282879,
2036STORE, 47037276282880, 47037276434431,
2037STORE, 47037276381184, 47037276434431,
2038STORE, 47037276282880, 47037276381183,
2039ERASE, 47037276282880, 47037276282880,
2040STORE, 47037276282880, 47037276381183,
2041STORE, 47037276426240, 47037276434431,
2042STORE, 47037276381184, 47037276426239,
2043ERASE, 47037276381184, 47037276381184,
2044STORE, 47037276381184, 47037276434431,
2045ERASE, 47037276381184, 47037276381184,
2046STORE, 47037276381184, 47037276426239,
2047STORE, 47037276426240, 47037276434431,
2048ERASE, 47037276426240, 47037276426240,
2049STORE, 47037276426240, 47037276434431,
2050STORE, 47037276434432, 47037279485951,
2051STORE, 47037276979200, 47037279485951,
2052STORE, 47037276434432, 47037276979199,
2053ERASE, 47037276979200, 47037276979200,
2054STORE, 47037276979200, 47037279264767,
2055STORE, 47037279264768, 47037279485951,
2056STORE, 47037278674944, 47037279264767,
2057STORE, 47037276979200, 47037278674943,
2058ERASE, 47037276979200, 47037276979200,
2059STORE, 47037276979200, 47037278674943,
2060STORE, 47037279260672, 47037279264767,
2061STORE, 47037278674944, 47037279260671,
2062ERASE, 47037278674944, 47037278674944,
2063STORE, 47037278674944, 47037279260671,
2064STORE, 47037279469568, 47037279485951,
2065STORE, 47037279264768, 47037279469567,
2066ERASE, 47037279264768, 47037279264768,
2067STORE, 47037279264768, 47037279469567,
2068ERASE, 47037279469568, 47037279469568,
2069STORE, 47037279469568, 47037279485951,
2070STORE, 47037279485952, 47037281325055,
2071STORE, 47037279625216, 47037281325055,
2072STORE, 47037279485952, 47037279625215,
2073ERASE, 47037279625216, 47037279625216,
2074STORE, 47037279625216, 47037281284095,
2075STORE, 47037281284096, 47037281325055,
2076STORE, 47037280968704, 47037281284095,
2077STORE, 47037279625216, 47037280968703,
2078ERASE, 47037279625216, 47037279625216,
2079STORE, 47037279625216, 47037280968703,
2080STORE, 47037281280000, 47037281284095,
2081STORE, 47037280968704, 47037281279999,
2082ERASE, 47037280968704, 47037280968704,
2083STORE, 47037280968704, 47037281279999,
2084STORE, 47037281308672, 47037281325055,
2085STORE, 47037281284096, 47037281308671,
2086ERASE, 47037281284096, 47037281284096,
2087STORE, 47037281284096, 47037281308671,
2088ERASE, 47037281308672, 47037281308672,
2089STORE, 47037281308672, 47037281325055,
2090STORE, 47037281325056, 47037281460223,
2091ERASE, 47037281325056, 47037281325056,
2092STORE, 47037281325056, 47037281349631,
2093STORE, 47037281349632, 47037281460223,
2094STORE, 47037281411072, 47037281460223,
2095STORE, 47037281349632, 47037281411071,
2096ERASE, 47037281349632, 47037281349632,
2097STORE, 47037281349632, 47037281411071,
2098STORE, 47037281435648, 47037281460223,
2099STORE, 47037281411072, 47037281435647,
2100ERASE, 47037281411072, 47037281411072,
2101STORE, 47037281411072, 47037281460223,
2102ERASE, 47037281411072, 47037281411072,
2103STORE, 47037281411072, 47037281435647,
2104STORE, 47037281435648, 47037281460223,
2105STORE, 47037281443840, 47037281460223,
2106STORE, 47037281435648, 47037281443839,
2107ERASE, 47037281435648, 47037281435648,
2108STORE, 47037281435648, 47037281443839,
2109ERASE, 47037281443840, 47037281443840,
2110STORE, 47037281443840, 47037281460223,
2111STORE, 47037281460224, 47037281480703,
2112ERASE, 47037281460224, 47037281460224,
2113STORE, 47037281460224, 47037281464319,
2114STORE, 47037281464320, 47037281480703,
2115STORE, 47037281468416, 47037281480703,
2116STORE, 47037281464320, 47037281468415,
2117ERASE, 47037281464320, 47037281464320,
2118STORE, 47037281464320, 47037281468415,
2119STORE, 47037281472512, 47037281480703,
2120STORE, 47037281468416, 47037281472511,
2121ERASE, 47037281468416, 47037281468416,
2122STORE, 47037281468416, 47037281480703,
2123ERASE, 47037281468416, 47037281468416,
2124STORE, 47037281468416, 47037281472511,
2125STORE, 47037281472512, 47037281480703,
2126ERASE, 47037281472512, 47037281472512,
2127STORE, 47037281472512, 47037281480703,
2128STORE, 47037281480704, 47037281488895,
2129ERASE, 47037281284096, 47037281284096,
2130STORE, 47037281284096, 47037281300479,
2131STORE, 47037281300480, 47037281308671,
2132ERASE, 47037281472512, 47037281472512,
2133STORE, 47037281472512, 47037281476607,
2134STORE, 47037281476608, 47037281480703,
2135ERASE, 47037281435648, 47037281435648,
2136STORE, 47037281435648, 47037281439743,
2137STORE, 47037281439744, 47037281443839,
2138ERASE, 47037279264768, 47037279264768,
2139STORE, 47037279264768, 47037279461375,
2140STORE, 47037279461376, 47037279469567,
2141ERASE, 47037276426240, 47037276426240,
2142STORE, 47037276426240, 47037276430335,
2143STORE, 47037276430336, 47037276434431,
2144ERASE, 94352938094592, 94352938094592,
2145STORE, 94352938094592, 94352938102783,
2146STORE, 94352938102784, 94352938106879,
2147ERASE, 140595518902272, 140595518902272,
2148STORE, 140595518902272, 140595518906367,
2149STORE, 140595518906368, 140595518910463,
2150ERASE, 47037276254208, 47037276254208,
2151STORE, 94352938438656, 94352938573823,
2152STORE, 140737488347136, 140737488351231,
2153STORE, 140733506027520, 140737488351231,
2154ERASE, 140733506027520, 140733506027520,
2155STORE, 140733506027520, 140733506031615,
2156STORE, 94150123073536, 94150123245567,
2157ERASE, 94150123073536, 94150123073536,
2158STORE, 94150123073536, 94150123089919,
2159STORE, 94150123089920, 94150123245567,
2160ERASE, 94150123089920, 94150123089920,
2161STORE, 94150123089920, 94150123192319,
2162STORE, 94150123192320, 94150123233279,
2163STORE, 94150123233280, 94150123245567,
2164STORE, 140081290375168, 140081290547199,
2165ERASE, 140081290375168, 140081290375168,
2166STORE, 140081290375168, 140081290379263,
2167STORE, 140081290379264, 140081290547199,
2168ERASE, 140081290379264, 140081290379264,
2169STORE, 140081290379264, 140081290502143,
2170STORE, 140081290502144, 140081290534911,
2171STORE, 140081290534912, 140081290543103,
2172STORE, 140081290543104, 140081290547199,
2173STORE, 140733506707456, 140733506711551,
2174STORE, 140733506695168, 140733506707455,
2175STORE, 47551504621568, 47551504629759,
2176STORE, 47551504629760, 47551504637951,
2177STORE, 47551504637952, 47551504801791,
2178ERASE, 47551504637952, 47551504637952,
2179STORE, 47551504637952, 47551504650239,
2180STORE, 47551504650240, 47551504801791,
2181STORE, 47551504748544, 47551504801791,
2182STORE, 47551504650240, 47551504748543,
2183ERASE, 47551504650240, 47551504650240,
2184STORE, 47551504650240, 47551504748543,
2185STORE, 47551504793600, 47551504801791,
2186STORE, 47551504748544, 47551504793599,
2187ERASE, 47551504748544, 47551504748544,
2188STORE, 47551504748544, 47551504801791,
2189ERASE, 47551504748544, 47551504748544,
2190STORE, 47551504748544, 47551504793599,
2191STORE, 47551504793600, 47551504801791,
2192ERASE, 47551504793600, 47551504793600,
2193STORE, 47551504793600, 47551504801791,
2194STORE, 47551504801792, 47551507853311,
2195STORE, 47551505346560, 47551507853311,
2196STORE, 47551504801792, 47551505346559,
2197ERASE, 47551505346560, 47551505346560,
2198STORE, 47551505346560, 47551507632127,
2199STORE, 47551507632128, 47551507853311,
2200STORE, 47551507042304, 47551507632127,
2201STORE, 47551505346560, 47551507042303,
2202ERASE, 47551505346560, 47551505346560,
2203STORE, 47551505346560, 47551507042303,
2204STORE, 47551507628032, 47551507632127,
2205STORE, 47551507042304, 47551507628031,
2206ERASE, 47551507042304, 47551507042304,
2207STORE, 47551507042304, 47551507628031,
2208STORE, 47551507836928, 47551507853311,
2209STORE, 47551507632128, 47551507836927,
2210ERASE, 47551507632128, 47551507632128,
2211STORE, 47551507632128, 47551507836927,
2212ERASE, 47551507836928, 47551507836928,
2213STORE, 47551507836928, 47551507853311,
2214STORE, 47551507853312, 47551509692415,
2215STORE, 47551507992576, 47551509692415,
2216STORE, 47551507853312, 47551507992575,
2217ERASE, 47551507992576, 47551507992576,
2218STORE, 47551507992576, 47551509651455,
2219STORE, 47551509651456, 47551509692415,
2220STORE, 47551509336064, 47551509651455,
2221STORE, 47551507992576, 47551509336063,
2222ERASE, 47551507992576, 47551507992576,
2223STORE, 47551507992576, 47551509336063,
2224STORE, 47551509647360, 47551509651455,
2225STORE, 47551509336064, 47551509647359,
2226ERASE, 47551509336064, 47551509336064,
2227STORE, 47551509336064, 47551509647359,
2228STORE, 47551509676032, 47551509692415,
2229STORE, 47551509651456, 47551509676031,
2230ERASE, 47551509651456, 47551509651456,
2231STORE, 47551509651456, 47551509676031,
2232ERASE, 47551509676032, 47551509676032,
2233STORE, 47551509676032, 47551509692415,
2234STORE, 47551509692416, 47551509827583,
2235ERASE, 47551509692416, 47551509692416,
2236STORE, 47551509692416, 47551509716991,
2237STORE, 47551509716992, 47551509827583,
2238STORE, 47551509778432, 47551509827583,
2239STORE, 47551509716992, 47551509778431,
2240ERASE, 47551509716992, 47551509716992,
2241STORE, 47551509716992, 47551509778431,
2242STORE, 47551509803008, 47551509827583,
2243STORE, 47551509778432, 47551509803007,
2244ERASE, 47551509778432, 47551509778432,
2245STORE, 47551509778432, 47551509827583,
2246ERASE, 47551509778432, 47551509778432,
2247STORE, 47551509778432, 47551509803007,
2248STORE, 47551509803008, 47551509827583,
2249STORE, 47551509811200, 47551509827583,
2250STORE, 47551509803008, 47551509811199,
2251ERASE, 47551509803008, 47551509803008,
2252STORE, 47551509803008, 47551509811199,
2253ERASE, 47551509811200, 47551509811200,
2254STORE, 47551509811200, 47551509827583,
2255STORE, 47551509827584, 47551509848063,
2256ERASE, 47551509827584, 47551509827584,
2257STORE, 47551509827584, 47551509831679,
2258STORE, 47551509831680, 47551509848063,
2259STORE, 47551509835776, 47551509848063,
2260STORE, 47551509831680, 47551509835775,
2261ERASE, 47551509831680, 47551509831680,
2262STORE, 47551509831680, 47551509835775,
2263STORE, 47551509839872, 47551509848063,
2264STORE, 47551509835776, 47551509839871,
2265ERASE, 47551509835776, 47551509835776,
2266STORE, 47551509835776, 47551509848063,
2267ERASE, 47551509835776, 47551509835776,
2268STORE, 47551509835776, 47551509839871,
2269STORE, 47551509839872, 47551509848063,
2270ERASE, 47551509839872, 47551509839872,
2271STORE, 47551509839872, 47551509848063,
2272STORE, 47551509848064, 47551509856255,
2273ERASE, 47551509651456, 47551509651456,
2274STORE, 47551509651456, 47551509667839,
2275STORE, 47551509667840, 47551509676031,
2276ERASE, 47551509839872, 47551509839872,
2277STORE, 47551509839872, 47551509843967,
2278STORE, 47551509843968, 47551509848063,
2279ERASE, 47551509803008, 47551509803008,
2280STORE, 47551509803008, 47551509807103,
2281STORE, 47551509807104, 47551509811199,
2282ERASE, 47551507632128, 47551507632128,
2283STORE, 47551507632128, 47551507828735,
2284STORE, 47551507828736, 47551507836927,
2285ERASE, 47551504793600, 47551504793600,
2286STORE, 47551504793600, 47551504797695,
2287STORE, 47551504797696, 47551504801791,
2288ERASE, 94150123233280, 94150123233280,
2289STORE, 94150123233280, 94150123241471,
2290STORE, 94150123241472, 94150123245567,
2291ERASE, 140081290534912, 140081290534912,
2292STORE, 140081290534912, 140081290539007,
2293STORE, 140081290539008, 140081290543103,
2294ERASE, 47551504621568, 47551504621568,
2295STORE, 94150148112384, 94150148247551,
2296STORE, 140737488347136, 140737488351231,
2297STORE, 140734389334016, 140737488351231,
2298ERASE, 140734389334016, 140734389334016,
2299STORE, 140734389334016, 140734389338111,
2300STORE, 94844636606464, 94844636778495,
2301ERASE, 94844636606464, 94844636606464,
2302STORE, 94844636606464, 94844636622847,
2303STORE, 94844636622848, 94844636778495,
2304ERASE, 94844636622848, 94844636622848,
2305STORE, 94844636622848, 94844636725247,
2306STORE, 94844636725248, 94844636766207,
2307STORE, 94844636766208, 94844636778495,
2308STORE, 139922765217792, 139922765389823,
2309ERASE, 139922765217792, 139922765217792,
2310STORE, 139922765217792, 139922765221887,
2311STORE, 139922765221888, 139922765389823,
2312ERASE, 139922765221888, 139922765221888,
2313STORE, 139922765221888, 139922765344767,
2314STORE, 139922765344768, 139922765377535,
2315STORE, 139922765377536, 139922765385727,
2316STORE, 139922765385728, 139922765389823,
2317STORE, 140734389678080, 140734389682175,
2318STORE, 140734389665792, 140734389678079,
2319STORE, 47710029778944, 47710029787135,
2320STORE, 47710029787136, 47710029795327,
2321STORE, 47710029795328, 47710029959167,
2322ERASE, 47710029795328, 47710029795328,
2323STORE, 47710029795328, 47710029807615,
2324STORE, 47710029807616, 47710029959167,
2325STORE, 47710029905920, 47710029959167,
2326STORE, 47710029807616, 47710029905919,
2327ERASE, 47710029807616, 47710029807616,
2328STORE, 47710029807616, 47710029905919,
2329STORE, 47710029950976, 47710029959167,
2330STORE, 47710029905920, 47710029950975,
2331ERASE, 47710029905920, 47710029905920,
2332STORE, 47710029905920, 47710029959167,
2333ERASE, 47710029905920, 47710029905920,
2334STORE, 47710029905920, 47710029950975,
2335STORE, 47710029950976, 47710029959167,
2336ERASE, 47710029950976, 47710029950976,
2337STORE, 47710029950976, 47710029959167,
2338STORE, 47710029959168, 47710033010687,
2339STORE, 47710030503936, 47710033010687,
2340STORE, 47710029959168, 47710030503935,
2341ERASE, 47710030503936, 47710030503936,
2342STORE, 47710030503936, 47710032789503,
2343STORE, 47710032789504, 47710033010687,
2344STORE, 47710032199680, 47710032789503,
2345STORE, 47710030503936, 47710032199679,
2346ERASE, 47710030503936, 47710030503936,
2347STORE, 47710030503936, 47710032199679,
2348STORE, 47710032785408, 47710032789503,
2349STORE, 47710032199680, 47710032785407,
2350ERASE, 47710032199680, 47710032199680,
2351STORE, 47710032199680, 47710032785407,
2352STORE, 47710032994304, 47710033010687,
2353STORE, 47710032789504, 47710032994303,
2354ERASE, 47710032789504, 47710032789504,
2355STORE, 47710032789504, 47710032994303,
2356ERASE, 47710032994304, 47710032994304,
2357STORE, 47710032994304, 47710033010687,
2358STORE, 47710033010688, 47710034849791,
2359STORE, 47710033149952, 47710034849791,
2360STORE, 47710033010688, 47710033149951,
2361ERASE, 47710033149952, 47710033149952,
2362STORE, 47710033149952, 47710034808831,
2363STORE, 47710034808832, 47710034849791,
2364STORE, 47710034493440, 47710034808831,
2365STORE, 47710033149952, 47710034493439,
2366ERASE, 47710033149952, 47710033149952,
2367STORE, 47710033149952, 47710034493439,
2368STORE, 47710034804736, 47710034808831,
2369STORE, 47710034493440, 47710034804735,
2370ERASE, 47710034493440, 47710034493440,
2371STORE, 47710034493440, 47710034804735,
2372STORE, 47710034833408, 47710034849791,
2373STORE, 47710034808832, 47710034833407,
2374ERASE, 47710034808832, 47710034808832,
2375STORE, 47710034808832, 47710034833407,
2376ERASE, 47710034833408, 47710034833408,
2377STORE, 47710034833408, 47710034849791,
2378STORE, 47710034849792, 47710034984959,
2379ERASE, 47710034849792, 47710034849792,
2380STORE, 47710034849792, 47710034874367,
2381STORE, 47710034874368, 47710034984959,
2382STORE, 47710034935808, 47710034984959,
2383STORE, 47710034874368, 47710034935807,
2384ERASE, 47710034874368, 47710034874368,
2385STORE, 47710034874368, 47710034935807,
2386STORE, 47710034960384, 47710034984959,
2387STORE, 47710034935808, 47710034960383,
2388ERASE, 47710034935808, 47710034935808,
2389STORE, 47710034935808, 47710034984959,
2390ERASE, 47710034935808, 47710034935808,
2391STORE, 47710034935808, 47710034960383,
2392STORE, 47710034960384, 47710034984959,
2393STORE, 47710034968576, 47710034984959,
2394STORE, 47710034960384, 47710034968575,
2395ERASE, 47710034960384, 47710034960384,
2396STORE, 47710034960384, 47710034968575,
2397ERASE, 47710034968576, 47710034968576,
2398STORE, 47710034968576, 47710034984959,
2399STORE, 47710034984960, 47710035005439,
2400ERASE, 47710034984960, 47710034984960,
2401STORE, 47710034984960, 47710034989055,
2402STORE, 47710034989056, 47710035005439,
2403STORE, 47710034993152, 47710035005439,
2404STORE, 47710034989056, 47710034993151,
2405ERASE, 47710034989056, 47710034989056,
2406STORE, 47710034989056, 47710034993151,
2407STORE, 47710034997248, 47710035005439,
2408STORE, 47710034993152, 47710034997247,
2409ERASE, 47710034993152, 47710034993152,
2410STORE, 47710034993152, 47710035005439,
2411ERASE, 47710034993152, 47710034993152,
2412STORE, 47710034993152, 47710034997247,
2413STORE, 47710034997248, 47710035005439,
2414ERASE, 47710034997248, 47710034997248,
2415STORE, 47710034997248, 47710035005439,
2416STORE, 47710035005440, 47710035013631,
2417ERASE, 47710034808832, 47710034808832,
2418STORE, 47710034808832, 47710034825215,
2419STORE, 47710034825216, 47710034833407,
2420ERASE, 47710034997248, 47710034997248,
2421STORE, 47710034997248, 47710035001343,
2422STORE, 47710035001344, 47710035005439,
2423ERASE, 47710034960384, 47710034960384,
2424STORE, 47710034960384, 47710034964479,
2425STORE, 47710034964480, 47710034968575,
2426ERASE, 47710032789504, 47710032789504,
2427STORE, 47710032789504, 47710032986111,
2428STORE, 47710032986112, 47710032994303,
2429ERASE, 47710029950976, 47710029950976,
2430STORE, 47710029950976, 47710029955071,
2431STORE, 47710029955072, 47710029959167,
2432ERASE, 94844636766208, 94844636766208,
2433STORE, 94844636766208, 94844636774399,
2434STORE, 94844636774400, 94844636778495,
2435ERASE, 139922765377536, 139922765377536,
2436STORE, 139922765377536, 139922765381631,
2437STORE, 139922765381632, 139922765385727,
2438ERASE, 47710029778944, 47710029778944,
2439STORE, 94844641775616, 94844641910783,
2440STORE, 140737488347136, 140737488351231,
2441STORE, 140732213886976, 140737488351231,
2442ERASE, 140732213886976, 140732213886976,
2443STORE, 140732213886976, 140732213891071,
2444STORE, 94240508887040, 94240509059071,
2445ERASE, 94240508887040, 94240508887040,
2446STORE, 94240508887040, 94240508903423,
2447STORE, 94240508903424, 94240509059071,
2448ERASE, 94240508903424, 94240508903424,
2449STORE, 94240508903424, 94240509005823,
2450STORE, 94240509005824, 94240509046783,
2451STORE, 94240509046784, 94240509059071,
2452STORE, 140275106516992, 140275106689023,
2453ERASE, 140275106516992, 140275106516992,
2454STORE, 140275106516992, 140275106521087,
2455STORE, 140275106521088, 140275106689023,
2456ERASE, 140275106521088, 140275106521088,
2457STORE, 140275106521088, 140275106643967,
2458STORE, 140275106643968, 140275106676735,
2459STORE, 140275106676736, 140275106684927,
2460STORE, 140275106684928, 140275106689023,
2461STORE, 140732213977088, 140732213981183,
2462STORE, 140732213964800, 140732213977087,
2463STORE, 47357688479744, 47357688487935,
2464STORE, 47357688487936, 47357688496127,
2465STORE, 47357688496128, 47357688659967,
2466ERASE, 47357688496128, 47357688496128,
2467STORE, 47357688496128, 47357688508415,
2468STORE, 47357688508416, 47357688659967,
2469STORE, 47357688606720, 47357688659967,
2470STORE, 47357688508416, 47357688606719,
2471ERASE, 47357688508416, 47357688508416,
2472STORE, 47357688508416, 47357688606719,
2473STORE, 47357688651776, 47357688659967,
2474STORE, 47357688606720, 47357688651775,
2475ERASE, 47357688606720, 47357688606720,
2476STORE, 47357688606720, 47357688659967,
2477ERASE, 47357688606720, 47357688606720,
2478STORE, 47357688606720, 47357688651775,
2479STORE, 47357688651776, 47357688659967,
2480ERASE, 47357688651776, 47357688651776,
2481STORE, 47357688651776, 47357688659967,
2482STORE, 47357688659968, 47357691711487,
2483STORE, 47357689204736, 47357691711487,
2484STORE, 47357688659968, 47357689204735,
2485ERASE, 47357689204736, 47357689204736,
2486STORE, 47357689204736, 47357691490303,
2487STORE, 47357691490304, 47357691711487,
2488STORE, 47357690900480, 47357691490303,
2489STORE, 47357689204736, 47357690900479,
2490ERASE, 47357689204736, 47357689204736,
2491STORE, 47357689204736, 47357690900479,
2492STORE, 47357691486208, 47357691490303,
2493STORE, 47357690900480, 47357691486207,
2494ERASE, 47357690900480, 47357690900480,
2495STORE, 47357690900480, 47357691486207,
2496STORE, 47357691695104, 47357691711487,
2497STORE, 47357691490304, 47357691695103,
2498ERASE, 47357691490304, 47357691490304,
2499STORE, 47357691490304, 47357691695103,
2500ERASE, 47357691695104, 47357691695104,
2501STORE, 47357691695104, 47357691711487,
2502STORE, 47357691711488, 47357693550591,
2503STORE, 47357691850752, 47357693550591,
2504STORE, 47357691711488, 47357691850751,
2505ERASE, 47357691850752, 47357691850752,
2506STORE, 47357691850752, 47357693509631,
2507STORE, 47357693509632, 47357693550591,
2508STORE, 47357693194240, 47357693509631,
2509STORE, 47357691850752, 47357693194239,
2510ERASE, 47357691850752, 47357691850752,
2511STORE, 47357691850752, 47357693194239,
2512STORE, 47357693505536, 47357693509631,
2513STORE, 47357693194240, 47357693505535,
2514ERASE, 47357693194240, 47357693194240,
2515STORE, 47357693194240, 47357693505535,
2516STORE, 47357693534208, 47357693550591,
2517STORE, 47357693509632, 47357693534207,
2518ERASE, 47357693509632, 47357693509632,
2519STORE, 47357693509632, 47357693534207,
2520ERASE, 47357693534208, 47357693534208,
2521STORE, 47357693534208, 47357693550591,
2522STORE, 47357693550592, 47357693685759,
2523ERASE, 47357693550592, 47357693550592,
2524STORE, 47357693550592, 47357693575167,
2525STORE, 47357693575168, 47357693685759,
2526STORE, 47357693636608, 47357693685759,
2527STORE, 47357693575168, 47357693636607,
2528ERASE, 47357693575168, 47357693575168,
2529STORE, 47357693575168, 47357693636607,
2530STORE, 47357693661184, 47357693685759,
2531STORE, 47357693636608, 47357693661183,
2532ERASE, 47357693636608, 47357693636608,
2533STORE, 47357693636608, 47357693685759,
2534ERASE, 47357693636608, 47357693636608,
2535STORE, 47357693636608, 47357693661183,
2536STORE, 47357693661184, 47357693685759,
2537STORE, 47357693669376, 47357693685759,
2538STORE, 47357693661184, 47357693669375,
2539ERASE, 47357693661184, 47357693661184,
2540STORE, 47357693661184, 47357693669375,
2541ERASE, 47357693669376, 47357693669376,
2542STORE, 47357693669376, 47357693685759,
2543STORE, 47357693685760, 47357693706239,
2544ERASE, 47357693685760, 47357693685760,
2545STORE, 47357693685760, 47357693689855,
2546STORE, 47357693689856, 47357693706239,
2547STORE, 47357693693952, 47357693706239,
2548STORE, 47357693689856, 47357693693951,
2549ERASE, 47357693689856, 47357693689856,
2550STORE, 47357693689856, 47357693693951,
2551STORE, 47357693698048, 47357693706239,
2552STORE, 47357693693952, 47357693698047,
2553ERASE, 47357693693952, 47357693693952,
2554STORE, 47357693693952, 47357693706239,
2555ERASE, 47357693693952, 47357693693952,
2556STORE, 47357693693952, 47357693698047,
2557STORE, 47357693698048, 47357693706239,
2558ERASE, 47357693698048, 47357693698048,
2559STORE, 47357693698048, 47357693706239,
2560STORE, 47357693706240, 47357693714431,
2561ERASE, 47357693509632, 47357693509632,
2562STORE, 47357693509632, 47357693526015,
2563STORE, 47357693526016, 47357693534207,
2564ERASE, 47357693698048, 47357693698048,
2565STORE, 47357693698048, 47357693702143,
2566STORE, 47357693702144, 47357693706239,
2567ERASE, 47357693661184, 47357693661184,
2568STORE, 47357693661184, 47357693665279,
2569STORE, 47357693665280, 47357693669375,
2570ERASE, 47357691490304, 47357691490304,
2571STORE, 47357691490304, 47357691686911,
2572STORE, 47357691686912, 47357691695103,
2573ERASE, 47357688651776, 47357688651776,
2574STORE, 47357688651776, 47357688655871,
2575STORE, 47357688655872, 47357688659967,
2576ERASE, 94240509046784, 94240509046784,
2577STORE, 94240509046784, 94240509054975,
2578STORE, 94240509054976, 94240509059071,
2579ERASE, 140275106676736, 140275106676736,
2580STORE, 140275106676736, 140275106680831,
2581STORE, 140275106680832, 140275106684927,
2582ERASE, 47357688479744, 47357688479744,
2583STORE, 94240518361088, 94240518496255,
2584STORE, 140737488347136, 140737488351231,
2585STORE, 140732688277504, 140737488351231,
2586ERASE, 140732688277504, 140732688277504,
2587STORE, 140732688277504, 140732688281599,
2588STORE, 94629171351552, 94629172064255,
2589ERASE, 94629171351552, 94629171351552,
2590STORE, 94629171351552, 94629171400703,
2591STORE, 94629171400704, 94629172064255,
2592ERASE, 94629171400704, 94629171400704,
2593STORE, 94629171400704, 94629171945471,
2594STORE, 94629171945472, 94629172043775,
2595STORE, 94629172043776, 94629172064255,
2596STORE, 139770707644416, 139770707816447,
2597ERASE, 139770707644416, 139770707644416,
2598STORE, 139770707644416, 139770707648511,
2599STORE, 139770707648512, 139770707816447,
2600ERASE, 139770707648512, 139770707648512,
2601STORE, 139770707648512, 139770707771391,
2602STORE, 139770707771392, 139770707804159,
2603STORE, 139770707804160, 139770707812351,
2604STORE, 139770707812352, 139770707816447,
2605STORE, 140732689121280, 140732689125375,
2606STORE, 140732689108992, 140732689121279,
2607STORE, 47862087352320, 47862087360511,
2608STORE, 47862087360512, 47862087368703,
2609STORE, 47862087368704, 47862087475199,
2610STORE, 47862087385088, 47862087475199,
2611STORE, 47862087368704, 47862087385087,
2612ERASE, 47862087385088, 47862087385088,
2613STORE, 47862087385088, 47862087458815,
2614STORE, 47862087458816, 47862087475199,
2615STORE, 47862087438336, 47862087458815,
2616STORE, 47862087385088, 47862087438335,
2617ERASE, 47862087385088, 47862087385088,
2618STORE, 47862087385088, 47862087438335,
2619STORE, 47862087454720, 47862087458815,
2620STORE, 47862087438336, 47862087454719,
2621ERASE, 47862087438336, 47862087438336,
2622STORE, 47862087438336, 47862087454719,
2623STORE, 47862087467008, 47862087475199,
2624STORE, 47862087458816, 47862087467007,
2625ERASE, 47862087458816, 47862087458816,
2626STORE, 47862087458816, 47862087467007,
2627ERASE, 47862087467008, 47862087467008,
2628STORE, 47862087467008, 47862087475199,
2629STORE, 47862087475200, 47862089314303,
2630STORE, 47862087614464, 47862089314303,
2631STORE, 47862087475200, 47862087614463,
2632ERASE, 47862087614464, 47862087614464,
2633STORE, 47862087614464, 47862089273343,
2634STORE, 47862089273344, 47862089314303,
2635STORE, 47862088957952, 47862089273343,
2636STORE, 47862087614464, 47862088957951,
2637ERASE, 47862087614464, 47862087614464,
2638STORE, 47862087614464, 47862088957951,
2639STORE, 47862089269248, 47862089273343,
2640STORE, 47862088957952, 47862089269247,
2641ERASE, 47862088957952, 47862088957952,
2642STORE, 47862088957952, 47862089269247,
2643STORE, 47862089297920, 47862089314303,
2644STORE, 47862089273344, 47862089297919,
2645ERASE, 47862089273344, 47862089273344,
2646STORE, 47862089273344, 47862089297919,
2647ERASE, 47862089297920, 47862089297920,
2648STORE, 47862089297920, 47862089314303,
2649STORE, 47862089297920, 47862089326591,
2650ERASE, 47862089273344, 47862089273344,
2651STORE, 47862089273344, 47862089289727,
2652STORE, 47862089289728, 47862089297919,
2653ERASE, 47862087458816, 47862087458816,
2654STORE, 47862087458816, 47862087462911,
2655STORE, 47862087462912, 47862087467007,
2656ERASE, 94629172043776, 94629172043776,
2657STORE, 94629172043776, 94629172060159,
2658STORE, 94629172060160, 94629172064255,
2659ERASE, 139770707804160, 139770707804160,
2660STORE, 139770707804160, 139770707808255,
2661STORE, 139770707808256, 139770707812351,
2662ERASE, 47862087352320, 47862087352320,
2663STORE, 94629197533184, 94629197668351,
2664STORE, 140737488347136, 140737488351231,
2665STORE, 140727540711424, 140737488351231,
2666ERASE, 140727540711424, 140727540711424,
2667STORE, 140727540711424, 140727540715519,
2668STORE, 94299865313280, 94299866025983,
2669ERASE, 94299865313280, 94299865313280,
2670STORE, 94299865313280, 94299865362431,
2671STORE, 94299865362432, 94299866025983,
2672ERASE, 94299865362432, 94299865362432,
2673STORE, 94299865362432, 94299865907199,
2674STORE, 94299865907200, 94299866005503,
2675STORE, 94299866005504, 94299866025983,
2676STORE, 140680268763136, 140680268935167,
2677ERASE, 140680268763136, 140680268763136,
2678STORE, 140680268763136, 140680268767231,
2679STORE, 140680268767232, 140680268935167,
2680ERASE, 140680268767232, 140680268767232,
2681STORE, 140680268767232, 140680268890111,
2682STORE, 140680268890112, 140680268922879,
2683STORE, 140680268922880, 140680268931071,
2684STORE, 140680268931072, 140680268935167,
2685STORE, 140727541424128, 140727541428223,
2686STORE, 140727541411840, 140727541424127,
2687STORE, 46952526233600, 46952526241791,
2688STORE, 46952526241792, 46952526249983,
2689STORE, 46952526249984, 46952526356479,
2690STORE, 46952526266368, 46952526356479,
2691STORE, 46952526249984, 46952526266367,
2692ERASE, 46952526266368, 46952526266368,
2693STORE, 46952526266368, 46952526340095,
2694STORE, 46952526340096, 46952526356479,
2695STORE, 46952526319616, 46952526340095,
2696STORE, 46952526266368, 46952526319615,
2697ERASE, 46952526266368, 46952526266368,
2698STORE, 46952526266368, 46952526319615,
2699STORE, 46952526336000, 46952526340095,
2700STORE, 46952526319616, 46952526335999,
2701ERASE, 46952526319616, 46952526319616,
2702STORE, 46952526319616, 46952526335999,
2703STORE, 46952526348288, 46952526356479,
2704STORE, 46952526340096, 46952526348287,
2705ERASE, 46952526340096, 46952526340096,
2706STORE, 46952526340096, 46952526348287,
2707ERASE, 46952526348288, 46952526348288,
2708STORE, 46952526348288, 46952526356479,
2709STORE, 46952526356480, 46952528195583,
2710STORE, 46952526495744, 46952528195583,
2711STORE, 46952526356480, 46952526495743,
2712ERASE, 46952526495744, 46952526495744,
2713STORE, 46952526495744, 46952528154623,
2714STORE, 46952528154624, 46952528195583,
2715STORE, 46952527839232, 46952528154623,
2716STORE, 46952526495744, 46952527839231,
2717ERASE, 46952526495744, 46952526495744,
2718STORE, 46952526495744, 46952527839231,
2719STORE, 46952528150528, 46952528154623,
2720STORE, 46952527839232, 46952528150527,
2721ERASE, 46952527839232, 46952527839232,
2722STORE, 46952527839232, 46952528150527,
2723STORE, 46952528179200, 46952528195583,
2724STORE, 46952528154624, 46952528179199,
2725ERASE, 46952528154624, 46952528154624,
2726STORE, 46952528154624, 46952528179199,
2727ERASE, 46952528179200, 46952528179200,
2728STORE, 46952528179200, 46952528195583,
2729STORE, 46952528179200, 46952528207871,
2730ERASE, 46952528154624, 46952528154624,
2731STORE, 46952528154624, 46952528171007,
2732STORE, 46952528171008, 46952528179199,
2733ERASE, 46952526340096, 46952526340096,
2734STORE, 46952526340096, 46952526344191,
2735STORE, 46952526344192, 46952526348287,
2736ERASE, 94299866005504, 94299866005504,
2737STORE, 94299866005504, 94299866021887,
2738STORE, 94299866021888, 94299866025983,
2739ERASE, 140680268922880, 140680268922880,
2740STORE, 140680268922880, 140680268926975,
2741STORE, 140680268926976, 140680268931071,
2742ERASE, 46952526233600, 46952526233600,
2743STORE, 140737488347136, 140737488351231,
2744STORE, 140722874793984, 140737488351231,
2745ERASE, 140722874793984, 140722874793984,
2746STORE, 140722874793984, 140722874798079,
2747STORE, 94448916213760, 94448916926463,
2748ERASE, 94448916213760, 94448916213760,
2749STORE, 94448916213760, 94448916262911,
2750STORE, 94448916262912, 94448916926463,
2751ERASE, 94448916262912, 94448916262912,
2752STORE, 94448916262912, 94448916807679,
2753STORE, 94448916807680, 94448916905983,
2754STORE, 94448916905984, 94448916926463,
2755STORE, 140389117046784, 140389117218815,
2756ERASE, 140389117046784, 140389117046784,
2757STORE, 140389117046784, 140389117050879,
2758STORE, 140389117050880, 140389117218815,
2759ERASE, 140389117050880, 140389117050880,
2760STORE, 140389117050880, 140389117173759,
2761STORE, 140389117173760, 140389117206527,
2762STORE, 140389117206528, 140389117214719,
2763STORE, 140389117214720, 140389117218815,
2764STORE, 140722875297792, 140722875301887,
2765STORE, 140722875285504, 140722875297791,
2766STORE, 47243677949952, 47243677958143,
2767STORE, 47243677958144, 47243677966335,
2768STORE, 47243677966336, 47243678072831,
2769STORE, 47243677982720, 47243678072831,
2770STORE, 47243677966336, 47243677982719,
2771ERASE, 47243677982720, 47243677982720,
2772STORE, 47243677982720, 47243678056447,
2773STORE, 47243678056448, 47243678072831,
2774STORE, 47243678035968, 47243678056447,
2775STORE, 47243677982720, 47243678035967,
2776ERASE, 47243677982720, 47243677982720,
2777STORE, 47243677982720, 47243678035967,
2778STORE, 47243678052352, 47243678056447,
2779STORE, 47243678035968, 47243678052351,
2780ERASE, 47243678035968, 47243678035968,
2781STORE, 47243678035968, 47243678052351,
2782STORE, 47243678064640, 47243678072831,
2783STORE, 47243678056448, 47243678064639,
2784ERASE, 47243678056448, 47243678056448,
2785STORE, 47243678056448, 47243678064639,
2786ERASE, 47243678064640, 47243678064640,
2787STORE, 47243678064640, 47243678072831,
2788STORE, 47243678072832, 47243679911935,
2789STORE, 47243678212096, 47243679911935,
2790STORE, 47243678072832, 47243678212095,
2791ERASE, 47243678212096, 47243678212096,
2792STORE, 47243678212096, 47243679870975,
2793STORE, 47243679870976, 47243679911935,
2794STORE, 47243679555584, 47243679870975,
2795STORE, 47243678212096, 47243679555583,
2796ERASE, 47243678212096, 47243678212096,
2797STORE, 47243678212096, 47243679555583,
2798STORE, 47243679866880, 47243679870975,
2799STORE, 47243679555584, 47243679866879,
2800ERASE, 47243679555584, 47243679555584,
2801STORE, 47243679555584, 47243679866879,
2802STORE, 47243679895552, 47243679911935,
2803STORE, 47243679870976, 47243679895551,
2804ERASE, 47243679870976, 47243679870976,
2805STORE, 47243679870976, 47243679895551,
2806ERASE, 47243679895552, 47243679895552,
2807STORE, 47243679895552, 47243679911935,
2808STORE, 47243679895552, 47243679924223,
2809ERASE, 47243679870976, 47243679870976,
2810STORE, 47243679870976, 47243679887359,
2811STORE, 47243679887360, 47243679895551,
2812ERASE, 47243678056448, 47243678056448,
2813STORE, 47243678056448, 47243678060543,
2814STORE, 47243678060544, 47243678064639,
2815ERASE, 94448916905984, 94448916905984,
2816STORE, 94448916905984, 94448916922367,
2817STORE, 94448916922368, 94448916926463,
2818ERASE, 140389117206528, 140389117206528,
2819STORE, 140389117206528, 140389117210623,
2820STORE, 140389117210624, 140389117214719,
2821ERASE, 47243677949952, 47243677949952,
2822STORE, 140737488347136, 140737488351231,
2823STORE, 140733068505088, 140737488351231,
2824ERASE, 140733068505088, 140733068505088,
2825STORE, 140733068505088, 140733068509183,
2826STORE, 94207145750528, 94207146463231,
2827ERASE, 94207145750528, 94207145750528,
2828STORE, 94207145750528, 94207145799679,
2829STORE, 94207145799680, 94207146463231,
2830ERASE, 94207145799680, 94207145799680,
2831STORE, 94207145799680, 94207146344447,
2832STORE, 94207146344448, 94207146442751,
2833STORE, 94207146442752, 94207146463231,
2834STORE, 140684504911872, 140684505083903,
2835ERASE, 140684504911872, 140684504911872,
2836STORE, 140684504911872, 140684504915967,
2837STORE, 140684504915968, 140684505083903,
2838ERASE, 140684504915968, 140684504915968,
2839STORE, 140684504915968, 140684505038847,
2840STORE, 140684505038848, 140684505071615,
2841STORE, 140684505071616, 140684505079807,
2842STORE, 140684505079808, 140684505083903,
2843STORE, 140733068607488, 140733068611583,
2844STORE, 140733068595200, 140733068607487,
2845STORE, 46948290084864, 46948290093055,
2846STORE, 46948290093056, 46948290101247,
2847STORE, 46948290101248, 46948290207743,
2848STORE, 46948290117632, 46948290207743,
2849STORE, 46948290101248, 46948290117631,
2850ERASE, 46948290117632, 46948290117632,
2851STORE, 46948290117632, 46948290191359,
2852STORE, 46948290191360, 46948290207743,
2853STORE, 46948290170880, 46948290191359,
2854STORE, 46948290117632, 46948290170879,
2855ERASE, 46948290117632, 46948290117632,
2856STORE, 46948290117632, 46948290170879,
2857STORE, 46948290187264, 46948290191359,
2858STORE, 46948290170880, 46948290187263,
2859ERASE, 46948290170880, 46948290170880,
2860STORE, 46948290170880, 46948290187263,
2861STORE, 46948290199552, 46948290207743,
2862STORE, 46948290191360, 46948290199551,
2863ERASE, 46948290191360, 46948290191360,
2864STORE, 46948290191360, 46948290199551,
2865ERASE, 46948290199552, 46948290199552,
2866STORE, 46948290199552, 46948290207743,
2867STORE, 46948290207744, 46948292046847,
2868STORE, 46948290347008, 46948292046847,
2869STORE, 46948290207744, 46948290347007,
2870ERASE, 46948290347008, 46948290347008,
2871STORE, 46948290347008, 46948292005887,
2872STORE, 46948292005888, 46948292046847,
2873STORE, 46948291690496, 46948292005887,
2874STORE, 46948290347008, 46948291690495,
2875ERASE, 46948290347008, 46948290347008,
2876STORE, 46948290347008, 46948291690495,
2877STORE, 46948292001792, 46948292005887,
2878STORE, 46948291690496, 46948292001791,
2879ERASE, 46948291690496, 46948291690496,
2880STORE, 46948291690496, 46948292001791,
2881STORE, 46948292030464, 46948292046847,
2882STORE, 46948292005888, 46948292030463,
2883ERASE, 46948292005888, 46948292005888,
2884STORE, 46948292005888, 46948292030463,
2885ERASE, 46948292030464, 46948292030464,
2886STORE, 46948292030464, 46948292046847,
2887STORE, 46948292030464, 46948292059135,
2888ERASE, 46948292005888, 46948292005888,
2889STORE, 46948292005888, 46948292022271,
2890STORE, 46948292022272, 46948292030463,
2891ERASE, 46948290191360, 46948290191360,
2892STORE, 46948290191360, 46948290195455,
2893STORE, 46948290195456, 46948290199551,
2894ERASE, 94207146442752, 94207146442752,
2895STORE, 94207146442752, 94207146459135,
2896STORE, 94207146459136, 94207146463231,
2897ERASE, 140684505071616, 140684505071616,
2898STORE, 140684505071616, 140684505075711,
2899STORE, 140684505075712, 140684505079807,
2900ERASE, 46948290084864, 46948290084864,
2901STORE, 140737488347136, 140737488351231,
2902STORE, 140726367158272, 140737488351231,
2903ERASE, 140726367158272, 140726367158272,
2904STORE, 140726367158272, 140726367162367,
2905STORE, 94436124106752, 94436124819455,
2906ERASE, 94436124106752, 94436124106752,
2907STORE, 94436124106752, 94436124155903,
2908STORE, 94436124155904, 94436124819455,
2909ERASE, 94436124155904, 94436124155904,
2910STORE, 94436124155904, 94436124700671,
2911STORE, 94436124700672, 94436124798975,
2912STORE, 94436124798976, 94436124819455,
2913STORE, 140049025044480, 140049025216511,
2914ERASE, 140049025044480, 140049025044480,
2915STORE, 140049025044480, 140049025048575,
2916STORE, 140049025048576, 140049025216511,
2917ERASE, 140049025048576, 140049025048576,
2918STORE, 140049025048576, 140049025171455,
2919STORE, 140049025171456, 140049025204223,
2920STORE, 140049025204224, 140049025212415,
2921STORE, 140049025212416, 140049025216511,
2922STORE, 140726367256576, 140726367260671,
2923STORE, 140726367244288, 140726367256575,
2924STORE, 47583769952256, 47583769960447,
2925STORE, 47583769960448, 47583769968639,
2926STORE, 47583769968640, 47583770075135,
2927STORE, 47583769985024, 47583770075135,
2928STORE, 47583769968640, 47583769985023,
2929ERASE, 47583769985024, 47583769985024,
2930STORE, 47583769985024, 47583770058751,
2931STORE, 47583770058752, 47583770075135,
2932STORE, 47583770038272, 47583770058751,
2933STORE, 47583769985024, 47583770038271,
2934ERASE, 47583769985024, 47583769985024,
2935STORE, 47583769985024, 47583770038271,
2936STORE, 47583770054656, 47583770058751,
2937STORE, 47583770038272, 47583770054655,
2938ERASE, 47583770038272, 47583770038272,
2939STORE, 47583770038272, 47583770054655,
2940STORE, 47583770066944, 47583770075135,
2941STORE, 47583770058752, 47583770066943,
2942ERASE, 47583770058752, 47583770058752,
2943STORE, 47583770058752, 47583770066943,
2944ERASE, 47583770066944, 47583770066944,
2945STORE, 47583770066944, 47583770075135,
2946STORE, 47583770075136, 47583771914239,
2947STORE, 47583770214400, 47583771914239,
2948STORE, 47583770075136, 47583770214399,
2949ERASE, 47583770214400, 47583770214400,
2950STORE, 47583770214400, 47583771873279,
2951STORE, 47583771873280, 47583771914239,
2952STORE, 47583771557888, 47583771873279,
2953STORE, 47583770214400, 47583771557887,
2954ERASE, 47583770214400, 47583770214400,
2955STORE, 47583770214400, 47583771557887,
2956STORE, 47583771869184, 47583771873279,
2957STORE, 47583771557888, 47583771869183,
2958ERASE, 47583771557888, 47583771557888,
2959STORE, 47583771557888, 47583771869183,
2960STORE, 47583771897856, 47583771914239,
2961STORE, 47583771873280, 47583771897855,
2962ERASE, 47583771873280, 47583771873280,
2963STORE, 47583771873280, 47583771897855,
2964ERASE, 47583771897856, 47583771897856,
2965STORE, 47583771897856, 47583771914239,
2966STORE, 47583771897856, 47583771926527,
2967ERASE, 47583771873280, 47583771873280,
2968STORE, 47583771873280, 47583771889663,
2969STORE, 47583771889664, 47583771897855,
2970ERASE, 47583770058752, 47583770058752,
2971STORE, 47583770058752, 47583770062847,
2972STORE, 47583770062848, 47583770066943,
2973ERASE, 94436124798976, 94436124798976,
2974STORE, 94436124798976, 94436124815359,
2975STORE, 94436124815360, 94436124819455,
2976ERASE, 140049025204224, 140049025204224,
2977STORE, 140049025204224, 140049025208319,
2978STORE, 140049025208320, 140049025212415,
2979ERASE, 47583769952256, 47583769952256,
2980STORE, 140737488347136, 140737488351231,
2981STORE, 140727116099584, 140737488351231,
2982ERASE, 140727116099584, 140727116099584,
2983STORE, 140727116099584, 140727116103679,
2984STORE, 94166319734784, 94166320447487,
2985ERASE, 94166319734784, 94166319734784,
2986STORE, 94166319734784, 94166319783935,
2987STORE, 94166319783936, 94166320447487,
2988ERASE, 94166319783936, 94166319783936,
2989STORE, 94166319783936, 94166320328703,
2990STORE, 94166320328704, 94166320427007,
2991STORE, 94166320427008, 94166320447487,
2992STORE, 139976559542272, 139976559714303,
2993ERASE, 139976559542272, 139976559542272,
2994STORE, 139976559542272, 139976559546367,
2995STORE, 139976559546368, 139976559714303,
2996ERASE, 139976559546368, 139976559546368,
2997STORE, 139976559546368, 139976559669247,
2998STORE, 139976559669248, 139976559702015,
2999STORE, 139976559702016, 139976559710207,
3000STORE, 139976559710208, 139976559714303,
3001STORE, 140727116222464, 140727116226559,
3002STORE, 140727116210176, 140727116222463,
3003STORE, 47656235454464, 47656235462655,
3004STORE, 47656235462656, 47656235470847,
3005STORE, 47656235470848, 47656235577343,
3006STORE, 47656235487232, 47656235577343,
3007STORE, 47656235470848, 47656235487231,
3008ERASE, 47656235487232, 47656235487232,
3009STORE, 47656235487232, 47656235560959,
3010STORE, 47656235560960, 47656235577343,
3011STORE, 47656235540480, 47656235560959,
3012STORE, 47656235487232, 47656235540479,
3013ERASE, 47656235487232, 47656235487232,
3014STORE, 47656235487232, 47656235540479,
3015STORE, 47656235556864, 47656235560959,
3016STORE, 47656235540480, 47656235556863,
3017ERASE, 47656235540480, 47656235540480,
3018STORE, 47656235540480, 47656235556863,
3019STORE, 47656235569152, 47656235577343,
3020STORE, 47656235560960, 47656235569151,
3021ERASE, 47656235560960, 47656235560960,
3022STORE, 47656235560960, 47656235569151,
3023ERASE, 47656235569152, 47656235569152,
3024STORE, 47656235569152, 47656235577343,
3025STORE, 47656235577344, 47656237416447,
3026STORE, 47656235716608, 47656237416447,
3027STORE, 47656235577344, 47656235716607,
3028ERASE, 47656235716608, 47656235716608,
3029STORE, 47656235716608, 47656237375487,
3030STORE, 47656237375488, 47656237416447,
3031STORE, 47656237060096, 47656237375487,
3032STORE, 47656235716608, 47656237060095,
3033ERASE, 47656235716608, 47656235716608,
3034STORE, 47656235716608, 47656237060095,
3035STORE, 47656237371392, 47656237375487,
3036STORE, 47656237060096, 47656237371391,
3037ERASE, 47656237060096, 47656237060096,
3038STORE, 47656237060096, 47656237371391,
3039STORE, 47656237400064, 47656237416447,
3040STORE, 47656237375488, 47656237400063,
3041ERASE, 47656237375488, 47656237375488,
3042STORE, 47656237375488, 47656237400063,
3043ERASE, 47656237400064, 47656237400064,
3044STORE, 47656237400064, 47656237416447,
3045STORE, 47656237400064, 47656237428735,
3046ERASE, 47656237375488, 47656237375488,
3047STORE, 47656237375488, 47656237391871,
3048STORE, 47656237391872, 47656237400063,
3049ERASE, 47656235560960, 47656235560960,
3050STORE, 47656235560960, 47656235565055,
3051STORE, 47656235565056, 47656235569151,
3052ERASE, 94166320427008, 94166320427008,
3053STORE, 94166320427008, 94166320443391,
3054STORE, 94166320443392, 94166320447487,
3055ERASE, 139976559702016, 139976559702016,
3056STORE, 139976559702016, 139976559706111,
3057STORE, 139976559706112, 139976559710207,
3058ERASE, 47656235454464, 47656235454464,
3059STORE, 94166332153856, 94166332289023,
3060STORE, 140737488347136, 140737488351231,
3061STORE, 140726412816384, 140737488351231,
3062ERASE, 140726412816384, 140726412816384,
3063STORE, 140726412816384, 140726412820479,
3064STORE, 94094884507648, 94094885220351,
3065ERASE, 94094884507648, 94094884507648,
3066STORE, 94094884507648, 94094884556799,
3067STORE, 94094884556800, 94094885220351,
3068ERASE, 94094884556800, 94094884556800,
3069STORE, 94094884556800, 94094885101567,
3070STORE, 94094885101568, 94094885199871,
3071STORE, 94094885199872, 94094885220351,
3072STORE, 139773773938688, 139773774110719,
3073ERASE, 139773773938688, 139773773938688,
3074STORE, 139773773938688, 139773773942783,
3075STORE, 139773773942784, 139773774110719,
3076ERASE, 139773773942784, 139773773942784,
3077STORE, 139773773942784, 139773774065663,
3078STORE, 139773774065664, 139773774098431,
3079STORE, 139773774098432, 139773774106623,
3080STORE, 139773774106624, 139773774110719,
3081STORE, 140726412963840, 140726412967935,
3082STORE, 140726412951552, 140726412963839,
3083STORE, 47859021058048, 47859021066239,
3084STORE, 47859021066240, 47859021074431,
3085STORE, 47859021074432, 47859021180927,
3086STORE, 47859021090816, 47859021180927,
3087STORE, 47859021074432, 47859021090815,
3088ERASE, 47859021090816, 47859021090816,
3089STORE, 47859021090816, 47859021164543,
3090STORE, 47859021164544, 47859021180927,
3091STORE, 47859021144064, 47859021164543,
3092STORE, 47859021090816, 47859021144063,
3093ERASE, 47859021090816, 47859021090816,
3094STORE, 47859021090816, 47859021144063,
3095STORE, 47859021160448, 47859021164543,
3096STORE, 47859021144064, 47859021160447,
3097ERASE, 47859021144064, 47859021144064,
3098STORE, 47859021144064, 47859021160447,
3099STORE, 47859021172736, 47859021180927,
3100STORE, 47859021164544, 47859021172735,
3101ERASE, 47859021164544, 47859021164544,
3102STORE, 47859021164544, 47859021172735,
3103ERASE, 47859021172736, 47859021172736,
3104STORE, 47859021172736, 47859021180927,
3105STORE, 47859021180928, 47859023020031,
3106STORE, 47859021320192, 47859023020031,
3107STORE, 47859021180928, 47859021320191,
3108ERASE, 47859021320192, 47859021320192,
3109STORE, 47859021320192, 47859022979071,
3110STORE, 47859022979072, 47859023020031,
3111STORE, 47859022663680, 47859022979071,
3112STORE, 47859021320192, 47859022663679,
3113ERASE, 47859021320192, 47859021320192,
3114STORE, 47859021320192, 47859022663679,
3115STORE, 47859022974976, 47859022979071,
3116STORE, 47859022663680, 47859022974975,
3117ERASE, 47859022663680, 47859022663680,
3118STORE, 47859022663680, 47859022974975,
3119STORE, 47859023003648, 47859023020031,
3120STORE, 47859022979072, 47859023003647,
3121ERASE, 47859022979072, 47859022979072,
3122STORE, 47859022979072, 47859023003647,
3123ERASE, 47859023003648, 47859023003648,
3124STORE, 47859023003648, 47859023020031,
3125STORE, 47859023003648, 47859023032319,
3126ERASE, 47859022979072, 47859022979072,
3127STORE, 47859022979072, 47859022995455,
3128STORE, 47859022995456, 47859023003647,
3129ERASE, 47859021164544, 47859021164544,
3130STORE, 47859021164544, 47859021168639,
3131STORE, 47859021168640, 47859021172735,
3132ERASE, 94094885199872, 94094885199872,
3133STORE, 94094885199872, 94094885216255,
3134STORE, 94094885216256, 94094885220351,
3135ERASE, 139773774098432, 139773774098432,
3136STORE, 139773774098432, 139773774102527,
3137STORE, 139773774102528, 139773774106623,
3138ERASE, 47859021058048, 47859021058048,
3139STORE, 94094901108736, 94094901243903,
3140STORE, 140737488347136, 140737488351231,
3141STORE, 140736567963648, 140737488351231,
3142ERASE, 140736567963648, 140736567963648,
3143STORE, 140736567963648, 140736567967743,
3144STORE, 94924425748480, 94924426461183,
3145ERASE, 94924425748480, 94924425748480,
3146STORE, 94924425748480, 94924425797631,
3147STORE, 94924425797632, 94924426461183,
3148ERASE, 94924425797632, 94924425797632,
3149STORE, 94924425797632, 94924426342399,
3150STORE, 94924426342400, 94924426440703,
3151STORE, 94924426440704, 94924426461183,
3152STORE, 140042126319616, 140042126491647,
3153ERASE, 140042126319616, 140042126319616,
3154STORE, 140042126319616, 140042126323711,
3155STORE, 140042126323712, 140042126491647,
3156ERASE, 140042126323712, 140042126323712,
3157STORE, 140042126323712, 140042126446591,
3158STORE, 140042126446592, 140042126479359,
3159STORE, 140042126479360, 140042126487551,
3160STORE, 140042126487552, 140042126491647,
3161STORE, 140736568672256, 140736568676351,
3162STORE, 140736568659968, 140736568672255,
3163STORE, 47590668677120, 47590668685311,
3164STORE, 47590668685312, 47590668693503,
3165STORE, 47590668693504, 47590668799999,
3166STORE, 47590668709888, 47590668799999,
3167STORE, 47590668693504, 47590668709887,
3168ERASE, 47590668709888, 47590668709888,
3169STORE, 47590668709888, 47590668783615,
3170STORE, 47590668783616, 47590668799999,
3171STORE, 47590668763136, 47590668783615,
3172STORE, 47590668709888, 47590668763135,
3173ERASE, 47590668709888, 47590668709888,
3174STORE, 47590668709888, 47590668763135,
3175STORE, 47590668779520, 47590668783615,
3176STORE, 47590668763136, 47590668779519,
3177ERASE, 47590668763136, 47590668763136,
3178STORE, 47590668763136, 47590668779519,
3179STORE, 47590668791808, 47590668799999,
3180STORE, 47590668783616, 47590668791807,
3181ERASE, 47590668783616, 47590668783616,
3182STORE, 47590668783616, 47590668791807,
3183ERASE, 47590668791808, 47590668791808,
3184STORE, 47590668791808, 47590668799999,
3185STORE, 47590668800000, 47590670639103,
3186STORE, 47590668939264, 47590670639103,
3187STORE, 47590668800000, 47590668939263,
3188ERASE, 47590668939264, 47590668939264,
3189STORE, 47590668939264, 47590670598143,
3190STORE, 47590670598144, 47590670639103,
3191STORE, 47590670282752, 47590670598143,
3192STORE, 47590668939264, 47590670282751,
3193ERASE, 47590668939264, 47590668939264,
3194STORE, 47590668939264, 47590670282751,
3195STORE, 47590670594048, 47590670598143,
3196STORE, 47590670282752, 47590670594047,
3197ERASE, 47590670282752, 47590670282752,
3198STORE, 47590670282752, 47590670594047,
3199STORE, 47590670622720, 47590670639103,
3200STORE, 47590670598144, 47590670622719,
3201ERASE, 47590670598144, 47590670598144,
3202STORE, 47590670598144, 47590670622719,
3203ERASE, 47590670622720, 47590670622720,
3204STORE, 47590670622720, 47590670639103,
3205STORE, 47590670622720, 47590670651391,
3206ERASE, 47590670598144, 47590670598144,
3207STORE, 47590670598144, 47590670614527,
3208STORE, 47590670614528, 47590670622719,
3209ERASE, 47590668783616, 47590668783616,
3210STORE, 47590668783616, 47590668787711,
3211STORE, 47590668787712, 47590668791807,
3212ERASE, 94924426440704, 94924426440704,
3213STORE, 94924426440704, 94924426457087,
3214STORE, 94924426457088, 94924426461183,
3215ERASE, 140042126479360, 140042126479360,
3216STORE, 140042126479360, 140042126483455,
3217STORE, 140042126483456, 140042126487551,
3218ERASE, 47590668677120, 47590668677120,
3219STORE, 140737488347136, 140737488351231,
3220STORE, 140733281439744, 140737488351231,
3221ERASE, 140733281439744, 140733281439744,
3222STORE, 140733281439744, 140733281443839,
3223STORE, 94490667069440, 94490667782143,
3224ERASE, 94490667069440, 94490667069440,
3225STORE, 94490667069440, 94490667118591,
3226STORE, 94490667118592, 94490667782143,
3227ERASE, 94490667118592, 94490667118592,
3228STORE, 94490667118592, 94490667663359,
3229STORE, 94490667663360, 94490667761663,
3230STORE, 94490667761664, 94490667782143,
3231STORE, 139878215118848, 139878215290879,
3232ERASE, 139878215118848, 139878215118848,
3233STORE, 139878215118848, 139878215122943,
3234STORE, 139878215122944, 139878215290879,
3235ERASE, 139878215122944, 139878215122944,
3236STORE, 139878215122944, 139878215245823,
3237STORE, 139878215245824, 139878215278591,
3238STORE, 139878215278592, 139878215286783,
3239STORE, 139878215286784, 139878215290879,
3240STORE, 140733281464320, 140733281468415,
3241STORE, 140733281452032, 140733281464319,
3242STORE, 47754579877888, 47754579886079,
3243STORE, 47754579886080, 47754579894271,
3244STORE, 47754579894272, 47754580000767,
3245STORE, 47754579910656, 47754580000767,
3246STORE, 47754579894272, 47754579910655,
3247ERASE, 47754579910656, 47754579910656,
3248STORE, 47754579910656, 47754579984383,
3249STORE, 47754579984384, 47754580000767,
3250STORE, 47754579963904, 47754579984383,
3251STORE, 47754579910656, 47754579963903,
3252ERASE, 47754579910656, 47754579910656,
3253STORE, 47754579910656, 47754579963903,
3254STORE, 47754579980288, 47754579984383,
3255STORE, 47754579963904, 47754579980287,
3256ERASE, 47754579963904, 47754579963904,
3257STORE, 47754579963904, 47754579980287,
3258STORE, 47754579992576, 47754580000767,
3259STORE, 47754579984384, 47754579992575,
3260ERASE, 47754579984384, 47754579984384,
3261STORE, 47754579984384, 47754579992575,
3262ERASE, 47754579992576, 47754579992576,
3263STORE, 47754579992576, 47754580000767,
3264STORE, 47754580000768, 47754581839871,
3265STORE, 47754580140032, 47754581839871,
3266STORE, 47754580000768, 47754580140031,
3267ERASE, 47754580140032, 47754580140032,
3268STORE, 47754580140032, 47754581798911,
3269STORE, 47754581798912, 47754581839871,
3270STORE, 47754581483520, 47754581798911,
3271STORE, 47754580140032, 47754581483519,
3272ERASE, 47754580140032, 47754580140032,
3273STORE, 47754580140032, 47754581483519,
3274STORE, 47754581794816, 47754581798911,
3275STORE, 47754581483520, 47754581794815,
3276ERASE, 47754581483520, 47754581483520,
3277STORE, 47754581483520, 47754581794815,
3278STORE, 47754581823488, 47754581839871,
3279STORE, 47754581798912, 47754581823487,
3280ERASE, 47754581798912, 47754581798912,
3281STORE, 47754581798912, 47754581823487,
3282ERASE, 47754581823488, 47754581823488,
3283STORE, 47754581823488, 47754581839871,
3284STORE, 47754581823488, 47754581852159,
3285ERASE, 47754581798912, 47754581798912,
3286STORE, 47754581798912, 47754581815295,
3287STORE, 47754581815296, 47754581823487,
3288ERASE, 47754579984384, 47754579984384,
3289STORE, 47754579984384, 47754579988479,
3290STORE, 47754579988480, 47754579992575,
3291ERASE, 94490667761664, 94490667761664,
3292STORE, 94490667761664, 94490667778047,
3293STORE, 94490667778048, 94490667782143,
3294ERASE, 139878215278592, 139878215278592,
3295STORE, 139878215278592, 139878215282687,
3296STORE, 139878215282688, 139878215286783,
3297ERASE, 47754579877888, 47754579877888,
3298STORE, 94490669649920, 94490669785087,
3299STORE, 140737488347136, 140737488351231,
3300STORE, 140735382188032, 140737488351231,
3301ERASE, 140735382188032, 140735382188032,
3302STORE, 140735382188032, 140735382192127,
3303STORE, 94150181302272, 94150182014975,
3304ERASE, 94150181302272, 94150181302272,
3305STORE, 94150181302272, 94150181351423,
3306STORE, 94150181351424, 94150182014975,
3307ERASE, 94150181351424, 94150181351424,
3308STORE, 94150181351424, 94150181896191,
3309STORE, 94150181896192, 94150181994495,
3310STORE, 94150181994496, 94150182014975,
3311STORE, 139679752458240, 139679752630271,
3312ERASE, 139679752458240, 139679752458240,
3313STORE, 139679752458240, 139679752462335,
3314STORE, 139679752462336, 139679752630271,
3315ERASE, 139679752462336, 139679752462336,
3316STORE, 139679752462336, 139679752585215,
3317STORE, 139679752585216, 139679752617983,
3318STORE, 139679752617984, 139679752626175,
3319STORE, 139679752626176, 139679752630271,
3320STORE, 140735382536192, 140735382540287,
3321STORE, 140735382523904, 140735382536191,
3322STORE, 47953042538496, 47953042546687,
3323STORE, 47953042546688, 47953042554879,
3324STORE, 47953042554880, 47953042661375,
3325STORE, 47953042571264, 47953042661375,
3326STORE, 47953042554880, 47953042571263,
3327ERASE, 47953042571264, 47953042571264,
3328STORE, 47953042571264, 47953042644991,
3329STORE, 47953042644992, 47953042661375,
3330STORE, 47953042624512, 47953042644991,
3331STORE, 47953042571264, 47953042624511,
3332ERASE, 47953042571264, 47953042571264,
3333STORE, 47953042571264, 47953042624511,
3334STORE, 47953042640896, 47953042644991,
3335STORE, 47953042624512, 47953042640895,
3336ERASE, 47953042624512, 47953042624512,
3337STORE, 47953042624512, 47953042640895,
3338STORE, 47953042653184, 47953042661375,
3339STORE, 47953042644992, 47953042653183,
3340ERASE, 47953042644992, 47953042644992,
3341STORE, 47953042644992, 47953042653183,
3342ERASE, 47953042653184, 47953042653184,
3343STORE, 47953042653184, 47953042661375,
3344STORE, 47953042661376, 47953044500479,
3345STORE, 47953042800640, 47953044500479,
3346STORE, 47953042661376, 47953042800639,
3347ERASE, 47953042800640, 47953042800640,
3348STORE, 47953042800640, 47953044459519,
3349STORE, 47953044459520, 47953044500479,
3350STORE, 47953044144128, 47953044459519,
3351STORE, 47953042800640, 47953044144127,
3352ERASE, 47953042800640, 47953042800640,
3353STORE, 47953042800640, 47953044144127,
3354STORE, 47953044455424, 47953044459519,
3355STORE, 47953044144128, 47953044455423,
3356ERASE, 47953044144128, 47953044144128,
3357STORE, 47953044144128, 47953044455423,
3358STORE, 47953044484096, 47953044500479,
3359STORE, 47953044459520, 47953044484095,
3360ERASE, 47953044459520, 47953044459520,
3361STORE, 47953044459520, 47953044484095,
3362ERASE, 47953044484096, 47953044484096,
3363STORE, 47953044484096, 47953044500479,
3364STORE, 47953044484096, 47953044512767,
3365ERASE, 47953044459520, 47953044459520,
3366STORE, 47953044459520, 47953044475903,
3367STORE, 47953044475904, 47953044484095,
3368ERASE, 47953042644992, 47953042644992,
3369STORE, 47953042644992, 47953042649087,
3370STORE, 47953042649088, 47953042653183,
3371ERASE, 94150181994496, 94150181994496,
3372STORE, 94150181994496, 94150182010879,
3373STORE, 94150182010880, 94150182014975,
3374ERASE, 139679752617984, 139679752617984,
3375STORE, 139679752617984, 139679752622079,
3376STORE, 139679752622080, 139679752626175,
3377ERASE, 47953042538496, 47953042538496,
3378STORE, 140737488347136, 140737488351231,
3379STORE, 140737044123648, 140737488351231,
3380ERASE, 140737044123648, 140737044123648,
3381STORE, 140737044123648, 140737044127743,
3382STORE, 94425324294144, 94425325006847,
3383ERASE, 94425324294144, 94425324294144,
3384STORE, 94425324294144, 94425324343295,
3385STORE, 94425324343296, 94425325006847,
3386ERASE, 94425324343296, 94425324343296,
3387STORE, 94425324343296, 94425324888063,
3388STORE, 94425324888064, 94425324986367,
3389STORE, 94425324986368, 94425325006847,
3390STORE, 140382015016960, 140382015188991,
3391ERASE, 140382015016960, 140382015016960,
3392STORE, 140382015016960, 140382015021055,
3393STORE, 140382015021056, 140382015188991,
3394ERASE, 140382015021056, 140382015021056,
3395STORE, 140382015021056, 140382015143935,
3396STORE, 140382015143936, 140382015176703,
3397STORE, 140382015176704, 140382015184895,
3398STORE, 140382015184896, 140382015188991,
3399STORE, 140737045585920, 140737045590015,
3400STORE, 140737045573632, 140737045585919,
3401STORE, 47250779979776, 47250779987967,
3402STORE, 47250779987968, 47250779996159,
3403STORE, 47250779996160, 47250780102655,
3404STORE, 47250780012544, 47250780102655,
3405STORE, 47250779996160, 47250780012543,
3406ERASE, 47250780012544, 47250780012544,
3407STORE, 47250780012544, 47250780086271,
3408STORE, 47250780086272, 47250780102655,
3409STORE, 47250780065792, 47250780086271,
3410STORE, 47250780012544, 47250780065791,
3411ERASE, 47250780012544, 47250780012544,
3412STORE, 47250780012544, 47250780065791,
3413STORE, 47250780082176, 47250780086271,
3414STORE, 47250780065792, 47250780082175,
3415ERASE, 47250780065792, 47250780065792,
3416STORE, 47250780065792, 47250780082175,
3417STORE, 47250780094464, 47250780102655,
3418STORE, 47250780086272, 47250780094463,
3419ERASE, 47250780086272, 47250780086272,
3420STORE, 47250780086272, 47250780094463,
3421ERASE, 47250780094464, 47250780094464,
3422STORE, 47250780094464, 47250780102655,
3423STORE, 47250780102656, 47250781941759,
3424STORE, 47250780241920, 47250781941759,
3425STORE, 47250780102656, 47250780241919,
3426ERASE, 47250780241920, 47250780241920,
3427STORE, 47250780241920, 47250781900799,
3428STORE, 47250781900800, 47250781941759,
3429STORE, 47250781585408, 47250781900799,
3430STORE, 47250780241920, 47250781585407,
3431ERASE, 47250780241920, 47250780241920,
3432STORE, 47250780241920, 47250781585407,
3433STORE, 47250781896704, 47250781900799,
3434STORE, 47250781585408, 47250781896703,
3435ERASE, 47250781585408, 47250781585408,
3436STORE, 47250781585408, 47250781896703,
3437STORE, 47250781925376, 47250781941759,
3438STORE, 47250781900800, 47250781925375,
3439ERASE, 47250781900800, 47250781900800,
3440STORE, 47250781900800, 47250781925375,
3441ERASE, 47250781925376, 47250781925376,
3442STORE, 47250781925376, 47250781941759,
3443STORE, 47250781925376, 47250781954047,
3444ERASE, 47250781900800, 47250781900800,
3445STORE, 47250781900800, 47250781917183,
3446STORE, 47250781917184, 47250781925375,
3447ERASE, 47250780086272, 47250780086272,
3448STORE, 47250780086272, 47250780090367,
3449STORE, 47250780090368, 47250780094463,
3450ERASE, 94425324986368, 94425324986368,
3451STORE, 94425324986368, 94425325002751,
3452STORE, 94425325002752, 94425325006847,
3453ERASE, 140382015176704, 140382015176704,
3454STORE, 140382015176704, 140382015180799,
3455STORE, 140382015180800, 140382015184895,
3456ERASE, 47250779979776, 47250779979776,
3457STORE, 94425351438336, 94425351573503,
3458STORE, 140737488347136, 140737488351231,
3459STORE, 140736801144832, 140737488351231,
3460ERASE, 140736801144832, 140736801144832,
3461STORE, 140736801144832, 140736801148927,
3462STORE, 94629429358592, 94629430071295,
3463ERASE, 94629429358592, 94629429358592,
3464STORE, 94629429358592, 94629429407743,
3465STORE, 94629429407744, 94629430071295,
3466ERASE, 94629429407744, 94629429407744,
3467STORE, 94629429407744, 94629429952511,
3468STORE, 94629429952512, 94629430050815,
3469STORE, 94629430050816, 94629430071295,
3470STORE, 139801685483520, 139801685655551,
3471ERASE, 139801685483520, 139801685483520,
3472STORE, 139801685483520, 139801685487615,
3473STORE, 139801685487616, 139801685655551,
3474ERASE, 139801685487616, 139801685487616,
3475STORE, 139801685487616, 139801685610495,
3476STORE, 139801685610496, 139801685643263,
3477STORE, 139801685643264, 139801685651455,
3478STORE, 139801685651456, 139801685655551,
3479STORE, 140736801198080, 140736801202175,
3480STORE, 140736801185792, 140736801198079,
3481STORE, 47831109513216, 47831109521407,
3482STORE, 47831109521408, 47831109529599,
3483STORE, 47831109529600, 47831109636095,
3484STORE, 47831109545984, 47831109636095,
3485STORE, 47831109529600, 47831109545983,
3486ERASE, 47831109545984, 47831109545984,
3487STORE, 47831109545984, 47831109619711,
3488STORE, 47831109619712, 47831109636095,
3489STORE, 47831109599232, 47831109619711,
3490STORE, 47831109545984, 47831109599231,
3491ERASE, 47831109545984, 47831109545984,
3492STORE, 47831109545984, 47831109599231,
3493STORE, 47831109615616, 47831109619711,
3494STORE, 47831109599232, 47831109615615,
3495ERASE, 47831109599232, 47831109599232,
3496STORE, 47831109599232, 47831109615615,
3497STORE, 47831109627904, 47831109636095,
3498STORE, 47831109619712, 47831109627903,
3499ERASE, 47831109619712, 47831109619712,
3500STORE, 47831109619712, 47831109627903,
3501ERASE, 47831109627904, 47831109627904,
3502STORE, 47831109627904, 47831109636095,
3503STORE, 47831109636096, 47831111475199,
3504STORE, 47831109775360, 47831111475199,
3505STORE, 47831109636096, 47831109775359,
3506ERASE, 47831109775360, 47831109775360,
3507STORE, 47831109775360, 47831111434239,
3508STORE, 47831111434240, 47831111475199,
3509STORE, 47831111118848, 47831111434239,
3510STORE, 47831109775360, 47831111118847,
3511ERASE, 47831109775360, 47831109775360,
3512STORE, 47831109775360, 47831111118847,
3513STORE, 47831111430144, 47831111434239,
3514STORE, 47831111118848, 47831111430143,
3515ERASE, 47831111118848, 47831111118848,
3516STORE, 47831111118848, 47831111430143,
3517STORE, 47831111458816, 47831111475199,
3518STORE, 47831111434240, 47831111458815,
3519ERASE, 47831111434240, 47831111434240,
3520STORE, 47831111434240, 47831111458815,
3521ERASE, 47831111458816, 47831111458816,
3522STORE, 47831111458816, 47831111475199,
3523STORE, 47831111458816, 47831111487487,
3524ERASE, 47831111434240, 47831111434240,
3525STORE, 47831111434240, 47831111450623,
3526STORE, 47831111450624, 47831111458815,
3527ERASE, 47831109619712, 47831109619712,
3528STORE, 47831109619712, 47831109623807,
3529STORE, 47831109623808, 47831109627903,
3530ERASE, 94629430050816, 94629430050816,
3531STORE, 94629430050816, 94629430067199,
3532STORE, 94629430067200, 94629430071295,
3533ERASE, 139801685643264, 139801685643264,
3534STORE, 139801685643264, 139801685647359,
3535STORE, 139801685647360, 139801685651455,
3536ERASE, 47831109513216, 47831109513216,
3537STORE, 140737488347136, 140737488351231,
3538STORE, 140729419612160, 140737488351231,
3539ERASE, 140729419612160, 140729419612160,
3540STORE, 140729419612160, 140729419616255,
3541STORE, 94443354148864, 94443354861567,
3542ERASE, 94443354148864, 94443354148864,
3543STORE, 94443354148864, 94443354198015,
3544STORE, 94443354198016, 94443354861567,
3545ERASE, 94443354198016, 94443354198016,
3546STORE, 94443354198016, 94443354742783,
3547STORE, 94443354742784, 94443354841087,
3548STORE, 94443354841088, 94443354861567,
3549STORE, 139741700038656, 139741700210687,
3550ERASE, 139741700038656, 139741700038656,
3551STORE, 139741700038656, 139741700042751,
3552STORE, 139741700042752, 139741700210687,
3553ERASE, 139741700042752, 139741700042752,
3554STORE, 139741700042752, 139741700165631,
3555STORE, 139741700165632, 139741700198399,
3556STORE, 139741700198400, 139741700206591,
3557STORE, 139741700206592, 139741700210687,
3558STORE, 140729420574720, 140729420578815,
3559STORE, 140729420562432, 140729420574719,
3560STORE, 47891094958080, 47891094966271,
3561STORE, 47891094966272, 47891094974463,
3562STORE, 47891094974464, 47891095080959,
3563STORE, 47891094990848, 47891095080959,
3564STORE, 47891094974464, 47891094990847,
3565ERASE, 47891094990848, 47891094990848,
3566STORE, 47891094990848, 47891095064575,
3567STORE, 47891095064576, 47891095080959,
3568STORE, 47891095044096, 47891095064575,
3569STORE, 47891094990848, 47891095044095,
3570ERASE, 47891094990848, 47891094990848,
3571STORE, 47891094990848, 47891095044095,
3572STORE, 47891095060480, 47891095064575,
3573STORE, 47891095044096, 47891095060479,
3574ERASE, 47891095044096, 47891095044096,
3575STORE, 47891095044096, 47891095060479,
3576STORE, 47891095072768, 47891095080959,
3577STORE, 47891095064576, 47891095072767,
3578ERASE, 47891095064576, 47891095064576,
3579STORE, 47891095064576, 47891095072767,
3580ERASE, 47891095072768, 47891095072768,
3581STORE, 47891095072768, 47891095080959,
3582STORE, 47891095080960, 47891096920063,
3583STORE, 47891095220224, 47891096920063,
3584STORE, 47891095080960, 47891095220223,
3585ERASE, 47891095220224, 47891095220224,
3586STORE, 47891095220224, 47891096879103,
3587STORE, 47891096879104, 47891096920063,
3588STORE, 47891096563712, 47891096879103,
3589STORE, 47891095220224, 47891096563711,
3590ERASE, 47891095220224, 47891095220224,
3591STORE, 47891095220224, 47891096563711,
3592STORE, 47891096875008, 47891096879103,
3593STORE, 47891096563712, 47891096875007,
3594ERASE, 47891096563712, 47891096563712,
3595STORE, 47891096563712, 47891096875007,
3596STORE, 47891096903680, 47891096920063,
3597STORE, 47891096879104, 47891096903679,
3598ERASE, 47891096879104, 47891096879104,
3599STORE, 47891096879104, 47891096903679,
3600ERASE, 47891096903680, 47891096903680,
3601STORE, 47891096903680, 47891096920063,
3602STORE, 47891096903680, 47891096932351,
3603ERASE, 47891096879104, 47891096879104,
3604STORE, 47891096879104, 47891096895487,
3605STORE, 47891096895488, 47891096903679,
3606ERASE, 47891095064576, 47891095064576,
3607STORE, 47891095064576, 47891095068671,
3608STORE, 47891095068672, 47891095072767,
3609ERASE, 94443354841088, 94443354841088,
3610STORE, 94443354841088, 94443354857471,
3611STORE, 94443354857472, 94443354861567,
3612ERASE, 139741700198400, 139741700198400,
3613STORE, 139741700198400, 139741700202495,
3614STORE, 139741700202496, 139741700206591,
3615ERASE, 47891094958080, 47891094958080,
3616STORE, 94443360825344, 94443360960511,
3617STORE, 140737488347136, 140737488351231,
3618STORE, 140722961661952, 140737488351231,
3619ERASE, 140722961661952, 140722961661952,
3620STORE, 140722961661952, 140722961666047,
3621STORE, 94878388944896, 94878389657599,
3622ERASE, 94878388944896, 94878388944896,
3623STORE, 94878388944896, 94878388994047,
3624STORE, 94878388994048, 94878389657599,
3625ERASE, 94878388994048, 94878388994048,
3626STORE, 94878388994048, 94878389538815,
3627STORE, 94878389538816, 94878389637119,
3628STORE, 94878389637120, 94878389657599,
3629STORE, 140210690056192, 140210690228223,
3630ERASE, 140210690056192, 140210690056192,
3631STORE, 140210690056192, 140210690060287,
3632STORE, 140210690060288, 140210690228223,
3633ERASE, 140210690060288, 140210690060288,
3634STORE, 140210690060288, 140210690183167,
3635STORE, 140210690183168, 140210690215935,
3636STORE, 140210690215936, 140210690224127,
3637STORE, 140210690224128, 140210690228223,
3638STORE, 140722963148800, 140722963152895,
3639STORE, 140722963136512, 140722963148799,
3640STORE, 47422104940544, 47422104948735,
3641STORE, 47422104948736, 47422104956927,
3642STORE, 47422104956928, 47422105063423,
3643STORE, 47422104973312, 47422105063423,
3644STORE, 47422104956928, 47422104973311,
3645ERASE, 47422104973312, 47422104973312,
3646STORE, 47422104973312, 47422105047039,
3647STORE, 47422105047040, 47422105063423,
3648STORE, 47422105026560, 47422105047039,
3649STORE, 47422104973312, 47422105026559,
3650ERASE, 47422104973312, 47422104973312,
3651STORE, 47422104973312, 47422105026559,
3652STORE, 47422105042944, 47422105047039,
3653STORE, 47422105026560, 47422105042943,
3654ERASE, 47422105026560, 47422105026560,
3655STORE, 47422105026560, 47422105042943,
3656STORE, 47422105055232, 47422105063423,
3657STORE, 47422105047040, 47422105055231,
3658ERASE, 47422105047040, 47422105047040,
3659STORE, 47422105047040, 47422105055231,
3660ERASE, 47422105055232, 47422105055232,
3661STORE, 47422105055232, 47422105063423,
3662STORE, 47422105063424, 47422106902527,
3663STORE, 47422105202688, 47422106902527,
3664STORE, 47422105063424, 47422105202687,
3665ERASE, 47422105202688, 47422105202688,
3666STORE, 47422105202688, 47422106861567,
3667STORE, 47422106861568, 47422106902527,
3668STORE, 47422106546176, 47422106861567,
3669STORE, 47422105202688, 47422106546175,
3670ERASE, 47422105202688, 47422105202688,
3671STORE, 47422105202688, 47422106546175,
3672STORE, 47422106857472, 47422106861567,
3673STORE, 47422106546176, 47422106857471,
3674ERASE, 47422106546176, 47422106546176,
3675STORE, 47422106546176, 47422106857471,
3676STORE, 47422106886144, 47422106902527,
3677STORE, 47422106861568, 47422106886143,
3678ERASE, 47422106861568, 47422106861568,
3679STORE, 47422106861568, 47422106886143,
3680ERASE, 47422106886144, 47422106886144,
3681STORE, 47422106886144, 47422106902527,
3682STORE, 47422106886144, 47422106914815,
3683ERASE, 47422106861568, 47422106861568,
3684STORE, 47422106861568, 47422106877951,
3685STORE, 47422106877952, 47422106886143,
3686ERASE, 47422105047040, 47422105047040,
3687STORE, 47422105047040, 47422105051135,
3688STORE, 47422105051136, 47422105055231,
3689ERASE, 94878389637120, 94878389637120,
3690STORE, 94878389637120, 94878389653503,
3691STORE, 94878389653504, 94878389657599,
3692ERASE, 140210690215936, 140210690215936,
3693STORE, 140210690215936, 140210690220031,
3694STORE, 140210690220032, 140210690224127,
3695ERASE, 47422104940544, 47422104940544,
3696STORE, 140737488347136, 140737488351231,
3697STORE, 140727690309632, 140737488351231,
3698ERASE, 140727690309632, 140727690309632,
3699STORE, 140727690309632, 140727690313727,
3700STORE, 94121892208640, 94121892921343,
3701ERASE, 94121892208640, 94121892208640,
3702STORE, 94121892208640, 94121892257791,
3703STORE, 94121892257792, 94121892921343,
3704ERASE, 94121892257792, 94121892257792,
3705STORE, 94121892257792, 94121892802559,
3706STORE, 94121892802560, 94121892900863,
3707STORE, 94121892900864, 94121892921343,
3708STORE, 140662438326272, 140662438498303,
3709ERASE, 140662438326272, 140662438326272,
3710STORE, 140662438326272, 140662438330367,
3711STORE, 140662438330368, 140662438498303,
3712ERASE, 140662438330368, 140662438330368,
3713STORE, 140662438330368, 140662438453247,
3714STORE, 140662438453248, 140662438486015,
3715STORE, 140662438486016, 140662438494207,
3716STORE, 140662438494208, 140662438498303,
3717STORE, 140727690379264, 140727690383359,
3718STORE, 140727690366976, 140727690379263,
3719STORE, 46970356670464, 46970356678655,
3720STORE, 46970356678656, 46970356686847,
3721STORE, 46970356686848, 46970356793343,
3722STORE, 46970356703232, 46970356793343,
3723STORE, 46970356686848, 46970356703231,
3724ERASE, 46970356703232, 46970356703232,
3725STORE, 46970356703232, 46970356776959,
3726STORE, 46970356776960, 46970356793343,
3727STORE, 46970356756480, 46970356776959,
3728STORE, 46970356703232, 46970356756479,
3729ERASE, 46970356703232, 46970356703232,
3730STORE, 46970356703232, 46970356756479,
3731STORE, 46970356772864, 46970356776959,
3732STORE, 46970356756480, 46970356772863,
3733ERASE, 46970356756480, 46970356756480,
3734STORE, 46970356756480, 46970356772863,
3735STORE, 46970356785152, 46970356793343,
3736STORE, 46970356776960, 46970356785151,
3737ERASE, 46970356776960, 46970356776960,
3738STORE, 46970356776960, 46970356785151,
3739ERASE, 46970356785152, 46970356785152,
3740STORE, 46970356785152, 46970356793343,
3741STORE, 46970356793344, 46970358632447,
3742STORE, 46970356932608, 46970358632447,
3743STORE, 46970356793344, 46970356932607,
3744ERASE, 46970356932608, 46970356932608,
3745STORE, 46970356932608, 46970358591487,
3746STORE, 46970358591488, 46970358632447,
3747STORE, 46970358276096, 46970358591487,
3748STORE, 46970356932608, 46970358276095,
3749ERASE, 46970356932608, 46970356932608,
3750STORE, 46970356932608, 46970358276095,
3751STORE, 46970358587392, 46970358591487,
3752STORE, 46970358276096, 46970358587391,
3753ERASE, 46970358276096, 46970358276096,
3754STORE, 46970358276096, 46970358587391,
3755STORE, 46970358616064, 46970358632447,
3756STORE, 46970358591488, 46970358616063,
3757ERASE, 46970358591488, 46970358591488,
3758STORE, 46970358591488, 46970358616063,
3759ERASE, 46970358616064, 46970358616064,
3760STORE, 46970358616064, 46970358632447,
3761STORE, 46970358616064, 46970358644735,
3762ERASE, 46970358591488, 46970358591488,
3763STORE, 46970358591488, 46970358607871,
3764STORE, 46970358607872, 46970358616063,
3765ERASE, 46970356776960, 46970356776960,
3766STORE, 46970356776960, 46970356781055,
3767STORE, 46970356781056, 46970356785151,
3768ERASE, 94121892900864, 94121892900864,
3769STORE, 94121892900864, 94121892917247,
3770STORE, 94121892917248, 94121892921343,
3771ERASE, 140662438486016, 140662438486016,
3772STORE, 140662438486016, 140662438490111,
3773STORE, 140662438490112, 140662438494207,
3774ERASE, 46970356670464, 46970356670464,
3775STORE, 94121898610688, 94121898745855,
3776STORE, 140737488347136, 140737488351231,
3777STORE, 140737189351424, 140737488351231,
3778ERASE, 140737189351424, 140737189351424,
3779STORE, 140737189351424, 140737189355519,
3780STORE, 93847948832768, 93847949545471,
3781ERASE, 93847948832768, 93847948832768,
3782STORE, 93847948832768, 93847948881919,
3783STORE, 93847948881920, 93847949545471,
3784ERASE, 93847948881920, 93847948881920,
3785STORE, 93847948881920, 93847949426687,
3786STORE, 93847949426688, 93847949524991,
3787STORE, 93847949524992, 93847949545471,
3788STORE, 139698989985792, 139698990157823,
3789ERASE, 139698989985792, 139698989985792,
3790STORE, 139698989985792, 139698989989887,
3791STORE, 139698989989888, 139698990157823,
3792ERASE, 139698989989888, 139698989989888,
3793STORE, 139698989989888, 139698990112767,
3794STORE, 139698990112768, 139698990145535,
3795STORE, 139698990145536, 139698990153727,
3796STORE, 139698990153728, 139698990157823,
3797STORE, 140737189744640, 140737189748735,
3798STORE, 140737189732352, 140737189744639,
3799STORE, 47933805010944, 47933805019135,
3800STORE, 47933805019136, 47933805027327,
3801STORE, 47933805027328, 47933805133823,
3802STORE, 47933805043712, 47933805133823,
3803STORE, 47933805027328, 47933805043711,
3804ERASE, 47933805043712, 47933805043712,
3805STORE, 47933805043712, 47933805117439,
3806STORE, 47933805117440, 47933805133823,
3807STORE, 47933805096960, 47933805117439,
3808STORE, 47933805043712, 47933805096959,
3809ERASE, 47933805043712, 47933805043712,
3810STORE, 47933805043712, 47933805096959,
3811STORE, 47933805113344, 47933805117439,
3812STORE, 47933805096960, 47933805113343,
3813ERASE, 47933805096960, 47933805096960,
3814STORE, 47933805096960, 47933805113343,
3815STORE, 47933805125632, 47933805133823,
3816STORE, 47933805117440, 47933805125631,
3817ERASE, 47933805117440, 47933805117440,
3818STORE, 47933805117440, 47933805125631,
3819ERASE, 47933805125632, 47933805125632,
3820STORE, 47933805125632, 47933805133823,
3821STORE, 47933805133824, 47933806972927,
3822STORE, 47933805273088, 47933806972927,
3823STORE, 47933805133824, 47933805273087,
3824ERASE, 47933805273088, 47933805273088,
3825STORE, 47933805273088, 47933806931967,
3826STORE, 47933806931968, 47933806972927,
3827STORE, 47933806616576, 47933806931967,
3828STORE, 47933805273088, 47933806616575,
3829ERASE, 47933805273088, 47933805273088,
3830STORE, 47933805273088, 47933806616575,
3831STORE, 47933806927872, 47933806931967,
3832STORE, 47933806616576, 47933806927871,
3833ERASE, 47933806616576, 47933806616576,
3834STORE, 47933806616576, 47933806927871,
3835STORE, 47933806956544, 47933806972927,
3836STORE, 47933806931968, 47933806956543,
3837ERASE, 47933806931968, 47933806931968,
3838STORE, 47933806931968, 47933806956543,
3839ERASE, 47933806956544, 47933806956544,
3840STORE, 47933806956544, 47933806972927,
3841STORE, 47933806956544, 47933806985215,
3842ERASE, 47933806931968, 47933806931968,
3843STORE, 47933806931968, 47933806948351,
3844STORE, 47933806948352, 47933806956543,
3845ERASE, 47933805117440, 47933805117440,
3846STORE, 47933805117440, 47933805121535,
3847STORE, 47933805121536, 47933805125631,
3848ERASE, 93847949524992, 93847949524992,
3849STORE, 93847949524992, 93847949541375,
3850STORE, 93847949541376, 93847949545471,
3851ERASE, 139698990145536, 139698990145536,
3852STORE, 139698990145536, 139698990149631,
3853STORE, 139698990149632, 139698990153727,
3854ERASE, 47933805010944, 47933805010944,
3855STORE, 140737488347136, 140737488351231,
3856STORE, 140725553991680, 140737488351231,
3857ERASE, 140725553991680, 140725553991680,
3858STORE, 140725553991680, 140725553995775,
3859STORE, 93980056248320, 93980056961023,
3860ERASE, 93980056248320, 93980056248320,
3861STORE, 93980056248320, 93980056297471,
3862STORE, 93980056297472, 93980056961023,
3863ERASE, 93980056297472, 93980056297472,
3864STORE, 93980056297472, 93980056842239,
3865STORE, 93980056842240, 93980056940543,
3866STORE, 93980056940544, 93980056961023,
3867STORE, 140146588971008, 140146589143039,
3868ERASE, 140146588971008, 140146588971008,
3869STORE, 140146588971008, 140146588975103,
3870STORE, 140146588975104, 140146589143039,
3871ERASE, 140146588975104, 140146588975104,
3872STORE, 140146588975104, 140146589097983,
3873STORE, 140146589097984, 140146589130751,
3874STORE, 140146589130752, 140146589138943,
3875STORE, 140146589138944, 140146589143039,
3876STORE, 140725554860032, 140725554864127,
3877STORE, 140725554847744, 140725554860031,
3878STORE, 47486206025728, 47486206033919,
3879STORE, 47486206033920, 47486206042111,
3880STORE, 47486206042112, 47486206148607,
3881STORE, 47486206058496, 47486206148607,
3882STORE, 47486206042112, 47486206058495,
3883ERASE, 47486206058496, 47486206058496,
3884STORE, 47486206058496, 47486206132223,
3885STORE, 47486206132224, 47486206148607,
3886STORE, 47486206111744, 47486206132223,
3887STORE, 47486206058496, 47486206111743,
3888ERASE, 47486206058496, 47486206058496,
3889STORE, 47486206058496, 47486206111743,
3890STORE, 47486206128128, 47486206132223,
3891STORE, 47486206111744, 47486206128127,
3892ERASE, 47486206111744, 47486206111744,
3893STORE, 47486206111744, 47486206128127,
3894STORE, 47486206140416, 47486206148607,
3895STORE, 47486206132224, 47486206140415,
3896ERASE, 47486206132224, 47486206132224,
3897STORE, 47486206132224, 47486206140415,
3898ERASE, 47486206140416, 47486206140416,
3899STORE, 47486206140416, 47486206148607,
3900STORE, 47486206148608, 47486207987711,
3901STORE, 47486206287872, 47486207987711,
3902STORE, 47486206148608, 47486206287871,
3903ERASE, 47486206287872, 47486206287872,
3904STORE, 47486206287872, 47486207946751,
3905STORE, 47486207946752, 47486207987711,
3906STORE, 47486207631360, 47486207946751,
3907STORE, 47486206287872, 47486207631359,
3908ERASE, 47486206287872, 47486206287872,
3909STORE, 47486206287872, 47486207631359,
3910STORE, 47486207942656, 47486207946751,
3911STORE, 47486207631360, 47486207942655,
3912ERASE, 47486207631360, 47486207631360,
3913STORE, 47486207631360, 47486207942655,
3914STORE, 47486207971328, 47486207987711,
3915STORE, 47486207946752, 47486207971327,
3916ERASE, 47486207946752, 47486207946752,
3917STORE, 47486207946752, 47486207971327,
3918ERASE, 47486207971328, 47486207971328,
3919STORE, 47486207971328, 47486207987711,
3920STORE, 47486207971328, 47486207999999,
3921ERASE, 47486207946752, 47486207946752,
3922STORE, 47486207946752, 47486207963135,
3923STORE, 47486207963136, 47486207971327,
3924ERASE, 47486206132224, 47486206132224,
3925STORE, 47486206132224, 47486206136319,
3926STORE, 47486206136320, 47486206140415,
3927ERASE, 93980056940544, 93980056940544,
3928STORE, 93980056940544, 93980056956927,
3929STORE, 93980056956928, 93980056961023,
3930ERASE, 140146589130752, 140146589130752,
3931STORE, 140146589130752, 140146589134847,
3932STORE, 140146589134848, 140146589138943,
3933ERASE, 47486206025728, 47486206025728,
3934STORE, 93980070006784, 93980070141951,
3935STORE, 140737488347136, 140737488351231,
3936STORE, 140727334776832, 140737488351231,
3937ERASE, 140727334776832, 140727334776832,
3938STORE, 140727334776832, 140727334780927,
3939STORE, 94049747247104, 94049747959807,
3940ERASE, 94049747247104, 94049747247104,
3941STORE, 94049747247104, 94049747296255,
3942STORE, 94049747296256, 94049747959807,
3943ERASE, 94049747296256, 94049747296256,
3944STORE, 94049747296256, 94049747841023,
3945STORE, 94049747841024, 94049747939327,
3946STORE, 94049747939328, 94049747959807,
3947STORE, 140227307216896, 140227307388927,
3948ERASE, 140227307216896, 140227307216896,
3949STORE, 140227307216896, 140227307220991,
3950STORE, 140227307220992, 140227307388927,
3951ERASE, 140227307220992, 140227307220992,
3952STORE, 140227307220992, 140227307343871,
3953STORE, 140227307343872, 140227307376639,
3954STORE, 140227307376640, 140227307384831,
3955STORE, 140227307384832, 140227307388927,
3956STORE, 140727335337984, 140727335342079,
3957STORE, 140727335325696, 140727335337983,
3958STORE, 47405487779840, 47405487788031,
3959STORE, 47405487788032, 47405487796223,
3960STORE, 47405487796224, 47405487902719,
3961STORE, 47405487812608, 47405487902719,
3962STORE, 47405487796224, 47405487812607,
3963ERASE, 47405487812608, 47405487812608,
3964STORE, 47405487812608, 47405487886335,
3965STORE, 47405487886336, 47405487902719,
3966STORE, 47405487865856, 47405487886335,
3967STORE, 47405487812608, 47405487865855,
3968ERASE, 47405487812608, 47405487812608,
3969STORE, 47405487812608, 47405487865855,
3970STORE, 47405487882240, 47405487886335,
3971STORE, 47405487865856, 47405487882239,
3972ERASE, 47405487865856, 47405487865856,
3973STORE, 47405487865856, 47405487882239,
3974STORE, 47405487894528, 47405487902719,
3975STORE, 47405487886336, 47405487894527,
3976ERASE, 47405487886336, 47405487886336,
3977STORE, 47405487886336, 47405487894527,
3978ERASE, 47405487894528, 47405487894528,
3979STORE, 47405487894528, 47405487902719,
3980STORE, 47405487902720, 47405489741823,
3981STORE, 47405488041984, 47405489741823,
3982STORE, 47405487902720, 47405488041983,
3983ERASE, 47405488041984, 47405488041984,
3984STORE, 47405488041984, 47405489700863,
3985STORE, 47405489700864, 47405489741823,
3986STORE, 47405489385472, 47405489700863,
3987STORE, 47405488041984, 47405489385471,
3988ERASE, 47405488041984, 47405488041984,
3989STORE, 47405488041984, 47405489385471,
3990STORE, 47405489696768, 47405489700863,
3991STORE, 47405489385472, 47405489696767,
3992ERASE, 47405489385472, 47405489385472,
3993STORE, 47405489385472, 47405489696767,
3994STORE, 47405489725440, 47405489741823,
3995STORE, 47405489700864, 47405489725439,
3996ERASE, 47405489700864, 47405489700864,
3997STORE, 47405489700864, 47405489725439,
3998ERASE, 47405489725440, 47405489725440,
3999STORE, 47405489725440, 47405489741823,
4000STORE, 47405489725440, 47405489754111,
4001ERASE, 47405489700864, 47405489700864,
4002STORE, 47405489700864, 47405489717247,
4003STORE, 47405489717248, 47405489725439,
4004ERASE, 47405487886336, 47405487886336,
4005STORE, 47405487886336, 47405487890431,
4006STORE, 47405487890432, 47405487894527,
4007ERASE, 94049747939328, 94049747939328,
4008STORE, 94049747939328, 94049747955711,
4009STORE, 94049747955712, 94049747959807,
4010ERASE, 140227307376640, 140227307376640,
4011STORE, 140227307376640, 140227307380735,
4012STORE, 140227307380736, 140227307384831,
4013ERASE, 47405487779840, 47405487779840,
4014STORE, 94049758810112, 94049758945279,
4015STORE, 140737488347136, 140737488351231,
4016STORE, 140727079718912, 140737488351231,
4017ERASE, 140727079718912, 140727079718912,
4018STORE, 140727079718912, 140727079723007,
4019STORE, 94250996527104, 94250997239807,
4020ERASE, 94250996527104, 94250996527104,
4021STORE, 94250996527104, 94250996576255,
4022STORE, 94250996576256, 94250997239807,
4023ERASE, 94250996576256, 94250996576256,
4024STORE, 94250996576256, 94250997121023,
4025STORE, 94250997121024, 94250997219327,
4026STORE, 94250997219328, 94250997239807,
4027STORE, 140060022587392, 140060022759423,
4028ERASE, 140060022587392, 140060022587392,
4029STORE, 140060022587392, 140060022591487,
4030STORE, 140060022591488, 140060022759423,
4031ERASE, 140060022591488, 140060022591488,
4032STORE, 140060022591488, 140060022714367,
4033STORE, 140060022714368, 140060022747135,
4034STORE, 140060022747136, 140060022755327,
4035STORE, 140060022755328, 140060022759423,
4036STORE, 140727079788544, 140727079792639,
4037STORE, 140727079776256, 140727079788543,
4038/* this next one caused issues when lowering the efficiency */
4039STORE, 47572772409344, 47572772417535,
4040STORE, 47572772417536, 47572772425727,
4041STORE, 47572772425728, 47572772532223,
4042STORE, 47572772442112, 47572772532223,
4043STORE, 47572772425728, 47572772442111,
4044ERASE, 47572772442112, 47572772442112,
4045STORE, 47572772442112, 47572772515839,
4046STORE, 47572772515840, 47572772532223,
4047STORE, 47572772495360, 47572772515839,
4048STORE, 47572772442112, 47572772495359,
4049ERASE, 47572772442112, 47572772442112,
4050STORE, 47572772442112, 47572772495359,
4051STORE, 47572772511744, 47572772515839,
4052STORE, 47572772495360, 47572772511743,
4053ERASE, 47572772495360, 47572772495360,
4054STORE, 47572772495360, 47572772511743,
4055STORE, 47572772524032, 47572772532223,
4056STORE, 47572772515840, 47572772524031,
4057ERASE, 47572772515840, 47572772515840,
4058STORE, 47572772515840, 47572772524031,
4059ERASE, 47572772524032, 47572772524032,
4060STORE, 47572772524032, 47572772532223,
4061STORE, 47572772532224, 47572774371327,
4062STORE, 47572772671488, 47572774371327,
4063STORE, 47572772532224, 47572772671487,
4064ERASE, 47572772671488, 47572772671488,
4065STORE, 47572772671488, 47572774330367,
4066STORE, 47572774330368, 47572774371327,
4067STORE, 47572774014976, 47572774330367,
4068STORE, 47572772671488, 47572774014975,
4069ERASE, 47572772671488, 47572772671488,
4070STORE, 47572772671488, 47572774014975,
4071STORE, 47572774326272, 47572774330367,
4072STORE, 47572774014976, 47572774326271,
4073ERASE, 47572774014976, 47572774014976,
4074STORE, 47572774014976, 47572774326271,
4075STORE, 47572774354944, 47572774371327,
4076STORE, 47572774330368, 47572774354943,
4077ERASE, 47572774330368, 47572774330368,
4078STORE, 47572774330368, 47572774354943,
4079ERASE, 47572774354944, 47572774354944,
4080STORE, 47572774354944, 47572774371327,
4081STORE, 47572774354944, 47572774383615,
4082ERASE, 47572774330368, 47572774330368,
4083STORE, 47572774330368, 47572774346751,
4084STORE, 47572774346752, 47572774354943,
4085ERASE, 47572772515840, 47572772515840,
4086STORE, 47572772515840, 47572772519935,
4087STORE, 47572772519936, 47572772524031,
4088ERASE, 94250997219328, 94250997219328,
4089STORE, 94250997219328, 94250997235711,
4090STORE, 94250997235712, 94250997239807,
4091ERASE, 140060022747136, 140060022747136,
4092STORE, 140060022747136, 140060022751231,
4093STORE, 140060022751232, 140060022755327,
4094ERASE, 47572772409344, 47572772409344,
4095STORE, 94251018305536, 94251018440703,
4096STORE, 140737488347136, 140737488351231,
4097STORE, 140730012389376, 140737488351231,
4098ERASE, 140730012389376, 140730012389376,
4099STORE, 140730012389376, 140730012393471,
4100STORE, 94382607675392, 94382607695871,
4101ERASE, 94382607675392, 94382607675392,
4102STORE, 94382607675392, 94382607679487,
4103STORE, 94382607679488, 94382607695871,
4104ERASE, 94382607679488, 94382607679488,
4105STORE, 94382607679488, 94382607683583,
4106STORE, 94382607683584, 94382607687679,
4107STORE, 94382607687680, 94382607695871,
4108STORE, 140252451454976, 140252451627007,
4109ERASE, 140252451454976, 140252451454976,
4110STORE, 140252451454976, 140252451459071,
4111STORE, 140252451459072, 140252451627007,
4112ERASE, 140252451459072, 140252451459072,
4113STORE, 140252451459072, 140252451581951,
4114STORE, 140252451581952, 140252451614719,
4115STORE, 140252451614720, 140252451622911,
4116STORE, 140252451622912, 140252451627007,
4117STORE, 140730013548544, 140730013552639,
4118STORE, 140730013536256, 140730013548543,
4119STORE, 47380343541760, 47380343549951,
4120STORE, 47380343549952, 47380343558143,
4121STORE, 47380343558144, 47380345397247,
4122STORE, 47380343697408, 47380345397247,
4123STORE, 47380343558144, 47380343697407,
4124ERASE, 47380343697408, 47380343697408,
4125STORE, 47380343697408, 47380345356287,
4126STORE, 47380345356288, 47380345397247,
4127STORE, 47380345040896, 47380345356287,
4128STORE, 47380343697408, 47380345040895,
4129ERASE, 47380343697408, 47380343697408,
4130STORE, 47380343697408, 47380345040895,
4131STORE, 47380345352192, 47380345356287,
4132STORE, 47380345040896, 47380345352191,
4133ERASE, 47380345040896, 47380345040896,
4134STORE, 47380345040896, 47380345352191,
4135STORE, 47380345380864, 47380345397247,
4136STORE, 47380345356288, 47380345380863,
4137ERASE, 47380345356288, 47380345356288,
4138STORE, 47380345356288, 47380345380863,
4139ERASE, 47380345380864, 47380345380864,
4140STORE, 47380345380864, 47380345397247,
4141ERASE, 47380345356288, 47380345356288,
4142STORE, 47380345356288, 47380345372671,
4143STORE, 47380345372672, 47380345380863,
4144ERASE, 94382607687680, 94382607687680,
4145STORE, 94382607687680, 94382607691775,
4146STORE, 94382607691776, 94382607695871,
4147ERASE, 140252451614720, 140252451614720,
4148STORE, 140252451614720, 140252451618815,
4149STORE, 140252451618816, 140252451622911,
4150ERASE, 47380343541760, 47380343541760,
4151STORE, 94382626803712, 94382626938879,
4152STORE, 140737488347136, 140737488351231,
4153STORE, 140730900271104, 140737488351231,
4154ERASE, 140730900271104, 140730900271104,
4155STORE, 140730900271104, 140730900275199,
4156STORE, 93855478120448, 93855478337535,
4157ERASE, 93855478120448, 93855478120448,
4158STORE, 93855478120448, 93855478198271,
4159STORE, 93855478198272, 93855478337535,
4160ERASE, 93855478198272, 93855478198272,
4161STORE, 93855478198272, 93855478243327,
4162STORE, 93855478243328, 93855478288383,
4163STORE, 93855478288384, 93855478337535,
4164STORE, 140092686573568, 140092686745599,
4165ERASE, 140092686573568, 140092686573568,
4166STORE, 140092686573568, 140092686577663,
4167STORE, 140092686577664, 140092686745599,
4168ERASE, 140092686577664, 140092686577664,
4169STORE, 140092686577664, 140092686700543,
4170STORE, 140092686700544, 140092686733311,
4171STORE, 140092686733312, 140092686741503,
4172STORE, 140092686741504, 140092686745599,
4173STORE, 140730900537344, 140730900541439,
4174STORE, 140730900525056, 140730900537343,
4175STORE, 47540108423168, 47540108431359,
4176STORE, 47540108431360, 47540108439551,
4177STORE, 47540108439552, 47540110278655,
4178STORE, 47540108578816, 47540110278655,
4179STORE, 47540108439552, 47540108578815,
4180ERASE, 47540108578816, 47540108578816,
4181STORE, 47540108578816, 47540110237695,
4182STORE, 47540110237696, 47540110278655,
4183STORE, 47540109922304, 47540110237695,
4184STORE, 47540108578816, 47540109922303,
4185ERASE, 47540108578816, 47540108578816,
4186STORE, 47540108578816, 47540109922303,
4187STORE, 47540110233600, 47540110237695,
4188STORE, 47540109922304, 47540110233599,
4189ERASE, 47540109922304, 47540109922304,
4190STORE, 47540109922304, 47540110233599,
4191STORE, 47540110262272, 47540110278655,
4192STORE, 47540110237696, 47540110262271,
4193ERASE, 47540110237696, 47540110237696,
4194STORE, 47540110237696, 47540110262271,
4195ERASE, 47540110262272, 47540110262272,
4196STORE, 47540110262272, 47540110278655,
4197ERASE, 47540110237696, 47540110237696,
4198STORE, 47540110237696, 47540110254079,
4199STORE, 47540110254080, 47540110262271,
4200ERASE, 93855478288384, 93855478288384,
4201STORE, 93855478288384, 93855478333439,
4202STORE, 93855478333440, 93855478337535,
4203ERASE, 140092686733312, 140092686733312,
4204STORE, 140092686733312, 140092686737407,
4205STORE, 140092686737408, 140092686741503,
4206ERASE, 47540108423168, 47540108423168,
4207STORE, 93855492222976, 93855492358143,
4208STORE, 93855492222976, 93855492493311,
4209STORE, 140737488347136, 140737488351231,
4210STORE, 140733498146816, 140737488351231,
4211ERASE, 140733498146816, 140733498146816,
4212STORE, 140733498146816, 140733498150911,
4213STORE, 94170739654656, 94170740367359,
4214ERASE, 94170739654656, 94170739654656,
4215STORE, 94170739654656, 94170739703807,
4216STORE, 94170739703808, 94170740367359,
4217ERASE, 94170739703808, 94170739703808,
4218STORE, 94170739703808, 94170740248575,
4219STORE, 94170740248576, 94170740346879,
4220STORE, 94170740346880, 94170740367359,
4221STORE, 140024788877312, 140024789049343,
4222ERASE, 140024788877312, 140024788877312,
4223STORE, 140024788877312, 140024788881407,
4224STORE, 140024788881408, 140024789049343,
4225ERASE, 140024788881408, 140024788881408,
4226STORE, 140024788881408, 140024789004287,
4227STORE, 140024789004288, 140024789037055,
4228STORE, 140024789037056, 140024789045247,
4229STORE, 140024789045248, 140024789049343,
4230STORE, 140733499023360, 140733499027455,
4231STORE, 140733499011072, 140733499023359,
4232STORE, 47608006119424, 47608006127615,
4233STORE, 47608006127616, 47608006135807,
4234STORE, 47608006135808, 47608006242303,
4235STORE, 47608006152192, 47608006242303,
4236STORE, 47608006135808, 47608006152191,
4237ERASE, 47608006152192, 47608006152192,
4238STORE, 47608006152192, 47608006225919,
4239STORE, 47608006225920, 47608006242303,
4240STORE, 47608006205440, 47608006225919,
4241STORE, 47608006152192, 47608006205439,
4242ERASE, 47608006152192, 47608006152192,
4243STORE, 47608006152192, 47608006205439,
4244STORE, 47608006221824, 47608006225919,
4245STORE, 47608006205440, 47608006221823,
4246ERASE, 47608006205440, 47608006205440,
4247STORE, 47608006205440, 47608006221823,
4248STORE, 47608006234112, 47608006242303,
4249STORE, 47608006225920, 47608006234111,
4250ERASE, 47608006225920, 47608006225920,
4251STORE, 47608006225920, 47608006234111,
4252ERASE, 47608006234112, 47608006234112,
4253STORE, 47608006234112, 47608006242303,
4254STORE, 47608006242304, 47608008081407,
4255STORE, 47608006381568, 47608008081407,
4256STORE, 47608006242304, 47608006381567,
4257ERASE, 47608006381568, 47608006381568,
4258STORE, 47608006381568, 47608008040447,
4259STORE, 47608008040448, 47608008081407,
4260STORE, 47608007725056, 47608008040447,
4261STORE, 47608006381568, 47608007725055,
4262ERASE, 47608006381568, 47608006381568,
4263STORE, 47608006381568, 47608007725055,
4264STORE, 47608008036352, 47608008040447,
4265STORE, 47608007725056, 47608008036351,
4266ERASE, 47608007725056, 47608007725056,
4267STORE, 47608007725056, 47608008036351,
4268STORE, 47608008065024, 47608008081407,
4269STORE, 47608008040448, 47608008065023,
4270ERASE, 47608008040448, 47608008040448,
4271STORE, 47608008040448, 47608008065023,
4272ERASE, 47608008065024, 47608008065024,
4273STORE, 47608008065024, 47608008081407,
4274STORE, 47608008065024, 47608008093695,
4275ERASE, 47608008040448, 47608008040448,
4276STORE, 47608008040448, 47608008056831,
4277STORE, 47608008056832, 47608008065023,
4278ERASE, 47608006225920, 47608006225920,
4279STORE, 47608006225920, 47608006230015,
4280STORE, 47608006230016, 47608006234111,
4281ERASE, 94170740346880, 94170740346880,
4282STORE, 94170740346880, 94170740363263,
4283STORE, 94170740363264, 94170740367359,
4284ERASE, 140024789037056, 140024789037056,
4285STORE, 140024789037056, 140024789041151,
4286STORE, 140024789041152, 140024789045247,
4287ERASE, 47608006119424, 47608006119424,
4288STORE, 140737488347136, 140737488351231,
4289STORE, 140730264326144, 140737488351231,
4290ERASE, 140730264326144, 140730264326144,
4291STORE, 140730264326144, 140730264330239,
4292STORE, 94653216407552, 94653217120255,
4293ERASE, 94653216407552, 94653216407552,
4294STORE, 94653216407552, 94653216456703,
4295STORE, 94653216456704, 94653217120255,
4296ERASE, 94653216456704, 94653216456704,
4297STORE, 94653216456704, 94653217001471,
4298STORE, 94653217001472, 94653217099775,
4299STORE, 94653217099776, 94653217120255,
4300STORE, 140103617011712, 140103617183743,
4301ERASE, 140103617011712, 140103617011712,
4302STORE, 140103617011712, 140103617015807,
4303STORE, 140103617015808, 140103617183743,
4304ERASE, 140103617015808, 140103617015808,
4305STORE, 140103617015808, 140103617138687,
4306STORE, 140103617138688, 140103617171455,
4307STORE, 140103617171456, 140103617179647,
4308STORE, 140103617179648, 140103617183743,
4309STORE, 140730265427968, 140730265432063,
4310STORE, 140730265415680, 140730265427967,
4311STORE, 47529177985024, 47529177993215,
4312STORE, 47529177993216, 47529178001407,
4313STORE, 47529178001408, 47529178107903,
4314STORE, 47529178017792, 47529178107903,
4315STORE, 47529178001408, 47529178017791,
4316ERASE, 47529178017792, 47529178017792,
4317STORE, 47529178017792, 47529178091519,
4318STORE, 47529178091520, 47529178107903,
4319STORE, 47529178071040, 47529178091519,
4320STORE, 47529178017792, 47529178071039,
4321ERASE, 47529178017792, 47529178017792,
4322STORE, 47529178017792, 47529178071039,
4323STORE, 47529178087424, 47529178091519,
4324STORE, 47529178071040, 47529178087423,
4325ERASE, 47529178071040, 47529178071040,
4326STORE, 47529178071040, 47529178087423,
4327STORE, 47529178099712, 47529178107903,
4328STORE, 47529178091520, 47529178099711,
4329ERASE, 47529178091520, 47529178091520,
4330STORE, 47529178091520, 47529178099711,
4331ERASE, 47529178099712, 47529178099712,
4332STORE, 47529178099712, 47529178107903,
4333STORE, 47529178107904, 47529179947007,
4334STORE, 47529178247168, 47529179947007,
4335STORE, 47529178107904, 47529178247167,
4336ERASE, 47529178247168, 47529178247168,
4337STORE, 47529178247168, 47529179906047,
4338STORE, 47529179906048, 47529179947007,
4339STORE, 47529179590656, 47529179906047,
4340STORE, 47529178247168, 47529179590655,
4341ERASE, 47529178247168, 47529178247168,
4342STORE, 47529178247168, 47529179590655,
4343STORE, 47529179901952, 47529179906047,
4344STORE, 47529179590656, 47529179901951,
4345ERASE, 47529179590656, 47529179590656,
4346STORE, 47529179590656, 47529179901951,
4347STORE, 47529179930624, 47529179947007,
4348STORE, 47529179906048, 47529179930623,
4349ERASE, 47529179906048, 47529179906048,
4350STORE, 47529179906048, 47529179930623,
4351ERASE, 47529179930624, 47529179930624,
4352STORE, 47529179930624, 47529179947007,
4353STORE, 47529179930624, 47529179959295,
4354ERASE, 47529179906048, 47529179906048,
4355STORE, 47529179906048, 47529179922431,
4356STORE, 47529179922432, 47529179930623,
4357ERASE, 47529178091520, 47529178091520,
4358STORE, 47529178091520, 47529178095615,
4359STORE, 47529178095616, 47529178099711,
4360ERASE, 94653217099776, 94653217099776,
4361STORE, 94653217099776, 94653217116159,
4362STORE, 94653217116160, 94653217120255,
4363ERASE, 140103617171456, 140103617171456,
4364STORE, 140103617171456, 140103617175551,
4365STORE, 140103617175552, 140103617179647,
4366ERASE, 47529177985024, 47529177985024,
4367STORE, 94653241135104, 94653241270271,
4368STORE, 140737488347136, 140737488351231,
4369STORE, 140736284549120, 140737488351231,
4370ERASE, 140736284549120, 140736284549120,
4371STORE, 140736284549120, 140736284553215,
4372STORE, 93963663822848, 93963664506879,
4373ERASE, 93963663822848, 93963663822848,
4374STORE, 93963663822848, 93963663884287,
4375STORE, 93963663884288, 93963664506879,
4376ERASE, 93963663884288, 93963663884288,
4377STORE, 93963663884288, 93963664240639,
4378STORE, 93963664240640, 93963664379903,
4379STORE, 93963664379904, 93963664506879,
4380STORE, 140450188439552, 140450188611583,
4381ERASE, 140450188439552, 140450188439552,
4382STORE, 140450188439552, 140450188443647,
4383STORE, 140450188443648, 140450188611583,
4384ERASE, 140450188443648, 140450188443648,
4385STORE, 140450188443648, 140450188566527,
4386STORE, 140450188566528, 140450188599295,
4387STORE, 140450188599296, 140450188607487,
4388STORE, 140450188607488, 140450188611583,
4389STORE, 140736284577792, 140736284581887,
4390STORE, 140736284565504, 140736284577791,
4391STORE, 47182606557184, 47182606565375,
4392STORE, 47182606565376, 47182606573567,
4393STORE, 47182606573568, 47182608412671,
4394STORE, 47182606712832, 47182608412671,
4395STORE, 47182606573568, 47182606712831,
4396ERASE, 47182606712832, 47182606712832,
4397STORE, 47182606712832, 47182608371711,
4398STORE, 47182608371712, 47182608412671,
4399STORE, 47182608056320, 47182608371711,
4400STORE, 47182606712832, 47182608056319,
4401ERASE, 47182606712832, 47182606712832,
4402STORE, 47182606712832, 47182608056319,
4403STORE, 47182608367616, 47182608371711,
4404STORE, 47182608056320, 47182608367615,
4405ERASE, 47182608056320, 47182608056320,
4406STORE, 47182608056320, 47182608367615,
4407STORE, 47182608396288, 47182608412671,
4408STORE, 47182608371712, 47182608396287,
4409ERASE, 47182608371712, 47182608371712,
4410STORE, 47182608371712, 47182608396287,
4411ERASE, 47182608396288, 47182608396288,
4412STORE, 47182608396288, 47182608412671,
4413STORE, 47182608412672, 47182608523263,
4414STORE, 47182608429056, 47182608523263,
4415STORE, 47182608412672, 47182608429055,
4416ERASE, 47182608429056, 47182608429056,
4417STORE, 47182608429056, 47182608515071,
4418STORE, 47182608515072, 47182608523263,
4419STORE, 47182608490496, 47182608515071,
4420STORE, 47182608429056, 47182608490495,
4421ERASE, 47182608429056, 47182608429056,
4422STORE, 47182608429056, 47182608490495,
4423STORE, 47182608510976, 47182608515071,
4424STORE, 47182608490496, 47182608510975,
4425ERASE, 47182608490496, 47182608490496,
4426STORE, 47182608490496, 47182608510975,
4427ERASE, 47182608515072, 47182608515072,
4428STORE, 47182608515072, 47182608523263,
4429STORE, 47182608523264, 47182608568319,
4430ERASE, 47182608523264, 47182608523264,
4431STORE, 47182608523264, 47182608531455,
4432STORE, 47182608531456, 47182608568319,
4433STORE, 47182608551936, 47182608568319,
4434STORE, 47182608531456, 47182608551935,
4435ERASE, 47182608531456, 47182608531456,
4436STORE, 47182608531456, 47182608551935,
4437STORE, 47182608560128, 47182608568319,
4438STORE, 47182608551936, 47182608560127,
4439ERASE, 47182608551936, 47182608551936,
4440STORE, 47182608551936, 47182608568319,
4441ERASE, 47182608551936, 47182608551936,
4442STORE, 47182608551936, 47182608560127,
4443STORE, 47182608560128, 47182608568319,
4444ERASE, 47182608560128, 47182608560128,
4445STORE, 47182608560128, 47182608568319,
4446STORE, 47182608568320, 47182608916479,
4447STORE, 47182608609280, 47182608916479,
4448STORE, 47182608568320, 47182608609279,
4449ERASE, 47182608609280, 47182608609280,
4450STORE, 47182608609280, 47182608891903,
4451STORE, 47182608891904, 47182608916479,
4452STORE, 47182608822272, 47182608891903,
4453STORE, 47182608609280, 47182608822271,
4454ERASE, 47182608609280, 47182608609280,
4455STORE, 47182608609280, 47182608822271,
4456STORE, 47182608887808, 47182608891903,
4457STORE, 47182608822272, 47182608887807,
4458ERASE, 47182608822272, 47182608822272,
4459STORE, 47182608822272, 47182608887807,
4460ERASE, 47182608891904, 47182608891904,
4461STORE, 47182608891904, 47182608916479,
4462STORE, 47182608916480, 47182611177471,
4463STORE, 47182609068032, 47182611177471,
4464STORE, 47182608916480, 47182609068031,
4465ERASE, 47182609068032, 47182609068032,
4466STORE, 47182609068032, 47182611161087,
4467STORE, 47182611161088, 47182611177471,
4468STORE, 47182611169280, 47182611177471,
4469STORE, 47182611161088, 47182611169279,
4470ERASE, 47182611161088, 47182611161088,
4471STORE, 47182611161088, 47182611169279,
4472ERASE, 47182611169280, 47182611169280,
4473STORE, 47182611169280, 47182611177471,
4474STORE, 47182611177472, 47182611312639,
4475ERASE, 47182611177472, 47182611177472,
4476STORE, 47182611177472, 47182611202047,
4477STORE, 47182611202048, 47182611312639,
4478STORE, 47182611263488, 47182611312639,
4479STORE, 47182611202048, 47182611263487,
4480ERASE, 47182611202048, 47182611202048,
4481STORE, 47182611202048, 47182611263487,
4482STORE, 47182611288064, 47182611312639,
4483STORE, 47182611263488, 47182611288063,
4484ERASE, 47182611263488, 47182611263488,
4485STORE, 47182611263488, 47182611312639,
4486ERASE, 47182611263488, 47182611263488,
4487STORE, 47182611263488, 47182611288063,
4488STORE, 47182611288064, 47182611312639,
4489STORE, 47182611296256, 47182611312639,
4490STORE, 47182611288064, 47182611296255,
4491ERASE, 47182611288064, 47182611288064,
4492STORE, 47182611288064, 47182611296255,
4493ERASE, 47182611296256, 47182611296256,
4494STORE, 47182611296256, 47182611312639,
4495STORE, 47182611296256, 47182611320831,
4496STORE, 47182611320832, 47182611484671,
4497ERASE, 47182611320832, 47182611320832,
4498STORE, 47182611320832, 47182611333119,
4499STORE, 47182611333120, 47182611484671,
4500STORE, 47182611431424, 47182611484671,
4501STORE, 47182611333120, 47182611431423,
4502ERASE, 47182611333120, 47182611333120,
4503STORE, 47182611333120, 47182611431423,
4504STORE, 47182611476480, 47182611484671,
4505STORE, 47182611431424, 47182611476479,
4506ERASE, 47182611431424, 47182611431424,
4507STORE, 47182611431424, 47182611484671,
4508ERASE, 47182611431424, 47182611431424,
4509STORE, 47182611431424, 47182611476479,
4510STORE, 47182611476480, 47182611484671,
4511ERASE, 47182611476480, 47182611476480,
4512STORE, 47182611476480, 47182611484671,
4513STORE, 47182611484672, 47182612082687,
4514STORE, 47182611603456, 47182612082687,
4515STORE, 47182611484672, 47182611603455,
4516ERASE, 47182611603456, 47182611603456,
4517STORE, 47182611603456, 47182612029439,
4518STORE, 47182612029440, 47182612082687,
4519STORE, 47182611918848, 47182612029439,
4520STORE, 47182611603456, 47182611918847,
4521ERASE, 47182611603456, 47182611603456,
4522STORE, 47182611603456, 47182611918847,
4523STORE, 47182612025344, 47182612029439,
4524STORE, 47182611918848, 47182612025343,
4525ERASE, 47182611918848, 47182611918848,
4526STORE, 47182611918848, 47182612025343,
4527ERASE, 47182612029440, 47182612029440,
4528STORE, 47182612029440, 47182612082687,
4529STORE, 47182612082688, 47182615134207,
4530STORE, 47182612627456, 47182615134207,
4531STORE, 47182612082688, 47182612627455,
4532ERASE, 47182612627456, 47182612627456,
4533STORE, 47182612627456, 47182614913023,
4534STORE, 47182614913024, 47182615134207,
4535STORE, 47182614323200, 47182614913023,
4536STORE, 47182612627456, 47182614323199,
4537ERASE, 47182612627456, 47182612627456,
4538STORE, 47182612627456, 47182614323199,
4539STORE, 47182614908928, 47182614913023,
4540STORE, 47182614323200, 47182614908927,
4541ERASE, 47182614323200, 47182614323200,
4542STORE, 47182614323200, 47182614908927,
4543STORE, 47182615117824, 47182615134207,
4544STORE, 47182614913024, 47182615117823,
4545ERASE, 47182614913024, 47182614913024,
4546STORE, 47182614913024, 47182615117823,
4547ERASE, 47182615117824, 47182615117824,
4548STORE, 47182615117824, 47182615134207,
4549STORE, 47182615134208, 47182615166975,
4550ERASE, 47182615134208, 47182615134208,
4551STORE, 47182615134208, 47182615142399,
4552STORE, 47182615142400, 47182615166975,
4553STORE, 47182615154688, 47182615166975,
4554STORE, 47182615142400, 47182615154687,
4555ERASE, 47182615142400, 47182615142400,
4556STORE, 47182615142400, 47182615154687,
4557STORE, 47182615158784, 47182615166975,
4558STORE, 47182615154688, 47182615158783,
4559ERASE, 47182615154688, 47182615154688,
4560STORE, 47182615154688, 47182615166975,
4561ERASE, 47182615154688, 47182615154688,
4562STORE, 47182615154688, 47182615158783,
4563STORE, 47182615158784, 47182615166975,
4564ERASE, 47182615158784, 47182615158784,
4565STORE, 47182615158784, 47182615166975,
4566STORE, 47182615166976, 47182615203839,
4567ERASE, 47182615166976, 47182615166976,
4568STORE, 47182615166976, 47182615175167,
4569STORE, 47182615175168, 47182615203839,
4570STORE, 47182615191552, 47182615203839,
4571STORE, 47182615175168, 47182615191551,
4572ERASE, 47182615175168, 47182615175168,
4573STORE, 47182615175168, 47182615191551,
4574STORE, 47182615195648, 47182615203839,
4575STORE, 47182615191552, 47182615195647,
4576ERASE, 47182615191552, 47182615191552,
4577STORE, 47182615191552, 47182615203839,
4578ERASE, 47182615191552, 47182615191552,
4579STORE, 47182615191552, 47182615195647,
4580STORE, 47182615195648, 47182615203839,
4581ERASE, 47182615195648, 47182615195648,
4582STORE, 47182615195648, 47182615203839,
4583STORE, 47182615203840, 47182615678975,
4584ERASE, 47182615203840, 47182615203840,
4585STORE, 47182615203840, 47182615212031,
4586STORE, 47182615212032, 47182615678975,
4587STORE, 47182615547904, 47182615678975,
4588STORE, 47182615212032, 47182615547903,
4589ERASE, 47182615212032, 47182615212032,
4590STORE, 47182615212032, 47182615547903,
4591STORE, 47182615670784, 47182615678975,
4592STORE, 47182615547904, 47182615670783,
4593ERASE, 47182615547904, 47182615547904,
4594STORE, 47182615547904, 47182615678975,
4595ERASE, 47182615547904, 47182615547904,
4596STORE, 47182615547904, 47182615670783,
4597STORE, 47182615670784, 47182615678975,
4598ERASE, 47182615670784, 47182615670784,
4599STORE, 47182615670784, 47182615678975,
4600STORE, 47182615678976, 47182615687167,
4601STORE, 47182615687168, 47182615707647,
4602ERASE, 47182615687168, 47182615687168,
4603STORE, 47182615687168, 47182615691263,
4604STORE, 47182615691264, 47182615707647,
4605STORE, 47182615695360, 47182615707647,
4606STORE, 47182615691264, 47182615695359,
4607ERASE, 47182615691264, 47182615691264,
4608STORE, 47182615691264, 47182615695359,
4609STORE, 47182615699456, 47182615707647,
4610STORE, 47182615695360, 47182615699455,
4611ERASE, 47182615695360, 47182615695360,
4612STORE, 47182615695360, 47182615707647,
4613ERASE, 47182615695360, 47182615695360,
4614STORE, 47182615695360, 47182615699455,
4615STORE, 47182615699456, 47182615707647,
4616ERASE, 47182615699456, 47182615699456,
4617STORE, 47182615699456, 47182615707647,
4618STORE, 47182615707648, 47182615715839,
4619ERASE, 47182608371712, 47182608371712,
4620STORE, 47182608371712, 47182608388095,
4621STORE, 47182608388096, 47182608396287,
4622ERASE, 47182615699456, 47182615699456,
4623STORE, 47182615699456, 47182615703551,
4624STORE, 47182615703552, 47182615707647,
4625ERASE, 47182611288064, 47182611288064,
4626STORE, 47182611288064, 47182611292159,
4627STORE, 47182611292160, 47182611296255,
4628ERASE, 47182615670784, 47182615670784,
4629STORE, 47182615670784, 47182615674879,
4630STORE, 47182615674880, 47182615678975,
4631ERASE, 47182615195648, 47182615195648,
4632STORE, 47182615195648, 47182615199743,
4633STORE, 47182615199744, 47182615203839,
4634ERASE, 47182615158784, 47182615158784,
4635STORE, 47182615158784, 47182615162879,
4636STORE, 47182615162880, 47182615166975,
4637ERASE, 47182614913024, 47182614913024,
4638STORE, 47182614913024, 47182615109631,
4639STORE, 47182615109632, 47182615117823,
4640ERASE, 47182612029440, 47182612029440,
4641STORE, 47182612029440, 47182612066303,
4642STORE, 47182612066304, 47182612082687,
4643ERASE, 47182611476480, 47182611476480,
4644STORE, 47182611476480, 47182611480575,
4645STORE, 47182611480576, 47182611484671,
4646ERASE, 47182611161088, 47182611161088,
4647STORE, 47182611161088, 47182611165183,
4648STORE, 47182611165184, 47182611169279,
4649ERASE, 47182608891904, 47182608891904,
4650STORE, 47182608891904, 47182608912383,
4651STORE, 47182608912384, 47182608916479,
4652ERASE, 47182608560128, 47182608560128,
4653STORE, 47182608560128, 47182608564223,
4654STORE, 47182608564224, 47182608568319,
4655ERASE, 47182608515072, 47182608515072,
4656STORE, 47182608515072, 47182608519167,
4657STORE, 47182608519168, 47182608523263,
4658ERASE, 93963664379904, 93963664379904,
4659STORE, 93963664379904, 93963664502783,
4660STORE, 93963664502784, 93963664506879,
4661ERASE, 140450188599296, 140450188599296,
4662STORE, 140450188599296, 140450188603391,
4663STORE, 140450188603392, 140450188607487,
4664ERASE, 47182606557184, 47182606557184,
4665STORE, 93963694723072, 93963694858239,
4666STORE, 140737488347136, 140737488351231,
4667STORE, 140730313261056, 140737488351231,
4668ERASE, 140730313261056, 140730313261056,
4669STORE, 140730313261056, 140730313265151,
4670STORE, 94386579017728, 94386579697663,
4671ERASE, 94386579017728, 94386579017728,
4672STORE, 94386579017728, 94386579083263,
4673STORE, 94386579083264, 94386579697663,
4674ERASE, 94386579083264, 94386579083264,
4675STORE, 94386579083264, 94386579431423,
4676STORE, 94386579431424, 94386579570687,
4677STORE, 94386579570688, 94386579697663,
4678STORE, 140124810838016, 140124811010047,
4679ERASE, 140124810838016, 140124810838016,
4680STORE, 140124810838016, 140124810842111,
4681STORE, 140124810842112, 140124811010047,
4682ERASE, 140124810842112, 140124810842112,
4683STORE, 140124810842112, 140124810964991,
4684STORE, 140124810964992, 140124810997759,
4685STORE, 140124810997760, 140124811005951,
4686STORE, 140124811005952, 140124811010047,
4687STORE, 140730313601024, 140730313605119,
4688STORE, 140730313588736, 140730313601023,
4689STORE, 47507984158720, 47507984166911,
4690STORE, 47507984166912, 47507984175103,
4691STORE, 47507984175104, 47507986014207,
4692STORE, 47507984314368, 47507986014207,
4693STORE, 47507984175104, 47507984314367,
4694ERASE, 47507984314368, 47507984314368,
4695STORE, 47507984314368, 47507985973247,
4696STORE, 47507985973248, 47507986014207,

31104 more lines aren’t shown here.

tools/testing/selftests/bpf/verifier/ref_tracking.c+36−0

This diff is large: its 40 lines aren’t shown here.

tools/testing/selftests/net/io_uring_zerocopy_tx.sh+1−1

This diff is large: its 9 lines aren’t shown here.

tools/testing/selftests/net/udpgro.sh+2−2

This diff is large: its 18 lines aren’t shown here.

tools/testing/selftests/net/udpgro_bench.sh+1−1

This diff is large: its 9 lines aren’t shown here.

tools/testing/selftests/net/udpgro_frglist.sh+1−1

This diff is large: its 9 lines aren’t shown here.

tools/testing/selftests/netfilter/rpath.sh+8−6

This diff is large: its 35 lines aren’t shown here.